{"dependencies":[],"sourceCode":{"app.acss":"@import \"./default.acss\";@import \"./bundle.css.acss\";","app.js":"const nativeAppConfig = {}\nconst render = require('./render');\nconst config = require('./config');\nfunction init(window, document, app) {require('./bundle.js')(window, document, app)}\nApp(render.createAppConfig(init, config, '', nativeAppConfig));\n","app.json":"{\n \"window\": {\n \"defaultTitle\": \"\"\n },\n \"permission\": {\n \"scope.userLocation\": {\n \"desc\": \"你的位置信息将用于小程序位置接口的效果展示\"\n }\n },\n \"tabBar\": {\n \"textColor\": \"#999\",\n \"selectedColor\": \"#666\",\n \"backgroundColor\": \"#f8f8f8\",\n \"items\": [\n {\n \"icon\": \"https://gw.alicdn.com/imgextra/i2/O1CN01R4VAGp28dtnSLAKM7_!!6000000007956-2-tps-50-50.png\",\n \"activeIcon\": \"https://gw.alicdn.com/imgextra/i2/O1CN01JFSxTt1xz0HB4jO0L_!!6000000006513-2-tps-50-50.png\",\n \"pagePath\": \"pages/Home/index\",\n \"name\": \"home\"\n },\n {\n \"icon\": \"https://gw.alicdn.com/imgextra/i4/O1CN01TJQjGB1JOkHwRoGVa_!!6000000001019-2-tps-30-30.png\",\n \"activeIcon\": \"https://gw.alicdn.com/imgextra/i2/O1CN01IADkfG20L6cgxIC5j_!!6000000006832-2-tps-50-50.png\",\n \"pagePath\": \"pages/tab-bar/index\",\n \"name\": \"tabBar\"\n }\n ],\n \"list\": [\n {\n \"pagePath\": \"pages/Home/index\",\n \"text\": \"home\"\n },\n {\n \"pagePath\": \"pages/tab-bar/index\",\n \"text\": \"tabBar\"\n }\n ]\n },\n \"pages\": [\n \"pages/Home/index\",\n \"pages/application/index\",\n \"pages/caniuse/index\",\n \"pages/canvas/index\",\n \"pages/accelerometer/index\",\n \"pages/clipboard/index\",\n \"pages/system-info/index\",\n \"pages/scan/index\",\n \"pages/file/index\",\n \"pages/action-sheet/index\",\n \"pages/alert/index\",\n \"pages/animation/index\",\n \"pages/toast/index\",\n \"pages/loading/index\",\n \"pages/navigation-bar/index\",\n \"pages/pull-down-refresh/index\",\n \"pages/tab-bar/index\",\n \"pages/element/index\",\n \"pages/intersection-observer/index\",\n \"pages/confirm/index\",\n \"pages/location/index\",\n \"pages/image/index\",\n \"pages/audio/index\",\n \"pages/navigate/index\",\n \"pages/request/index\",\n \"pages/storage/index\",\n \"pages/recorder/index\",\n \"pages/video/index\",\n \"pages/make-phone-call/index\",\n \"pages/vibrate/index\",\n \"pages/page-scroll-to/index\",\n \"pages/authorize/index\",\n \"pages/subscribe-message/index\",\n \"pages/share/index\"\n ]\n}\n","bundle.css.acss":".rax-app-tab-bar {\n position: fixed;\n left: 0;\n right: 0;\n bottom: 0;\n display: flex;\n flex-direction: row;\n align-items: center;\n justify-content: center;\n border: 1rpx solid #eee;\n background-color: #fff;\n z-index: 999;\n}\n\n.rax-app-tab-bar-item {\n flex: 1;\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n}\n\n.rax-app-tab-bar-item-text {\n font-size: 24rpx;\n}\n\n.rax-app-tab-bar-item-img {\n margin-bottom: 8rpx;\n width: 30rpx;\n height: 30rpx;\n}\n\n.rax-view-v2 {\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n flex-shrink: 0;\n align-content: flex-start;\n border: 0 solid black;\n margin: 0;\n padding: 0;\n min-width: 0;\n}\n\n.rax-textinput {\n appearance: none;\n background-color: transparent;\n border-color: #000000;\n border-width: 0;\n box-sizing: border-box;\n color: #000000;\n padding: 0;\n padding-left: 24rpx;\n font-size: 24rpx;\n line-height: 60rpx;\n height: 60rpx;\n}\n\n.rax-text-v2 {\n box-sizing: border-box;\n display: block;\n font-size: 32rpx;\n white-space: pre-wrap;\n}\n\n.rax-text-v2--overflow-hidden {\n overflow: hidden;\n}\n\n.rax-text-v2--singleline {\n white-space: nowrap;\n}\n\n.rax-text-v2--multiline {\n display: -webkit-box;\n -webkit-box-orient: vertical;\n}\n\n.rax-scrollview-vertical {\n display: flex;\n flex-direction: column;\n}\n\n.rax-scrollview-horizontal {\n display: flex;\n flex-direction: row;\n}\n\n.rax-scrollview-content-container-horizontal {\n flex-direction: row;\n}\n\n.rax-scrollview-webcontainer {\n display: block;\n}\n\n","bundle.js":"Function||(Function=function(){return function(){return Symbol}}),void 0===Function.prototype.call&&(Function.prototype.call=function(n){(n=n||window).fn=this;const t=[...arguments].slice(1),o=n.fn(...t);return delete n.fn,o}),void 0===Function.prototype.apply&&(Function.prototype.apply=function(n){let t;return(n=n||window).fn=this,t=arguments[1]?n.fn(...arguments[1]):n.fn(),delete n.fn,t})\nmodule.exports = function(window, document, app) {\n const HTMLElement = window[\"HTMLElement\"];\n if (typeof getApp === 'function') {\n const documentModifyCallbacks = (getApp() || app).__documentModifyCallbacks;\n if (Array.isArray(documentModifyCallbacks)) {\n documentModifyCallbacks.push((val) => {\n document = val;\n });\n }\n }\n/******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"/\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 0);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ \"../dist/lib/@uni/accelerometer/es/_utils/miniappEnvApp.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/_utils/miniappEnvApp.js ***!\n \\*****************************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/ali-miniapp/index.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/ali-miniapp/index.js ***!\n \\**************************************************************/\n/*! exports provided: onChange, offChange, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _offChange__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./offChange */ \"../dist/lib/@uni/accelerometer/es/ali-miniapp/offChange.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offChange\", function() { return _offChange__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _onChange__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./onChange */ \"../dist/lib/@uni/accelerometer/es/ali-miniapp/onChange.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onChange\", function() { return _onChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onChange: _onChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n offChange: _offChange__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/ali-miniapp/offChange.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/ali-miniapp/offChange.js ***!\n \\******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/accelerometer/es/_utils/miniappEnvApp.js\");\n\n\nvar offChange = function (cb) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.offAccelerometerChange(cb) : my.offAccelerometerChange(cb);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (offChange);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/ali-miniapp/onChange.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/ali-miniapp/onChange.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/accelerometer/es/_utils/miniappEnvApp.js\");\n\n\nvar onChange = function (cb) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.onAccelerometerChange(cb) : my.onAccelerometerChange(cb);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (onChange);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/baidu-smartprogram/index.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/baidu-smartprogram/index.js ***!\n \\*********************************************************************/\n/*! exports provided: onChange, offChange, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _offChange__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./offChange */ \"../dist/lib/@uni/accelerometer/es/baidu-smartprogram/offChange.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offChange\", function() { return _offChange__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _onChange__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./onChange */ \"../dist/lib/@uni/accelerometer/es/baidu-smartprogram/onChange.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onChange\", function() { return _onChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onChange: _onChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n offChange: _offChange__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/baidu-smartprogram/offChange.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/baidu-smartprogram/offChange.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar offChange = function (cb) {\n return swan.stopAccelerometer({\n complete: cb\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (offChange);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/baidu-smartprogram/onChange.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/baidu-smartprogram/onChange.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar onChange = function (cb) {\n return swan.onAccelerometerChange(cb);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (onChange);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/bytedance-microapp/index.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/bytedance-microapp/index.js ***!\n \\*********************************************************************/\n/*! exports provided: onChange, offChange, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _offChange__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./offChange */ \"../dist/lib/@uni/accelerometer/es/bytedance-microapp/offChange.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offChange\", function() { return _offChange__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _onChange__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./onChange */ \"../dist/lib/@uni/accelerometer/es/bytedance-microapp/onChange.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onChange\", function() { return _onChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onChange: _onChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n offChange: _offChange__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/bytedance-microapp/offChange.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/bytedance-microapp/offChange.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar offChange = function (cb) {\n return tt.offAccelerometerChange(cb);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (offChange);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/bytedance-microapp/onChange.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/bytedance-microapp/onChange.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar onChange = function (cb) {\n return tt.onAccelerometerChange(cb);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (onChange);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/index.js\":\n/*!**************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/index.js ***!\n \\**************************************************/\n/*! exports provided: onChange, offChange, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onChange\", function() { return onChange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"offChange\", function() { return offChange; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/accelerometer/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/accelerometer/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/accelerometer/es/bytedance-microapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/accelerometer/es/web/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/accelerometer/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/accelerometer/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar onChange = function (cb) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].onChange(cb);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].onChange(cb);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].onChange(cb);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].onChange(cb);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].onChange(cb);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].onChange(cb);\n } else {\n throw new Error('Uni API:Accelerometer暂不支持');\n }\n};\nvar offChange = function (cb) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].offChange(cb);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].offChange(cb);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offChange(cb);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].offChange(cb);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].offChange(cb);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].offChange(cb);\n } else {\n throw new Error('Uni API:Accelerometer暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onChange: onChange,\n offChange: offChange\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/kuaishou-miniprogram/index.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/kuaishou-miniprogram/index.js ***!\n \\***********************************************************************/\n/*! exports provided: onChange, offChange, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _offChange__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./offChange */ \"../dist/lib/@uni/accelerometer/es/kuaishou-miniprogram/offChange.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offChange\", function() { return _offChange__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _onChange__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./onChange */ \"../dist/lib/@uni/accelerometer/es/kuaishou-miniprogram/onChange.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onChange\", function() { return _onChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onChange: _onChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n offChange: _offChange__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/kuaishou-miniprogram/offChange.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/kuaishou-miniprogram/offChange.js ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar offChange = function (cb) {\n return ks.offAccelerometerChange(cb);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (offChange);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/kuaishou-miniprogram/onChange.js\":\n/*!**************************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/kuaishou-miniprogram/onChange.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar onChange = function (cb) {\n return ks.onAccelerometerChange(cb);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (onChange);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/web/index.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/web/index.js ***!\n \\******************************************************/\n/*! exports provided: onChange, offChange, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _offChange__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./offChange */ \"../dist/lib/@uni/accelerometer/es/web/offChange.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offChange\", function() { return _offChange__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _onChange__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./onChange */ \"../dist/lib/@uni/accelerometer/es/web/onChange.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onChange\", function() { return _onChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onChange: _onChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n offChange: _offChange__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/web/offChange.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/web/offChange.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* eslint-disable @typescript-eslint/no-unused-vars */\nvar offChange = function () {\n throw new Error('Uni API: accelerometer不支持');\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (offChange);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/web/onChange.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/web/onChange.js ***!\n \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* eslint-disable @typescript-eslint/no-unused-vars */\nvar onChange = function () {\n throw new Error('Uni API: accelerometer不支持');\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (onChange);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/wechat-miniprogram/index.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/wechat-miniprogram/index.js ***!\n \\*********************************************************************/\n/*! exports provided: onChange, offChange, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _offChange__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./offChange */ \"../dist/lib/@uni/accelerometer/es/wechat-miniprogram/offChange.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offChange\", function() { return _offChange__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _onChange__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./onChange */ \"../dist/lib/@uni/accelerometer/es/wechat-miniprogram/onChange.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onChange\", function() { return _onChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onChange: _onChange__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n offChange: _offChange__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/wechat-miniprogram/offChange.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/wechat-miniprogram/offChange.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar offChange = function (cb) {\n return wx.offAccelerometerChange(cb);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (offChange);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/accelerometer/es/wechat-miniprogram/onChange.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/accelerometer/es/wechat-miniprogram/onChange.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar onChange = function (cb) {\n return wx.onAccelerometerChange(cb);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (onChange);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/es/_utils/constant.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/es/_utils/constant.js ***!\n \\***********************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/es/_utils/miniappEnvApp.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/es/_utils/miniappEnvApp.js ***!\n \\****************************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/es/_utils/promisify.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/es/_utils/promisify.js ***!\n \\************************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/es/_utils/styleOptions.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/es/_utils/styleOptions.js ***!\n \\***************************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/es/ali-miniapp/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/es/ali-miniapp/index.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/action-sheet/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/action-sheet/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/action-sheet/es/common.js\");\n\n\n\n\nvar showActionSheet = function (args) {\n args.items = args.itemList;\n _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.showActionSheet(args) : my.showActionSheet(args);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"])(showActionSheet, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/es/baidu-smartprogram/index.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/es/baidu-smartprogram/index.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/action-sheet/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/action-sheet/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (args) {\n swan.showActionSheet(_extends({}, args, {\n fail: function (err) {\n if (err && err.errMsg === 'showActionSheet:fail cancel') {\n args.success({\n tapIndex: -1\n });\n } else {\n args.fail(err);\n }\n }\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/es/bytedance-microapp/index.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/es/bytedance-microapp/index.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/action-sheet/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/action-sheet/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (args) {\n tt.showActionSheet(_extends({}, args, {\n fail: function (err) {\n if (err && err.errMsg === 'showActionSheet:fail cancel') {\n args.success({\n tapIndex: -1\n });\n } else {\n args.fail(err);\n }\n }\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/es/common.js\":\n/*!**************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/es/common.js ***!\n \\**************************************************/\n/*! exports provided: normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/action-sheet/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/action-sheet/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n/* eslint-disable eqeqeq */\n\n\n\n\n/**\n * @param res\n */\n\nvar formatResponse = function (res) {\n return _extends({}, res, {\n tapIndex: res.tapIndex != undefined ? res.tapIndex : res.index\n });\n};\n\nfunction normalize(api, containerName) {\n return function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName);\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(_extends({}, args, {\n success: function (res) {\n args.success && args.success(formatResponse(res));\n },\n complete: function (res) {\n args.complete && args.complete(res);\n }\n })).then(formatResponse);\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/es/index.js\":\n/*!*************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/es/index.js ***!\n \\*************************************************/\n/*! exports provided: showActionSheet, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showActionSheet\", function() { return showActionSheet; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/action-sheet/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/action-sheet/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/action-sheet/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/action-sheet/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/action-sheet/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/action-sheet/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar showActionSheet = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return Object(_web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return Object(_kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return Object(_wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return Object(_bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return Object(_ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return Object(_baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(args);\n } else {\n throw new Error('Uni API:showActionSheet暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (showActionSheet);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/es/kuaishou-miniprogram/index.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/es/kuaishou-miniprogram/index.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/action-sheet/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/action-sheet/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (args) {\n ks.showActionSheet(_extends({}, args, {\n fail: function (err) {\n if (err && err.errMsg === 'showActionSheet: fail cancel') {\n args.success({\n tapIndex: -1\n });\n } else {\n args.fail(err);\n }\n }\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/es/web/index.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/es/web/index.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/action-sheet/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/action-sheet/es/_utils/constant.js\");\n\n\nvar clsPrefix = '__universal_actionsheet';\nvar styles = (\".\" + clsPrefix + \" {\\n position: fixed;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n background: #fff;\\n color: #000;\\n box-sizing: border-box;\\n border-radius: 12px 12px 0 0;\\n transform: translateY(100%);\\n -webkit-transform: translateY(100%);\\n z-index: 9999;\\n outline: none;\\n text-align: center;\\n animation-duration: .3s;\\n animation-fill-mode: both;\\n}\\n.\" + clsPrefix + \"_mask {\\n content: \\\"\\\";\\n position: fixed;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n top: 0;\\n margin: auto;\\n display: block;\\n z-index: 9999;\\n background: #000;\\n opacity: 0;\\n animation-duration: .3s;\\n animation-fill-mode: both;\\n}\\n.\" + clsPrefix + \"_item {\\n padding: 16px 0;\\n border-bottom: 1px solid #eee;\\n}\\n.\" + clsPrefix + \"_cancel {\\n padding: 16px 0;\\n border-top: 10px solid #eee;\\n}\\n@keyframes \" + clsPrefix + \"_slideIn {\\n 0% {\\n transform: translateY(100%);\\n -webkit-transform: translateY(100%);\\n }\\n 100% {\\n transform: translateY(0);\\n -webkit-transform: translateY(0);\\n }\\n}\\n@keyframes \" + clsPrefix + \"_slideOut {\\n 0% {\\n transform: translateY(0);\\n -webkit-transform: translateY(0);\\n }\\n 100% {\\n transform: translateY(100%);\\n -webkit-transform: translateY(100%);\\n }\\n}\\n@keyframes \" + clsPrefix + \"_fadeIn {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: .6;\\n }\\n}\\n@keyframes \" + clsPrefix + \"_fadeOut {\\n 0% {\\n opacity: .6;\\n }\\n 100% {\\n opacity: 0;\\n }\\n}\").replace(/\\n/g, '');\nvar styleElement = null;\nvar actionSheetElement = null;\n\nvar hideFn = function () {};\n\nvar hideCallback = function () {};\n\nvar showActionSheet = function (args) {\n try {\n if (!styleElement) {\n // create a style tag for keyframes\n styleElement = document.createElement('style');\n styleElement.innerHTML = styles;\n document.body.appendChild(styleElement);\n }\n\n if (!actionSheetElement) {\n // create a actionsheet element\n actionSheetElement = document.createElement('div'); // create a mask element\n\n var maskEle = document.createElement('div');\n maskEle.className = clsPrefix + \"_mask\";\n maskEle.addEventListener('click', function () {\n hideCallback(-1);\n });\n actionSheetElement.appendChild(maskEle); // create container element\n\n var containerEle = document.createElement('div');\n containerEle.className = clsPrefix; // add all item element\n\n var itemList = args.itemList || [];\n\n var _loop = function (index) {\n var itemEle = document.createElement('div');\n itemEle.className = clsPrefix + \"_item\";\n itemEle.innerText = itemList[index]; // support for ARIA, add tabindex for focus\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/tabindex\n\n itemEle.setAttribute('tabindex', \"\" + index); // eslint-disable-next-line no-loop-func\n\n itemEle.addEventListener('click', function () {\n hideCallback(index);\n });\n containerEle.appendChild(itemEle);\n };\n\n for (var index = 0; index < itemList.length; index++) {\n _loop(index);\n } // add cancel element\n\n\n var cancelEle = document.createElement('div');\n cancelEle.className = clsPrefix + \"_cancel\";\n cancelEle.innerText = '取消';\n cancelEle.setAttribute('tabindex', '-1');\n cancelEle.addEventListener('click', function () {\n hideCallback(-1);\n });\n containerEle.appendChild(cancelEle);\n actionSheetElement.appendChild(containerEle);\n document.body.appendChild(actionSheetElement);\n maskEle.style.animationName = clsPrefix + \"_fadeIn\";\n containerEle.style.animationName = clsPrefix + \"_slideIn\";\n\n hideFn = function (callback) {\n maskEle.style.animationName = clsPrefix + \"_fadeOut\";\n containerEle.style.animationName = clsPrefix + \"_slideOut\";\n setTimeout(function () {\n document.body.removeChild(actionSheetElement);\n actionSheetElement = null;\n callback();\n }, 300);\n };\n\n hideCallback = function (index) {\n hideFn(function () {\n args.success({\n tapIndex: index\n });\n args.complete({\n tapIndex: index\n });\n });\n };\n }\n } catch (err) {\n args.fail(err);\n args.complete(err);\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(showActionSheet, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/es/wechat-miniprogram/index.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/es/wechat-miniprogram/index.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/action-sheet/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/action-sheet/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (args) {\n wx.showActionSheet(_extends({}, args, {\n fail: function (err) {\n if (err && err.errMsg === 'showActionSheet:fail cancel') {\n args.success({\n tapIndex: -1\n });\n } else {\n args.fail(err);\n }\n }\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/lib/_utils/constant.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/lib/_utils/constant.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.CONTAINER_NAME = void 0;\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\nexports.CONTAINER_NAME = CONTAINER_NAME;\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/lib/_utils/miniappEnvApp.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/lib/_utils/miniappEnvApp.js ***!\n \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.isDingdingMiniapp = void 0;\n\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\nexports.isDingdingMiniapp = isDingdingMiniapp;\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/lib/_utils/promisify.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/lib/_utils/promisify.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.promisify = promisify;\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/lib/_utils/styleOptions.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/lib/_utils/styleOptions.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.styleIn = exports.styleOut = void 0;\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\n\nexports.styleOut = styleOut;\n\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\nexports.styleIn = styleIn;\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/lib/ali-miniapp/index.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/lib/ali-miniapp/index.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _miniappEnvApp = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/action-sheet/lib/_utils/miniappEnvApp.js\");\n\nvar _constant = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/action-sheet/lib/_utils/constant.js\");\n\nvar _common = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/action-sheet/lib/common.js\");\n\nvar showActionSheet = function (args) {\n args.items = args.itemList;\n _miniappEnvApp.isDingdingMiniapp ? dd.showActionSheet(args) : my.showActionSheet(args);\n};\n\nvar _default = (0, _common.normalize)(showActionSheet, _constant.CONTAINER_NAME.ALIPAY);\n\nexports.default = _default;\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/action-sheet/lib/common.js\":\n/*!***************************************************!*\\\n !*** ../dist/lib/@uni/action-sheet/lib/common.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.normalize = normalize;\n\nvar _promisify = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/action-sheet/lib/_utils/promisify.js\");\n\nvar _styleOptions = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/action-sheet/lib/_utils/styleOptions.js\");\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n/**\n * @param res\n */\n\n\nvar formatResponse = function (res) {\n return _extends({}, res, {\n tapIndex: res.tapIndex != undefined ? res.tapIndex : res.index\n });\n};\n\nfunction normalize(api, containerName) {\n return function (args) {\n args = (0, _styleOptions.styleIn)(args, containerName);\n return (0, _promisify.promisify)(api)(_extends({}, args, {\n success: function (res) {\n args.success && args.success(formatResponse(res));\n },\n complete: function (res) {\n args.complete && args.complete(res);\n }\n })).then(formatResponse);\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/alert/es/_utils/constant.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/alert/es/_utils/constant.js ***!\n \\****************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/alert/es/_utils/miniappEnvApp.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/alert/es/_utils/miniappEnvApp.js ***!\n \\*********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/alert/es/_utils/promisify.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/alert/es/_utils/promisify.js ***!\n \\*****************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/alert/es/_utils/styleOptions.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/alert/es/_utils/styleOptions.js ***!\n \\********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/alert/es/ali-miniapp/index.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/alert/es/ali-miniapp/index.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/alert/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/alert/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/alert/es/common.js\");\n\n\n\n\nvar alert = function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.alert(args) : my.alert(args);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"])(alert, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/alert/es/baidu-smartprogram/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/alert/es/baidu-smartprogram/index.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/alert/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/alert/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nvar alert = function (args) {\n swan.showModal(_extends({}, args, {\n showCancel: false,\n confirmText: args.buttonText\n }));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(alert, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/alert/es/bytedance-microapp/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/alert/es/bytedance-microapp/index.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/alert/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/alert/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nvar alert = function (args) {\n tt.showModal(_extends({}, args, {\n showCancel: false,\n confirmText: args.buttonText\n }));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(alert, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/alert/es/common.js\":\n/*!*******************************************!*\\\n !*** ../dist/lib/@uni/alert/es/common.js ***!\n \\*******************************************/\n/*! exports provided: styleOptions, normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOptions\", function() { return styleOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/alert/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/alert/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nfunction styleOptions(options) {\n return _extends({}, {\n content: '',\n title: '',\n buttonText: '确定'\n }, options);\n}\nfunction normalize(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(styleOptions(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName)));\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/alert/es/index.js\":\n/*!******************************************!*\\\n !*** ../dist/lib/@uni/alert/es/index.js ***!\n \\******************************************/\n/*! exports provided: alert, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"alert\", function() { return alert; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/alert/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/alert/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/alert/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/alert/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/alert/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/alert/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar alert = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return Object(_web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return Object(_kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return Object(_wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return Object(_bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return Object(_ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return Object(_baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(args);\n } else {\n throw new Error('Uni API:alert暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/alert/es/kuaishou-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/alert/es/kuaishou-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/alert/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/alert/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nvar alert = function (args) {\n ks.showModal(_extends({}, args, {\n showCancel: false,\n confirmText: args.buttonText\n }));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(alert, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/alert/es/web/index.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/alert/es/web/index.js ***!\n \\**********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_confirm_lib_web_index_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/confirm/lib/web/index.js */ \"../dist/lib/@uni/confirm/lib/web/index.js\");\n/* harmony import */ var _uni_confirm_lib_web_index_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_uni_confirm_lib_web_index_js__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/alert/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/alert/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\n\nvar alert = function (args) {\n _uni_confirm_lib_web_index_js__WEBPACK_IMPORTED_MODULE_0___default()(_extends({}, args, {\n showCancel: false,\n confirmText: args.buttonText\n }));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"])(alert, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].WEB));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/alert/es/wechat-miniprogram/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/alert/es/wechat-miniprogram/index.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/alert/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/alert/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nvar alert = function (args) {\n wx.showModal(_extends({}, args, {\n showCancel: false,\n confirmText: args.buttonText\n }));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(alert, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/_utils/constant.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/_utils/constant.js ***!\n \\********************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/_utils/styleOptions.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/_utils/styleOptions.js ***!\n \\************************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/ali-miniapp/createAnimation.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/ali-miniapp/createAnimation.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/animation/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/animation/es/common.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nfunction createAnimation(options) {\n var animation = my.createAnimation(Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"getMergedOptions\"])(_utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].ALIPAY, options)); // override\n\n var _step = animation.step.bind(animation);\n\n var _export = animation.export.bind(animation);\n\n animation.step = function (opts) {\n opts = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"getMergedOptions\"])(_utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].ALIPAY, _extends({}, options, opts));\n return _step(opts);\n };\n\n animation.export = function () {\n return _export();\n };\n\n return animation;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createAnimation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/ali-miniapp/createTransition.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/ali-miniapp/createTransition.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAnimation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAnimation */ \"../dist/lib/@uni/animation/es/ali-miniapp/createAnimation.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/animation/es/common.js\");\n\n\n\nfunction createTransition(options) {\n var animation = Object(_createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n return Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeCreateTransition\"])(animation, options);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createTransition);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/ali-miniapp/index.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/ali-miniapp/index.js ***!\n \\**********************************************************/\n/*! exports provided: createAnimation, createTransition, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAnimation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAnimation */ \"../dist/lib/@uni/animation/es/ali-miniapp/createAnimation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createAnimation\", function() { return _createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _createTransition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createTransition */ \"../dist/lib/@uni/animation/es/ali-miniapp/createTransition.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createTransition\", function() { return _createTransition__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAnimation: _createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n createTransition: _createTransition__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/baidu-smartprogram/createAnimation.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/baidu-smartprogram/createAnimation.js ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/animation/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/animation/es/common.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nfunction createAnimation(options) {\n var animation = swan.createAnimation(Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"getMergedOptions\"])(_utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].BAIDU, options)); // override\n\n var _step = animation.step.bind(animation);\n\n var _export = animation.export.bind(animation);\n\n animation.step = function (opts) {\n opts = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"getMergedOptions\"])(_utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].BAIDU, _extends({}, options, opts));\n return _step(opts);\n };\n\n animation.export = function () {\n return _export();\n };\n\n return animation;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createAnimation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/baidu-smartprogram/createTransition.js\":\n/*!****************************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/baidu-smartprogram/createTransition.js ***!\n \\****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAnimation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAnimation */ \"../dist/lib/@uni/animation/es/baidu-smartprogram/createAnimation.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/animation/es/common.js\");\n\n\n\nfunction createTransition(options) {\n var animation = Object(_createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n return Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeCreateTransition\"])(animation, options);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createTransition);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/baidu-smartprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/baidu-smartprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: createAnimation, createTransition, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAnimation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAnimation */ \"../dist/lib/@uni/animation/es/baidu-smartprogram/createAnimation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createAnimation\", function() { return _createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _createTransition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createTransition */ \"../dist/lib/@uni/animation/es/baidu-smartprogram/createTransition.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createTransition\", function() { return _createTransition__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAnimation: _createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n createTransition: _createTransition__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/bytedance-microapp/createAnimation.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/bytedance-microapp/createAnimation.js ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/animation/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/animation/es/common.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nfunction createAnimation(options) {\n var animation = tt.createAnimation(Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"getMergedOptions\"])(_utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].BYTE, options)); // override\n\n var _step = animation.step.bind(animation);\n\n var _export = animation.export.bind(animation);\n\n animation.step = function (opts) {\n opts = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"getMergedOptions\"])(_utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].BYTE, _extends({}, options, opts));\n return _step(opts);\n };\n\n animation.export = function () {\n return _export();\n };\n\n return animation;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createAnimation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/bytedance-microapp/createTransition.js\":\n/*!****************************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/bytedance-microapp/createTransition.js ***!\n \\****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAnimation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAnimation */ \"../dist/lib/@uni/animation/es/bytedance-microapp/createAnimation.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/animation/es/common.js\");\n\n\n\nfunction createTransition(options) {\n var animation = Object(_createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n return Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeCreateTransition\"])(animation, options);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createTransition);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/bytedance-microapp/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/bytedance-microapp/index.js ***!\n \\*****************************************************************/\n/*! exports provided: createAnimation, createTransition, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAnimation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAnimation */ \"../dist/lib/@uni/animation/es/bytedance-microapp/createAnimation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createAnimation\", function() { return _createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _createTransition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createTransition */ \"../dist/lib/@uni/animation/es/bytedance-microapp/createTransition.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createTransition\", function() { return _createTransition__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAnimation: _createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n createTransition: _createTransition__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/common.js\":\n/*!***********************************************!*\\\n !*** ../dist/lib/@uni/animation/es/common.js ***!\n \\***********************************************/\n/*! exports provided: getMergedOptions, parseTransform, normalizeCreateTransition */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMergedOptions\", function() { return getMergedOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parseTransform\", function() { return parseTransform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeCreateTransition\", function() { return normalizeCreateTransition; });\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/animation/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n/**\n * merge default options\n * @param containerName\n * @param options\n */\n\nfunction getMergedOptions(containerName, options) {\n var mergedOptions = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(_extends({\n duration: 400,\n timingFunction: 'linear',\n delay: 0,\n transformOrigin: '50% 50% 0'\n }, options), containerName); // set the min duration to 16ms to avoid some problems\n\n if (mergedOptions.duration < 16) {\n mergedOptions.duration = 16;\n }\n\n return mergedOptions;\n}\n/**\n * parse value of transform\n * @param value\n */\n\nfunction parseTransform(value) {\n value = String(value || '');\n var pos = 0;\n\n var isValidWord = function (code) {\n if (code >= 65 && code <= 90) return true; // A-Z\n\n if (code >= 97 && code <= 122) return true; // a-z\n\n if (code >= 48 && code <= 57) return true; // 0-9\n\n if (code === 45 || code === 46) return true; // `-` or `.`\n\n return false;\n };\n\n var skipSpace = function () {\n while (pos < value.length) {\n var code = value.charCodeAt(pos);\n\n if (code === 32 || code === 160) {\n // ` `\n pos++;\n } else if (code === 13 || code === 10 || code === 8232 || code === 8233) {\n // new line\n if (code === 13 && value.charCodeAt(pos + 1) === 10) {\n // CRLF\n pos++;\n }\n\n pos++;\n } else if (code > 8 && code < 14) {\n // other space\n pos++;\n } else {\n break;\n }\n }\n };\n\n var eat = function (_char) {\n if (value[pos] === _char) {\n pos++;\n return true;\n }\n\n return false;\n };\n\n var parseAtom = function () {\n var name = '';\n var args = [];\n var isReadArgs = false;\n var isExpectWord = true;\n\n while (pos < value.length) {\n skipSpace();\n var code = value.charCodeAt(pos);\n\n if (isExpectWord) {\n if (!isValidWord(code)) break;\n var chunkStart = pos;\n\n while (pos < value.length && isValidWord(code)) {\n code = value.charCodeAt(++pos);\n }\n\n var str = value.slice(chunkStart, pos);\n\n if (isReadArgs) {\n args.push(str);\n isExpectWord = false;\n } else {\n name = str;\n skipSpace();\n if (!eat('(')) break;\n isReadArgs = true;\n isExpectWord = true;\n }\n } else if (code === 44) {\n // `,`\n isExpectWord = true;\n pos++;\n } else {\n break;\n }\n }\n\n if (isExpectWord || !eat(')')) return null;\n if (!name || args.length === 0) return null;\n return {\n name: name,\n args: args\n };\n };\n\n var hasInvalid = false;\n\n var getValidArg = function (val, unit) {\n if (unit === void 0) {\n unit = '';\n }\n\n var match = new RegExp(\"^(-?\\\\d*(\\\\.\\\\d+)?)\" + unit + \"$\", 'i').exec(val);\n\n if (match && match[1]) {\n return Number(match[1]);\n } else {\n hasInvalid = true;\n }\n };\n\n var result = {};\n\n while (pos < value.length) {\n var res = parseAtom();\n skipSpace();\n if (!res) return {};\n var args = res.args;\n\n if (['rotate', 'rotateX', 'rotateY', 'rotateZ', 'skew', 'skewX', 'skewY'].includes(res.name)) {\n args = args.map(function (arg) {\n return getValidArg(arg, 'deg');\n });\n } else if (['translate', 'translateX', 'translateY', 'translateZ', 'translate3d'].includes(res.name)) {\n args = args.map(function (arg) {\n return getValidArg(arg, 'px');\n });\n } else if (['scale', 'scale3d', 'scaleX', 'scaleY', 'scaleZ', 'matrix', 'matrix3d'].includes(res.name)) {\n args = args.map(function (arg) {\n return getValidArg(arg, '');\n });\n } else if (res.name === 'rotate3d') {\n args = [].concat(args.slice(0, 3).map(function (arg) {\n return getValidArg(arg, '');\n }), args.slice(3, 4).map(function (arg) {\n return getValidArg(arg, 'deg');\n }));\n } else {\n return {};\n }\n\n if (hasInvalid) return {};\n result[res.name] = args;\n }\n\n return result;\n}\n/**\n * normalize createTransition method\n * @param animation\n * @param options\n */\n\nfunction normalizeCreateTransition(animation, options) {\n var _ref = options || {},\n _ref$from = _ref.from,\n from = _ref$from === void 0 ? {} : _ref$from,\n _ref$to = _ref.to,\n to = _ref$to === void 0 ? {} : _ref$to,\n animationOptions = _ref.options;\n\n var applyTransform = function applyTransform(opts) {\n Object.keys(opts).forEach(function (key) {\n var value = opts[key];\n\n if (key === 'transform') {\n applyTransform(parseTransform(value));\n } else if (typeof animation[key] === 'function') {\n if (Array.isArray(value)) {\n animation[key].apply(animation, value);\n } else {\n animation[key](value);\n }\n }\n });\n }; // from\n\n\n applyTransform(from);\n animation.step(_extends({}, animationOptions, {\n duration: 16,\n delay: 0\n })); // to\n\n applyTransform(to);\n animation.step(animationOptions);\n return animation;\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/index.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/animation/es/index.js ***!\n \\**********************************************/\n/*! exports provided: createAnimation, createTransition, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createAnimation\", function() { return createAnimation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createTransition\", function() { return createTransition; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/animation/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/animation/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/animation/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/animation/es/bytedance-microapp/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/animation/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\nfunction createAnimation(options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].createAnimation(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n throw new Error('@uni/apis:createAnimation 暂不支持');\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createAnimation(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].createAnimation(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].createAnimation(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].createAnimation(options);\n } else {\n throw new Error('@uni/apis:createAnimation 暂不支持');\n }\n}\nfunction createTransition(options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].createTransition(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n throw new Error('@uni/apis:createAnimation 暂不支持');\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createTransition(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].createTransition(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].createTransition(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].createTransition(options);\n } else {\n throw new Error('@uni/apis:createTransition 暂不支持');\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAnimation: createAnimation,\n createTransition: createTransition\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/web/AnimationImpl.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/web/AnimationImpl.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return AnimationImpl; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/animation/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/animation/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar ANIMATION_RUNNING = '__UNI_API_ANIMATION_RUNNING__';\nvar ANIMATION_CANCEL = '__UNI_API_ANIMATION_CANCEL__';\nvar ANIMATION_ORIGINAL_STYLE = '__UNI_API_ANIMATION_ORIGINAL_STYLE__';\n/**\n * normalize unit\n * @param value\n * @param unit\n * @param force\n */\n\nfunction normalizeUnit(value, unit, force) {\n if (force === void 0) {\n force = false;\n }\n\n if (force || typeof value === 'number') {\n return \"\" + value + unit;\n }\n\n return value;\n}\n/**\n * handle animation actions queue\n * @param actions\n * @param fn\n * @param onFinish\n */\n\n\nfunction handleActionsQueue(actions, fn, onFinish) {\n actions = actions.slice();\n var action = actions.shift();\n\n if (action) {\n fn(action, function () {\n return handleActionsQueue(actions, fn, onFinish);\n });\n } else if (onFinish) {\n onFinish();\n }\n}\n/**\n * apply animation for web-side\n * @param actions\n * @param dom\n */\n\n\nfunction applyWebAnimation(actions, dom) {\n // If `dom` is not HTML Node, ignore\n if (!(dom && dom.nodeType === 1)) {\n return;\n } // clear the last animation\n\n\n if (dom[ANIMATION_RUNNING]) {\n (dom[ANIMATION_CANCEL] || []).forEach(function (t) {\n return clearTimeout(t);\n });\n } else {\n // cache original style\n dom[ANIMATION_ORIGINAL_STYLE] = {\n transitionProperty: dom.style.transitionProperty,\n transitionDuration: dom.style.transitionDuration,\n transitionDelay: dom.style.transitionDelay,\n transitionTimingFunction: dom.style.transitionTimingFunction,\n transformOrigin: dom.style.transformOrigin\n };\n }\n\n dom[ANIMATION_RUNNING] = true;\n dom[ANIMATION_CANCEL] = [];\n /**\n * Apply animation action, return the current cost time\n * @param action\n */\n\n var applyAction = function (action) {\n var _action$option = action.option,\n transition = _action$option.transition,\n transformOrigin = _action$option.transformOrigin;\n var transform = [];\n action.animates.forEach(function (animate) {\n if (animate.type === 'style') {\n var _animate$args = animate.args,\n property = _animate$args[0],\n value = _animate$args[1];\n dom.style[property] = value;\n } else {\n transform.push(animate.type + \"(\" + animate.args.join(',') + \")\");\n }\n });\n\n if (transform.length > 0) {\n dom.style.transform = transform.join(' ');\n }\n\n dom.style.transitionProperty = 'all';\n dom.style.transitionDuration = transition.duration + \"ms\";\n dom.style.transitionDelay = transition.delay + \"ms\";\n dom.style.transitionTimingFunction = transition.timingFunction;\n dom.style.transformOrigin = transformOrigin;\n var cost = transition.delay + transition.duration;\n return isNaN(cost) ? 0 : cost;\n };\n\n var saveCancel = function (timer) {\n dom[ANIMATION_CANCEL] = dom[ANIMATION_CANCEL] || [];\n dom[ANIMATION_CANCEL].push(timer);\n };\n\n var delay = 0;\n handleActionsQueue(actions, function (action, callback) {\n saveCancel(setTimeout(function () {\n delay = applyAction(action);\n callback();\n }, delay));\n }, function () {\n saveCancel( // Restore the style at the end of the animation\n setTimeout(function () {\n Object.assign(dom.style, dom[ANIMATION_ORIGINAL_STYLE] || {});\n dom[ANIMATION_RUNNING] = null;\n dom[ANIMATION_CANCEL] = null;\n dom[ANIMATION_ORIGINAL_STYLE] = null;\n }, delay));\n });\n}\n\nvar AnimationImpl = /*#__PURE__*/function () {\n function AnimationImpl(options) {\n this.options = void 0;\n this.actions = void 0;\n this.currentTransform = void 0;\n this.currentStepAnimates = void 0;\n this.options = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"getMergedOptions\"])(_utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB, options);\n this.actions = [];\n this.currentTransform = {};\n this.currentStepAnimates = [];\n }\n\n var _proto = AnimationImpl.prototype;\n\n _proto.export = function (dom) {\n var actions = this.actions.slice();\n applyWebAnimation(actions, dom);\n this.actions = [];\n return {\n actions: actions\n };\n };\n\n _proto.step = function (options) {\n var _this = this;\n\n options = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"getMergedOptions\"])(_utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB, _extends({}, this.options, options));\n this.currentStepAnimates.forEach(function (animate) {\n var key = animate.type;\n\n if (key === 'style') {\n key += \".\" + animate.args[0];\n }\n\n _this.currentTransform[key] = animate;\n });\n var animates = [];\n Object.keys(this.currentTransform).forEach(function (key) {\n animates.push(_this.currentTransform[key]);\n });\n this.actions.push({\n animates: animates,\n option: {\n transformOrigin: options.transformOrigin,\n transition: {\n delay: options.delay,\n duration: options.duration,\n timingFunction: options.timingFunction\n }\n }\n });\n this.currentStepAnimates = [];\n return this;\n };\n\n _proto.opacity = function (value) {\n this.currentStepAnimates.push({\n type: 'style',\n args: ['opacity', value]\n });\n return this;\n };\n\n _proto.backgroundColor = function (value) {\n this.currentStepAnimates.push({\n type: 'style',\n args: ['background-color', value]\n });\n return this;\n };\n\n _proto.width = function (value) {\n this.currentStepAnimates.push({\n type: 'style',\n args: ['width', normalizeUnit(value, 'px')]\n });\n return this;\n };\n\n _proto.height = function (value) {\n this.currentStepAnimates.push({\n type: 'style',\n args: ['height', normalizeUnit(value, 'px')]\n });\n return this;\n };\n\n _proto.left = function (value) {\n this.currentStepAnimates.push({\n type: 'style',\n args: ['left', normalizeUnit(value, 'px')]\n });\n return this;\n };\n\n _proto.right = function (value) {\n this.currentStepAnimates.push({\n type: 'style',\n args: ['right', normalizeUnit(value, 'px')]\n });\n return this;\n };\n\n _proto.top = function (value) {\n this.currentStepAnimates.push({\n type: 'style',\n args: ['top', normalizeUnit(value, 'px')]\n });\n return this;\n };\n\n _proto.bottom = function (value) {\n this.currentStepAnimates.push({\n type: 'style',\n args: ['bottom', normalizeUnit(value, 'px')]\n });\n return this;\n };\n\n _proto.rotate = function (angle) {\n if (angle === void 0) {\n angle = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'rotate',\n args: [normalizeUnit(angle, 'deg', true)]\n });\n return this;\n };\n\n _proto.rotate3d = function (x, y, z, angle) {\n if (x === void 0) {\n x = 0;\n }\n\n if (y === void 0) {\n y = 0;\n }\n\n if (z === void 0) {\n z = 0;\n }\n\n if (angle === void 0) {\n angle = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'rotate3d',\n args: [x, y, z, normalizeUnit(angle, 'deg', true)]\n });\n return this;\n };\n\n _proto.rotateX = function (angle) {\n if (angle === void 0) {\n angle = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'rotateX',\n args: [normalizeUnit(angle, 'deg', true)]\n });\n return this;\n };\n\n _proto.rotateY = function (angle) {\n if (angle === void 0) {\n angle = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'rotateY',\n args: [normalizeUnit(angle, 'deg', true)]\n });\n return this;\n };\n\n _proto.rotateZ = function (angle) {\n if (angle === void 0) {\n angle = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'rotateZ',\n args: [normalizeUnit(angle, 'deg', true)]\n });\n return this;\n };\n\n _proto.scale = function (sx, sy) {\n if (sx === undefined) sx = 1;\n if (sy === undefined) sy = sx;\n this.currentStepAnimates.push({\n type: 'scale',\n args: [sx, sy]\n });\n return this;\n };\n\n _proto.scale3d = function (sx, sy, sz) {\n if (sx === void 0) {\n sx = 1;\n }\n\n if (sy === void 0) {\n sy = 1;\n }\n\n if (sz === void 0) {\n sz = 1;\n }\n\n this.currentStepAnimates.push({\n type: 'scale3d',\n args: [sx, sy, sz]\n });\n return this;\n };\n\n _proto.scaleX = function (scale) {\n if (scale === void 0) {\n scale = 1;\n }\n\n this.currentStepAnimates.push({\n type: 'scaleX',\n args: [scale]\n });\n return this;\n };\n\n _proto.scaleY = function (scale) {\n if (scale === void 0) {\n scale = 1;\n }\n\n this.currentStepAnimates.push({\n type: 'scaleY',\n args: [scale]\n });\n return this;\n };\n\n _proto.scaleZ = function (scale) {\n if (scale === void 0) {\n scale = 1;\n }\n\n this.currentStepAnimates.push({\n type: 'scaleZ',\n args: [scale]\n });\n return this;\n };\n\n _proto.translate = function (tx, ty) {\n if (tx === void 0) {\n tx = 0;\n }\n\n if (ty === void 0) {\n ty = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'translate',\n args: [normalizeUnit(tx, 'px', true), normalizeUnit(ty, 'px', true)]\n });\n return this;\n };\n\n _proto.translate3d = function (tx, ty, tz) {\n if (tx === void 0) {\n tx = 0;\n }\n\n if (ty === void 0) {\n ty = 0;\n }\n\n if (tz === void 0) {\n tz = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'translate3d',\n args: [normalizeUnit(tx, 'px', true), normalizeUnit(ty, 'px', true), normalizeUnit(tz, 'px', true)]\n });\n return this;\n };\n\n _proto.translateX = function (translation) {\n if (translation === void 0) {\n translation = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'translateX',\n args: [normalizeUnit(translation, 'px', true)]\n });\n return this;\n };\n\n _proto.translateY = function (translation) {\n if (translation === void 0) {\n translation = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'translateY',\n args: [normalizeUnit(translation, 'px', true)]\n });\n return this;\n };\n\n _proto.translateZ = function (translation) {\n if (translation === void 0) {\n translation = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'translateZ',\n args: [normalizeUnit(translation, 'px', true)]\n });\n return this;\n };\n\n _proto.skew = function (ax, ay) {\n if (ax === void 0) {\n ax = 0;\n }\n\n if (ay === void 0) {\n ay = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'skew',\n args: [normalizeUnit(ax, 'deg', true), normalizeUnit(ay, 'deg', true)]\n });\n return this;\n };\n\n _proto.skewX = function (angle) {\n if (angle === void 0) {\n angle = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'skewX',\n args: [normalizeUnit(angle, 'deg', true)]\n });\n return this;\n };\n\n _proto.skewY = function (angle) {\n if (angle === void 0) {\n angle = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'skewY',\n args: [normalizeUnit(angle, 'deg', true)]\n });\n return this;\n };\n\n _proto.matrix = function (a, b, c, d, tx, ty) {\n if (a === void 0) {\n a = 1;\n }\n\n if (b === void 0) {\n b = 0;\n }\n\n if (c === void 0) {\n c = 0;\n }\n\n if (d === void 0) {\n d = 1;\n }\n\n if (tx === void 0) {\n tx = 0;\n }\n\n if (ty === void 0) {\n ty = 0;\n }\n\n this.currentStepAnimates.push({\n type: 'matrix',\n args: [a, b, c, d, tx, ty]\n });\n return this;\n };\n\n _proto.matrix3d = function (a1, b1, c1, d1, a2, b2, c2, d2, a3, b3, c3, d3, a4, b4, c4, d4) {\n if (a1 === void 0) {\n a1 = 1;\n }\n\n if (b1 === void 0) {\n b1 = 0;\n }\n\n if (c1 === void 0) {\n c1 = 0;\n }\n\n if (d1 === void 0) {\n d1 = 0;\n }\n\n if (a2 === void 0) {\n a2 = 0;\n }\n\n if (b2 === void 0) {\n b2 = 1;\n }\n\n if (c2 === void 0) {\n c2 = 0;\n }\n\n if (d2 === void 0) {\n d2 = 0;\n }\n\n if (a3 === void 0) {\n a3 = 0;\n }\n\n if (b3 === void 0) {\n b3 = 0;\n }\n\n if (c3 === void 0) {\n c3 = 1;\n }\n\n if (d3 === void 0) {\n d3 = 0;\n }\n\n if (a4 === void 0) {\n a4 = 0;\n }\n\n if (b4 === void 0) {\n b4 = 0;\n }\n\n if (c4 === void 0) {\n c4 = 0;\n }\n\n if (d4 === void 0) {\n d4 = 1;\n }\n\n this.currentStepAnimates.push({\n type: 'matrix3d',\n args: [a1, b1, c1, d1, a2, b2, c2, d2, a3, b3, c3, d3, a4, b4, c4, d4]\n });\n return this;\n };\n\n return AnimationImpl;\n}();\n\n\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/web/createAnimation.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/web/createAnimation.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _AnimationImpl__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./AnimationImpl */ \"../dist/lib/@uni/animation/es/web/AnimationImpl.js\");\n\n\nfunction createAnimation(options) {\n return new _AnimationImpl__WEBPACK_IMPORTED_MODULE_0__[\"default\"](options);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createAnimation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/web/createTransition.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/web/createTransition.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAnimation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAnimation */ \"../dist/lib/@uni/animation/es/web/createAnimation.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/animation/es/common.js\");\n\n\n\nfunction createTransition(options) {\n var animation = Object(_createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n return Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeCreateTransition\"])(animation, options);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createTransition);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/web/index.js\":\n/*!**************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/web/index.js ***!\n \\**************************************************/\n/*! exports provided: createAnimation, createTransition, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAnimation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAnimation */ \"../dist/lib/@uni/animation/es/web/createAnimation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createAnimation\", function() { return _createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _createTransition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createTransition */ \"../dist/lib/@uni/animation/es/web/createTransition.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createTransition\", function() { return _createTransition__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAnimation: _createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n createTransition: _createTransition__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/wechat-miniprogram/createAnimation.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/wechat-miniprogram/createAnimation.js ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/animation/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/animation/es/common.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nfunction createAnimation(options) {\n var animation = wx.createAnimation(Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"getMergedOptions\"])(_utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].WECHAT, options)); // override\n\n var _step = animation.step.bind(animation);\n\n var _export = animation.export.bind(animation);\n\n animation.step = function (opts) {\n opts = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"getMergedOptions\"])(_utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].WECHAT, _extends({}, options, opts));\n return _step(opts);\n };\n\n animation.export = function () {\n return _export();\n };\n\n return animation;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createAnimation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/wechat-miniprogram/createTransition.js\":\n/*!****************************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/wechat-miniprogram/createTransition.js ***!\n \\****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAnimation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAnimation */ \"../dist/lib/@uni/animation/es/wechat-miniprogram/createAnimation.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/animation/es/common.js\");\n\n\n\nfunction createTransition(options) {\n var animation = Object(_createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"])();\n return Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeCreateTransition\"])(animation, options);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createTransition);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/animation/es/wechat-miniprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/animation/es/wechat-miniprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: createAnimation, createTransition, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAnimation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAnimation */ \"../dist/lib/@uni/animation/es/wechat-miniprogram/createAnimation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createAnimation\", function() { return _createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _createTransition__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createTransition */ \"../dist/lib/@uni/animation/es/wechat-miniprogram/createTransition.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createTransition\", function() { return _createTransition__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAnimation: _createAnimation__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n createTransition: _createTransition__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/_utils/miniappEnvApp.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/_utils/miniappEnvApp.js ***!\n \\***************************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/ali-miniapp/getApp.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/ali-miniapp/getApp.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return getApp();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/ali-miniapp/getCurrentPages.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/ali-miniapp/getCurrentPages.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return getCurrentPages();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/ali-miniapp/getLaunchOptionsSync.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/ali-miniapp/getLaunchOptionsSync.js ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return my.getLaunchOptionsSync();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/ali-miniapp/index.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/ali-miniapp/index.js ***!\n \\************************************************************/\n/*! exports provided: getApp, getCurrentPages, getLaunchOptionsSync, onError, offError, onUnhandledRejection, offUnhandledRejection, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getApp */ \"../dist/lib/@uni/application/es/ali-miniapp/getApp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getApp\", function() { return _getApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getCurrentPages */ \"../dist/lib/@uni/application/es/ali-miniapp/getCurrentPages.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getCurrentPages\", function() { return _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getLaunchOptionsSync */ \"../dist/lib/@uni/application/es/ali-miniapp/getLaunchOptionsSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLaunchOptionsSync\", function() { return _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _onError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onError */ \"../dist/lib/@uni/application/es/ali-miniapp/onError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onError\", function() { return _onError__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _offError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./offError */ \"../dist/lib/@uni/application/es/ali-miniapp/offError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offError\", function() { return _offError__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./onUnhandledRejection */ \"../dist/lib/@uni/application/es/ali-miniapp/onUnhandledRejection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onUnhandledRejection\", function() { return _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offUnhandledRejection */ \"../dist/lib/@uni/application/es/ali-miniapp/offUnhandledRejection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offUnhandledRejection\", function() { return _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getApp: _getApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getCurrentPages: _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getLaunchOptionsSync: _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n onError: _onError__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n offError: _offError__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n onUnhandledRejection: _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n offUnhandledRejection: _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/ali-miniapp/offError.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/ali-miniapp/offError.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/application/es/_utils/miniappEnvApp.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.offError(cb) : my.offError(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/ali-miniapp/offUnhandledRejection.js\":\n/*!****************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/ali-miniapp/offUnhandledRejection.js ***!\n \\****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/application/es/_utils/miniappEnvApp.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.offUnhandledRejection(cb) : my.offUnhandledRejection(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/ali-miniapp/onError.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/ali-miniapp/onError.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/application/es/_utils/miniappEnvApp.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.onError(cb) : my.onError(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/ali-miniapp/onUnhandledRejection.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/ali-miniapp/onUnhandledRejection.js ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/application/es/_utils/miniappEnvApp.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.onUnhandledRejection(cb) : my.onUnhandledRejection(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/baidu-smartprogram/getApp.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/baidu-smartprogram/getApp.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return getApp();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/baidu-smartprogram/getCurrentPages.js\":\n/*!*****************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/baidu-smartprogram/getCurrentPages.js ***!\n \\*****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return getCurrentPages();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/baidu-smartprogram/getLaunchOptionsSync.js\":\n/*!**********************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/baidu-smartprogram/getLaunchOptionsSync.js ***!\n \\**********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// export default () => swan.getLaunchOptionsSync();\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/baidu-smartprogram/index.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/baidu-smartprogram/index.js ***!\n \\*******************************************************************/\n/*! exports provided: getApp, getCurrentPages, getLaunchOptionsSync, onError, offError, onUnhandledRejection, offUnhandledRejection, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getApp */ \"../dist/lib/@uni/application/es/baidu-smartprogram/getApp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getApp\", function() { return _getApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getCurrentPages */ \"../dist/lib/@uni/application/es/baidu-smartprogram/getCurrentPages.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getCurrentPages\", function() { return _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getLaunchOptionsSync */ \"../dist/lib/@uni/application/es/baidu-smartprogram/getLaunchOptionsSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLaunchOptionsSync\", function() { return _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _onError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onError */ \"../dist/lib/@uni/application/es/baidu-smartprogram/onError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onError\", function() { return _onError__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _offError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./offError */ \"../dist/lib/@uni/application/es/baidu-smartprogram/offError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offError\", function() { return _offError__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./onUnhandledRejection */ \"../dist/lib/@uni/application/es/baidu-smartprogram/onUnhandledRejection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onUnhandledRejection\", function() { return _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offUnhandledRejection */ \"../dist/lib/@uni/application/es/baidu-smartprogram/offUnhandledRejection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offUnhandledRejection\", function() { return _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getApp: _getApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getCurrentPages: _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getLaunchOptionsSync: _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n onError: _onError__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n offError: _offError__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n onUnhandledRejection: _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n offUnhandledRejection: _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/baidu-smartprogram/offError.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/baidu-smartprogram/offError.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return swan.offError(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/baidu-smartprogram/offUnhandledRejection.js\":\n/*!***********************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/baidu-smartprogram/offUnhandledRejection.js ***!\n \\***********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {// return swan.offUnhandledRejection(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/baidu-smartprogram/onError.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/baidu-smartprogram/onError.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return swan.onError(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/baidu-smartprogram/onUnhandledRejection.js\":\n/*!**********************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/baidu-smartprogram/onUnhandledRejection.js ***!\n \\**********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {// return swan.onUnhandledRejection(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/bytedance-microapp/getApp.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/bytedance-microapp/getApp.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return getApp();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/bytedance-microapp/getCurrentPages.js\":\n/*!*****************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/bytedance-microapp/getCurrentPages.js ***!\n \\*****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return getCurrentPages();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/bytedance-microapp/getLaunchOptionsSync.js\":\n/*!**********************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/bytedance-microapp/getLaunchOptionsSync.js ***!\n \\**********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return tt.getLaunchOptionsSync();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/bytedance-microapp/index.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/bytedance-microapp/index.js ***!\n \\*******************************************************************/\n/*! exports provided: getApp, getCurrentPages, getLaunchOptionsSync, onError, offError, onUnhandledRejection, offUnhandledRejection, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getApp */ \"../dist/lib/@uni/application/es/bytedance-microapp/getApp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getApp\", function() { return _getApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getCurrentPages */ \"../dist/lib/@uni/application/es/bytedance-microapp/getCurrentPages.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getCurrentPages\", function() { return _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getLaunchOptionsSync */ \"../dist/lib/@uni/application/es/bytedance-microapp/getLaunchOptionsSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLaunchOptionsSync\", function() { return _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _onError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onError */ \"../dist/lib/@uni/application/es/bytedance-microapp/onError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onError\", function() { return _onError__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _offError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./offError */ \"../dist/lib/@uni/application/es/bytedance-microapp/offError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offError\", function() { return _offError__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./onUnhandledRejection */ \"../dist/lib/@uni/application/es/bytedance-microapp/onUnhandledRejection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onUnhandledRejection\", function() { return _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offUnhandledRejection */ \"../dist/lib/@uni/application/es/bytedance-microapp/offUnhandledRejection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offUnhandledRejection\", function() { return _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getApp: _getApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getCurrentPages: _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getLaunchOptionsSync: _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n onError: _onError__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n offError: _offError__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n onUnhandledRejection: _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n offUnhandledRejection: _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/bytedance-microapp/offError.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/bytedance-microapp/offError.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return tt.offError(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/bytedance-microapp/offUnhandledRejection.js\":\n/*!***********************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/bytedance-microapp/offUnhandledRejection.js ***!\n \\***********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return tt.offUnhandledRejection(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/bytedance-microapp/onError.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/bytedance-microapp/onError.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return tt.onError(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/bytedance-microapp/onUnhandledRejection.js\":\n/*!**********************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/bytedance-microapp/onUnhandledRejection.js ***!\n \\**********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return tt.onUnhandledRejection(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/index.js\":\n/*!************************************************!*\\\n !*** ../dist/lib/@uni/application/es/index.js ***!\n \\************************************************/\n/*! exports provided: getApp, getCurrentPages, getLaunchOptionsSync, onError, offError, onUnhandledRejection, offUnhandledRejection, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getApp\", function() { return getApp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getCurrentPages\", function() { return getCurrentPages; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLaunchOptionsSync\", function() { return getLaunchOptionsSync; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onError\", function() { return onError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"offError\", function() { return offError; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onUnhandledRejection\", function() { return onUnhandledRejection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"offUnhandledRejection\", function() { return offUnhandledRejection; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/application/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/application/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/application/es/bytedance-microapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/application/es/web/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/application/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar getApp = function () {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getApp();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getApp();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getApp();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getApp();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getApp();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getApp();\n } else {\n throw new Error('@uni:application.getApp 暂不支持');\n }\n};\nvar getCurrentPages = function () {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getCurrentPages();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getCurrentPages();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getCurrentPages();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getCurrentPages();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getCurrentPages();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getCurrentPages();\n } else {\n throw new Error('@uni:application.getCurrentPages 暂不支持');\n }\n};\nvar getLaunchOptionsSync = function () {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getLaunchOptionsSync();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getLaunchOptionsSync();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getLaunchOptionsSync();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getLaunchOptionsSync();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getLaunchOptionsSync();\n } else {\n throw new Error('@uni:application.getLaunchOptionsSync 暂不支持');\n }\n};\nvar onError = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].onError(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n throw new Error('@uni:onError 暂不支持');\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].onError(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].onError(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].onError(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].onError(options);\n } else {\n throw new Error('@uni:onError 暂不支持');\n }\n};\nvar offError = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].offError(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n throw new Error('@uni:offError 暂不支持');\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offError(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].offError(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].offError(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].offError(options);\n } else {\n throw new Error('@uni:offError暂不支持');\n }\n};\nvar onUnhandledRejection = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].onUnhandledRejection(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].onUnhandledRejection(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].onUnhandledRejection(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].onUnhandledRejection(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].onUnhandledRejection(options);\n } else {\n throw new Error('@uni:onUnhandledRejection 暂不支持');\n }\n};\nvar offUnhandledRejection = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].offUnhandledRejection(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].offUnhandledRejection(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].offUnhandledRejection(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].offUnhandledRejection(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].offUnhandledRejection(options);\n } else {\n throw new Error('@uni:Application.offUnhandledRejection 暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getApp: getApp,\n getCurrentPages: getCurrentPages,\n getLaunchOptionsSync: getLaunchOptionsSync,\n onError: onError,\n offError: offError,\n onUnhandledRejection: onUnhandledRejection,\n offUnhandledRejection: offUnhandledRejection\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/getApp.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/kuaishou-miniprogram/getApp.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return getApp();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/getCurrentPages.js\":\n/*!*******************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/kuaishou-miniprogram/getCurrentPages.js ***!\n \\*******************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return getCurrentPages();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/getLaunchOptionsSync.js\":\n/*!************************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/kuaishou-miniprogram/getLaunchOptionsSync.js ***!\n \\************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return ks.getLaunchOptionsSync();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/index.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/kuaishou-miniprogram/index.js ***!\n \\*********************************************************************/\n/*! exports provided: getApp, getCurrentPages, getLaunchOptionsSync, onError, offError, onUnhandledRejection, offUnhandledRejection, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getApp */ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/getApp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getApp\", function() { return _getApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getCurrentPages */ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/getCurrentPages.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getCurrentPages\", function() { return _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getLaunchOptionsSync */ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/getLaunchOptionsSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLaunchOptionsSync\", function() { return _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _onError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onError */ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/onError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onError\", function() { return _onError__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _offError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./offError */ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/offError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offError\", function() { return _offError__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./onUnhandledRejection */ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/onUnhandledRejection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onUnhandledRejection\", function() { return _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offUnhandledRejection */ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/offUnhandledRejection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offUnhandledRejection\", function() { return _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getApp: _getApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getCurrentPages: _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getLaunchOptionsSync: _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n onError: _onError__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n offError: _offError__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n onUnhandledRejection: _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n offUnhandledRejection: _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/offError.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/kuaishou-miniprogram/offError.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return ks.offError(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/offUnhandledRejection.js\":\n/*!*************************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/kuaishou-miniprogram/offUnhandledRejection.js ***!\n \\*************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return ks.offUnhandledRejection(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/onError.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/kuaishou-miniprogram/onError.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return ks.onError(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/kuaishou-miniprogram/onUnhandledRejection.js\":\n/*!************************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/kuaishou-miniprogram/onUnhandledRejection.js ***!\n \\************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return ks.onUnhandledRejection(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/web/getApp.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/application/es/web/getApp.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return window;\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/web/getCurrentPages.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/web/getCurrentPages.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var query = {};\n var hash = {};\n window.location.hash.replace(/#.*?\\?/, '').split('&').forEach(function (i) {\n hash[i.split('=')[0]] = i.split('=')[1];\n });\n window.location.search.replace('?', '').split('&').forEach(function (i) {\n query[i.split('=')[0]] = i.split('=')[1];\n });\n return [{\n pageId: \"\" + window.location.pathname + window.location.hash + \"-1\",\n query: query,\n hash: hash\n }];\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/web/getLaunchOptionsSync.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/web/getLaunchOptionsSync.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return {\n path: window.location.pathname,\n query: {}\n };\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/web/index.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/application/es/web/index.js ***!\n \\****************************************************/\n/*! exports provided: getApp, getCurrentPages, getLaunchOptionsSync, onError, offError, onUnhandledRejection, offUnhandledRejection, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getApp */ \"../dist/lib/@uni/application/es/web/getApp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getApp\", function() { return _getApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getCurrentPages */ \"../dist/lib/@uni/application/es/web/getCurrentPages.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getCurrentPages\", function() { return _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getLaunchOptionsSync */ \"../dist/lib/@uni/application/es/web/getLaunchOptionsSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLaunchOptionsSync\", function() { return _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _onError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onError */ \"../dist/lib/@uni/application/es/web/onError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onError\", function() { return _onError__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _offError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./offError */ \"../dist/lib/@uni/application/es/web/offError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offError\", function() { return _offError__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./onUnhandledRejection */ \"../dist/lib/@uni/application/es/web/onUnhandledRejection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onUnhandledRejection\", function() { return _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offUnhandledRejection */ \"../dist/lib/@uni/application/es/web/offUnhandledRejection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offUnhandledRejection\", function() { return _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getApp: _getApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getCurrentPages: _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getLaunchOptionsSync: _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n onError: _onError__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n offError: _offError__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n onUnhandledRejection: _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n offUnhandledRejection: _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/web/offError.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/application/es/web/offError.js ***!\n \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return window.removeEventListener('error', cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/web/offUnhandledRejection.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/web/offUnhandledRejection.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return window.removeEventListener('unhandledrejection', cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/web/onError.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/application/es/web/onError.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return window.addEventListener('error', cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/web/onUnhandledRejection.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/web/onUnhandledRejection.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return window.addEventListener('unhandledrejection', cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/wechat-miniprogram/getApp.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/wechat-miniprogram/getApp.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return getApp();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/wechat-miniprogram/getCurrentPages.js\":\n/*!*****************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/wechat-miniprogram/getCurrentPages.js ***!\n \\*****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return getCurrentPages();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/wechat-miniprogram/getLaunchOptionsSync.js\":\n/*!**********************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/wechat-miniprogram/getLaunchOptionsSync.js ***!\n \\**********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return wx.getLaunchOptionsSync();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/wechat-miniprogram/index.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/wechat-miniprogram/index.js ***!\n \\*******************************************************************/\n/*! exports provided: getApp, getCurrentPages, getLaunchOptionsSync, onError, offError, onUnhandledRejection, offUnhandledRejection, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getApp */ \"../dist/lib/@uni/application/es/wechat-miniprogram/getApp.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getApp\", function() { return _getApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getCurrentPages */ \"../dist/lib/@uni/application/es/wechat-miniprogram/getCurrentPages.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getCurrentPages\", function() { return _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getLaunchOptionsSync */ \"../dist/lib/@uni/application/es/wechat-miniprogram/getLaunchOptionsSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLaunchOptionsSync\", function() { return _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _onError__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./onError */ \"../dist/lib/@uni/application/es/wechat-miniprogram/onError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onError\", function() { return _onError__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _offError__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./offError */ \"../dist/lib/@uni/application/es/wechat-miniprogram/offError.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offError\", function() { return _offError__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./onUnhandledRejection */ \"../dist/lib/@uni/application/es/wechat-miniprogram/onUnhandledRejection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onUnhandledRejection\", function() { return _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./offUnhandledRejection */ \"../dist/lib/@uni/application/es/wechat-miniprogram/offUnhandledRejection.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"offUnhandledRejection\", function() { return _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getApp: _getApp__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getCurrentPages: _getCurrentPages__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getLaunchOptionsSync: _getLaunchOptionsSync__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n onError: _onError__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n offError: _offError__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n onUnhandledRejection: _onUnhandledRejection__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n offUnhandledRejection: _offUnhandledRejection__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/wechat-miniprogram/offError.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/wechat-miniprogram/offError.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return wx.offError(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/wechat-miniprogram/offUnhandledRejection.js\":\n/*!***********************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/wechat-miniprogram/offUnhandledRejection.js ***!\n \\***********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return wx.offUnhandledRejection(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/wechat-miniprogram/onError.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/wechat-miniprogram/onError.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return wx.onError(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/application/es/wechat-miniprogram/onUnhandledRejection.js\":\n/*!**********************************************************************************!*\\\n !*** ../dist/lib/@uni/application/es/wechat-miniprogram/onUnhandledRejection.js ***!\n \\**********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (cb) {\n return wx.onUnhandledRejection(cb);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/_utils/event.js\":\n/*!*************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/_utils/event.js ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Events; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction 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\nvar Events = /*#__PURE__*/function () {\n function Events() {\n this.events = void 0;\n this.events = {};\n }\n\n var _proto = Events.prototype;\n\n _proto.emit = function (key, params) {\n var _this = this;\n\n if (this.events[key] && this.events[key].size > 0) {\n var _queue = new Set(Array.from(this.events[key]));\n\n _queue.forEach( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(item) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function (_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n item.handler(params);\n\n if (item.once) {\n _this.events[key].delete(item);\n }\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function () {\n return _ref.apply(this, arguments);\n };\n }());\n }\n } // async _emit(key: string, params: any) {\n // if (this.events[key] && this.events[key].length > 0) {\n // const item = this.events[key].shift();\n // if (isAsync(item)) {\n // await item(params);\n // } else {\n // item(params);\n // }\n // this.emit(key, params);\n // }\n // }\n ;\n\n _proto.once = function (key, cb) {\n var item = {\n once: true,\n handler: cb\n };\n this.events[key] ? this.events[key].add(item) : this.events[key] = new Set([item]); // return () => {\n // this.events[key].delete(item);\n // };\n };\n\n _proto.register = function (key, cb) {\n var _this2 = this;\n\n var item = {\n once: false,\n handler: cb\n };\n this.events[key] ? this.events[key].add(item) : this.events[key] = new Set([item]);\n return function () {\n _this2.events[key].delete(item);\n };\n };\n\n return Events;\n}();\n\n\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/_utils/miniappEnvApp.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/_utils/miniappEnvApp.js ***!\n \\*********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/ali-miniapp/createAudioContext.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/ali-miniapp/createAudioContext.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/audio/es/_utils/miniappEnvApp.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.createInnerAudioContext() : my.createInnerAudioContext();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/ali-miniapp/index.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/ali-miniapp/index.js ***!\n \\******************************************************/\n/*! exports provided: createAudioContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAudioContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAudioContext */ \"../dist/lib/@uni/audio/es/ali-miniapp/createAudioContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createAudioContext\", function() { return _createAudioContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAudioContext: _createAudioContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/baidu-smartprogram/createAudioContext.js\":\n/*!**************************************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/baidu-smartprogram/createAudioContext.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return swan.createInnerAudioContext();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/baidu-smartprogram/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/baidu-smartprogram/index.js ***!\n \\*************************************************************/\n/*! exports provided: createAudioContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAudioContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAudioContext */ \"../dist/lib/@uni/audio/es/baidu-smartprogram/createAudioContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createAudioContext\", function() { return _createAudioContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAudioContext: _createAudioContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/bytedance-microapp/createAudioContext.js\":\n/*!**************************************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/bytedance-microapp/createAudioContext.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return tt.createInnerAudioContext();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/bytedance-microapp/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/bytedance-microapp/index.js ***!\n \\*************************************************************/\n/*! exports provided: createAudioContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAudioContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAudioContext */ \"../dist/lib/@uni/audio/es/bytedance-microapp/createAudioContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createAudioContext\", function() { return _createAudioContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAudioContext: _createAudioContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/index.js\":\n/*!******************************************!*\\\n !*** ../dist/lib/@uni/audio/es/index.js ***!\n \\******************************************/\n/*! exports provided: createAudioContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createAudioContext\", function() { return createAudioContext; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/audio/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/audio/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/audio/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/audio/es/bytedance-microapp/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/audio/es/baidu-smartprogram/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/audio/es/kuaishou-miniprogram/index.js\");\n\n\n\n\n\n\n\nvar createAudioContext = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].createAudioContext();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].createAudioContext();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createAudioContext(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].createAudioContext();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].createAudioContext();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].createAudioContext();\n } else {\n throw new Error('@uni/apis:createInnerAudioContext暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAudioContext: createAudioContext\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/kuaishou-miniprogram/createAudioContext.js\":\n/*!****************************************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/kuaishou-miniprogram/createAudioContext.js ***!\n \\****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return ks.createInnerAudioContext();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/kuaishou-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/kuaishou-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: createAudioContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAudioContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAudioContext */ \"../dist/lib/@uni/audio/es/kuaishou-miniprogram/createAudioContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createAudioContext\", function() { return _createAudioContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAudioContext: _createAudioContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/web/createAudioContext.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/web/createAudioContext.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/event */ \"../dist/lib/@uni/audio/es/_utils/event.js\");\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 return Constructor;\n}\n/* eslint-disable */\n// import { AudioContext } from '../types';\n\n\n\n\nvar InnerAudioContext = /*#__PURE__*/function () {\n function InnerAudioContext() {\n var _this = this;\n\n this._singleAudioContext = void 0;\n this._source = void 0;\n this._gainNode = void 0;\n this._src = '';\n this._startTime = 0;\n this._autoplay = false;\n this._buffer = void 0;\n this._events = new _utils_event__WEBPACK_IMPORTED_MODULE_0__[\"default\"]();\n this._isPlaying = false;\n this._currentTime = 0;\n this._timeStamp = 0;\n this._loop = false;\n this._volume = 1;\n this._playbackRate = 1;\n this._eventDeleteCallback = {};\n this._isWaiting = true;\n\n this._start = function (startTime) {\n // 填充音频buffer数据\n // 创建播放对象节点\n _this._source = _this._singleAudioContext.createBufferSource(); // 创建音量节点(如果你需要用调整音量大小的话)\n\n _this._gainNode = _this._singleAudioContext.createGain(); // this.addEventListener('onPaly', this.onPaly);\n\n _this._source.buffer = _this._buffer; // console.log('buffer', this._buffer);\n\n _this._source.loop = _this._loop;\n _this._source.playbackRate.value = _this._playbackRate;\n _this._gainNode.gain.value = _this._volume;\n\n _this._source.onended = function () {\n return _this._events.emit('onEnded');\n }; // 连接节点对象\n\n\n _this._source.connect(_this._gainNode);\n\n _this._gainNode.connect(_this._singleAudioContext.destination);\n\n _this._source.start(0, startTime);\n };\n\n this._getData = function () {\n // console.log('get data start', this);\n _this._isWaiting = true;\n\n _this._events.emit('onWaiting');\n\n var xhr = new XMLHttpRequest();\n xhr.open('GET', _this._src, true);\n xhr.responseType = 'arraybuffer';\n\n xhr.onload = function () {\n _this._singleAudioContext.decodeAudioData(xhr.response, function (buffer) {\n _this._buffer = buffer;\n\n _this._events.emit('onCanplay');\n\n _this._isWaiting = false;\n _this.autoplay && _this.play();\n });\n };\n\n xhr.send();\n };\n\n this.play = function () {\n _this._currentTime = _this._currentTime + _this._singleAudioContext.currentTime - _this._timeStamp;\n _this._timeStamp = _this._singleAudioContext.currentTime;\n\n if (!_this._isPlaying) {\n _this._start(_this._startTime);\n\n _this._isPlaying = true;\n }\n\n _this._singleAudioContext.resume().then(function () {\n return _this._events.emit('onPlay');\n }).catch(function (e) {\n if (JSON.stringify(e).indexOf('cannot resume a closed AudioContext') !== -1) {\n _this._events.emit('onError', 'cannot resume a closed AudioContext');\n\n return;\n } // console.log(e);\n\n\n _this._events.emit('onError', e);\n }); // console.log('currentTime', this.currentTime);\n\n };\n\n this.pause = function () {\n _this._singleAudioContext.suspend().then(function () {\n return _this._events.emit('onPause');\n }).catch(function (e) {\n // console.log(e);\n _this._events.emit('onError', e);\n });\n\n _this._currentTime = _this._currentTime + _this._singleAudioContext.currentTime - _this._timeStamp;\n _this._timeStamp = _this._singleAudioContext.currentTime; // console.log('currentTime', this.currentTime);\n };\n\n this.stop = function () {\n try {\n _this._source.stop(0);\n\n _this._currentTime = _this._currentTime + _this._singleAudioContext.currentTime - _this._timeStamp;\n _this._timeStamp = _this._singleAudioContext.currentTime;\n _this._isPlaying = false;\n\n _this._events.emit('onStop');\n\n !_this._isWaiting && _this._events.emit('onCanplay');\n _this._currentTime = _this.startTime;\n _this._timeStamp = _this._singleAudioContext.currentTime; // console.log('currentTime', this.currentTime);\n } catch (e) {\n _this._events.emit('onError', e);\n }\n };\n\n this.seek = function (value) {\n try {\n _this._events.emit('onSeeking');\n\n value = value < 0 ? 0 : value;\n value = value > _this.duration ? _this.duration : value;\n _this._isPlaying = false;\n\n _this._source.stop(0);\n\n _this._start(value);\n\n _this._isPlaying = true;\n\n _this._events.emit('onSeeked');\n\n _this._currentTime = value;\n _this._timeStamp = _this._singleAudioContext.currentTime; // console.log('currentTime', this.currentTime);\n } catch (e) {\n _this._events.emit('onError', e);\n }\n };\n\n this.destroy = function () {\n _this._singleAudioContext.close().then(function () {\n return _this._events.emit('onDestroy');\n }).catch(function (e) {\n // console.log(e);\n _this._events.emit('onError', e);\n });\n };\n\n this.onCanplay = function (callback) {\n if (callback === void 0) {\n callback = function () {};\n }\n\n _this._eventDeleteCallback[callback.toString()] = _this._events.register('onCanplay', function (e) {\n // console.log('onCanplay');\n callback(e);\n });\n };\n\n this.offCanplay = function (callback) {\n if (!callback) {\n var _this$_events$events, _this$_events$events$;\n\n (_this$_events$events = _this._events.events) == null ? void 0 : (_this$_events$events$ = _this$_events$events.onCanplay) == null ? void 0 : _this$_events$events$.clear();\n return;\n }\n\n _this._eventDeleteCallback[callback.toString()] && _this._eventDeleteCallback[callback.toString()]();\n };\n\n this.onPlay = function (callback) {\n if (callback === void 0) {\n callback = function () {};\n }\n\n _this._eventDeleteCallback[callback.toString()] = _this._events.register('onPlay', function (e) {\n // console.log('onPlay');\n callback(e);\n });\n };\n\n this.offPlay = function (callback) {\n if (!callback) {\n var _this$_events$events2, _this$_events$events3;\n\n (_this$_events$events2 = _this._events.events) == null ? void 0 : (_this$_events$events3 = _this$_events$events2.onPlay) == null ? void 0 : _this$_events$events3.clear();\n return;\n }\n\n _this._eventDeleteCallback[callback.toString()] && _this._eventDeleteCallback[callback.toString()]();\n };\n\n this.onPause = function (callback) {\n if (callback === void 0) {\n callback = function () {};\n }\n\n _this._eventDeleteCallback[callback.toString()] = _this._events.register('onPause', function (e) {\n // console.log('onPause');\n callback(e);\n });\n };\n\n this.offPause = function (callback) {\n if (!callback) {\n var _this$_events$events4, _this$_events$events5;\n\n (_this$_events$events4 = _this._events.events) == null ? void 0 : (_this$_events$events5 = _this$_events$events4.onPause) == null ? void 0 : _this$_events$events5.clear();\n return;\n }\n\n _this._eventDeleteCallback[callback.toString()] && _this._eventDeleteCallback[callback.toString()]();\n };\n\n this.onStop = function (callback) {\n if (callback === void 0) {\n callback = function () {};\n }\n\n _this._eventDeleteCallback[callback.toString()] = _this._events.register('onStop', function (e) {\n // console.log('onStop');\n callback(e);\n });\n };\n\n this.offStop = function (callback) {\n if (!callback) {\n var _this$_events$events6, _this$_events$events7;\n\n (_this$_events$events6 = _this._events.events) == null ? void 0 : (_this$_events$events7 = _this$_events$events6.onStop) == null ? void 0 : _this$_events$events7.clear();\n return;\n }\n\n _this._eventDeleteCallback[callback.toString()] && _this._eventDeleteCallback[callback.toString()]();\n };\n\n this.onEnded = function (callback) {\n if (callback === void 0) {\n callback = function () {};\n }\n\n _this._eventDeleteCallback[callback.toString()] = _this._events.register('onEnded', function (e) {\n // console.log('onEnded');\n callback(e);\n });\n };\n\n this.offEnded = function (callback) {\n if (!callback) {\n var _this$_events$events8, _this$_events$events9;\n\n (_this$_events$events8 = _this._events.events) == null ? void 0 : (_this$_events$events9 = _this$_events$events8.onEnded) == null ? void 0 : _this$_events$events9.clear();\n return;\n }\n\n _this._eventDeleteCallback[callback.toString()] && _this._eventDeleteCallback[callback.toString()]();\n };\n\n this.onError = function (callback) {\n if (callback === void 0) {\n callback = function () {};\n }\n\n _this._eventDeleteCallback[callback.toString()] = _this._events.register('onError', function (e) {\n // console.log('onError222');\n callback(e);\n });\n };\n\n this.offError = function (callback) {\n if (!callback) {\n var _this$_events$events10, _this$_events$events11;\n\n (_this$_events$events10 = _this._events.events) == null ? void 0 : (_this$_events$events11 = _this$_events$events10.onError) == null ? void 0 : _this$_events$events11.clear();\n return;\n }\n\n _this._eventDeleteCallback[callback.toString()] && _this._eventDeleteCallback[callback.toString()]();\n };\n\n this.onWaiting = function (callback) {\n if (callback === void 0) {\n callback = function () {};\n }\n\n _this._eventDeleteCallback[callback.toString()] = _this._events.register('onWaiting', function (e) {\n // console.log('onWaiting');\n callback(e);\n });\n };\n\n this.offWaiting = function (callback) {\n if (!callback) {\n var _this$_events$events12, _this$_events$events13;\n\n (_this$_events$events12 = _this._events.events) == null ? void 0 : (_this$_events$events13 = _this$_events$events12.onWaiting) == null ? void 0 : _this$_events$events13.clear();\n return;\n }\n\n _this._eventDeleteCallback[callback.toString()] && _this._eventDeleteCallback[callback.toString()]();\n };\n\n this.onSeeking = function (callback) {\n if (callback === void 0) {\n callback = function () {};\n }\n\n _this._eventDeleteCallback[callback.toString()] = _this._events.register('onSeeking', function (e) {\n // console.log('onSeeking');\n callback(e);\n });\n };\n\n this.offSeeking = function (callback) {\n if (!callback) {\n var _this$_events$events14, _this$_events$events15;\n\n (_this$_events$events14 = _this._events.events) == null ? void 0 : (_this$_events$events15 = _this$_events$events14.onSeeking) == null ? void 0 : _this$_events$events15.clear();\n return;\n }\n\n _this._eventDeleteCallback[callback.toString()] && _this._eventDeleteCallback[callback.toString()]();\n };\n\n this.onSeeked = function (callback) {\n if (callback === void 0) {\n callback = function () {};\n }\n\n _this._eventDeleteCallback[callback.toString()] = _this._events.register('onSeeked', function (e) {\n // console.log('onSeeked');\n callback(e);\n });\n };\n\n this.offSeeked = function (callback) {\n if (!callback) {\n var _this$_events$events16, _this$_events$events17;\n\n (_this$_events$events16 = _this._events.events) == null ? void 0 : (_this$_events$events17 = _this$_events$events16.onSeeked) == null ? void 0 : _this$_events$events17.clear();\n return;\n }\n\n _this._eventDeleteCallback[callback.toString()] && _this._eventDeleteCallback[callback.toString()]();\n }; // super();\n\n\n var AudioContext = window.AudioContext || window.webkitAudioContext;\n var singleAudioContext = new AudioContext();\n this._singleAudioContext = singleAudioContext; // 创建播放对象节点\n\n this._source = this._singleAudioContext.createBufferSource(); // 创建音量节点(如果你需要用调整音量大小的话)\n\n this._gainNode = this._singleAudioContext.createGain();\n }\n\n _createClass(InnerAudioContext, [{\n key: \"src\",\n get: function () {\n return this._src;\n },\n set: function (value) {\n this._src = value;\n\n this._getData();\n }\n }, {\n key: \"startTime\",\n get: function () {\n return this._startTime;\n },\n set: function (value) {\n this._startTime = value;\n }\n }, {\n key: \"autoplay\",\n get: function () {\n return this._autoplay;\n },\n set: function (value) {\n this._autoplay = value;\n }\n }, {\n key: \"loop\",\n get: function () {\n var _this$_source;\n\n return ((_this$_source = this._source) == null ? void 0 : _this$_source.loop) || this._loop;\n },\n set: function (value) {\n this._source.loop = value;\n this._loop = value;\n }\n }, {\n key: \"duration\",\n get: function () {\n var _this$_buffer;\n\n return ((_this$_buffer = this._buffer) == null ? void 0 : _this$_buffer.duration) || 0;\n }\n }, {\n key: \"currentTime\",\n get: function () {\n var res = this._currentTime + this._singleAudioContext.currentTime - this._timeStamp;\n\n while (res > this.duration) {\n res = res - this.duration;\n }\n\n this._currentTime = res;\n this._timeStamp = this._singleAudioContext.currentTime;\n return this._currentTime;\n }\n }, {\n key: \"paused\",\n get: function () {\n return this._singleAudioContext.state === 'suspended';\n }\n }, {\n key: \"volume\",\n get: function () {\n var _this$_gainNode, _this$_gainNode$gain;\n\n return ((_this$_gainNode = this._gainNode) == null ? void 0 : (_this$_gainNode$gain = _this$_gainNode.gain) == null ? void 0 : _this$_gainNode$gain.value) || this._volume;\n },\n set: function (value) {\n this._gainNode.gain.value = value;\n this._volume = value;\n }\n }, {\n key: \"playbackRate\",\n get: function () {\n var _this$_source2, _this$_source2$playba;\n\n return ((_this$_source2 = this._source) == null ? void 0 : (_this$_source2$playba = _this$_source2.playbackRate) == null ? void 0 : _this$_source2$playba.value) || this._playbackRate;\n },\n set: function (value) {\n this._source.playbackRate.value = value;\n this._playbackRate = value;\n }\n }]);\n\n return InnerAudioContext;\n}(); // 创建audio\n\n\nvar createInnerAudioContext = function () {\n var singleInnerAudioContext = new InnerAudioContext();\n return singleInnerAudioContext;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createInnerAudioContext);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/web/index.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/audio/es/web/index.js ***!\n \\**********************************************/\n/*! exports provided: createAudioContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAudioContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAudioContext */ \"../dist/lib/@uni/audio/es/web/createAudioContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createAudioContext\", function() { return _createAudioContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAudioContext: _createAudioContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/wechat-miniprogram/createAudioContext.js\":\n/*!**************************************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/wechat-miniprogram/createAudioContext.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (args) {\n return wx.createInnerAudioContext(args);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/audio/es/wechat-miniprogram/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/audio/es/wechat-miniprogram/index.js ***!\n \\*************************************************************/\n/*! exports provided: createAudioContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createAudioContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createAudioContext */ \"../dist/lib/@uni/audio/es/wechat-miniprogram/createAudioContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createAudioContext\", function() { return _createAudioContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createAudioContext: _createAudioContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/authorize/es/_utils/constant.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/authorize/es/_utils/constant.js ***!\n \\********************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/authorize/es/_utils/promisify.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/authorize/es/_utils/promisify.js ***!\n \\*********************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/authorize/es/_utils/styleOptions.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/authorize/es/_utils/styleOptions.js ***!\n \\************************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/authorize/es/ali-miniapp/index.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/authorize/es/ali-miniapp/index.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/authorize/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/authorize/es/_utils/constant.js\");\n\n\n\nfunction authorize(options) {\n var scope = options.scope,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n var scopeMap = {\n auth_base: 'auth_base',\n auth_zhima: 'auth_zhima'\n };\n return my.getAuthCode({\n scopes: scopeMap[scope] ? scopeMap[scope] : 'auth_user',\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(authorize, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/authorize/es/baidu-smartprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/authorize/es/baidu-smartprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/authorize/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/authorize/es/_utils/constant.js\");\n\n\n\nfunction authorize(options) {\n var scope = options.scope,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return swan.authorize({\n scope: scope,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(authorize, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/authorize/es/bytedance-microapp/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/authorize/es/bytedance-microapp/index.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/authorize/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/authorize/es/_utils/constant.js\");\n\n\n\nfunction authorize(options) {\n var scope = options.scope,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n var scopeMap = {\n 'scope.writePhotosAlbum': 'scope.album'\n };\n return tt.authorize({\n scope: scopeMap[scope] ? scopeMap[scope] : scope,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(authorize, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/authorize/es/common.js\":\n/*!***********************************************!*\\\n !*** ../dist/lib/@uni/authorize/es/common.js ***!\n \\***********************************************/\n/*! exports provided: styleOptions, normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOptions\", function() { return styleOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/authorize/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/authorize/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n/* eslint-disable @typescript-eslint/no-shadow */\n\n/* eslint-disable @typescript-eslint/no-invalid-void-type */\n\n/* eslint-disable no-empty */\n\n\n\n\nfunction styleOptions(options) {\n var afterOptions = _extends({}, {\n scope: 'auth_base'\n }, options);\n\n return afterOptions;\n}\nfunction normalize(api, containerName) {\n return function (options) {\n var afterOptions = styleOptions(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName));\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(afterOptions);\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/authorize/es/index.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/authorize/es/index.js ***!\n \\**********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/authorize/es/web/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/authorize/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/authorize/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/authorize/es/bytedance-microapp/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/authorize/es/baidu-smartprogram/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/authorize/es/kuaishou-miniprogram/index.js\");\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return Object(_web_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return Object(_kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return Object(_wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return Object(_bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return Object(_ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return Object(_baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(options);\n } else {\n throw new Error('Uni API:authorize暂不支持');\n }\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/authorize/es/kuaishou-miniprogram/index.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/authorize/es/kuaishou-miniprogram/index.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/authorize/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/authorize/es/_utils/constant.js\");\n\n\n\nfunction authorize(options) {\n var scope = options.scope,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return ks.authorize({\n scope: scope,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(authorize, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/authorize/es/web/index.js\":\n/*!**************************************************!*\\\n !*** ../dist/lib/@uni/authorize/es/web/index.js ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* eslint-disable no-mixed-operators */\n\n/* eslint-disable @typescript-eslint/no-shadow */\nfunction authorize() {\n throw new Error('Uni API:authorize web 暂不支持');\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (authorize);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/authorize/es/wechat-miniprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/authorize/es/wechat-miniprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/authorize/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/authorize/es/_utils/constant.js\");\n\n\n\nfunction authorize(options) {\n var scope = options.scope,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return wx.authorize({\n scope: scope,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(authorize, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/caniuse/es/_utils/miniappEnvApp.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/caniuse/es/_utils/miniappEnvApp.js ***!\n \\***********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/caniuse/es/index.js\":\n/*!********************************************!*\\\n !*** ../dist/lib/@uni/caniuse/es/index.js ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/miniappEnvApp */ \"../dist/lib/@uni/caniuse/es/_utils/miniappEnvApp.js\");\n/* eslint-disable @typescript-eslint/no-shadow */\n\n // 按wechat、bytedance、dd、支付宝、web、kuaishou、baidu的方式,不支持的端相应位数置0即可\n\nvar supportInfo = {\n application: {\n support: 1111111,\n getApp: {\n support: 1111111\n },\n getCurrentPages: {\n support: 1111111\n },\n getLaunchOptionsSync: {\n support: 1111110\n },\n onError: {\n support: 1111101\n },\n offError: {\n support: 1111101\n },\n onUnhandledRejection: {\n support: 1111110\n },\n offUnhandledRejection: {\n support: 1111110\n }\n },\n canvas: {\n support: 1111111,\n createContext: {\n support: 1111111\n }\n },\n accelerometer: {\n support: 1111011,\n onChange: {\n support: 1111011\n },\n offChange: {\n support: 1111011\n }\n },\n clipboard: {\n support: 1111111,\n getClipboard: {\n support: 1111011\n },\n setClipboard: {\n support: 1111111\n }\n },\n 'system-info': {\n support: 1111111,\n getInfo: {\n support: 1111111\n },\n getInfoSync: {\n support: 1111111\n }\n },\n file: {\n support: 1111111,\n getInfo: {\n support: 1111011\n },\n getSavedInfo: {\n support: 1111011\n },\n getSavedList: {\n support: 1111011\n },\n openDocument: {\n support: 1111011\n },\n removeSaved: {\n support: 1111011\n },\n save: {\n support: 1111011\n },\n download: {\n support: 1111011\n },\n upload: {\n support: 1111111\n }\n },\n 'action-sheet': {\n support: 1111111\n },\n alert: {\n support: 1111111\n },\n animation: {\n support: 1111101\n },\n toast: {\n support: 1111111\n },\n loading: {\n support: 1111111,\n showLoading: {\n support: 1111111\n },\n hideLoading: {\n support: 1111111\n }\n },\n 'pull-down-refresh': {\n support: 1111111,\n startPullDownRefresh: {\n support: 1111111\n },\n stopPullDownRefresh: {\n support: 1111111\n }\n },\n element: {\n support: 1111111\n },\n 'insection-observer': {\n support: 1111101\n },\n confirm: {\n support: 1111111\n },\n location: {\n support: 1111111,\n getLocation: {\n support: 1111111\n },\n openLocation: {\n support: 1111011\n }\n },\n image: {\n support: 1111111,\n chooseImage: {\n support: 1111111\n },\n compressImage: {\n support: 1111011\n },\n getImageInfo: {\n support: 1111111\n },\n previewImage: {\n support: 1111011\n },\n saveImage: {\n support: 1111011\n }\n },\n navigate: {\n support: 1111111,\n push: {\n support: 1111111\n },\n back: {\n support: 1111111\n },\n replace: {\n support: 1111111\n },\n reLaunch: {\n support: 1111111\n },\n go: {\n support: 1111111\n }\n },\n request: {\n support: 1111111\n },\n storage: {\n support: 1111111,\n getStorage: {\n support: 1111111\n },\n setStorage: {\n support: 1111111\n },\n removeStorage: {\n support: 1111111\n },\n getStorageSync: {\n support: 1111111\n },\n setStorageSync: {\n support: 1111111\n },\n removeStorageSync: {\n support: 1111111\n }\n }\n};\n\nvar canIUse = function canIUse(platform, api, supportInfo) {\n var apiName = api.split('.')[0];\n\n if (!apiName || !supportInfo[apiName]) {\n return false;\n }\n\n var rest = api.split('.').slice(1).join('.');\n\n if (rest.length) {\n return canIUse(platform, rest, supportInfo[apiName]);\n }\n\n if ((\"\" + supportInfo[apiName].support)[platform] !== '0') {\n return true;\n }\n\n return false;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (apiName) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return canIUse(4, apiName, supportInfo);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return canIUse(5, apiName, supportInfo);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return canIUse(0, apiName, supportInfo);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return canIUse(1, apiName, supportInfo);\n } else if (_utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_1__[\"isDingdingMiniapp\"]) {\n return canIUse(2, apiName, supportInfo);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return canIUse(3, apiName, supportInfo);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return canIUse(6, apiName, supportInfo);\n } else {\n return false;\n }\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/_utils/constant.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/_utils/constant.js ***!\n \\*****************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/_utils/styleOptions.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/_utils/styleOptions.js ***!\n \\*********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/ali-miniapp/createContext.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/ali-miniapp/createContext.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/canvas/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/canvas/es/_utils/constant.js\");\n\n\nvar createContext = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (canvasOptions) {\n var canvasId = canvasOptions.canvasId;\n return new Promise(function (resolve) {\n var canvasContext = my.createCanvasContext(canvasId);\n var _clearRect = canvasContext.clearRect;\n\n canvasContext.clearRect = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _clearRect.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _fill = canvasContext.fill;\n\n canvasContext.fill = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _fill.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _fillRect = canvasContext.fillRect;\n\n canvasContext.fillRect = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n _fillRect.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _fillText = canvasContext.fillText;\n\n canvasContext.fillText = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n _fillText.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _stroke = canvasContext.stroke;\n\n canvasContext.stroke = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n _stroke.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _strokeRect = canvasContext.strokeRect;\n\n canvasContext.strokeRect = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n _strokeRect.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _strokeText = canvasContext.strokeText;\n\n canvasContext.strokeText = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n _strokeText.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n Object.defineProperty(canvasContext, 'fillStyle', {\n get: function () {\n return canvasContext.setFillStyle;\n },\n set: function (value) {\n canvasContext.setFillStyle(value);\n }\n });\n resolve(canvasContext);\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (createContext);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/ali-miniapp/index.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/ali-miniapp/index.js ***!\n \\*******************************************************/\n/*! exports provided: createContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createContext */ \"../dist/lib/@uni/canvas/es/ali-miniapp/createContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createContext\", function() { return _createContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createContext: _createContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/baidu-smartprogram/createContext.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/baidu-smartprogram/createContext.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/canvas/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/canvas/es/_utils/constant.js\");\n\n\nvar createContext = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (canvasOptions) {\n var canvasId = canvasOptions.canvasId;\n return new Promise(function (resolve) {\n var canvasContext = swan.createCanvasContext(canvasId);\n var _clearRect = canvasContext.clearRect;\n\n canvasContext.clearRect = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _clearRect.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _fill = canvasContext.fill;\n\n canvasContext.fill = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _fill.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _fillRect = canvasContext.fillRect;\n\n canvasContext.fillRect = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n _fillRect.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _fillText = canvasContext.fillText;\n\n canvasContext.fillText = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n _fillText.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _stroke = canvasContext.stroke;\n\n canvasContext.stroke = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n _stroke.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _strokeRect = canvasContext.strokeRect;\n\n canvasContext.strokeRect = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n _strokeRect.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _strokeText = canvasContext.strokeText;\n\n canvasContext.strokeText = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n _strokeText.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n Object.defineProperty(canvasContext, 'fillStyle', {\n get: function () {\n return canvasContext.setFillStyle;\n },\n set: function (value) {\n canvasContext.setFillStyle(value);\n }\n });\n Object.defineProperty(canvasContext, 'strokeStyle', {\n get: function () {\n return canvasContext.setStrokeStyle;\n },\n set: function (value) {\n canvasContext.setStrokeStyle(value);\n }\n });\n Object.defineProperty(canvasContext, 'fontSize', {\n get: function () {\n return canvasContext.setFontSize;\n },\n set: function (value) {\n canvasContext.setFontSize(value);\n }\n });\n Object.defineProperty(canvasContext, 'globalAlpha', {\n get: function () {\n return canvasContext.setGlobalAlpha;\n },\n set: function (value) {\n canvasContext.setGlobalAlpha(value);\n }\n });\n Object.defineProperty(canvasContext, 'lineWidth', {\n get: function () {\n return canvasContext.setLineWidth;\n },\n set: function (value) {\n canvasContext.setLineWidth(value);\n }\n });\n Object.defineProperty(canvasContext, 'lineCap', {\n get: function () {\n return canvasContext.setLineCap;\n },\n set: function (value) {\n canvasContext.setLineCap(value);\n }\n });\n Object.defineProperty(canvasContext, 'lineJoin', {\n get: function () {\n return canvasContext.setLineJoin;\n },\n set: function (value) {\n canvasContext.setLineJoin(value);\n }\n });\n Object.defineProperty(canvasContext, 'miterLimit', {\n get: function () {\n return canvasContext.setMiterLimit;\n },\n set: function (value) {\n canvasContext.setMiterLimit(value);\n }\n });\n Object.defineProperty(canvasContext, 'textAlign', {\n get: function () {\n return canvasContext.setTextAlign;\n },\n set: function (value) {\n canvasContext.setTextAlign(value);\n }\n });\n Object.defineProperty(canvasContext, 'textBaseLine', {\n get: function () {\n return canvasContext.setTextBaseLine;\n },\n set: function (value) {\n canvasContext.setTextBaseLine(value);\n }\n });\n resolve(canvasContext);\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (createContext);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/baidu-smartprogram/index.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/baidu-smartprogram/index.js ***!\n \\**************************************************************/\n/*! exports provided: createContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createContext */ \"../dist/lib/@uni/canvas/es/baidu-smartprogram/createContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createContext\", function() { return _createContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createContext: _createContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/bytedance-microapp/createContext.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/bytedance-microapp/createContext.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/canvas/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/canvas/es/_utils/constant.js\");\n\n\nvar createContext = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (canvasOptions) {\n var canvasId = canvasOptions.canvasId,\n _canvasOptions$type = canvasOptions.type,\n type = _canvasOptions$type === void 0 ? '2d' : _canvasOptions$type,\n options = canvasOptions.options;\n return new Promise(function (resolve, reject) {\n var query = tt.createSelectorQuery();\n query.select(\"#\" + canvasId).node().exec(function (res) {\n if (!res[0] || !res[0].node) reject(new Error('The canvas node may not exist.'));\n var canvasNode = res[0].node;\n var canvasContext = canvasNode.getContext(type, options); // For fallback\n\n var _clearRect = canvasContext.clearRect;\n\n canvasContext.clearRect = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _clearRect.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _fill = canvasContext.fill;\n\n canvasContext.fill = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _fill.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _fillRect = canvasContext.fillRect;\n\n canvasContext.fillRect = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n _fillRect.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _fillText = canvasContext.fillText;\n\n canvasContext.fillText = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n _fillText.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _stroke = canvasContext.stroke;\n\n canvasContext.stroke = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n _stroke.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _strokeRect = canvasContext.strokeRect;\n\n canvasContext.strokeRect = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n _strokeRect.apply(canvasContext, args);\n\n canvasContext.draw(true);\n }; // 字节没有该方法\n // const _strokeText = canvasContext.strokeText;\n // canvasContext.strokeText = (...args) => {\n // _strokeText.apply(canvasContext, args);\n // canvasContext.draw(true);\n // };\n\n\n Object.defineProperty(canvasContext, 'fillStyle', {\n get: function () {\n return canvasContext.setFillStyle;\n },\n set: function (value) {\n canvasContext.setFillStyle(value);\n }\n });\n Object.defineProperty(canvasContext, 'strokeStyle', {\n get: function () {\n return canvasContext.setStrokeStyle;\n },\n set: function (value) {\n canvasContext.setStrokeStyle(value);\n }\n });\n Object.defineProperty(canvasContext, 'fontSize', {\n get: function () {\n return canvasContext.setFontSize;\n },\n set: function (value) {\n canvasContext.setFontSize(value);\n }\n });\n Object.defineProperty(canvasContext, 'globalAlpha', {\n get: function () {\n return canvasContext.setGlobalAlpha;\n },\n set: function (value) {\n canvasContext.setGlobalAlpha(value);\n }\n });\n Object.defineProperty(canvasContext, 'lineWidth', {\n get: function () {\n return canvasContext.setLineWidth;\n },\n set: function (value) {\n canvasContext.setLineWidth(value);\n }\n });\n Object.defineProperty(canvasContext, 'lineCap', {\n get: function () {\n return canvasContext.setLineCap;\n },\n set: function (value) {\n canvasContext.setLineCap(value);\n }\n });\n Object.defineProperty(canvasContext, 'lineJoin', {\n get: function () {\n return canvasContext.setLineJoin;\n },\n set: function (value) {\n canvasContext.setLineJoin(value);\n }\n });\n Object.defineProperty(canvasContext, 'miterLimit', {\n get: function () {\n return canvasContext.setMiterLimit;\n },\n set: function (value) {\n canvasContext.setMiterLimit(value);\n }\n });\n Object.defineProperty(canvasContext, 'textAlign', {\n get: function () {\n return canvasContext.setTextAlign;\n },\n set: function (value) {\n canvasContext.setTextAlign(value);\n }\n });\n Object.defineProperty(canvasContext, 'textBaseLine', {\n get: function () {\n return canvasContext.setTextBaseLine;\n },\n set: function (value) {\n canvasContext.setTextBaseLine(value);\n }\n });\n resolve(canvasContext);\n });\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (createContext);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/bytedance-microapp/index.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/bytedance-microapp/index.js ***!\n \\**************************************************************/\n/*! exports provided: createContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createContext */ \"../dist/lib/@uni/canvas/es/bytedance-microapp/createContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createContext\", function() { return _createContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createContext: _createContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/common.js\":\n/*!********************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/common.js ***!\n \\********************************************/\n/*! exports provided: normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/canvas/es/_utils/styleOptions.js\");\n\nfunction normalize(api, containerName) {\n return function (options) {\n var afterOptions = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(options, containerName);\n return api(afterOptions);\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/index.js\":\n/*!*******************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/index.js ***!\n \\*******************************************/\n/*! exports provided: createContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createContext\", function() { return createContext; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/canvas/es/web/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/canvas/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/canvas/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/canvas/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/canvas/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/canvas/es/baidu-smartprogram/index.js\");\n// eslint-disable-next-line import/no-extraneous-dependencies\n\n\n\n\n\n\n\nvar createContext = function (canvasOptions) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_1__[\"createContext\"](canvasOptions);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"createContext\"](canvasOptions);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"createContext\"](canvasOptions);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"createContext\"](canvasOptions);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__[\"createContext\"](canvasOptions);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"createContext\"](canvasOptions);\n } else {\n throw new Error('@uni:canvas暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createContext: createContext\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/kuaishou-miniprogram/createContext.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/kuaishou-miniprogram/createContext.js ***!\n \\************************************************************************/\n/*! exports provided: createContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createContext\", function() { return createContext; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/canvas/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/canvas/es/_utils/constant.js\");\n\n\nvar createContext = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (canvasOptions) {\n // 使用微信的 getContext 方法可以获取 CanvasRenderingContext2D,对齐html canvas 2d context\n var canvasId = canvasOptions.canvasId,\n _canvasOptions$type = canvasOptions.type,\n type = _canvasOptions$type === void 0 ? '2d' : _canvasOptions$type,\n _canvasOptions$contex = canvasOptions.context,\n context = _canvasOptions$contex === void 0 ? ks : _canvasOptions$contex,\n options = canvasOptions.options;\n return new Promise(function (resolve, reject) {\n var query = context.createSelectorQuery();\n query.select(\"#\" + canvasId).fields({\n node: true,\n size: true\n }).exec(function (res) {\n if (!res[0] || !res[0].node) reject(new Error('The canvas node may not exist.'));\n var canvasNode = res[0].node;\n var canvasContext = canvasNode.getContext(type, options); // For fallback\n // context.draw = function() {};\n\n var _clearRect = canvasContext.clearRect;\n\n canvasContext.clearRect = function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _clearRect.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _fill = canvasContext.fill;\n\n canvasContext.fill = function () {\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n _fill.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _fillRect = canvasContext.fillRect;\n\n canvasContext.fillRect = function () {\n for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n _fillRect.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _fillText = canvasContext.fillText;\n\n canvasContext.fillText = function () {\n for (var _len4 = arguments.length, args = new Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n _fillText.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _stroke = canvasContext.stroke;\n\n canvasContext.stroke = function () {\n for (var _len5 = arguments.length, args = new Array(_len5), _key5 = 0; _key5 < _len5; _key5++) {\n args[_key5] = arguments[_key5];\n }\n\n _stroke.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _strokeRect = canvasContext.strokeRect;\n\n canvasContext.strokeRect = function () {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n _strokeRect.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n var _strokeText = canvasContext.strokeText;\n\n canvasContext.strokeText = function () {\n for (var _len7 = arguments.length, args = new Array(_len7), _key7 = 0; _key7 < _len7; _key7++) {\n args[_key7] = arguments[_key7];\n }\n\n _strokeText.apply(canvasContext, args);\n\n canvasContext.draw(true);\n };\n\n resolve(canvasContext);\n });\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (createContext); // export default () => {};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/kuaishou-miniprogram/index.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/kuaishou-miniprogram/index.js ***!\n \\****************************************************************/\n/*! exports provided: createContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createContext */ \"../dist/lib/@uni/canvas/es/kuaishou-miniprogram/createContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createContext\", function() { return _createContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createContext: _createContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/web/createContext.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/web/createContext.js ***!\n \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/canvas/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/canvas/es/_utils/constant.js\");\n\n\nvar createContext = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (canvasOptions) {\n var canvasId = canvasOptions.canvasId,\n _canvasOptions$type = canvasOptions.type,\n type = _canvasOptions$type === void 0 ? '2d' : _canvasOptions$type,\n options = canvasOptions.options;\n return new Promise(function (resolve, reject) {\n var canvasNode = document.getElementById(canvasId);\n if (!canvasNode) reject(new Error('The canvas node may not exist.'));\n var context = canvasNode.getContext(type, options); // For fallback\n\n context.draw = function () {};\n\n resolve(context);\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (createContext);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/web/index.js\":\n/*!***********************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/web/index.js ***!\n \\***********************************************/\n/*! exports provided: createContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createContext */ \"../dist/lib/@uni/canvas/es/web/createContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createContext\", function() { return _createContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createContext: _createContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/wechat-miniprogram/createContext.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/wechat-miniprogram/createContext.js ***!\n \\**********************************************************************/\n/*! exports provided: createContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createContext\", function() { return createContext; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/canvas/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/canvas/es/_utils/constant.js\");\n\n\nvar createContext = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (canvasOptions) {\n // 使用微信的 getContext 方法可以获取 CanvasRenderingContext2D,对齐html canvas 2d context\n var canvasId = canvasOptions.canvasId,\n _canvasOptions$type = canvasOptions.type,\n type = _canvasOptions$type === void 0 ? '2d' : _canvasOptions$type,\n _canvasOptions$contex = canvasOptions.context,\n context = _canvasOptions$contex === void 0 ? wx : _canvasOptions$contex,\n options = canvasOptions.options;\n return new Promise(function (resolve, reject) {\n var query = context.createSelectorQuery();\n query.select(\"#\" + canvasId).fields({\n node: true,\n size: true\n }).exec(function (res) {\n if (!res[0] || !res[0].node) reject(new Error('The canvas node may not exist.'));\n var canvasNode = res[0].node;\n var canvasContext = canvasNode.getContext(type, options); // For fallback\n // context.draw = function() {};\n\n resolve(canvasContext);\n });\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (createContext);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/canvas/es/wechat-miniprogram/index.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/canvas/es/wechat-miniprogram/index.js ***!\n \\**************************************************************/\n/*! exports provided: createContext, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _createContext__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./createContext */ \"../dist/lib/@uni/canvas/es/wechat-miniprogram/createContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createContext\", function() { return _createContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createContext: _createContext__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/_utils/constant.js ***!\n \\********************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/_utils/miniappEnvApp.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/_utils/miniappEnvApp.js ***!\n \\*************************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/_utils/promisify.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/_utils/promisify.js ***!\n \\*********************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/_utils/styleOptions.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/_utils/styleOptions.js ***!\n \\************************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/ali-miniapp/getClipboard.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/ali-miniapp/getClipboard.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/clipboard/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/clipboard/es/common.js\");\n\n\n\nvar getClipboard = Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"normalizeGet\"])(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.getClipboard(args) : my.getClipboard(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getClipboard);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/ali-miniapp/index.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/ali-miniapp/index.js ***!\n \\**********************************************************/\n/*! exports provided: getClipboard, setClipboard, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getClipboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getClipboard */ \"../dist/lib/@uni/clipboard/es/ali-miniapp/getClipboard.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getClipboard\", function() { return _getClipboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _setClipboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setClipboard */ \"../dist/lib/@uni/clipboard/es/ali-miniapp/setClipboard.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setClipboard\", function() { return _setClipboard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getClipboard: _getClipboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n setClipboard: _setClipboard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/ali-miniapp/setClipboard.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/ali-miniapp/setClipboard.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/clipboard/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/clipboard/es/common.js\");\n\n\n\nvar setClipboard = Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"normalizeSet\"])(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.setClipboard(args) : my.setClipboard(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setClipboard);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/baidu-smartprogram/getClipboard.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/baidu-smartprogram/getClipboard.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/clipboard/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\");\n\n\nvar getClipboard = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeGet\"])(function (args) {\n return swan.getClipboardData(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getClipboard);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/baidu-smartprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/baidu-smartprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: getClipboard, setClipboard, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getClipboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getClipboard */ \"../dist/lib/@uni/clipboard/es/baidu-smartprogram/getClipboard.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getClipboard\", function() { return _getClipboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _setClipboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setClipboard */ \"../dist/lib/@uni/clipboard/es/baidu-smartprogram/setClipboard.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setClipboard\", function() { return _setClipboard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getClipboard: _getClipboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n setClipboard: _setClipboard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/baidu-smartprogram/setClipboard.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/baidu-smartprogram/setClipboard.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/clipboard/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\");\n\n\nvar setClipboard = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSet\"])(function (args) {\n args.data = args.text;\n delete args.text;\n return swan.setClipboardData(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setClipboard);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/bytedance-microapp/getClipboard.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/bytedance-microapp/getClipboard.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/clipboard/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\");\n\n\nvar getClipboard = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeGet\"])(function (args) {\n return tt.getClipboardData(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getClipboard);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/bytedance-microapp/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/bytedance-microapp/index.js ***!\n \\*****************************************************************/\n/*! exports provided: getClipboard, setClipboard, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getClipboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getClipboard */ \"../dist/lib/@uni/clipboard/es/bytedance-microapp/getClipboard.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getClipboard\", function() { return _getClipboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _setClipboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setClipboard */ \"../dist/lib/@uni/clipboard/es/bytedance-microapp/setClipboard.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setClipboard\", function() { return _setClipboard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getClipboard: _getClipboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n setClipboard: _setClipboard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/bytedance-microapp/setClipboard.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/bytedance-microapp/setClipboard.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/clipboard/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\");\n\n\nvar setClipboard = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSet\"])(function (args) {\n args.data = args.text;\n delete args.text;\n return tt.setClipboardData(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setClipboard);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/common.js\":\n/*!***********************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/common.js ***!\n \\***********************************************/\n/*! exports provided: normalizeGet, normalizeSet */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeGet\", function() { return normalizeGet; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeSet\", function() { return normalizeSet; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/clipboard/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/clipboard/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n/* eslint-disable eqeqeq */\n\n\n\n\n/**\n * actionsheet返回值格式化\n * @param res\n */\n\nvar formatResponse = function (res) {\n return {\n text: res.data != undefined ? res.data : res.text\n };\n};\n/**\n * actionsheet参数格式化\n * @param options\n */\n\n\nfunction styleOptions(options) {\n return options ? _extends({}, options, {\n success: function (res) {\n options.success && options.success(formatResponse(res));\n }\n }) : {};\n}\n\nfunction normalizeGet(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(styleOptions(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName))).then(formatResponse);\n };\n}\nfunction normalizeSet(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/index.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/index.js ***!\n \\**********************************************/\n/*! exports provided: getClipboard, setClipboard, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getClipboard\", function() { return getClipboard; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setClipboard\", function() { return setClipboard; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/clipboard/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/clipboard/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/clipboard/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/clipboard/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/clipboard/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/clipboard/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n // web 暂不支持这个功能\n\nvar getClipboard = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getClipboard(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getClipboard(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getClipboard(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getClipboard(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getClipboard(args);\n } else {\n throw new Error('Uni API:getClipboard暂不支持');\n }\n};\nvar setClipboard = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setClipboard(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].setClipboard(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].setClipboard(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setClipboard(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setClipboard(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].setClipboard(args);\n } else {\n throw new Error('Uni API:setClipboard暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getClipboard: getClipboard,\n setClipboard: setClipboard\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/kuaishou-miniprogram/getClipboard.js\":\n/*!**************************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/kuaishou-miniprogram/getClipboard.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/clipboard/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\");\n\n\nvar getClipboard = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeGet\"])(function (args) {\n return ks.getClipboardData(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getClipboard);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/kuaishou-miniprogram/index.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/kuaishou-miniprogram/index.js ***!\n \\*******************************************************************/\n/*! exports provided: getClipboard, setClipboard, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getClipboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getClipboard */ \"../dist/lib/@uni/clipboard/es/kuaishou-miniprogram/getClipboard.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getClipboard\", function() { return _getClipboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _setClipboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setClipboard */ \"../dist/lib/@uni/clipboard/es/kuaishou-miniprogram/setClipboard.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setClipboard\", function() { return _setClipboard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getClipboard: _getClipboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n setClipboard: _setClipboard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/kuaishou-miniprogram/setClipboard.js\":\n/*!**************************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/kuaishou-miniprogram/setClipboard.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/clipboard/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\");\n\n\nvar setClipboard = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSet\"])(function (args) {\n args.data = args.text;\n delete args.text;\n return ks.setClipboardData(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setClipboard);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/web/getClipboard.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/web/getClipboard.js ***!\n \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/clipboard/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\");\n\n\nvar getClipboard = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeGet\"])(function () {\n throw new Error('Uni API: getClipboard不支持');\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getClipboard);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/web/index.js\":\n/*!**************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/web/index.js ***!\n \\**************************************************/\n/*! exports provided: getClipboard, setClipboard, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getClipboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getClipboard */ \"../dist/lib/@uni/clipboard/es/web/getClipboard.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getClipboard\", function() { return _getClipboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _setClipboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setClipboard */ \"../dist/lib/@uni/clipboard/es/web/setClipboard.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setClipboard\", function() { return _setClipboard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getClipboard: _getClipboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n setClipboard: _setClipboard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/web/setClipboard.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/web/setClipboard.js ***!\n \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/clipboard/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\");\n\n\nvar setClipboard = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSet\"])(function (args) {\n var _ref = args || {},\n _ref$text = _ref.text,\n text = _ref$text === void 0 ? '' : _ref$text,\n _ref$success = _ref.success,\n success = _ref$success === void 0 ? function () {} : _ref$success,\n _ref$fail = _ref.fail,\n fail = _ref$fail === void 0 ? function () {} : _ref$fail,\n _ref$complete = _ref.complete,\n complete = _ref$complete === void 0 ? function () {} : _ref$complete;\n\n var textArea;\n\n var isOS = function () {\n return navigator.userAgent.match(/ipad|iphone/i);\n };\n\n var createTextArea = function () {\n textArea = document.createElement('textArea');\n textArea.value = text;\n document.body.appendChild(textArea);\n };\n\n var selectText = function () {\n var range;\n var selection;\n\n if (isOS()) {\n range = document.createRange();\n range.selectNodeContents(textArea);\n selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n textArea.setSelectionRange(0, 999999);\n } else {\n textArea.select();\n }\n };\n\n var copyToClipboard = function () {\n document.execCommand('copy');\n document.body.removeChild(textArea);\n };\n\n try {\n createTextArea();\n selectText();\n copyToClipboard();\n success(text);\n complete(text);\n return text;\n } catch (error) {\n fail(error);\n complete(text);\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setClipboard);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/wechat-miniprogram/getClipboard.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/wechat-miniprogram/getClipboard.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/clipboard/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\");\n\n\nvar getClipboard = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeGet\"])(function (args) {\n return wx.getClipboardData(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getClipboard);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/wechat-miniprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/wechat-miniprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: getClipboard, setClipboard, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getClipboard__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getClipboard */ \"../dist/lib/@uni/clipboard/es/wechat-miniprogram/getClipboard.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getClipboard\", function() { return _getClipboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _setClipboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setClipboard */ \"../dist/lib/@uni/clipboard/es/wechat-miniprogram/setClipboard.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setClipboard\", function() { return _setClipboard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getClipboard: _getClipboard__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n setClipboard: _setClipboard__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/clipboard/es/wechat-miniprogram/setClipboard.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/clipboard/es/wechat-miniprogram/setClipboard.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/clipboard/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/clipboard/es/_utils/constant.js\");\n\n\nvar setClipboard = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSet\"])(function (args) {\n args.data = args.text;\n delete args.text;\n return wx.setClipboardData(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setClipboard);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/es/_utils/constant.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/confirm/es/_utils/constant.js ***!\n \\******************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/es/_utils/miniappEnvApp.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/confirm/es/_utils/miniappEnvApp.js ***!\n \\***********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/es/_utils/promisify.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/confirm/es/_utils/promisify.js ***!\n \\*******************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/es/_utils/styleOptions.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/confirm/es/_utils/styleOptions.js ***!\n \\**********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/es/ali-miniapp/index.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/confirm/es/ali-miniapp/index.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/confirm/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/confirm/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/confirm/es/common.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\n\nvar confirm = function (args) {\n var params = _extends({}, args, {\n confirmButtonText: args.confirmText,\n cancelButtonText: args.cancelText\n });\n\n _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.confirm(params) : my.confirm(params);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"])(confirm, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/es/baidu-smartprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/confirm/es/baidu-smartprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/confirm/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/confirm/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (args) {\n return swan.showModal(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/es/bytedance-microapp/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/confirm/es/bytedance-microapp/index.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/confirm/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/confirm/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (args) {\n return tt.showModal(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/es/common.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/confirm/es/common.js ***!\n \\*********************************************/\n/*! exports provided: normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/confirm/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/confirm/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n/**\n * @param res\n */\n\nvar formatResponse = function (res) {\n return {\n confirm: res.confirm,\n cancel: !res.confirm\n };\n};\n\nfunction normalize(api, containerName) {\n return function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName);\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(_extends({}, args, {\n title: args.title || '',\n content: args.content || '',\n confirmText: args.confirmText || '确定',\n cancelText: args.cancelText || '取消',\n success: function (res) {\n args.success && args.success(formatResponse(res));\n },\n complete: function (res) {\n args.complete && args.complete(res);\n }\n })).then(formatResponse);\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/es/index.js\":\n/*!********************************************!*\\\n !*** ../dist/lib/@uni/confirm/es/index.js ***!\n \\********************************************/\n/*! exports provided: confirm, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"confirm\", function() { return confirm; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/confirm/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/confirm/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/confirm/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/confirm/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/confirm/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/confirm/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar confirm = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return Object(_web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return Object(_kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return Object(_wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return Object(_bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return Object(_ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return Object(_baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(args);\n } else {\n throw new Error('Uni API:confirm暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (confirm);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/es/kuaishou-miniprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/confirm/es/kuaishou-miniprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/confirm/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/confirm/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (args) {\n return ks.showModal(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/es/web/index.js\":\n/*!************************************************!*\\\n !*** ../dist/lib/@uni/confirm/es/web/index.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/confirm/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/confirm/es/common.js\");\n\n\nvar clsPrefix = '__universal_confirm';\nvar styles = (\".\" + clsPrefix + \" {\\n position: fixed;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n -webkit-transform: translate(-50%, -50%);\\n background: #fff;\\n color: #000;\\n box-sizing: border-box;\\n border-radius: 12px;\\n z-index: 9999;\\n outline: none;\\n text-align: center;\\n width: 280px;\\n opacity: 0;\\n animation-duration: .3s;\\n animation-fill-mode: both;\\n}\\n.\" + clsPrefix + \"_mask {\\n content: \\\"\\\";\\n position: fixed;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n top: 0;\\n margin: auto;\\n display: block;\\n z-index: 9999;\\n background: #000;\\n opacity: 0;\\n animation-duration: .3s;\\n animation-fill-mode: both;\\n}\\n.\" + clsPrefix + \"_title {\\n padding: 28px 16px 16px;\\n font-weight: bold;\\n}\\n.\" + clsPrefix + \"_content {\\n color: #666;\\n padding: 0 16px;\\n margin-bottom: 28px;\\n word-break: break-all;\\n max-height: 200px;\\n overflow: scroll;\\n}\\n.\" + clsPrefix + \"_cancel {\\n display: inline-block;\\n font-weight: bold;\\n padding: 14px 0;\\n width: 50%;\\n box-sizing: border-box;\\n border-top: 1px solid #eee;\\n border-right: 1px solid #eee;\\n}\\n.\" + clsPrefix + \"_confirm {\\n display: inline-block;\\n font-weight: bold;\\n color: #576B95;\\n padding: 14px 0;\\n width: 50%;\\n box-sizing: border-box;\\n border-top: 1px solid #eee;\\n}\\n@keyframes \" + clsPrefix + \"_in {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@keyframes \" + clsPrefix + \"_out {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@keyframes \" + clsPrefix + \"_fadeIn {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: .6;\\n }\\n}\\n@keyframes \" + clsPrefix + \"_fadeOut {\\n 0% {\\n opacity: .6;\\n }\\n 100% {\\n opacity: 0;\\n }\\n}\").replace(/\\n/g, '');\nvar styleElement = null;\nvar confirmElement = null;\n\nvar hideFn = function () {};\n\nvar confirm = function (args) {\n try {\n if (!styleElement) {\n // create a style tag for keyframes\n styleElement = document.createElement('style');\n styleElement.innerHTML = styles;\n document.body.appendChild(styleElement);\n }\n\n if (!confirmElement) {\n // create a actionsheet element\n confirmElement = document.createElement('div'); // create a mask element\n\n var maskEle = document.createElement('div');\n maskEle.className = clsPrefix + \"_mask\";\n confirmElement.appendChild(maskEle); // create container element\n\n var containerEle = document.createElement('div');\n containerEle.className = clsPrefix; // add title\n\n var titleEle = document.createElement('div');\n titleEle.className = clsPrefix + \"_title\";\n titleEle.innerText = args.title;\n containerEle.appendChild(titleEle); // add content\n\n var contentEle = document.createElement('div');\n contentEle.className = clsPrefix + \"_content\";\n contentEle.innerText = args.content;\n containerEle.appendChild(contentEle); // add operators\n\n var operateEle = document.createElement('div'); // add cancelButton\n\n if (args.showCancel !== false) {\n var cancelButton = document.createElement('div');\n cancelButton.className = clsPrefix + \"_cancel\";\n cancelButton.innerText = args.cancelText;\n cancelButton.setAttribute('tabindex', '-1');\n cancelButton.addEventListener('click', function () {\n hideFn(function () {\n args.success({\n confirm: false\n });\n args.complete({\n confirm: false\n });\n });\n });\n operateEle.appendChild(cancelButton);\n } // add confirmButton\n\n\n var confirmButton = document.createElement('div');\n confirmButton.className = clsPrefix + \"_confirm\";\n\n if (args.showCancel === false) {\n confirmButton.style.width = '100%';\n }\n\n confirmButton.innerText = args.confirmText;\n confirmButton.setAttribute('tabindex', '-1');\n confirmButton.addEventListener('click', function () {\n hideFn(function () {\n args.success({\n confirm: true\n });\n args.complete({\n confirm: true\n });\n });\n });\n operateEle.appendChild(confirmButton);\n containerEle.appendChild(operateEle);\n confirmElement.appendChild(containerEle);\n document.body.appendChild(confirmElement);\n maskEle.style.animationName = clsPrefix + \"_fadeIn\";\n containerEle.style.animationName = clsPrefix + \"_in\";\n\n hideFn = function (callback) {\n maskEle.style.animationName = clsPrefix + \"_fadeOut\";\n confirmElement.removeChild(containerEle);\n setTimeout(function () {\n document.body.removeChild(confirmElement);\n confirmElement = null;\n callback();\n }, 300);\n };\n }\n } catch (err) {\n args.fail(err);\n args.complete(err);\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"])(confirm, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].WEB));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/es/wechat-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/confirm/es/wechat-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/confirm/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/confirm/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (args) {\n return wx.showModal(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/lib/_utils/constant.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/confirm/lib/_utils/constant.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.CONTAINER_NAME = void 0;\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\nexports.CONTAINER_NAME = CONTAINER_NAME;\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/lib/_utils/promisify.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/confirm/lib/_utils/promisify.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.promisify = promisify;\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/lib/_utils/styleOptions.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/confirm/lib/_utils/styleOptions.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.styleIn = exports.styleOut = void 0;\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\n\nexports.styleOut = styleOut;\n\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\nexports.styleIn = styleIn;\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/lib/common.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/confirm/lib/common.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.normalize = normalize;\n\nvar _promisify = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/confirm/lib/_utils/promisify.js\");\n\nvar _styleOptions = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/confirm/lib/_utils/styleOptions.js\");\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n/**\n * @param res\n */\n\n\nvar formatResponse = function (res) {\n return {\n confirm: res.confirm,\n cancel: !res.confirm\n };\n};\n\nfunction normalize(api, containerName) {\n return function (args) {\n args = (0, _styleOptions.styleIn)(args, containerName);\n return (0, _promisify.promisify)(api)(_extends({}, args, {\n title: args.title || '',\n content: args.content || '',\n confirmText: args.confirmText || '确定',\n cancelText: args.cancelText || '取消',\n success: function (res) {\n args.success && args.success(formatResponse(res));\n },\n complete: function (res) {\n args.complete && args.complete(res);\n }\n })).then(formatResponse);\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/confirm/lib/web/index.js\":\n/*!*************************************************!*\\\n !*** ../dist/lib/@uni/confirm/lib/web/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _constant = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/confirm/lib/_utils/constant.js\");\n\nvar _common = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/confirm/lib/common.js\");\n\nvar clsPrefix = '__universal_confirm';\nvar styles = (\".\" + clsPrefix + \" {\\n position: fixed;\\n left: 50%;\\n top: 50%;\\n transform: translate(-50%, -50%);\\n -webkit-transform: translate(-50%, -50%);\\n background: #fff;\\n color: #000;\\n box-sizing: border-box;\\n border-radius: 12px;\\n z-index: 9999;\\n outline: none;\\n text-align: center;\\n width: 280px;\\n opacity: 0;\\n animation-duration: .3s;\\n animation-fill-mode: both;\\n}\\n.\" + clsPrefix + \"_mask {\\n content: \\\"\\\";\\n position: fixed;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n top: 0;\\n margin: auto;\\n display: block;\\n z-index: 9999;\\n background: #000;\\n opacity: 0;\\n animation-duration: .3s;\\n animation-fill-mode: both;\\n}\\n.\" + clsPrefix + \"_title {\\n padding: 28px 16px 16px;\\n font-weight: bold;\\n}\\n.\" + clsPrefix + \"_content {\\n color: #666;\\n padding: 0 16px;\\n margin-bottom: 28px;\\n word-break: break-all;\\n max-height: 200px;\\n overflow: scroll;\\n}\\n.\" + clsPrefix + \"_cancel {\\n display: inline-block;\\n font-weight: bold;\\n padding: 14px 0;\\n width: 50%;\\n box-sizing: border-box;\\n border-top: 1px solid #eee;\\n border-right: 1px solid #eee;\\n}\\n.\" + clsPrefix + \"_confirm {\\n display: inline-block;\\n font-weight: bold;\\n color: #576B95;\\n padding: 14px 0;\\n width: 50%;\\n box-sizing: border-box;\\n border-top: 1px solid #eee;\\n}\\n@keyframes \" + clsPrefix + \"_in {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@keyframes \" + clsPrefix + \"_out {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@keyframes \" + clsPrefix + \"_fadeIn {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: .6;\\n }\\n}\\n@keyframes \" + clsPrefix + \"_fadeOut {\\n 0% {\\n opacity: .6;\\n }\\n 100% {\\n opacity: 0;\\n }\\n}\").replace(/\\n/g, '');\nvar styleElement = null;\nvar confirmElement = null;\n\nvar hideFn = function () {};\n\nvar confirm = function (args) {\n try {\n if (!styleElement) {\n // create a style tag for keyframes\n styleElement = document.createElement('style');\n styleElement.innerHTML = styles;\n document.body.appendChild(styleElement);\n }\n\n if (!confirmElement) {\n // create a actionsheet element\n confirmElement = document.createElement('div'); // create a mask element\n\n var maskEle = document.createElement('div');\n maskEle.className = clsPrefix + \"_mask\";\n confirmElement.appendChild(maskEle); // create container element\n\n var containerEle = document.createElement('div');\n containerEle.className = clsPrefix; // add title\n\n var titleEle = document.createElement('div');\n titleEle.className = clsPrefix + \"_title\";\n titleEle.innerText = args.title;\n containerEle.appendChild(titleEle); // add content\n\n var contentEle = document.createElement('div');\n contentEle.className = clsPrefix + \"_content\";\n contentEle.innerText = args.content;\n containerEle.appendChild(contentEle); // add operators\n\n var operateEle = document.createElement('div'); // add cancelButton\n\n if (args.showCancel !== false) {\n var cancelButton = document.createElement('div');\n cancelButton.className = clsPrefix + \"_cancel\";\n cancelButton.innerText = args.cancelText;\n cancelButton.setAttribute('tabindex', '-1');\n cancelButton.addEventListener('click', function () {\n hideFn(function () {\n args.success({\n confirm: false\n });\n args.complete({\n confirm: false\n });\n });\n });\n operateEle.appendChild(cancelButton);\n } // add confirmButton\n\n\n var confirmButton = document.createElement('div');\n confirmButton.className = clsPrefix + \"_confirm\";\n\n if (args.showCancel === false) {\n confirmButton.style.width = '100%';\n }\n\n confirmButton.innerText = args.confirmText;\n confirmButton.setAttribute('tabindex', '-1');\n confirmButton.addEventListener('click', function () {\n hideFn(function () {\n args.success({\n confirm: true\n });\n args.complete({\n confirm: true\n });\n });\n });\n operateEle.appendChild(confirmButton);\n containerEle.appendChild(operateEle);\n confirmElement.appendChild(containerEle);\n document.body.appendChild(confirmElement);\n maskEle.style.animationName = clsPrefix + \"_fadeIn\";\n containerEle.style.animationName = clsPrefix + \"_in\";\n\n hideFn = function (callback) {\n maskEle.style.animationName = clsPrefix + \"_fadeOut\";\n confirmElement.removeChild(containerEle);\n setTimeout(function () {\n document.body.removeChild(confirmElement);\n confirmElement = null;\n callback();\n }, 300);\n };\n }\n } catch (err) {\n args.fail(err);\n args.complete(err);\n }\n};\n\nvar _default = (0, _common.normalize)(confirm, _constant.CONTAINER_NAME.WEB);\n\nexports.default = _default;\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/ali-miniapp/getBoundingClientRect.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/ali-miniapp/getBoundingClientRect.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/element/es/common.js\");\n\nvar getBoundingClientRect = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getBoundingClientRect(function (selector) {\n return new Promise(function (resolve) {\n my.createSelectorQuery().selectAll(selector).boundingClientRect().exec(function (ret) {\n resolve(ret[0]);\n });\n });\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (getBoundingClientRect);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/ali-miniapp/getScrollOffset.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/ali-miniapp/getScrollOffset.js ***!\n \\******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getScrollOffset = function (selector) {\n return new Promise(function (resolve) {\n my.createSelectorQuery().selectAll(selector).scrollOffset().exec(function (ret) {\n resolve(ret[0] ? ret[0].map(function (i) {\n return {\n scrollLeft: i.scrollLeft,\n scrollTop: i.scrollTop\n };\n }) : []);\n });\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getScrollOffset);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/ali-miniapp/index.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/element/es/ali-miniapp/index.js ***!\n \\********************************************************/\n/*! exports provided: getScrollOffset, getBoundingClientRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollOffset */ \"../dist/lib/@uni/element/es/ali-miniapp/getScrollOffset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getScrollOffset\", function() { return _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getBoundingClientRect */ \"../dist/lib/@uni/element/es/ali-miniapp/getBoundingClientRect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBoundingClientRect\", function() { return _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getScrollOffset: _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getBoundingClientRect: _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/baidu-smartprogram/getBoundingClientRect.js\":\n/*!*******************************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/baidu-smartprogram/getBoundingClientRect.js ***!\n \\*******************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/element/es/common.js\");\n\nvar getBoundingClientRect = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getBoundingClientRect(function (selector, context) {\n if (context === void 0) {\n context = swan;\n }\n\n return new Promise(function (resolve) {\n context.createSelectorQuery = context.createSelectorQuery || swan.createSelectorQuery;\n context.createSelectorQuery().selectAll(selector).boundingClientRect().exec(function (ret) {\n resolve(ret[0]);\n });\n });\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (getBoundingClientRect);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/baidu-smartprogram/getScrollOffset.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/baidu-smartprogram/getScrollOffset.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getScrollOffset = function (selector, context) {\n if (context === void 0) {\n context = swan;\n }\n\n return new Promise(function (resolve) {\n context.createSelectorQuery = context.createSelectorQuery || swan.createSelectorQuery;\n context.createSelectorQuery().selectAll(selector).scrollOffset().exec(function (ret) {\n resolve(ret[0] ? ret[0].map(function (i) {\n return {\n scrollLeft: i.scrollLeft,\n scrollTop: i.scrollTop\n };\n }) : []);\n });\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getScrollOffset);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/baidu-smartprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/baidu-smartprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: getScrollOffset, getBoundingClientRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollOffset */ \"../dist/lib/@uni/element/es/baidu-smartprogram/getScrollOffset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getScrollOffset\", function() { return _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getBoundingClientRect */ \"../dist/lib/@uni/element/es/baidu-smartprogram/getBoundingClientRect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBoundingClientRect\", function() { return _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getScrollOffset: _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getBoundingClientRect: _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/bytedance-microapp/getBoundingClientRect.js\":\n/*!*******************************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/bytedance-microapp/getBoundingClientRect.js ***!\n \\*******************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/element/es/common.js\");\n\nvar getBoundingClientRect = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getBoundingClientRect(function (selector, context) {\n if (context === void 0) {\n context = tt;\n }\n\n return new Promise(function (resolve) {\n context.createSelectorQuery = context.createSelectorQuery || tt.createSelectorQuery;\n context.createSelectorQuery().selectAll(selector).boundingClientRect().exec(function (ret) {\n resolve(ret[0]);\n });\n });\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (getBoundingClientRect);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/bytedance-microapp/getScrollOffset.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/bytedance-microapp/getScrollOffset.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getScrollOffset = function (selector, context) {\n if (context === void 0) {\n context = tt;\n }\n\n return new Promise(function (resolve) {\n context.createSelectorQuery = context.createSelectorQuery || tt.createSelectorQuery;\n context.createSelectorQuery().selectAll(selector).scrollOffset().exec(function (ret) {\n resolve(ret[0] ? ret[0].map(function (i) {\n return {\n scrollLeft: i.scrollLeft,\n scrollTop: i.scrollTop\n };\n }) : []);\n });\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getScrollOffset);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/bytedance-microapp/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/bytedance-microapp/index.js ***!\n \\***************************************************************/\n/*! exports provided: getScrollOffset, getBoundingClientRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollOffset */ \"../dist/lib/@uni/element/es/bytedance-microapp/getScrollOffset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getScrollOffset\", function() { return _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getBoundingClientRect */ \"../dist/lib/@uni/element/es/bytedance-microapp/getBoundingClientRect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBoundingClientRect\", function() { return _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getScrollOffset: _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getBoundingClientRect: _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/common.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/element/es/common.js ***!\n \\*********************************************/\n/*! exports provided: styleBoundingClientRectResponse, normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleBoundingClientRectResponse\", function() { return styleBoundingClientRectResponse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\nvar styleBoundingClientRectResponse = function (data) {\n return data ? data.map(function (res) {\n return {\n left: isNone(res.left) ? '' : res.left,\n right: isNone(res.right) ? '' : res.right,\n top: isNone(res.top) ? '' : res.top,\n bottom: isNone(res.bottom) ? '' : res.bottom,\n width: res.width,\n height: res.height\n };\n }) : [];\n};\nvar normalize = {\n getBoundingClientRect: function (api) {\n return function () {\n return api.apply(void 0, arguments).then(styleBoundingClientRectResponse);\n };\n }\n};\n\nvar isNone = function (val) {\n return typeof val === 'undefined' || !val && val !== 0;\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/index.js\":\n/*!********************************************!*\\\n !*** ../dist/lib/@uni/element/es/index.js ***!\n \\********************************************/\n/*! exports provided: getScrollOffset, getBoundingClientRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getScrollOffset\", function() { return getScrollOffset; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getBoundingClientRect\", function() { return getBoundingClientRect; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/element/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/element/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/element/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/element/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/element/es/baidu-smartprogram/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/element/es/web/index.js\");\n\n\n\n\n\n\n\nvar getScrollOffset = function (selector, context) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getScrollOffset(selector);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getScrollOffset(selector, context);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getScrollOffset(selector, context);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getScrollOffset(selector, context);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getScrollOffset(selector);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getScrollOffset(selector, context);\n } else {\n throw new Error('Uni API:element暂不支持');\n }\n};\nvar getBoundingClientRect = function (selector, context) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getBoundingClientRect(selector);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getBoundingClientRect(selector, context);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getBoundingClientRect(selector, context);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getBoundingClientRect(selector, context);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getBoundingClientRect(selector);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getBoundingClientRect(selector, context);\n } else {\n throw new Error('Uni API:element暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getScrollOffset: getScrollOffset,\n getBoundingClientRect: getBoundingClientRect\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/kuaishou-miniprogram/getBoundingClientRect.js\":\n/*!*********************************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/kuaishou-miniprogram/getBoundingClientRect.js ***!\n \\*********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/element/es/common.js\");\n\nvar getBoundingClientRect = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getBoundingClientRect(function (selector, context) {\n if (context === void 0) {\n context = ks;\n }\n\n return new Promise(function (resolve) {\n context.createSelectorQuery = context.createSelectorQuery || ks.createSelectorQuery;\n context.createSelectorQuery().selectAll(selector).boundingClientRect().exec(function (ret) {\n resolve(ret[0]);\n });\n });\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (getBoundingClientRect);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/kuaishou-miniprogram/getScrollOffset.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/kuaishou-miniprogram/getScrollOffset.js ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getScrollOffset = function (selector, context) {\n if (context === void 0) {\n context = ks;\n }\n\n return new Promise(function (resolve) {\n context.createSelectorQuery = context.createSelectorQuery || ks.createSelectorQuery;\n context.createSelectorQuery().selectAll(selector).scrollOffset().exec(function (ret) {\n resolve(ret[0] ? ret[0].map(function (i) {\n return {\n scrollLeft: i.scrollLeft,\n scrollTop: i.scrollTop\n };\n }) : []);\n });\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getScrollOffset);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/kuaishou-miniprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/kuaishou-miniprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: getScrollOffset, getBoundingClientRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollOffset */ \"../dist/lib/@uni/element/es/kuaishou-miniprogram/getScrollOffset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getScrollOffset\", function() { return _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getBoundingClientRect */ \"../dist/lib/@uni/element/es/kuaishou-miniprogram/getBoundingClientRect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBoundingClientRect\", function() { return _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getScrollOffset: _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getBoundingClientRect: _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/web/getBoundingClientRect.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/web/getBoundingClientRect.js ***!\n \\****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/element/es/common.js\");\n\nvar getBoundingClientRect = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getBoundingClientRect(function (selector) {\n return new Promise(function (resolve) {\n var el = document.querySelectorAll(selector);\n resolve(el.length === 0 ? [] : [].map.call(el, function (node) {\n return node.getBoundingClientRect();\n }));\n });\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (getBoundingClientRect);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/web/getScrollOffset.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/element/es/web/getScrollOffset.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getScrollOffset = function (selector) {\n return new Promise(function (resolve) {\n var el = document.querySelectorAll(selector);\n resolve(el.length === 0 ? [] : [].map.call(el, function (node) {\n return {\n scrollTop: node.scrollTop,\n scrollLeft: node.scrollLeft\n };\n }));\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getScrollOffset);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/web/index.js\":\n/*!************************************************!*\\\n !*** ../dist/lib/@uni/element/es/web/index.js ***!\n \\************************************************/\n/*! exports provided: getScrollOffset, getBoundingClientRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollOffset */ \"../dist/lib/@uni/element/es/web/getScrollOffset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getScrollOffset\", function() { return _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getBoundingClientRect */ \"../dist/lib/@uni/element/es/web/getBoundingClientRect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBoundingClientRect\", function() { return _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getScrollOffset: _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getBoundingClientRect: _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/wechat-miniprogram/getBoundingClientRect.js\":\n/*!*******************************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/wechat-miniprogram/getBoundingClientRect.js ***!\n \\*******************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/element/es/common.js\");\n\nvar getBoundingClientRect = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getBoundingClientRect(function (selector, context) {\n if (context === void 0) {\n context = wx;\n }\n\n return new Promise(function (resolve) {\n context.createSelectorQuery = context.createSelectorQuery || wx.createSelectorQuery;\n context.createSelectorQuery().selectAll(selector).boundingClientRect().exec(function (ret) {\n resolve(ret[0]);\n });\n });\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (getBoundingClientRect);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/wechat-miniprogram/getScrollOffset.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/wechat-miniprogram/getScrollOffset.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar getScrollOffset = function (selector, context) {\n if (context === void 0) {\n context = wx;\n }\n\n return new Promise(function (resolve) {\n // const ele: any = document.querySelector(selector);\n // if (!ele || !ele._internal) {\n // console.warn('element not found', selector);\n // resolve([]);\n // }\n context.createSelectorQuery = context.createSelectorQuery || wx.createSelectorQuery;\n context.createSelectorQuery().selectAll(selector).scrollOffset().exec(function (ret) {\n resolve(ret[0] ? ret[0].map(function (i) {\n return {\n scrollLeft: i.scrollLeft,\n scrollTop: i.scrollTop\n };\n }) : []);\n });\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getScrollOffset);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/element/es/wechat-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/element/es/wechat-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: getScrollOffset, getBoundingClientRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getScrollOffset */ \"../dist/lib/@uni/element/es/wechat-miniprogram/getScrollOffset.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getScrollOffset\", function() { return _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getBoundingClientRect */ \"../dist/lib/@uni/element/es/wechat-miniprogram/getBoundingClientRect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getBoundingClientRect\", function() { return _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getScrollOffset: _getScrollOffset__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getBoundingClientRect: _getBoundingClientRect__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/env/es/index.js\":\n/*!****************************************!*\\\n !*** ../dist/lib/@uni/env/es/index.js ***!\n \\****************************************/\n/*! exports provided: isWeb, isNode, isWeex, isKraken, isMiniApp, isByteDanceMicroApp, isBaiduSmartProgram, isKuaiShouMiniProgram, isWeChatMiniProgram, isQuickApp, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(process, global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWeb\", function() { return isWeb; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isNode\", function() { return isNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWeex\", function() { return isWeex; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isKraken\", function() { return isKraken; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMiniApp\", function() { return isMiniApp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isByteDanceMicroApp\", function() { return isByteDanceMicroApp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isBaiduSmartProgram\", function() { return isBaiduSmartProgram; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isKuaiShouMiniProgram\", function() { return isKuaiShouMiniProgram; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isWeChatMiniProgram\", function() { return isWeChatMiniProgram; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isQuickApp\", function() { return isQuickApp; });\nvar isWeb = typeof window !== 'undefined' && 'onload' in window;\nvar isNode = typeof process !== 'undefined' && !!(process.versions && process.versions.node);\nvar isWeex = typeof WXEnvironment !== 'undefined' && WXEnvironment.platform !== 'Web';\nvar isKraken = typeof __kraken__ !== 'undefined';\nvar isMiniApp = typeof my !== 'undefined' && my !== null && typeof my.alert !== 'undefined';\nvar isByteDanceMicroApp = typeof tt !== 'undefined' && tt !== null && typeof tt.showToast !== 'undefined';\nvar isBaiduSmartProgram = typeof swan !== 'undefined' && swan !== null && typeof swan.showToast !== 'undefined';\nvar isKuaiShouMiniProgram = typeof ks !== 'undefined' && ks !== null && typeof ks.showToast !== 'undefined'; // In wechat mini program, wx.login is a function\n// In wechat mini propgram webview, there is no wx.login, but exist wx.miniProgram\n// In bytedance maicro app, there is wx variable.\n// In kuaishou mini program, there is wx variable.\n\nvar isWeChatMiniProgram = !isByteDanceMicroApp && typeof wx !== 'undefined' && wx !== null && (typeof wx.request !== 'undefined' || typeof wx.miniProgram !== 'undefined');\nvar isQuickApp = typeof global !== 'undefined' && global !== null && typeof global.callNative !== 'undefined' && !isWeex;\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n isWeb: isWeb,\n isNode: isNode,\n isWeex: isWeex,\n isKraken: isKraken,\n isMiniApp: isMiniApp,\n isByteDanceMicroApp: isByteDanceMicroApp,\n isBaiduSmartProgram: isBaiduSmartProgram,\n isKuaiShouMiniProgram: isKuaiShouMiniProgram,\n isWeChatMiniProgram: isWeChatMiniProgram,\n isQuickApp: isQuickApp\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../../demos/node_modules/process/browser.js */ \"./node_modules/process/browser.js\"), __webpack_require__(/*! ./../../../../../demos/node_modules/webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/_utils/constant.js\":\n/*!***************************************************!*\\\n !*** ../dist/lib/@uni/file/es/_utils/constant.js ***!\n \\***************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/_utils/miniappEnvApp.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/file/es/_utils/miniappEnvApp.js ***!\n \\********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/_utils/promisify.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/file/es/_utils/promisify.js ***!\n \\****************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/_utils/styleOptions.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/file/es/_utils/styleOptions.js ***!\n \\*******************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/ali-miniapp/download.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/file/es/ali-miniapp/download.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/file/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\n\nvar downloadFile = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].download(function (options) {\n var url = options.url,\n header = options.header,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n\n var _downloadFile = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.downloadFile : my.downloadFile;\n\n _downloadFile({\n url: url,\n header: header,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (downloadFile);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/ali-miniapp/getInfo.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/file/es/ali-miniapp/getInfo.js ***!\n \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/file/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\n\nvar getInfo = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].getInfo(function (options) {\n var filePath = options.filePath,\n digestAlgorithm = options.digestAlgorithm,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n var getFileInfo = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.getFileInfo : my.getFileInfo;\n getFileInfo({\n apFilePath: filePath,\n digestAlgorithm: digestAlgorithm,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/ali-miniapp/getSavedInfo.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/ali-miniapp/getSavedInfo.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/file/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\n\nvar getSavedInfo = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].getSavedInfo(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n var getSavedFileInfo = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.getSavedFileInfo : my.getSavedFileInfo;\n getSavedFileInfo({\n apFilePath: filePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getSavedInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/ali-miniapp/getSavedList.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/ali-miniapp/getSavedList.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/file/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\n\nvar getSavedList = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].getSavedList(function (options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n var getSavedFileList = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.getSavedFileList : my.getSavedFileList;\n getSavedFileList({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getSavedList);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/ali-miniapp/index.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/file/es/ali-miniapp/index.js ***!\n \\*****************************************************/\n/*! exports provided: openDocument, removeSaved, upload, save, getSavedList, getSavedInfo, getInfo, download, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _openDocument__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./openDocument */ \"../dist/lib/@uni/file/es/ali-miniapp/openDocument.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openDocument\", function() { return _openDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _removeSaved__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./removeSaved */ \"../dist/lib/@uni/file/es/ali-miniapp/removeSaved.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeSaved\", function() { return _removeSaved__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _upload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./upload */ \"../dist/lib/@uni/file/es/ali-miniapp/upload.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upload\", function() { return _upload__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./save */ \"../dist/lib/@uni/file/es/ali-miniapp/save.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"save\", function() { return _save__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _getSavedList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getSavedList */ \"../dist/lib/@uni/file/es/ali-miniapp/getSavedList.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSavedList\", function() { return _getSavedList__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getSavedInfo */ \"../dist/lib/@uni/file/es/ali-miniapp/getSavedInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSavedInfo\", function() { return _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _getInfo__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getInfo */ \"../dist/lib/@uni/file/es/ali-miniapp/getInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return _getInfo__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _download__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./download */ \"../dist/lib/@uni/file/es/ali-miniapp/download.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"download\", function() { return _download__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n openDocument: _openDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n removeSaved: _removeSaved__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n upload: _upload__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n save: _save__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n getSavedList: _getSavedList__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n getSavedInfo: _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n getInfo: _getInfo__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n download: _download__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/ali-miniapp/openDocument.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/ali-miniapp/openDocument.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/file/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\n\nvar openDocument = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].openDocument(function (options) {\n var filePath = options.filePath,\n fileType = options.fileType,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n var openDocumentApi = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.openDocument : my.openDocument;\n openDocumentApi({\n filePath: filePath,\n fileType: fileType,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (openDocument);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/ali-miniapp/removeSaved.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/file/es/ali-miniapp/removeSaved.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/file/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\n\nvar removeSaved = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].removeSaved(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n var removeSavedFile = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.removeSavedFile : my.removeSavedFile;\n removeSavedFile({\n apFilePath: filePath,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeSaved);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/ali-miniapp/save.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/file/es/ali-miniapp/save.js ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/file/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\n\nvar save = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].save(function (options) {\n var tempFilePath = options.tempFilePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n var saveFile = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.saveFile : my.saveFile;\n saveFile({\n apFilePath: tempFilePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (save);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/ali-miniapp/upload.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/file/es/ali-miniapp/upload.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/file/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n\n\n\nvar upload = _common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"].upload(function (options) {\n var url = options.url,\n filePath = options.filePath,\n fileName = options.fileName,\n _options$fileType = options.fileType,\n fileType = _options$fileType === void 0 ? 'image' : _options$fileType,\n hideLoading = options.hideLoading,\n header = options.header,\n formData = options.formData,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n var uploadFile = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_1__[\"isDingdingMiniapp\"] ? dd.uploadFile : my.uploadFile;\n var task = uploadFile({\n url: url,\n filePath: filePath,\n fileName: fileName,\n fileType: fileType,\n hideLoading: hideLoading,\n header: header,\n formData: formData,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n\n if (task && task.onProgressUpdate) {\n // 支付宝 10.1.35 及以上版本支持\n var progressCallback = [];\n task.onProgressUpdate(function (_ref) {\n var progress = _ref.progress,\n totalBytesWritten = _ref.totalBytesWritten,\n totalBytesExpectedToWrite = _ref.totalBytesExpectedToWrite;\n var res = {\n progress: progress,\n totalBytesSent: totalBytesWritten,\n totalBytesExpectedToSend: totalBytesExpectedToWrite\n };\n\n if (progressCallback.length > 0) {\n progressCallback.forEach(function (x) {\n return x(res);\n });\n }\n });\n return {\n abort: function () {\n task.abort();\n },\n onProgressUpdate: function (cb) {\n progressCallback.push(cb);\n },\n offProgressUpdate: function (cb) {\n if (progressCallback.indexOf(cb) !== -1) {\n progressCallback.splice(progressCallback.indexOf(cb), 1);\n }\n }\n };\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (upload);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/baidu-smartprogram/download.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/baidu-smartprogram/download.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\nvar _excluded = [\"url\", \"header\", \"success\", \"fail\", \"complete\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\nvar downloadFile = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].download(function (options) {\n var url = options.url,\n header = options.header,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete,\n rest = _objectWithoutPropertiesLoose(options, _excluded);\n\n return swan.downloadFile(_extends({\n url: url,\n header: header\n }, rest, {\n success: function (res) {\n _success && _success({\n tempFilePath: res.tempFilePath\n });\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res.tempFilePath ? {\n tempFilePath: res.tempFilePath\n } : res);\n }\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (downloadFile);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/baidu-smartprogram/getInfo.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/baidu-smartprogram/getInfo.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar getInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getInfo(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n swan.getFileInfo({\n filePath: filePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/baidu-smartprogram/getSavedInfo.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/baidu-smartprogram/getSavedInfo.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar getSavedInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getSavedInfo(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n swan.getFileInfo({\n filePath: filePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getSavedInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/baidu-smartprogram/getSavedList.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/baidu-smartprogram/getSavedList.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar getSavedList = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getSavedList(function (options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n swan.getSavedFileList({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getSavedList);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/baidu-smartprogram/index.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/baidu-smartprogram/index.js ***!\n \\************************************************************/\n/*! exports provided: openDocument, removeSaved, upload, save, getSavedList, getSavedInfo, getInfo, download, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _openDocument__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./openDocument */ \"../dist/lib/@uni/file/es/baidu-smartprogram/openDocument.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openDocument\", function() { return _openDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _removeSaved__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./removeSaved */ \"../dist/lib/@uni/file/es/baidu-smartprogram/removeSaved.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeSaved\", function() { return _removeSaved__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _upload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./upload */ \"../dist/lib/@uni/file/es/baidu-smartprogram/upload.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upload\", function() { return _upload__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./save */ \"../dist/lib/@uni/file/es/baidu-smartprogram/save.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"save\", function() { return _save__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _getSavedList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getSavedList */ \"../dist/lib/@uni/file/es/baidu-smartprogram/getSavedList.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSavedList\", function() { return _getSavedList__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getSavedInfo */ \"../dist/lib/@uni/file/es/baidu-smartprogram/getSavedInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSavedInfo\", function() { return _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _getInfo__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getInfo */ \"../dist/lib/@uni/file/es/baidu-smartprogram/getInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return _getInfo__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _download__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./download */ \"../dist/lib/@uni/file/es/baidu-smartprogram/download.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"download\", function() { return _download__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n openDocument: _openDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n removeSaved: _removeSaved__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n upload: _upload__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n save: _save__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n getSavedList: _getSavedList__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n getSavedInfo: _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n getInfo: _getInfo__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n download: _download__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/baidu-smartprogram/openDocument.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/baidu-smartprogram/openDocument.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar openDocument = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].openDocument(function (options) {\n var filePath = options.filePath,\n fileType = options.fileType,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n swan.openDocument({\n filePath: filePath,\n fileType: fileType,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (openDocument);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/baidu-smartprogram/removeSaved.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/baidu-smartprogram/removeSaved.js ***!\n \\******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar removeSaved = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].removeSaved(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n swan.removeSavedFile({\n filePath: filePath,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeSaved);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/baidu-smartprogram/save.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/file/es/baidu-smartprogram/save.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar save = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].save(function (options) {\n var tempFilePath = options.tempFilePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n swan.saveFile({\n tempFilePath: tempFilePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (save);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/baidu-smartprogram/upload.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/baidu-smartprogram/upload.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n\n\nvar upload = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].upload(function (options) {\n var url = options.url,\n filePath = options.filePath,\n fileName = options.fileName,\n hideLoading = options.hideLoading,\n header = options.header,\n formData = options.formData,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete,\n timeout = options.timeout;\n return swan.uploadFile({\n url: url,\n filePath: filePath,\n name: fileName,\n hideLoading: hideLoading,\n header: header,\n timeout: timeout,\n formData: formData,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (upload);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/bytedance-microapp/download.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/bytedance-microapp/download.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\nvar _excluded = [\"url\", \"header\", \"success\", \"fail\", \"complete\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\nvar downloadFile = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].download(function (options) {\n var url = options.url,\n header = options.header,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete,\n rest = _objectWithoutPropertiesLoose(options, _excluded);\n\n return tt.downloadFile(_extends({\n url: url,\n header: header\n }, rest, {\n success: function (res) {\n _success && _success({\n tempFilePath: res.tempFilePath\n });\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res.tempFilePath ? {\n tempFilePath: res.tempFilePath\n } : res);\n }\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (downloadFile);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/bytedance-microapp/getInfo.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/bytedance-microapp/getInfo.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar getInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getInfo(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n tt.getFileInfo({\n filePath: filePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/bytedance-microapp/getSavedInfo.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/bytedance-microapp/getSavedInfo.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar getSavedInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getSavedInfo(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n tt.getFileInfo({\n filePath: filePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getSavedInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/bytedance-microapp/getSavedList.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/bytedance-microapp/getSavedList.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar getSavedList = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getSavedList(function (options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n tt.getSavedFileList({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getSavedList);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/bytedance-microapp/index.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/bytedance-microapp/index.js ***!\n \\************************************************************/\n/*! exports provided: openDocument, removeSaved, upload, save, getSavedList, getSavedInfo, getInfo, download, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _openDocument__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./openDocument */ \"../dist/lib/@uni/file/es/bytedance-microapp/openDocument.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openDocument\", function() { return _openDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _removeSaved__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./removeSaved */ \"../dist/lib/@uni/file/es/bytedance-microapp/removeSaved.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeSaved\", function() { return _removeSaved__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _upload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./upload */ \"../dist/lib/@uni/file/es/bytedance-microapp/upload.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upload\", function() { return _upload__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./save */ \"../dist/lib/@uni/file/es/bytedance-microapp/save.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"save\", function() { return _save__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _getSavedList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getSavedList */ \"../dist/lib/@uni/file/es/bytedance-microapp/getSavedList.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSavedList\", function() { return _getSavedList__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getSavedInfo */ \"../dist/lib/@uni/file/es/bytedance-microapp/getSavedInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSavedInfo\", function() { return _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _getInfo__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getInfo */ \"../dist/lib/@uni/file/es/bytedance-microapp/getInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return _getInfo__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _download__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./download */ \"../dist/lib/@uni/file/es/bytedance-microapp/download.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"download\", function() { return _download__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n openDocument: _openDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n removeSaved: _removeSaved__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n upload: _upload__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n save: _save__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n getSavedList: _getSavedList__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n getSavedInfo: _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n getInfo: _getInfo__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n download: _download__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/bytedance-microapp/openDocument.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/bytedance-microapp/openDocument.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar openDocument = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].openDocument(function (options) {\n var filePath = options.filePath,\n fileType = options.fileType,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n tt.openDocument({\n filePath: filePath,\n fileType: fileType,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (openDocument);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/bytedance-microapp/removeSaved.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/bytedance-microapp/removeSaved.js ***!\n \\******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar removeSaved = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].removeSaved(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n tt.removeSavedFile({\n filePath: filePath,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeSaved);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/bytedance-microapp/save.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/file/es/bytedance-microapp/save.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar save = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].save(function (options) {\n var tempFilePath = options.tempFilePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n tt.saveFile({\n tempFilePath: tempFilePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (save);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/bytedance-microapp/upload.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/bytedance-microapp/upload.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n\n\nvar upload = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].upload(function (options) {\n var url = options.url,\n filePath = options.filePath,\n fileName = options.fileName,\n hideLoading = options.hideLoading,\n header = options.header,\n formData = options.formData,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return tt.uploadFile({\n url: url,\n filePath: filePath,\n name: fileName,\n hideLoading: hideLoading,\n header: header,\n formData: formData,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (upload);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/common.js\":\n/*!******************************************!*\\\n !*** ../dist/lib/@uni/file/es/common.js ***!\n \\******************************************/\n/*! exports provided: normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/file/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/file/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar normalize = {\n upload: function (api, containerName) {\n return function (options) {\n var afterOptions = _extends({}, {\n hideLoading: false\n }, Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName));\n\n return api(afterOptions);\n };\n },\n download: function (api, containerName) {\n var formatRes = function (res) {\n return _extends({}, res, {\n tempFilePath: res.tempFilePath || res.apFilePath\n });\n };\n\n return function (options) {\n var _options = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName);\n\n var afterOptions = _extends({}, {\n url: ''\n }, _options, {\n success: function (res) {\n _options.success && _options.success(formatRes(res));\n },\n complete: function (res) {\n _options.complete && _options.complete(res.tempFilePath ? formatRes(res) : res);\n }\n });\n\n return api(afterOptions);\n };\n },\n getInfo: function (api, containerName) {\n var formatRes = function (res) {\n return _extends({}, res, {\n size: res.size\n });\n };\n\n return function (options) {\n var _options = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName);\n\n var afterOptions = _extends({}, {\n filePath: '',\n digestAlgorithm: 'md5'\n }, _options, {\n success: function (res) {\n _options.success && _options.success(formatRes(res));\n },\n complete: function (res) {\n _options.complete && _options.complete(res.size ? formatRes(res) : res);\n }\n });\n\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(afterOptions).then(function (res) {\n return formatRes(res);\n });\n };\n },\n getSavedInfo: function (api, containerName) {\n return function (options) {\n var _options = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName);\n\n var afterOptions = _extends({}, {\n filePath: ''\n }, _options, {\n success: function (res) {\n _options.success && _options.success(res);\n },\n complete: function (res) {\n _options.complete && _options.complete(res);\n }\n });\n\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(afterOptions);\n };\n },\n getSavedList: function (api, containerName) {\n var formatRes = function (res) {\n return _extends({}, res, {\n fileList: res.fileList.map(function (i) {\n return {\n size: i.size,\n createTime: i.createTime,\n filePath: i.filePath || i.apFilePath\n };\n })\n });\n };\n\n return function (options) {\n var _options = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName);\n\n var afterOptions = _extends({}, _options, {\n success: function (res) {\n _options.success && _options.success(formatRes(res));\n },\n complete: function (res) {\n _options.complete && _options.complete(res.fileList ? formatRes(res) : res);\n }\n });\n\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(afterOptions).then(formatRes);\n };\n },\n save: function (api, containerName) {\n var formatRes = function (res) {\n return _extends({}, res, {\n savedFilePath: res.savedFilePath || res.apFilePath\n });\n };\n\n return function (options) {\n var _options = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName);\n\n var afterOptions = _extends({}, {\n tempFilePath: ''\n }, _options, {\n success: function (res) {\n _options.success && _options.success(formatRes(res));\n },\n complete: function (res) {\n _options.complete && _options.complete(res.size ? formatRes(res) : res);\n }\n });\n\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(afterOptions).then(formatRes);\n };\n },\n removeSaved: function (api, containerName) {\n return function (options) {\n var _options = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName);\n\n var afterOptions = _extends({}, {\n filePath: ''\n }, _options);\n\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(afterOptions);\n };\n },\n openDocument: function (api, containerName) {\n return function (options) {\n var _options = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName);\n\n var afterOptions = _extends({}, {\n filePath: '',\n fileType: 'pdf'\n }, _options);\n\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(afterOptions);\n };\n }\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/index.js\":\n/*!*****************************************!*\\\n !*** ../dist/lib/@uni/file/es/index.js ***!\n \\*****************************************/\n/*! exports provided: upload, download, getInfo, getSavedInfo, getSavedList, save, removeSaved, openDocument, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"upload\", function() { return upload; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"download\", function() { return download; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return getInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSavedInfo\", function() { return getSavedInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSavedList\", function() { return getSavedList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"save\", function() { return save; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeSaved\", function() { return removeSaved; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openDocument\", function() { return openDocument; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/file/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/file/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/file/es/bytedance-microapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/file/es/web/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/file/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar upload = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"upload\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"upload\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"upload\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"upload\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"upload\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"upload\"](options);\n } else {\n throw new Error('@uni:upload暂不支持');\n }\n};\nvar download = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"download\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"download\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"download\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"download\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"download\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"download\"](options);\n } else {\n throw new Error('@uni:download暂不支持');\n }\n};\nvar getInfo = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"getInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"getInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"getInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"getInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"getInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"getInfo\"](options);\n } else {\n throw new Error('@uni:getInfo暂不支持');\n }\n};\nvar getSavedInfo = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"getSavedInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"getSavedInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"getSavedInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"getSavedInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"getSavedInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"getSavedInfo\"](options);\n } else {\n throw new Error('@uni:getSavedInfo暂不支持');\n }\n};\nvar getSavedList = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"getSavedList\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"getSavedList\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"getSavedList\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"getSavedList\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"getSavedList\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"getSavedList\"](options);\n } else {\n throw new Error('@uni:getSavedList暂不支持');\n }\n};\nvar save = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"save\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"save\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"save\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"save\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"save\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"save\"](options);\n } else {\n throw new Error('@uni:save暂不支持');\n }\n};\nvar removeSaved = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"removeSaved\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"removeSaved\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"removeSaved\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"removeSaved\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"removeSaved\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"removeSaved\"](options);\n } else {\n throw new Error('@uni:removeSaved暂不支持');\n }\n};\nvar openDocument = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"openDocument\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"openDocument\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"openDocument\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"openDocument\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"openDocument\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"openDocument\"](options);\n } else {\n throw new Error('@uni:openDocument暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n openDocument: openDocument,\n removeSaved: removeSaved,\n upload: upload,\n save: save,\n getSavedList: getSavedList,\n getSavedInfo: getSavedInfo,\n getInfo: getInfo,\n download: download\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/download.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/kuaishou-miniprogram/download.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\nvar _excluded = [\"url\", \"header\", \"success\", \"fail\", \"complete\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\nvar downloadFile = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].download(function (options) {\n var url = options.url,\n header = options.header,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete,\n rest = _objectWithoutPropertiesLoose(options, _excluded);\n\n return ks.downloadFile(_extends({\n url: url,\n header: header\n }, rest, {\n success: function (res) {\n _success && _success({\n tempFilePath: res.tempFilePath\n });\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res.tempFilePath ? {\n tempFilePath: res.tempFilePath\n } : res);\n }\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (downloadFile);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/getInfo.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/kuaishou-miniprogram/getInfo.js ***!\n \\****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar getInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getInfo(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n ks.getFileInfo({\n filePath: filePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/getSavedInfo.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/kuaishou-miniprogram/getSavedInfo.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar getSavedInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getSavedInfo(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n ks.getFileInfo({\n filePath: filePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getSavedInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/getSavedList.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/kuaishou-miniprogram/getSavedList.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar getSavedList = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getSavedList(function (options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n ks.getSavedFileList({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getSavedList);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/index.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/kuaishou-miniprogram/index.js ***!\n \\**************************************************************/\n/*! exports provided: openDocument, removeSaved, upload, save, getSavedList, getSavedInfo, getInfo, download, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _openDocument__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./openDocument */ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/openDocument.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openDocument\", function() { return _openDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _removeSaved__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./removeSaved */ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/removeSaved.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeSaved\", function() { return _removeSaved__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _upload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./upload */ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/upload.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upload\", function() { return _upload__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./save */ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/save.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"save\", function() { return _save__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _getSavedList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getSavedList */ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/getSavedList.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSavedList\", function() { return _getSavedList__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getSavedInfo */ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/getSavedInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSavedInfo\", function() { return _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _getInfo__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getInfo */ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/getInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return _getInfo__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _download__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./download */ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/download.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"download\", function() { return _download__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n openDocument: _openDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n removeSaved: _removeSaved__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n upload: _upload__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n save: _save__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n getSavedList: _getSavedList__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n getSavedInfo: _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n getInfo: _getInfo__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n download: _download__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/openDocument.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/kuaishou-miniprogram/openDocument.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar openDocument = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].openDocument(function (options) {\n var filePath = options.filePath,\n fileType = options.fileType,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n ks.openDocument({\n filePath: filePath,\n fileType: fileType,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (openDocument);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/removeSaved.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/kuaishou-miniprogram/removeSaved.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar removeSaved = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].removeSaved(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n ks.removeSavedFile({\n filePath: filePath,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeSaved);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/save.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/kuaishou-miniprogram/save.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar save = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].save(function (options) {\n var tempFilePath = options.tempFilePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n ks.saveFile({\n tempFilePath: tempFilePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (save);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/kuaishou-miniprogram/upload.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/kuaishou-miniprogram/upload.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n\n\nvar upload = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].upload(function (options) {\n var url = options.url,\n filePath = options.filePath,\n fileName = options.fileName,\n hideLoading = options.hideLoading,\n header = options.header,\n formData = options.formData,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete,\n timeout = options.timeout;\n return ks.uploadFile({\n url: url,\n filePath: filePath,\n name: fileName,\n hideLoading: hideLoading,\n header: header,\n timeout: timeout,\n formData: formData,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (upload);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/web/download.js\":\n/*!************************************************!*\\\n !*** ../dist/lib/@uni/file/es/web/download.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return fun; });\n/* eslint-disable @typescript-eslint/no-unused-vars */\nfunction fun() {\n return Promise.reject(new Error('@uni:file.downloadFile暂不支持'));\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/web/getInfo.js\":\n/*!***********************************************!*\\\n !*** ../dist/lib/@uni/file/es/web/getInfo.js ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return fun; });\n/* eslint-disable @typescript-eslint/no-unused-vars */\nfunction fun() {\n return Promise.reject(new Error('@uni:file.getFileInfo暂不支持'));\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/web/getSavedInfo.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/file/es/web/getSavedInfo.js ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return fun; });\n/* eslint-disable @typescript-eslint/no-unused-vars */\nfunction fun() {\n return Promise.reject(new Error('@uni:file.getSavedFileInfo暂不支持'));\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/web/getSavedList.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/file/es/web/getSavedList.js ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return fun; });\n/* eslint-disable @typescript-eslint/no-unused-vars */\nfunction fun() {\n return Promise.reject(new Error('@uni:file.getSavedFileList暂不支持'));\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/web/index.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/file/es/web/index.js ***!\n \\*********************************************/\n/*! exports provided: openDocument, removeSaved, upload, save, getSavedList, getSavedInfo, getInfo, download, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _openDocument__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./openDocument */ \"../dist/lib/@uni/file/es/web/openDocument.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openDocument\", function() { return _openDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _removeSaved__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./removeSaved */ \"../dist/lib/@uni/file/es/web/removeSaved.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeSaved\", function() { return _removeSaved__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _upload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./upload */ \"../dist/lib/@uni/file/es/web/upload.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upload\", function() { return _upload__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./save */ \"../dist/lib/@uni/file/es/web/save.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"save\", function() { return _save__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _getSavedList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getSavedList */ \"../dist/lib/@uni/file/es/web/getSavedList.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSavedList\", function() { return _getSavedList__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getSavedInfo */ \"../dist/lib/@uni/file/es/web/getSavedInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSavedInfo\", function() { return _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _getInfo__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getInfo */ \"../dist/lib/@uni/file/es/web/getInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return _getInfo__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _download__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./download */ \"../dist/lib/@uni/file/es/web/download.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"download\", function() { return _download__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n openDocument: _openDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n removeSaved: _removeSaved__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n upload: _upload__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n save: _save__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n getSavedList: _getSavedList__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n getSavedInfo: _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n getInfo: _getInfo__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n download: _download__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/web/openDocument.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/file/es/web/openDocument.js ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return fun; });\n/* eslint-disable @typescript-eslint/no-unused-vars */\nfunction fun() {\n return Promise.reject(new Error('@uni:file.openDocument暂不支持'));\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/web/removeSaved.js\":\n/*!***************************************************!*\\\n !*** ../dist/lib/@uni/file/es/web/removeSaved.js ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return fun; });\n/* eslint-disable @typescript-eslint/no-unused-vars */\nfunction fun() {\n return Promise.reject(new Error('@uni:file.removeSavedFile暂不支持'));\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/web/save.js\":\n/*!********************************************!*\\\n !*** ../dist/lib/@uni/file/es/web/save.js ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return fun; });\n/* eslint-disable @typescript-eslint/no-unused-vars */\nfunction fun() {\n return Promise.reject(new Error('@uni:file.saveFile暂不支持'));\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/web/upload.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/file/es/web/upload.js ***!\n \\**********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nfunction base64toFile(dataUrl, fileName) {\n if (fileName === void 0) {\n fileName = '';\n }\n\n var blob = function (base64Data) {\n var arr = base64Data.split(',');\n var mimeStr = 'image/png';\n var mime = arr[0].match(/:(.*?);/);\n\n if (mime) {\n mimeStr = mime[1];\n }\n\n var bstr = atob(arr[1]);\n var n = bstr.length;\n var u8arr = new Uint8Array(n);\n\n while (n--) {\n u8arr[n] = bstr.charCodeAt(n);\n }\n\n return new Blob([u8arr], {\n type: mimeStr\n });\n }(dataUrl);\n\n var file = function (theBlob, filename) {\n theBlob.lastModifiedDate = new Date();\n theBlob.name = filename;\n return theBlob;\n }(blob, fileName);\n\n return file;\n}\n\nfunction getHeaderMap(xhr) {\n var headers = xhr.getAllResponseHeaders();\n var arr = headers.trim().split(/[\\r\\n]+/);\n var headerMap = {};\n arr.forEach(function (line) {\n var parts = line.split(': ');\n\n var _header = parts.shift();\n\n var value = parts.join(': ');\n headerMap[_header] = value;\n });\n return headerMap;\n}\n\nfunction uploadFile(param) {\n var filePath = param.filePath,\n formData = param.formData,\n success = param.success,\n fail = param.fail,\n complete = param.complete;\n var file = typeof filePath === 'string' ? base64toFile(filePath) : filePath;\n var body = new FormData();\n\n if (formData) {\n for (var key in formData) {\n if (Object.prototype.hasOwnProperty.call(formData, key)) {\n body.append(key, formData[key]);\n }\n }\n }\n\n body.append(param.fileName || 'file', file);\n\n var header = _extends({\n Accept: 'application/json, text/plain, */*'\n }, param.header || {}); // initialize xhr\n\n\n var xhr = new XMLHttpRequest();\n var headersReceivedCallback = [];\n\n xhr.onreadystatechange = function () {\n // header received\n if (xhr && xhr.readyState === 2 && headersReceivedCallback.length > 0) {\n var headers = getHeaderMap(xhr);\n headersReceivedCallback.forEach(function (x) {\n return x(headers);\n });\n }\n }; // Success\n\n\n xhr.onload = function () {\n var result = {\n data: xhr.response,\n statusCode: xhr.status,\n errMsg: 'uploadFile:ok',\n header: getHeaderMap(xhr)\n };\n success && success(result);\n complete && complete(result);\n }; // Errors\n\n\n xhr.onerror = function () {\n fail && fail({\n errMsg: 'uploadFile:fail error'\n });\n complete && complete({\n errMsg: 'uploadFile:fail error'\n });\n };\n\n xhr.onabort = function () {\n fail && fail({\n errMsg: 'uploadFile:fail abort'\n });\n complete && complete({\n errMsg: 'uploadFile:fail abort'\n });\n }; // Progress event\n\n\n var progressCallback = [];\n\n xhr.onprogress = function (evt) {\n if (progressCallback.length === 0) {\n return;\n }\n\n var res = {\n progress: 0,\n totalBytesSent: 0,\n totalBytesExpectedToSend: 0\n };\n\n if (evt.lengthComputable) {\n res.totalBytesSent = evt.loaded;\n res.totalBytesExpectedToSend = evt.total;\n res.progress = Math.floor(100 * evt.loaded / evt.total);\n }\n\n progressCallback.forEach(function (x) {\n return x(res);\n });\n }; // check if need add withCredentials\n\n\n if (typeof param.withCredentials === 'undefined') {\n if (param.url.indexOf(window.location.host) === -1) {\n xhr.withCredentials = true;\n }\n } else {\n xhr.withCredentials = param.withCredentials;\n }\n\n xhr.open('POST', param.url, true);\n\n for (var headerKey in header) {\n if (Object.prototype.hasOwnProperty.call(header, headerKey)) {\n xhr.setRequestHeader(headerKey, String(header[headerKey]));\n }\n } // timeout\n\n\n if (param.timeout) {\n xhr.timeout = param.timeout;\n\n xhr.ontimeout = function () {\n fail && fail({\n errMsg: 'uploadFile:fail timeout'\n });\n complete && complete({\n errMsg: 'uploadFile:fail timeout'\n });\n };\n } // send request\n\n\n xhr.send(body);\n return {\n abort: function () {\n xhr.abort();\n },\n onProgressUpdate: function (cb) {\n progressCallback.push(cb);\n },\n offProgressUpdate: function (cb) {\n if (progressCallback.indexOf(cb) !== -1) {\n progressCallback.splice(progressCallback.indexOf(cb), 1);\n }\n },\n onHeadersReceived: function (cb) {\n headersReceivedCallback.push(cb);\n },\n offHeadersReceived: function (cb) {\n if (headersReceivedCallback.indexOf(cb) !== -1) {\n headersReceivedCallback.splice(headersReceivedCallback.indexOf(cb), 1);\n }\n }\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].upload(uploadFile, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/wechat-miniprogram/download.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/wechat-miniprogram/download.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\nvar _excluded = [\"url\", \"header\", \"success\", \"fail\", \"complete\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\nvar downloadFile = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].download(function (options) {\n var url = options.url,\n header = options.header,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete,\n rest = _objectWithoutPropertiesLoose(options, _excluded);\n\n return wx.downloadFile(_extends({\n url: url,\n header: header\n }, rest, {\n success: function (res) {\n _success && _success({\n tempFilePath: res.tempFilePath\n });\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res.tempFilePath ? {\n tempFilePath: res.tempFilePath\n } : res);\n }\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (downloadFile);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/wechat-miniprogram/getInfo.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/wechat-miniprogram/getInfo.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar getInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getInfo(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n wx.getFileInfo({\n filePath: filePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/wechat-miniprogram/getSavedInfo.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/wechat-miniprogram/getSavedInfo.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar getSavedInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getSavedInfo(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n wx.getFileInfo({\n filePath: filePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getSavedInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/wechat-miniprogram/getSavedList.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/wechat-miniprogram/getSavedList.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar getSavedList = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getSavedList(function (options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n wx.getSavedFileList({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getSavedList);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/wechat-miniprogram/index.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/wechat-miniprogram/index.js ***!\n \\************************************************************/\n/*! exports provided: openDocument, removeSaved, upload, save, getSavedList, getSavedInfo, getInfo, download, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _openDocument__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./openDocument */ \"../dist/lib/@uni/file/es/wechat-miniprogram/openDocument.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openDocument\", function() { return _openDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _removeSaved__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./removeSaved */ \"../dist/lib/@uni/file/es/wechat-miniprogram/removeSaved.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeSaved\", function() { return _removeSaved__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _upload__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./upload */ \"../dist/lib/@uni/file/es/wechat-miniprogram/upload.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"upload\", function() { return _upload__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _save__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./save */ \"../dist/lib/@uni/file/es/wechat-miniprogram/save.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"save\", function() { return _save__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _getSavedList__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./getSavedList */ \"../dist/lib/@uni/file/es/wechat-miniprogram/getSavedList.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSavedList\", function() { return _getSavedList__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./getSavedInfo */ \"../dist/lib/@uni/file/es/wechat-miniprogram/getSavedInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSavedInfo\", function() { return _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _getInfo__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./getInfo */ \"../dist/lib/@uni/file/es/wechat-miniprogram/getInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return _getInfo__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _download__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./download */ \"../dist/lib/@uni/file/es/wechat-miniprogram/download.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"download\", function() { return _download__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n openDocument: _openDocument__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n removeSaved: _removeSaved__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n upload: _upload__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n save: _save__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n getSavedList: _getSavedList__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n getSavedInfo: _getSavedInfo__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n getInfo: _getInfo__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n download: _download__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/wechat-miniprogram/openDocument.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/wechat-miniprogram/openDocument.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar openDocument = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].openDocument(function (options) {\n var filePath = options.filePath,\n fileType = options.fileType,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n wx.openDocument({\n filePath: filePath,\n fileType: fileType,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (openDocument);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/wechat-miniprogram/removeSaved.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/wechat-miniprogram/removeSaved.js ***!\n \\******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar removeSaved = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].removeSaved(function (options) {\n var filePath = options.filePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n wx.removeSavedFile({\n filePath: filePath,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeSaved);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/wechat-miniprogram/save.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/file/es/wechat-miniprogram/save.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n\n\nvar save = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].save(function (options) {\n var tempFilePath = options.tempFilePath,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n wx.saveFile({\n tempFilePath: tempFilePath,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (save);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/file/es/wechat-miniprogram/upload.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/file/es/wechat-miniprogram/upload.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/file/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/file/es/common.js\");\n\n\nvar upload = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].upload(function (options) {\n var url = options.url,\n filePath = options.filePath,\n fileName = options.fileName,\n hideLoading = options.hideLoading,\n header = options.header,\n formData = options.formData,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete,\n timeout = options.timeout;\n return wx.uploadFile({\n url: url,\n filePath: filePath,\n name: fileName,\n hideLoading: hideLoading,\n header: header,\n timeout: timeout,\n formData: formData,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (upload);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/_utils/constant.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/image/es/_utils/constant.js ***!\n \\****************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/_utils/miniappEnvApp.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/image/es/_utils/miniappEnvApp.js ***!\n \\*********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/_utils/promisify.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/image/es/_utils/promisify.js ***!\n \\*****************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/_utils/styleOptions.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/image/es/_utils/styleOptions.js ***!\n \\********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/ali-miniapp/chooseImage.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/ali-miniapp/chooseImage.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/image/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n\n\n\nvar chooseImage = _common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"].chooseImage(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.chooseImage(args) : my.chooseImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/ali-miniapp/compressImage.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/ali-miniapp/compressImage.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/image/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n\n\n\nvar compressImage = _common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"].compressImage(function (args) {\n if (_utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"]) {\n args.filePaths = [args.src];\n } else {\n args.apFilePaths = [args.src];\n }\n\n args && typeof args.quality === 'number' && (args.compressLevel = args.quality);\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.compressImage(args) : my.compressImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (compressImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/ali-miniapp/getImageInfo.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/ali-miniapp/getImageInfo.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/image/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n\n\n\nvar getImageInfo = _common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"].getImageInfo(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.getImageInfo(args) : my.getImageInfo(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getImageInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/ali-miniapp/index.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/image/es/ali-miniapp/index.js ***!\n \\******************************************************/\n/*! exports provided: chooseImage, compressImage, getImageInfo, previewImage, saveImage, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _chooseImage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chooseImage */ \"../dist/lib/@uni/image/es/ali-miniapp/chooseImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseImage\", function() { return _chooseImage__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _compressImage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compressImage */ \"../dist/lib/@uni/image/es/ali-miniapp/compressImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"compressImage\", function() { return _compressImage__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getImageInfo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getImageInfo */ \"../dist/lib/@uni/image/es/ali-miniapp/getImageInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getImageInfo\", function() { return _getImageInfo__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _previewImage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./previewImage */ \"../dist/lib/@uni/image/es/ali-miniapp/previewImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"previewImage\", function() { return _previewImage__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _saveImage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveImage */ \"../dist/lib/@uni/image/es/ali-miniapp/saveImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"saveImage\", function() { return _saveImage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseImage: _chooseImage__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n compressImage: _compressImage__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getImageInfo: _getImageInfo__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n previewImage: _previewImage__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n saveImage: _saveImage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/ali-miniapp/previewImage.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/ali-miniapp/previewImage.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/image/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n\n\n\nvar previewImage = _common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"].previewImage(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.previewImage(args) : my.previewImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (previewImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/ali-miniapp/saveImage.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/image/es/ali-miniapp/saveImage.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/image/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n\n\n\nvar saveImage = _common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"].saveImage(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.saveImage(args) : my.saveImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (saveImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/baidu-smartprogram/chooseImage.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/baidu-smartprogram/chooseImage.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar chooseImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].chooseImage(function (args) {\n return swan.chooseImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/baidu-smartprogram/compressImage.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/baidu-smartprogram/compressImage.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar compressImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].compressImage(function (args) {\n args && typeof args.quality === 'number' && (args.quality *= 33);\n return swan.compressImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (compressImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/baidu-smartprogram/getImageInfo.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/baidu-smartprogram/getImageInfo.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar getImageInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getImageInfo(function (args) {\n return swan.getImageInfo(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getImageInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/baidu-smartprogram/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/baidu-smartprogram/index.js ***!\n \\*************************************************************/\n/*! exports provided: chooseImage, compressImage, getImageInfo, previewImage, saveImage, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _chooseImage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chooseImage */ \"../dist/lib/@uni/image/es/baidu-smartprogram/chooseImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseImage\", function() { return _chooseImage__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _compressImage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compressImage */ \"../dist/lib/@uni/image/es/baidu-smartprogram/compressImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"compressImage\", function() { return _compressImage__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getImageInfo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getImageInfo */ \"../dist/lib/@uni/image/es/baidu-smartprogram/getImageInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getImageInfo\", function() { return _getImageInfo__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _previewImage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./previewImage */ \"../dist/lib/@uni/image/es/baidu-smartprogram/previewImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"previewImage\", function() { return _previewImage__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _saveImage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveImage */ \"../dist/lib/@uni/image/es/baidu-smartprogram/saveImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"saveImage\", function() { return _saveImage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseImage: _chooseImage__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n compressImage: _compressImage__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getImageInfo: _getImageInfo__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n previewImage: _previewImage__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n saveImage: _saveImage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/baidu-smartprogram/previewImage.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/baidu-smartprogram/previewImage.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar previewImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].previewImage(function (args) {\n swan.previewImage(_extends({}, args, {\n current: typeof args.current === 'number' ? args.urls[args.current] : args.urls[0]\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (previewImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/baidu-smartprogram/saveImage.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/baidu-smartprogram/saveImage.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar saveImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].saveImage(function (args) {\n swan.saveImageToPhotosAlbum(_extends({}, args, {\n filePath: args.url\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (saveImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/bytedance-microapp/chooseImage.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/bytedance-microapp/chooseImage.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar chooseImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].chooseImage(function (args) {\n return tt.chooseImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/bytedance-microapp/compressImage.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/bytedance-microapp/compressImage.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar compressImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].compressImage(function (args) {\n args && typeof args.quality === 'number' && (args.quality = args.quality * 33);\n return tt.compressImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (compressImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/bytedance-microapp/getImageInfo.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/bytedance-microapp/getImageInfo.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar getImageInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getImageInfo(function (args) {\n return tt.getImageInfo(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getImageInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/bytedance-microapp/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/bytedance-microapp/index.js ***!\n \\*************************************************************/\n/*! exports provided: chooseImage, compressImage, getImageInfo, previewImage, saveImage, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _chooseImage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chooseImage */ \"../dist/lib/@uni/image/es/bytedance-microapp/chooseImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseImage\", function() { return _chooseImage__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _compressImage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compressImage */ \"../dist/lib/@uni/image/es/bytedance-microapp/compressImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"compressImage\", function() { return _compressImage__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getImageInfo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getImageInfo */ \"../dist/lib/@uni/image/es/bytedance-microapp/getImageInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getImageInfo\", function() { return _getImageInfo__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _previewImage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./previewImage */ \"../dist/lib/@uni/image/es/bytedance-microapp/previewImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"previewImage\", function() { return _previewImage__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _saveImage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveImage */ \"../dist/lib/@uni/image/es/bytedance-microapp/saveImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"saveImage\", function() { return _saveImage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseImage: _chooseImage__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n compressImage: _compressImage__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getImageInfo: _getImageInfo__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n previewImage: _previewImage__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n saveImage: _saveImage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/bytedance-microapp/previewImage.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/bytedance-microapp/previewImage.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar previewImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].previewImage(function (args) {\n tt.previewImage(_extends({}, args, {\n current: typeof args.current === 'number' ? args.urls[args.current] : args.urls[0]\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (previewImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/bytedance-microapp/saveImage.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/bytedance-microapp/saveImage.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar saveImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].saveImage(function (args) {\n tt.saveImageToPhotosAlbum(_extends({}, args, {\n filePath: args.url\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (saveImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/common.js\":\n/*!*******************************************!*\\\n !*** ../dist/lib/@uni/image/es/common.js ***!\n \\*******************************************/\n/*! exports provided: normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/image/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/image/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar normalize = {\n chooseImage: function (api, containerName) {\n var formatResponse = function (res) {\n return _extends({}, res, {\n tempFiles: res.tempFiles || res.files,\n tempFilePaths: res.tempFilePaths\n });\n };\n\n return function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName);\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(_extends({}, args, {\n count: args.count || 1,\n success: function (res) {\n args.success && args.success(formatResponse(res));\n },\n complete: function (res) {\n args.complete && args.complete(res);\n }\n })).then(formatResponse);\n };\n },\n compressImage: function (api, containerName) {\n var formatResponse = function (res) {\n return {\n tempFilePath: res.tempFilePath || (res.filePaths || [])[0] || (res.apFilePaths || [])[0] || ''\n };\n };\n\n return function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName);\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(_extends({}, args, {\n success: function (res) {\n args.success && args.success(formatResponse(res));\n },\n complete: function (res) {\n args.complete && args.complete(res);\n }\n })).then(formatResponse);\n };\n },\n getImageInfo: function (api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n },\n previewImage: function (api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n },\n saveImage: function (api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n }\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/index.js\":\n/*!******************************************!*\\\n !*** ../dist/lib/@uni/image/es/index.js ***!\n \\******************************************/\n/*! exports provided: chooseImage, compressImage, getImageInfo, previewImage, saveImage, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"chooseImage\", function() { return chooseImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compressImage\", function() { return compressImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getImageInfo\", function() { return getImageInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"previewImage\", function() { return previewImage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saveImage\", function() { return saveImage; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/image/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/image/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/image/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/image/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/image/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/image/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar chooseImage = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].chooseImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].chooseImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chooseImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].chooseImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].chooseImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].chooseImage(args);\n } else {\n throw new Error('Uni API:chooseImage暂不支持');\n }\n};\nvar compressImage = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].compressImage();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].compressImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].compressImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].compressImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].compressImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].compressImage(args);\n } else {\n throw new Error('Uni API:compressImage暂不支持');\n }\n};\nvar getImageInfo = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getImageInfo(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getImageInfo(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getImageInfo(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getImageInfo(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getImageInfo(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getImageInfo(args);\n } else {\n throw new Error('Uni API:getImageInfo暂不支持');\n }\n};\nvar previewImage = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].previewImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].previewImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].previewImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].previewImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].previewImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].previewImage(args);\n } else {\n throw new Error('Uni API:previewImage暂不支持');\n }\n};\nvar saveImage = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].saveImage();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].saveImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].saveImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].saveImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].saveImage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].saveImage(args);\n } else {\n throw new Error('Uni API:saveImage暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseImage: chooseImage,\n compressImage: compressImage,\n getImageInfo: getImageInfo,\n previewImage: previewImage,\n saveImage: saveImage\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/kuaishou-miniprogram/chooseImage.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/kuaishou-miniprogram/chooseImage.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar chooseImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].chooseImage(function (args) {\n return ks.chooseImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/kuaishou-miniprogram/compressImage.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/kuaishou-miniprogram/compressImage.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar compressImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].compressImage(function (args) {\n args && typeof args.quality === 'number' && (args.quality *= 33);\n return ks.compressImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (compressImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/kuaishou-miniprogram/getImageInfo.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/kuaishou-miniprogram/getImageInfo.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar getImageInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getImageInfo(function (args) {\n return ks.getImageInfo(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getImageInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/kuaishou-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/kuaishou-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: chooseImage, compressImage, getImageInfo, previewImage, saveImage, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _chooseImage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chooseImage */ \"../dist/lib/@uni/image/es/kuaishou-miniprogram/chooseImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseImage\", function() { return _chooseImage__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _compressImage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compressImage */ \"../dist/lib/@uni/image/es/kuaishou-miniprogram/compressImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"compressImage\", function() { return _compressImage__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getImageInfo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getImageInfo */ \"../dist/lib/@uni/image/es/kuaishou-miniprogram/getImageInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getImageInfo\", function() { return _getImageInfo__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _previewImage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./previewImage */ \"../dist/lib/@uni/image/es/kuaishou-miniprogram/previewImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"previewImage\", function() { return _previewImage__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _saveImage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveImage */ \"../dist/lib/@uni/image/es/kuaishou-miniprogram/saveImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"saveImage\", function() { return _saveImage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseImage: _chooseImage__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n compressImage: _compressImage__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getImageInfo: _getImageInfo__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n previewImage: _previewImage__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n saveImage: _saveImage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/kuaishou-miniprogram/previewImage.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/kuaishou-miniprogram/previewImage.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar previewImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].previewImage(function (args) {\n ks.previewImage(_extends({}, args, {\n current: typeof args.current === 'number' ? args.urls[args.current] : args.urls[0]\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (previewImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/kuaishou-miniprogram/saveImage.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/kuaishou-miniprogram/saveImage.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar saveImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].saveImage(function (args) {\n ks.saveImageToPhotosAlbum(_extends({}, args, {\n filePath: args.url\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (saveImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/web/chooseImage.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/image/es/web/chooseImage.js ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _uni_video_lib_web_chooseMedia_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/video/lib/web/chooseMedia.js */ \"../dist/lib/@uni/video/lib/web/chooseMedia.js\");\n/* harmony import */ var _uni_video_lib_web_chooseMedia_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_uni_video_lib_web_chooseMedia_js__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\nvar chooseImage = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].chooseImage(function (args) {\n if (args === void 0) {\n args = {};\n }\n\n var _args = args,\n _args$count = _args.count,\n count = _args$count === void 0 ? 1 : _args$count,\n _args$success = _args.success,\n success = _args$success === void 0 ? function () {} : _args$success,\n _args$fail = _args.fail,\n fail = _args$fail === void 0 ? function () {} : _args$fail,\n _args$complete = _args.complete,\n complete = _args$complete === void 0 ? function () {} : _args$complete;\n _uni_video_lib_web_chooseMedia_js__WEBPACK_IMPORTED_MODULE_2___default()({\n count: count,\n accept: 'image/*'\n }).then(function (res) {\n var result = {\n tempFilePaths: res.tempFiles.map(function (item) {\n return item.tempFilePath;\n }),\n tempFiles: res.tempFiles.map(function (item) {\n return {\n path: item.tempFilePath,\n size: item.size\n };\n }),\n files: res.files\n };\n success(result);\n complete(result);\n }).catch(function (e) {\n fail(e);\n complete(e);\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/web/compressImage.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/image/es/web/compressImage.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar compressImage = function () {\n throw new Error('Uni API: compressImage不支持');\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (compressImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/web/getImageInfo.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/image/es/web/getImageInfo.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar getImageInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getImageInfo(function (args) {\n var image = new Image();\n image.src = args.src;\n\n if (image.naturalWidth) {\n var res = {\n width: image.naturalWidth,\n height: image.naturalHeight,\n path: args.src\n };\n args.success(res);\n args.complete(res);\n } else {\n var setImageInfo = function () {\n var res = {\n width: image.width,\n height: image.height,\n path: args.src\n };\n args.success(res);\n args.complete(res);\n };\n\n if (image.complete) {\n setImageInfo();\n } else {\n var checkTimer = null;\n\n var clear = function () {\n checkTimer = null;\n clearInterval(checkTimer);\n };\n\n checkTimer = setInterval(function () {\n if (image.width > 0 || image.height > 0) {\n setImageInfo();\n clear();\n }\n }, 40);\n\n image.onload = function () {\n if (checkTimer) {\n setImageInfo();\n clear();\n }\n }; // eslint-disable-next-line no-multi-assign\n\n\n image.onabort = image.onerror = function (e) {\n args.fail(e);\n args.complete(e);\n clear();\n };\n }\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getImageInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/web/index.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/image/es/web/index.js ***!\n \\**********************************************/\n/*! exports provided: chooseImage, compressImage, getImageInfo, previewImage, saveImage, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _chooseImage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chooseImage */ \"../dist/lib/@uni/image/es/web/chooseImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseImage\", function() { return _chooseImage__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _compressImage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compressImage */ \"../dist/lib/@uni/image/es/web/compressImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"compressImage\", function() { return _compressImage__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getImageInfo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getImageInfo */ \"../dist/lib/@uni/image/es/web/getImageInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getImageInfo\", function() { return _getImageInfo__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _previewImage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./previewImage */ \"../dist/lib/@uni/image/es/web/previewImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"previewImage\", function() { return _previewImage__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _saveImage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveImage */ \"../dist/lib/@uni/image/es/web/saveImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"saveImage\", function() { return _saveImage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseImage: _chooseImage__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n compressImage: _compressImage__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getImageInfo: _getImageInfo__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n previewImage: _previewImage__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n saveImage: _saveImage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/web/previewImage.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/image/es/web/previewImage.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar clsPrefix = '__universal_preview_image';\nvar styles = (\".\" + clsPrefix + \" {\\n position: fixed;\\n top: 0;\\n left: 0;\\n right: 0;\\n bottom: 0;\\n z-index: 9999;\\n text-align: center;\\n background: #000;\\n box-sizing: border-box;\\n outline: none;\\n overflow: hidden;\\n animation-duration: .3s;\\n animation-fill-mode: both;\\n}\\n.\" + clsPrefix + \"_pageindex {\\n position: absolute;\\n top: 12px;\\n left: 0;\\n right: 0;\\n text-align: center;\\n color: #fff;\\n font-size: 16px;\\n z-index: 2;\\n}\\n.\" + clsPrefix + \"_swiper {\\n position: relative;\\n width: 100%;\\n height: 100%;\\n z-index: 1;\\n display: flex;\\n align-items: center;\\n transition-property: transform;\\n box-sizing: content-box;\\n}\\n.\" + clsPrefix + \"_item {\\n max-height: 70%;\\n display: flex;\\n justify-content: center;\\n align-items: center;\\n flex-shrink: 0;\\n width: 100%;\\n position: relative;\\n transition-property: transform;\\n overflow: hidden;\\n}\\n.\" + clsPrefix + \"_img {\\n width: 100%;\\n}\\n@keyframes \" + clsPrefix + \"_fadeIn {\\n 0% {\\n opacity: 0;\\n }\\n 100% {\\n opacity: 1;\\n }\\n}\\n@keyframes \" + clsPrefix + \"_fadeOut {\\n 0% {\\n opacity: 1;\\n }\\n 100% {\\n opacity: 0;\\n }\\n}\").replace(/\\n/g, '');\nvar styleElement = null;\nvar previewImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].previewImage(function (args) {\n var _ref$urls = (args || {}).urls,\n urls = _ref$urls === void 0 ? [] : _ref$urls;\n var _ref2$current = (args || {}).current,\n current = _ref2$current === void 0 ? 0 : _ref2$current;\n\n if (Object.prototype.toString.call(urls) !== '[object Array]') {\n throw new Error('the arguments must contain urls that type is a Array');\n }\n\n if (urls.length <= 0) {\n throw new Error('the urls`s length is at least 1');\n }\n\n if (!Number.isSafeInteger(current)) {\n throw new Error('the current must be a safe integer');\n }\n\n current = Math.min(Math.max(current, 0), urls.length - 1);\n\n if (!styleElement) {\n // create a style tag for keyframes\n styleElement = document.createElement('style');\n styleElement.innerHTML = styles;\n document.body.appendChild(styleElement);\n }\n\n var containerEle = document.createElement('div');\n containerEle.className = clsPrefix;\n containerEle.style.animationName = clsPrefix + \"_fadeIn\";\n containerEle.addEventListener('click', function () {\n containerEle.style.animationName = clsPrefix + \"_fadeOut\";\n setTimeout(function () {\n document.body.removeChild(containerEle);\n containerEle = null;\n }, 300);\n });\n var pageIndexEle = document.createElement('div');\n pageIndexEle.className = clsPrefix + \"_pageindex\";\n pageIndexEle.innerText = current + 1 + \"/\" + urls.length;\n containerEle.appendChild(pageIndexEle);\n var swiperEle = document.createElement('div');\n swiperEle.className = clsPrefix + \"_swiper\";\n var damp = 1;\n var clientWidth = document.documentElement.clientWidth;\n var startX = 0;\n swiperEle.addEventListener('touchstart', function (e) {\n if (e.touches.length > 1) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n startX = e.targetTouches[0].pageX;\n });\n swiperEle.addEventListener('touchmove', function (e) {\n if (e.touches.length > 1) {\n e.stopPropagation();\n e.preventDefault();\n }\n\n var moveX = e.targetTouches[0].pageX - startX;\n swiperEle.style.transform = \"translateX(\" + (-clientWidth * current + moveX * damp) + \"px)\";\n });\n swiperEle.addEventListener('touchend', function (e) {\n var endX = e.changedTouches[0].pageX - startX;\n\n if (Math.abs(endX * damp) > clientWidth / 2) {\n current = endX < 0 ? Math.min(current + 1, urls.length - 1) : Math.max(current - 1, 0);\n }\n\n pageIndexEle.innerText = current + 1 + \"/\" + urls.length;\n var transitionDuration = 300;\n swiperEle.style.transitionDuration = transitionDuration + \"ms\";\n swiperEle.style.transform = \"translateX(\" + -clientWidth * current + \"px)\";\n setTimeout(function () {\n swiperEle.style.transitionDuration = '0ms';\n }, transitionDuration);\n });\n swiperEle.style.transform = \"translateX(\" + -clientWidth * current + \"px)\";\n containerEle.appendChild(swiperEle);\n urls.forEach(function (url) {\n var swiperItemEle = document.createElement('div');\n swiperItemEle.className = clsPrefix + \"_item\";\n swiperItemEle.addEventListener('click', function (e) {\n e.stopPropagation();\n });\n swiperEle.appendChild(swiperItemEle);\n var imageEle = document.createElement('img');\n imageEle.className = clsPrefix + \"_img\";\n imageEle.src = url;\n swiperItemEle.appendChild(imageEle);\n swiperItemEle.addEventListener('touchstart', function (e) {\n if (e.touches.length > 1) {\n e.stopPropagation();\n e.preventDefault();\n var point1 = e.touches[0];\n var point2 = e.touches[1];\n var xLen = Math.abs(point2.pageX - point1.pageX);\n var yLen = Math.abs(point2.pageY - point1.pageY);\n swiperItemEle.touchDistance = Math.sqrt(xLen * xLen + yLen * yLen);\n } else {\n swiperItemEle.touched = {\n x: e.touches[0].pageX,\n y: e.touches[0].pageY\n };\n }\n });\n swiperItemEle.addEventListener('touchmove', function (e) {\n if (e.touches.length > 1) {\n e.stopPropagation();\n e.preventDefault();\n var xLen = Math.abs(e.touches[0].pageX - e.touches[1].pageX);\n var yLen = Math.abs(e.touches[1].pageY - e.touches[1].pageY);\n var touchDistance = Math.sqrt(xLen * xLen + yLen * yLen);\n\n if (swiperItemEle.touchDistance) {\n var pinchScale = (swiperItemEle.previousPinchScale || 1) + (touchDistance - swiperItemEle.touchDistance) / swiperItemEle.touchDistance;\n var imageScale = Math.max(1, pinchScale);\n imageEle.style.transform = \"scale(\" + imageScale + \")\";\n swiperItemEle.previousPinchScale = imageScale;\n }\n\n swiperItemEle.touchDistance = touchDistance;\n } else if (swiperItemEle.previousPinchScale > 1) {\n e.stopPropagation();\n var x = (swiperItemEle.preX || 0) + (e.touches[0].pageX - swiperItemEle.touched.x);\n var y = (swiperItemEle.preY || 0) + (e.touches[0].pageY - swiperItemEle.touched.y);\n imageEle.style.transform = \"scale(\" + swiperItemEle.previousPinchScale + \") translate(\" + x + \"px, \" + y + \"px)\";\n swiperItemEle.preX = x;\n swiperItemEle.preY = y;\n swiperItemEle.touched = {\n x: e.touches[0].pageX,\n y: e.touches[0].pageY\n };\n }\n });\n });\n document.body.appendChild(containerEle);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (previewImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/web/saveImage.js\":\n/*!**************************************************!*\\\n !*** ../dist/lib/@uni/image/es/web/saveImage.js ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar saveImage = function () {\n throw new Error('Uni API: saveImage不支持');\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (saveImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/wechat-miniprogram/chooseImage.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/wechat-miniprogram/chooseImage.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar chooseImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].chooseImage(function (args) {\n return wx.chooseImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/wechat-miniprogram/compressImage.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/wechat-miniprogram/compressImage.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar compressImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].compressImage(function (args) {\n args && typeof args.quality === 'number' && (args.quality = args.quality * 33);\n return wx.compressImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (compressImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/wechat-miniprogram/getImageInfo.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/wechat-miniprogram/getImageInfo.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\n\n\nvar getImageInfo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getImageInfo(function (args) {\n return wx.getImageInfo(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getImageInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/wechat-miniprogram/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/wechat-miniprogram/index.js ***!\n \\*************************************************************/\n/*! exports provided: chooseImage, compressImage, getImageInfo, previewImage, saveImage, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _chooseImage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chooseImage */ \"../dist/lib/@uni/image/es/wechat-miniprogram/chooseImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseImage\", function() { return _chooseImage__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _compressImage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./compressImage */ \"../dist/lib/@uni/image/es/wechat-miniprogram/compressImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"compressImage\", function() { return _compressImage__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getImageInfo__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getImageInfo */ \"../dist/lib/@uni/image/es/wechat-miniprogram/getImageInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getImageInfo\", function() { return _getImageInfo__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _previewImage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./previewImage */ \"../dist/lib/@uni/image/es/wechat-miniprogram/previewImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"previewImage\", function() { return _previewImage__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _saveImage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./saveImage */ \"../dist/lib/@uni/image/es/wechat-miniprogram/saveImage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"saveImage\", function() { return _saveImage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseImage: _chooseImage__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n compressImage: _compressImage__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getImageInfo: _getImageInfo__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n previewImage: _previewImage__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n saveImage: _saveImage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/wechat-miniprogram/previewImage.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/wechat-miniprogram/previewImage.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar previewImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].previewImage(function (args) {\n wx.previewImage(_extends({}, args, {\n current: typeof args.current === 'number' ? args.urls[args.current] : args.urls[0]\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (previewImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/image/es/wechat-miniprogram/saveImage.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/image/es/wechat-miniprogram/saveImage.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/image/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/image/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar saveImage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].saveImage(function (args) {\n wx.saveImageToPhotosAlbum(_extends({}, args, {\n filePath: args.url\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (saveImage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/intersection-observer/es/_utils/miniappEnvApp.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/intersection-observer/es/_utils/miniappEnvApp.js ***!\n \\*************************************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/intersection-observer/es/ali-miniapp/index.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/intersection-observer/es/ali-miniapp/index.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/intersection-observer/es/_utils/miniappEnvApp.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var _dd, _my;\n\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? (_dd = dd).createIntersectionObserver.apply(_dd, arguments) : (_my = my).createIntersectionObserver.apply(_my, arguments);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/intersection-observer/es/baidu-smartprogram/index.js\":\n/*!*****************************************************************************!*\\\n !*** ../dist/lib/@uni/intersection-observer/es/baidu-smartprogram/index.js ***!\n \\*****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options, context) {\n if (context === void 0) {\n context = swan;\n } // 防止传入自定义组件的this没有createIntersectionObserver\n\n\n return context === swan || !context.createIntersectionObserver ? context.createIntersectionObserver(null, options) : context.createIntersectionObserver(options);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/intersection-observer/es/bytedance-microapp/index.js\":\n/*!*****************************************************************************!*\\\n !*** ../dist/lib/@uni/intersection-observer/es/bytedance-microapp/index.js ***!\n \\*****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options, context) {\n if (context === void 0) {\n context = tt;\n }\n\n if (options && options.selectAll != undefined) {\n options.observeAll = options.selectAll;\n } // 防止传入自定义组件的this没有createIntersectionObserver\n\n\n return context === tt || !context.createIntersectionObserver ? context.createIntersectionObserver(null, options) : context.createIntersectionObserver(options);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/intersection-observer/es/index.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/intersection-observer/es/index.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/intersection-observer/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/intersection-observer/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/intersection-observer/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/intersection-observer/es/bytedance-microapp/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/intersection-observer/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar createIntersectionObserver = function () {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].apply(void 0, arguments);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n throw new Error('Uni API:IntersectionObserver暂不支持');\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].apply(void 0, arguments);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].apply(void 0, arguments);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].apply(void 0, arguments);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].apply(void 0, arguments);\n } else {\n throw new Error('Uni API:IntersectionObserver暂不支持');\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createIntersectionObserver);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/intersection-observer/es/web/index.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/intersection-observer/es/web/index.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction buildMarginStr(margins) {\n return (Number(margins.top) || 0) + \"px \" + (Number(margins.right) || 0) + \"px \" + (Number(margins.bottom) || 0) + \"px \" + (Number(margins.left) || 0) + \"px\";\n}\n\nfunction IntersectionObservers(options) {\n this.thresholds = options && options.thresholds ? options.thresholds : [0];\n this.initialRatio = options && options.initialRatio ? options.initialRatio : 0;\n this.selectAll = options && options.selectAll ? options.selectAll : false;\n\n this.callBack = function () {};\n\n this.observers = [];\n}\n\nfunction relative(root, self, margins) {\n var options = {\n root: root,\n rootMargin: margins ? buildMarginStr(margins) : '0px',\n threshold: self.thresholds\n };\n self.observers.push(new IntersectionObserver(function () {\n self.callBack.apply(self, arguments);\n }, options));\n}\n\nIntersectionObservers.prototype.relativeTo = function (selector, margins) {\n relative(document.querySelector(selector), this, margins);\n return this;\n};\n\nIntersectionObservers.prototype.relativeToViewport = function (margins) {\n relative(null, this, margins);\n return this;\n};\n\nIntersectionObservers.prototype.observe = function (targetSelector, callback) {\n var _this = this;\n\n if (this.selectAll) {\n var targets = document.querySelectorAll(targetSelector);\n targets.forEach(function (target) {\n return _this.observers.forEach(function (observer) {\n return observer.observe(target);\n });\n });\n } else {\n var target = document.querySelector(targetSelector);\n this.observers.forEach(function (observer) {\n return observer.observe(target);\n });\n }\n\n this.callBack = function (entries) {\n entries.forEach(function (entry) {\n callback && typeof callback === 'function' && callback({\n boundingClientRect: entry.boundingClientRect,\n intersectionRatio: entry.intersectionRatio,\n intersectionRect: entry.intersectionRect,\n relativeRect: entry.rootBounds,\n time: entry.time\n });\n });\n };\n\n return this;\n};\n\nIntersectionObservers.prototype.disconnect = function () {\n this.callBack = function () {};\n\n this.observers = [];\n this.observers.forEach(function (observer) {\n observer.disconnect();\n });\n return this;\n};\n\nvar createIntersectionObserver = function (options) {\n return new IntersectionObservers(options);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createIntersectionObserver);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/intersection-observer/es/wechat-miniprogram/index.js\":\n/*!*****************************************************************************!*\\\n !*** ../dist/lib/@uni/intersection-observer/es/wechat-miniprogram/index.js ***!\n \\*****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options, context) {\n if (context === void 0) {\n context = wx;\n }\n\n if (options && options.selectAll != undefined) {\n options.observeAll = options.selectAll;\n } // 防止传入自定义组件的this没有createIntersectionObserver\n\n\n return context === wx || !context.createIntersectionObserver ? context.createIntersectionObserver(null, options) : context.createIntersectionObserver(options);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/_utils/constant.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/_utils/constant.js ***!\n \\******************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/_utils/miniappEnvApp.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/_utils/miniappEnvApp.js ***!\n \\***********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/_utils/promisify.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/_utils/promisify.js ***!\n \\*******************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/_utils/styleOptions.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/_utils/styleOptions.js ***!\n \\**********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/ali-miniapp/hideLoading.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/ali-miniapp/hideLoading.js ***!\n \\**************************************************************/\n/*! exports provided: hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return hideLoading; });\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/loading/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/loading/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/loading/es/_utils/constant.js\");\n\n\n\nvar hideLoading = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeHide\"])(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.hideLoading(args) : my.hideLoading(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideLoading);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/ali-miniapp/index.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/ali-miniapp/index.js ***!\n \\********************************************************/\n/*! exports provided: showLoading, hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showLoading__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showLoading */ \"../dist/lib/@uni/loading/es/ali-miniapp/showLoading.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return _showLoading__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hideLoading__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideLoading */ \"../dist/lib/@uni/loading/es/ali-miniapp/hideLoading.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return _hideLoading__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showLoading: _showLoading__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hideLoading: _hideLoading__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/ali-miniapp/showLoading.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/ali-miniapp/showLoading.js ***!\n \\**************************************************************/\n/*! exports provided: showLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return showLoading; });\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/loading/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/loading/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/loading/es/_utils/constant.js\");\n\n\n\nvar showLoading = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeShow\"])(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.showLoading(args) : my.showLoading(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (showLoading);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/baidu-smartprogram/hideLoading.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/baidu-smartprogram/hideLoading.js ***!\n \\*********************************************************************/\n/*! exports provided: hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return hideLoading; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/loading/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/loading/es/_utils/constant.js\");\n\n\nvar hideLoading = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeHide\"])(function (args) {\n return swan.hideLoading(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideLoading);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/baidu-smartprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/baidu-smartprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: showLoading, hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showLoading__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showLoading */ \"../dist/lib/@uni/loading/es/baidu-smartprogram/showLoading.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return _showLoading__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hideLoading__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideLoading */ \"../dist/lib/@uni/loading/es/baidu-smartprogram/hideLoading.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return _hideLoading__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showLoading: _showLoading__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hideLoading: _hideLoading__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/baidu-smartprogram/showLoading.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/baidu-smartprogram/showLoading.js ***!\n \\*********************************************************************/\n/*! exports provided: showLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return showLoading; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/loading/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/loading/es/_utils/constant.js\");\n\n\nvar showLoading = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeShow\"])(function (args) {\n return swan.showLoading(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (showLoading);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/bytedance-microapp/hideLoading.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/bytedance-microapp/hideLoading.js ***!\n \\*********************************************************************/\n/*! exports provided: hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return hideLoading; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/loading/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/loading/es/_utils/constant.js\");\n\n\nvar hideLoading = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeHide\"])(function (args) {\n return tt.hideLoading(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideLoading);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/bytedance-microapp/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/bytedance-microapp/index.js ***!\n \\***************************************************************/\n/*! exports provided: showLoading, hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showLoading__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showLoading */ \"../dist/lib/@uni/loading/es/bytedance-microapp/showLoading.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return _showLoading__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hideLoading__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideLoading */ \"../dist/lib/@uni/loading/es/bytedance-microapp/hideLoading.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return _hideLoading__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showLoading: _showLoading__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hideLoading: _hideLoading__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/bytedance-microapp/showLoading.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/bytedance-microapp/showLoading.js ***!\n \\*********************************************************************/\n/*! exports provided: showLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return showLoading; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/loading/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/loading/es/_utils/constant.js\");\n\n\nvar showLoading = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeShow\"])(function (args) {\n return tt.showLoading(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (showLoading);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/common.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/loading/es/common.js ***!\n \\*********************************************/\n/*! exports provided: normalizeShow, normalizeHide */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeShow\", function() { return normalizeShow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeHide\", function() { return normalizeHide; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/loading/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/loading/es/_utils/styleOptions.js\");\n\n\n\n\nfunction styleOptions(options) {\n if (!options) {\n options = {};\n }\n\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"] || _uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"] || _uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"] || _uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n // 在微信、百度和字节小程序中title是必选项,但是可以传空字符串,快手是选填项,微信可能存在mask显示透明蒙层,防止触摸穿透的问题,测试的时候看下\n options.title = options.content || '';\n delete options.content;\n }\n\n return options;\n}\n/**\n * showLoading\n * @param api\n */\n\n\nfunction normalizeShow(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_1__[\"promisify\"])(api)(styleOptions(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_2__[\"styleIn\"])(args, containerName)));\n };\n}\nfunction normalizeHide(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_1__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_2__[\"styleIn\"])(args, containerName));\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/index.js\":\n/*!********************************************!*\\\n !*** ../dist/lib/@uni/loading/es/index.js ***!\n \\********************************************/\n/*! exports provided: showLoading, hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return showLoading; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return hideLoading; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/loading/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/loading/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/loading/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/loading/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/loading/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/loading/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar showLoading = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].showLoading(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].showLoading(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showLoading(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showLoading(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showLoading(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showLoading(args);\n } else {\n throw new Error('Uni API:showLoading暂不支持');\n }\n};\nvar hideLoading = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].hideLoading(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].hideLoading(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hideLoading(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].hideLoading(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hideLoading(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hideLoading(args);\n } else {\n throw new Error('Uni API:hideLoading暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showLoading: showLoading,\n hideLoading: hideLoading\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/kuaishou-miniprogram/hideLoading.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/kuaishou-miniprogram/hideLoading.js ***!\n \\***********************************************************************/\n/*! exports provided: hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return hideLoading; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/loading/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/loading/es/_utils/constant.js\");\n\n\nvar hideLoading = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeHide\"])(function (args) {\n return ks.hideLoading(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideLoading);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/kuaishou-miniprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/kuaishou-miniprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: showLoading, hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showLoading__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showLoading */ \"../dist/lib/@uni/loading/es/kuaishou-miniprogram/showLoading.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return _showLoading__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hideLoading__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideLoading */ \"../dist/lib/@uni/loading/es/kuaishou-miniprogram/hideLoading.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return _hideLoading__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showLoading: _showLoading__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hideLoading: _hideLoading__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/kuaishou-miniprogram/showLoading.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/kuaishou-miniprogram/showLoading.js ***!\n \\***********************************************************************/\n/*! exports provided: showLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return showLoading; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/loading/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/loading/es/_utils/constant.js\");\n\n\nvar showLoading = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeShow\"])(function (args) {\n return ks.showLoading(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (showLoading);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/web/hideLoading.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/web/hideLoading.js ***!\n \\******************************************************/\n/*! exports provided: hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return hideLoading; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/loading/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/loading/es/_utils/constant.js\");\n\n\nvar hideLoading = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeHide\"])(function (_ref) {\n var _ref$success = _ref.success,\n success = _ref$success === void 0 ? function () {} : _ref$success,\n _ref$fail = _ref.fail,\n fail = _ref$fail === void 0 ? function () {} : _ref$fail,\n _ref$complete = _ref.complete,\n complete = _ref$complete === void 0 ? function () {} : _ref$complete;\n\n try {\n setTimeout(function () {\n if (window.__uni_loadingWin && window.__uni_loadingWin.parentNode) {\n window.__uni_loadingWin.parentNode.removeChild(window.__uni_loadingWin);\n }\n\n window.__uni_loadingWin = null;\n success();\n complete();\n }, 0);\n } catch (error) {\n fail();\n complete();\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideLoading);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/web/index.js\":\n/*!************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/web/index.js ***!\n \\************************************************/\n/*! exports provided: showLoading, hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showLoading__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showLoading */ \"../dist/lib/@uni/loading/es/web/showLoading.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return _showLoading__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hideLoading__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideLoading */ \"../dist/lib/@uni/loading/es/web/hideLoading.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return _hideLoading__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showLoading: _showLoading__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hideLoading: _hideLoading__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/web/showLoading.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/web/showLoading.js ***!\n \\******************************************************/\n/*! exports provided: showLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return showLoading; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/loading/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/loading/es/_utils/constant.js\");\n\n // window.__uni_loadingWin = null;\n\nvar clsPrefix = '__universal_loading';\nvar styles = (\".\" + clsPrefix + \" {\\n background-color: rgba(0, 0, 0, 0.6);\\n box-sizing: border-box;\\n max-width: 80%;\\n color: #ffffff;\\n padding: 15px;\\n position: fixed;\\n left: 50%;\\n bottom: 50%;\\n border-radius: 4px;\\n text-align: center;\\n transform: translateX(-50%);\\n -webkit-transform: translateX(-50%);\\n z-index: 9999;\\n outline: none;\\n}\\n.\" + clsPrefix + \"_circle {\\n border: 2px solid rgba(200, 200, 200, 0.5);\\n border-radius: 50%;\\n position: relative;\\n height: 40px;\\n width: 40px;\\n margin: auto;\\n}\\n.\" + clsPrefix + \"_circle:after {\\n content: \\\"\\\";\\n display: block;\\n border-radius: 50%;\\n width: 100%;\\n height: 100%;\\n position: absolute;\\n top: -2px;\\n left: -2px;\\n border: 2px solid;\\n border-color: transparent;\\n border-left-color: #fff;\\n box-sizing: content-box;\\n animation: \" + clsPrefix + \"_roller 1s infinite linear;\\n}\\n.\" + clsPrefix + \"_text {\\n margin-top: 6px;\\n color: #fff;\\n line-height: 1.5;\\n font-size: 14px;\\n text-align: center;\\n font-weight: normal;\\n}\\n@keyframes \" + clsPrefix + \"_roller {\\n 0% {\\n transform: rotateZ(0);\\n }\\n 100% {\\n transform: rotateZ(360deg);\\n }\\n}\").replace(/\\n/g, '');\n/*\n * @param message {String}\n */\n\nvar styleElement = null;\nvar showLoading = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeShow\"])(function (_ref) {\n var _ref$content = _ref.content,\n content = _ref$content === void 0 ? '' : _ref$content,\n _ref$success = _ref.success,\n success = _ref$success === void 0 ? function () {} : _ref$success,\n _ref$fail = _ref.fail,\n fail = _ref$fail === void 0 ? function () {} : _ref$fail,\n _ref$complete = _ref.complete,\n complete = _ref$complete === void 0 ? function () {} : _ref$complete;\n\n try {\n if (!styleElement) {\n // create a style tag for keyframes\n styleElement = document.createElement('style');\n styleElement.innerHTML = styles;\n document.body.appendChild(styleElement);\n }\n\n if (!window.__uni_loadingWin) {\n // create loading win\n window.__uni_loadingWin = document.createElement('div');\n window.__uni_loadingWin.className = clsPrefix;\n\n window.__uni_loadingWin.setAttribute('role', 'alert'); // support for ARIA, add tabindex for focus\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/tabindex\n\n\n window.__uni_loadingWin.setAttribute('tabindex', '-1'); // add a circle element\n\n\n var circle = document.createElement('div');\n circle.className = clsPrefix + \"_circle\";\n\n window.__uni_loadingWin.appendChild(circle); // add text element\n\n\n var _text = document.createElement('div');\n\n _text.className = clsPrefix + \"_text\";\n\n window.__uni_loadingWin.appendChild(_text);\n\n document.body.appendChild(window.__uni_loadingWin);\n }\n\n var text = window.__uni_loadingWin.querySelector(\".\" + clsPrefix + \"_text\");\n\n if (content) {\n text.style.display = 'block';\n text.innerText = content;\n } else {\n text.style.display = 'none';\n text.innerText = '';\n }\n\n success();\n complete();\n } catch (error) {\n fail();\n complete();\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (showLoading);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/wechat-miniprogram/hideLoading.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/wechat-miniprogram/hideLoading.js ***!\n \\*********************************************************************/\n/*! exports provided: hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return hideLoading; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/loading/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/loading/es/_utils/constant.js\");\n\n\nvar hideLoading = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeHide\"])(function (args) {\n return wx.hideLoading(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideLoading);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/wechat-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/wechat-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: showLoading, hideLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showLoading__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showLoading */ \"../dist/lib/@uni/loading/es/wechat-miniprogram/showLoading.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return _showLoading__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hideLoading__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideLoading */ \"../dist/lib/@uni/loading/es/wechat-miniprogram/hideLoading.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideLoading\", function() { return _hideLoading__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showLoading: _showLoading__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hideLoading: _hideLoading__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/loading/es/wechat-miniprogram/showLoading.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/loading/es/wechat-miniprogram/showLoading.js ***!\n \\*********************************************************************/\n/*! exports provided: showLoading, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showLoading\", function() { return showLoading; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/loading/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/loading/es/_utils/constant.js\");\n\n\nvar showLoading = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeShow\"])(function (args) {\n return wx.showLoading(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (showLoading);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/_utils/constant.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/location/es/_utils/constant.js ***!\n \\*******************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/_utils/miniappEnvApp.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/_utils/miniappEnvApp.js ***!\n \\************************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/_utils/promisify.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/location/es/_utils/promisify.js ***!\n \\********************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/_utils/styleOptions.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/location/es/_utils/styleOptions.js ***!\n \\***********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/ali-miniapp/chooseLocation.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/ali-miniapp/chooseLocation.js ***!\n \\******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/location/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n\n\n\nvar chooseLocation = Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"normalizeChooseLocation\"])(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.chooseLocation(args) : my.chooseLocation(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/ali-miniapp/getLocation.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/ali-miniapp/getLocation.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/location/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n\n\n\nvar getLocation = Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"normalizeGetLocation\"])(function (args) {\n args.resultType = args.resultType || 0;\n\n if (args != null && args.type && typeof args.type === 'string') {\n args.type = 0;\n }\n\n if (args != null && args.resultType && typeof args.resultType === 'number' && !isNaN(args.resultType)) {\n args.type = \"\" + args.resultType;\n }\n\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.getLocation(args) : my.getLocation(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/ali-miniapp/index.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/location/es/ali-miniapp/index.js ***!\n \\*********************************************************/\n/*! exports provided: getLocation, openLocation, chooseLocation, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getLocation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getLocation */ \"../dist/lib/@uni/location/es/ali-miniapp/getLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return _getLocation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _openLocation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./openLocation */ \"../dist/lib/@uni/location/es/ali-miniapp/openLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openLocation\", function() { return _openLocation__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _chooseLocation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseLocation */ \"../dist/lib/@uni/location/es/ali-miniapp/chooseLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseLocation\", function() { return _chooseLocation__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getLocation: _getLocation__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n openLocation: _openLocation__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n chooseLocation: _chooseLocation__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/ali-miniapp/openLocation.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/ali-miniapp/openLocation.js ***!\n \\****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/location/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nvar openLocation = Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"normalizeOpenLocation\"])(function (args) {\n var params = _extends({}, args, {\n latitude: String(args.latitude),\n longitude: String(args.longitude)\n });\n\n _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.openLocation(params) : my.openLocation(params);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (openLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/baidu-smartprogram/chooseLocation.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/baidu-smartprogram/chooseLocation.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n\n\nvar chooseLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeChooseLocation\"])(function (args) {\n return swan.chooseLocation(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/baidu-smartprogram/getLocation.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/baidu-smartprogram/getLocation.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n\n\nvar getLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeGetLocation\"])(function (args) {\n return swan.getLocation(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/baidu-smartprogram/index.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/baidu-smartprogram/index.js ***!\n \\****************************************************************/\n/*! exports provided: getLocation, openLocation, chooseLocation, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getLocation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getLocation */ \"../dist/lib/@uni/location/es/baidu-smartprogram/getLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return _getLocation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _openLocation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./openLocation */ \"../dist/lib/@uni/location/es/baidu-smartprogram/openLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openLocation\", function() { return _openLocation__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _chooseLocation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseLocation */ \"../dist/lib/@uni/location/es/baidu-smartprogram/chooseLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseLocation\", function() { return _chooseLocation__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getLocation: _getLocation__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n openLocation: _openLocation__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n chooseLocation: _chooseLocation__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/baidu-smartprogram/openLocation.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/baidu-smartprogram/openLocation.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar openLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeOpenLocation\"])(function (args) {\n return swan.openLocation(_extends({}, args, {\n latitude: Number(args.latitude),\n longitude: Number(args.longitude)\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (openLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/bytedance-microapp/chooseLocation.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/bytedance-microapp/chooseLocation.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n\n\nvar chooseLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeChooseLocation\"])(function (args) {\n return tt.chooseLocation(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/bytedance-microapp/getLocation.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/bytedance-microapp/getLocation.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n\n\nvar getLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeGetLocation\"])(function (args) {\n return tt.getLocation(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/bytedance-microapp/index.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/bytedance-microapp/index.js ***!\n \\****************************************************************/\n/*! exports provided: getLocation, openLocation, chooseLocation, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getLocation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getLocation */ \"../dist/lib/@uni/location/es/bytedance-microapp/getLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return _getLocation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _openLocation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./openLocation */ \"../dist/lib/@uni/location/es/bytedance-microapp/openLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openLocation\", function() { return _openLocation__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _chooseLocation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseLocation */ \"../dist/lib/@uni/location/es/bytedance-microapp/chooseLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseLocation\", function() { return _chooseLocation__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getLocation: _getLocation__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n openLocation: _openLocation__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n chooseLocation: _chooseLocation__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/bytedance-microapp/openLocation.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/bytedance-microapp/openLocation.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar openLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeOpenLocation\"])(function (args) {\n return tt.openLocation(_extends({}, args, {\n latitude: Number(args.latitude),\n longitude: Number(args.longitude)\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (openLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/common.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/location/es/common.js ***!\n \\**********************************************/\n/*! exports provided: normalizeGetLocation, normalizeOpenLocation, normalizeChooseLocation */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeGetLocation\", function() { return normalizeGetLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeOpenLocation\", function() { return normalizeOpenLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeChooseLocation\", function() { return normalizeChooseLocation; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/location/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/location/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n/**\n * getLocation返回值格式化\n * @param res\n */\n\nvar formatResponse = function (res) {\n var result = _extends({}, res, {\n latitude: String(res.latitude),\n longitude: String(res.longitude),\n accuracy: String(res.accuracy),\n horizontalAccuracy: String(res.horizontalAccuracy)\n });\n\n return result;\n};\n\nfunction styleOptions(options) {\n if (options === void 0) {\n options = {};\n }\n\n return _extends({}, options, {\n success: function (res) {\n options.success && options.success(formatResponse(res));\n },\n complete: function (res) {\n options.complete && options.complete(res);\n }\n });\n}\n\nfunction normalizeGetLocation(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(styleOptions(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName))).then(formatResponse);\n };\n}\n/**\n * openLocation\n * @param api\n */\n\nfunction normalizeOpenLocation(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n}\n/**\n * chooseLocation\n */\n\nfunction normalizeChooseLocation(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/index.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/location/es/index.js ***!\n \\*********************************************/\n/*! exports provided: getLocation, openLocation, chooseLocation, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return getLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"openLocation\", function() { return openLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"chooseLocation\", function() { return chooseLocation; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/location/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/location/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/location/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/location/es/bytedance-microapp/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/location/es/baidu-smartprogram/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/location/es/kuaishou-miniprogram/index.js\");\n\n\n\n\n\n\n\nvar getLocation = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getLocation(args);\n } else {\n throw new Error('Uni API:getLocation暂不支持');\n }\n};\nvar openLocation = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].openLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].openLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].openLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].openLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].openLocation(args);\n } else {\n throw new Error('Uni API:openLocation暂不支持');\n }\n};\nvar chooseLocation = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].chooseLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chooseLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].chooseLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].chooseLocation(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].chooseLocation(args);\n } else {\n throw new Error('@uni/apis:chooseLocation暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getLocation: getLocation,\n openLocation: openLocation,\n chooseLocation: chooseLocation\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/kuaishou-miniprogram/chooseLocation.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/kuaishou-miniprogram/chooseLocation.js ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n\n\nvar chooseLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeChooseLocation\"])(function (args) {\n return ks.chooseLocation(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/kuaishou-miniprogram/getLocation.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/kuaishou-miniprogram/getLocation.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n\n\nvar getLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeGetLocation\"])(function (args) {\n return ks.getLocation(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/kuaishou-miniprogram/index.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/kuaishou-miniprogram/index.js ***!\n \\******************************************************************/\n/*! exports provided: getLocation, openLocation, chooseLocation, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getLocation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getLocation */ \"../dist/lib/@uni/location/es/kuaishou-miniprogram/getLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return _getLocation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _openLocation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./openLocation */ \"../dist/lib/@uni/location/es/kuaishou-miniprogram/openLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openLocation\", function() { return _openLocation__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _chooseLocation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseLocation */ \"../dist/lib/@uni/location/es/kuaishou-miniprogram/chooseLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseLocation\", function() { return _chooseLocation__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getLocation: _getLocation__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n openLocation: _openLocation__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n chooseLocation: _chooseLocation__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/kuaishou-miniprogram/openLocation.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/kuaishou-miniprogram/openLocation.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar openLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeOpenLocation\"])(function (args) {\n return ks.openLocation(_extends({}, args, {\n latitude: Number(args.latitude),\n longitude: Number(args.longitude)\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (openLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/web/chooseLocation.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/location/es/web/chooseLocation.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n\n\nvar chooseLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeChooseLocation\"])(function () {\n throw new Error('@uni/apis: chooseLocation不支持');\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/web/getLocation.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/location/es/web/getLocation.js ***!\n \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n\n\nvar getLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeGetLocation\"])(function (args) {\n var _args$success = args.success,\n success = _args$success === void 0 ? function () {} : _args$success,\n _args$fail = args.fail,\n fail = _args$fail === void 0 ? function () {} : _args$fail,\n _args$complete = args.complete,\n complete = _args$complete === void 0 ? function () {} : _args$complete;\n\n if ('geolocation' in navigator) {\n /* 地理位置服务可用 */\n navigator.geolocation.getCurrentPosition(function (position) {\n success(position.coords);\n complete(position.coords);\n }, function (err) {\n fail(err);\n complete(err);\n });\n } else {\n /* 地理位置服务不可用 */\n var err = {\n code: -1,\n message: '地理位置服务不可用'\n };\n fail(err);\n complete(err);\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/web/index.js\":\n/*!*************************************************!*\\\n !*** ../dist/lib/@uni/location/es/web/index.js ***!\n \\*************************************************/\n/*! exports provided: getLocation, openLocation, chooseLocation, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getLocation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getLocation */ \"../dist/lib/@uni/location/es/web/getLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return _getLocation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _openLocation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./openLocation */ \"../dist/lib/@uni/location/es/web/openLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openLocation\", function() { return _openLocation__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _chooseLocation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseLocation */ \"../dist/lib/@uni/location/es/web/chooseLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseLocation\", function() { return _chooseLocation__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getLocation: _getLocation__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n openLocation: _openLocation__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n chooseLocation: _chooseLocation__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/web/openLocation.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/location/es/web/openLocation.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n\n\nvar openLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeOpenLocation\"])(function () {\n throw new Error('Uni API: openLocation不支持');\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (openLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/wechat-miniprogram/chooseLocation.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/wechat-miniprogram/chooseLocation.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n\n\nvar chooseLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeChooseLocation\"])(function (args) {\n return wx.chooseLocation(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/wechat-miniprogram/getLocation.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/wechat-miniprogram/getLocation.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\n\n\nvar getLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeGetLocation\"])(function (args) {\n return wx.getLocation(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/wechat-miniprogram/index.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/wechat-miniprogram/index.js ***!\n \\****************************************************************/\n/*! exports provided: getLocation, openLocation, chooseLocation, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getLocation__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getLocation */ \"../dist/lib/@uni/location/es/wechat-miniprogram/getLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getLocation\", function() { return _getLocation__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _openLocation__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./openLocation */ \"../dist/lib/@uni/location/es/wechat-miniprogram/openLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"openLocation\", function() { return _openLocation__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _chooseLocation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseLocation */ \"../dist/lib/@uni/location/es/wechat-miniprogram/chooseLocation.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseLocation\", function() { return _chooseLocation__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getLocation: _getLocation__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n openLocation: _openLocation__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n chooseLocation: _chooseLocation__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/location/es/wechat-miniprogram/openLocation.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/location/es/wechat-miniprogram/openLocation.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/location/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/location/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar openLocation = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeOpenLocation\"])(function (args) {\n return wx.openLocation(_extends({}, args, {\n latitude: Number(args.latitude),\n longitude: Number(args.longitude)\n }));\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (openLocation);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/make-phone-call/es/_utils/constant.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/make-phone-call/es/_utils/constant.js ***!\n \\**************************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/make-phone-call/es/_utils/miniappEnvApp.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/make-phone-call/es/_utils/miniappEnvApp.js ***!\n \\*******************************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/make-phone-call/es/_utils/promisify.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/make-phone-call/es/_utils/promisify.js ***!\n \\***************************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/make-phone-call/es/_utils/styleOptions.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/make-phone-call/es/_utils/styleOptions.js ***!\n \\******************************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/make-phone-call/es/ali-miniapp/index.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/make-phone-call/es/ali-miniapp/index.js ***!\n \\****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/make-phone-call/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/make-phone-call/es/_utils/constant.js\");\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/make-phone-call/es/_utils/miniappEnvApp.js\");\nvar _excluded = [\"phoneNumber\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\n\n\nvar makePhoneCall = function (options) {\n if (_utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_2__[\"isDingdingMiniapp\"]) {\n dd.showCallMenu(options);\n } else {\n var phoneNumber = options.phoneNumber,\n ext = _objectWithoutPropertiesLoose(options, _excluded);\n\n my.makePhoneCall(_extends({}, ext, {\n number: phoneNumber\n }));\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(makePhoneCall, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/make-phone-call/es/baidu-smartprogram/index.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/make-phone-call/es/baidu-smartprogram/index.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/make-phone-call/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/make-phone-call/es/_utils/constant.js\");\n\n\n\nvar makePhoneCall = function (options) {\n swan.makePhoneCall(options);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(makePhoneCall, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/make-phone-call/es/bytedance-microapp/index.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/make-phone-call/es/bytedance-microapp/index.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/make-phone-call/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/make-phone-call/es/_utils/constant.js\");\n\n\n\nvar makePhoneCall = function (options) {\n tt.makePhoneCall(options);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(makePhoneCall, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/make-phone-call/es/common.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/make-phone-call/es/common.js ***!\n \\*****************************************************/\n/*! exports provided: normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/make-phone-call/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/make-phone-call/es/_utils/styleOptions.js\");\n\n\nfunction normalize(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/make-phone-call/es/index.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/make-phone-call/es/index.js ***!\n \\****************************************************/\n/*! exports provided: makePhoneCall, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"makePhoneCall\", function() { return makePhoneCall; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/make-phone-call/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/make-phone-call/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/make-phone-call/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/make-phone-call/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/make-phone-call/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/make-phone-call/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\n/**\n * call phone\n * @param options\n */\n\nfunction makePhoneCall(options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return Object(_web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return Object(_kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return Object(_wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return Object(_bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return Object(_ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return Object(_baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(options);\n } else {\n throw new Error('Uni API:makePhoneCall 暂不支持');\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (makePhoneCall);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/make-phone-call/es/kuaishou-miniprogram/index.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/make-phone-call/es/kuaishou-miniprogram/index.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/make-phone-call/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/make-phone-call/es/_utils/constant.js\");\n\n\n\nvar makePhoneCall = function (options) {\n ks.makePhoneCall(options);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(makePhoneCall, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/make-phone-call/es/web/index.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/make-phone-call/es/web/index.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/make-phone-call/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/make-phone-call/es/_utils/constant.js\");\n\n\n\nvar makePhoneCall = function (options) {\n var phoneNumber = options == null ? void 0 : options.phoneNumber;\n var a = document.createElement('a');\n a.href = \"tel:\" + phoneNumber;\n a.innerHTML = \"tel:\" + phoneNumber;\n a.style.display = 'none';\n document.body.appendChild(a);\n setTimeout(function () {\n a.click(); // remove\n\n setTimeout(function () {\n try {\n document.body.removeChild(a);\n } catch (e) {// ignore\n } finally {\n options == null ? void 0 : options.success(); // set resolved\n }\n }, 0);\n }, 0);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(makePhoneCall, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/make-phone-call/es/wechat-miniprogram/index.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/make-phone-call/es/wechat-miniprogram/index.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/make-phone-call/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/make-phone-call/es/_utils/constant.js\");\n\n\n\nvar makePhoneCall = function (options) {\n wx.makePhoneCall(options);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(makePhoneCall, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/_utils/constant.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/_utils/constant.js ***!\n \\*******************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/_utils/promisify.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/_utils/promisify.js ***!\n \\********************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/_utils/styleOptions.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/_utils/styleOptions.js ***!\n \\***********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/ali-miniapp/back.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/ali-miniapp/back.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar back = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].back(function (options) {\n var _ref = options || {},\n _success = _ref.success,\n _fail = _ref.fail,\n _complete = _ref.complete;\n\n my.navigateBack({\n delta: 1,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (back);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/ali-miniapp/go.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/ali-miniapp/go.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar go = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].go(function (options) {\n var step = options.step,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n\n if (step < 0) {\n my.navigateBack({\n delta: Math.abs(step),\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n } else {\n _fail && _fail({\n errMsg: 'step不能大于或等于0'\n });\n _complete && _complete({\n errMsg: 'step不能大于或等于0'\n });\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (go);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/ali-miniapp/index.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/ali-miniapp/index.js ***!\n \\*********************************************************/\n/*! exports provided: go, push, reLaunch, switchTab, replace, back, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _go__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./go */ \"../dist/lib/@uni/navigate/es/ali-miniapp/go.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"go\", function() { return _go__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _back__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./back */ \"../dist/lib/@uni/navigate/es/ali-miniapp/back.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"back\", function() { return _back__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _reLaunch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reLaunch */ \"../dist/lib/@uni/navigate/es/ali-miniapp/reLaunch.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return _reLaunch__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _replace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./replace */ \"../dist/lib/@uni/navigate/es/ali-miniapp/replace.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return _replace__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _push__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./push */ \"../dist/lib/@uni/navigate/es/ali-miniapp/push.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"push\", function() { return _push__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _switchTab__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./switchTab */ \"../dist/lib/@uni/navigate/es/ali-miniapp/switchTab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return _switchTab__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n push: _push__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n back: _back__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n reLaunch: _reLaunch__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n switchTab: _switchTab__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n replace: _replace__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n go: _go__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/ali-miniapp/push.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/ali-miniapp/push.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar push = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].push(function (options) {\n var url = options.url,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n my.navigateTo({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (push);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/ali-miniapp/reLaunch.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/ali-miniapp/reLaunch.js ***!\n \\************************************************************/\n/*! exports provided: reLaunch, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return reLaunch; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar reLaunch = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].reLaunch(function (options) {\n var url = options.url,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n my.reLaunch({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (reLaunch);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/ali-miniapp/replace.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/ali-miniapp/replace.js ***!\n \\***********************************************************/\n/*! exports provided: replace, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return replace; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar replace = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].replace(function (options) {\n var _ref = options || {},\n url = _ref.url,\n _success = _ref.success,\n _fail = _ref.fail,\n _complete = _ref.complete;\n\n my.redirectTo({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (replace);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/ali-miniapp/switchTab.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/ali-miniapp/switchTab.js ***!\n \\*************************************************************/\n/*! exports provided: switchTab, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return switchTab; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar switchTab = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].switchTab(function (options) {\n my.switchTab(options);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (switchTab);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/back.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/baidu-smartprogram/back.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar back = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].back(function (options) {\n var _ref = options || {},\n _success = _ref.success,\n _fail = _ref.fail,\n _complete = _ref.complete;\n\n swan.navigateBack({\n delta: 1,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (back);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/go.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/baidu-smartprogram/go.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar go = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].go(function (options) {\n var step = options.step,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n\n if (step < 0) {\n swan.navigateBack({\n delta: Math.abs(step),\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n } else {\n _fail && _fail({\n errMsg: 'step不能大于或等于0'\n });\n _complete && _complete({\n errMsg: 'step不能大于或等于0'\n });\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (go);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/index.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/baidu-smartprogram/index.js ***!\n \\****************************************************************/\n/*! exports provided: go, push, reLaunch, switchTab, replace, back, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _go__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./go */ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/go.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"go\", function() { return _go__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _back__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./back */ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/back.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"back\", function() { return _back__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _reLaunch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reLaunch */ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/reLaunch.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return _reLaunch__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _replace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./replace */ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/replace.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return _replace__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _push__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./push */ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/push.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"push\", function() { return _push__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _switchTab__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./switchTab */ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/switchTab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return _switchTab__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n push: _push__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n back: _back__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n reLaunch: _reLaunch__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n switchTab: _switchTab__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n replace: _replace__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n go: _go__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/push.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/baidu-smartprogram/push.js ***!\n \\***************************************************************/\n/*! exports provided: push, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"push\", function() { return push; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar push = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].push(function (options) {\n var url = options.url,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n swan.navigateTo({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (push);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/reLaunch.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/baidu-smartprogram/reLaunch.js ***!\n \\*******************************************************************/\n/*! exports provided: reLaunch, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return reLaunch; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar reLaunch = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].reLaunch(function (options) {\n var url = options.url,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n swan.reLaunch({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (reLaunch);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/replace.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/baidu-smartprogram/replace.js ***!\n \\******************************************************************/\n/*! exports provided: replace, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return replace; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar replace = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].replace(function (options) {\n var _ref = options || {},\n url = _ref.url,\n _success = _ref.success,\n _fail = _ref.fail,\n _complete = _ref.complete;\n\n swan.redirectTo({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (replace);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/switchTab.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/baidu-smartprogram/switchTab.js ***!\n \\********************************************************************/\n/*! exports provided: switchTab, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return switchTab; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar switchTab = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].switchTab(function (options) {\n swan.switchTab(options);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (switchTab);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/bytedance-microapp/back.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/bytedance-microapp/back.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar back = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].back(function (options) {\n var _ref = options || {},\n _success = _ref.success,\n _fail = _ref.fail,\n _complete = _ref.complete;\n\n tt.navigateBack({\n delta: 1,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (back);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/bytedance-microapp/go.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/bytedance-microapp/go.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar go = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].go(function (options) {\n var step = options.step,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n\n if (step < 0) {\n tt.navigateBack({\n delta: Math.abs(step),\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n } else {\n _fail && _fail({\n errMsg: 'step不能大于或等于0'\n });\n _complete && _complete({\n errMsg: 'step不能大于或等于0'\n });\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (go);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/bytedance-microapp/index.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/bytedance-microapp/index.js ***!\n \\****************************************************************/\n/*! exports provided: go, push, reLaunch, switchTab, replace, back, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _go__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./go */ \"../dist/lib/@uni/navigate/es/bytedance-microapp/go.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"go\", function() { return _go__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _back__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./back */ \"../dist/lib/@uni/navigate/es/bytedance-microapp/back.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"back\", function() { return _back__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _reLaunch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reLaunch */ \"../dist/lib/@uni/navigate/es/bytedance-microapp/reLaunch.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return _reLaunch__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _replace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./replace */ \"../dist/lib/@uni/navigate/es/bytedance-microapp/replace.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return _replace__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _push__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./push */ \"../dist/lib/@uni/navigate/es/bytedance-microapp/push.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"push\", function() { return _push__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _switchTab__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./switchTab */ \"../dist/lib/@uni/navigate/es/bytedance-microapp/switchTab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return _switchTab__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n push: _push__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n back: _back__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n reLaunch: _reLaunch__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n switchTab: _switchTab__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n replace: _replace__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n go: _go__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/bytedance-microapp/push.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/bytedance-microapp/push.js ***!\n \\***************************************************************/\n/*! exports provided: push, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"push\", function() { return push; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar push = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].push(function (options) {\n var url = options.url,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n tt.navigateTo({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (push);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/bytedance-microapp/reLaunch.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/bytedance-microapp/reLaunch.js ***!\n \\*******************************************************************/\n/*! exports provided: reLaunch, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return reLaunch; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar reLaunch = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].reLaunch(function (options) {\n var url = options.url,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n tt.reLaunch({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (reLaunch);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/bytedance-microapp/replace.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/bytedance-microapp/replace.js ***!\n \\******************************************************************/\n/*! exports provided: replace, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return replace; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar replace = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].replace(function (options) {\n var _ref = options || {},\n url = _ref.url,\n _success = _ref.success,\n _fail = _ref.fail,\n _complete = _ref.complete;\n\n tt.redirectTo({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (replace);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/bytedance-microapp/switchTab.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/bytedance-microapp/switchTab.js ***!\n \\********************************************************************/\n/*! exports provided: switchTab, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return switchTab; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar switchTab = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].switchTab(function (options) {\n tt.switchTab(options);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (switchTab);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/common.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/common.js ***!\n \\**********************************************/\n/*! exports provided: normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/navigate/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/navigate/es/_utils/styleOptions.js\");\n\n\nvar normalize = {\n push: function (api, containerName) {\n return function (options) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName));\n };\n },\n back: function (api, containerName) {\n return function (options) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName));\n };\n },\n go: function (api, containerName) {\n return function (options) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName));\n };\n },\n replace: function (api, containerName) {\n return function (options) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName));\n };\n },\n reLaunch: function (api, containerName) {\n return function (options) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName));\n };\n },\n switchTab: function (api, containerName) {\n return function (options) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName));\n };\n }\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/index.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/index.js ***!\n \\*********************************************/\n/*! exports provided: push, go, back, replace, reLaunch, switchTab, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"push\", function() { return push; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"go\", function() { return go; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"back\", function() { return back; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return replace; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return reLaunch; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return switchTab; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/navigate/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/navigate/es/bytedance-microapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/navigate/es/web/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/navigate/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar push = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].push(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].push(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].push(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].push(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].push(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].push(options);\n } else {\n throw new Error('Uni API:navigate.push 暂不支持');\n }\n};\nvar go = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].go(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].go(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].go(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].go(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].go(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].go(options);\n } else {\n throw new Error('Uni API:navigate.go 暂不支持');\n }\n};\nvar back = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].back(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].back(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].back(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].back(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].back(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].back(options);\n } else {\n throw new Error('Uni API:navigate.back 暂不支持');\n }\n};\nvar replace = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].replace(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].replace(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].replace(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].replace(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].replace(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].replace(options);\n } else {\n throw new Error('Uni API:navigate.replace 暂不支持');\n }\n};\nvar reLaunch = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].reLaunch(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].reLaunch(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].reLaunch(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].reLaunch(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].reLaunch(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].reLaunch(options);\n } else {\n throw new Error('Uni API:navigate.reLaunch 暂不支持');\n }\n};\nvar switchTab = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].switchTab(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].switchTab(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].switchTab(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].switchTab(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].switchTab(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].switchTab(options);\n } else {\n throw new Error('Uni API:navigate.switchTab 暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n push: push,\n back: back,\n reLaunch: reLaunch,\n switchTab: switchTab,\n replace: replace,\n go: go\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/back.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/kuaishou-miniprogram/back.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar back = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].back(function (options) {\n var _ref = options || {},\n _success = _ref.success,\n _fail = _ref.fail,\n _complete = _ref.complete;\n\n ks.navigateBack({\n delta: 1,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (back);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/go.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/kuaishou-miniprogram/go.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar go = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].go(function (options) {\n var step = options.step,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n\n if (step < 0) {\n ks.navigateBack({\n delta: Math.abs(step),\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n } else {\n _fail && _fail({\n errMsg: 'step不能大于或等于0'\n });\n _complete && _complete({\n errMsg: 'step不能大于或等于0'\n });\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (go);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/index.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/kuaishou-miniprogram/index.js ***!\n \\******************************************************************/\n/*! exports provided: go, push, reLaunch, switchTab, replace, back, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _go__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./go */ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/go.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"go\", function() { return _go__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _back__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./back */ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/back.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"back\", function() { return _back__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _reLaunch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reLaunch */ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/reLaunch.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return _reLaunch__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _replace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./replace */ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/replace.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return _replace__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _push__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./push */ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/push.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"push\", function() { return _push__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _switchTab__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./switchTab */ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/switchTab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return _switchTab__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n push: _push__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n back: _back__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n reLaunch: _reLaunch__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n switchTab: _switchTab__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n replace: _replace__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n go: _go__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/push.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/kuaishou-miniprogram/push.js ***!\n \\*****************************************************************/\n/*! exports provided: push, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"push\", function() { return push; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar push = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].push(function (options) {\n var url = options.url,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n ks.navigateTo({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (push);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/reLaunch.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/kuaishou-miniprogram/reLaunch.js ***!\n \\*********************************************************************/\n/*! exports provided: reLaunch, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return reLaunch; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar reLaunch = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].reLaunch(function (options) {\n var url = options.url,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n ks.reLaunch({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (reLaunch);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/replace.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/kuaishou-miniprogram/replace.js ***!\n \\********************************************************************/\n/*! exports provided: replace, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return replace; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar replace = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].replace(function (options) {\n var _ref = options || {},\n url = _ref.url,\n _success = _ref.success,\n _fail = _ref.fail,\n _complete = _ref.complete;\n\n ks.redirectTo({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (replace);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/kuaishou-miniprogram/switchTab.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/kuaishou-miniprogram/switchTab.js ***!\n \\**********************************************************************/\n/*! exports provided: switchTab, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return switchTab; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar switchTab = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].switchTab(function (options) {\n ks.switchTab(options);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (switchTab);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/web/back.js\":\n/*!************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/web/back.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar back = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].back(function (options) {\n var _ref = options || {},\n success = _ref.success,\n fail = _ref.fail,\n complete = _ref.complete;\n\n setTimeout(function () {\n try {\n history.go(-1);\n success && success();\n complete && complete();\n } catch (e) {\n fail && fail(e);\n complete && complete(e);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (back);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/web/go.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/web/go.js ***!\n \\**********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar go = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].go(function (options) {\n var step = options.step,\n success = options.success,\n fail = options.fail,\n complete = options.complete;\n\n if (step < 0) {\n setTimeout(function () {\n history.go(options.step);\n success && success();\n complete && complete();\n });\n } else {\n fail && fail({\n errMsg: 'step不能大于或等于0'\n });\n complete && complete({\n errMsg: 'step不能大于或等于0'\n });\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (go);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/web/index.js\":\n/*!*************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/web/index.js ***!\n \\*************************************************/\n/*! exports provided: go, push, reLaunch, switchTab, replace, back, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _go__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./go */ \"../dist/lib/@uni/navigate/es/web/go.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"go\", function() { return _go__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _back__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./back */ \"../dist/lib/@uni/navigate/es/web/back.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"back\", function() { return _back__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _reLaunch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reLaunch */ \"../dist/lib/@uni/navigate/es/web/reLaunch.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return _reLaunch__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _replace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./replace */ \"../dist/lib/@uni/navigate/es/web/replace.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return _replace__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _push__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./push */ \"../dist/lib/@uni/navigate/es/web/push.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"push\", function() { return _push__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _switchTab__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./switchTab */ \"../dist/lib/@uni/navigate/es/web/switchTab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return _switchTab__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n push: _push__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n back: _back__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n reLaunch: _reLaunch__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n switchTab: _switchTab__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n replace: _replace__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n go: _go__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/web/push.js\":\n/*!************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/web/push.js ***!\n \\************************************************/\n/*! exports provided: push, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"push\", function() { return push; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar push = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].push(function (options) {\n var url = options.url,\n _options$isHash = options.isHash,\n isHash = _options$isHash === void 0 ? false : _options$isHash,\n _options$refresh = options.refresh,\n refresh = _options$refresh === void 0 ? true : _options$refresh,\n success = options.success,\n fail = options.fail,\n complete = options.complete;\n setTimeout(function () {\n try {\n if (isHash) {\n location.hash = \"#\" + url;\n } else if (refresh) {\n location.href = url;\n } else {\n history.pushState({\n page_id: 1\n }, '', url);\n }\n\n success && success();\n complete && complete();\n } catch (e) {\n fail && fail(e);\n complete && complete(e);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (push);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/web/reLaunch.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/web/reLaunch.js ***!\n \\****************************************************/\n/*! exports provided: reLaunch, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return reLaunch; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar reLaunch = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].reLaunch(function (options) {\n var url = options.url,\n _options$isHash = options.isHash,\n isHash = _options$isHash === void 0 ? false : _options$isHash,\n _options$refresh = options.refresh,\n refresh = _options$refresh === void 0 ? true : _options$refresh,\n success = options.success,\n fail = options.fail,\n complete = options.complete;\n\n var _url = isHash ? \"/#\" + url : url;\n\n setTimeout(function () {\n try {\n history.go(-(history.length - 1));\n history.replaceState('', '', _url);\n refresh && history.go(0);\n success && success();\n complete && complete();\n } catch (e) {\n fail && fail(e);\n complete && complete(e);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (reLaunch);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/web/replace.js\":\n/*!***************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/web/replace.js ***!\n \\***************************************************/\n/*! exports provided: replace, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return replace; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar replace = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].replace(function (options) {\n var _ref = options || {},\n url = _ref.url,\n _ref$isHash = _ref.isHash,\n isHash = _ref$isHash === void 0 ? false : _ref$isHash,\n _ref$refresh = _ref.refresh,\n refresh = _ref$refresh === void 0 ? true : _ref$refresh,\n success = _ref.success,\n fail = _ref.fail,\n complete = _ref.complete;\n\n var _url = isHash ? \"/#\" + url : url;\n\n setTimeout(function () {\n try {\n history.replaceState('', '', _url);\n refresh && history.go(0);\n success && success();\n complete && complete();\n } catch (e) {\n fail && fail(e);\n complete && complete(e);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (replace);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/web/switchTab.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/web/switchTab.js ***!\n \\*****************************************************/\n/*! exports provided: switchTab, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return switchTab; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar switchTab = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].switchTab(function () {\n throw new Error('@uni/apis: switchTab 不支持');\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (switchTab);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/back.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/wechat-miniprogram/back.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar back = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].back(function (options) {\n var _ref = options || {},\n _success = _ref.success,\n _fail = _ref.fail,\n _complete = _ref.complete;\n\n wx.navigateBack({\n delta: 1,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (back);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/go.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/wechat-miniprogram/go.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar go = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].go(function (options) {\n var step = options.step,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n\n if (step < 0) {\n wx.navigateBack({\n delta: Math.abs(step),\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n } else {\n _fail && _fail({\n errMsg: 'step不能大于或等于0'\n });\n _complete && _complete({\n errMsg: 'step不能大于或等于0'\n });\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (go);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/index.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/wechat-miniprogram/index.js ***!\n \\****************************************************************/\n/*! exports provided: go, push, reLaunch, switchTab, replace, back, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _go__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./go */ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/go.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"go\", function() { return _go__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _back__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./back */ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/back.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"back\", function() { return _back__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _reLaunch__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./reLaunch */ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/reLaunch.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return _reLaunch__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _replace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./replace */ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/replace.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return _replace__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _push__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./push */ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/push.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"push\", function() { return _push__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _switchTab__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./switchTab */ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/switchTab.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return _switchTab__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n push: _push__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n back: _back__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n reLaunch: _reLaunch__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n switchTab: _switchTab__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n replace: _replace__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n go: _go__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/push.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/wechat-miniprogram/push.js ***!\n \\***************************************************************/\n/*! exports provided: push, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"push\", function() { return push; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar push = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].push(function (options) {\n var url = options.url,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n wx.navigateTo({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (push);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/reLaunch.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/wechat-miniprogram/reLaunch.js ***!\n \\*******************************************************************/\n/*! exports provided: reLaunch, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"reLaunch\", function() { return reLaunch; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar reLaunch = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].reLaunch(function (options) {\n var url = options.url,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n wx.reLaunch({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (reLaunch);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/replace.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/wechat-miniprogram/replace.js ***!\n \\******************************************************************/\n/*! exports provided: replace, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"replace\", function() { return replace; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar replace = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].replace(function (options) {\n var _ref = options || {},\n url = _ref.url,\n _success = _ref.success,\n _fail = _ref.fail,\n _complete = _ref.complete;\n\n wx.redirectTo({\n url: url,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (replace);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigate/es/wechat-miniprogram/switchTab.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/navigate/es/wechat-miniprogram/switchTab.js ***!\n \\********************************************************************/\n/*! exports provided: switchTab, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"switchTab\", function() { return switchTab; });\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigate/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigate/es/_utils/constant.js\");\n\n\nvar switchTab = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].switchTab(function (options) {\n wx.switchTab(options);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (switchTab);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/_utils/constant.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/_utils/constant.js ***!\n \\*************************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/_utils/miniappEnvApp.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/_utils/miniappEnvApp.js ***!\n \\******************************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/_utils/promisify.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/_utils/promisify.js ***!\n \\**************************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/_utils/styleOptions.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/_utils/styleOptions.js ***!\n \\*****************************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/ali-miniapp/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/ali-miniapp/index.js ***!\n \\***************************************************************/\n/*! exports provided: setNavigationBarColor, setNavigationBarTitle, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setNavigationBarColor */ \"../dist/lib/@uni/navigation-bar/es/ali-miniapp/setNavigationBarColor.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarColor\", function() { return _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setNavigationBarTitle */ \"../dist/lib/@uni/navigation-bar/es/ali-miniapp/setNavigationBarTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarTitle\", function() { return _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setNavigationBarColor: _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n setNavigationBarTitle: _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/ali-miniapp/setNavigationBarColor.js\":\n/*!*******************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/ali-miniapp/setNavigationBarColor.js ***!\n \\*******************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/navigation-bar/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigation-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigation-bar/es/_utils/constant.js\");\n\n\n\nvar setNavigationBarColor = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeSetNavigationBarColor\"])(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.setNavigationBar(args) : my.setNavigationBar(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setNavigationBarColor);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/ali-miniapp/setNavigationBarTitle.js\":\n/*!*******************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/ali-miniapp/setNavigationBarTitle.js ***!\n \\*******************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/navigation-bar/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigation-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigation-bar/es/_utils/constant.js\");\n\n\n\nvar setNavigationBarTitle = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeSetNavigationBarTitle\"])(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.setNavigationBar(args) : my.setNavigationBar(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setNavigationBarTitle);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/baidu-smartprogram/getMenuButtonBoundingClientRect.js\":\n/*!************************************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/baidu-smartprogram/getMenuButtonBoundingClientRect.js ***!\n \\************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return swan.getMenuButtonBoundingClientRect();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/baidu-smartprogram/index.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/baidu-smartprogram/index.js ***!\n \\**********************************************************************/\n/*! exports provided: setNavigationBarColor, setNavigationBarTitle, getMenuButtonBoundingClientRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setNavigationBarColor */ \"../dist/lib/@uni/navigation-bar/es/baidu-smartprogram/setNavigationBarColor.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarColor\", function() { return _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setNavigationBarTitle */ \"../dist/lib/@uni/navigation-bar/es/baidu-smartprogram/setNavigationBarTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarTitle\", function() { return _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getMenuButtonBoundingClientRect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getMenuButtonBoundingClientRect */ \"../dist/lib/@uni/navigation-bar/es/baidu-smartprogram/getMenuButtonBoundingClientRect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getMenuButtonBoundingClientRect\", function() { return _getMenuButtonBoundingClientRect__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setNavigationBarColor: _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n setNavigationBarTitle: _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getMenuButtonBoundingClientRect: _getMenuButtonBoundingClientRect__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/baidu-smartprogram/setNavigationBarColor.js\":\n/*!**************************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/baidu-smartprogram/setNavigationBarColor.js ***!\n \\**************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigation-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigation-bar/es/_utils/constant.js\");\n\n\nvar setNavigationBarColor = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSetNavigationBarColor\"])(function (args) {\n swan.setNavigationBarColor(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setNavigationBarColor);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/baidu-smartprogram/setNavigationBarTitle.js\":\n/*!**************************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/baidu-smartprogram/setNavigationBarTitle.js ***!\n \\**************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigation-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigation-bar/es/_utils/constant.js\");\n\n\nvar setNavigationBarTitle = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSetNavigationBarTitle\"])(function (args) {\n return swan.setNavigationBarTitle(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setNavigationBarTitle);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/bytedance-microapp/getMenuButtonBoundingClientRect.js\":\n/*!************************************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/bytedance-microapp/getMenuButtonBoundingClientRect.js ***!\n \\************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return tt.getMenuButtonBoundingClientRect();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/bytedance-microapp/index.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/bytedance-microapp/index.js ***!\n \\**********************************************************************/\n/*! exports provided: setNavigationBarColor, setNavigationBarTitle, getMenuButtonBoundingClientRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setNavigationBarColor */ \"../dist/lib/@uni/navigation-bar/es/bytedance-microapp/setNavigationBarColor.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarColor\", function() { return _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setNavigationBarTitle */ \"../dist/lib/@uni/navigation-bar/es/bytedance-microapp/setNavigationBarTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarTitle\", function() { return _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getMenuButtonBoundingClientRect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getMenuButtonBoundingClientRect */ \"../dist/lib/@uni/navigation-bar/es/bytedance-microapp/getMenuButtonBoundingClientRect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getMenuButtonBoundingClientRect\", function() { return _getMenuButtonBoundingClientRect__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setNavigationBarColor: _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n setNavigationBarTitle: _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getMenuButtonBoundingClientRect: _getMenuButtonBoundingClientRect__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/bytedance-microapp/setNavigationBarColor.js\":\n/*!**************************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/bytedance-microapp/setNavigationBarColor.js ***!\n \\**************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigation-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigation-bar/es/_utils/constant.js\");\n\n\nvar setNavigationBarColor = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSetNavigationBarColor\"])(function (args) {\n tt.setNavigationBarColor(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setNavigationBarColor);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/bytedance-microapp/setNavigationBarTitle.js\":\n/*!**************************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/bytedance-microapp/setNavigationBarTitle.js ***!\n \\**************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigation-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigation-bar/es/_utils/constant.js\");\n\n\nvar setNavigationBarTitle = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSetNavigationBarTitle\"])(function (args) {\n return tt.setNavigationBarTitle(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setNavigationBarTitle);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/common.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/common.js ***!\n \\****************************************************/\n/*! exports provided: normalizeSetNavigationBarTitle, normalizeSetNavigationBarColor */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeSetNavigationBarTitle\", function() { return normalizeSetNavigationBarTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeSetNavigationBarColor\", function() { return normalizeSetNavigationBarColor; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/navigation-bar/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/navigation-bar/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nvar styleOptions = function (options) {\n var afterOptions = _extends({}, options);\n\n if (!afterOptions.frontColor) {\n afterOptions.frontColor = '#000000';\n }\n\n return afterOptions;\n};\n/**\n * setNavigationBarTitle api\n * @param api\n * @param containerName\n * @returns\n */\n\n\nfunction normalizeSetNavigationBarTitle(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n}\n/**\n * setNavigationBarColor api\n * @param api\n * @param containerName\n * @returns\n */\n\nfunction normalizeSetNavigationBarColor(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(styleOptions(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName), containerName));\n };\n} // export function normalizeGetMenuButtonBoundingClientRect(api: (args) => any, containerName: string) {\n// return (args?) => {\n// return promisify(api)(args);\n// };\n// }\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/index.js\":\n/*!***************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/index.js ***!\n \\***************************************************/\n/*! exports provided: setNavigationBarColor, setNavigationBarTitle, getMenuButtonBoundingClientRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarColor\", function() { return setNavigationBarColor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarTitle\", function() { return setNavigationBarTitle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getMenuButtonBoundingClientRect\", function() { return getMenuButtonBoundingClientRect; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/navigation-bar/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/navigation-bar/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/navigation-bar/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/navigation-bar/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/navigation-bar/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/navigation-bar/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar setNavigationBarColor = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].setNavigationBarColor(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].setNavigationBarColor(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavigationBarColor(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setNavigationBarColor(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].setNavigationBarColor(args);\n } else {\n throw new Error('Uni API:setNavigationBarColor暂不支持');\n }\n};\nvar setNavigationBarTitle = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setNavigationBarTitle(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].setNavigationBarTitle(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].setNavigationBarTitle(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavigationBarTitle(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setNavigationBarTitle(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].setNavigationBarTitle(args);\n } else {\n throw new Error('Uni API:setNavigationBarTitle暂不支持');\n }\n};\nvar getMenuButtonBoundingClientRect = function () {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getMenuButtonBoundingClientRect();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getMenuButtonBoundingClientRect();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getMenuButtonBoundingClientRect();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getMenuButtonBoundingClientRect();\n } else {\n throw new Error('Uni API:getMenuButtonBoundingClientRect暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setNavigationBarColor: setNavigationBarColor,\n setNavigationBarTitle: setNavigationBarTitle,\n getMenuButtonBoundingClientRect: getMenuButtonBoundingClientRect\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/kuaishou-miniprogram/getMenuButtonBoundingClientRect.js\":\n/*!**************************************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/kuaishou-miniprogram/getMenuButtonBoundingClientRect.js ***!\n \\**************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return ks.getMenuButtonBoundingClientRect();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/kuaishou-miniprogram/index.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/kuaishou-miniprogram/index.js ***!\n \\************************************************************************/\n/*! exports provided: setNavigationBarColor, setNavigationBarTitle, getMenuButtonBoundingClientRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setNavigationBarColor */ \"../dist/lib/@uni/navigation-bar/es/kuaishou-miniprogram/setNavigationBarColor.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarColor\", function() { return _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setNavigationBarTitle */ \"../dist/lib/@uni/navigation-bar/es/kuaishou-miniprogram/setNavigationBarTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarTitle\", function() { return _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getMenuButtonBoundingClientRect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getMenuButtonBoundingClientRect */ \"../dist/lib/@uni/navigation-bar/es/kuaishou-miniprogram/getMenuButtonBoundingClientRect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getMenuButtonBoundingClientRect\", function() { return _getMenuButtonBoundingClientRect__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setNavigationBarColor: _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n setNavigationBarTitle: _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getMenuButtonBoundingClientRect: _getMenuButtonBoundingClientRect__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/kuaishou-miniprogram/setNavigationBarColor.js\":\n/*!****************************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/kuaishou-miniprogram/setNavigationBarColor.js ***!\n \\****************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigation-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigation-bar/es/_utils/constant.js\");\n\n\nvar setNavigationBarColor = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSetNavigationBarColor\"])(function (args) {\n ks.setNavigationBarColor(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setNavigationBarColor);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/kuaishou-miniprogram/setNavigationBarTitle.js\":\n/*!****************************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/kuaishou-miniprogram/setNavigationBarTitle.js ***!\n \\****************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigation-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigation-bar/es/_utils/constant.js\");\n\n\nvar setNavigationBarTitle = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSetNavigationBarTitle\"])(function (args) {\n return ks.setNavigationBarTitle(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setNavigationBarTitle);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/web/index.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/web/index.js ***!\n \\*******************************************************/\n/*! exports provided: setNavigationBarTitle, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setNavigationBarTitle */ \"../dist/lib/@uni/navigation-bar/es/web/setNavigationBarTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarTitle\", function() { return _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setNavigationBarTitle: _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_0__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/web/setNavigationBarTitle.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/web/setNavigationBarTitle.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigation-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigation-bar/es/_utils/constant.js\");\n\n\n/**\n * 动态设置当前页面的标题\n */\n\nvar setNavigationBarTitle = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSetNavigationBarTitle\"])(function (_ref) {\n var title = _ref.title,\n _ref$success = _ref.success,\n success = _ref$success === void 0 ? function () {} : _ref$success,\n _ref$fail = _ref.fail,\n fail = _ref$fail === void 0 ? function () {} : _ref$fail,\n _ref$complete = _ref.complete,\n complete = _ref$complete === void 0 ? function () {} : _ref$complete;\n\n try {\n document.title = title;\n success();\n complete();\n } catch (error) {\n fail();\n complete();\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setNavigationBarTitle);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/wechat-miniprogram/getMenuButtonBoundingClientRect.js\":\n/*!************************************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/wechat-miniprogram/getMenuButtonBoundingClientRect.js ***!\n \\************************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n// import { normalizeSetNavigationBarColor } from '../common';\n// import { CONTAINER_NAME } from '@utils/constant';\n// const getMenuButtonBoundingClientRect = normalizeSetNavigationBarColor((args) => {\n// wx.setNavigationBarColor(args);\n// }, CONTAINER_NAME.WECHAT);\n// export default getMenuButtonBoundingClientRect;\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return wx.getMenuButtonBoundingClientRect();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/wechat-miniprogram/index.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/wechat-miniprogram/index.js ***!\n \\**********************************************************************/\n/*! exports provided: setNavigationBarColor, setNavigationBarTitle, getMenuButtonBoundingClientRect, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./setNavigationBarColor */ \"../dist/lib/@uni/navigation-bar/es/wechat-miniprogram/setNavigationBarColor.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarColor\", function() { return _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./setNavigationBarTitle */ \"../dist/lib/@uni/navigation-bar/es/wechat-miniprogram/setNavigationBarTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setNavigationBarTitle\", function() { return _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _getMenuButtonBoundingClientRect__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./getMenuButtonBoundingClientRect */ \"../dist/lib/@uni/navigation-bar/es/wechat-miniprogram/getMenuButtonBoundingClientRect.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getMenuButtonBoundingClientRect\", function() { return _getMenuButtonBoundingClientRect__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n setNavigationBarColor: _setNavigationBarColor__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n setNavigationBarTitle: _setNavigationBarTitle__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n getMenuButtonBoundingClientRect: _getMenuButtonBoundingClientRect__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/wechat-miniprogram/setNavigationBarColor.js\":\n/*!**************************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/wechat-miniprogram/setNavigationBarColor.js ***!\n \\**************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigation-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigation-bar/es/_utils/constant.js\");\n\n\nvar setNavigationBarColor = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSetNavigationBarColor\"])(function (args) {\n wx.setNavigationBarColor(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setNavigationBarColor);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/navigation-bar/es/wechat-miniprogram/setNavigationBarTitle.js\":\n/*!**************************************************************************************!*\\\n !*** ../dist/lib/@uni/navigation-bar/es/wechat-miniprogram/setNavigationBarTitle.js ***!\n \\**************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/navigation-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/navigation-bar/es/_utils/constant.js\");\n\n\nvar setNavigationBarTitle = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSetNavigationBarTitle\"])(function (args) {\n return wx.setNavigationBarTitle(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setNavigationBarTitle);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/page-scroll-to/es/_utils/constant.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/page-scroll-to/es/_utils/constant.js ***!\n \\*************************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/page-scroll-to/es/_utils/promisify.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/page-scroll-to/es/_utils/promisify.js ***!\n \\**************************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/page-scroll-to/es/_utils/styleOptions.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/page-scroll-to/es/_utils/styleOptions.js ***!\n \\*****************************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/page-scroll-to/es/ali-miniapp/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/page-scroll-to/es/ali-miniapp/index.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/page-scroll-to/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/page-scroll-to/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n my.pageScrollTo(options);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/page-scroll-to/es/baidu-smartprogram/index.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/page-scroll-to/es/baidu-smartprogram/index.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/page-scroll-to/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/page-scroll-to/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n swan.pageScrollTo(options);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/page-scroll-to/es/bytedance-microapp/index.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/page-scroll-to/es/bytedance-microapp/index.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/page-scroll-to/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/page-scroll-to/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n tt.pageScrollTo(options);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/page-scroll-to/es/common.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/page-scroll-to/es/common.js ***!\n \\****************************************************/\n/*! exports provided: normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/page-scroll-to/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/page-scroll-to/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nfunction normalize(api, containerName) {\n return function (options) {\n var mergedOptions = _extends({\n duration: 300\n }, options); // the `scrollTop` has higher priority\n\n\n if (mergedOptions.scrollTop != null) {\n mergedOptions.selector = undefined;\n }\n\n if (!Number(mergedOptions.duration) || mergedOptions.duration < 0) {\n mergedOptions.duration = 0;\n }\n\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(mergedOptions, containerName));\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/page-scroll-to/es/index.js\":\n/*!***************************************************!*\\\n !*** ../dist/lib/@uni/page-scroll-to/es/index.js ***!\n \\***************************************************/\n/*! exports provided: pageScrollTo, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pageScrollTo\", function() { return pageScrollTo; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/page-scroll-to/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/page-scroll-to/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/page-scroll-to/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/page-scroll-to/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/page-scroll-to/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/page-scroll-to/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nfunction pageScrollTo(options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return Object(_web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return Object(_kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return Object(_wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return Object(_bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return Object(_ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return Object(_baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(options);\n } else {\n throw new Error('Uni API:pageScrollTo 暂不支持');\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (pageScrollTo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/page-scroll-to/es/kuaishou-miniprogram/index.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/page-scroll-to/es/kuaishou-miniprogram/index.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/page-scroll-to/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/page-scroll-to/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n ks.pageScrollTo(options);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/page-scroll-to/es/web/index.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/page-scroll-to/es/web/index.js ***!\n \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/page-scroll-to/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/page-scroll-to/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n var selector = options.selector,\n duration = options.duration,\n success = options.success,\n fail = options.fail,\n complete = options.complete;\n var scrollTop = options.scrollTop;\n var rootElement = document.documentElement;\n var top = rootElement.scrollTop;\n\n if (scrollTop == null) {\n if (!selector) {\n var msg = '`scrollTop` or `selector` is required';\n fail(msg);\n complete(msg);\n return;\n }\n\n var ele = document.querySelector(selector);\n\n if (!ele) {\n var _msg = \"The element cannot be found by the selector `\" + selector + \"`\";\n\n fail(_msg);\n complete(_msg);\n return;\n }\n\n scrollTop = top + ele.getBoundingClientRect().top;\n } // Already at the target position\n\n\n if (top === scrollTop) {\n success('OK');\n complete('OK');\n return;\n } // Scroll immediately\n\n\n if (Number(duration) === 0) {\n rootElement.scrollTop = scrollTop;\n success('OK');\n complete('OK');\n return;\n }\n\n var maxScrollTop = rootElement.scrollHeight - rootElement.clientHeight;\n\n if (scrollTop < 0) {\n scrollTop = 0;\n } else if (scrollTop > maxScrollTop) {\n scrollTop = maxScrollTop;\n } // Scroll distance per 1ms\n\n\n var speed = (scrollTop - top) / duration;\n\n // start scrolling\n (function handleScroll(startTime) {\n requestAnimationFrame(function () {\n var cost = Date.now() - startTime;\n\n if (cost < 5) {\n // throttle\n handleScroll(startTime);\n return;\n }\n\n top = rootElement.scrollTop;\n var nextTop = top + cost * speed;\n\n if (speed > 0 && nextTop > scrollTop || speed < 0 && nextTop < scrollTop) {\n nextTop = scrollTop;\n }\n\n rootElement.scrollTop = nextTop;\n\n if (nextTop === scrollTop) {\n success('OK');\n complete('OK');\n } else {\n handleScroll(Date.now());\n }\n });\n })(Date.now());\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/page-scroll-to/es/wechat-miniprogram/index.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/page-scroll-to/es/wechat-miniprogram/index.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/page-scroll-to/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/page-scroll-to/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n wx.pageScrollTo(options);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js ***!\n \\****************************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/_utils/event.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/_utils/event.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return Events; });\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction 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\nvar Events = /*#__PURE__*/function () {\n function Events() {\n this.events = void 0;\n this.events = {};\n }\n\n var _proto = Events.prototype;\n\n _proto.emit = function (key, params) {\n var _this = this;\n\n if (this.events[key] && this.events[key].size > 0) {\n var _queue = new Set(Array.from(this.events[key]));\n\n _queue.forEach( /*#__PURE__*/function () {\n var _ref = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(item) {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function (_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n item.handler(params);\n\n if (item.once) {\n _this.events[key].delete(item);\n }\n\n case 2:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function () {\n return _ref.apply(this, arguments);\n };\n }());\n }\n } // async _emit(key: string, params: any) {\n // if (this.events[key] && this.events[key].length > 0) {\n // const item = this.events[key].shift();\n // if (isAsync(item)) {\n // await item(params);\n // } else {\n // item(params);\n // }\n // this.emit(key, params);\n // }\n // }\n ;\n\n _proto.once = function (key, cb) {\n var item = {\n once: true,\n handler: cb\n };\n this.events[key] ? this.events[key].add(item) : this.events[key] = new Set([item]); // return () => {\n // this.events[key].delete(item);\n // };\n };\n\n _proto.register = function (key, cb) {\n var _this2 = this;\n\n var item = {\n once: false,\n handler: cb\n };\n this.events[key] ? this.events[key].add(item) : this.events[key] = new Set([item]);\n return function () {\n _this2.events[key].delete(item);\n };\n };\n\n return Events;\n}();\n\n\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/_utils/miniappEnvApp.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/_utils/miniappEnvApp.js ***!\n \\*********************************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/_utils/promisify.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/_utils/promisify.js ***!\n \\*****************************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/_utils/styleOptions.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/_utils/styleOptions.js ***!\n \\********************************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/ali-miniapp/index.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/ali-miniapp/index.js ***!\n \\******************************************************************/\n/*! exports provided: startPullDownRefresh, stopPullDownRefresh, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./startPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/ali-miniapp/startPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"startPullDownRefresh\", function() { return _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stopPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/ali-miniapp/stopPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stopPullDownRefresh\", function() { return _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n startPullDownRefresh: _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n stopPullDownRefresh: _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/ali-miniapp/startPullDownRefresh.js\":\n/*!*********************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/ali-miniapp/startPullDownRefresh.js ***!\n \\*********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n\n\n\nvar startPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeStart\"])(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? console.warn('@uni/apis:dd.startPullDownRefresh暂不支持') : my.startPullDownRefresh(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (startPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/ali-miniapp/stopPullDownRefresh.js\":\n/*!********************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/ali-miniapp/stopPullDownRefresh.js ***!\n \\********************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n\n\n\nvar stopPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeStop\"])(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.stopPullDownRefresh(args) : my.stopPullDownRefresh(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (stopPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/baidu-smartprogram/index.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/baidu-smartprogram/index.js ***!\n \\*************************************************************************/\n/*! exports provided: startPullDownRefresh, stopPullDownRefresh, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./startPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/baidu-smartprogram/startPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"startPullDownRefresh\", function() { return _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stopPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/baidu-smartprogram/stopPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stopPullDownRefresh\", function() { return _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n startPullDownRefresh: _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n stopPullDownRefresh: _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/baidu-smartprogram/startPullDownRefresh.js\":\n/*!****************************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/baidu-smartprogram/startPullDownRefresh.js ***!\n \\****************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n\n\nvar startPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeStart\"])(function (args) {\n return swan.startPullDownRefresh(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (startPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/baidu-smartprogram/stopPullDownRefresh.js\":\n/*!***************************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/baidu-smartprogram/stopPullDownRefresh.js ***!\n \\***************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n\n\nvar stopPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeStop\"])(function (args) {\n return swan.stopPullDownRefresh(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (stopPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/bytedance-microapp/index.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/bytedance-microapp/index.js ***!\n \\*************************************************************************/\n/*! exports provided: startPullDownRefresh, stopPullDownRefresh, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./startPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/bytedance-microapp/startPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"startPullDownRefresh\", function() { return _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stopPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/bytedance-microapp/stopPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stopPullDownRefresh\", function() { return _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n startPullDownRefresh: _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n stopPullDownRefresh: _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/bytedance-microapp/startPullDownRefresh.js\":\n/*!****************************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/bytedance-microapp/startPullDownRefresh.js ***!\n \\****************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n\n\nvar startPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeStart\"])(function (args) {\n return tt.startPullDownRefresh(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (startPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/bytedance-microapp/stopPullDownRefresh.js\":\n/*!***************************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/bytedance-microapp/stopPullDownRefresh.js ***!\n \\***************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n\n\nvar stopPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeStop\"])(function (args) {\n return tt.stopPullDownRefresh(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (stopPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/common.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/common.js ***!\n \\*******************************************************/\n/*! exports provided: normalizeStart, normalizeStop, normalizeSwitch */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeStart\", function() { return normalizeStart; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeStop\", function() { return normalizeStop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeSwitch\", function() { return normalizeSwitch; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/styleOptions.js\");\n\n\n/**\n * startPullDownRefresh api\n * @param api\n * @param containerName\n * @returns\n */\n\nfunction normalizeStart(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n}\n/**\n * stopPullDownRefresh api\n * @param api\n * @param containerName\n * @returns\n */\n\nfunction normalizeStop(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n}\n/**\n * web 端手动刷新开关接口onPullDownRefresh api\n * @param api\n * @param containerName\n * @returns\n */\n\nfunction normalizeSwitch(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/index.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/index.js ***!\n \\******************************************************/\n/*! exports provided: startPullDownRefresh, stopPullDownRefresh, onPullDownRefresh, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"startPullDownRefresh\", function() { return startPullDownRefresh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stopPullDownRefresh\", function() { return stopPullDownRefresh; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onPullDownRefresh\", function() { return onPullDownRefresh; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/pull-down-refresh/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/pull-down-refresh/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/pull-down-refresh/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/pull-down-refresh/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/pull-down-refresh/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/pull-down-refresh/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar startPullDownRefresh = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].startPullDownRefresh(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].startPullDownRefresh(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].startPullDownRefresh(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].startPullDownRefresh(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].startPullDownRefresh(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].startPullDownRefresh(args);\n } else {\n throw new Error('Uni API:startPullDownRefresh暂不支持');\n }\n};\nvar stopPullDownRefresh = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].stopPullDownRefresh(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].stopPullDownRefresh(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].stopPullDownRefresh(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].stopPullDownRefresh(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].stopPullDownRefresh(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].stopPullDownRefresh(args);\n } else {\n throw new Error('Uni API:stopPullDownRefresh暂不支持');\n }\n};\nvar onPullDownRefresh = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].onPullDownRefresh(args);\n } else {\n console.warn('Uni API:onPullDownRefresh暂不支持,只支持web端h5页面');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onPullDownRefresh: onPullDownRefresh,\n startPullDownRefresh: startPullDownRefresh,\n stopPullDownRefresh: stopPullDownRefresh\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/kuaishou-miniprogram/index.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/kuaishou-miniprogram/index.js ***!\n \\***************************************************************************/\n/*! exports provided: startPullDownRefresh, stopPullDownRefresh, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./startPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/kuaishou-miniprogram/startPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"startPullDownRefresh\", function() { return _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stopPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/kuaishou-miniprogram/stopPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stopPullDownRefresh\", function() { return _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n startPullDownRefresh: _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n stopPullDownRefresh: _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/kuaishou-miniprogram/startPullDownRefresh.js\":\n/*!******************************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/kuaishou-miniprogram/startPullDownRefresh.js ***!\n \\******************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n\n\nvar startPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeStart\"])(function (args) {\n return ks.startPullDownRefresh(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (startPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/kuaishou-miniprogram/stopPullDownRefresh.js\":\n/*!*****************************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/kuaishou-miniprogram/stopPullDownRefresh.js ***!\n \\*****************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n\n\nvar stopPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeStop\"])(function (args) {\n return ks.stopPullDownRefresh(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (stopPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/web/index.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/web/index.js ***!\n \\**********************************************************/\n/*! exports provided: onPullDownRefresh, startPullDownRefresh, stopPullDownRefresh, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./startPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/web/startPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"startPullDownRefresh\", function() { return _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stopPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/web/stopPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stopPullDownRefresh\", function() { return _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _onPullDownRefresh__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./onPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/web/onPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"onPullDownRefresh\", function() { return _onPullDownRefresh__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n onPullDownRefresh: _onPullDownRefresh__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n startPullDownRefresh: _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n stopPullDownRefresh: _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/web/onPullDownRefresh.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/web/onPullDownRefresh.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/event */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/event.js\");\n\n\n\n\nvar PullDownRefresh = function () {\n var _this = this;\n\n this.enablePullDownRefresh = void 0;\n this.disablePullDownRefresh = void 0;\n this.cb1 = void 0;\n this.cb2 = void 0;\n this.cb3 = void 0;\n var clsPrefix = '__universal_pulldownrefresh';\n var styles = {\n refresh: {\n position: 'relative',\n width: '100%',\n height: '50px',\n textAlign: 'center',\n display: 'flex',\n flexWrap: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 9999\n },\n refreshLoadingStyle: {\n height: '16px',\n width: '16px',\n marginRight: '10px',\n color: '#999'\n },\n refreshText: {\n fontSize: '14px',\n color: '#999'\n }\n };\n var refresh = null;\n var refreshText = null;\n var refreshLoadingImg = null;\n /**\n * 获取刷新Dom\n * @param status {number} 1:下拉刷新状态 2:正在刷新状态\n * @returns\n */\n\n var _getRefresh = function (status) {\n refresh = document.getElementById(clsPrefix + \"_refresh\");\n refreshText = document.getElementById(clsPrefix + \"_refreshText\");\n refreshLoadingImg = document.getElementById(clsPrefix + \"_refreshLoadingImg\");\n\n if (!refresh) {\n refresh = document.createElement('div');\n refresh.id = clsPrefix + \"_refresh\";\n\n for (var key in styles.refresh) {\n if (Object.prototype.hasOwnProperty.call(styles.refresh, key)) {\n refresh.style[key] = styles.refresh[key];\n }\n }\n }\n\n if (!refreshText) {\n refreshText = document.createElement('div');\n refreshText.id = clsPrefix + \"_refreshText\";\n\n for (var _key in styles.refreshText) {\n if (Object.prototype.hasOwnProperty.call(styles.refreshText, _key)) {\n refreshText.style[_key] = styles.refreshText[_key];\n }\n }\n }\n\n if (!refreshLoadingImg) {\n refreshLoadingImg = document.createElement('img');\n refreshLoadingImg.id = clsPrefix + \"_refreshLoadingImg\";\n\n for (var _key2 in styles.refreshLoadingStyle) {\n if (Object.prototype.hasOwnProperty.call(styles.refreshLoadingStyle, _key2)) {\n refreshLoadingImg.style[_key2] = styles.refreshLoadingStyle[_key2];\n }\n }\n\n refreshLoadingImg.setAttribute('src', 'https://gw.alicdn.com/imgextra/i4/O1CN01X5Adob1J0TGk79HNn_!!6000000000966-1-tps-400-400.gif');\n }\n\n refresh.appendChild(refreshText);\n\n switch (status) {\n case 1:\n if (refresh !== document.body.firstElementChild) {\n document.body.insertBefore(refresh, document.body.firstElementChild);\n }\n\n if (refreshLoadingImg === refresh.firstElementChild) {\n refresh.removeChild(refreshLoadingImg);\n }\n\n refreshText.innerText = '下拉刷新';\n break;\n\n case 2:\n if (refreshLoadingImg !== refresh.firstElementChild) {\n refresh.insertBefore(refreshLoadingImg, refresh.firstElementChild);\n }\n\n refreshText.innerText = '更新中...';\n break;\n\n default:\n break;\n }\n\n return refresh;\n }; // let cb1: (params) => void; let cb2: (params) => void; let\n // cb3: (params) => void;\n\n /**\n * 开启手动下拉\n * @param triggerDistance 触发'pulldownrefresh'所需的距离\n */\n\n\n this.enablePullDownRefresh = function (triggerDistance) {\n var _element = document.body;\n var _startPos = 0;\n var _transitionHeight = 0;\n\n if (!_this.cb1) {\n _this.cb1 = function (e) {\n // console.log('初始位置:', e.touches[0].pageY);\n _startPos = e.touches[0].pageY;\n };\n\n _element.addEventListener('touchstart', _this.cb1, true);\n }\n\n if (!_this.cb2) {\n _this.cb2 = function (e) {\n // console.log('当前位置:', e.touches[0].pageY);\n _transitionHeight = e.touches[0].pageY - _startPos; // console.log(_transitionHeight)\n\n if (_transitionHeight > 0 && _transitionHeight < triggerDistance) {\n _getRefresh(1);\n }\n };\n\n _element.addEventListener('touchmove', _this.cb2, true);\n }\n\n if (!_this.cb3) {\n _this.cb3 = function () {\n if (_transitionHeight > triggerDistance) {\n _getRefresh(2); // console.log(\"触发更新\", 'on');\n\n\n window.events.emit('pulldownrefresh');\n }\n\n setTimeout(function () {\n _startPos = 0;\n _transitionHeight = 0;\n }, 20);\n };\n\n _element.addEventListener('touchend', _this.cb3, true);\n }\n };\n\n this.disablePullDownRefresh = function () {\n var _element = document.body;\n\n if (_this.cb1) {\n _element.removeEventListener('touchstart', _this.cb1);\n\n _this.cb1 = undefined;\n }\n\n if (_this.cb2) {\n _element.removeEventListener('touchmove', _this.cb2);\n\n _this.cb2 = undefined;\n }\n\n if (_this.cb3) {\n _element.removeEventListener('touchend', _this.cb3);\n\n _this.cb3 = undefined;\n }\n };\n};\n/**\n * 开启手动下拉刷新\n */\n\n\nvar onPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeSwitch\"])(function (_ref) {\n var _ref$pullRefresh = _ref.pullRefresh,\n pullRefresh = _ref$pullRefresh === void 0 ? true : _ref$pullRefresh,\n _ref$triggerDistance = _ref.triggerDistance,\n triggerDistance = _ref$triggerDistance === void 0 ? 90 : _ref$triggerDistance,\n _ref$eventCallback = _ref.eventCallback,\n eventCallback = _ref$eventCallback === void 0 ? function () {} : _ref$eventCallback,\n _ref$success = _ref.success,\n success = _ref$success === void 0 ? function () {} : _ref$success,\n _ref$fail = _ref.fail,\n fail = _ref$fail === void 0 ? function () {} : _ref$fail,\n _ref$complete = _ref.complete,\n complete = _ref$complete === void 0 ? function () {} : _ref$complete;\n\n try {\n if (!window.events) {\n window.events = new _utils_event__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n }\n\n window.events.register('pulldownrefresh', eventCallback);\n var pullDownRefresh = new PullDownRefresh();\n\n if (pullRefresh) {\n pullDownRefresh.enablePullDownRefresh(triggerDistance);\n } else {\n pullDownRefresh.disablePullDownRefresh();\n }\n\n success();\n complete();\n } catch (error) {\n fail();\n complete();\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (onPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/web/startPullDownRefresh.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/web/startPullDownRefresh.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n/* harmony import */ var _utils_event__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/event */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/event.js\");\n\n\n\n\nvar _startPullDownRefresh = function () {\n if (!window.events) {\n window.events = new _utils_event__WEBPACK_IMPORTED_MODULE_2__[\"default\"]();\n }\n\n var clsPrefix = '__universal_pulldownrefresh';\n var styles = {\n refresh: {\n position: 'relative',\n width: '100%',\n height: '50px',\n textAlign: 'center',\n display: 'flex',\n flexWrap: 'row',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 9999\n },\n refreshLoadingStyle: {\n height: '16px',\n width: '16px',\n marginRight: '10px',\n color: '#999'\n },\n refreshText: {\n fontSize: '14px',\n color: '#999'\n }\n };\n var refresh = null;\n var refreshText = null;\n var refreshLoadingImg = null; // console.log(\"_startPullDownRefresh start\");\n\n refresh = document.getElementById(clsPrefix + \"_refresh\");\n refreshText = document.getElementById(clsPrefix + \"_refreshText\");\n refreshLoadingImg = document.getElementById(clsPrefix + \"_refreshLoadingImg\");\n\n if (!refresh) {\n refresh = document.createElement('div');\n refresh.id = clsPrefix + \"_refresh\";\n\n for (var key in styles.refresh) {\n if (Object.prototype.hasOwnProperty.call(styles.refresh, key)) {\n refresh.style[key] = styles.refresh[key];\n }\n }\n }\n\n if (!refreshText) {\n refreshText = document.createElement('div');\n refreshText.id = clsPrefix + \"_refreshText\";\n\n for (var _key in styles.refreshText) {\n if (Object.prototype.hasOwnProperty.call(styles.refreshText, _key)) {\n refreshText.style[_key] = styles.refreshText[_key];\n }\n }\n }\n\n if (!refreshLoadingImg) {\n refreshLoadingImg = document.createElement('img');\n refreshLoadingImg.id = clsPrefix + \"_refreshLoadingImg\";\n\n for (var _key2 in styles.refreshLoadingStyle) {\n if (Object.prototype.hasOwnProperty.call(styles.refreshLoadingStyle, _key2)) {\n refreshLoadingImg.style[_key2] = styles.refreshLoadingStyle[_key2];\n }\n }\n\n refreshLoadingImg.setAttribute('src', 'https://gw.alicdn.com/imgextra/i4/O1CN01X5Adob1J0TGk79HNn_!!6000000000966-1-tps-400-400.gif');\n }\n\n if (refresh !== document.body.firstElementChild) {\n document.body.insertBefore(refresh, document.body.firstElementChild);\n }\n\n refresh.appendChild(refreshText);\n\n if (refreshLoadingImg !== refresh.firstElementChild) {\n refresh.insertBefore(refreshLoadingImg, refresh.firstElementChild);\n }\n\n refreshText.innerText = '更新中...'; // console.log(\"触发更新\");\n};\n\nvar startPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeStart\"])(function (_ref) {\n var _ref$success = _ref.success,\n success = _ref$success === void 0 ? function () {} : _ref$success,\n _ref$fail = _ref.fail,\n fail = _ref$fail === void 0 ? function () {} : _ref$fail,\n _ref$complete = _ref.complete,\n complete = _ref$complete === void 0 ? function () {} : _ref$complete;\n\n try {\n _startPullDownRefresh();\n\n window.events.emit('pulldownrefresh');\n success();\n complete();\n } catch (error) {\n fail();\n complete();\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (startPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/web/stopPullDownRefresh.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/web/stopPullDownRefresh.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n\n\n\nvar _stopPullDownRefresh = function () {\n // console.log(\"_stopPullDownRefresh start\");\n var refresh = document.getElementById('__universal_pulldownrefresh' + \"_refresh\");\n\n if (refresh) {\n document.body.removeChild(refresh);\n }\n};\n\nvar stopPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeStop\"])(function (_ref) {\n var _ref$success = _ref.success,\n success = _ref$success === void 0 ? function () {} : _ref$success,\n _ref$fail = _ref.fail,\n fail = _ref$fail === void 0 ? function () {} : _ref$fail,\n _ref$complete = _ref.complete,\n complete = _ref$complete === void 0 ? function () {} : _ref$complete;\n\n try {\n _stopPullDownRefresh();\n\n success();\n complete();\n } catch (error) {\n fail();\n complete();\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (stopPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/wechat-miniprogram/index.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/wechat-miniprogram/index.js ***!\n \\*************************************************************************/\n/*! exports provided: startPullDownRefresh, stopPullDownRefresh, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./startPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/wechat-miniprogram/startPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"startPullDownRefresh\", function() { return _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./stopPullDownRefresh */ \"../dist/lib/@uni/pull-down-refresh/es/wechat-miniprogram/stopPullDownRefresh.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"stopPullDownRefresh\", function() { return _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n startPullDownRefresh: _startPullDownRefresh__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n stopPullDownRefresh: _stopPullDownRefresh__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/wechat-miniprogram/startPullDownRefresh.js\":\n/*!****************************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/wechat-miniprogram/startPullDownRefresh.js ***!\n \\****************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n\n\nvar startPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeStart\"])(function (args) {\n return wx.startPullDownRefresh(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (startPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/pull-down-refresh/es/wechat-miniprogram/stopPullDownRefresh.js\":\n/*!***************************************************************************************!*\\\n !*** ../dist/lib/@uni/pull-down-refresh/es/wechat-miniprogram/stopPullDownRefresh.js ***!\n \\***************************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/pull-down-refresh/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/pull-down-refresh/es/_utils/constant.js\");\n\n\nvar stopPullDownRefresh = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeStop\"])(function (args) {\n return wx.stopPullDownRefresh(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (stopPullDownRefresh);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/recorder/es/_utils/miniappEnvApp.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/recorder/es/_utils/miniappEnvApp.js ***!\n \\************************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/recorder/es/ali-miniapp/index.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/recorder/es/ali-miniapp/index.js ***!\n \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/recorder/es/_utils/miniappEnvApp.js\");\n\n\nvar getRecorderManager = function () {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.getRecorderManager() : my.getRecorderManager();\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getRecorderManager);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/recorder/es/baidu-smartprogram/index.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/recorder/es/baidu-smartprogram/index.js ***!\n \\****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return swan.getRecorderManager();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/recorder/es/bytedance-microapp/index.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/recorder/es/bytedance-microapp/index.js ***!\n \\****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return tt.getRecorderManager();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/recorder/es/index.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/recorder/es/index.js ***!\n \\*********************************************/\n/*! exports provided: getRecorderManager, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRecorderManager\", function() { return getRecorderManager; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/recorder/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/recorder/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/recorder/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/recorder/es/bytedance-microapp/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/recorder/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\nvar getRecorderManager = function () {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return Object(_web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n throw new Error('@uni/apis:getRecorderManager暂不支持');\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return Object(_wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"])();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return Object(_bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"])();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return Object(_ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"])();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return Object(_baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"])();\n } else {\n throw new Error('@uni/apis:getRecorderManager暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (getRecorderManager);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/recorder/es/web/index.js\":\n/*!*************************************************!*\\\n !*** ../dist/lib/@uni/recorder/es/web/index.js ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* eslint-disable */\nvar getUserMedia = function (constraints) {\n var navigate = navigator;\n var rawGetUserMedia = navigator.mediaDevices && navigator.mediaDevices.getUserMedia || navigator.getUserMedia || navigate.webkitGetUserMedia || navigate.mozGetUserMedia;\n\n if (!rawGetUserMedia) {\n return Promise.reject(new Error('getUserMedia is not implemented in this browser'));\n }\n\n return rawGetUserMedia.call(navigator.mediaDevices || navigator, constraints);\n};\n\nvar getAudioMedia = function () {\n return getUserMedia({\n audio: true\n });\n};\n\nfunction recorderManger() {\n this.duration = 60000;\n this.sampleRate = 8000;\n this.numberOfChannels = 2;\n this.encodeBitRate = 48000;\n this.format = 'aac';\n this.frameSize = -1;\n this.mediaRecorder = null;\n this.chunks = [];\n this.curDuration = 0;\n this.timer = null;\n this.events = {};\n}\n\nrecorderManger.prototype.start = function (args) {\n var _this = this;\n\n if (args && typeof args === 'object') {\n for (var key in args) {\n if (Object.prototype.hasOwnProperty.call(args, key)) {\n this[key] = args[key];\n }\n }\n }\n\n getAudioMedia().then(function (stream) {\n _this.mediaRecorder = new MediaRecorder(stream);\n _this.mediaRecorder.onstart = _this.events.onstart;\n _this.mediaRecorder.onpause = _this.events.onpause;\n _this.mediaRecorder.onresume = _this.events.onresume;\n _this.mediaRecorder.onstop = _this.events.onstop;\n _this.mediaRecorder.ondataavailable = _this.events.ondataavailable;\n _this.mediaRecorder.onerror = _this.events.onerror;\n\n if (_this.frameSize > 0) {\n _this.mediaRecorder.start(_this.frameSize);\n } else {\n _this.mediaRecorder.start();\n }\n }).catch(function () {\n throw new Error('@uni/apis: getRecorderManager不支持');\n });\n};\n\nrecorderManger.prototype.pause = function () {\n this.mediaRecorder && this.mediaRecorder.state === 'recording' && this.mediaRecorder.pause();\n};\n\nrecorderManger.prototype.resume = function () {\n this.mediaRecorder && this.mediaRecorder.state === 'paused' && this.mediaRecorder.resume();\n};\n\nrecorderManger.prototype.stop = function () {\n this.mediaRecorder && this.mediaRecorder.state === 'recording' && this.mediaRecorder.stop();\n};\n\nrecorderManger.prototype.onStart = function (callback) {\n var _this2 = this;\n\n if (callback === void 0) {\n callback = function () {};\n }\n\n this.events.onstart = function () {\n _this2.clear();\n\n _this2.timer = setInterval(function () {\n if (_this2.mediaRecorder && _this2.mediaRecorder.state === 'recording') {\n _this2.curDuration += 500;\n\n if (_this2.curDuration >= _this2.duration) {\n _this2.curDuration -= 500;\n\n _this2.stop();\n }\n }\n }, 500);\n callback();\n };\n};\n\nrecorderManger.prototype.onPause = function (callback) {\n if (callback === void 0) {\n callback = function () {};\n }\n\n this.events.onpause = callback;\n};\n\nrecorderManger.prototype.onResume = function (callback) {\n if (callback === void 0) {\n callback = function () {};\n }\n\n this.events.onresume = callback;\n};\n\nrecorderManger.prototype.onStop = function (callback) {\n var _this3 = this;\n\n if (callback === void 0) {\n callback = function () {};\n }\n\n this.events.onstop = function () {\n var blob = new Blob(_this3.chunks, {\n 'type': 'audio/ogg; codecs=opus'\n });\n var tempFilePath = window.URL.createObjectURL(blob);\n var fileSize = blob.size;\n var duration = _this3.curDuration + 500;\n\n _this3.clear();\n\n callback({\n tempFilePath: tempFilePath,\n fileSize: fileSize,\n duration: duration\n });\n };\n};\n\nrecorderManger.prototype.onFrameRecorded = function (callback) {\n var _this4 = this;\n\n if (callback === void 0) {\n callback = function () {};\n }\n\n this.events.ondataavailable = function (e) {\n _this4.chunks.push(e.data);\n\n callback(e.data);\n };\n};\n\nrecorderManger.prototype.onError = function (callback) {\n var _this5 = this;\n\n if (callback === void 0) {\n callback = function () {};\n }\n\n this.events.onerror = function (e) {\n _this5.clear();\n\n callback(e);\n };\n};\n\nrecorderManger.prototype.clear = function () {\n this.chunks = [];\n clearInterval(this.timer);\n this.timer = null;\n this.curDuration = 0;\n};\n\nvar singleRecorderManager = new recorderManger(); // 使用单例返回全局唯一的录音管理器\n\nvar getRecorderManager = function () {\n return singleRecorderManager;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getRecorderManager);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/recorder/es/wechat-miniprogram/index.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/recorder/es/wechat-miniprogram/index.js ***!\n \\****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return wx.getRecorderManager();\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/request/es/_utils/constant.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/request/es/_utils/constant.js ***!\n \\******************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/request/es/_utils/miniappEnvApp.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/request/es/_utils/miniappEnvApp.js ***!\n \\***********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/request/es/_utils/styleOptions.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/request/es/_utils/styleOptions.js ***!\n \\**********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/request/es/ali-miniapp/index.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/request/es/ali-miniapp/index.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/request/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/request/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/request/es/_utils/constant.js\");\n\n\n\n\nfunction request(options) {\n var url = options.url,\n method = options.method,\n data = options.data,\n dataType = options.dataType,\n headers = options.headers,\n timeout = options.timeout,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n var httpRequest = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.httpRequest : my.request;\n return httpRequest({\n url: url,\n headers: headers,\n method: method,\n data: data,\n timeout: timeout,\n dataType: dataType,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"])(request, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/request/es/baidu-smartprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/request/es/baidu-smartprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/request/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/request/es/_utils/constant.js\");\n\n\n\nfunction request(options) {\n var url = options.url,\n method = options.method,\n data = options.data,\n dataType = options.dataType,\n headers = options.headers,\n timeout = options.timeout,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return swan.request({\n url: url,\n header: headers,\n method: method,\n data: data,\n timeout: timeout,\n dataType: dataType,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(request, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/request/es/bytedance-microapp/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/request/es/bytedance-microapp/index.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/request/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/request/es/_utils/constant.js\");\n\n\n\nfunction request(options) {\n var url = options.url,\n method = options.method,\n data = options.data,\n dataType = options.dataType,\n headers = options.headers,\n timeout = options.timeout,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return tt.request({\n url: url,\n header: headers,\n method: method,\n data: data,\n timeout: timeout,\n dataType: dataType,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(request, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/request/es/common.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/request/es/common.js ***!\n \\*********************************************/\n/*! exports provided: getDataWithType, stringifyQS, applyParamToURL, object2json, isObject, normalizeHeaders, validateStatus, checkIsApplyDataToURL, isPlainObject, styleOptions, normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getDataWithType\", function() { return getDataWithType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"stringifyQS\", function() { return stringifyQS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"applyParamToURL\", function() { return applyParamToURL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"object2json\", function() { return object2json; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isObject\", function() { return isObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeHeaders\", function() { return normalizeHeaders; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"validateStatus\", function() { return validateStatus; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"checkIsApplyDataToURL\", function() { return checkIsApplyDataToURL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isPlainObject\", function() { return isPlainObject; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOptions\", function() { return styleOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/request/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/constant */ \"../dist/lib/@uni/request/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n/* eslint-disable @typescript-eslint/no-shadow */\n\n/* eslint-disable @typescript-eslint/no-invalid-void-type */\n\n/* eslint-disable no-empty */\n\n\n\n\nfunction getDataWithType(data, type) {\n if (type === 'json') {\n try {\n return JSON.parse(data);\n } catch (e) {}\n }\n\n if (type === 'text') {\n try {\n return JSON.stringify(data);\n } catch (e) {}\n }\n\n return data;\n}\nfunction stringifyQS(qs) {\n if (!qs) {\n return '';\n }\n\n var str = [];\n\n for (var key in qs) {\n if (qs[key]) {\n str.push(key + \"=\" + encodeURIComponent(String(qs[key])));\n }\n }\n\n return str.join('&');\n}\nfunction applyParamToURL(param, url) {\n if (!param) {\n return url;\n }\n\n return \"\" + url + (url.indexOf('?') === -1 ? '?' : '&') + stringifyQS(param);\n}\nfunction object2json(obj) {\n try {\n return JSON.stringify(obj);\n } catch (e) {\n return obj || '';\n }\n}\nfunction isObject(obj) {\n return typeof obj === 'object' && obj !== null;\n}\nfunction normalizeHeaders(obj) {\n if (!isObject(obj)) {\n return obj;\n }\n\n ['Accept', 'Content-Type'].forEach(function (key) {\n for (var headerKey in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, headerKey)) {\n if (headerKey.toUpperCase() === key.toUpperCase() && headerKey !== key) {\n obj[key] = obj[headerKey];\n delete obj[headerKey];\n return true;\n }\n\n return false;\n }\n }\n });\n return obj;\n}\nvar validateStatus = function (status) {\n return status >= 200 && status < 300 || status === 304;\n};\nfunction checkIsApplyDataToURL(headers) {\n if (!headers || !headers['Content-Type']) {\n return false;\n }\n\n return String(headers['Content-Type']).toLowerCase().indexOf('application/x-www-form-urlencoded') > -1;\n}\nvar EMPTY_OBJECT = {};\nfunction isPlainObject(obj) {\n return EMPTY_OBJECT.toString.call(obj) === '[object Object]';\n}\nfunction styleOptions(options, containerName) {\n var _options$method;\n\n var DEFAULT_REQUEST_OPTIONS = {\n url: '',\n headers: {\n 'Content-Type': 'application/json'\n },\n method: 'GET',\n jsonpCallbackProp: 'callback',\n jsonpCallback: '__uni_jsonp_handler',\n timeout: 20000,\n dataType: 'json'\n };\n var isJsonp = (options == null ? void 0 : (_options$method = options.method) == null ? void 0 : _options$method.toUpperCase()) === 'JSONP';\n var jsonpCallback = options.jsonpCallback || DEFAULT_REQUEST_OPTIONS.jsonpCallback;\n\n var adapterResponse = function (res) {\n var _res$errMsg;\n\n if (res.errMsg && (res == null ? void 0 : (_res$errMsg = res.errMsg) == null ? void 0 : _res$errMsg.indexOf('request:fail')) !== -1 || res.error) {\n return _extends({}, res, {\n error: res.error || res.status || res.statusCode,\n errorMessage: res.errorMessage || res.errMsg || '',\n status: res.statusCode || res.status,\n headers: res.header || res.headers || {}\n });\n }\n\n var afterRes = _extends({}, res, {\n errorMessage: res.errorMessage || res.errMsg || '',\n status: res.statusCode || res.status,\n headers: res.header || res.headers || {}\n });\n\n if (isJsonp && containerName !== _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB) {\n try {\n var _res$data;\n\n var content = res == null ? void 0 : (_res$data = res.data) == null ? void 0 : _res$data.replace(jsonpCallback + \"(\", '').replace(')', '');\n var data = content ? JSON.parse(content) : '';\n return _extends({}, afterRes, {\n data: data\n });\n } catch (e) {\n return {\n error: 14,\n data: res,\n errorMessage: 'JSONP 解码失败'\n };\n }\n }\n\n return afterRes;\n };\n\n var afterOptions = _extends({}, DEFAULT_REQUEST_OPTIONS, options, {\n method: (options.method || 'GET').toUpperCase(),\n headers: normalizeHeaders(options.headers || {}),\n success: function (res) {\n var _validateStatus = options.validateStatus || validateStatus;\n\n var _res = adapterResponse(res);\n\n if (!_validateStatus(_res.status)) {\n options.fail && options.fail(_res);\n } else {\n options.success && options.success(_res);\n }\n },\n fail: function (res) {\n options.fail && options.fail(adapterResponse(res));\n },\n complete: function (res) {\n options.complete && options.complete(adapterResponse(res));\n }\n });\n\n if (isJsonp) {\n var _extends2;\n\n afterOptions = _extends({}, afterOptions, {\n method: 'GET',\n isJsonp: isJsonp,\n dataType: 'text',\n data: _extends({}, options.data, (_extends2 = {}, _extends2[options.jsonpCallbackProp || DEFAULT_REQUEST_OPTIONS.jsonpCallbackProp] = jsonpCallback, _extends2))\n });\n }\n\n return afterOptions;\n}\nfunction normalize(api, containerName) {\n return function (options) {\n var afterOptions = styleOptions(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(options, containerName), containerName);\n return api(afterOptions);\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/request/es/index.js\":\n/*!********************************************!*\\\n !*** ../dist/lib/@uni/request/es/index.js ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/request/es/web/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/request/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/request/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/request/es/bytedance-microapp/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/request/es/baidu-smartprogram/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/request/es/kuaishou-miniprogram/index.js\");\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return Object(_web_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return Object(_kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return Object(_wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return Object(_bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return Object(_ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return Object(_baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(options);\n } else {\n throw new Error('Uni API:request暂不支持');\n }\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/request/es/kuaishou-miniprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/request/es/kuaishou-miniprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/request/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/request/es/_utils/constant.js\");\n\n\n\nfunction request(options) {\n var url = options.url,\n method = options.method,\n data = options.data,\n dataType = options.dataType,\n headers = options.headers,\n timeout = options.timeout,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return ks.request({\n url: url,\n header: headers,\n method: method,\n data: data,\n timeout: timeout,\n dataType: dataType,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(request, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/request/es/types.js\":\n/*!********************************************!*\\\n !*** ../dist/lib/@uni/request/es/types.js ***!\n \\********************************************/\n/*! exports provided: DEFAULT_TIMEOUT, DEFAULT_JSON_CALLBACK, DEFAULT_JSONP_OPTIONS, ERROR_REQUEST_ABORT, ERROR_REQUEST_TIMEOUT, ERROR_REQUEST_NOT_SUPPORT */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_TIMEOUT\", function() { return DEFAULT_TIMEOUT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_JSON_CALLBACK\", function() { return DEFAULT_JSON_CALLBACK; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DEFAULT_JSONP_OPTIONS\", function() { return DEFAULT_JSONP_OPTIONS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERROR_REQUEST_ABORT\", function() { return ERROR_REQUEST_ABORT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERROR_REQUEST_TIMEOUT\", function() { return ERROR_REQUEST_TIMEOUT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ERROR_REQUEST_NOT_SUPPORT\", function() { return ERROR_REQUEST_NOT_SUPPORT; });\n/**\n * Common\n */\nvar DEFAULT_TIMEOUT = 20000;\nvar DEFAULT_JSON_CALLBACK = 'callback';\nvar DEFAULT_JSONP_OPTIONS = {\n timeout: DEFAULT_TIMEOUT,\n jsonpCallback: DEFAULT_JSON_CALLBACK,\n dataType: 'json'\n};\nvar ERROR_REQUEST_ABORT = {\n code: 0,\n message: 'Request Abort'\n};\nvar ERROR_REQUEST_TIMEOUT = {\n code: 1,\n message: 'Request timeout'\n};\nvar ERROR_REQUEST_NOT_SUPPORT = {\n code: 2,\n message: 'Request not support this platform'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/request/es/web/index.js\":\n/*!************************************************!*\\\n !*** ../dist/lib/@uni/request/es/web/index.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../types */ \"../dist/lib/@uni/request/es/types.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/request/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/request/es/_utils/constant.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n/* eslint-disable no-mixed-operators */\n\n/* eslint-disable @typescript-eslint/no-shadow */\n\n\n\n\n\n\nfunction requestXHR(options) {\n options.headers = _extends({\n Accept: 'application/json, text/plain, */*'\n }, options.headers);\n\n var _jsonpCallbackProp$js = _extends({\n jsonpCallbackProp: 'callback',\n jsonpCallback: '__uni_jsonp_handler',\n withCredentials: true,\n method: 'GET',\n validateStatus: function (status) {\n return status >= 200 && status < 300 || status === 304;\n }\n }, options),\n validateStatus = _jsonpCallbackProp$js.validateStatus,\n url = _jsonpCallbackProp$js.url,\n method = _jsonpCallbackProp$js.method,\n isJsonp = _jsonpCallbackProp$js.isJsonp,\n withCredentials = _jsonpCallbackProp$js.withCredentials,\n headers = _jsonpCallbackProp$js.headers,\n data = _jsonpCallbackProp$js.data,\n timeout = _jsonpCallbackProp$js.timeout,\n jsonpCallback = _jsonpCallbackProp$js.jsonpCallback,\n dataType = _jsonpCallbackProp$js.dataType,\n success = _jsonpCallbackProp$js.success,\n fail = _jsonpCallbackProp$js.fail,\n complete = _jsonpCallbackProp$js.complete;\n\n if (isJsonp) {\n try {\n window[jsonpCallback] = function (data) {\n success && success({\n data: data,\n status: 200,\n headers: {}\n });\n complete && complete({\n data: data,\n status: 200,\n headers: {}\n });\n };\n\n var scriptUrl = \"\" + Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"applyParamToURL\"])(data, url);\n var script = document.createElement('script');\n script.setAttribute('src', scriptUrl);\n document.getElementsByTagName('head')[0].appendChild(script);\n } catch (e) {\n fail && fail(_types__WEBPACK_IMPORTED_MODULE_0__[\"ERROR_REQUEST_TIMEOUT\"]);\n complete && complete(_types__WEBPACK_IMPORTED_MODULE_0__[\"ERROR_REQUEST_TIMEOUT\"]);\n }\n\n return {\n abort: function () {}\n };\n }\n\n var timer;\n var requestData;\n var xhr = new XMLHttpRequest();\n\n var clean = function () {\n clearTimeout(timer);\n };\n\n timer = window.setTimeout(function () {\n clean();\n fail && fail(_types__WEBPACK_IMPORTED_MODULE_0__[\"ERROR_REQUEST_TIMEOUT\"]);\n complete && complete(_types__WEBPACK_IMPORTED_MODULE_0__[\"ERROR_REQUEST_TIMEOUT\"]); // reject(ERROR_REQUEST_TIMEOUT);\n\n xhr.abort();\n }, timeout);\n\n xhr.onreadystatechange = function () {\n if (!xhr || xhr.readyState !== 4) {\n return;\n }\n\n clean();\n\n if (!validateStatus(xhr.status)) {\n // TODO Detailed error message\n fail && fail({\n code: _types__WEBPACK_IMPORTED_MODULE_0__[\"ERROR_REQUEST_ABORT\"].code,\n message: \"\" + JSON.stringify({\n status: xhr.status\n })\n });\n complete && complete({\n code: _types__WEBPACK_IMPORTED_MODULE_0__[\"ERROR_REQUEST_ABORT\"].code,\n message: \"\" + JSON.stringify({\n status: xhr.status\n })\n });\n return;\n }\n\n var headers = xhr.getAllResponseHeaders();\n var arr = headers.trim().split(/[\\r\\n]+/);\n var headerMap = {};\n arr.forEach(function (line) {\n var parts = line.split(': ');\n var header = parts.shift();\n var value = parts.join(': ');\n headerMap[header] = value;\n });\n success && success({\n data: xhr.response,\n status: xhr.status,\n headers: headerMap\n });\n complete && complete({\n data: xhr.response,\n status: xhr.status,\n headers: headerMap\n });\n };\n\n xhr.responseType = dataType || '';\n\n if (method === 'GET' || Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"checkIsApplyDataToURL\"])(headers)) {\n xhr.open(method, Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"applyParamToURL\"])(data, url), true);\n } else {\n xhr.open(method, url, true);\n }\n\n xhr.withCredentials = withCredentials;\n\n if (headers) {\n for (var key in headers || []) {\n if (Object.prototype.hasOwnProperty.call(headers, key)) {\n xhr.setRequestHeader(key, String(headers[key]));\n }\n }\n }\n\n if (method === 'GET') {\n requestData = null;\n } else {\n requestData = data;\n }\n\n if (Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"isObject\"])(requestData) && Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"isPlainObject\"])(requestData)) {\n requestData = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"object2json\"])(requestData);\n }\n\n xhr.send(requestData);\n return {\n abort: function () {}\n };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"])(requestXHR, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].WEB));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/request/es/wechat-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/request/es/wechat-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/request/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/request/es/_utils/constant.js\");\n\n\n\nfunction request(options) {\n var url = options.url,\n method = options.method,\n data = options.data,\n dataType = options.dataType,\n headers = options.headers,\n timeout = options.timeout,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return wx.request({\n url: url,\n header: headers,\n method: method,\n data: data,\n timeout: timeout,\n dataType: dataType,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(request, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/scan/es/_utils/constant.js\":\n/*!***************************************************!*\\\n !*** ../dist/lib/@uni/scan/es/_utils/constant.js ***!\n \\***************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/scan/es/_utils/promisify.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/scan/es/_utils/promisify.js ***!\n \\****************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/scan/es/_utils/styleOptions.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/scan/es/_utils/styleOptions.js ***!\n \\*******************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/scan/es/ali-miniapp/index.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/scan/es/ali-miniapp/index.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/scan/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/scan/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalized\"])(function (options) {\n var hideAlbum = options.hideAlbum,\n scanType = options.scanType,\n success = options.success,\n fail = options.fail,\n complete = options.complete;\n my.scan({\n hideAlbum: hideAlbum,\n scanType: scanType,\n success: success,\n fail: fail,\n complete: complete\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/scan/es/baidu-smartprogram/index.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/scan/es/baidu-smartprogram/index.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/scan/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/scan/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalized\"])(function (options) {\n var success = options.success,\n fail = options.fail,\n complete = options.complete;\n swan.scanCode({\n success: success,\n fail: fail,\n complete: complete\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/scan/es/bytedance-microapp/index.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/scan/es/bytedance-microapp/index.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/scan/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/scan/es/_utils/constant.js\");\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalized\"])(function (options) {\n var hideAlbum = options.hideAlbum,\n scanType = options.scanType,\n success = options.success,\n fail = options.fail,\n complete = options.complete;\n tt.scanCode({\n onlyFromCamera: hideAlbum,\n scanType: scanType,\n success: success,\n fail: fail,\n complete: complete\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/scan/es/common.js\":\n/*!******************************************!*\\\n !*** ../dist/lib/@uni/scan/es/common.js ***!\n \\******************************************/\n/*! exports provided: normalized */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalized\", function() { return normalized; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/scan/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/scan/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar normalized = function (api, containerName) {\n return function (options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName);\n\n var afterOptions = _extends({\n hideAlbum: false,\n scanType: ['barCode', 'qrCode']\n }, _options, {\n success: function (res) {\n _options.success && _options.success(res);\n },\n complete: function (res) {\n _options.complete && _options.complete(res);\n }\n });\n\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(afterOptions);\n };\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/scan/es/index.js\":\n/*!*****************************************!*\\\n !*** ../dist/lib/@uni/scan/es/index.js ***!\n \\*****************************************/\n/*! exports provided: scanCode, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"scanCode\", function() { return scanCode; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/scan/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/scan/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/scan/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/scan/es/bytedance-microapp/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/scan/es/baidu-smartprogram/index.js\");\n/* harmony import */ var _kuaishou_miniprogram__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./kuaishou-miniprogram */ \"../dist/lib/@uni/scan/es/kuaishou-miniprogram/index.js\");\n\n\n\n\n\n\n\nvar scanCode = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return Object(_web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return Object(_kuaishou_miniprogram__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return Object(_wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return Object(_bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return Object(_ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return Object(_baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(args);\n } else {\n throw new Error('Uni API:scanCode暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (scanCode);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/scan/es/kuaishou-miniprogram/index.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/scan/es/kuaishou-miniprogram/index.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/scan/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/scan/es/_utils/constant.js\");\n\n\nvar SCANTYPEMAP = {\n barCode: 'barCode',\n qrCode: 'qrCode',\n dmCode: 'datamatrix',\n pdf417Code: 'pdf417'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalized\"])(function (options) {\n var hideAlbum = options.hideAlbum,\n scanType = options.scanType,\n success = options.success,\n fail = options.fail,\n complete = options.complete;\n ks.scanCode({\n onlyFromCamera: hideAlbum,\n scanType: SCANTYPEMAP[scanType],\n success: success,\n fail: fail,\n complete: complete\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/scan/es/web/index.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/scan/es/web/index.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n throw new Error('Uni API: scanCode不支持');\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/scan/es/wechat-miniprogram/index.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/scan/es/wechat-miniprogram/index.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/scan/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/scan/es/_utils/constant.js\");\n\n\nvar SCANTYPEMAP = {\n barCode: 'barCode',\n qrCode: 'qrCode',\n dmCode: 'datamatrix',\n pdf417Code: 'pdf417'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalized\"])(function (options) {\n var hideAlbum = options.hideAlbum,\n scanType = options.scanType,\n success = options.success,\n fail = options.fail,\n complete = options.complete;\n wx.scanCode({\n onlyFromCamera: hideAlbum,\n scanType: SCANTYPEMAP[scanType],\n success: success,\n fail: fail,\n complete: complete\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/_utils/constant.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/share/es/_utils/constant.js ***!\n \\****************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/_utils/promisify.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/share/es/_utils/promisify.js ***!\n \\*****************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/_utils/styleOptions.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/share/es/_utils/styleOptions.js ***!\n \\********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/ali-miniapp/hideShareMenu.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/ali-miniapp/hideShareMenu.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction hideShareMenu() {\n return my.hideShareMenu();\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideShareMenu);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/ali-miniapp/index.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/share/es/ali-miniapp/index.js ***!\n \\******************************************************/\n/*! exports provided: showShareMenu, hideShareMenu, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showShareMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showShareMenu */ \"../dist/lib/@uni/share/es/ali-miniapp/showShareMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showShareMenu\", function() { return _showShareMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideShareMenu */ \"../dist/lib/@uni/share/es/ali-miniapp/hideShareMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideShareMenu\", function() { return _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showShareMenu: _showShareMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hideShareMenu: _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/ali-miniapp/showShareMenu.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/ali-miniapp/showShareMenu.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction showShareMenu() {\n return my.showShareMenu();\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (showShareMenu);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/baidu-smartprogram/hideShareMenu.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/baidu-smartprogram/hideShareMenu.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction hideShareMenu() {\n throw new Error('Uni API:hideShareMenu web 暂不支持');\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideShareMenu);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/baidu-smartprogram/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/baidu-smartprogram/index.js ***!\n \\*************************************************************/\n/*! exports provided: showShareMenu, hideShareMenu, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showShareMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showShareMenu */ \"../dist/lib/@uni/share/es/baidu-smartprogram/showShareMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showShareMenu\", function() { return _showShareMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideShareMenu */ \"../dist/lib/@uni/share/es/baidu-smartprogram/hideShareMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideShareMenu\", function() { return _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showShareMenu: _showShareMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hideShareMenu: _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/baidu-smartprogram/showShareMenu.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/baidu-smartprogram/showShareMenu.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/share/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/share/es/_utils/constant.js\");\n\n\n\nfunction openShare(options) {\n var title = options.title,\n content = options.content,\n imageUrl = options.imageUrl,\n path = options.path,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return swan.openShare({\n title: title,\n content: content,\n imageUrl: imageUrl,\n path: path,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(openShare, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/bytedance-microapp/hideShareMenu.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/bytedance-microapp/hideShareMenu.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/share/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/share/es/_utils/constant.js\");\n\n\n\nfunction hideShareMenu(options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return tt.hideShareMenu({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(hideShareMenu, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/bytedance-microapp/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/bytedance-microapp/index.js ***!\n \\*************************************************************/\n/*! exports provided: showShareMenu, hideShareMenu, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showShareMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showShareMenu */ \"../dist/lib/@uni/share/es/bytedance-microapp/showShareMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showShareMenu\", function() { return _showShareMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideShareMenu */ \"../dist/lib/@uni/share/es/bytedance-microapp/hideShareMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideShareMenu\", function() { return _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showShareMenu: _showShareMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hideShareMenu: _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/bytedance-microapp/showShareMenu.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/bytedance-microapp/showShareMenu.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/share/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/share/es/_utils/constant.js\");\n\n\n\nfunction showShareMenu(options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return tt.showShareMenu({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(showShareMenu, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/common.js\":\n/*!*******************************************!*\\\n !*** ../dist/lib/@uni/share/es/common.js ***!\n \\*******************************************/\n/*! exports provided: styleOptions, normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOptions\", function() { return styleOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/share/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/share/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n/* eslint-disable @typescript-eslint/no-shadow */\n\n/* eslint-disable @typescript-eslint/no-invalid-void-type */\n\n/* eslint-disable no-empty */\n\n\n\n\nfunction styleOptions(options) {\n var afterOptions = _extends({}, options);\n\n return afterOptions;\n}\nfunction normalize(api, containerName) {\n return function (options) {\n var afterOptions = styleOptions(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName));\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(afterOptions);\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/index.js\":\n/*!******************************************!*\\\n !*** ../dist/lib/@uni/share/es/index.js ***!\n \\******************************************/\n/*! exports provided: showShareMenu, hideShareMenu, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showShareMenu\", function() { return showShareMenu; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hideShareMenu\", function() { return hideShareMenu; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/share/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/share/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/share/es/bytedance-microapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/share/es/web/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/share/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/share/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar showShareMenu = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showShareMenu();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].showShareMenu(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].showShareMenu(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showShareMenu(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showShareMenu();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showShareMenu(options);\n } else {\n throw new Error('Uni API:showShareMenu 暂不支持');\n }\n};\nvar hideShareMenu = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].hideShareMenu();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].hideShareMenu(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].hideShareMenu(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hideShareMenu(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hideShareMenu();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hideShareMenu();\n } else {\n throw new Error('Uni API:hideShareMenu 暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showShareMenu: showShareMenu,\n hideShareMenu: hideShareMenu\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/kuaishou-miniprogram/hideShareMenu.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/kuaishou-miniprogram/hideShareMenu.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/share/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/share/es/_utils/constant.js\");\n\n\n\nfunction hideShareMenu(options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return ks.hideShareMenu({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(hideShareMenu, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/kuaishou-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/kuaishou-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: showShareMenu, hideShareMenu, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showShareMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showShareMenu */ \"../dist/lib/@uni/share/es/kuaishou-miniprogram/showShareMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showShareMenu\", function() { return _showShareMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideShareMenu */ \"../dist/lib/@uni/share/es/kuaishou-miniprogram/hideShareMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideShareMenu\", function() { return _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showShareMenu: _showShareMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hideShareMenu: _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/kuaishou-miniprogram/showShareMenu.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/kuaishou-miniprogram/showShareMenu.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/share/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/share/es/_utils/constant.js\");\n\n\n\nfunction showShareMenu(options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return ks.showShareMenu({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(showShareMenu, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/web/hideShareMenu.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/share/es/web/hideShareMenu.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction hideShareMenu() {\n throw new Error('Uni API:hideShareMenu web 暂不支持');\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideShareMenu);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/web/index.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/share/es/web/index.js ***!\n \\**********************************************/\n/*! exports provided: showShareMenu, hideShareMenu, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showShareMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showShareMenu */ \"../dist/lib/@uni/share/es/web/showShareMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showShareMenu\", function() { return _showShareMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideShareMenu */ \"../dist/lib/@uni/share/es/web/hideShareMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideShareMenu\", function() { return _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showShareMenu: _showShareMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hideShareMenu: _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/web/showShareMenu.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/share/es/web/showShareMenu.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction showShareMenu() {\n throw new Error('Uni API:showShareMenu web 暂不支持');\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (showShareMenu);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/wechat-miniprogram/hideShareMenu.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/wechat-miniprogram/hideShareMenu.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/share/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/share/es/_utils/constant.js\");\n\n\n\nfunction hideShareMenu(options) {\n var menus = options.menus,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return wx.hideShareMenu({\n menus: menus,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(hideShareMenu, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/wechat-miniprogram/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/wechat-miniprogram/index.js ***!\n \\*************************************************************/\n/*! exports provided: showShareMenu, hideShareMenu, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showShareMenu__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showShareMenu */ \"../dist/lib/@uni/share/es/wechat-miniprogram/showShareMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showShareMenu\", function() { return _showShareMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hideShareMenu */ \"../dist/lib/@uni/share/es/wechat-miniprogram/hideShareMenu.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideShareMenu\", function() { return _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n showShareMenu: _showShareMenu__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hideShareMenu: _hideShareMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/share/es/wechat-miniprogram/showShareMenu.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/share/es/wechat-miniprogram/showShareMenu.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/share/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/share/es/_utils/constant.js\");\n\n\n\nfunction showShareMenu(options) {\n var _options$withShareTic = options.withShareTicket,\n withShareTicket = _options$withShareTic === void 0 ? false : _options$withShareTic,\n menus = options.menus,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n return wx.showShareMenu({\n withShareTicket: withShareTicket,\n menus: menus,\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(showShareMenu, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT));\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/_utils/constant.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/_utils/constant.js ***!\n \\******************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/_utils/miniappEnvApp.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/_utils/miniappEnvApp.js ***!\n \\***********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/_utils/promisify.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/_utils/promisify.js ***!\n \\*******************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/_utils/styleOptions.js ***!\n \\**********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/ali-miniapp/getStorage.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/ali-miniapp/getStorage.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/storage/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n\n\n\nvar getStorage = _common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"].getStorage(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.getStorage(args) : my.getStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/ali-miniapp/getStorageSync.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/ali-miniapp/getStorageSync.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/storage/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\n\nvar getStorageSync = function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.getStorageSync(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY)) : my.getStorageSync(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/ali-miniapp/index.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/ali-miniapp/index.js ***!\n \\********************************************************/\n/*! exports provided: getStorage, getStorageSync, setStorage, setStorageSync, removeStorage, removeStorageSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getStorage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getStorage */ \"../dist/lib/@uni/storage/es/ali-miniapp/getStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStorage\", function() { return _getStorage__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getStorageSync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getStorageSync */ \"../dist/lib/@uni/storage/es/ali-miniapp/getStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStorageSync\", function() { return _getStorageSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _setStorage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./setStorage */ \"../dist/lib/@uni/storage/es/ali-miniapp/setStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setStorage\", function() { return _setStorage__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _setStorageSync__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./setStorageSync */ \"../dist/lib/@uni/storage/es/ali-miniapp/setStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setStorageSync\", function() { return _setStorageSync__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _removeStorage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./removeStorage */ \"../dist/lib/@uni/storage/es/ali-miniapp/removeStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeStorage\", function() { return _removeStorage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./removeStorageSync */ \"../dist/lib/@uni/storage/es/ali-miniapp/removeStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeStorageSync\", function() { return _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getStorage: _getStorage__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getStorageSync: _getStorageSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n setStorage: _setStorage__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n setStorageSync: _setStorageSync__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n removeStorage: _removeStorage__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n removeStorageSync: _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/ali-miniapp/removeStorage.js\":\n/*!****************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/ali-miniapp/removeStorage.js ***!\n \\****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/storage/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n\n\n\nvar removeStorage = _common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"].removeStorage(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.removeStorage(args) : my.removeStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/ali-miniapp/removeStorageSync.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/ali-miniapp/removeStorageSync.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/storage/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\n\nvar removeStorageSync = function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.removeStorageSync(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY)) : my.removeStorageSync(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/ali-miniapp/setStorage.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/ali-miniapp/setStorage.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/storage/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n\n\n\nvar setStorage = _common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"].setStorage(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.setStorage(args) : my.setStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/ali-miniapp/setStorageSync.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/ali-miniapp/setStorageSync.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/storage/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\n\nvar setStorageSync = function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.setStorageSync(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY)) : my.setStorageSync(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (setStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/baidu-smartprogram/getStorage.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/baidu-smartprogram/getStorage.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar getStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getStorage(function (args) {\n return swan.getStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/baidu-smartprogram/getStorageSync.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/baidu-smartprogram/getStorageSync.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar getStorageSync = function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n return {\n data: swan.getStorageSync(args.key)\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/baidu-smartprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/baidu-smartprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: getStorage, getStorageSync, setStorage, setStorageSync, removeStorage, removeStorageSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getStorage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getStorage */ \"../dist/lib/@uni/storage/es/baidu-smartprogram/getStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStorage\", function() { return _getStorage__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getStorageSync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getStorageSync */ \"../dist/lib/@uni/storage/es/baidu-smartprogram/getStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStorageSync\", function() { return _getStorageSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _setStorage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./setStorage */ \"../dist/lib/@uni/storage/es/baidu-smartprogram/setStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setStorage\", function() { return _setStorage__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _setStorageSync__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./setStorageSync */ \"../dist/lib/@uni/storage/es/baidu-smartprogram/setStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setStorageSync\", function() { return _setStorageSync__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _removeStorage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./removeStorage */ \"../dist/lib/@uni/storage/es/baidu-smartprogram/removeStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeStorage\", function() { return _removeStorage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./removeStorageSync */ \"../dist/lib/@uni/storage/es/baidu-smartprogram/removeStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeStorageSync\", function() { return _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getStorage: _getStorage__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getStorageSync: _getStorageSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n setStorage: _setStorage__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n setStorageSync: _setStorageSync__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n removeStorage: _removeStorage__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n removeStorageSync: _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/baidu-smartprogram/removeStorage.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/baidu-smartprogram/removeStorage.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar removeStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].removeStorage(function (args) {\n return swan.removeStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/baidu-smartprogram/removeStorageSync.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/baidu-smartprogram/removeStorageSync.js ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar removeStorageSync = function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n return swan.removeStorageSync(args.key);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/baidu-smartprogram/setStorage.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/baidu-smartprogram/setStorage.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar setStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].setStorage(function (args) {\n return swan.setStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/baidu-smartprogram/setStorageSync.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/baidu-smartprogram/setStorageSync.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar setStorageSync = function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n return swan.setStorageSync(args.key, args.data);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (setStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/bytedance-microapp/getStorage.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/bytedance-microapp/getStorage.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar getStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getStorage(function (args) {\n return tt.getStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/bytedance-microapp/getStorageSync.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/bytedance-microapp/getStorageSync.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar getStorageSync = function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n return {\n data: tt.getStorageSync(args.key)\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/bytedance-microapp/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/bytedance-microapp/index.js ***!\n \\***************************************************************/\n/*! exports provided: getStorage, getStorageSync, setStorage, setStorageSync, removeStorage, removeStorageSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getStorage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getStorage */ \"../dist/lib/@uni/storage/es/bytedance-microapp/getStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStorage\", function() { return _getStorage__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getStorageSync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getStorageSync */ \"../dist/lib/@uni/storage/es/bytedance-microapp/getStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStorageSync\", function() { return _getStorageSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _setStorage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./setStorage */ \"../dist/lib/@uni/storage/es/bytedance-microapp/setStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setStorage\", function() { return _setStorage__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _setStorageSync__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./setStorageSync */ \"../dist/lib/@uni/storage/es/bytedance-microapp/setStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setStorageSync\", function() { return _setStorageSync__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _removeStorage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./removeStorage */ \"../dist/lib/@uni/storage/es/bytedance-microapp/removeStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeStorage\", function() { return _removeStorage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./removeStorageSync */ \"../dist/lib/@uni/storage/es/bytedance-microapp/removeStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeStorageSync\", function() { return _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getStorage: _getStorage__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getStorageSync: _getStorageSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n setStorage: _setStorage__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n setStorageSync: _setStorageSync__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n removeStorage: _removeStorage__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n removeStorageSync: _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/bytedance-microapp/removeStorage.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/bytedance-microapp/removeStorage.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar removeStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].removeStorage(function (args) {\n return tt.removeStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/bytedance-microapp/removeStorageSync.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/bytedance-microapp/removeStorageSync.js ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar removeStorageSync = function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n return tt.removeStorageSync(args.key);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/bytedance-microapp/setStorage.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/bytedance-microapp/setStorage.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar setStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].setStorage(function (args) {\n return tt.setStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/bytedance-microapp/setStorageSync.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/bytedance-microapp/setStorageSync.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar setStorageSync = function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n return tt.setStorageSync(args.key, args.data);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (setStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/common.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/storage/es/common.js ***!\n \\*********************************************/\n/*! exports provided: normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/storage/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n\n\n/**\n * @param params\n */\n\nfunction formatGetStorageRes(params) {\n if (params && typeof params.fail === 'function') {\n var failFn = params.fail;\n\n params.fail = function (err) {\n if (err.errMsg === 'getStorage:fail data not found') {\n typeof params.success === 'function' && params.success({\n data: null\n });\n typeof params.complete === 'function' && params.complete({\n data: null\n });\n return;\n }\n\n failFn(err);\n };\n }\n\n return params;\n}\n\nvar normalize = {\n getStorage: function (api, containerName) {\n return function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName);\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(formatGetStorageRes(args)).catch(function (e) {\n if (e.errMsg === 'getStorage:fail data not found') {\n return {\n data: null\n };\n }\n });\n };\n },\n setStorage: function (api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n },\n removeStorage: function (api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n }\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/index.js\":\n/*!********************************************!*\\\n !*** ../dist/lib/@uni/storage/es/index.js ***!\n \\********************************************/\n/*! exports provided: getStorage, getStorageSync, setStorage, setStorageSync, removeStorage, removeStorageSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStorage\", function() { return getStorage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getStorageSync\", function() { return getStorageSync; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setStorage\", function() { return setStorage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setStorageSync\", function() { return setStorageSync; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeStorage\", function() { return removeStorage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeStorageSync\", function() { return removeStorageSync; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/storage/es/web/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/storage/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/storage/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/storage/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/storage/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar getStorage = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getStorage(args);\n } else {\n throw new Error('Uni API:getStorage暂不支持');\n }\n};\nvar getStorageSync = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].getStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].getStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].getStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].getStorageSync(args);\n } else {\n throw new Error('Uni API:getStorageSync暂不支持');\n }\n};\nvar setStorage = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].setStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].setStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].setStorage(args);\n } else {\n throw new Error('Uni API:setStorage暂不支持');\n }\n};\nvar setStorageSync = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].setStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].setStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].setStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].setStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].setStorageSync(args);\n } else {\n throw new Error('Uni API:setStorageSync暂不支持');\n }\n};\nvar removeStorage = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].removeStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].removeStorage(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].removeStorage(args);\n } else {\n throw new Error('Uni API:removeStorage暂不支持');\n }\n};\nvar removeStorageSync = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].removeStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].removeStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].removeStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].removeStorageSync(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].removeStorageSync(args);\n } else {\n throw new Error('Uni API:removeStorageSync暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getStorage: getStorage,\n getStorageSync: getStorageSync,\n setStorage: setStorage,\n setStorageSync: setStorageSync,\n removeStorage: removeStorage,\n removeStorageSync: removeStorageSync\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/getStorage.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/kuaishou-miniprogram/getStorage.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar getStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getStorage(function (args) {\n return ks.getStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/getStorageSync.js\":\n/*!**************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/kuaishou-miniprogram/getStorageSync.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar getStorageSync = function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n return {\n data: ks.getStorageSync(args.key)\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/kuaishou-miniprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: getStorage, getStorageSync, setStorage, setStorageSync, removeStorage, removeStorageSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getStorage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getStorage */ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/getStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStorage\", function() { return _getStorage__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getStorageSync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getStorageSync */ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/getStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStorageSync\", function() { return _getStorageSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _setStorage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./setStorage */ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/setStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setStorage\", function() { return _setStorage__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _setStorageSync__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./setStorageSync */ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/setStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setStorageSync\", function() { return _setStorageSync__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _removeStorage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./removeStorage */ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/removeStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeStorage\", function() { return _removeStorage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./removeStorageSync */ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/removeStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeStorageSync\", function() { return _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getStorage: _getStorage__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getStorageSync: _getStorageSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n setStorage: _setStorage__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n setStorageSync: _setStorageSync__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n removeStorage: _removeStorage__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n removeStorageSync: _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/removeStorage.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/kuaishou-miniprogram/removeStorage.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar removeStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].removeStorage(function (args) {\n return ks.removeStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/removeStorageSync.js\":\n/*!*****************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/kuaishou-miniprogram/removeStorageSync.js ***!\n \\*****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar removeStorageSync = function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n return ks.removeStorageSync(args.key);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/setStorage.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/kuaishou-miniprogram/setStorage.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar setStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].setStorage(function (args) {\n return ks.setStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/kuaishou-miniprogram/setStorageSync.js\":\n/*!**************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/kuaishou-miniprogram/setStorageSync.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar setStorageSync = function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n return ks.setStorageSync(args.key, args.data);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (setStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/web/getStorage.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/web/getStorage.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar getStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getStorage(function (args) {\n var _ref = args || {},\n _ref$success = _ref.success,\n success = _ref$success === void 0 ? function () {} : _ref$success,\n _ref$fail = _ref.fail,\n fail = _ref$fail === void 0 ? function () {} : _ref$fail,\n _ref$complete = _ref.complete,\n complete = _ref$complete === void 0 ? function () {} : _ref$complete;\n\n try {\n if (Object.prototype.toString.call(args) !== '[object Object]') {\n throw new Error('the Function need a param of Object type');\n }\n\n if (!args.hasOwnProperty('key')) {\n throw new Error('the first param of this Function must contain a property named \"key\"');\n }\n\n if (typeof args.key !== 'string') {\n throw new Error('the first param of this Function must contain a property named \"key\" of string type');\n }\n\n var res = {\n data: JSON.parse(window.localStorage.getItem(args.key))\n };\n success(res);\n complete(res);\n return res;\n } catch (e) {\n fail(e);\n complete(e);\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/web/getStorageSync.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/web/getStorageSync.js ***!\n \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar getStorageSync = function (args) {\n if (Object.prototype.toString.call(args) !== '[object Object]') {\n throw new Error('the Function need a param of Object type');\n }\n\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n\n if (!args.hasOwnProperty('key')) {\n throw new Error('the first param of this Function must contain a property named \"key\"');\n }\n\n if (typeof args.key !== 'string') {\n throw new Error('the first param of this Function must contain a property named \"key\" of string type');\n }\n\n return {\n data: JSON.parse(window.localStorage.getItem(args.key))\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/web/index.js\":\n/*!************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/web/index.js ***!\n \\************************************************/\n/*! exports provided: getStorage, getStorageSync, setStorage, setStorageSync, removeStorage, removeStorageSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getStorage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getStorage */ \"../dist/lib/@uni/storage/es/web/getStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStorage\", function() { return _getStorage__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getStorageSync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getStorageSync */ \"../dist/lib/@uni/storage/es/web/getStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStorageSync\", function() { return _getStorageSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _setStorage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./setStorage */ \"../dist/lib/@uni/storage/es/web/setStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setStorage\", function() { return _setStorage__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _setStorageSync__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./setStorageSync */ \"../dist/lib/@uni/storage/es/web/setStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setStorageSync\", function() { return _setStorageSync__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _removeStorage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./removeStorage */ \"../dist/lib/@uni/storage/es/web/removeStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeStorage\", function() { return _removeStorage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./removeStorageSync */ \"../dist/lib/@uni/storage/es/web/removeStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeStorageSync\", function() { return _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getStorage: _getStorage__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getStorageSync: _getStorageSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n setStorage: _setStorage__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n setStorageSync: _setStorageSync__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n removeStorage: _removeStorage__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n removeStorageSync: _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/web/removeStorage.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/web/removeStorage.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar removeStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].removeStorage(function (args) {\n var _ref = args || {},\n _ref$success = _ref.success,\n success = _ref$success === void 0 ? function () {} : _ref$success,\n _ref$fail = _ref.fail,\n fail = _ref$fail === void 0 ? function () {} : _ref$fail,\n _ref$complete = _ref.complete,\n complete = _ref$complete === void 0 ? function () {} : _ref$complete;\n\n try {\n if (Object.prototype.toString.call(args) !== '[object Object]') {\n throw new Error('the Function need a param of Object type');\n }\n\n if (!args.hasOwnProperty('key')) {\n throw new Error('the first param of this Function must contain a property named \"key\"');\n }\n\n if (typeof args.key !== 'string') {\n throw new Error('the first param of this Function must contain a property named \"key\" of string type');\n }\n\n window.localStorage.removeItem(args.key);\n success();\n complete();\n } catch (e) {\n fail(e);\n complete(e);\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/web/removeStorageSync.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/web/removeStorageSync.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar removeStorageSync = function (args) {\n if (Object.prototype.toString.call(args) !== '[object Object]') {\n throw new Error('the Function need a param of Object type');\n }\n\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n\n if (!args.hasOwnProperty('key')) {\n throw new Error('the first param of this Function must contain a property named \"key\"');\n }\n\n if (typeof args.key !== 'string') {\n throw new Error('the first param of this Function must contain a property named \"key\" of string type');\n }\n\n window.localStorage.removeItem(args.key);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/web/setStorage.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/web/setStorage.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar setStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].setStorage(function (args) {\n var _ref = args || {},\n _ref$success = _ref.success,\n success = _ref$success === void 0 ? function () {} : _ref$success,\n _ref$fail = _ref.fail,\n fail = _ref$fail === void 0 ? function () {} : _ref$fail,\n _ref$complete = _ref.complete,\n complete = _ref$complete === void 0 ? function () {} : _ref$complete;\n\n try {\n if (Object.prototype.toString.call(args) !== '[object Object]') {\n throw new Error('the Function need a param of Object type');\n }\n\n if (!args.hasOwnProperty('key')) {\n throw new Error('the first param of this Function must contain a property named \"key\"');\n }\n\n if (typeof args.key !== 'string') {\n throw new Error('the first param of this Function must contain a property named \"key\" of string type');\n }\n\n if (!args.hasOwnProperty('data')) {\n throw new Error('the first param of this Function must contain a property named \"data\"');\n }\n\n window.localStorage.setItem(args.key, JSON.stringify(args.data));\n success();\n complete();\n } catch (e) {\n fail(e);\n complete(e);\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/web/setStorageSync.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/web/setStorageSync.js ***!\n \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar setStorageSync = function (args) {\n if (Object.prototype.toString.call(args) !== '[object Object]') {\n throw new Error('the Function need a param of Object type');\n }\n\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n\n if (!args.hasOwnProperty('key')) {\n throw new Error('the first param of this Function must contain a property named \"key\"');\n }\n\n if (typeof args.key !== 'string') {\n throw new Error('the first param of this Function must contain a property named \"key\" of string type');\n }\n\n if (!args.hasOwnProperty('data')) {\n throw new Error('the first param of this Function must contain a property named \"data\"');\n }\n\n window.localStorage.setItem(args.key, JSON.stringify(args.data));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (setStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/wechat-miniprogram/getStorage.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/wechat-miniprogram/getStorage.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar getStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].getStorage(function (args) {\n return wx.getStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/wechat-miniprogram/getStorageSync.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/wechat-miniprogram/getStorageSync.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar getStorageSync = function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n return {\n data: wx.getStorageSync(args.key)\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (getStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/wechat-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/wechat-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: getStorage, getStorageSync, setStorage, setStorageSync, removeStorage, removeStorageSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getStorage__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getStorage */ \"../dist/lib/@uni/storage/es/wechat-miniprogram/getStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStorage\", function() { return _getStorage__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getStorageSync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getStorageSync */ \"../dist/lib/@uni/storage/es/wechat-miniprogram/getStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getStorageSync\", function() { return _getStorageSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _setStorage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./setStorage */ \"../dist/lib/@uni/storage/es/wechat-miniprogram/setStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setStorage\", function() { return _setStorage__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _setStorageSync__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./setStorageSync */ \"../dist/lib/@uni/storage/es/wechat-miniprogram/setStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setStorageSync\", function() { return _setStorageSync__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _removeStorage__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./removeStorage */ \"../dist/lib/@uni/storage/es/wechat-miniprogram/removeStorage.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeStorage\", function() { return _removeStorage__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./removeStorageSync */ \"../dist/lib/@uni/storage/es/wechat-miniprogram/removeStorageSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeStorageSync\", function() { return _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getStorage: _getStorage__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getStorageSync: _getStorageSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n setStorage: _setStorage__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n setStorageSync: _setStorageSync__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n removeStorage: _removeStorage__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n removeStorageSync: _removeStorageSync__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/wechat-miniprogram/removeStorage.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/wechat-miniprogram/removeStorage.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar removeStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].removeStorage(function (args) {\n return wx.removeStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/wechat-miniprogram/removeStorageSync.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/wechat-miniprogram/removeStorageSync.js ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar removeStorageSync = function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n return wx.removeStorageSync(args.key);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (removeStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/wechat-miniprogram/setStorage.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/wechat-miniprogram/setStorage.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/storage/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\nvar setStorage = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].setStorage(function (args) {\n return wx.setStorage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (setStorage);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/storage/es/wechat-miniprogram/setStorageSync.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/storage/es/wechat-miniprogram/setStorageSync.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/styleOptions */ \"../dist/lib/@uni/storage/es/_utils/styleOptions.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/storage/es/_utils/constant.js\");\n\n\n\nvar setStorageSync = function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_0__[\"styleIn\"])(args, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n return wx.setStorageSync(args.key, args.data);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (setStorageSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/_utils/constant.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/_utils/constant.js ***!\n \\**********************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/_utils/miniappEnvApp.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/_utils/miniappEnvApp.js ***!\n \\***************************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/_utils/promisify.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/_utils/promisify.js ***!\n \\***********************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/_utils/styleOptions.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/_utils/styleOptions.js ***!\n \\**************************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/ali-miniapp/getInfo.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/ali-miniapp/getInfo.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/system-info/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/system-info/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/system-info/es/_utils/constant.js\");\n\n\n\nvar getInfo = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"formatSystemInfoAsync\"])(function (options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n\n var _getInfo = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.getSystemInfo : my.getSystemInfo;\n\n _getInfo({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/ali-miniapp/getInfoSync.js\":\n/*!******************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/ali-miniapp/getInfoSync.js ***!\n \\******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/system-info/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/system-info/es/common.js\");\n\n\nvar getInfoSync = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"formatSystemInfo\"])(function () {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.getSystemInfoSync() : my.getSystemInfoSync();\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfoSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/ali-miniapp/index.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/ali-miniapp/index.js ***!\n \\************************************************************/\n/*! exports provided: getInfo, getInfoSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getInfo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getInfo */ \"../dist/lib/@uni/system-info/es/ali-miniapp/getInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return _getInfo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getInfoSync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getInfoSync */ \"../dist/lib/@uni/system-info/es/ali-miniapp/getInfoSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfoSync\", function() { return _getInfoSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getInfo: _getInfo__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getInfoSync: _getInfoSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/baidu-smartprogram/getInfo.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/baidu-smartprogram/getInfo.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/system-info/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/system-info/es/_utils/constant.js\");\n\n\nvar getInfo = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"formatSystemInfoAsync\"])(function (options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n swan.getSystemInfo({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/baidu-smartprogram/getInfoSync.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/baidu-smartprogram/getInfoSync.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/system-info/es/common.js\");\n\nvar getInfoSync = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"formatSystemInfo\"])(function () {\n return swan.getSystemInfoSync();\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfoSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/baidu-smartprogram/index.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/baidu-smartprogram/index.js ***!\n \\*******************************************************************/\n/*! exports provided: getInfo, getInfoSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getInfo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getInfo */ \"../dist/lib/@uni/system-info/es/baidu-smartprogram/getInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return _getInfo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getInfoSync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getInfoSync */ \"../dist/lib/@uni/system-info/es/baidu-smartprogram/getInfoSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfoSync\", function() { return _getInfoSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getInfo: _getInfo__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getInfoSync: _getInfoSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/bytedance-microapp/getInfo.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/bytedance-microapp/getInfo.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/system-info/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/system-info/es/_utils/constant.js\");\n\n\nvar getInfo = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"formatSystemInfoAsync\"])(function (options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n tt.getSystemInfo({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/bytedance-microapp/getInfoSync.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/bytedance-microapp/getInfoSync.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/system-info/es/common.js\");\n\nvar getInfoSync = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"formatSystemInfo\"])(function () {\n return tt.getSystemInfoSync();\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfoSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/bytedance-microapp/index.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/bytedance-microapp/index.js ***!\n \\*******************************************************************/\n/*! exports provided: getInfo, getInfoSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getInfo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getInfo */ \"../dist/lib/@uni/system-info/es/bytedance-microapp/getInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return _getInfo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getInfoSync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getInfoSync */ \"../dist/lib/@uni/system-info/es/bytedance-microapp/getInfoSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfoSync\", function() { return _getInfoSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getInfo: _getInfo__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getInfoSync: _getInfoSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/common.js\":\n/*!*************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/common.js ***!\n \\*************************************************/\n/*! exports provided: formatSystemInfo, formatResult, formatSystemInfoAsync */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatSystemInfo\", function() { return formatSystemInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatResult\", function() { return formatResult; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"formatSystemInfoAsync\", function() { return formatSystemInfoAsync; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/system-info/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/system-info/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nvar formatLanguage = function (language) {\n var fl = 'en';\n\n switch (language.toLowerCase()) {\n case 'zh_cn':\n case 'zh-hans':\n case 'zh-cn':\n case 'chinese':\n fl = 'zh_CN';\n break;\n\n case 'zh_tw':\n case 'zh-hant':\n case 'zh-hk':\n fl = 'zh_TW';\n break;\n\n case 'en':\n case 'english':\n case 'en-us':\n fl = 'en';\n break;\n\n default:\n fl = 'en';\n }\n\n return fl;\n};\n\nvar formatSystemInfo = function (api) {\n return function () {\n var res = api();\n return formatResult(res);\n };\n};\nvar formatResult = function (data) {\n return _extends({}, {\n pixelRatio: 1,\n screenWidth: 0,\n screenHeight: 0,\n windowWidth: 0,\n windowHeight: 0,\n language: '',\n version: '',\n platform: ''\n }, data, {\n language: data.language ? formatLanguage(data.language) : ''\n });\n};\nvar formatSystemInfoAsync = function (api, containerName) {\n return function (options) {\n var _options = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(options, containerName);\n\n var afterOptions = _extends({}, _options, {\n success: function (res) {\n _options.success && _options.success(formatResult(res));\n },\n complete: function (res) {\n _options.complete && _options.complete(res.pixelRatio ? formatResult(res) : res);\n }\n });\n\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(afterOptions).then(formatResult);\n };\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/index.js\":\n/*!************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/index.js ***!\n \\************************************************/\n/*! exports provided: getInfoSync, getInfo, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInfoSync\", function() { return getInfoSync; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return getInfo; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/system-info/es/web/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/system-info/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/system-info/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/system-info/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/system-info/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/system-info/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar getInfoSync = function () {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_1__[\"getInfoSync\"]();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"getInfoSync\"]();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"getInfoSync\"]();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"getInfoSync\"]();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__[\"getInfoSync\"]();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"getInfoSync\"]();\n } else {\n throw new Error('Uni API:getInfoSync暂不支持');\n }\n};\nvar getInfo = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_1__[\"getInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"getInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"getInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"getInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_2__[\"getInfo\"](options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"getInfo\"](options);\n } else {\n throw new Error('Uni API:getInfo暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getInfoSync: getInfoSync,\n getInfo: getInfo\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/kuaishou-miniprogram/getInfo.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/kuaishou-miniprogram/getInfo.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/system-info/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/system-info/es/_utils/constant.js\");\n\n\nvar getInfo = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"formatSystemInfoAsync\"])(function (options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n ks.getSystemInfo({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/kuaishou-miniprogram/getInfoSync.js\":\n/*!***************************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/kuaishou-miniprogram/getInfoSync.js ***!\n \\***************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/system-info/es/common.js\");\n\nvar getInfoSync = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"formatSystemInfo\"])(function () {\n return ks.getSystemInfoSync();\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfoSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/kuaishou-miniprogram/index.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/kuaishou-miniprogram/index.js ***!\n \\*********************************************************************/\n/*! exports provided: getInfo, getInfoSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getInfo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getInfo */ \"../dist/lib/@uni/system-info/es/kuaishou-miniprogram/getInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return _getInfo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getInfoSync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getInfoSync */ \"../dist/lib/@uni/system-info/es/kuaishou-miniprogram/getInfoSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfoSync\", function() { return _getInfoSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getInfo: _getInfo__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getInfoSync: _getInfoSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/web/getInfo.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/web/getInfo.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/system-info/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/system-info/es/_utils/constant.js\");\n\n\n\nfunction getPlatform() {\n var _navigator = navigator,\n platform = _navigator.platform;\n\n if (platform) {\n if (/(iphone|ipod|ipad)/.test(navigator.userAgent.toLowerCase())) return 'iOS';\n if (/android/.test(navigator.userAgent.toLowerCase())) return 'Android';\n return platform;\n }\n\n return '';\n}\n\nvar getInfoSync = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"formatSystemInfo\"])(function () {\n return {\n pixelRatio: window.devicePixelRatio,\n screenWidth: window.document.documentElement.clientWidth,\n screenHeight: window.document.documentElement.clientHeight,\n windowWidth: window.innerWidth,\n windowHeight: window.innerHeight,\n language: navigator.language,\n version: navigator.appVersion,\n platform: getPlatform() || ''\n };\n});\nvar getInfo = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"formatSystemInfoAsync\"])(function (options) {\n var success = options.success,\n fail = options.fail,\n complete = options.complete;\n\n try {\n var res = getInfoSync();\n success && success(res);\n complete && complete(res);\n } catch (e) {\n fail && fail(e);\n complete && complete(e);\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/web/getInfoSync.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/web/getInfoSync.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/system-info/es/common.js\");\n\n\nfunction getPlatform() {\n var _navigator = navigator,\n platform = _navigator.platform;\n\n if (platform) {\n if (/(iphone|ipod|ipad)/.test(navigator.userAgent.toLowerCase())) return 'iOS';\n if (/android/.test(navigator.userAgent.toLowerCase())) return 'Android';\n return platform;\n }\n\n return '';\n}\n\nvar getInfoSync = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"formatSystemInfo\"])(function () {\n return {\n pixelRatio: window.devicePixelRatio,\n screenWidth: window.document.documentElement.clientWidth,\n screenHeight: window.document.documentElement.clientHeight,\n windowWidth: window.innerWidth,\n windowHeight: window.innerHeight,\n language: navigator.language,\n version: navigator.appVersion,\n platform: getPlatform()\n };\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfoSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/web/index.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/web/index.js ***!\n \\****************************************************/\n/*! exports provided: getInfo, getInfoSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getInfo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getInfo */ \"../dist/lib/@uni/system-info/es/web/getInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return _getInfo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getInfoSync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getInfoSync */ \"../dist/lib/@uni/system-info/es/web/getInfoSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfoSync\", function() { return _getInfoSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getInfo: _getInfo__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getInfoSync: _getInfoSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/wechat-miniprogram/getInfo.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/wechat-miniprogram/getInfo.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/system-info/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/system-info/es/_utils/constant.js\");\n\n\nvar getInfo = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"formatSystemInfoAsync\"])(function (options) {\n var _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n wx.getSystemInfo({\n success: function (res) {\n _success && _success(res);\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/wechat-miniprogram/getInfoSync.js\":\n/*!*************************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/wechat-miniprogram/getInfoSync.js ***!\n \\*************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/system-info/es/common.js\");\n\nvar getInfoSync = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"formatSystemInfo\"])(function () {\n return wx.getSystemInfoSync();\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (getInfoSync);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/system-info/es/wechat-miniprogram/index.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/system-info/es/wechat-miniprogram/index.js ***!\n \\*******************************************************************/\n/*! exports provided: getInfo, getInfoSync, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _getInfo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./getInfo */ \"../dist/lib/@uni/system-info/es/wechat-miniprogram/getInfo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfo\", function() { return _getInfo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _getInfoSync__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./getInfoSync */ \"../dist/lib/@uni/system-info/es/wechat-miniprogram/getInfoSync.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInfoSync\", function() { return _getInfoSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n getInfo: _getInfo__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n getInfoSync: _getInfoSync__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/_utils/constant.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/_utils/constant.js ***!\n \\******************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/_utils/miniappEnvApp.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/_utils/miniappEnvApp.js ***!\n \\***********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/_utils/promisify.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/_utils/promisify.js ***!\n \\*******************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/_utils/styleOptions.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/_utils/styleOptions.js ***!\n \\**********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/ali-miniapp/hideTabBar.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/ali-miniapp/hideTabBar.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/tab-bar/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/tab-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/tab-bar/es/_utils/constant.js\");\n\n\n\nvar hideTabBar = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeHideTabBarOptions\"])(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.hideTabBar(args) : my.hideTabBar(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideTabBar);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/ali-miniapp/index.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/ali-miniapp/index.js ***!\n \\********************************************************/\n/*! exports provided: hideTabBar, showTabBar, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _hideTabBar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideTabBar */ \"../dist/lib/@uni/tab-bar/es/ali-miniapp/hideTabBar.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideTabBar\", function() { return _hideTabBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _showTabBar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./showTabBar */ \"../dist/lib/@uni/tab-bar/es/ali-miniapp/showTabBar.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showTabBar\", function() { return _showTabBar__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n hideTabBar: _hideTabBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n showTabBar: _showTabBar__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/ali-miniapp/showTabBar.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/ali-miniapp/showTabBar.js ***!\n \\*************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/tab-bar/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/tab-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/tab-bar/es/_utils/constant.js\");\n\n\n\nvar showTabBar = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalizeShowTabBarOptions\"])(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.showTabBar(args) : my.showTabBar(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_2__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (showTabBar);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/baidu-smartprogram/hideTabBar.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/baidu-smartprogram/hideTabBar.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/tab-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/tab-bar/es/_utils/constant.js\");\n\n\nvar hideTabBar = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeHideTabBarOptions\"])(function (args) {\n return swan.hideTabBar(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideTabBar);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/baidu-smartprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/baidu-smartprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: hideTabBar, showTabBar, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _hideTabBar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideTabBar */ \"../dist/lib/@uni/tab-bar/es/baidu-smartprogram/hideTabBar.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideTabBar\", function() { return _hideTabBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _showTabBar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./showTabBar */ \"../dist/lib/@uni/tab-bar/es/baidu-smartprogram/showTabBar.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showTabBar\", function() { return _showTabBar__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n hideTabBar: _hideTabBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n showTabBar: _showTabBar__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/baidu-smartprogram/showTabBar.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/baidu-smartprogram/showTabBar.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/tab-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/tab-bar/es/_utils/constant.js\");\n\n\nvar showTabBar = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeShowTabBarOptions\"])(function (args) {\n return swan.showTabBar(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (showTabBar);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/bytedance-microapp/hideTabBar.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/bytedance-microapp/hideTabBar.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/tab-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/tab-bar/es/_utils/constant.js\");\n\n\nvar hideTabBar = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeHideTabBarOptions\"])(function (args) {\n return tt.hideTabBar(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideTabBar);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/bytedance-microapp/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/bytedance-microapp/index.js ***!\n \\***************************************************************/\n/*! exports provided: hideTabBar, showTabBar, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _hideTabBar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideTabBar */ \"../dist/lib/@uni/tab-bar/es/bytedance-microapp/hideTabBar.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideTabBar\", function() { return _hideTabBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _showTabBar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./showTabBar */ \"../dist/lib/@uni/tab-bar/es/bytedance-microapp/showTabBar.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showTabBar\", function() { return _showTabBar__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n hideTabBar: _hideTabBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n showTabBar: _showTabBar__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/bytedance-microapp/showTabBar.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/bytedance-microapp/showTabBar.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/tab-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/tab-bar/es/_utils/constant.js\");\n\n\nvar showTabBar = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeShowTabBarOptions\"])(function (args) {\n return tt.showTabBar(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (showTabBar);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/common.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/common.js ***!\n \\*********************************************/\n/*! exports provided: normalizeShowTabBarOptions, normalizeHideTabBarOptions */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeShowTabBarOptions\", function() { return normalizeShowTabBarOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalizeHideTabBarOptions\", function() { return normalizeHideTabBarOptions; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/tab-bar/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/tab-bar/es/_utils/styleOptions.js\");\n\n\n/**\n * showTabBar api\n * @param api\n * @param containerName\n * @returns\n */\n\nfunction normalizeShowTabBarOptions(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n}\n/**\n * hideTabBar api\n * @param api\n * @param containerName\n * @returns\n */\n\nfunction normalizeHideTabBarOptions(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/index.js\":\n/*!********************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/index.js ***!\n \\********************************************/\n/*! exports provided: hideTabBar, showTabBar, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hideTabBar\", function() { return hideTabBar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showTabBar\", function() { return showTabBar; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/tab-bar/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/tab-bar/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/tab-bar/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/tab-bar/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/tab-bar/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\nvar hideTabBar = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].hideTabBar(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].hideTabBar(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hideTabBar(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hideTabBar(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].hideTabBar(args);\n } else {\n throw new Error('Uni API:hideTabBar暂不支持');\n }\n};\nvar showTabBar = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showTabBar(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].showTabBar(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showTabBar(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showTabBar(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].showTabBar(args);\n } else {\n throw new Error('Uni API:showTabBar暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n hideTabBar: hideTabBar,\n showTabBar: showTabBar\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/kuaishou-miniprogram/hideTabBar.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/kuaishou-miniprogram/hideTabBar.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/tab-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/tab-bar/es/_utils/constant.js\");\n\n\nvar hideTabBar = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeHideTabBarOptions\"])(function (args) {\n return ks.hideTabBar(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideTabBar);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/kuaishou-miniprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/kuaishou-miniprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: hideTabBar, showTabBar, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _hideTabBar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideTabBar */ \"../dist/lib/@uni/tab-bar/es/kuaishou-miniprogram/hideTabBar.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideTabBar\", function() { return _hideTabBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _showTabBar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./showTabBar */ \"../dist/lib/@uni/tab-bar/es/kuaishou-miniprogram/showTabBar.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showTabBar\", function() { return _showTabBar__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n hideTabBar: _hideTabBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n showTabBar: _showTabBar__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/kuaishou-miniprogram/showTabBar.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/kuaishou-miniprogram/showTabBar.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/tab-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/tab-bar/es/_utils/constant.js\");\n\n\nvar showTabBar = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeShowTabBarOptions\"])(function (args) {\n return ks.showTabBar(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (showTabBar);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/wechat-miniprogram/hideTabBar.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/wechat-miniprogram/hideTabBar.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/tab-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/tab-bar/es/_utils/constant.js\");\n\n\nvar hideTabBar = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeHideTabBarOptions\"])(function (args) {\n return wx.hideTabBar(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (hideTabBar);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/wechat-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/wechat-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: hideTabBar, showTabBar, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _hideTabBar__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideTabBar */ \"../dist/lib/@uni/tab-bar/es/wechat-miniprogram/hideTabBar.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideTabBar\", function() { return _hideTabBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _showTabBar__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./showTabBar */ \"../dist/lib/@uni/tab-bar/es/wechat-miniprogram/showTabBar.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showTabBar\", function() { return _showTabBar__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n hideTabBar: _hideTabBar__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n showTabBar: _showTabBar__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/tab-bar/es/wechat-miniprogram/showTabBar.js\":\n/*!********************************************************************!*\\\n !*** ../dist/lib/@uni/tab-bar/es/wechat-miniprogram/showTabBar.js ***!\n \\********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/tab-bar/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/tab-bar/es/_utils/constant.js\");\n\n\nvar showTabBar = Object(_common__WEBPACK_IMPORTED_MODULE_0__[\"normalizeShowTabBarOptions\"])(function (args) {\n return wx.showTabBar(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (showTabBar);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/_utils/miniappEnvApp.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/_utils/miniappEnvApp.js ***!\n \\*********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/_utils/promisify.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/_utils/promisify.js ***!\n \\*****************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/ali-miniapp/hide.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/ali-miniapp/hide.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _hideToast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideToast */ \"../dist/lib/@uni/toast/es/ali-miniapp/hideToast.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_hideToast__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/ali-miniapp/hideToast.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/ali-miniapp/hideToast.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index */ \"../dist/lib/@uni/toast/es/utils/index.js\");\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/toast/es/_utils/miniappEnvApp.js\");\n\n\nvar hide = Object(_utils_index__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n var hideToast = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_1__[\"isDingdingMiniapp\"] ? dd.hideToast : my.hideToast;\n hideToast(options);\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (hide);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/ali-miniapp/index.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/ali-miniapp/index.js ***!\n \\******************************************************/\n/*! exports provided: show, hide, showToast, hideToast, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _show__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./show */ \"../dist/lib/@uni/toast/es/ali-miniapp/show.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"show\", function() { return _show__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hide__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hide */ \"../dist/lib/@uni/toast/es/ali-miniapp/hide.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return _hide__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _showToast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./showToast */ \"../dist/lib/@uni/toast/es/ali-miniapp/showToast.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showToast\", function() { return _showToast__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _hideToast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hideToast */ \"../dist/lib/@uni/toast/es/ali-miniapp/hideToast.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideToast\", function() { return _hideToast__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n show: _show__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hide: _hide__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n showToast: _showToast__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n hideToast: _hideToast__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/ali-miniapp/show.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/ali-miniapp/show.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showToast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showToast */ \"../dist/lib/@uni/toast/es/ali-miniapp/showToast.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_showToast__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/ali-miniapp/showToast.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/ali-miniapp/showToast.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index */ \"../dist/lib/@uni/toast/es/utils/index.js\");\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/toast/es/_utils/miniappEnvApp.js\");\n\n\nvar show = Object(_utils_index__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n var type = options.type,\n content = options.content,\n duration = options.duration,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n var showToast = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_1__[\"isDingdingMiniapp\"] ? dd.showToast : my.showToast;\n showToast({\n type: type,\n content: content,\n duration: duration,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (show);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/baidu-smartprogram/hide.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/baidu-smartprogram/hide.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _hideToast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideToast */ \"../dist/lib/@uni/toast/es/baidu-smartprogram/hideToast.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_hideToast__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/baidu-smartprogram/hideToast.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/baidu-smartprogram/hideToast.js ***!\n \\*****************************************************************/\n/*! exports provided: hide, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return hide; });\n/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index */ \"../dist/lib/@uni/toast/es/utils/index.js\");\n\nvar hide = Object(_utils_index__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n swan.hideToast(options);\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (hide);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/baidu-smartprogram/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/baidu-smartprogram/index.js ***!\n \\*************************************************************/\n/*! exports provided: show, hide, showToast, hideToast, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _show__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./show */ \"../dist/lib/@uni/toast/es/baidu-smartprogram/show.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"show\", function() { return _show__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hide__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hide */ \"../dist/lib/@uni/toast/es/baidu-smartprogram/hide.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return _hide__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _showToast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./showToast */ \"../dist/lib/@uni/toast/es/baidu-smartprogram/showToast.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showToast\", function() { return _showToast__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _hideToast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hideToast */ \"../dist/lib/@uni/toast/es/baidu-smartprogram/hideToast.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideToast\", function() { return _hideToast__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n show: _show__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hide: _hide__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n showToast: _showToast__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n hideToast: _hideToast__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/baidu-smartprogram/show.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/baidu-smartprogram/show.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showToast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showToast */ \"../dist/lib/@uni/toast/es/baidu-smartprogram/showToast.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_showToast__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/baidu-smartprogram/showToast.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/baidu-smartprogram/showToast.js ***!\n \\*****************************************************************/\n/*! exports provided: show, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"show\", function() { return show; });\n/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index */ \"../dist/lib/@uni/toast/es/utils/index.js\");\n\nvar show = Object(_utils_index__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n var type = options.type,\n content = options.content,\n duration = options.duration,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n\n if (type === 'fail') {\n swan.showToast({\n image: 'https://gw.alicdn.com/imgextra/i2/O1CN01XzxlKk1GL8IyXoqEa_!!6000000000605-2-tps-200-200.png',\n title: content,\n duration: duration,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n } else {\n swan.showToast({\n icon: {\n success: 'success',\n loading: 'loading',\n none: 'none'\n }[type] || 'none',\n title: content,\n duration: duration,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (show);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/bytedance-microapp/hide.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/bytedance-microapp/hide.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _hideToast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideToast */ \"../dist/lib/@uni/toast/es/bytedance-microapp/hideToast.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_hideToast__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/bytedance-microapp/hideToast.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/bytedance-microapp/hideToast.js ***!\n \\*****************************************************************/\n/*! exports provided: hide, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return hide; });\n/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index */ \"../dist/lib/@uni/toast/es/utils/index.js\");\n\nvar hide = Object(_utils_index__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n tt.hideToast(options);\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (hide);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/bytedance-microapp/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/bytedance-microapp/index.js ***!\n \\*************************************************************/\n/*! exports provided: show, hide, showToast, hideToast, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _show__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./show */ \"../dist/lib/@uni/toast/es/bytedance-microapp/show.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"show\", function() { return _show__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hide__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hide */ \"../dist/lib/@uni/toast/es/bytedance-microapp/hide.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return _hide__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _showToast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./showToast */ \"../dist/lib/@uni/toast/es/bytedance-microapp/showToast.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showToast\", function() { return _showToast__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _hideToast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hideToast */ \"../dist/lib/@uni/toast/es/bytedance-microapp/hideToast.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideToast\", function() { return _hideToast__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n show: _show__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hide: _hide__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n showToast: _showToast__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n hideToast: _hideToast__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/bytedance-microapp/show.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/bytedance-microapp/show.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showToast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showToast */ \"../dist/lib/@uni/toast/es/bytedance-microapp/showToast.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_showToast__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/bytedance-microapp/showToast.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/bytedance-microapp/showToast.js ***!\n \\*****************************************************************/\n/*! exports provided: show, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"show\", function() { return show; });\n/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index */ \"../dist/lib/@uni/toast/es/utils/index.js\");\n\nvar show = Object(_utils_index__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n var type = options.type,\n content = options.content,\n duration = options.duration,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n tt.showToast({\n icon: {\n success: 'success',\n fail: 'fail',\n none: 'none',\n loading: 'loading'\n }[type] || 'none',\n title: content,\n duration: duration,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (show);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/index.js\":\n/*!******************************************!*\\\n !*** ../dist/lib/@uni/toast/es/index.js ***!\n \\******************************************/\n/*! exports provided: show, hide, showToast, hideToast, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"show\", function() { return show; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return hide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showToast\", function() { return showToast; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hideToast\", function() { return hideToast; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/toast/es/ali-miniapp/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/toast/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/toast/es/bytedance-microapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/toast/es/web/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/toast/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/toast/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n\nvar show = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].show(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].show(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].show(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].show(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].show(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].show(options);\n } else {\n throw new Error('Uni API:Toast暂不支持');\n }\n};\nvar hide = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].hide(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].hide(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].hide(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hide(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hide(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hide(options);\n } else {\n throw new Error('Uni API:Toast暂不支持');\n }\n};\nvar showToast = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showToast(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].showToast(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].showToast(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showToast(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].showToast(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].showToast(options);\n } else {\n throw new Error('Uni API:Toast暂不支持');\n }\n};\nvar hideToast = function (options) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].hideToast(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].hideToast(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].hideToast(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hideToast(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].hideToast(options);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].hideToast(options);\n } else {\n throw new Error('Uni API:Toast暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n show: show,\n hide: hide,\n showToast: showToast,\n hideToast: hideToast\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/kuaishou-miniprogram/hide.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/kuaishou-miniprogram/hide.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _hideToast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideToast */ \"../dist/lib/@uni/toast/es/kuaishou-miniprogram/hideToast.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_hideToast__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/kuaishou-miniprogram/hideToast.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/kuaishou-miniprogram/hideToast.js ***!\n \\*******************************************************************/\n/*! exports provided: hide, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return hide; });\n/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index */ \"../dist/lib/@uni/toast/es/utils/index.js\");\n\nvar hide = Object(_utils_index__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n ks.hideToast(options);\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (hide);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/kuaishou-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/kuaishou-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: show, hide, showToast, hideToast, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _show__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./show */ \"../dist/lib/@uni/toast/es/kuaishou-miniprogram/show.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"show\", function() { return _show__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hide__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hide */ \"../dist/lib/@uni/toast/es/kuaishou-miniprogram/hide.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return _hide__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _showToast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./showToast */ \"../dist/lib/@uni/toast/es/kuaishou-miniprogram/showToast.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showToast\", function() { return _showToast__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _hideToast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hideToast */ \"../dist/lib/@uni/toast/es/kuaishou-miniprogram/hideToast.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideToast\", function() { return _hideToast__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n show: _show__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hide: _hide__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n showToast: _showToast__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n hideToast: _hideToast__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/kuaishou-miniprogram/show.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/kuaishou-miniprogram/show.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showToast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showToast */ \"../dist/lib/@uni/toast/es/kuaishou-miniprogram/showToast.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_showToast__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/kuaishou-miniprogram/showToast.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/kuaishou-miniprogram/showToast.js ***!\n \\*******************************************************************/\n/*! exports provided: show, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"show\", function() { return show; });\n/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index */ \"../dist/lib/@uni/toast/es/utils/index.js\");\n\nvar show = Object(_utils_index__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n var type = options.type,\n content = options.content,\n duration = options.duration,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n // 快手image 不起作用。。\n ks.showToast({\n icon: {\n success: 'success',\n loading: 'loading',\n none: 'none'\n }[type] || 'none',\n title: content,\n duration: duration,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (show);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/utils/index.js\":\n/*!************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/utils/index.js ***!\n \\************************************************/\n/*! exports provided: LONG_DELAY, SHORT_DELAY, styleOptions, normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LONG_DELAY\", function() { return LONG_DELAY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHORT_DELAY\", function() { return SHORT_DELAY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOptions\", function() { return styleOptions; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/promisify */ \"../dist/lib/@uni/toast/es/_utils/promisify.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\nvar LONG_DELAY = 3500; // 3.5 seconds\n\nvar SHORT_DELAY = 2000; // 2 seconds\n\nfunction styleOptions(options) {\n var DEFAULT_REQUEST_OPTIONS = {\n content: '',\n type: 'none',\n duration: SHORT_DELAY\n };\n\n if (typeof options === 'string') {\n return _extends({}, DEFAULT_REQUEST_OPTIONS, {\n content: options\n });\n } else {\n return _extends({}, DEFAULT_REQUEST_OPTIONS, options);\n }\n}\nfunction normalize(api) {\n return function (options) {\n var afterOptions = styleOptions(options);\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(afterOptions);\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/web/hide.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/toast/es/web/hide.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _hideToast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideToast */ \"../dist/lib/@uni/toast/es/web/hideToast.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_hideToast__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/web/hideToast.js\":\n/*!**************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/web/hideToast.js ***!\n \\**************************************************/\n/*! exports provided: hide, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return hide; });\n/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index */ \"../dist/lib/@uni/toast/es/utils/index.js\");\n\nvar hide = Object(_utils_index__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n var success = options.success,\n fail = options.fail,\n complete = options.complete; // remove all queued messages\n\n try {\n if (!window._uni_toast_status) {\n success && success();\n complete && complete();\n return;\n }\n\n window._uni_toast_status.queue = [];\n\n window._uni_toast_inner_toast.switchToNext();\n\n success && success();\n complete && complete();\n } catch (e) {\n fail && fail(e);\n complete && complete(e);\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (hide);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/web/index.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/toast/es/web/index.js ***!\n \\**********************************************/\n/*! exports provided: show, hide, showToast, hideToast, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _show__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./show */ \"../dist/lib/@uni/toast/es/web/show.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"show\", function() { return _show__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hide__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hide */ \"../dist/lib/@uni/toast/es/web/hide.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return _hide__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _showToast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./showToast */ \"../dist/lib/@uni/toast/es/web/showToast.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showToast\", function() { return _showToast__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _hideToast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hideToast */ \"../dist/lib/@uni/toast/es/web/hideToast.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideToast\", function() { return _hideToast__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n show: _show__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hide: _hide__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n showToast: _showToast__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n hideToast: _hideToast__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/web/show.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/toast/es/web/show.js ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showToast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showToast */ \"../dist/lib/@uni/toast/es/web/showToast.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_showToast__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/web/showToast.js\":\n/*!**************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/web/showToast.js ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index */ \"../dist/lib/@uni/toast/es/utils/index.js\");\n/* eslint-disable guard-for-in */\n\nvar styles = {\n container: {\n backgroundColor: 'rgba(0, 0, 0, 0.6)',\n boxSizing: 'border-box',\n maxWidth: '80%',\n color: '#ffffff',\n padding: '8px 16px',\n position: 'fixed',\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n justifyContent: 'center',\n left: '50%',\n bottom: '50%',\n fontSize: '16px',\n lineHeight: '32px',\n fontWeight: '600',\n borderRadius: '4px',\n textAlign: 'center',\n transition: 'all 0.4s ease-in-out',\n webkitTransition: 'all 0.4s ease-in-out',\n transform: 'translateX(-50%)',\n webkitTransform: 'translateX(-50%)',\n zIndex: 9999\n },\n icon: {\n marginBottom: '5px',\n width: '45px',\n height: '45px'\n }\n};\n\nfunction showToastWindow(message, iconUrl) {\n if (!window._uni_toast_status.toastWin) {\n window._uni_toast_status.toastIcon = null;\n window._uni_toast_status.toastWin = document.createElement('div');\n\n window._uni_toast_status.toastWin.setAttribute('role', 'alert'); // support for ARIA, add tabindex for focus\n // https://developer.mozilla.org/zh-CN/docs/Web/HTML/Global_attributes/tabindex\n\n\n window._uni_toast_status.toastWin.setAttribute('tabindex', '-1');\n\n for (var key in styles.container) {\n window._uni_toast_status.toastWin.style[key] = styles.container[key];\n }\n\n window._uni_toast_status.toastContent = document.createElement('div');\n\n window._uni_toast_status.toastWin.appendChild(window._uni_toast_status.toastContent);\n\n document.body.appendChild(window._uni_toast_status.toastWin);\n } // 创建icon\n\n\n if (window._uni_toast_status.toastIcon && !iconUrl) {\n window._uni_toast_status.toastWin.removeChild(window._uni_toast_status.toastIcon);\n\n window._uni_toast_status.toastIcon = null;\n } else if (window._uni_toast_status.toastIcon && iconUrl) {\n window._uni_toast_status.toastIcon.setAttribute('src', iconUrl);\n } else if (!window._uni_toast_status.toastIcon && iconUrl) {\n window._uni_toast_status.toastIcon = document.createElement('img');\n\n window._uni_toast_status.toastIcon.setAttribute('src', iconUrl);\n\n for (var _key in styles.icon) {\n window._uni_toast_status.toastIcon.style[_key] = styles.icon[_key];\n }\n\n window._uni_toast_status.toastWin.insertBefore(window._uni_toast_status.toastIcon, window._uni_toast_status.toastContent);\n }\n\n window._uni_toast_status.toastContent.textContent = message;\n window._uni_toast_status.toastWin.style.transform = 'translateX(-50%)';\n window._uni_toast_status.toastWin.style.webkitTransform = 'translateX(-50%)';\n}\n\nfunction hideToastWindow() {\n setTimeout(function () {\n if (window._uni_toast_status.toastWin && window._uni_toast_status.toastWin.style) {\n window._uni_toast_status.toastWin.style.transform = 'translateX(-50%) scale(0.8)';\n window._uni_toast_status.toastWin.style.webkitTransform = 'translateX(-50%) scale(0.8)';\n }\n }, 0);\n}\n\nvar innerToast = {\n hideTimer: null,\n show: function () {\n // All messages had been toasted already, so remove the toast window,\n if (!window._uni_toast_status.queue.length) {\n if (window._uni_toast_status.toastWin) {\n // eslint-disable-next-line\n window._uni_toast_status.toastWin.parentNode.removeChild(window._uni_toast_status.toastWin);\n }\n\n window._uni_toast_status.toastWin = null;\n return;\n } // the previous toast is not ended yet.\n\n\n if (window._uni_toast_status.isProcessing) return;\n window._uni_toast_status.isProcessing = true;\n\n var toastInfo = window._uni_toast_status.queue.shift();\n\n try {\n showToastWindow(toastInfo.content, toastInfo.icon);\n } catch (e) {\n toastInfo.fail && toastInfo.fail(e);\n toastInfo.complete && toastInfo.complete(e);\n }\n\n innerToast.hideTimer = setTimeout(function () {\n toastInfo.success && toastInfo.success();\n toastInfo.complete && toastInfo.complete();\n innerToast.switchToNext();\n }, toastInfo.duration);\n },\n push: function (options) {\n window._uni_toast_status.queue.push(options);\n\n innerToast.show();\n },\n // Switch to next message\n // This function will hide current, and call `show()` to display next\n // If queue is empty, DOM will be clear in `show()`\n switchToNext: function () {\n hideToastWindow();\n window._uni_toast_status.isProcessing = false;\n setTimeout(function () {\n return innerToast.show();\n }, 500);\n\n if (innerToast.hideTimer) {\n clearTimeout(innerToast.hideTimer);\n innerToast.hideTimer = null;\n }\n }\n};\nvar show = Object(_utils_index__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n window._uni_toast_inner_toast = innerToast;\n window._uni_toast_status = window._uni_toast_status || {\n queue: [],\n isProcessing: false,\n toastWin: '',\n toastContent: '',\n toastIcon: ''\n };\n var type = options.type,\n content = options.content,\n duration = options.duration,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n innerToast.push({\n content: content,\n duration: duration,\n icon: {\n success: 'https://gw.alicdn.com/imgextra/i1/O1CN01h684sE1Td4mwYyChK_!!6000000002404-2-tps-200-200.png',\n fail: 'https://gw.alicdn.com/imgextra/i1/O1CN01yOywus1et4ORJzafk_!!6000000003928-2-tps-200-200.png',\n none: ''\n }[type] || '',\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (show);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/wechat-miniprogram/hide.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/wechat-miniprogram/hide.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _hideToast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hideToast */ \"../dist/lib/@uni/toast/es/wechat-miniprogram/hideToast.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_hideToast__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/wechat-miniprogram/hideToast.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/wechat-miniprogram/hideToast.js ***!\n \\*****************************************************************/\n/*! exports provided: hide, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return hide; });\n/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index */ \"../dist/lib/@uni/toast/es/utils/index.js\");\n\nvar hide = Object(_utils_index__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n wx.hideToast(options);\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (hide);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/wechat-miniprogram/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/wechat-miniprogram/index.js ***!\n \\*************************************************************/\n/*! exports provided: show, hide, showToast, hideToast, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _show__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./show */ \"../dist/lib/@uni/toast/es/wechat-miniprogram/show.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"show\", function() { return _show__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _hide__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hide */ \"../dist/lib/@uni/toast/es/wechat-miniprogram/hide.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hide\", function() { return _hide__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _showToast__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./showToast */ \"../dist/lib/@uni/toast/es/wechat-miniprogram/showToast.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"showToast\", function() { return _showToast__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _hideToast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./hideToast */ \"../dist/lib/@uni/toast/es/wechat-miniprogram/hideToast.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"hideToast\", function() { return _hideToast__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n show: _show__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n hide: _hide__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n showToast: _showToast__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n hideToast: _hideToast__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/wechat-miniprogram/show.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/wechat-miniprogram/show.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _showToast__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./showToast */ \"../dist/lib/@uni/toast/es/wechat-miniprogram/showToast.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_showToast__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/toast/es/wechat-miniprogram/showToast.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/toast/es/wechat-miniprogram/showToast.js ***!\n \\*****************************************************************/\n/*! exports provided: show, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"show\", function() { return show; });\n/* harmony import */ var _utils_index__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../utils/index */ \"../dist/lib/@uni/toast/es/utils/index.js\");\n\nvar show = Object(_utils_index__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"])(function (options) {\n var type = options.type,\n content = options.content,\n duration = options.duration,\n _success = options.success,\n _fail = options.fail,\n _complete = options.complete;\n wx.showToast({\n icon: {\n success: 'success',\n fail: 'error',\n none: 'none',\n loading: 'loading'\n }[type] || '',\n title: content,\n duration: duration,\n success: function () {\n _success && _success();\n },\n fail: function (res) {\n _fail && _fail(res);\n },\n complete: function (res) {\n _complete && _complete(res);\n }\n });\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (show);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/_utils/constant.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/_utils/constant.js ***!\n \\******************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/_utils/miniappEnvApp.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/_utils/miniappEnvApp.js ***!\n \\***********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/_utils/promisify.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/_utils/promisify.js ***!\n \\*******************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/_utils/styleOptions.js\":\n/*!**********************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/_utils/styleOptions.js ***!\n \\**********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/ali-miniapp/index.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/ali-miniapp/index.js ***!\n \\********************************************************/\n/*! exports provided: vibrateShort, vibrateLong, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _vibrateShort__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vibrateShort */ \"../dist/lib/@uni/vibrate/es/ali-miniapp/vibrateShort.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vibrateShort\", function() { return _vibrateShort__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _vibrateLong__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vibrateLong */ \"../dist/lib/@uni/vibrate/es/ali-miniapp/vibrateLong.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vibrateLong\", function() { return _vibrateLong__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n vibrateShort: _vibrateShort__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n vibrateLong: _vibrateLong__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/ali-miniapp/vibrateLong.js\":\n/*!**************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/ali-miniapp/vibrateLong.js ***!\n \\**************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/vibrate/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/vibrate/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/vibrate/es/common.js\");\n\n\n\nvar vibrateLong = Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"])(function (_ref) {\n var success = _ref.success,\n fail = _ref.fail,\n complete = _ref.complete;\n\n var _vibrateLong = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.vibrateLong : my.vibrateLong;\n\n _vibrateLong(function () {\n success && success();\n complete && complete();\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (vibrateLong);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/ali-miniapp/vibrateShort.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/ali-miniapp/vibrateShort.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/vibrate/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/vibrate/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/vibrate/es/common.js\");\n\n\n\nvar vibrateShort = Object(_common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"])(function (_ref) {\n var success = _ref.success,\n fail = _ref.fail,\n complete = _ref.complete;\n\n var _vibrateShort = _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.vibrateShort : my.vibrateShort;\n\n _vibrateShort(function () {\n success && success();\n complete && complete();\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (vibrateShort);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/baidu-smartprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/baidu-smartprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: vibrateShort, vibrateLong, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _vibrateShort__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vibrateShort */ \"../dist/lib/@uni/vibrate/es/baidu-smartprogram/vibrateShort.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vibrateShort\", function() { return _vibrateShort__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _vibrateLong__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vibrateLong */ \"../dist/lib/@uni/vibrate/es/baidu-smartprogram/vibrateLong.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vibrateLong\", function() { return _vibrateLong__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n vibrateShort: _vibrateShort__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n vibrateLong: _vibrateLong__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/baidu-smartprogram/vibrateLong.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/baidu-smartprogram/vibrateLong.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/vibrate/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/vibrate/es/common.js\");\n\n\nvar vibrateLong = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"])(function (_ref) {\n var success = _ref.success,\n fail = _ref.fail,\n complete = _ref.complete;\n swan.vibrateLong({\n success: success,\n fail: fail,\n complete: complete\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (vibrateLong);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/baidu-smartprogram/vibrateShort.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/baidu-smartprogram/vibrateShort.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/vibrate/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/vibrate/es/common.js\");\n\n\nvar vibrateShort = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"])(function (_ref) {\n var success = _ref.success,\n fail = _ref.fail,\n complete = _ref.complete;\n swan.vibrateShort({\n success: success,\n fail: fail,\n complete: complete\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (vibrateShort);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/bytedance-microapp/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/bytedance-microapp/index.js ***!\n \\***************************************************************/\n/*! exports provided: vibrateShort, vibrateLong, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _vibrateShort__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vibrateShort */ \"../dist/lib/@uni/vibrate/es/bytedance-microapp/vibrateShort.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vibrateShort\", function() { return _vibrateShort__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _vibrateLong__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vibrateLong */ \"../dist/lib/@uni/vibrate/es/bytedance-microapp/vibrateLong.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vibrateLong\", function() { return _vibrateLong__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n vibrateShort: _vibrateShort__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n vibrateLong: _vibrateLong__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/bytedance-microapp/vibrateLong.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/bytedance-microapp/vibrateLong.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/vibrate/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/vibrate/es/common.js\");\n\n\nvar vibrateLong = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"])(function (_ref) {\n var success = _ref.success,\n fail = _ref.fail,\n complete = _ref.complete;\n tt.vibrateLong({\n success: success,\n fail: fail,\n complete: complete\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (vibrateLong);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/bytedance-microapp/vibrateShort.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/bytedance-microapp/vibrateShort.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/vibrate/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/vibrate/es/common.js\");\n\n\nvar vibrateShort = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"])(function (_ref) {\n var success = _ref.success,\n fail = _ref.fail,\n complete = _ref.complete;\n tt.vibrateShort({\n success: success,\n fail: fail,\n complete: complete\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (vibrateShort);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/common.js\":\n/*!*********************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/common.js ***!\n \\*********************************************/\n/*! exports provided: normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/vibrate/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/vibrate/es/_utils/styleOptions.js\");\n/* eslint-disable eqeqeq */\n\n\nfunction normalize(api, containerName) {\n return function (args) {\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName));\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/index.js\":\n/*!********************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/index.js ***!\n \\********************************************/\n/*! exports provided: vibrateLong, vibrateShort, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vibrateLong\", function() { return vibrateLong; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"vibrateShort\", function() { return vibrateShort; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/vibrate/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/vibrate/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/vibrate/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/vibrate/es/bytedance-microapp/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/vibrate/es/kuaishou-miniprogram/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/vibrate/es/baidu-smartprogram/index.js\");\n\n\n\n\n\n\n // web 暂不支持这个功能\n\nvar vibrateLong = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].vibrateLong(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].vibrateLong();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].vibrateLong(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].vibrateLong(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].vibrateLong(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].vibrateLong(args);\n } else {\n throw new Error('Uni API:vibrateLong暂不支持');\n }\n};\nvar vibrateShort = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].vibrateShort(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].vibrateShort();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].vibrateShort(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].vibrateShort(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].vibrateShort(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].vibrateShort(args);\n } else {\n throw new Error('Uni API:vibrateShort暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n vibrateLong: vibrateLong,\n vibrateShort: vibrateShort\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/kuaishou-miniprogram/index.js\":\n/*!*****************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/kuaishou-miniprogram/index.js ***!\n \\*****************************************************************/\n/*! exports provided: vibrateShort, vibrateLong, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _vibrateShort__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vibrateShort */ \"../dist/lib/@uni/vibrate/es/kuaishou-miniprogram/vibrateShort.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vibrateShort\", function() { return _vibrateShort__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _vibrateLong__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vibrateLong */ \"../dist/lib/@uni/vibrate/es/kuaishou-miniprogram/vibrateLong.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vibrateLong\", function() { return _vibrateLong__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n vibrateShort: _vibrateShort__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n vibrateLong: _vibrateLong__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/kuaishou-miniprogram/vibrateLong.js\":\n/*!***********************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/kuaishou-miniprogram/vibrateLong.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar vibrateLong = function () {\n throw Error('@uni:vibrateLong 快手小程序暂不支持');\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vibrateLong);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/kuaishou-miniprogram/vibrateShort.js\":\n/*!************************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/kuaishou-miniprogram/vibrateShort.js ***!\n \\************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar vibrateShort = function () {\n throw Error('@uni:vibrateShort 快手小程序暂不支持');\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (vibrateShort);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/web/index.js\":\n/*!************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/web/index.js ***!\n \\************************************************/\n/*! exports provided: vibrateShort, vibrateLong, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _vibrateShort__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vibrateShort */ \"../dist/lib/@uni/vibrate/es/web/vibrateShort.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vibrateShort\", function() { return _vibrateShort__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _vibrateLong__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vibrateLong */ \"../dist/lib/@uni/vibrate/es/web/vibrateLong.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vibrateLong\", function() { return _vibrateLong__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n vibrateShort: _vibrateShort__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n vibrateLong: _vibrateLong__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/web/vibrateLong.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/web/vibrateLong.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/vibrate/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/vibrate/es/common.js\");\n\n\nvar vibrateLong = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"])(function (_ref) {\n var success = _ref.success,\n fail = _ref.fail,\n complete = _ref.complete;\n var res = window.navigator.vibrate(400);\n\n if (res) {\n success && success();\n complete && complete();\n } else {\n fail && fail();\n complete && complete();\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (vibrateLong);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/web/vibrateShort.js\":\n/*!*******************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/web/vibrateShort.js ***!\n \\*******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/vibrate/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/vibrate/es/common.js\");\n\n\nvar vibrateShort = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"])(function (_ref) {\n var success = _ref.success,\n fail = _ref.fail,\n complete = _ref.complete;\n var res = window.navigator.vibrate(15);\n\n if (res) {\n success && success();\n complete && complete();\n } else {\n fail && fail();\n complete && complete();\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (vibrateShort);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/wechat-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/wechat-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: vibrateShort, vibrateLong, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _vibrateShort__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./vibrateShort */ \"../dist/lib/@uni/vibrate/es/wechat-miniprogram/vibrateShort.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vibrateShort\", function() { return _vibrateShort__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _vibrateLong__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./vibrateLong */ \"../dist/lib/@uni/vibrate/es/wechat-miniprogram/vibrateLong.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"vibrateLong\", function() { return _vibrateLong__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n vibrateShort: _vibrateShort__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n vibrateLong: _vibrateLong__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/wechat-miniprogram/vibrateLong.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/wechat-miniprogram/vibrateLong.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/vibrate/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/vibrate/es/common.js\");\n\n\nvar vibrateLong = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"])(function (_ref) {\n var type = _ref.type,\n success = _ref.success,\n fail = _ref.fail,\n complete = _ref.complete;\n wx.vibrateLong({\n type: type,\n success: success,\n fail: fail,\n complete: complete\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (vibrateLong);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/vibrate/es/wechat-miniprogram/vibrateShort.js\":\n/*!**********************************************************************!*\\\n !*** ../dist/lib/@uni/vibrate/es/wechat-miniprogram/vibrateShort.js ***!\n \\**********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/vibrate/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/vibrate/es/common.js\");\n\n\nvar vibrateShort = Object(_common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"])(function (_ref) {\n var type = _ref.type,\n success = _ref.success,\n fail = _ref.fail,\n complete = _ref.complete;\n wx.vibrateShort({\n type: type,\n success: success,\n fail: fail,\n complete: complete\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (vibrateShort);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/_utils/constant.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/video/es/_utils/constant.js ***!\n \\****************************************************/\n/*! exports provided: CONTAINER_NAME */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CONTAINER_NAME\", function() { return CONTAINER_NAME; });\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/_utils/miniappEnvApp.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/video/es/_utils/miniappEnvApp.js ***!\n \\*********************************************************/\n/*! exports provided: isDingdingMiniapp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isDingdingMiniapp\", function() { return isDingdingMiniapp; });\nfunction isUndef(type) {\n return type === 'undefined';\n}\n\nvar isDingdingMiniapp = !isUndef(typeof dd) && dd !== null && !isUndef(typeof dd.alert);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/_utils/promisify.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/video/es/_utils/promisify.js ***!\n \\*****************************************************/\n/*! exports provided: promisify */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"promisify\", function() { return promisify; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/_utils/styleOptions.js\":\n/*!********************************************************!*\\\n !*** ../dist/lib/@uni/video/es/_utils/styleOptions.js ***!\n \\********************************************************/\n/*! exports provided: styleOut, styleIn */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleOut\", function() { return styleOut; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styleIn\", function() { return styleIn; });\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/ali-miniapp/chooseMedia.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/ali-miniapp/chooseMedia.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/es/common.js\");\n/* harmony import */ var _uni_action_sheet_lib_ali_miniapp_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/action-sheet/lib/ali-miniapp/index.js */ \"../dist/lib/@uni/action-sheet/lib/ali-miniapp/index.js\");\n/* harmony import */ var _uni_action_sheet_lib_ali_miniapp_index_js__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_uni_action_sheet_lib_ali_miniapp_index_js__WEBPACK_IMPORTED_MODULE_2__);\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nvar chooseMedia = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].chooseMedia(function (args) {\n var mediaType = args.mediaType;\n\n var imageFn = function () {\n return my.chooseImage(_extends({}, args, {\n success: function (res) {\n var result = {\n type: 'image',\n tempFiles: res.tempFiles.map(function (i) {\n return _extends({}, i, {\n tempFilePath: i.path\n });\n })\n };\n args.success(result);\n }\n }));\n };\n\n var videoFn = function () {\n return my.chooseVideo(_extends({}, args, {\n success: function (res) {\n args.success({\n type: 'video',\n tempFiles: [res]\n });\n }\n }));\n };\n\n if (mediaType.length === 1 && mediaType[0] === 'image') {\n imageFn();\n } else if (mediaType.length === 1 && mediaType[0] === 'video') {\n videoFn();\n } else {\n _uni_action_sheet_lib_ali_miniapp_index_js__WEBPACK_IMPORTED_MODULE_2___default()({\n itemList: ['图片', '视频']\n }).then(function (res) {\n if (res.tapIndex === 0) {\n imageFn();\n } else if (res.tapIndex === 1) {\n videoFn();\n } else {\n return Promise.reject({\n errMsg: '用户取消选择'\n });\n }\n });\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseMedia);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/ali-miniapp/chooseVideo.js\":\n/*!************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/ali-miniapp/chooseVideo.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/video/es/_utils/miniappEnvApp.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/es/common.js\");\n\n\n\nvar chooseVideo = _common__WEBPACK_IMPORTED_MODULE_2__[\"normalize\"].chooseVideo(function (args) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.chooseVideo(args) : my.chooseVideo(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].ALIPAY);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseVideo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/ali-miniapp/createVideoContext.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/ali-miniapp/createVideoContext.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/miniappEnvApp */ \"../dist/lib/@uni/video/es/_utils/miniappEnvApp.js\");\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (id) {\n return _utils_miniappEnvApp__WEBPACK_IMPORTED_MODULE_0__[\"isDingdingMiniapp\"] ? dd.createVideoContext(id) : my.createVideoContext(id);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/ali-miniapp/index.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/video/es/ali-miniapp/index.js ***!\n \\******************************************************/\n/*! exports provided: chooseVideo, createVideoContext, chooseMedia, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _chooseVideo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chooseVideo */ \"../dist/lib/@uni/video/es/ali-miniapp/chooseVideo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseVideo\", function() { return _chooseVideo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _createVideoContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createVideoContext */ \"../dist/lib/@uni/video/es/ali-miniapp/createVideoContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createVideoContext\", function() { return _createVideoContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _chooseMedia__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseMedia */ \"../dist/lib/@uni/video/es/ali-miniapp/chooseMedia.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseMedia\", function() { return _chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseVideo: _chooseVideo__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n createVideoContext: _createVideoContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n chooseMedia: _chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/baidu-smartprogram/chooseMedia.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/baidu-smartprogram/chooseMedia.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/es/_utils/constant.js\");\n\n\nvar chooseMedia = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].chooseMedia(function (args) {\n return swan.canIUse('chooseMedia') ? swan.chooseMedia(args) : swan.chooseImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseMedia);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/baidu-smartprogram/chooseVideo.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/baidu-smartprogram/chooseVideo.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/es/_utils/constant.js\");\n\n\nvar chooseVideo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].chooseVideo(function (args) {\n return swan.chooseVideo(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BAIDU);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseVideo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/baidu-smartprogram/createVideoContext.js\":\n/*!**************************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/baidu-smartprogram/createVideoContext.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (id) {\n return swan.createVideoContext(id);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/baidu-smartprogram/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/baidu-smartprogram/index.js ***!\n \\*************************************************************/\n/*! exports provided: chooseVideo, createVideoContext, chooseMedia, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _chooseVideo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chooseVideo */ \"../dist/lib/@uni/video/es/baidu-smartprogram/chooseVideo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseVideo\", function() { return _chooseVideo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _createVideoContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createVideoContext */ \"../dist/lib/@uni/video/es/baidu-smartprogram/createVideoContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createVideoContext\", function() { return _createVideoContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _chooseMedia__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseMedia */ \"../dist/lib/@uni/video/es/baidu-smartprogram/chooseMedia.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseMedia\", function() { return _chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseVideo: _chooseVideo__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n createVideoContext: _createVideoContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n chooseMedia: _chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/bytedance-microapp/chooseMedia.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/bytedance-microapp/chooseMedia.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/es/_utils/constant.js\");\n\n\nvar chooseMedia = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].chooseMedia(function (args) {\n return tt.chooseImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseMedia);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/bytedance-microapp/chooseVideo.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/bytedance-microapp/chooseVideo.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/es/_utils/constant.js\");\n\n\nvar chooseVideo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].chooseVideo(function (args) {\n return tt.chooseVideo(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].BYTE);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseVideo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/bytedance-microapp/createVideoContext.js\":\n/*!**************************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/bytedance-microapp/createVideoContext.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (id, context) {\n return context ? tt.createVideoContext(id, context) : tt.createVideoContext(id);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/bytedance-microapp/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/bytedance-microapp/index.js ***!\n \\*************************************************************/\n/*! exports provided: chooseVideo, createVideoContext, chooseMedia, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _chooseVideo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chooseVideo */ \"../dist/lib/@uni/video/es/bytedance-microapp/chooseVideo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseVideo\", function() { return _chooseVideo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _createVideoContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createVideoContext */ \"../dist/lib/@uni/video/es/bytedance-microapp/createVideoContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createVideoContext\", function() { return _createVideoContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _chooseMedia__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseMedia */ \"../dist/lib/@uni/video/es/bytedance-microapp/chooseMedia.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseMedia\", function() { return _chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseVideo: _chooseVideo__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n createVideoContext: _createVideoContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n chooseMedia: _chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/common.js\":\n/*!*******************************************!*\\\n !*** ../dist/lib/@uni/video/es/common.js ***!\n \\*******************************************/\n/*! exports provided: normalize */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"normalize\", function() { return normalize; });\n/* harmony import */ var _utils_promisify__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/video/es/_utils/promisify.js\");\n/* harmony import */ var _utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/video/es/_utils/styleOptions.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\nvar normalize = {\n chooseVideo: function (api, containerName) {\n var formatResponse = function (res) {\n return _extends({}, res, {\n tempFilePath: res.tempFilePath || res.filePath\n });\n };\n\n return function (args) {\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(args, containerName);\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(_extends({}, args, {\n success: function (res) {\n args.success && args.success(formatResponse(res));\n },\n complete: function (res) {\n args.complete && args.complete(res);\n }\n })).then(formatResponse);\n };\n },\n chooseMedia: function (api, containerName) {\n var formatResponse = function (res) {\n return _extends({}, res, {\n tempFiles: (res.tempFiles || res.files).map(function (item) {\n return _extends({}, item, {\n tempFilePath: item.tempFilePath || item.path\n });\n })\n });\n };\n\n return function (args) {\n if (args === void 0) {\n args = {};\n }\n\n args = Object(_utils_styleOptions__WEBPACK_IMPORTED_MODULE_1__[\"styleIn\"])(_extends({\n count: 9,\n sizeType: ['original', 'compressed'],\n sourceType: ['camera', 'album'],\n mediaType: ['image', 'video'],\n maxDuration: 60\n }, args), containerName);\n return Object(_utils_promisify__WEBPACK_IMPORTED_MODULE_0__[\"promisify\"])(api)(_extends({}, args, {\n success: function (res) {\n args.success && args.success(formatResponse(res));\n },\n fail: function (res) {\n args.fail && args.fail(res);\n },\n complete: function (res) {\n args.complete && args.complete(res);\n }\n })).then(formatResponse);\n };\n }\n};\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/index.js\":\n/*!******************************************!*\\\n !*** ../dist/lib/@uni/video/es/index.js ***!\n \\******************************************/\n/*! exports provided: chooseVideo, createVideoContext, chooseMedia, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"chooseVideo\", function() { return chooseVideo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createVideoContext\", function() { return createVideoContext; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"chooseMedia\", function() { return chooseMedia; });\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ali-miniapp/index */ \"../dist/lib/@uni/video/es/ali-miniapp/index.js\");\n/* harmony import */ var _web_index__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./web/index */ \"../dist/lib/@uni/video/es/web/index.js\");\n/* harmony import */ var _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./wechat-miniprogram/index */ \"../dist/lib/@uni/video/es/wechat-miniprogram/index.js\");\n/* harmony import */ var _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./bytedance-microapp/index */ \"../dist/lib/@uni/video/es/bytedance-microapp/index.js\");\n/* harmony import */ var _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./baidu-smartprogram/index */ \"../dist/lib/@uni/video/es/baidu-smartprogram/index.js\");\n/* harmony import */ var _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./kuaishou-miniprogram/index */ \"../dist/lib/@uni/video/es/kuaishou-miniprogram/index.js\");\n\n\n\n\n\n\n\nvar chooseVideo = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].chooseVideo(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].chooseVideo(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chooseVideo(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].chooseVideo(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].chooseVideo(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].chooseVideo(args);\n } else {\n throw new Error('@uni/apis:chooseVideo暂不支持');\n }\n};\nvar createVideoContext = function (id, context) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].createVideoContext();\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].createVideoContext(id, context);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createVideoContext(id, context);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].createVideoContext(id, context);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].createVideoContext(id);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].createVideoContext(id);\n } else {\n throw new Error('@uni/apis:createVideoContext暂不支持');\n }\n};\nvar chooseMedia = function (args) {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeb\"]) {\n return _web_index__WEBPACK_IMPORTED_MODULE_2__[\"default\"].chooseMedia(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isKuaiShouMiniProgram\"]) {\n return _kuaishou_miniprogram_index__WEBPACK_IMPORTED_MODULE_6__[\"default\"].chooseMedia(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isWeChatMiniProgram\"]) {\n return _wechat_miniprogram_index__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chooseMedia(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isByteDanceMicroApp\"]) {\n return _bytedance_microapp_index__WEBPACK_IMPORTED_MODULE_4__[\"default\"].chooseMedia(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isMiniApp\"]) {\n return _ali_miniapp_index__WEBPACK_IMPORTED_MODULE_1__[\"default\"].chooseMedia(args);\n } else if (_uni_env__WEBPACK_IMPORTED_MODULE_0__[\"isBaiduSmartProgram\"]) {\n return _baidu_smartprogram_index__WEBPACK_IMPORTED_MODULE_5__[\"default\"].chooseMedia(args);\n } else {\n throw new Error('@uni/apis:chooseMedia暂不支持');\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseMedia: chooseMedia,\n chooseVideo: chooseVideo,\n createVideoContext: createVideoContext\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/kuaishou-miniprogram/chooseMedia.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/kuaishou-miniprogram/chooseMedia.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/es/_utils/constant.js\");\n\n\nvar chooseMedia = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].chooseMedia(function (args) {\n return ks.canIUse('chooseMedia') ? ks.chooseMedia(args) : ks.chooseImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseMedia);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/kuaishou-miniprogram/chooseVideo.js\":\n/*!*********************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/kuaishou-miniprogram/chooseVideo.js ***!\n \\*********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/es/_utils/constant.js\");\n\n\nvar chooseVideo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].chooseVideo(function (args) {\n return ks.chooseVideo(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].KWAI);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseVideo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/kuaishou-miniprogram/createVideoContext.js\":\n/*!****************************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/kuaishou-miniprogram/createVideoContext.js ***!\n \\****************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (id, context) {\n return context ? ks.createVideoContext(id, context) : ks.createVideoContext(id);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/kuaishou-miniprogram/index.js\":\n/*!***************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/kuaishou-miniprogram/index.js ***!\n \\***************************************************************/\n/*! exports provided: chooseVideo, createVideoContext, chooseMedia, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _chooseVideo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chooseVideo */ \"../dist/lib/@uni/video/es/kuaishou-miniprogram/chooseVideo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseVideo\", function() { return _chooseVideo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _createVideoContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createVideoContext */ \"../dist/lib/@uni/video/es/kuaishou-miniprogram/createVideoContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createVideoContext\", function() { return _createVideoContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _chooseMedia__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseMedia */ \"../dist/lib/@uni/video/es/kuaishou-miniprogram/chooseMedia.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseMedia\", function() { return _chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseVideo: _chooseVideo__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n createVideoContext: _createVideoContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n chooseMedia: _chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/web/chooseMedia.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/video/es/web/chooseMedia.js ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/es/common.js\");\n\n\n\nfunction inputCreateAndAppend(multiple, accept) {\n var inputElement = document.createElement('INPUT');\n inputElement.name = 'file';\n inputElement.id = \"input-\" + Math.random() * 1e8;\n inputElement.type = 'file';\n multiple && inputElement.setAttribute('multiple', 'multiple');\n inputElement.style.display = 'none';\n accept && inputElement.setAttribute('accept', accept);\n document.body.appendChild(inputElement);\n return inputElement;\n}\n\nvar chooseMedia = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].chooseMedia(function (args) {\n if (args === void 0) {\n args = {};\n }\n\n var _args = args,\n _args$count = _args.count,\n count = _args$count === void 0 ? 9 : _args$count,\n _args$success = _args.success,\n success = _args$success === void 0 ? function () {} : _args$success,\n _args$fail = _args.fail,\n fail = _args$fail === void 0 ? function () {} : _args$fail,\n _args$complete = _args.complete,\n complete = _args$complete === void 0 ? function () {} : _args$complete;\n\n try {\n var inputElement = inputCreateAndAppend(count > 1, args.accept);\n var files = [];\n inputElement.addEventListener('change', function (e) {\n files = e.target.files && Array.from(e.target.files).slice(0, count);\n var res = {\n tempFiles: files.map(function (file) {\n return {\n tempFilePath: window.URL.createObjectURL(file),\n size: file.size\n };\n }),\n files: files\n };\n success(res);\n complete(res);\n inputElement.remove && inputElement.remove();\n }, false);\n var MouseEvents = document.createEvent('MouseEvents');\n MouseEvents.initEvent('click', true, true);\n inputElement.dispatchEvent(MouseEvents);\n } catch (e) {\n fail(e);\n complete(e);\n }\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseMedia);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/web/chooseVideo.js\":\n/*!****************************************************!*\\\n !*** ../dist/lib/@uni/video/es/web/chooseVideo.js ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/es/_utils/constant.js\");\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/es/common.js\");\n/* harmony import */ var _chooseMedia__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseMedia */ \"../dist/lib/@uni/video/es/web/chooseMedia.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\nvar chooseVideo = _common__WEBPACK_IMPORTED_MODULE_1__[\"normalize\"].chooseVideo(function (args) {\n if (args === void 0) {\n args = {};\n }\n\n var _args = args,\n _args$success = _args.success,\n success = _args$success === void 0 ? function () {} : _args$success,\n _args$fail = _args.fail,\n fail = _args$fail === void 0 ? function () {} : _args$fail,\n _args$complete = _args.complete,\n complete = _args$complete === void 0 ? function () {} : _args$complete;\n Object(_chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n count: 1,\n accept: 'video/*'\n }).then(function (res) {\n var result = _extends({}, res.tempFiles[0], {\n files: res.files\n });\n\n success(result);\n complete(result);\n }).catch(function (e) {\n fail(e);\n complete(e);\n });\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_0__[\"CONTAINER_NAME\"].WEB);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseVideo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/web/createVideoContext.js\":\n/*!***********************************************************!*\\\n !*** ../dist/lib/@uni/video/es/web/createVideoContext.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar createVideoContext = function () {\n throw new Error('@uni/apis: createVideoContext不支持');\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (createVideoContext);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/web/index.js\":\n/*!**********************************************!*\\\n !*** ../dist/lib/@uni/video/es/web/index.js ***!\n \\**********************************************/\n/*! exports provided: chooseVideo, createVideoContext, chooseMedia, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _chooseVideo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chooseVideo */ \"../dist/lib/@uni/video/es/web/chooseVideo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseVideo\", function() { return _chooseVideo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _createVideoContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createVideoContext */ \"../dist/lib/@uni/video/es/web/createVideoContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createVideoContext\", function() { return _createVideoContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _chooseMedia__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseMedia */ \"../dist/lib/@uni/video/es/web/chooseMedia.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseMedia\", function() { return _chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseVideo: _chooseVideo__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n createVideoContext: _createVideoContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n chooseMedia: _chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/wechat-miniprogram/chooseMedia.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/wechat-miniprogram/chooseMedia.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/es/_utils/constant.js\");\n\n\nvar chooseMedia = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].chooseMedia(function (args) {\n return wx.canIUse('chooseMedia') ? wx.chooseMedia(args) : wx.chooseImage(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseMedia);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/wechat-miniprogram/chooseVideo.js\":\n/*!*******************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/wechat-miniprogram/chooseVideo.js ***!\n \\*******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/es/common.js\");\n/* harmony import */ var _utils_constant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/es/_utils/constant.js\");\n\n\nvar chooseVideo = _common__WEBPACK_IMPORTED_MODULE_0__[\"normalize\"].chooseVideo(function (args) {\n return wx.chooseVideo(args);\n}, _utils_constant__WEBPACK_IMPORTED_MODULE_1__[\"CONTAINER_NAME\"].WECHAT);\n/* harmony default export */ __webpack_exports__[\"default\"] = (chooseVideo);\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/wechat-miniprogram/createVideoContext.js\":\n/*!**************************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/wechat-miniprogram/createVideoContext.js ***!\n \\**************************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (id, context) {\n return context ? wx.createVideoContext(id, context) : wx.createVideoContext(id);\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/es/wechat-miniprogram/index.js\":\n/*!*************************************************************!*\\\n !*** ../dist/lib/@uni/video/es/wechat-miniprogram/index.js ***!\n \\*************************************************************/\n/*! exports provided: chooseVideo, createVideoContext, chooseMedia, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _chooseVideo__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./chooseVideo */ \"../dist/lib/@uni/video/es/wechat-miniprogram/chooseVideo.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseVideo\", function() { return _chooseVideo__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _createVideoContext__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./createVideoContext */ \"../dist/lib/@uni/video/es/wechat-miniprogram/createVideoContext.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createVideoContext\", function() { return _createVideoContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _chooseMedia__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./chooseMedia */ \"../dist/lib/@uni/video/es/wechat-miniprogram/chooseMedia.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"chooseMedia\", function() { return _chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n chooseVideo: _chooseVideo__WEBPACK_IMPORTED_MODULE_0__[\"default\"],\n createVideoContext: _createVideoContext__WEBPACK_IMPORTED_MODULE_1__[\"default\"],\n chooseMedia: _chooseMedia__WEBPACK_IMPORTED_MODULE_2__[\"default\"]\n});\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/lib/_utils/constant.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/video/lib/_utils/constant.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.CONTAINER_NAME = void 0;\nvar CONTAINER_NAME = {\n WECHAT: 'wechatMiniProgram',\n ALIPAY: 'aliMiniApp',\n BYTE: 'bytedanceMicroApp',\n WEB: 'web',\n BAIDU: 'baiduSmartProgram',\n KWAI: 'kuaishouMiniProgram'\n};\nexports.CONTAINER_NAME = CONTAINER_NAME;\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/lib/_utils/promisify.js\":\n/*!******************************************************!*\\\n !*** ../dist/lib/@uni/video/lib/_utils/promisify.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.promisify = promisify;\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction promisify(api) {\n return function (arg) {\n return new Promise(function (resolve, reject) {\n var promisifyArg = arg;\n api(_extends({}, promisifyArg, {\n success: function (res) {\n if (promisifyArg && typeof promisifyArg.success === 'function') {\n promisifyArg.success(res);\n }\n\n resolve(res);\n },\n onSuccess: function (res) {\n if (promisifyArg && typeof promisifyArg.onSuccess === 'function') {\n promisifyArg.onSuccess(res);\n }\n\n resolve(res);\n },\n fail: function (res) {\n if (promisifyArg && typeof promisifyArg.fail === 'function') {\n promisifyArg.fail(res);\n }\n\n reject(res);\n },\n onFail: function (res) {\n if (promisifyArg && typeof promisifyArg.onFail === 'function') {\n promisifyArg.onFail(res);\n }\n\n reject(res);\n },\n complete: function (res) {\n if (promisifyArg && typeof promisifyArg.complete === 'function') {\n promisifyArg.complete(res);\n }\n },\n onComplete: function (res) {\n if (promisifyArg && typeof promisifyArg.onComplete === 'function') {\n promisifyArg.onComplete(res);\n }\n }\n }));\n });\n };\n}\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/lib/_utils/styleOptions.js\":\n/*!*********************************************************!*\\\n !*** ../dist/lib/@uni/video/lib/_utils/styleOptions.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.styleIn = exports.styleOut = void 0;\nvar _excluded = [\"_ext\"];\n\nfunction _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\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar styleOut = function (output, originalInput, originalOutput) {\n return _extends({}, output, {\n _original: {\n input: _extends({}, originalInput),\n // 实际调用 api 方法时传入的参数. 对入参进行 format 之后的结果\n output: _extends({}, originalOutput) // 实际调用 api 方法时传入的参数. 返回值 format 之前的结果\n\n }\n });\n};\n\nexports.styleOut = styleOut;\n\nvar styleIn = function (options, baseName) {\n var _ref = options || {},\n _ref$_ext = _ref._ext,\n _ext = _ref$_ext === void 0 ? {} : _ref$_ext,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n return _extends({}, rest, _ext[baseName] || {});\n};\n\nexports.styleIn = styleIn;\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/lib/common.js\":\n/*!********************************************!*\\\n !*** ../dist/lib/@uni/video/lib/common.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.normalize = void 0;\n\nvar _promisify = __webpack_require__(/*! ./_utils/promisify */ \"../dist/lib/@uni/video/lib/_utils/promisify.js\");\n\nvar _styleOptions = __webpack_require__(/*! ./_utils/styleOptions */ \"../dist/lib/@uni/video/lib/_utils/styleOptions.js\");\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar normalize = {\n chooseVideo: function (api, containerName) {\n var formatResponse = function (res) {\n return _extends({}, res, {\n tempFilePath: res.tempFilePath || res.filePath\n });\n };\n\n return function (args) {\n args = (0, _styleOptions.styleIn)(args, containerName);\n return (0, _promisify.promisify)(api)(_extends({}, args, {\n success: function (res) {\n args.success && args.success(formatResponse(res));\n },\n complete: function (res) {\n args.complete && args.complete(res);\n }\n })).then(formatResponse);\n };\n },\n chooseMedia: function (api, containerName) {\n var formatResponse = function (res) {\n return _extends({}, res, {\n tempFiles: (res.tempFiles || res.files).map(function (item) {\n return _extends({}, item, {\n tempFilePath: item.tempFilePath || item.path\n });\n })\n });\n };\n\n return function (args) {\n if (args === void 0) {\n args = {};\n }\n\n args = (0, _styleOptions.styleIn)(_extends({\n count: 9,\n sizeType: ['original', 'compressed'],\n sourceType: ['camera', 'album'],\n mediaType: ['image', 'video'],\n maxDuration: 60\n }, args), containerName);\n return (0, _promisify.promisify)(api)(_extends({}, args, {\n success: function (res) {\n args.success && args.success(formatResponse(res));\n },\n fail: function (res) {\n args.fail && args.fail(res);\n },\n complete: function (res) {\n args.complete && args.complete(res);\n }\n })).then(formatResponse);\n };\n }\n};\nexports.normalize = normalize;\n\n/***/ }),\n\n/***/ \"../dist/lib/@uni/video/lib/web/chooseMedia.js\":\n/*!*****************************************************!*\\\n !*** ../dist/lib/@uni/video/lib/web/chooseMedia.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _constant = __webpack_require__(/*! ../_utils/constant */ \"../dist/lib/@uni/video/lib/_utils/constant.js\");\n\nvar _common = __webpack_require__(/*! ../common */ \"../dist/lib/@uni/video/lib/common.js\");\n\nfunction inputCreateAndAppend(multiple, accept) {\n var inputElement = document.createElement('INPUT');\n inputElement.name = 'file';\n inputElement.id = \"input-\" + Math.random() * 1e8;\n inputElement.type = 'file';\n multiple && inputElement.setAttribute('multiple', 'multiple');\n inputElement.style.display = 'none';\n accept && inputElement.setAttribute('accept', accept);\n document.body.appendChild(inputElement);\n return inputElement;\n}\n\nvar chooseMedia = _common.normalize.chooseMedia(function (args) {\n if (args === void 0) {\n args = {};\n }\n\n var _args = args,\n _args$count = _args.count,\n count = _args$count === void 0 ? 9 : _args$count,\n _args$success = _args.success,\n success = _args$success === void 0 ? function () {} : _args$success,\n _args$fail = _args.fail,\n fail = _args$fail === void 0 ? function () {} : _args$fail,\n _args$complete = _args.complete,\n complete = _args$complete === void 0 ? function () {} : _args$complete;\n\n try {\n var inputElement = inputCreateAndAppend(count > 1, args.accept);\n var files = [];\n inputElement.addEventListener('change', function (e) {\n files = e.target.files && Array.from(e.target.files).slice(0, count);\n var res = {\n tempFiles: files.map(function (file) {\n return {\n tempFilePath: window.URL.createObjectURL(file),\n size: file.size\n };\n }),\n files: files\n };\n success(res);\n complete(res);\n inputElement.remove && inputElement.remove();\n }, false);\n var MouseEvents = document.createEvent('MouseEvents');\n MouseEvents.initEvent('click', true, true);\n inputElement.dispatchEvent(MouseEvents);\n } catch (e) {\n fail(e);\n complete(e);\n }\n}, _constant.CONTAINER_NAME.WEB);\n\nvar _default = chooseMedia;\nexports.default = _default;\n\n/***/ }),\n\n/***/ \"./.rax/ErrorBoundary/ErrorBoundaryFallback.tsx\":\n/*!******************************************************!*\\\n !*** ./.rax/ErrorBoundary/ErrorBoundaryFallback.tsx ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n\n\nvar toTitle = function (error) {\n return \"\" + error.toString();\n};\n\nvar style = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n margin: '100px 0',\n color: '#ed3131'\n};\n\nvar ErrorBoundaryFallback = function (_ref) {\n var error = _ref.error;\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"div\", {\n style: style,\n title: toTitle(error)\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"svg\", {\n viewBox: \"0 0 1024 1024\",\n version: \"1.1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n \"p-id\": \"843\",\n width: \"60\",\n height: \"60\"\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"path\", {\n d: \"M1024 512C1024 229.23 794.77 0 512 0S0 229.23 0 512s229.23 512 512 512c117.41 0 228.826-39.669 318.768-111.313 10.79-8.595 12.569-24.308 3.975-35.097-8.594-10.789-24.308-12.568-35.097-3.974C718.47 938.277 618.002 974.049 512 974.049 256.818 974.049 49.951 767.182 49.951 512S256.818 49.951 512 49.951 974.049 256.818 974.049 512c0 87.493-24.334 171.337-69.578 243.96-7.294 11.708-3.716 27.112 7.992 34.405 11.707 7.294 27.11 3.716 34.405-7.991C997.014 701.88 1024 608.898 1024 512z\",\n \"p-id\": \"844\",\n fill: \"#cdcdcd\"\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"path\", {\n d: \"M337.17 499.512c34.485 0 62.44-27.955 62.44-62.439s-27.955-62.439-62.44-62.439c-34.483 0-62.438 27.955-62.438 62.44 0 34.483 27.955 62.438 62.439 62.438z m374.635 0c34.484 0 62.439-27.955 62.439-62.439s-27.955-62.439-62.44-62.439c-34.483 0-62.438 27.955-62.438 62.44 0 34.483 27.955 62.438 62.439 62.438zM352.788 704.785c43.377-34.702 100.364-55.425 171.7-55.425 71.336 0 128.322 20.723 171.7 55.425 26.513 21.21 42.695 42.786 50.444 58.284 6.168 12.337 1.168 27.34-11.17 33.508-12.337 6.169-27.34 1.168-33.508-11.17-0.918-1.834-3.462-6.024-7.788-11.793-7.564-10.084-17.239-20.269-29.183-29.824-34.671-27.737-80.71-44.478-140.495-44.478-59.786 0-105.824 16.74-140.496 44.478-11.944 9.555-21.619 19.74-29.182 29.824-4.327 5.769-6.87 9.959-7.788 11.794-6.169 12.337-21.171 17.338-33.509 11.17-12.337-6.17-17.338-21.172-11.169-33.509 7.75-15.498 23.931-37.074 50.444-58.284z\",\n \"p-id\": \"845\",\n fill: \"#cdcdcd\"\n })), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"h3\", null, \"Oops! Something went wrong.\"));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (ErrorBoundaryFallback);\n\n/***/ }),\n\n/***/ \"./.rax/ErrorBoundary/index.tsx\":\n/*!**************************************!*\\\n !*** ./.rax/ErrorBoundary/index.tsx ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _ErrorBoundaryFallback__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./ErrorBoundaryFallback */ \"./.rax/ErrorBoundary/ErrorBoundaryFallback.tsx\");\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function (o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\n\n\n\nvar ErrorBoundary = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ErrorBoundary, _Component);\n\n function ErrorBoundary(props) {\n var _this = _Component.call(this, props) || this;\n\n _this.state = {\n error: null\n };\n return _this;\n }\n\n var _proto = ErrorBoundary.prototype;\n\n _proto.componentDidCatch = function componentDidCatch(error) {\n var onError = this.props.onError;\n\n if (typeof onError === 'function') {\n try {\n onError.call(this, error);\n } catch (ignoredError) {}\n }\n\n this.setState({\n error: error\n });\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n children = _this$props.children,\n Fallback = _this$props.Fallback;\n var error = this.state.error;\n\n if (error !== null && typeof Fallback === 'function') {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(Fallback, {\n error: error\n });\n }\n\n return children || null;\n };\n\n return ErrorBoundary;\n}(rax__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]);\n\nErrorBoundary.defaultProps = {\n Fallback: _ErrorBoundaryFallback__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (ErrorBoundary);\n\n/***/ }),\n\n/***/ \"./.rax/TabBar/index.css\":\n/*!*******************************!*\\\n !*** ./.rax/TabBar/index.css ***!\n \\*******************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./.rax/TabBar/index.tsx\":\n/*!*******************************!*\\\n !*** ./.rax/TabBar/index.tsx ***!\n \\*******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return TabBar; });\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./index.css */ \"./.rax/TabBar/index.css\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_index_css__WEBPACK_IMPORTED_MODULE_1__);\n\nvar isWeex = false;\n\nvar safeAreaInsetBottom = getSafeAreaInsetBottom();\n\nfunction getSafeAreaInsetBottom() {\n try {\n var screenHeight = window.screen.height;\n\n if (/iphone/gi.test(window.navigator.userAgent) && screenHeight >= 812) {\n return 34;\n } else {\n return 0;\n }\n } catch (e) {\n return 0;\n }\n}\n\nfunction TabBar(props) {\n var config = props.config,\n onClick = props.onClick,\n currentPageName = props.currentPageName;\n\n var _ref = config || {},\n _ref$backgroundColor = _ref.backgroundColor,\n backgroundColor = _ref$backgroundColor === void 0 ? '#FFF' : _ref$backgroundColor,\n _ref$items = _ref.items,\n items = _ref$items === void 0 ? [] : _ref$items,\n _ref$selectedColor = _ref.selectedColor,\n selectedColor = _ref$selectedColor === void 0 ? '#333' : _ref$selectedColor,\n _ref$textColor = _ref.textColor,\n textColor = _ref$textColor === void 0 ? '#666' : _ref$textColor;\n\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(currentPageName),\n selectedName = _useState[0],\n setSelectedName = _useState[1];\n\n var handleTabItemClick = function (item) {\n setSelectedName(item.pageName);\n onClick(item);\n };\n\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n setSelectedName(currentPageName);\n }, [currentPageName]);\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"div\", {\n className: \"rax-app-tab-bar\",\n style: {\n backgroundColor: backgroundColor,\n height: 98 + safeAreaInsetBottom\n }\n }, items.map(function (item, index) {\n var itemTextColor = item.textColor || textColor;\n var itemSelectedColor = item.selectedColor || selectedColor;\n var selected = selectedName === item.pageName;\n\n if ( true && item.name) {\n console.error('Please use text field instead of name in tabBar items config!');\n }\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"div\", {\n key: \"tab-\" + index,\n className: \"rax-app-tab-bar-item\",\n style: {\n height: 98 + safeAreaInsetBottom,\n paddingBottom: safeAreaInsetBottom\n },\n onClick: function () {\n return handleTabItemClick(item);\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"img\", {\n \"x-if\": item.activeIcon && selected,\n className: \"rax-app-tab-bar-item-img\",\n alt: \"\",\n src: item.activeIcon\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"img\", {\n \"x-if\": item.icon && !selected,\n className: \"rax-app-tab-bar-item-img\",\n alt: \"\",\n src: item.icon\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"span\", {\n className: \"rax-app-tab-bar-item-text\",\n style: {\n color: selected ? itemSelectedColor : itemTextColor\n }\n }, item.text || item.name));\n }));\n}\n\n/***/ }),\n\n/***/ \"./.rax/appConfig.ts\":\n/*!***************************!*\\\n !*** ./.rax/appConfig.ts ***!\n \\***************************/\n/*! exports provided: setAppConfig, getAppConfig */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setAppConfig\", function() { return setAppConfig; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getAppConfig\", function() { return getAppConfig; });\nvar appConfig;\n\nfunction setAppConfig(config) {\n appConfig = config;\n}\n\nfunction getAppConfig() {\n return appConfig;\n}\n\n\n\n/***/ }),\n\n/***/ \"./.rax/config.ts\":\n/*!************************!*\\\n !*** ./.rax/config.ts ***!\n \\************************/\n/*! exports provided: config, APP_MODE */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"config\", function() { return config; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"APP_MODE\", function() { return APP_MODE; });\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nvar userConfig = {\n default: {}\n};\n\nvar config = _extends({}, userConfig.default || {}, userConfig[global.__app_mode__ || \"start\"] || {});\n\nvar APP_MODE = global.__app_mode__ || \"start\";\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node_modules/webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n/***/ }),\n\n/***/ \"./.rax/index.ts\":\n/*!***********************!*\\\n !*** ./.rax/index.ts ***!\n \\***********************/\n/*! exports provided: config, APP_MODE, runApp, createApp, withRouter, history, getHistory, getSearchParams, getInitialData, usePageShow, usePageHide, withPageLifeCycle, registerNativeEventListeners, addNativeEventListener, removeNativeEventListener, ErrorBoundary */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _config__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./config */ \"./.rax/config.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"config\", function() { return _config__WEBPACK_IMPORTED_MODULE_0__[\"config\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"APP_MODE\", function() { return _config__WEBPACK_IMPORTED_MODULE_0__[\"APP_MODE\"]; });\n\n/* harmony import */ var _runApp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./runApp */ \"./.rax/runApp.ts\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"runApp\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"runApp\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"createApp\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"createApp\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withRouter\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"withRouter\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"history\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"history\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getHistory\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"getHistory\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getSearchParams\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"getSearchParams\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInitialData\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"getInitialData\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"usePageShow\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"usePageShow\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"usePageHide\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"usePageHide\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"withPageLifeCycle\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"withPageLifeCycle\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"registerNativeEventListeners\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"registerNativeEventListeners\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"addNativeEventListener\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"addNativeEventListener\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"removeNativeEventListener\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"removeNativeEventListener\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ErrorBoundary\", function() { return _runApp__WEBPACK_IMPORTED_MODULE_1__[\"ErrorBoundary\"]; });\n\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types */ \"./.rax/types.ts\");\n/* empty/unused harmony star reexport */\n\n\n\n\n/***/ }),\n\n/***/ \"./.rax/loadRuntimeModules.ts\":\n/*!************************************!*\\\n !*** ./.rax/loadRuntimeModules.ts ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction loadRuntimeModules(runtime) {\n runtime.loadModule(__webpack_require__(/*! ./node_modules/build-plugin-app-core/lib/runtime.js */ \"./node_modules/build-plugin-app-core/lib/runtime.js\"));\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (loadRuntimeModules);\n\n/***/ }),\n\n/***/ \"./.rax/loadStaticModules.ts\":\n/*!***********************************!*\\\n !*** ./.rax/loadStaticModules.ts ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction loadStaticModules() {}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (loadStaticModules);\n\n/***/ }),\n\n/***/ \"./.rax/render.ts\":\n/*!************************!*\\\n !*** ./.rax/render.ts ***!\n \\************************/\n/*! exports provided: mount, unmount */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"mount\", function() { return mount; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unmount\", function() { return unmount; });\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var driver_universal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! driver-universal */ \"./node_modules/driver-universal/es/index.js\");\n\n\nfunction mount(appInstance, rootEl) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"render\"])(appInstance, rootEl, {\n driver: driver_universal__WEBPACK_IMPORTED_MODULE_1__[\"default\"]\n });\n}\nfunction unmount(appInstance) {\n return appInstance._internal.unmountComponent.bind(appInstance._internal);\n}\n\n/***/ }),\n\n/***/ \"./.rax/runApp.ts\":\n/*!************************!*\\\n !*** ./.rax/runApp.ts ***!\n \\************************/\n/*! exports provided: runApp, createApp, withRouter, history, getHistory, getSearchParams, getInitialData, usePageShow, usePageHide, withPageLifeCycle, registerNativeEventListeners, addNativeEventListener, removeNativeEventListener, ErrorBoundary, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"runApp\", function() { return runApp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createApp\", function() { return createApp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"withRouter\", function() { return withRouter; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getHistory\", function() { return getHistory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getSearchParams\", function() { return getSearchParams; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"usePageShow\", function() { return usePageShow; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"usePageHide\", function() { return usePageHide; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"withPageLifeCycle\", function() { return withPageLifeCycle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"registerNativeEventListeners\", function() { return registerNativeEventListeners; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addNativeEventListener\", function() { return addNativeEventListener; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"removeNativeEventListener\", function() { return removeNativeEventListener; });\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var miniapp_renderer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! miniapp-renderer */ \"./node_modules/miniapp-renderer/lib/index.js\");\n/* harmony import */ var miniapp_renderer__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(miniapp_renderer__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var create_app_shared__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! create-app-shared */ \"./node_modules/create-app-shared/lib/index.js\");\n/* harmony import */ var create_app_shared__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(create_app_shared__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"history\", function() { return create_app_shared__WEBPACK_IMPORTED_MODULE_2__[\"history\"]; });\n\n/* harmony import */ var _TabBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./TabBar */ \"./.rax/TabBar/index.tsx\");\n/* harmony import */ var rax_app_renderer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rax-app-renderer */ \"./node_modules/rax-app-renderer/lib/index.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInitialData\", function() { return rax_app_renderer__WEBPACK_IMPORTED_MODULE_4__[\"getInitialData\"]; });\n\n/* harmony import */ var create_use_router__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! create-use-router */ \"./node_modules/create-use-router/lib/index.js\");\n/* harmony import */ var create_use_router__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(create_use_router__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _loadRuntimeModules__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./loadRuntimeModules */ \"./.rax/loadRuntimeModules.ts\");\n/* harmony import */ var _loadStaticModules__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./loadStaticModules */ \"./.rax/loadStaticModules.ts\");\n/* harmony import */ var _staticConfig__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./staticConfig */ \"./.rax/staticConfig.ts\");\n/* harmony import */ var _appConfig__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./appConfig */ \"./.rax/appConfig.ts\");\n/* harmony import */ var _render__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./render */ \"./.rax/render.ts\");\n/* harmony import */ var _ErrorBoundary__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./ErrorBoundary */ \"./.rax/ErrorBoundary/index.tsx\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ErrorBoundary\", function() { return _ErrorBoundary__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n\nvar isWeb = false;\nvar isKuaiShouMiniProgram = false;\nvar isBaiduSmartProgram = false;\nvar isByteDanceMicroApp = false;\nvar isWeChatMiniProgram = false;\nvar isMiniApp = true;\n\n\n\n\n\nvar defaultWithRouter = Object(create_use_router__WEBPACK_IMPORTED_MODULE_5__[\"createWithRouter\"])({\n createElement: rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"]\n});\n\n\n\n\n\n\nvar buildConfig = {\n web: {\n doctype: '<!DOCTYPE html>'\n }\n};\n\nvar _createShareAPI = create_app_shared__WEBPACK_IMPORTED_MODULE_2___default()({\n createElement: rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"],\n useEffect: rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"],\n withRouter: defaultWithRouter,\n initHistory: buildConfig.router !== false\n}, _loadRuntimeModules__WEBPACK_IMPORTED_MODULE_6__[\"default\"]),\n createBaseApp = _createShareAPI.createBaseApp,\n withRouter = _createShareAPI.withRouter,\n createHistory = _createShareAPI.createHistory,\n getHistory = _createShareAPI.getHistory,\n emitLifeCycles = _createShareAPI.emitLifeCycles,\n usePageShow = _createShareAPI.usePageShow,\n usePageHide = _createShareAPI.usePageHide,\n withPageLifeCycle = _createShareAPI.withPageLifeCycle,\n pathRedirect = _createShareAPI.pathRedirect,\n registerNativeEventListeners = _createShareAPI.registerNativeEventListeners,\n addNativeEventListener = _createShareAPI.addNativeEventListener,\n removeNativeEventListener = _createShareAPI.removeNativeEventListener,\n getSearchParams = _createShareAPI.getSearchParams;\n\nfunction runApp(appConfig, staticConfig) {\n var renderer = rax_app_renderer__WEBPACK_IMPORTED_MODULE_4__[\"default\"];\n renderer = miniapp_renderer__WEBPACK_IMPORTED_MODULE_1___default.a;\n renderer({\n appConfig: appConfig,\n staticConfig: staticConfig || _staticConfig__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n buildConfig: buildConfig,\n setAppConfig: _appConfig__WEBPACK_IMPORTED_MODULE_9__[\"setAppConfig\"],\n createBaseApp: createBaseApp,\n createHistory: createHistory,\n getHistory: getHistory,\n emitLifeCycles: emitLifeCycles,\n pathRedirect: pathRedirect,\n loadStaticModules: _loadStaticModules__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n ErrorBoundary: _ErrorBoundary__WEBPACK_IMPORTED_MODULE_11__[\"default\"],\n TabBar: _TabBar__WEBPACK_IMPORTED_MODULE_3__[\"default\"]\n }, {\n createElement: rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"],\n mount: _render__WEBPACK_IMPORTED_MODULE_10__[\"mount\"],\n unmount: _render__WEBPACK_IMPORTED_MODULE_10__[\"unmount\"],\n Component: rax__WEBPACK_IMPORTED_MODULE_0__[\"Component\"]\n });\n}\nfunction createApp(appConfig, staticConfig) {\n console.warn('Detected that you are using createApp, please use runApp method, Visit https://ice.work/docs/guide/basic/api.');\n runApp(appConfig, staticConfig);\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = ({\n createBaseApp: createBaseApp,\n emitLifeCycles: emitLifeCycles\n});\n\n/***/ }),\n\n/***/ \"./.rax/staticConfig.ts\":\n/*!******************************!*\\\n !*** ./.rax/staticConfig.ts ***!\n \\******************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar staticConfig = {};\n\ntry {\n staticConfig = __webpack_require__(/*! ../src/app.json */ \"./src/app.json\");\n} catch (error) {}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (staticConfig.__esModule ? staticConfig.default : staticConfig);\n\n/***/ }),\n\n/***/ \"./.rax/types.ts\":\n/*!***********************!*\\\n !*** ./.rax/types.ts ***!\n \\***********************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/defineProperty.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/defineProperty.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\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\nmodule.exports = _defineProperty;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/esm/extends.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/esm/extends.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return _extends; });\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\":\n/*!**********************************************************************!*\\\n !*** ./node_modules/@babel/runtime/helpers/interopRequireDefault.js ***!\n \\**********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault;\nmodule.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\n/***/ }),\n\n/***/ \"./node_modules/@babel/runtime/regenerator/index.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/@babel/runtime/regenerator/index.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(/*! regenerator-runtime */ \"./node_modules/regenerator-runtime/runtime.js\");\n\n/***/ }),\n\n/***/ \"./node_modules/babel-runtime-jsx-plus/dist/babel-runtime-jsx-plus.umd.js\":\n/*!********************************************************************************!*\\\n !*** ./node_modules/babel-runtime-jsx-plus/dist/babel-runtime-jsx-plus.umd.js ***!\n \\********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n!function (e, r) {\n true ? r(exports) : undefined;\n}(this, function (e) {\n \"use strict\";\n\n var n = {};\n var l = {}.hasOwnProperty;\n e.$slot = function (e) {\n var r = e.$slots,\n n = e.name,\n t = function (e, r) {\n if (null == e) return {};\n var n,\n t,\n o = {},\n i = Object.keys(e);\n\n for (t = 0; t < i.length; t++) {\n n = i[t], 0 <= r.indexOf(n) || (o[n] = e[n]);\n }\n\n return o;\n }(e, [\"$slots\", \"name\"]),\n o = r ? r[n] : null;\n\n return \"function\" == typeof o ? o(t) : null;\n }, e.classnames = function e() {\n for (var r = [], n = 0; n < arguments.length; n++) {\n var t = arguments[n];\n\n if (t) {\n var o = typeof t;\n if (\"string\" == o || \"number\" == o) r.push(t);else if (Array.isArray(t) && t.length) {\n var i = e.apply(null, t);\n i && r.push(i);\n } else if (\"object\" == o) for (var f in t) {\n l.call(t, f) && t[f] && r.push(f);\n }\n }\n }\n\n return r.join(\" \");\n }, e.createCondition = function (e) {\n if (Array.isArray(e)) for (var r = 0, n = e.length; r < n; r++) {\n var t = e[r],\n o = t[0],\n i = t[1];\n if (o()) return i();\n }\n return null;\n }, e.createJSXMemo = function (e, r) {\n return n.hasOwnProperty(r) ? n[r] : n[r] = \"function\" == typeof e ? e() : e;\n }, e.createList = function (e, r) {\n var n, t, o, i, f, l;\n if (Array.isArray(e) || \"string\" == typeof e) for (n = new Array(e.length), t = 0, o = e.length; t < o; t++) {\n n[t] = r.call(this, e[t], t);\n } else if (\"number\" == typeof e) for (n = new Array(e), t = 0; t < e; t++) {\n n[t] = r.call(this, t + 1, t);\n } else if (l = e, \"[object Object]\" === {}.toString.call(l)) for (i = Object.keys(e), n = new Array(i.length), t = 0, o = i.length; t < o; t++) {\n f = i[t], n[t] = r.call(this, e[f], f, t);\n }\n return n;\n }, Object.defineProperty(e, \"__esModule\", {\n value: !0\n });\n});\n\n/***/ }),\n\n/***/ \"./node_modules/babel-runtime/core-js/object/assign.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/babel-runtime/core-js/object/assign.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = { \"default\": __webpack_require__(/*! core-js/library/fn/object/assign */ \"./node_modules/core-js/library/fn/object/assign.js\"), __esModule: true };\n\n/***/ }),\n\n/***/ \"./node_modules/babel-runtime/helpers/extends.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/babel-runtime/helpers/extends.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\n\nvar _assign = __webpack_require__(/*! ../core-js/object/assign */ \"./node_modules/babel-runtime/core-js/object/assign.js\");\n\nvar _assign2 = _interopRequireDefault(_assign);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nexports.default = _assign2.default || 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\n/***/ }),\n\n/***/ \"./node_modules/build-plugin-app-core/lib/runtime.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/build-plugin-app-core/lib/runtime.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar module = function (_a) {\n var addProvider = _a.addProvider,\n appConfig = _a.appConfig,\n wrapperRouteComponent = _a.wrapperRouteComponent,\n getSearchParams = _a.getSearchParams,\n createElement = _a.context.createElement;\n var _b = appConfig.app,\n app = _b === void 0 ? {} : _b;\n var _c = app.parseSearchParams,\n parseSearchParams = _c === void 0 ? true : _c;\n wrapperRouteComponent(function wrapperPageComponent(PageComponent) {\n var WrapperedPageComponent = function (props) {\n var searchParams = parseSearchParams && getSearchParams();\n return createElement(PageComponent, __assign({}, Object.assign({}, props, {\n searchParams: searchParams\n })));\n };\n\n return WrapperedPageComponent;\n });\n\n if (appConfig.app && appConfig.app.addProvider) {\n addProvider(appConfig.app.addProvider);\n }\n};\n\nexports.default = module;\n\n/***/ }),\n\n/***/ \"./node_modules/classnames/dedupe.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/classnames/dedupe.js ***!\n \\*******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var classNames = function () {\n // don't inherit from Object so we can skip hasOwnProperty check later\n // http://stackoverflow.com/questions/15518328/creating-js-object-with-object-createnull#answer-21079232\n function StorageObject() {}\n\n StorageObject.prototype = Object.create(null);\n\n function _parseArray(resultSet, array) {\n var length = array.length;\n\n for (var i = 0; i < length; ++i) {\n _parse(resultSet, array[i]);\n }\n }\n\n var hasOwn = {}.hasOwnProperty;\n\n function _parseNumber(resultSet, num) {\n resultSet[num] = true;\n }\n\n function _parseObject(resultSet, object) {\n if (object.toString === Object.prototype.toString) {\n for (var k in object) {\n if (hasOwn.call(object, k)) {\n // set value to false instead of deleting it to avoid changing object structure\n // https://www.smashingmagazine.com/2012/11/writing-fast-memory-efficient-javascript/#de-referencing-misconceptions\n resultSet[k] = !!object[k];\n }\n }\n } else {\n resultSet[object.toString()] = true;\n }\n }\n\n var SPACE = /\\s+/;\n\n function _parseString(resultSet, str) {\n var array = str.split(SPACE);\n var length = array.length;\n\n for (var i = 0; i < length; ++i) {\n resultSet[array[i]] = true;\n }\n }\n\n function _parse(resultSet, arg) {\n if (!arg) return;\n var argType = typeof arg; // 'foo bar'\n\n if (argType === 'string') {\n _parseString(resultSet, arg); // ['foo', 'bar', ...]\n\n } else if (Array.isArray(arg)) {\n _parseArray(resultSet, arg); // { 'foo': true, ... }\n\n } else if (argType === 'object') {\n _parseObject(resultSet, arg); // '130'\n\n } else if (argType === 'number') {\n _parseNumber(resultSet, arg);\n }\n }\n\n return function () {\n // don't leak arguments\n // https://github.com/petkaantonov/bluebird/wiki/Optimization-killers#32-leaking-arguments\n var len = arguments.length;\n var args = Array(len);\n\n for (var i = 0; i < len; i++) {\n args[i] = arguments[i];\n }\n\n var classSet = new StorageObject();\n\n _parseArray(classSet, args);\n\n var list = [];\n\n for (var k in classSet) {\n if (classSet[k]) {\n list.push(k);\n }\n }\n\n return list.join(' ');\n };\n }();\n\n if ( true && module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else if (true) {\n // register as 'classnames', consistent with npm package name\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n return classNames;\n }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})();\n\n/***/ }),\n\n/***/ \"./node_modules/classnames/index.js\":\n/*!******************************************!*\\\n !*** ./node_modules/classnames/index.js ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n Copyright (c) 2018 Jed Watson.\n Licensed under the MIT License (MIT), see\n http://jedwatson.github.io/classnames\n*/\n\n/* global define */\n(function () {\n 'use strict';\n\n var hasOwn = {}.hasOwnProperty;\n\n function classNames() {\n var classes = [];\n\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n if (!arg) continue;\n var argType = typeof arg;\n\n if (argType === 'string' || argType === 'number') {\n classes.push(arg);\n } else if (Array.isArray(arg)) {\n if (arg.length) {\n var inner = classNames.apply(null, arg);\n\n if (inner) {\n classes.push(inner);\n }\n }\n } else if (argType === 'object') {\n if (arg.toString === Object.prototype.toString) {\n for (var key in arg) {\n if (hasOwn.call(arg, key) && arg[key]) {\n classes.push(key);\n }\n }\n } else {\n classes.push(arg.toString());\n }\n }\n }\n\n return classes.join(' ');\n }\n\n if ( true && module.exports) {\n classNames.default = classNames;\n module.exports = classNames;\n } else if (true) {\n // register as 'classnames', consistent with npm package name\n !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {\n return classNames;\n }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));\n } else {}\n})();\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/fn/object/assign.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/library/fn/object/assign.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n__webpack_require__(/*! ../../modules/es6.object.assign */ \"./node_modules/core-js/library/modules/es6.object.assign.js\");\nmodule.exports = __webpack_require__(/*! ../../modules/_core */ \"./node_modules/core-js/library/modules/_core.js\").Object.assign;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_a-function.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_a-function.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n if (typeof it != 'function') throw TypeError(it + ' is not a function!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_an-object.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_an-object.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nmodule.exports = function (it) {\n if (!isObject(it)) throw TypeError(it + ' is not an object!');\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_array-includes.js\":\n/*!*****************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_array-includes.js ***!\n \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// false -> Array#indexOf\n// true -> Array#includes\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar toLength = __webpack_require__(/*! ./_to-length */ \"./node_modules/core-js/library/modules/_to-length.js\");\nvar toAbsoluteIndex = __webpack_require__(/*! ./_to-absolute-index */ \"./node_modules/core-js/library/modules/_to-absolute-index.js\");\nmodule.exports = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) if (IS_INCLUDES || index in O) {\n if (O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_cof.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_cof.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_core.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_core.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar core = module.exports = { version: '2.6.12' };\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_ctx.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_ctx.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// optional / simple context binding\nvar aFunction = __webpack_require__(/*! ./_a-function */ \"./node_modules/core-js/library/modules/_a-function.js\");\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_defined.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_defined.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// 7.2.1 RequireObjectCoercible(argument)\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_descriptors.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_descriptors.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n return Object.defineProperty({}, 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_dom-create.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_dom-create.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\nvar document = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\").document;\n// typeof document.createElement is 'object' in old IE\nvar is = isObject(document) && isObject(document.createElement);\nmodule.exports = function (it) {\n return is ? document.createElement(it) : {};\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_enum-bug-keys.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// IE 8- don't enum bug keys\nmodule.exports = (\n 'constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf'\n).split(',');\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_export.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_export.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar ctx = __webpack_require__(/*! ./_ctx */ \"./node_modules/core-js/library/modules/_ctx.js\");\nvar hide = __webpack_require__(/*! ./_hide */ \"./node_modules/core-js/library/modules/_hide.js\");\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar PROTOTYPE = 'prototype';\n\nvar $export = function (type, name, source) {\n var IS_FORCED = type & $export.F;\n var IS_GLOBAL = type & $export.G;\n var IS_STATIC = type & $export.S;\n var IS_PROTO = type & $export.P;\n var IS_BIND = type & $export.B;\n var IS_WRAP = type & $export.W;\n var exports = IS_GLOBAL ? core : core[name] || (core[name] = {});\n var expProto = exports[PROTOTYPE];\n var target = IS_GLOBAL ? global : IS_STATIC ? global[name] : (global[name] || {})[PROTOTYPE];\n var key, own, out;\n if (IS_GLOBAL) source = name;\n for (key in source) {\n // contains in native\n own = !IS_FORCED && target && target[key] !== undefined;\n if (own && has(exports, key)) continue;\n // export native or passed\n out = own ? target[key] : source[key];\n // prevent global pollution for namespaces\n exports[key] = IS_GLOBAL && typeof target[key] != 'function' ? source[key]\n // bind timers to global for call from export context\n : IS_BIND && own ? ctx(out, global)\n // wrap global constructors for prevent change them in library\n : IS_WRAP && target[key] == out ? (function (C) {\n var F = function (a, b, c) {\n if (this instanceof C) {\n switch (arguments.length) {\n case 0: return new C();\n case 1: return new C(a);\n case 2: return new C(a, b);\n } return new C(a, b, c);\n } return C.apply(this, arguments);\n };\n F[PROTOTYPE] = C[PROTOTYPE];\n return F;\n // make static versions for prototype methods\n })(out) : IS_PROTO && typeof out == 'function' ? ctx(Function.call, out) : out;\n // export proto methods to core.%CONSTRUCTOR%.methods.%NAME%\n if (IS_PROTO) {\n (exports.virtual || (exports.virtual = {}))[key] = out;\n // export proto methods to core.%CONSTRUCTOR%.prototype.%NAME%\n if (type & $export.R && expProto && !expProto[key]) hide(expProto, key, out);\n }\n }\n};\n// type bitmap\n$export.F = 1; // forced\n$export.G = 2; // global\n$export.S = 4; // static\n$export.P = 8; // proto\n$export.B = 16; // bind\n$export.W = 32; // wrap\n$export.U = 64; // safe\n$export.R = 128; // real proto method for `library`\nmodule.exports = $export;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_fails.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_fails.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (exec) {\n try {\n return !!exec();\n } catch (e) {\n return true;\n }\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_global.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_global.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nvar global = module.exports = typeof window != 'undefined' && window.Math == Math\n ? window : typeof self != 'undefined' && self.Math == Math ? self\n // eslint-disable-next-line no-new-func\n : Function('return this')();\nif (typeof __g == 'number') __g = global; // eslint-disable-line no-undef\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_has.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_has.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar hasOwnProperty = {}.hasOwnProperty;\nmodule.exports = function (it, key) {\n return hasOwnProperty.call(it, key);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_hide.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_hide.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar dP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/core-js/library/modules/_object-dp.js\");\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/core-js/library/modules/_property-desc.js\");\nmodule.exports = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? function (object, key, value) {\n return dP.f(object, key, createDesc(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_ie8-dom-define.js\":\n/*!*****************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_ie8-dom-define.js ***!\n \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = !__webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") && !__webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n return Object.defineProperty(__webpack_require__(/*! ./_dom-create */ \"./node_modules/core-js/library/modules/_dom-create.js\")('div'), 'a', { get: function () { return 7; } }).a != 7;\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_iobject.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_iobject.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nvar cof = __webpack_require__(/*! ./_cof */ \"./node_modules/core-js/library/modules/_cof.js\");\n// eslint-disable-next-line no-prototype-builtins\nmodule.exports = Object('z').propertyIsEnumerable(0) ? Object : function (it) {\n return cof(it) == 'String' ? it.split('') : Object(it);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_is-object.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_is-object.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_library.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_library.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = true;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_object-assign.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_object-assign.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n// 19.1.2.1 Object.assign(target, source, ...)\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\");\nvar getKeys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/core-js/library/modules/_object-keys.js\");\nvar gOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/core-js/library/modules/_object-gops.js\");\nvar pIE = __webpack_require__(/*! ./_object-pie */ \"./node_modules/core-js/library/modules/_object-pie.js\");\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/core-js/library/modules/_to-object.js\");\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/library/modules/_iobject.js\");\nvar $assign = Object.assign;\n\n// should work with symbols and should have deterministic property order (V8 bug)\nmodule.exports = !$assign || __webpack_require__(/*! ./_fails */ \"./node_modules/core-js/library/modules/_fails.js\")(function () {\n var A = {};\n var B = {};\n // eslint-disable-next-line no-undef\n var S = Symbol();\n var K = 'abcdefghijklmnopqrst';\n A[S] = 7;\n K.split('').forEach(function (k) { B[k] = k; });\n return $assign({}, A)[S] != 7 || Object.keys($assign({}, B)).join('') != K;\n}) ? function assign(target, source) { // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var aLen = arguments.length;\n var index = 1;\n var getSymbols = gOPS.f;\n var isEnum = pIE.f;\n while (aLen > index) {\n var S = IObject(arguments[index++]);\n var keys = getSymbols ? getKeys(S).concat(getSymbols(S)) : getKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || isEnum.call(S, key)) T[key] = S[key];\n }\n } return T;\n} : $assign;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_object-dp.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_object-dp.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/core-js/library/modules/_an-object.js\");\nvar IE8_DOM_DEFINE = __webpack_require__(/*! ./_ie8-dom-define */ \"./node_modules/core-js/library/modules/_ie8-dom-define.js\");\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/core-js/library/modules/_to-primitive.js\");\nvar dP = Object.defineProperty;\n\nexports.f = __webpack_require__(/*! ./_descriptors */ \"./node_modules/core-js/library/modules/_descriptors.js\") ? Object.defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPrimitive(P, true);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return dP(O, P, Attributes);\n } catch (e) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported!');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_object-gops.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_object-gops.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nexports.f = Object.getOwnPropertySymbols;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_object-keys-internal.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_object-keys-internal.js ***!\n \\***********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/core-js/library/modules/_has.js\");\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/core-js/library/modules/_to-iobject.js\");\nvar arrayIndexOf = __webpack_require__(/*! ./_array-includes */ \"./node_modules/core-js/library/modules/_array-includes.js\")(false);\nvar IE_PROTO = __webpack_require__(/*! ./_shared-key */ \"./node_modules/core-js/library/modules/_shared-key.js\")('IE_PROTO');\n\nmodule.exports = function (object, names) {\n var O = toIObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) if (key != IE_PROTO) has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~arrayIndexOf(result, key) || result.push(key);\n }\n return result;\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_object-keys.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_object-keys.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.2.14 / 15.2.3.14 Object.keys(O)\nvar $keys = __webpack_require__(/*! ./_object-keys-internal */ \"./node_modules/core-js/library/modules/_object-keys-internal.js\");\nvar enumBugKeys = __webpack_require__(/*! ./_enum-bug-keys */ \"./node_modules/core-js/library/modules/_enum-bug-keys.js\");\n\nmodule.exports = Object.keys || function keys(O) {\n return $keys(O, enumBugKeys);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_object-pie.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_object-pie.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nexports.f = {}.propertyIsEnumerable;\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_property-desc.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_property-desc.js ***!\n \\****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nmodule.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_shared-key.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_shared-key.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar shared = __webpack_require__(/*! ./_shared */ \"./node_modules/core-js/library/modules/_shared.js\")('keys');\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/core-js/library/modules/_uid.js\");\nmodule.exports = function (key) {\n return shared[key] || (shared[key] = uid(key));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_shared.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_shared.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar core = __webpack_require__(/*! ./_core */ \"./node_modules/core-js/library/modules/_core.js\");\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/core-js/library/modules/_global.js\");\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || (global[SHARED] = {});\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: core.version,\n mode: __webpack_require__(/*! ./_library */ \"./node_modules/core-js/library/modules/_library.js\") ? 'pure' : 'global',\n copyright: '© 2020 Denis Pushkarev (zloirock.ru)'\n});\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_to-absolute-index.js\":\n/*!********************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_to-absolute-index.js ***!\n \\********************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar max = Math.max;\nvar min = Math.min;\nmodule.exports = function (index, length) {\n index = toInteger(index);\n return index < 0 ? max(index + length, 0) : min(index, length);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_to-integer.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_to-integer.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// 7.1.4 ToInteger\nvar ceil = Math.ceil;\nvar floor = Math.floor;\nmodule.exports = function (it) {\n return isNaN(it = +it) ? 0 : (it > 0 ? floor : ceil)(it);\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_to-iobject.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_to-iobject.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// to indexed object, toObject with fallback for non-array-like ES3 strings\nvar IObject = __webpack_require__(/*! ./_iobject */ \"./node_modules/core-js/library/modules/_iobject.js\");\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n return IObject(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_to-length.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_to-length.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.15 ToLength\nvar toInteger = __webpack_require__(/*! ./_to-integer */ \"./node_modules/core-js/library/modules/_to-integer.js\");\nvar min = Math.min;\nmodule.exports = function (it) {\n return it > 0 ? min(toInteger(it), 0x1fffffffffffff) : 0; // pow(2, 53) - 1 == 9007199254740991\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_to-object.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_to-object.js ***!\n \\************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.13 ToObject(argument)\nvar defined = __webpack_require__(/*! ./_defined */ \"./node_modules/core-js/library/modules/_defined.js\");\nmodule.exports = function (it) {\n return Object(defined(it));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_to-primitive.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_to-primitive.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 7.1.1 ToPrimitive(input [, PreferredType])\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/core-js/library/modules/_is-object.js\");\n// instead of the ES6 spec version, we didn't implement @@toPrimitive case\n// and the second argument - flag - preferred type is a string\nmodule.exports = function (it, S) {\n if (!isObject(it)) return it;\n var fn, val;\n if (S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n if (typeof (fn = it.valueOf) == 'function' && !isObject(val = fn.call(it))) return val;\n if (!S && typeof (fn = it.toString) == 'function' && !isObject(val = fn.call(it))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/_uid.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/core-js/library/modules/_uid.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar id = 0;\nvar px = Math.random();\nmodule.exports = function (key) {\n return 'Symbol('.concat(key === undefined ? '' : key, ')_', (++id + px).toString(36));\n};\n\n\n/***/ }),\n\n/***/ \"./node_modules/core-js/library/modules/es6.object.assign.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/core-js/library/modules/es6.object.assign.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// 19.1.3.1 Object.assign(target, source)\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/core-js/library/modules/_export.js\");\n\n$export($export.S + $export.F, 'Object', { assign: __webpack_require__(/*! ./_object-assign */ \"./node_modules/core-js/library/modules/_object-assign.js\") });\n\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/appLifeCycles.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/appLifeCycles.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addAppLifeCycle = exports.emit = exports.appCycles = void 0;\nvar universal_env_1 = {\n isWeex: false,\n isWeb: false,\n isKraken: false,\n isNode: false,\n isMiniApp: true,\n isWeChatMiniProgram: false,\n isWeChatMiniprogram: false,\n isByteDanceMicroApp: false,\n isKuaiShouMiniProgram: false,\n isBaiduSmartProgram: false\n};\n\nvar env_1 = __webpack_require__(/*! ./env */ \"./node_modules/create-app-shared/lib/env.js\");\n\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/create-app-shared/lib/constants.js\");\n\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./node_modules/create-app-shared/lib/utils/index.js\");\n\nvar history_1 = __webpack_require__(/*! ./history */ \"./node_modules/create-app-shared/lib/history.js\");\n\nvar router_1 = __webpack_require__(/*! ./router */ \"./node_modules/create-app-shared/lib/router.js\");\n\nvar pageLifeCycles_1 = __webpack_require__(/*! ./pageLifeCycles */ \"./node_modules/create-app-shared/lib/pageLifeCycles.js\");\n\nexports.appCycles = {};\n/**\n * Emit life cycle callback\n * @param {string} cycle cycle name\n * @param {object} context callback's context when executed\n * @param {...any} args callback params\n */\n\nfunction emit(cycle, context) {\n var args = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n }\n\n if (Object.prototype.hasOwnProperty.call(exports.appCycles, cycle)) {\n var cycles = exports.appCycles[cycle];\n\n if (cycle === constants_1.SHARE) {\n // In MiniApp, it need return callback result as share info, like { title, desc, path }\n args[0].content = context ? cycles[0].call(context, args[1]) : cycles[0](args[1]);\n } else {\n cycles.forEach(function (fn) {\n // eslint-disable-next-line\n context ? fn.apply(context, args) : fn.apply(void 0, args);\n });\n }\n }\n}\n\nexports.emit = emit;\n/**\n * Add app lifecycle callback\n * @param {string} cycle cycle name\n * @param {function} callback cycle callback\n */\n\nfunction addAppLifeCycle(cycle, callback) {\n if (utils_1.isFunction(callback)) {\n // eslint-disable-next-line\n var cycles = exports.appCycles[cycle] = exports.appCycles[cycle] || [];\n cycles.push(callback);\n }\n}\n\nexports.addAppLifeCycle = addAppLifeCycle; // Emit MiniApp App lifeCycles\n\nif (env_1.isMiniAppPlatform) {\n window.addEventListener(constants_1.LAUNCH, function (_a) {\n var options = _a.options,\n context = _a.context;\n emit(constants_1.LAUNCH, context, options);\n });\n window.addEventListener('appshow', function (_a) {\n var options = _a.options,\n context = _a.context;\n emit(constants_1.SHOW, context, options);\n });\n window.addEventListener('apphide', function (_a) {\n var context = _a.context;\n emit(constants_1.HIDE, context);\n });\n window.addEventListener('apperror', function (_a) {\n var context = _a.context,\n error = _a.error;\n emit(constants_1.ERROR, context, error);\n });\n window.addEventListener('pagenotfound', function (_a) {\n var context = _a.context;\n emit(constants_1.NOT_FOUND, context);\n });\n window.addEventListener('appshare', function (_a) {\n var context = _a.context,\n shareInfo = _a.shareInfo,\n options = _a.options;\n emit(constants_1.SHARE, context, shareInfo, options);\n });\n window.addEventListener('tabitemclick', function (_a) {\n var options = _a.options,\n context = _a.context;\n emit(constants_1.TAB_ITEM_CLICK, context, options);\n });\n} else if (universal_env_1.isWeex) {\n try {\n // https://weex.apache.org/docs/modules/globalEvent.html#addeventlistener\n // Use __weex_require__ in Rax project.\n var globalEvent = __weex_require__('@weex-module/globalEvent');\n\n globalEvent.addEventListener('WXApplicationDidBecomeActiveEvent', function () {\n router_1.default.current.visibiltyState = true; // Emit app show\n\n emit(constants_1.SHOW); // Emit page show\n\n pageLifeCycles_1.emit(constants_1.SHOW, router_1.default.current.pathname);\n });\n globalEvent.addEventListener('WXApplicationWillResignActiveEvent', function () {\n router_1.default.current.visibiltyState = false; // Emit page hide\n\n pageLifeCycles_1.emit(constants_1.HIDE, router_1.default.current.pathname); // Emit app hide\n\n emit(constants_1.HIDE);\n });\n } catch (err) {\n console.log(\"@weex-module/globalEvent error: \" + err);\n }\n} else if (typeof document !== 'undefined' && typeof window !== 'undefined') {\n document.addEventListener('visibilitychange', function () {\n // Get history\n var history = history_1.getHistory();\n var currentPathName = history ? history.location.pathname : router_1.default.current.pathname; // The app switches from foreground to background\n\n if (currentPathName === router_1.default.current.pathname) {\n router_1.default.current.visibiltyState = !router_1.default.current.visibiltyState;\n\n if (router_1.default.current.visibiltyState) {\n // Emit app show\n emit(constants_1.SHOW); // Emit page show\n\n pageLifeCycles_1.emit(constants_1.SHOW, router_1.default.current.pathname);\n } else {\n // Emit page hide\n pageLifeCycles_1.emit(constants_1.HIDE, router_1.default.current.pathname); // Emit app hide\n\n emit(constants_1.HIDE);\n }\n }\n }); // Emit error lifeCycles\n\n window.addEventListener('error', function (event) {\n emit(constants_1.ERROR, null, event.error);\n });\n}\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/collectAppLifeCycle.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/collectAppLifeCycle.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar appLifeCycles_1 = __webpack_require__(/*! ./appLifeCycles */ \"./node_modules/create-app-shared/lib/appLifeCycles.js\");\n\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/create-app-shared/lib/constants.js\");\n\nvar env_1 = __webpack_require__(/*! ./env */ \"./node_modules/create-app-shared/lib/env.js\");\n\nfunction collectAppLifeCycle(appConfig) {\n var _a = appConfig.app,\n onLaunch = _a.onLaunch,\n onShow = _a.onShow,\n onError = _a.onError,\n onHide = _a.onHide,\n onTabItemClick = _a.onTabItemClick; // multi-end valid lifecycle\n // Add app lanuch callback\n\n appLifeCycles_1.addAppLifeCycle(constants_1.LAUNCH, onLaunch); // Add app show callback\n\n appLifeCycles_1.addAppLifeCycle(constants_1.SHOW, onShow); // Add app error callback\n\n appLifeCycles_1.addAppLifeCycle(constants_1.ERROR, onError); // Add app hide callback\n\n appLifeCycles_1.addAppLifeCycle(constants_1.HIDE, onHide); // Add tab bar item click callback\n\n appLifeCycles_1.addAppLifeCycle(constants_1.TAB_ITEM_CLICK, onTabItemClick);\n\n if (env_1.isMiniAppPlatform) {\n var _b = appConfig.app,\n onPageNotFound = _b.onPageNotFound,\n onShareAppMessage = _b.onShareAppMessage,\n onUnhandledRejection = _b.onUnhandledRejection; // Add global share callback\n\n appLifeCycles_1.addAppLifeCycle(constants_1.SHARE, onShareAppMessage); // Add unhandledrejection callback\n\n appLifeCycles_1.addAppLifeCycle(constants_1.UNHANDLED_REJECTION, onUnhandledRejection); // Add page not found callback\n\n appLifeCycles_1.addAppLifeCycle(constants_1.NOT_FOUND, onPageNotFound);\n }\n}\n\nexports.default = collectAppLifeCycle;\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/constants.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/constants.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _a;\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.MINIAPP_PAGE_LIFECYCLE = exports.UNHANDLED_REJECTION = exports.TAB_ITEM_CLICK = exports.SHARE = exports.NOT_FOUND = exports.ERROR = exports.LAUNCH = exports.HIDE = exports.SHOW = void 0;\nexports.SHOW = 'show';\nexports.HIDE = 'hide';\nexports.LAUNCH = 'launch';\nexports.ERROR = 'error';\nexports.NOT_FOUND = 'notfound';\nexports.SHARE = 'share';\nexports.TAB_ITEM_CLICK = 'tabitemclick';\nexports.UNHANDLED_REJECTION = 'unhandledrejection';\nexports.MINIAPP_PAGE_LIFECYCLE = (_a = {}, _a[exports.SHOW] = 'miniapp_pageshow', _a[exports.HIDE] = 'miniapp_pagehide', _a);\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/createBaseApp.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/createBaseApp.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar runtimeModule_1 = __webpack_require__(/*! ./runtimeModule */ \"./node_modules/create-app-shared/lib/runtimeModule.js\");\n\nvar history_1 = __webpack_require__(/*! ./history */ \"./node_modules/create-app-shared/lib/history.js\");\n\nvar env_1 = __webpack_require__(/*! ./env */ \"./node_modules/create-app-shared/lib/env.js\");\n\nvar collectAppLifeCycle_1 = __webpack_require__(/*! ./collectAppLifeCycle */ \"./node_modules/create-app-shared/lib/collectAppLifeCycle.js\");\n\nvar DEFAULE_APP_CONFIG = {\n app: {\n rootId: 'root'\n },\n router: {\n type: 'hash'\n }\n};\n\nfunction mergeDefaultConfig(defaultConfig, config) {\n Object.keys(defaultConfig).forEach(function (key) {\n if (typeof config[key] === 'object' && config[key] !== null) {\n config[key] = mergeDefaultConfig(defaultConfig[key], config[key]);\n } else if (!Object.prototype.hasOwnProperty.call(config, key)) {\n config[key] = defaultConfig[key];\n }\n });\n return config;\n}\n\nexports.default = function (_a) {\n var loadRuntimeModules = _a.loadRuntimeModules,\n createElement = _a.createElement,\n _b = _a.initHistory,\n initHistory = _b === void 0 ? true : _b;\n return function createBaseApp(appConfig, buildConfig, context) {\n if (context === void 0) {\n context = {};\n } // Merge default appConfig to user appConfig\n\n\n appConfig = mergeDefaultConfig(DEFAULE_APP_CONFIG, appConfig); // Set history\n\n var history;\n\n if (!env_1.isMiniAppPlatform && initHistory) {\n var router = appConfig.router;\n var type = router.type,\n basename = router.basename,\n customHistory = router.history;\n var location_1 = context.initialContext ? context.initialContext.location : null;\n history = history_1.createHistory({\n type: type,\n basename: basename,\n location: location_1,\n customHistory: customHistory\n });\n appConfig.router.history = history;\n }\n\n context.createElement = createElement; // Load runtime modules\n\n var runtime = new runtimeModule_1.default(appConfig, buildConfig, context);\n loadRuntimeModules(runtime); // Collect app lifeCyle\n\n collectAppLifeCycle_1.default(appConfig);\n return {\n history: history,\n runtime: runtime,\n appConfig: appConfig\n };\n };\n};\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/emitLifeCycles.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/emitLifeCycles.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar history_1 = __webpack_require__(/*! ./history */ \"./node_modules/create-app-shared/lib/history.js\");\n\nvar router_1 = __webpack_require__(/*! ./router */ \"./node_modules/create-app-shared/lib/router.js\");\n\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/create-app-shared/lib/constants.js\");\n\nvar appLifeCycles_1 = __webpack_require__(/*! ./appLifeCycles */ \"./node_modules/create-app-shared/lib/appLifeCycles.js\");\n\nvar pageLifeCycles_1 = __webpack_require__(/*! ./pageLifeCycles */ \"./node_modules/create-app-shared/lib/pageLifeCycles.js\");\n\nvar env_1 = __webpack_require__(/*! ./env */ \"./node_modules/create-app-shared/lib/env.js\");\n\nfunction emitLifeCycles() {\n if (env_1.isMiniAppPlatform) {\n router_1.default.current = {\n pathname: window.__pageId,\n visibiltyState: true\n };\n } else {\n // Get history\n var history_2 = history_1.getHistory();\n var pathname = history_2 && history_2.location ? history_2.location.pathname : typeof window !== 'undefined' && window.location.pathname; // Set current router\n\n router_1.default.current = {\n pathname: pathname,\n visibiltyState: true\n }; // Emit app lifecycle\n\n appLifeCycles_1.emit(constants_1.LAUNCH);\n appLifeCycles_1.emit(constants_1.SHOW);\n\n if (history_2 && history_2.listen) {\n // Listen history change\n history_2.listen(function (location) {\n if (location.pathname !== router_1.default.current.pathname) {\n // Flow router info\n router_1.default.prev = __assign({}, router_1.default.current);\n router_1.default.current = {\n pathname: location.pathname,\n visibiltyState: true\n };\n router_1.default.prev.visibiltyState = false;\n pageLifeCycles_1.emit(constants_1.HIDE, router_1.default.prev.pathname);\n pageLifeCycles_1.emit(constants_1.SHOW, router_1.default.current.pathname);\n }\n });\n }\n }\n}\n\nexports.default = emitLifeCycles;\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/enhanceWithRouter.js\":\n/*!*****************************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/enhanceWithRouter.js ***!\n \\*****************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar env_1 = __webpack_require__(/*! ./env */ \"./node_modules/create-app-shared/lib/env.js\");\n\nfunction enhanceWithRouter(_a) {\n var withRouter = _a.withRouter,\n createElement = _a.createElement;\n\n if (env_1.isMiniAppPlatform) {\n withRouter = function (Component) {\n function Wrapper(props) {\n // eslint-disable-next-line\n var history = window.history;\n return createElement(Component, Object.assign({}, props, {\n history: history,\n location: history.location\n }));\n } // eslint-disable-next-line\n\n\n Wrapper.displayName = 'withRouter(' + (Component.displayName || Component.name) + ')';\n Wrapper.WrappedComponent = Component;\n return Wrapper;\n };\n }\n\n return withRouter;\n}\n\nexports.default = enhanceWithRouter;\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/env.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/env.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, {\n enumerable: true,\n get: function get() {\n return m[k];\n }\n });\n} : function (o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n});\n\nvar __exportStar = this && this.__exportStar || function (m, exports) {\n for (var p in m) {\n if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n }\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isMiniAppPlatform = void 0;\nvar universal_env_1 = {\n isWeex: false,\n isWeb: false,\n isKraken: false,\n isNode: false,\n isMiniApp: true,\n isWeChatMiniProgram: false,\n isWeChatMiniprogram: false,\n isByteDanceMicroApp: false,\n isKuaiShouMiniProgram: false,\n isBaiduSmartProgram: false\n};\nexports.isMiniAppPlatform = (universal_env_1.isMiniApp || universal_env_1.isWeChatMiniProgram || universal_env_1.isByteDanceMicroApp || universal_env_1.isBaiduSmartProgram || universal_env_1.isKuaiShouMiniProgram) && !universal_env_1.isWeb;\n\n__exportStar({\n isWeex: false,\n isWeb: false,\n isKraken: false,\n isNode: false,\n isMiniApp: true,\n isWeChatMiniProgram: false,\n isWeChatMiniprogram: false,\n isByteDanceMicroApp: false,\n isKuaiShouMiniProgram: false,\n isBaiduSmartProgram: false\n}, exports);\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/getSearchParams.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/getSearchParams.js ***!\n \\***************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar queryString = __webpack_require__(/*! query-string */ \"./node_modules/query-string/index.js\");\n\nvar history_1 = __webpack_require__(/*! ./history */ \"./node_modules/create-app-shared/lib/history.js\");\n\nfunction default_1() {\n var history = history_1.getHistory();\n\n if (history && history.location && history.location.search) {\n return queryString.parse(history.location.search);\n }\n\n return {};\n}\n\nexports.default = default_1;\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/history.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/history.js ***!\n \\*******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/* WEBPACK VAR INJECTION */(function(process) {\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.history = exports.createHistory = exports.getHistory = void 0;\n\nvar history_1 = __webpack_require__(/*! history */ \"./node_modules/history/esm/history.js\");\n\nvar miniapp_history_1 = __webpack_require__(/*! miniapp-history */ \"./node_modules/miniapp-history/es/index.js\");\n\nvar env_1 = __webpack_require__(/*! ./env */ \"./node_modules/create-app-shared/lib/env.js\"); // eslint-disable-next-line\n\n\nvar history;\nexports.history = history;\n\nfunction createHistory(_a) {\n var routes = _a.routes,\n customHistory = _a.customHistory,\n type = _a.type,\n basename = _a.basename,\n location = _a.location;\n\n if (process.env.__IS_SERVER__) {\n exports.history = history = history_1.createMemoryHistory();\n history.location = location;\n } else if (customHistory) {\n exports.history = history = customHistory;\n } else {\n // Force memory history when env is weex or kraken\n if (env_1.isWeex || env_1.isKraken) {\n type = 'memory';\n }\n\n if (type === 'hash') {\n exports.history = history = history_1.createHashHistory({\n basename: basename\n });\n } else if (type === 'browser') {\n exports.history = history = history_1.createBrowserHistory({\n basename: basename\n });\n } else if (env_1.isMiniAppPlatform) {\n window.history = miniapp_history_1.createMiniAppHistory(routes);\n window.location = window.history.location;\n exports.history = history = window.history;\n } else {\n exports.history = history = history_1.createMemoryHistory();\n }\n }\n\n return history;\n}\n\nexports.createHistory = createHistory;\n\nfunction getHistory() {\n return history;\n}\n\nexports.getHistory = getHistory;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/index.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/index.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.history = void 0;\n\nvar enhanceWithRouter_1 = __webpack_require__(/*! ./enhanceWithRouter */ \"./node_modules/create-app-shared/lib/enhanceWithRouter.js\");\n\nvar appLifeCycles_1 = __webpack_require__(/*! ./appLifeCycles */ \"./node_modules/create-app-shared/lib/appLifeCycles.js\");\n\nvar pageLifeCycles_1 = __webpack_require__(/*! ./pageLifeCycles */ \"./node_modules/create-app-shared/lib/pageLifeCycles.js\");\n\nvar emitLifeCycles_1 = __webpack_require__(/*! ./emitLifeCycles */ \"./node_modules/create-app-shared/lib/emitLifeCycles.js\");\n\nvar createBaseApp_1 = __webpack_require__(/*! ./createBaseApp */ \"./node_modules/create-app-shared/lib/createBaseApp.js\");\n\nvar history_1 = __webpack_require__(/*! ./history */ \"./node_modules/create-app-shared/lib/history.js\");\n\nObject.defineProperty(exports, \"history\", {\n enumerable: true,\n get: function get() {\n return history_1.history;\n }\n});\n\nvar utils_1 = __webpack_require__(/*! ./utils */ \"./node_modules/create-app-shared/lib/utils/index.js\");\n\nvar nativeEventListener_1 = __webpack_require__(/*! ./nativeEventListener */ \"./node_modules/create-app-shared/lib/nativeEventListener.js\");\n\nvar getSearchParams_1 = __webpack_require__(/*! ./getSearchParams */ \"./node_modules/create-app-shared/lib/getSearchParams.js\");\n\nvar collectAppLifeCycle_1 = __webpack_require__(/*! ./collectAppLifeCycle */ \"./node_modules/create-app-shared/lib/collectAppLifeCycle.js\");\n\nfunction createShareAPI(_a, loadRuntimeModules) {\n var withRouter = _a.withRouter,\n createElement = _a.createElement,\n useEffect = _a.useEffect,\n _b = _a.initHistory,\n initHistory = _b === void 0 ? true : _b;\n\n var _c = pageLifeCycles_1.createUsePageLifeCycle({\n useEffect: useEffect\n }),\n usePageShow = _c.usePageShow,\n usePageHide = _c.usePageHide;\n\n return {\n createBaseApp: createBaseApp_1.default({\n loadRuntimeModules: loadRuntimeModules,\n createElement: createElement,\n initHistory: initHistory\n }),\n // history api\n withRouter: enhanceWithRouter_1.default({\n withRouter: withRouter,\n createElement: createElement\n }),\n createHistory: history_1.createHistory,\n getHistory: history_1.getHistory,\n getSearchParams: getSearchParams_1.default,\n // lifeCycle api\n emitLifeCycles: emitLifeCycles_1.default,\n collectAppLifeCycle: collectAppLifeCycle_1.default,\n usePageShow: usePageShow,\n usePageHide: usePageHide,\n withPageLifeCycle: pageLifeCycles_1.withPageLifeCycle,\n addAppLifeCycle: appLifeCycles_1.addAppLifeCycle,\n // utils api\n pathRedirect: utils_1.pathRedirect,\n registerNativeEventListeners: nativeEventListener_1.registerNativeEventListeners,\n addNativeEventListener: nativeEventListener_1.addNativeEventListener,\n removeNativeEventListener: nativeEventListener_1.removeNativeEventListener\n };\n}\n\nexports.default = createShareAPI;\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/nativeEventListener.js\":\n/*!*******************************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/nativeEventListener.js ***!\n \\*******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.removeNativeEventListener = exports.addNativeEventListener = exports.registerNativeEventListeners = void 0; // eslint-disable-next-line\n\nfunction registerNativeEventListeners() {// For rax miniapp runtime babel plugins prev compile\n}\n\nexports.registerNativeEventListeners = registerNativeEventListeners;\n\nfunction addNativeEventListener(eventName, callback) {\n document.addEventListener(eventName, callback);\n}\n\nexports.addNativeEventListener = addNativeEventListener;\n\nfunction removeNativeEventListener(evetName, callback) {\n document.removeEventListener(evetName, callback);\n}\n\nexports.removeNativeEventListener = removeNativeEventListener;\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/pageLifeCycles.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/pageLifeCycles.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createUsePageLifeCycle = exports.withPageLifeCycle = exports.emit = void 0;\n\nvar env_1 = __webpack_require__(/*! ./env */ \"./node_modules/create-app-shared/lib/env.js\");\n\nvar constants_1 = __webpack_require__(/*! ./constants */ \"./node_modules/create-app-shared/lib/constants.js\");\n\nvar router_1 = __webpack_require__(/*! ./router */ \"./node_modules/create-app-shared/lib/router.js\"); // visibleListeners => { [pathname]: { show: [], hide: [] } }\n\n\nvar visibleListeners = {};\n\nfunction addPageLifeCycle(cycle, callback) {\n var _a;\n\n if (env_1.isMiniAppPlatform) {\n document.addEventListener(constants_1.MINIAPP_PAGE_LIFECYCLE[cycle], callback);\n } else {\n var pathname = router_1.default.current.pathname;\n\n if (!visibleListeners[pathname]) {\n visibleListeners[pathname] = (_a = {}, _a[constants_1.SHOW] = [], _a[constants_1.HIDE] = [], _a);\n }\n\n visibleListeners[pathname][cycle].push(callback);\n }\n}\n\nfunction emit(cycle, pathname) {\n var _a;\n\n var args = [];\n\n for (var _i = 2; _i < arguments.length; _i++) {\n args[_i - 2] = arguments[_i];\n } // Ensure queue exists\n\n\n if (visibleListeners[pathname] && visibleListeners[pathname][cycle]) {\n for (var i = 0, l = visibleListeners[pathname][cycle].length; i < l; i++) {\n (_a = visibleListeners[pathname][cycle])[i].apply(_a, args);\n }\n }\n}\n\nexports.emit = emit;\n\nfunction createPageLifeCycle(useEffect) {\n return function (cycle, callback) {\n useEffect(function () {\n // When component did mount, it will trigger usePageShow callback\n if (cycle === constants_1.SHOW) {\n callback();\n }\n\n var pathname = router_1.default.current.pathname;\n addPageLifeCycle(cycle, callback);\n return function () {\n if (visibleListeners[pathname]) {\n var index = visibleListeners[pathname][cycle].indexOf(callback);\n\n if (index > -1) {\n visibleListeners[pathname][cycle].splice(index, 1);\n }\n }\n }; // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n };\n}\n\nfunction withPageLifeCycle(Component) {\n var Wrapper = function (_super) {\n __extends(Wrapper, _super);\n\n function Wrapper() {\n var args = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n\n var _this = _super.apply(this, args) || this;\n\n if (_this.onShow) {\n if (!env_1.isMiniAppPlatform) {\n // In MiniApp platform show event will trigger after addPageLifeCycle, so it needn't be execute in constructor\n _this.onShow();\n }\n\n addPageLifeCycle(constants_1.SHOW, _this.onShow.bind(_this));\n }\n\n if (_this.onHide) {\n addPageLifeCycle(constants_1.HIDE, _this.onHide.bind(_this));\n } // Keep the path name corresponding to current page component\n\n\n _this.pathname = router_1.default.current.pathname;\n return _this;\n }\n\n Wrapper.prototype.componentWillUnmount = function () {\n var _a; // eslint-disable-next-line no-unused-expressions\n\n\n (_a = _super.prototype.componentWillUnmount) === null || _a === void 0 ? void 0 : _a.call(this);\n visibleListeners[this.pathname] = null;\n };\n\n return Wrapper;\n }(Component);\n\n Wrapper.displayName = \"withPageLifeCycle(\" + (Component.displayName || Component.name) + \")\";\n return Wrapper;\n}\n\nexports.withPageLifeCycle = withPageLifeCycle;\n\nfunction createUsePageLifeCycle(_a) {\n var useEffect = _a.useEffect;\n return {\n usePageShow: function usePageShow(callback) {\n createPageLifeCycle(useEffect)(constants_1.SHOW, callback);\n },\n usePageHide: function usePageHide(callback) {\n createPageLifeCycle(useEffect)(constants_1.HIDE, callback);\n }\n };\n}\n\nexports.createUsePageLifeCycle = createUsePageLifeCycle;\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/router.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/router.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar env_1 = __webpack_require__(/*! ./env */ \"./node_modules/create-app-shared/lib/env.js\");\n\nvar current = {\n pathname: '/',\n visibiltyState: true\n};\nvar router = {\n prev: null,\n current: current\n};\nObject.defineProperty(router, 'current', {\n get: function get() {\n if (!env_1.isMiniAppPlatform) {\n return current;\n }\n\n return Object.assign(current, {\n pathname: window.__pageId\n });\n },\n set: function set(value) {\n Object.assign(current, value);\n }\n});\nexports.default = router;\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/runtimeModule.js\":\n/*!*************************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/runtimeModule.js ***!\n \\*************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar history_1 = __webpack_require__(/*! ./history */ \"./node_modules/create-app-shared/lib/history.js\");\n\nvar getSearchParams_1 = __webpack_require__(/*! ./getSearchParams */ \"./node_modules/create-app-shared/lib/getSearchParams.js\");\n\nvar RuntimeModule = function () {\n function RuntimeModule(appConfig, buildConfig, context) {\n var _this = this;\n\n this.setRenderRouter = function (renderRouter) {\n _this.renderRouter = renderRouter;\n };\n\n this.wrapperRouterRender = function (wrapper) {\n // pass origin router render for custom requirement\n _this.renderRouter = wrapper(_this.renderRouter);\n };\n\n this.addProvider = function (Provider) {\n _this.AppProvider.push(Provider);\n };\n\n this.addDOMRender = function (render) {\n _this.modifyDOMRender = render;\n };\n\n this.modifyRoutes = function (modifyFn) {\n _this.modifyRoutesRegistration.push(modifyFn);\n };\n\n this.modifyRoutesComponent = function (modify) {\n _this.routesComponent = modify(_this.routesComponent);\n };\n\n this.wrapperRouteComponent = function (wrapperRoute) {\n _this.wrapperRouteRegistration.push(wrapperRoute);\n };\n\n this.wrapperRoutes = function (routes) {\n return routes.map(function (item) {\n if (item.children) {\n item.children = _this.wrapperRoutes(item.children);\n } else if (item.component) {\n item.routeWrappers = _this.wrapperRouteRegistration;\n }\n\n return item;\n });\n };\n\n this.getAppRouter = function () {\n var routes = _this.wrapperRoutes(_this.modifyRoutesRegistration.reduce(function (acc, curr) {\n return curr(acc);\n }, []));\n\n return _this.renderRouter(routes, _this.routesComponent);\n };\n\n this.renderRouter = function () {\n return function () {\n return context.createElement('div', null, 'No route');\n };\n };\n\n this.routesComponent = false;\n this.AppProvider = [];\n this.appConfig = appConfig;\n this.buildConfig = buildConfig;\n this.context = context;\n this.modifyDOMRender = null;\n this.modifyRoutesRegistration = [];\n this.wrapperRouteRegistration = [];\n }\n\n RuntimeModule.prototype.loadModule = function (module) {\n var runtimeAPI = {\n setRenderRouter: this.setRenderRouter,\n addProvider: this.addProvider,\n addDOMRender: this.addDOMRender,\n modifyRoutes: this.modifyRoutes,\n wrapperRouteComponent: this.wrapperRouteComponent,\n wrapperRouterRender: this.wrapperRouterRender,\n modifyRoutesComponent: this.modifyRoutesComponent,\n createHistory: history_1.createHistory,\n getSearchParams: getSearchParams_1.default\n };\n if (module) (module.default || module)(__assign(__assign({}, runtimeAPI), {\n appConfig: this.appConfig,\n buildConfig: this.buildConfig,\n context: this.context\n }));\n };\n\n RuntimeModule.prototype.composeAppProvider = function () {\n var _this = this;\n\n if (!this.AppProvider.length) return null;\n return this.AppProvider.reduce(function (ProviderComponent, CurrentProvider) {\n return function (_a) {\n var children = _a.children,\n rest = __rest(_a, [\"children\"]);\n\n var element = CurrentProvider ? _this.context.createElement(CurrentProvider, __assign({}, rest), children) : _this.context.createElement(children);\n return _this.context.createElement(ProviderComponent, __assign({}, rest), element);\n };\n });\n };\n\n return RuntimeModule;\n}();\n\nexports.default = RuntimeModule;\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/utils/index.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/utils/index.js ***!\n \\***********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.pathRedirect = exports.isFunction = void 0;\n\nvar type_1 = __webpack_require__(/*! ./type */ \"./node_modules/create-app-shared/lib/utils/type.js\");\n\nObject.defineProperty(exports, \"isFunction\", {\n enumerable: true,\n get: function get() {\n return type_1.isFunction;\n }\n});\n\nvar pathRedirect_1 = __webpack_require__(/*! ./pathRedirect */ \"./node_modules/create-app-shared/lib/utils/pathRedirect.js\");\n\nexports.pathRedirect = pathRedirect_1.default;\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/utils/pathRedirect.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/utils/pathRedirect.js ***!\n \\******************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/* eslint no-undef:0 */\n// In a Single-Page Application, sometimes we need to jump to a specific route.\n// It is very simple in the Web application, url like #/xxx can jump to the corresponding page.\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n}); // Things seem to be very complicated in Weex, because using `MemoryHistory`,\n// which is used as a reference implementation and may also be used in non-DOM environments.\n// We cannot jump directly through url.\n\nvar universal_env_1 = {\n isWeex: false,\n isWeb: false,\n isKraken: false,\n isNode: false,\n isMiniApp: true,\n isWeChatMiniProgram: false,\n isWeChatMiniprogram: false,\n isByteDanceMicroApp: false,\n isKuaiShouMiniProgram: false,\n isBaiduSmartProgram: false\n}; // We want to control applications on different platforms to jump to specific pages through unified parameters.\n// Like https://xxx.com?_path=/page1, use `_path` to jump to the specific route.\n\nvar TARGET_PATH_REG = /[?&]_path=([^&#]+)/i;\n\nfunction pathRedirect(history, routes) {\n var targetPath = '';\n var targetQuery = null; // In Web, use location.search first\n\n if (universal_env_1.isWeb && TARGET_PATH_REG.test(window.location.search)) {\n targetQuery = window.location.search.match(TARGET_PATH_REG);\n } // In Weex, use location.href first. Support by rax-weex framework\n\n\n if (universal_env_1.isWeex && TARGET_PATH_REG.test(window.location.href)) {\n targetQuery = window.location.href.match(TARGET_PATH_REG);\n } // If there is no `_path` in url search, try history.location.\n\n\n if (!targetQuery && TARGET_PATH_REG.test(history.location.search)) {\n targetQuery = history.location.search.match(TARGET_PATH_REG);\n }\n\n var isConfirmed = false;\n targetPath = targetQuery ? targetQuery[1] : '';\n\n for (var i = 0, l = routes.length; i < l; i++) {\n if (targetPath === routes[i].path) {\n isConfirmed = true;\n break;\n }\n }\n\n if (targetPath && !isConfirmed) {\n console.warn('Warning: url query `_path` should be an exist path in app.json, see: https://rax.js.org/docs/guide/routes ');\n return false;\n } // If `targetPath` exists, jump to the specific route.\n\n\n if (targetPath) {\n history.replace(targetPath + history.location.search);\n }\n}\n\nexports.default = pathRedirect;\n\n/***/ }),\n\n/***/ \"./node_modules/create-app-shared/lib/utils/type.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/create-app-shared/lib/utils/type.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isFunction = void 0;\n\nvar isFunction = function (target) {\n return typeof target === 'function';\n};\n\nexports.isFunction = isFunction;\n\n/***/ }),\n\n/***/ \"./node_modules/create-use-router/lib/index.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/create-use-router/lib/index.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createWithRouter = exports.createUseRouter = void 0;\n\nvar pathToRegexpModule = __webpack_require__(/*! path-to-regexp */ \"./node_modules/path-to-regexp/dist.es2015/index.js\");\n\nvar cache = {};\nvar _initialized = false;\nvar _routerConfig = null;\nvar router = {\n history: null,\n handles: [],\n errorHandler: function errorHandler() {},\n addHandle: function addHandle(handle) {\n return router.handles.push(handle);\n },\n removeHandle: function removeHandle(handleId) {\n router.handles[handleId - 1] = null;\n },\n triggerHandles: function triggerHandles(component) {\n router.handles.forEach(function (handle) {\n if (handle) {\n handle(component);\n }\n });\n },\n match: function match(fullpath) {\n if (fullpath == null) return;\n router.fullpath = fullpath;\n var parent = router.root; // @ts-ignore\n\n var matched = matchRoute(parent, parent.path, fullpath); // eslint-disable-next-line\n\n function next(parent) {\n var current = matched.next();\n\n if (current.done) {\n var error = new Error(\"No match for \" + fullpath); // @ts-ignore\n\n return router.errorHandler(error, router.history.location);\n }\n\n var component = current.$.route.component;\n\n if (typeof component === 'function') {\n component = component(current.$.params, router.history.location);\n }\n\n if (component instanceof Promise) {\n // Lazy loading component by import('./Foo')\n // eslint-disable-next-line\n return component.then(function (component) {\n // Check current fullpath avoid router has changed before lazy loading complete\n // @ts-ignore\n if (fullpath === router.fullpath) {\n router.triggerHandles(component);\n }\n });\n } else if (component != null) {\n router.triggerHandles(component);\n return component;\n } else {\n return next(parent);\n }\n }\n\n return next(parent);\n }\n};\n\nfunction decodeParam(val) {\n try {\n return decodeURIComponent(val);\n } catch (err) {\n return val;\n }\n}\n\nfunction matchLocation(_a) {\n var pathname = _a.pathname;\n router.match(pathname);\n}\n\nfunction matchPath(route, pathname, parentParams) {\n // eslint-disable-next-line\n var path = route.path,\n routes = route.routes,\n _a = route.exact,\n end = _a === void 0 ? true : _a,\n _b = route.strict,\n strict = _b === void 0 ? false : _b,\n _c = route.sensitive,\n sensitive = _c === void 0 ? false : _c; // If not has path or has routes that should do not exact match\n\n if (path == null || routes) {\n end = false;\n } // Default path is empty\n\n\n path = path || '';\n var regexpCacheKey = path + \"|\" + end + \"|\" + strict + \"|\" + sensitive;\n var keysCacheKey = regexpCacheKey + \"|\";\n var regexp = cache[regexpCacheKey];\n var keys = cache[keysCacheKey] || [];\n\n if (!regexp) {\n regexp = pathToRegexpModule.pathToRegexp(path, keys, {\n end: end,\n strict: strict,\n sensitive: sensitive\n });\n cache[regexpCacheKey] = regexp;\n cache[keysCacheKey] = keys;\n }\n\n var result = regexp.exec(pathname);\n\n if (!result) {\n return null;\n }\n\n var url = result[0];\n\n var params = __assign(__assign({}, parentParams), {\n history: router.history,\n location: router.history.location\n });\n\n for (var i = 1; i < result.length; i++) {\n var key = keys[i - 1];\n var prop = key.name;\n var value = result[i];\n\n if (value !== undefined || !Object.prototype.hasOwnProperty.call(params, prop)) {\n if (key.repeat) {\n params[prop] = value ? value.split(key.delimiter).map(decodeParam) : [];\n } else {\n params[prop] = value ? decodeParam(value) : value;\n }\n }\n }\n\n return {\n path: !end && url.charAt(url.length - 1) === '/' ? url.substr(1) : url,\n params: params\n };\n}\n\nfunction matchRoute(route, baseUrl, pathname, parentParams) {\n var matched;\n var childMatches;\n var childIndex = 0;\n return {\n next: function next() {\n if (!matched) {\n matched = matchPath(route, pathname, parentParams);\n\n if (matched) {\n return {\n done: false,\n $: {\n route: route,\n baseUrl: baseUrl,\n path: matched.path,\n params: matched.params\n }\n };\n }\n }\n\n if (matched && route.routes) {\n while (childIndex < route.routes.length) {\n if (!childMatches) {\n var childRoute = route.routes[childIndex];\n childRoute.parent = route;\n childMatches = matchRoute(childRoute, baseUrl + matched.path, pathname.substr(matched.path.length), matched.params);\n }\n\n var childMatch = childMatches.next();\n\n if (!childMatch.done) {\n return {\n done: false,\n $: childMatch.$\n };\n }\n\n childMatches = null;\n childIndex++;\n }\n }\n\n return {\n done: true\n };\n }\n };\n}\n\nfunction getInitialComponent(routerConfig) {\n var InitialComponent = [];\n\n if (_routerConfig === null) {\n if (typeof routerConfig === 'function') {\n routerConfig = routerConfig();\n }\n\n if (true) {\n if (!routerConfig) {\n throw new Error('Error: useRouter should have routerConfig.');\n }\n\n if (!routerConfig.history || !routerConfig.routes) {\n throw new Error('Error: routerConfig should contain history and routes.');\n }\n }\n\n _routerConfig = routerConfig;\n }\n\n if (_routerConfig.InitialComponent) {\n InitialComponent = _routerConfig.InitialComponent;\n }\n\n router.history = _routerConfig.history;\n return InitialComponent;\n}\n\nfunction createUseRouter(api) {\n var useState = api.useState,\n useLayoutEffect = api.useLayoutEffect;\n return function (routerConfig) {\n var _a = useState(getInitialComponent(routerConfig)),\n component = _a[0],\n setComponent = _a[1];\n\n useLayoutEffect(function () {\n if (_initialized) throw new Error('Error: useRouter can only be called once.');\n _initialized = true;\n var history = _routerConfig.history;\n var routes = _routerConfig.routes; // @ts-ignore\n\n router.root = Array.isArray(routes) ? {\n routes: routes\n } : routes; // eslint-disable-next-line\n\n var handleId = router.addHandle(function (component) {\n setComponent(component);\n }); // Init path match\n\n if (!_routerConfig.InitialComponent) {\n matchLocation(history.location);\n }\n\n var unlisten = history.listen(function (location) {\n matchLocation(location);\n });\n return function () {\n router.removeHandle(handleId);\n unlisten();\n };\n }, []);\n return {\n component: component\n };\n };\n}\n\nexports.createUseRouter = createUseRouter;\n\nfunction createWithRouter(api) {\n var createElement = api.createElement;\n return function (Component) {\n function Wrapper(props) {\n var history = router.history;\n return createElement(Component, __assign(__assign({}, props), {\n history: history,\n location: history.location\n }));\n }\n\n Wrapper.displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n Wrapper.WrappedComponent = Component;\n return Wrapper;\n };\n}\n\nexports.createWithRouter = createWithRouter;\n\n/***/ }),\n\n/***/ \"./node_modules/decode-uri-component/index.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/decode-uri-component/index.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n try {\n // Try to decode the entire string first\n return decodeURIComponent(components.join(''));\n } catch (err) {// Do nothing\n }\n\n if (components.length === 1) {\n return components;\n }\n\n split = split || 1; // Split the array in 2 parts\n\n var left = components.slice(0, split);\n var right = components.slice(split);\n return Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n try {\n return decodeURIComponent(input);\n } catch (err) {\n var tokens = input.match(singleMatcher);\n\n for (var i = 1; i < tokens.length; i++) {\n input = decodeComponents(tokens, i).join('');\n tokens = input.match(singleMatcher);\n }\n\n return input;\n }\n}\n\nfunction customDecodeURIComponent(input) {\n // Keep track of all the replacements and prefill the map with the `BOM`\n var replaceMap = {\n '%FE%FF': \"\\uFFFD\\uFFFD\",\n '%FF%FE': \"\\uFFFD\\uFFFD\"\n };\n var match = multiMatcher.exec(input);\n\n while (match) {\n try {\n // Decode as big chunks as possible\n replaceMap[match[0]] = decodeURIComponent(match[0]);\n } catch (err) {\n var result = decode(match[0]);\n\n if (result !== match[0]) {\n replaceMap[match[0]] = result;\n }\n }\n\n match = multiMatcher.exec(input);\n } // Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\n\n replaceMap['%C2'] = \"\\uFFFD\";\n var entries = Object.keys(replaceMap);\n\n for (var i = 0; i < entries.length; i++) {\n // Replace all decoded components\n var key = entries[i];\n input = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n }\n\n return input;\n}\n\nmodule.exports = function (encodedURI) {\n if (typeof encodedURI !== 'string') {\n throw new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n }\n\n try {\n encodedURI = encodedURI.replace(/\\+/g, ' '); // Try the built in decoder first\n\n return decodeURIComponent(encodedURI);\n } catch (err) {\n // Fallback to a more advanced decoder\n return customDecodeURIComponent(encodedURI);\n }\n};\n\n/***/ }),\n\n/***/ \"./node_modules/driver-miniapp/lib/index.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/driver-miniapp/lib/index.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n/**\n * Driver for Miniapp\n **/\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction cached(fn) {\n var cache = Object.create(null);\n return function (str) {\n return cache[str] || (cache[str] = fn(str));\n };\n} // opacity -> opa\n// fontWeight -> ntw\n// lineHeight|lineClamp -> ne[ch]\n// flex|flexGrow|flexPositive|flexShrink|flexNegative|boxFlex|boxFlexGroup|zIndex -> ex(?:s|g|n|p|$)\n// order -> ^ord\n// zoom -> zoo\n// gridArea|gridRow|gridRowEnd|gridRowSpan|gridRowStart|gridColumn|gridColumnEnd|gridColumnSpan|gridColumnStart -> grid\n// columnCount -> mnc\n// tabSize -> bs\n// orphans -> orp\n// windows -> ows\n// animationIterationCount -> onit\n// borderImageOutset|borderImageSlice|borderImageWidth -> erim\n\n\nvar NON_DIMENSIONAL_REG = /opa|ntw|ne[ch]|ex(?:s|g|n|p|$)|^ord|zoo|grid|orp|ows|mnc|^columns$|bs|erim|onit/i;\nvar EVENT_PREFIX_REG = /^on[A-Z]/;\nvar CLASS_NAME = 'className';\nvar CLASS = 'class';\nvar STYLE = 'style';\nvar CHILDREN = 'children';\nvar TEXT_CONTENT_ATTR = 'textContent';\nvar CREATE_COMMENT = 'createComment';\nvar CREATE_TEXT_NODE = 'createTextNode';\nvar SET_ATTRIBUTE = 'setAttribute';\nvar REMOVE_ATTRIBUTE = 'removeAttribute';\nvar EMPTY = '';\nvar isDimensionalProp = cached(function (prop) {\n return !NON_DIMENSIONAL_REG.test(prop);\n});\nvar isEventProp = cached(function (prop) {\n return EVENT_PREFIX_REG.test(prop);\n});\n\nfunction createBody() {\n return document.body;\n}\n\nfunction createEmpty() {\n return document[CREATE_COMMENT](EMPTY);\n}\n\nfunction createText(text) {\n return document[CREATE_TEXT_NODE](text);\n}\n\nfunction updateText(node, text) {\n node[TEXT_CONTENT_ATTR] = text;\n}\n/**\n* @param {string} type node type\n* @param {object} props element properties\n*/\n\n\nfunction createElement(type, props) {\n var style;\n var attrs = {};\n var events = [];\n\n for (var prop in props) {\n var value = props[prop];\n if (prop === CHILDREN) continue;\n\n if (value !== null) {\n if (prop === STYLE) {\n style = value;\n } else if (isEventProp(prop)) {\n events.push({\n name: prop.slice(2).toLowerCase(),\n handler: value\n });\n } else {\n if (prop === CLASS_NAME) {\n prop = CLASS;\n }\n\n attrs[prop] = value;\n }\n }\n } // @ts-ignore\n\n\n var node = document._createElement({\n tagName: type,\n document: document,\n attrs: attrs\n });\n\n if (style) {\n setStyle(node, style);\n }\n\n events.forEach(function (_a) {\n var name = _a.name,\n handler = _a.handler;\n node.addEventListener(name, handler);\n });\n return node;\n}\n\nfunction appendChild(node, parent) {\n return parent.appendChild(node);\n}\n\nfunction removeChild(node, parent) {\n parent = parent || node.parentNode; // Maybe has been removed when remove child\n\n if (parent) {\n parent.removeChild(node);\n }\n}\n\nfunction replaceChild(newChild, oldChild, parent) {\n parent = parent || oldChild.parentNode;\n parent.replaceChild(newChild, oldChild);\n}\n\nfunction insertAfter(node, after, parent) {\n parent = parent || after.parentNode;\n var nextSibling = after.nextSibling;\n\n if (nextSibling) {\n // Performance improve when node has been existed before nextSibling\n if (nextSibling !== node) {\n insertBefore(node, nextSibling, parent);\n }\n } else {\n appendChild(node, parent);\n }\n}\n\nfunction insertBefore(node, before, parent) {\n parent = parent || before.parentNode;\n parent.insertBefore(node, before);\n}\n\nfunction addEventListener(node, eventName, eventHandler) {\n return node.addEventListener(eventName, eventHandler);\n}\n\nfunction removeEventListener(node, eventName, eventHandler) {\n return node.removeEventListener(eventName, eventHandler);\n}\n\nfunction removeAttribute(node, propKey) {\n if (propKey === CLASS_NAME) propKey = CLASS;\n\n if (propKey in node) {\n node[propKey] = null;\n }\n\n node[REMOVE_ATTRIBUTE](propKey);\n}\n\nfunction setAttribute(node, propKey, propValue) {\n if (propKey === CLASS_NAME) propKey = CLASS;\n\n if (propKey in node) {\n node[propKey] = propValue;\n } else {\n node[SET_ATTRIBUTE](propKey, propValue);\n }\n}\n/**\n* @param {object} node target node\n* @param {object} style target node style value\n*/\n\n\nfunction setStyle(node, style) {\n for (var prop in style) {\n var value = style[prop];\n var convertedValue = void 0;\n\n if (typeof value === 'number' && isDimensionalProp(prop)) {\n convertedValue = value + 'rpx';\n } else {\n convertedValue = value;\n } // Support CSS custom properties (variables) like { --main-color: \"black\" }\n\n\n if (prop[0] === '-' && prop[1] === '-') {\n // reference: https://developer.mozilla.org/en-US/docs/Web/API/CSSStyleDeclaration/setProperty.\n // style.setProperty do not support Camel-Case style properties.\n node.style.setProperty(prop, convertedValue);\n } else {\n node.style[prop] = convertedValue;\n }\n }\n}\n\nfunction beforeRender() {}\n\nfunction afterRender() {}\n/**\n* Remove all children from node.\n* @NOTE: Optimization at web.\n*/\n\n\nfunction removeChildren(node) {\n node.textContent = EMPTY;\n}\n\nexports.default = {\n createBody: createBody,\n createEmpty: createEmpty,\n createText: createText,\n updateText: updateText,\n createElement: createElement,\n appendChild: appendChild,\n removeChild: removeChild,\n replaceChild: replaceChild,\n insertAfter: insertAfter,\n insertBefore: insertBefore,\n addEventListener: addEventListener,\n removeEventListener: removeEventListener,\n removeAttribute: removeAttribute,\n setAttribute: setAttribute,\n setStyle: setStyle,\n beforeRender: beforeRender,\n afterRender: afterRender,\n removeChildren: removeChildren\n};\n\n/***/ }),\n\n/***/ \"./node_modules/driver-universal/es/index.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/driver-universal/es/index.js ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar isKuaiShouMiniProgram = false;\nvar isBaiduSmartProgram = false;\nvar isByteDanceMicroApp = false;\nvar isWeChatMiniProgram = false;\nvar isMiniApp = true;\nvar isKraken = false;\nvar isWeb = false;\nvar isWeex = false;\n\nvar currentDriver = __webpack_require__(/*! ./miniapp */ \"./node_modules/driver-universal/es/miniapp.js\")[\"default\"];\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (currentDriver);\n\n/***/ }),\n\n/***/ \"./node_modules/driver-universal/es/miniapp.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/driver-universal/es/miniapp.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var driver_miniapp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! driver-miniapp */ \"./node_modules/driver-miniapp/lib/index.js\");\n/* harmony import */ var driver_miniapp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(driver_miniapp__WEBPACK_IMPORTED_MODULE_0__);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (driver_miniapp__WEBPACK_IMPORTED_MODULE_0___default.a);\n\n/***/ }),\n\n/***/ \"./node_modules/filter-obj/index.js\":\n/*!******************************************!*\\\n !*** ./node_modules/filter-obj/index.js ***!\n \\******************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (obj, predicate) {\n var ret = {};\n var keys = Object.keys(obj);\n var isArr = Array.isArray(predicate);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var val = obj[key];\n\n if (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n ret[key] = val;\n }\n }\n\n return ret;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/history/esm/history.js\":\n/*!*********************************************!*\\\n !*** ./node_modules/history/esm/history.js ***!\n \\*********************************************/\n/*! exports provided: createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createBrowserHistory\", function() { return createBrowserHistory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createHashHistory\", function() { return createHashHistory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createMemoryHistory\", function() { return createMemoryHistory; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createLocation\", function() { return createLocation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"locationsAreEqual\", function() { return locationsAreEqual; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parsePath\", function() { return parsePath; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"createPath\", function() { return createPath; });\n/* harmony import */ var _babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/helpers/esm/extends */ \"./node_modules/@babel/runtime/helpers/esm/extends.js\");\n/* harmony import */ var resolve_pathname__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! resolve-pathname */ \"./node_modules/resolve-pathname/esm/resolve-pathname.js\");\n/* harmony import */ var value_equal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! value-equal */ \"./node_modules/value-equal/esm/value-equal.js\");\n/* harmony import */ var tiny_warning__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tiny-warning */ \"./node_modules/tiny-warning/dist/tiny-warning.esm.js\");\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tiny-invariant */ \"./node_modules/tiny-invariant/dist/tiny-invariant.esm.js\");\n\n\n\n\n\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\n\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\n\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\n\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\n\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\n\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\n\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = Object(resolve_pathname__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\n\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && Object(value_equal__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(prompt == null, 'A history supports only one prompt at a time') : undefined;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : undefined;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? true ? Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(false, 'Browser history needs a DOM') : undefined : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : undefined;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: function (path, state) {\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : undefined;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : undefined;\n window.location.href = href;\n }\n });\n },\n replace: function (path, state) {\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : undefined;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : undefined;\n window.location.replace(href);\n }\n });\n },\n go: go,\n goBack: function () {\n go(-1);\n },\n goForward: function () {\n go(1);\n },\n block: block,\n listen: function (listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function (path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function (path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? true ? Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(false, 'Hash history needs a DOM') : undefined : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : undefined;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function go(n) {\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : undefined;\n globalHistory.go(n);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: function (location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n },\n push: function (path, state) {\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(state === undefined, 'Hash history cannot push state; it is ignored') : undefined;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : undefined;\n setState();\n }\n });\n },\n replace: function (path, state) {\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(state === undefined, 'Hash history cannot replace state; it is ignored') : undefined;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n },\n go: go,\n goBack: function () {\n go(-1);\n },\n goForward: function () {\n go(1);\n },\n block: block,\n listen: function (listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n Object(_babel_runtime_helpers_esm_extends__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createPath,\n push: function (path, state) {\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : undefined;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n },\n replace: function (path, state) {\n true ? Object(tiny_warning__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : undefined;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n },\n go: go,\n goBack: function () {\n go(-1);\n },\n goForward: function () {\n go(1);\n },\n canGo: function (n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n },\n block: function (prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n },\n listen: function (listener) {\n return transitionManager.appendListener(listener);\n }\n };\n return history;\n}\n\n\n\n/***/ }),\n\n/***/ \"./node_modules/miniapp-history/es/History.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/miniapp-history/es/History.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _router = _interopRequireWildcard(__webpack_require__(/*! ./router */ \"./node_modules/miniapp-history/es/router.js\"));\n\nvar _Location = _interopRequireDefault(__webpack_require__(/*! ./Location */ \"./node_modules/miniapp-history/es/Location.js\"));\n\nvar _listeners = __webpack_require__(/*! ./listeners */ \"./node_modules/miniapp-history/es/listeners.js\");\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _getRequireWildcardCache() {\n if (typeof WeakMap !== \"function\") return null;\n var cache = new WeakMap();\n\n _getRequireWildcardCache = function () {\n return cache;\n };\n\n return cache;\n}\n\nfunction _interopRequireWildcard(obj) {\n if (obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache();\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\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 return Constructor;\n}\n\nvar MiniAppHistory = /*#__PURE__*/function () {\n function MiniAppHistory(routes) {\n this.location = new _Location.default();\n (0, _router.__updateRouterMap)(routes); // Apply actions for history.\n\n Object.assign(this, (0, _router.default)(this.location));\n }\n\n var _proto = MiniAppHistory.prototype;\n\n _proto.listen = function (callback) {\n var listeners = (0, _listeners.addListener)(this.location._pageId, callback);\n return function () {\n var index = -1;\n\n for (var idx in listeners) {\n if (listeners[idx] === callback) {\n index = idx;\n break;\n }\n }\n\n if (index > -1) listeners.splice(index, 1);\n };\n };\n\n _createClass(MiniAppHistory, [{\n key: \"length\",\n get: function () {\n // eslint-disable-next-line no-undef\n return getCurrentPages().length;\n }\n }]);\n\n return MiniAppHistory;\n}();\n\nexports.default = MiniAppHistory;\n\n/***/ }),\n\n/***/ \"./node_modules/miniapp-history/es/Location.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/miniapp-history/es/Location.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\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 return Constructor;\n}\n\nvar Location = /*#__PURE__*/function () {\n function Location() {\n this._currentPageOptions = {};\n this.hash = '';\n }\n\n var _proto = Location.prototype;\n\n _proto.__updatePageOption = function (pageOptions) {\n this._currentPageOptions = pageOptions;\n };\n\n _proto.__updatePageId = function (pageId) {\n this._pageId = pageId;\n };\n\n _createClass(Location, [{\n key: \"href\",\n get: function () {\n return this.pathname + this.search;\n }\n }, {\n key: \"search\",\n get: function () {\n var _this = this;\n\n var search = '';\n Object.keys(this._currentPageOptions).forEach(function (key, index) {\n var query = key + \"=\" + _this._currentPageOptions[key];\n search += index === 0 ? '?' : '&';\n search += query;\n });\n return search;\n }\n }, {\n key: \"pathname\",\n get: function () {\n // eslint-disable-next-line no-undef\n var pages = getCurrentPages();\n if (pages.length === 0) return '';\n var currentPage = pages[pages.length - 1];\n return addLeadingSlash(currentPage.route);\n }\n }]);\n\n return Location;\n}();\n\nexports.default = Location;\n\nfunction addLeadingSlash(str) {\n return str[0] === '/' ? str : '/' + str;\n}\n\n/***/ }),\n\n/***/ \"./node_modules/miniapp-history/es/constants.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/miniapp-history/es/constants.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.REPLACE = exports.POP = exports.PUSH = void 0;\nvar PUSH = 'PUSH';\nexports.PUSH = PUSH;\nvar POP = 'POP';\nexports.POP = POP;\nvar REPLACE = 'REPLACE';\nexports.REPLACE = REPLACE;\n\n/***/ }),\n\n/***/ \"./node_modules/miniapp-history/es/index.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/miniapp-history/es/index.js ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.createMiniAppHistory = createMiniAppHistory;\n\nvar _History = _interopRequireDefault(__webpack_require__(/*! ./History */ \"./node_modules/miniapp-history/es/History.js\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar history;\n\nfunction createMiniAppHistory(routes) {\n if (history) return history;\n return history = new _History.default(routes);\n}\n\n/***/ }),\n\n/***/ \"./node_modules/miniapp-history/es/listeners.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/miniapp-history/es/listeners.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.addListener = addListener;\nexports.fireListeners = fireListeners; // Page id -> action callbacks\n\nvar listeners = {};\n/**\n * Add history listener\n * @param {string} pageId page unique id\n * @param {function} callback history operate action callback\n * @return {Array} target page listener list\n */\n\nfunction addListener(pageId, callback) {\n if (!listeners[pageId]) listeners[pageId] = [];\n listeners[pageId].push(callback);\n return listeners[pageId];\n}\n/**\n * Fire history listeners\n * @param {object} location router location object\n * @param {string} action history operate action\n */\n\n\nfunction fireListeners(location, action) {\n var pageId = location._pageId;\n\n if (listeners[pageId]) {\n for (var index in listeners[pageId]) {\n listeners[pageId][index]({\n location: location,\n action: action\n });\n }\n }\n}\n\n/***/ }),\n\n/***/ \"./node_modules/miniapp-history/es/router.js\":\n/*!***************************************************!*\\\n !*** ./node_modules/miniapp-history/es/router.js ***!\n \\***************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.__updateRouterMap = __updateRouterMap;\nexports.default = generateActions;\nvar _universalEnv = {\n isWeex: false,\n isWeb: false,\n isKraken: false,\n isNode: false,\n isMiniApp: true,\n isWeChatMiniProgram: false,\n isWeChatMiniprogram: false,\n isByteDanceMicroApp: false,\n isKuaiShouMiniProgram: false,\n isBaiduSmartProgram: false\n};\n\nvar _listeners = __webpack_require__(/*! ./listeners */ \"./node_modules/miniapp-history/es/listeners.js\");\n\nvar _constants = __webpack_require__(/*! ./constants */ \"./node_modules/miniapp-history/es/constants.js\");\n\nvar __routerMap = {};\nvar apiCore = my;\n\nfunction redirectTo(location, options) {\n options.success = function () {\n (0, _listeners.fireListeners)(location, _constants.REPLACE);\n };\n\n apiCore.redirectTo(options);\n}\n\nfunction navigateTo(location, options) {\n options.success = function () {\n (0, _listeners.fireListeners)(location, _constants.PUSH);\n };\n\n apiCore.navigateTo(options);\n}\n\nfunction navigateBack(location, options) {\n apiCore.navigateBack(options);\n (0, _listeners.fireListeners)(location, _constants.POP);\n}\n/**\n * Navigate to given path.\n */\n\n\nfunction push(location, path, query) {\n return navigateTo(location, {\n url: generateUrl(path, query)\n });\n}\n/**\n * Navigate replace.\n */\n\n\nfunction replace(location, path, query) {\n return redirectTo(location, {\n url: generateUrl(path, query)\n });\n}\n/**\n * Unsupported in miniapp.\n */\n\n\nfunction go() {\n throw new Error('Unsupported go in miniapp.');\n}\n/**\n * Navigate back.\n */\n\n\nfunction back(location, n) {\n if (n === void 0) {\n n = 1;\n }\n\n return navigateBack(location, {\n delta: n\n });\n}\n/**\n * Navigate back.\n */\n\n\nfunction goBack(location, n) {\n if (n === void 0) {\n n = 1;\n }\n\n return navigateBack(location, {\n delta: n\n });\n}\n/**\n * Unsupported in miniapp.\n */\n\n\nfunction goForward() {\n throw new Error('Unsupported goForward in miniapp.');\n}\n/**\n * Unsupported in miniapp.\n * @return {boolean} Always true.\n */\n\n\nfunction canGo() {\n return true;\n}\n/**\n * Generate MiniApp url\n * @param {string} path\n * @param {object} query\n */\n\n\nfunction generateUrl(path, query) {\n var _path$split = path.split('?'),\n pathname = _path$split[0],\n search = _path$split[1];\n\n var miniappPath = __routerMap[pathname];\n\n if (!miniappPath) {\n throw new Error(\"Path \" + path + \" is not found\");\n }\n\n if (query) {\n if (search) {\n search += \"&\" + stringifyQuery(query);\n } else {\n search = stringifyQuery(query);\n }\n }\n\n return search ? \"/\" + miniappPath + \"?\" + search : \"/\" + miniappPath;\n}\n/**\n * Stringify query\n * @param {object} query - route query\n * @return {string}\n */\n\n\nfunction stringifyQuery(query) {\n return Object.keys(query).reduce(function (total, nextKey, index) {\n return \"\" + total + (index ? '&' : '') + nextKey + \"=\" + query[nextKey];\n }, '');\n}\n\nfunction __updateRouterMap(routes) {\n routes.map(function (route) {\n __routerMap[route.path] = route.source;\n });\n}\n\nfunction generateActions(location) {\n var actions = {\n push: push,\n replace: replace,\n back: back,\n go: go,\n canGo: canGo,\n goForward: goForward,\n goBack: goBack\n };\n return Object.keys(actions).reduce(function (result, actionName) {\n result[actionName] = actions[actionName].bind(null, location);\n return result;\n }, {});\n}\n\n/***/ }),\n\n/***/ \"./node_modules/miniapp-renderer/lib/index.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/miniapp-renderer/lib/index.js ***!\n \\****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar miniappRenderer_1 = __webpack_require__(/*! ./miniappRenderer */ \"./node_modules/miniapp-renderer/lib/miniappRenderer.js\");\n\nexports.default = miniappRenderer_1.default;\n\n/***/ }),\n\n/***/ \"./node_modules/miniapp-renderer/lib/miniappRenderer.js\":\n/*!**************************************************************!*\\\n !*** ./node_modules/miniapp-renderer/lib/miniappRenderer.js ***!\n \\**************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar __extends = this && this.__extends || function () {\n var _extendStatics = function extendStatics(d, b) {\n _extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p];\n }\n };\n\n return _extendStatics(d, b);\n };\n\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null) throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n\n _extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n}();\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __rest = this && this.__rest || function (s, e) {\n var t = {};\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];\n }\n\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];\n }\n return t;\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction miniappRenderer(_a, _b) {\n var _c;\n\n var _d = _a.appConfig,\n appConfig = _d === void 0 ? {} : _d,\n createBaseApp = _a.createBaseApp,\n createHistory = _a.createHistory,\n staticConfig = _a.staticConfig,\n pageProps = _a.pageProps,\n emitLifeCycles = _a.emitLifeCycles,\n ErrorBoundary = _a.ErrorBoundary;\n var mount = _b.mount,\n unmount = _b.unmount,\n createElement = _b.createElement,\n Component = _b.Component;\n var history = createHistory({\n routes: staticConfig.routes\n });\n var runtime = createBaseApp(appConfig).runtime;\n var AppProvider = (_c = runtime === null || runtime === void 0 ? void 0 : runtime.composeAppProvider) === null || _c === void 0 ? void 0 : _c.call(runtime);\n var _e = appConfig.app,\n app = _e === void 0 ? {} : _e;\n var _f = app.rootId,\n rootId = _f === void 0 ? 'root' : _f,\n ErrorBoundaryFallback = app.ErrorBoundaryFallback,\n onErrorBoundaryHander = app.onErrorBoundaryHander,\n errorBoundary = app.errorBoundary;\n emitLifeCycles();\n\n var App = function (_super) {\n __extends(App, _super);\n\n function App() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n App.prototype.render = function () {\n var _a = this.props,\n Page = _a.Page,\n otherProps = __rest(_a, [\"Page\"]);\n\n var PageComponent = createElement(Page, __assign({}, otherProps));\n var appInstance = PageComponent;\n\n if (AppProvider) {\n appInstance = createElement(AppProvider, null, appInstance);\n }\n\n if (errorBoundary) {\n appInstance = createElement(ErrorBoundary, {\n Fallback: ErrorBoundaryFallback,\n onError: onErrorBoundaryHander\n }, appInstance);\n }\n\n return appInstance;\n };\n\n return App;\n }(Component);\n\n var pagesRenderInfo = staticConfig.routes.map(function (_a) {\n var source = _a.source,\n component = _a.component;\n return {\n path: source,\n render: function render() {\n var PageComponent = component()();\n var rootEl = document.createElement('div');\n rootEl.setAttribute('id', rootId);\n var appInstance = mount(createElement(App, __assign(__assign({\n history: history,\n location: history.location\n }, pageProps), {\n source: source,\n Page: PageComponent\n })), rootEl);\n document.body.appendChild(rootEl);\n document.__unmount = unmount(appInstance, rootEl);\n },\n setDocument: function setDocument(value) {\n // eslint-disable-next-line no-global-assign\n document = value; // getApp doesn't exist in plugin situation\n // @ts-ignore\n\n if (typeof getApp === 'function') {\n // @ts-ignore\n var MiniAppGlobalInstance = getApp();\n var dispatchDocumentModify = MiniAppGlobalInstance._dispatchDocumentModify;\n\n if (typeof dispatchDocumentModify === 'function') {\n dispatchDocumentModify.call(MiniAppGlobalInstance, value);\n }\n }\n }\n };\n });\n window.__pagesRenderInfo = (window.__pagesRenderInfo || []).concat(pagesRenderInfo);\n}\n\nexports.default = miniappRenderer;\n\n/***/ }),\n\n/***/ \"./node_modules/omit.js/es/index.js\":\n/*!******************************************!*\\\n !*** ./node_modules/omit.js/es/index.js ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-runtime/helpers/extends */ \"./node_modules/babel-runtime/helpers/extends.js\");\n/* harmony import */ var babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0__);\n\n\nfunction omit(obj, fields) {\n var shallowCopy = babel_runtime_helpers_extends__WEBPACK_IMPORTED_MODULE_0___default()({}, obj);\n\n for (var i = 0; i < fields.length; i++) {\n var key = fields[i];\n delete shallowCopy[key];\n }\n\n return shallowCopy;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (omit);\n\n/***/ }),\n\n/***/ \"./node_modules/path-to-regexp/dist.es2015/index.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/path-to-regexp/dist.es2015/index.js ***!\n \\**********************************************************/\n/*! exports provided: parse, compile, tokensToFunction, match, regexpToFunction, tokensToRegexp, pathToRegexp */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"parse\", function() { return parse; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"compile\", function() { return compile; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tokensToFunction\", function() { return tokensToFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"match\", function() { return match; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"regexpToFunction\", function() { return regexpToFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"tokensToRegexp\", function() { return tokensToRegexp; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"pathToRegexp\", function() { return pathToRegexp; });\n/**\n * Tokenize input string.\n */\nfunction lexer(str) {\n var tokens = [];\n var i = 0;\n\n while (i < str.length) {\n var _char = str[i];\n\n if (_char === \"*\" || _char === \"+\" || _char === \"?\") {\n tokens.push({\n type: \"MODIFIER\",\n index: i,\n value: str[i++]\n });\n continue;\n }\n\n if (_char === \"\\\\\") {\n tokens.push({\n type: \"ESCAPED_CHAR\",\n index: i++,\n value: str[i++]\n });\n continue;\n }\n\n if (_char === \"{\") {\n tokens.push({\n type: \"OPEN\",\n index: i,\n value: str[i++]\n });\n continue;\n }\n\n if (_char === \"}\") {\n tokens.push({\n type: \"CLOSE\",\n index: i,\n value: str[i++]\n });\n continue;\n }\n\n if (_char === \":\") {\n var name = \"\";\n var j = i + 1;\n\n while (j < str.length) {\n var code = str.charCodeAt(j);\n\n if ( // `0-9`\n code >= 48 && code <= 57 || code >= 65 && code <= 90 || code >= 97 && code <= 122 || // `_`\n code === 95) {\n name += str[j++];\n continue;\n }\n\n break;\n }\n\n if (!name) throw new TypeError(\"Missing parameter name at \" + i);\n tokens.push({\n type: \"NAME\",\n index: i,\n value: name\n });\n i = j;\n continue;\n }\n\n if (_char === \"(\") {\n var count = 1;\n var pattern = \"\";\n var j = i + 1;\n\n if (str[j] === \"?\") {\n throw new TypeError(\"Pattern cannot start with \\\"?\\\" at \" + j);\n }\n\n while (j < str.length) {\n if (str[j] === \"\\\\\") {\n pattern += str[j++] + str[j++];\n continue;\n }\n\n if (str[j] === \")\") {\n count--;\n\n if (count === 0) {\n j++;\n break;\n }\n } else if (str[j] === \"(\") {\n count++;\n\n if (str[j + 1] !== \"?\") {\n throw new TypeError(\"Capturing groups are not allowed at \" + j);\n }\n }\n\n pattern += str[j++];\n }\n\n if (count) throw new TypeError(\"Unbalanced pattern at \" + i);\n if (!pattern) throw new TypeError(\"Missing pattern at \" + i);\n tokens.push({\n type: \"PATTERN\",\n index: i,\n value: pattern\n });\n i = j;\n continue;\n }\n\n tokens.push({\n type: \"CHAR\",\n index: i,\n value: str[i++]\n });\n }\n\n tokens.push({\n type: \"END\",\n index: i,\n value: \"\"\n });\n return tokens;\n}\n/**\n * Parse a string for the raw tokens.\n */\n\n\nfunction parse(str, options) {\n if (options === void 0) {\n options = {};\n }\n\n var tokens = lexer(str);\n var _a = options.prefixes,\n prefixes = _a === void 0 ? \"./\" : _a;\n var defaultPattern = \"[^\" + escapeString(options.delimiter || \"/#?\") + \"]+?\";\n var result = [];\n var key = 0;\n var i = 0;\n var path = \"\";\n\n var tryConsume = function (type) {\n if (i < tokens.length && tokens[i].type === type) return tokens[i++].value;\n };\n\n var mustConsume = function (type) {\n var value = tryConsume(type);\n if (value !== undefined) return value;\n var _a = tokens[i],\n nextType = _a.type,\n index = _a.index;\n throw new TypeError(\"Unexpected \" + nextType + \" at \" + index + \", expected \" + type);\n };\n\n var consumeText = function () {\n var result = \"\";\n var value; // tslint:disable-next-line\n\n while (value = tryConsume(\"CHAR\") || tryConsume(\"ESCAPED_CHAR\")) {\n result += value;\n }\n\n return result;\n };\n\n while (i < tokens.length) {\n var _char2 = tryConsume(\"CHAR\");\n\n var name = tryConsume(\"NAME\");\n var pattern = tryConsume(\"PATTERN\");\n\n if (name || pattern) {\n var prefix = _char2 || \"\";\n\n if (prefixes.indexOf(prefix) === -1) {\n path += prefix;\n prefix = \"\";\n }\n\n if (path) {\n result.push(path);\n path = \"\";\n }\n\n result.push({\n name: name || key++,\n prefix: prefix,\n suffix: \"\",\n pattern: pattern || defaultPattern,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n\n var value = _char2 || tryConsume(\"ESCAPED_CHAR\");\n\n if (value) {\n path += value;\n continue;\n }\n\n if (path) {\n result.push(path);\n path = \"\";\n }\n\n var open = tryConsume(\"OPEN\");\n\n if (open) {\n var prefix = consumeText();\n var name_1 = tryConsume(\"NAME\") || \"\";\n var pattern_1 = tryConsume(\"PATTERN\") || \"\";\n var suffix = consumeText();\n mustConsume(\"CLOSE\");\n result.push({\n name: name_1 || (pattern_1 ? key++ : \"\"),\n pattern: name_1 && !pattern_1 ? defaultPattern : pattern_1,\n prefix: prefix,\n suffix: suffix,\n modifier: tryConsume(\"MODIFIER\") || \"\"\n });\n continue;\n }\n\n mustConsume(\"END\");\n }\n\n return result;\n}\n/**\n * Compile a string to a template function for the path.\n */\n\nfunction compile(str, options) {\n return tokensToFunction(parse(str, options), options);\n}\n/**\n * Expose a method for transforming tokens into the path function.\n */\n\nfunction tokensToFunction(tokens, options) {\n if (options === void 0) {\n options = {};\n }\n\n var reFlags = flags(options);\n var _a = options.encode,\n encode = _a === void 0 ? function (x) {\n return x;\n } : _a,\n _b = options.validate,\n validate = _b === void 0 ? true : _b; // Compile all the tokens into regexps.\n\n var matches = tokens.map(function (token) {\n if (typeof token === \"object\") {\n return new RegExp(\"^(?:\" + token.pattern + \")$\", reFlags);\n }\n });\n return function (data) {\n var path = \"\";\n\n for (var i = 0; i < tokens.length; i++) {\n var token = tokens[i];\n\n if (typeof token === \"string\") {\n path += token;\n continue;\n }\n\n var value = data ? data[token.name] : undefined;\n var optional = token.modifier === \"?\" || token.modifier === \"*\";\n var repeat = token.modifier === \"*\" || token.modifier === \"+\";\n\n if (Array.isArray(value)) {\n if (!repeat) {\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to not repeat, but got an array\");\n }\n\n if (value.length === 0) {\n if (optional) continue;\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to not be empty\");\n }\n\n for (var j = 0; j < value.length; j++) {\n var segment = encode(value[j], token);\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected all \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + segment + \"\\\"\");\n }\n\n path += token.prefix + segment + token.suffix;\n }\n\n continue;\n }\n\n if (typeof value === \"string\" || typeof value === \"number\") {\n var segment = encode(String(value), token);\n\n if (validate && !matches[i].test(segment)) {\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to match \\\"\" + token.pattern + \"\\\", but got \\\"\" + segment + \"\\\"\");\n }\n\n path += token.prefix + segment + token.suffix;\n continue;\n }\n\n if (optional) continue;\n var typeOfMessage = repeat ? \"an array\" : \"a string\";\n throw new TypeError(\"Expected \\\"\" + token.name + \"\\\" to be \" + typeOfMessage);\n }\n\n return path;\n };\n}\n/**\n * Create path match function from `path-to-regexp` spec.\n */\n\nfunction match(str, options) {\n var keys = [];\n var re = pathToRegexp(str, keys, options);\n return regexpToFunction(re, keys, options);\n}\n/**\n * Create a path match function from `path-to-regexp` output.\n */\n\nfunction regexpToFunction(re, keys, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _a = options.decode,\n decode = _a === void 0 ? function (x) {\n return x;\n } : _a;\n return function (pathname) {\n var m = re.exec(pathname);\n if (!m) return false;\n var path = m[0],\n index = m.index;\n var params = Object.create(null);\n\n var _loop_1 = function (i) {\n // tslint:disable-next-line\n if (m[i] === undefined) return \"continue\";\n var key = keys[i - 1];\n\n if (key.modifier === \"*\" || key.modifier === \"+\") {\n params[key.name] = m[i].split(key.prefix + key.suffix).map(function (value) {\n return decode(value, key);\n });\n } else {\n params[key.name] = decode(m[i], key);\n }\n };\n\n for (var i = 1; i < m.length; i++) {\n _loop_1(i);\n }\n\n return {\n path: path,\n index: index,\n params: params\n };\n };\n}\n/**\n * Escape a regular expression string.\n */\n\nfunction escapeString(str) {\n return str.replace(/([.+*?=^!:${}()[\\]|/\\\\])/g, \"\\\\$1\");\n}\n/**\n * Get the flags for a regexp from the options.\n */\n\n\nfunction flags(options) {\n return options && options.sensitive ? \"\" : \"i\";\n}\n/**\n * Pull out keys from a regexp.\n */\n\n\nfunction regexpToRegexp(path, keys) {\n if (!keys) return path;\n var groupsRegex = /\\((?:\\?<(.*?)>)?(?!\\?)/g;\n var index = 0;\n var execResult = groupsRegex.exec(path.source);\n\n while (execResult) {\n keys.push({\n // Use parenthesized substring match if available, index otherwise\n name: execResult[1] || index++,\n prefix: \"\",\n suffix: \"\",\n modifier: \"\",\n pattern: \"\"\n });\n execResult = groupsRegex.exec(path.source);\n }\n\n return path;\n}\n/**\n * Transform an array into a regexp.\n */\n\n\nfunction arrayToRegexp(paths, keys, options) {\n var parts = paths.map(function (path) {\n return pathToRegexp(path, keys, options).source;\n });\n return new RegExp(\"(?:\" + parts.join(\"|\") + \")\", flags(options));\n}\n/**\n * Create a path regexp from string input.\n */\n\n\nfunction stringToRegexp(path, keys, options) {\n return tokensToRegexp(parse(path, options), keys, options);\n}\n/**\n * Expose a function for taking tokens and returning a RegExp.\n */\n\n\nfunction tokensToRegexp(tokens, keys, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _a = options.strict,\n strict = _a === void 0 ? false : _a,\n _b = options.start,\n start = _b === void 0 ? true : _b,\n _c = options.end,\n end = _c === void 0 ? true : _c,\n _d = options.encode,\n encode = _d === void 0 ? function (x) {\n return x;\n } : _d;\n var endsWith = \"[\" + escapeString(options.endsWith || \"\") + \"]|$\";\n var delimiter = \"[\" + escapeString(options.delimiter || \"/#?\") + \"]\";\n var route = start ? \"^\" : \"\"; // Iterate over the tokens and create our regexp string.\n\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n\n if (typeof token === \"string\") {\n route += escapeString(encode(token));\n } else {\n var prefix = escapeString(encode(token.prefix));\n var suffix = escapeString(encode(token.suffix));\n\n if (token.pattern) {\n if (keys) keys.push(token);\n\n if (prefix || suffix) {\n if (token.modifier === \"+\" || token.modifier === \"*\") {\n var mod = token.modifier === \"*\" ? \"?\" : \"\";\n route += \"(?:\" + prefix + \"((?:\" + token.pattern + \")(?:\" + suffix + prefix + \"(?:\" + token.pattern + \"))*)\" + suffix + \")\" + mod;\n } else {\n route += \"(?:\" + prefix + \"(\" + token.pattern + \")\" + suffix + \")\" + token.modifier;\n }\n } else {\n route += \"(\" + token.pattern + \")\" + token.modifier;\n }\n } else {\n route += \"(?:\" + prefix + suffix + \")\" + token.modifier;\n }\n }\n }\n\n if (end) {\n if (!strict) route += delimiter + \"?\";\n route += !options.endsWith ? \"$\" : \"(?=\" + endsWith + \")\";\n } else {\n var endToken = tokens[tokens.length - 1];\n var isEndDelimited = typeof endToken === \"string\" ? delimiter.indexOf(endToken[endToken.length - 1]) > -1 : // tslint:disable-next-line\n endToken === undefined;\n\n if (!strict) {\n route += \"(?:\" + delimiter + \"(?=\" + endsWith + \"))?\";\n }\n\n if (!isEndDelimited) {\n route += \"(?=\" + delimiter + \"|\" + endsWith + \")\";\n }\n }\n\n return new RegExp(route, flags(options));\n}\n/**\n * Normalize the given path string, returning a regular expression.\n *\n * An empty array can be passed in for the keys, which will hold the\n * placeholder key descriptions. For example, using `/user/:id`, `keys` will\n * contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.\n */\n\nfunction pathToRegexp(path, keys, options) {\n if (path instanceof RegExp) return regexpToRegexp(path, keys);\n if (Array.isArray(path)) return arrayToRegexp(path, keys, options);\n return stringToRegexp(path, keys, options);\n} //# sourceMappingURL=index.js.map\n\n/***/ }),\n\n/***/ \"./node_modules/process/browser.js\":\n/*!*****************************************!*\\\n !*** ./node_modules/process/browser.js ***!\n \\*****************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n// shim for using process in browser\nvar process = module.exports = {}; // cached from whatever global is present so that test runners that stub it\n// don't break things. But we need to wrap it in a try catch in case it is\n// wrapped in strict mode code which doesn't define any globals. It's inside a\n// function because try/catches deoptimize in certain engines.\n\nvar cachedSetTimeout;\nvar cachedClearTimeout;\n\nfunction defaultSetTimout() {\n throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n throw new Error('clearTimeout has not been defined');\n}\n\n(function () {\n try {\n if (typeof setTimeout === 'function') {\n cachedSetTimeout = setTimeout;\n } else {\n cachedSetTimeout = defaultSetTimout;\n }\n } catch (e) {\n cachedSetTimeout = defaultSetTimout;\n }\n\n try {\n if (typeof clearTimeout === 'function') {\n cachedClearTimeout = clearTimeout;\n } else {\n cachedClearTimeout = defaultClearTimeout;\n }\n } catch (e) {\n cachedClearTimeout = defaultClearTimeout;\n }\n})();\n\nfunction runTimeout(fun) {\n if (cachedSetTimeout === setTimeout) {\n //normal enviroments in sane situations\n return setTimeout(fun, 0);\n } // if setTimeout wasn't available but was latter defined\n\n\n if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n cachedSetTimeout = setTimeout;\n return setTimeout(fun, 0);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedSetTimeout(fun, 0);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedSetTimeout.call(null, fun, 0);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n return cachedSetTimeout.call(this, fun, 0);\n }\n }\n}\n\nfunction runClearTimeout(marker) {\n if (cachedClearTimeout === clearTimeout) {\n //normal enviroments in sane situations\n return clearTimeout(marker);\n } // if clearTimeout wasn't available but was latter defined\n\n\n if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n cachedClearTimeout = clearTimeout;\n return clearTimeout(marker);\n }\n\n try {\n // when when somebody has screwed with setTimeout but no I.E. maddness\n return cachedClearTimeout(marker);\n } catch (e) {\n try {\n // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n return cachedClearTimeout.call(null, marker);\n } catch (e) {\n // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n return cachedClearTimeout.call(this, marker);\n }\n }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n if (!draining || !currentQueue) {\n return;\n }\n\n draining = false;\n\n if (currentQueue.length) {\n queue = currentQueue.concat(queue);\n } else {\n queueIndex = -1;\n }\n\n if (queue.length) {\n drainQueue();\n }\n}\n\nfunction drainQueue() {\n if (draining) {\n return;\n }\n\n var timeout = runTimeout(cleanUpNextTick);\n draining = true;\n var len = queue.length;\n\n while (len) {\n currentQueue = queue;\n queue = [];\n\n while (++queueIndex < len) {\n if (currentQueue) {\n currentQueue[queueIndex].run();\n }\n }\n\n queueIndex = -1;\n len = queue.length;\n }\n\n currentQueue = null;\n draining = false;\n runClearTimeout(timeout);\n}\n\nprocess.nextTick = function (fun) {\n var args = new Array(arguments.length - 1);\n\n if (arguments.length > 1) {\n for (var i = 1; i < arguments.length; i++) {\n args[i - 1] = arguments[i];\n }\n }\n\n queue.push(new Item(fun, args));\n\n if (queue.length === 1 && !draining) {\n runTimeout(drainQueue);\n }\n}; // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n this.fun = fun;\n this.array = array;\n}\n\nItem.prototype.run = function () {\n this.fun.apply(null, this.array);\n};\n\nprocess.title = 'browser';\nprocess.browser = true;\nprocess.env = {};\nprocess.argv = [];\nprocess.version = ''; // empty string to avoid regexp issues\n\nprocess.versions = {};\n\nfunction noop() {}\n\nprocess.on = noop;\nprocess.addListener = noop;\nprocess.once = noop;\nprocess.off = noop;\nprocess.removeListener = noop;\nprocess.removeAllListeners = noop;\nprocess.emit = noop;\nprocess.prependListener = noop;\nprocess.prependOnceListener = noop;\n\nprocess.listeners = function () {\n return [];\n};\n\nprocess.binding = function () {\n throw new Error('process.binding is not supported');\n};\n\nprocess.cwd = function () {\n return '/';\n};\n\nprocess.chdir = function () {\n throw new Error('process.chdir is not supported');\n};\n\nprocess.umask = function () {\n return 0;\n};\n\n/***/ }),\n\n/***/ \"./node_modules/query-string/index.js\":\n/*!********************************************!*\\\n !*** ./node_modules/query-string/index.js ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nvar strictUriEncode = __webpack_require__(/*! strict-uri-encode */ \"./node_modules/strict-uri-encode/index.js\");\n\nvar decodeComponent = __webpack_require__(/*! decode-uri-component */ \"./node_modules/decode-uri-component/index.js\");\n\nvar splitOnFirst = __webpack_require__(/*! split-on-first */ \"./node_modules/split-on-first/index.js\");\n\nvar filterObject = __webpack_require__(/*! filter-obj */ \"./node_modules/filter-obj/index.js\");\n\nvar isNullOrUndefined = function (value) {\n return value === null || value === undefined;\n};\n\nfunction encoderForArrayFormat(options) {\n switch (options.arrayFormat) {\n case 'index':\n return function (key) {\n return function (result, value) {\n var index = result.length;\n\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n\n if (value === null) {\n return [].concat(result, [[encode(key, options), '[', index, ']'].join('')]);\n }\n\n return [].concat(result, [[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')]);\n };\n };\n\n case 'bracket':\n return function (key) {\n return function (result, value) {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n\n if (value === null) {\n return [].concat(result, [[encode(key, options), '[]'].join('')]);\n }\n\n return [].concat(result, [[encode(key, options), '[]=', encode(value, options)].join('')]);\n };\n };\n\n case 'comma':\n case 'separator':\n return function (key) {\n return function (result, value) {\n if (value === null || value === undefined || value.length === 0) {\n return result;\n }\n\n if (result.length === 0) {\n return [[encode(key, options), '=', encode(value, options)].join('')];\n }\n\n return [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n };\n };\n\n default:\n return function (key) {\n return function (result, value) {\n if (value === undefined || options.skipNull && value === null || options.skipEmptyString && value === '') {\n return result;\n }\n\n if (value === null) {\n return [].concat(result, [encode(key, options)]);\n }\n\n return [].concat(result, [[encode(key, options), '=', encode(value, options)].join('')]);\n };\n };\n }\n}\n\nfunction parserForArrayFormat(options) {\n var result;\n\n switch (options.arrayFormat) {\n case 'index':\n return function (key, value, accumulator) {\n result = /\\[(\\d*)\\]$/.exec(key);\n key = key.replace(/\\[\\d*\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n }\n\n if (accumulator[key] === undefined) {\n accumulator[key] = {};\n }\n\n accumulator[key][result[1]] = value;\n };\n\n case 'bracket':\n return function (key, value, accumulator) {\n result = /(\\[\\])$/.exec(key);\n key = key.replace(/\\[\\]$/, '');\n\n if (!result) {\n accumulator[key] = value;\n return;\n }\n\n if (accumulator[key] === undefined) {\n accumulator[key] = [value];\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n\n case 'comma':\n case 'separator':\n return function (key, value, accumulator) {\n var isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n var isEncodedArray = typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator);\n value = isEncodedArray ? decode(value, options) : value;\n var newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(function (item) {\n return decode(item, options);\n }) : value === null ? value : decode(value, options);\n accumulator[key] = newValue;\n };\n\n default:\n return function (key, value, accumulator) {\n if (accumulator[key] === undefined) {\n accumulator[key] = value;\n return;\n }\n\n accumulator[key] = [].concat(accumulator[key], value);\n };\n }\n}\n\nfunction validateArrayFormatSeparator(value) {\n if (typeof value !== 'string' || value.length !== 1) {\n throw new TypeError('arrayFormatSeparator must be single character string');\n }\n}\n\nfunction encode(value, options) {\n if (options.encode) {\n return options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n }\n\n return value;\n}\n\nfunction decode(value, options) {\n if (options.decode) {\n return decodeComponent(value);\n }\n\n return value;\n}\n\nfunction keysSorter(input) {\n if (Array.isArray(input)) {\n return input.sort();\n }\n\n if (typeof input === 'object') {\n return keysSorter(Object.keys(input)).sort(function (a, b) {\n return Number(a) - Number(b);\n }).map(function (key) {\n return input[key];\n });\n }\n\n return input;\n}\n\nfunction removeHash(input) {\n var hashStart = input.indexOf('#');\n\n if (hashStart !== -1) {\n input = input.slice(0, hashStart);\n }\n\n return input;\n}\n\nfunction getHash(url) {\n var hash = '';\n var hashStart = url.indexOf('#');\n\n if (hashStart !== -1) {\n hash = url.slice(hashStart);\n }\n\n return hash;\n}\n\nfunction extract(input) {\n input = removeHash(input);\n var queryStart = input.indexOf('?');\n\n if (queryStart === -1) {\n return '';\n }\n\n return input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n if (options.parseNumbers && !Number.isNaN(Number(value)) && typeof value === 'string' && value.trim() !== '') {\n value = Number(value);\n } else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n value = value.toLowerCase() === 'true';\n }\n\n return value;\n}\n\nfunction parse(query, options) {\n options = Object.assign({\n decode: true,\n sort: true,\n arrayFormat: 'none',\n arrayFormatSeparator: ',',\n parseNumbers: false,\n parseBooleans: false\n }, options);\n validateArrayFormatSeparator(options.arrayFormatSeparator);\n var formatter = parserForArrayFormat(options); // Create an object with no prototype\n\n var ret = Object.create(null);\n\n if (typeof query !== 'string') {\n return ret;\n }\n\n query = query.trim().replace(/^[?#&]/, '');\n\n if (!query) {\n return ret;\n }\n\n for (var _iterator = _createForOfIteratorHelperLoose(query.split('&')), _step; !(_step = _iterator()).done;) {\n var param = _step.value;\n\n if (param === '') {\n continue;\n }\n\n var _splitOnFirst = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '='),\n _key = _splitOnFirst[0],\n _value = _splitOnFirst[1]; // Missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\n\n _value = _value === undefined ? null : ['comma', 'separator'].includes(options.arrayFormat) ? _value : decode(_value, options);\n formatter(decode(_key, options), _value, ret);\n }\n\n for (var _i = 0, _Object$keys = Object.keys(ret); _i < _Object$keys.length; _i++) {\n var key = _Object$keys[_i];\n var value = ret[key];\n\n if (typeof value === 'object' && value !== null) {\n for (var _i2 = 0, _Object$keys2 = Object.keys(value); _i2 < _Object$keys2.length; _i2++) {\n var k = _Object$keys2[_i2];\n value[k] = parseValue(value[k], options);\n }\n } else {\n ret[key] = parseValue(value, options);\n }\n }\n\n if (options.sort === false) {\n return ret;\n }\n\n return (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce(function (result, key) {\n var value = ret[key];\n\n if (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n // Sort object keys, not values\n result[key] = keysSorter(value);\n } else {\n result[key] = value;\n }\n\n return result;\n }, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = function (object, options) {\n if (!object) {\n return '';\n }\n\n options = Object.assign({\n encode: true,\n strict: true,\n arrayFormat: 'none',\n arrayFormatSeparator: ','\n }, options);\n validateArrayFormatSeparator(options.arrayFormatSeparator);\n\n var shouldFilter = function (key) {\n return options.skipNull && isNullOrUndefined(object[key]) || options.skipEmptyString && object[key] === '';\n };\n\n var formatter = encoderForArrayFormat(options);\n var objectCopy = {};\n\n for (var _i3 = 0, _Object$keys3 = Object.keys(object); _i3 < _Object$keys3.length; _i3++) {\n var key = _Object$keys3[_i3];\n\n if (!shouldFilter(key)) {\n objectCopy[key] = object[key];\n }\n }\n\n var keys = Object.keys(objectCopy);\n\n if (options.sort !== false) {\n keys.sort(options.sort);\n }\n\n return keys.map(function (key) {\n var value = object[key];\n\n if (value === undefined) {\n return '';\n }\n\n if (value === null) {\n return encode(key, options);\n }\n\n if (Array.isArray(value)) {\n return value.reduce(formatter(key), []).join('&');\n }\n\n return encode(key, options) + '=' + encode(value, options);\n }).filter(function (x) {\n return x.length > 0;\n }).join('&');\n};\n\nexports.parseUrl = function (url, options) {\n options = Object.assign({\n decode: true\n }, options);\n\n var _splitOnFirst2 = splitOnFirst(url, '#'),\n url_ = _splitOnFirst2[0],\n hash = _splitOnFirst2[1];\n\n return Object.assign({\n url: url_.split('?')[0] || '',\n query: parse(extract(url), options)\n }, options && options.parseFragmentIdentifier && hash ? {\n fragmentIdentifier: decode(hash, options)\n } : {});\n};\n\nexports.stringifyUrl = function (object, options) {\n options = Object.assign({\n encode: true,\n strict: true\n }, options);\n var url = removeHash(object.url).split('?')[0] || '';\n var queryFromUrl = exports.extract(object.url);\n var parsedQueryFromUrl = exports.parse(queryFromUrl, {\n sort: false\n });\n var query = Object.assign(parsedQueryFromUrl, object.query);\n var queryString = exports.stringify(query, options);\n\n if (queryString) {\n queryString = \"?\" + queryString;\n }\n\n var hash = getHash(object.url);\n\n if (object.fragmentIdentifier) {\n hash = \"#\" + encode(object.fragmentIdentifier, options);\n }\n\n return \"\" + url + queryString + hash;\n};\n\nexports.pick = function (input, filter, options) {\n options = Object.assign({\n parseFragmentIdentifier: true\n }, options);\n\n var _exports$parseUrl = exports.parseUrl(input, options),\n url = _exports$parseUrl.url,\n query = _exports$parseUrl.query,\n fragmentIdentifier = _exports$parseUrl.fragmentIdentifier;\n\n return exports.stringifyUrl({\n url: url,\n query: filterObject(query, filter),\n fragmentIdentifier: fragmentIdentifier\n }, options);\n};\n\nexports.exclude = function (input, filter, options) {\n var exclusionFilter = Array.isArray(filter) ? function (key) {\n return !filter.includes(key);\n } : function (key, value) {\n return !filter(key, value);\n };\n return exports.pick(input, exclusionFilter, options);\n};\n\n/***/ }),\n\n/***/ \"./node_modules/rax-app-renderer/lib/index.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/rax-app-renderer/lib/index.js ***!\n \\****************************************************/\n/*! exports provided: setInitialData, getInitialData, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _renderer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./renderer */ \"./node_modules/rax-app-renderer/lib/renderer.js\");\n/* harmony import */ var _initialData__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./initialData */ \"./node_modules/rax-app-renderer/lib/initialData.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"setInitialData\", function() { return _initialData__WEBPACK_IMPORTED_MODULE_1__[\"setInitialData\"]; });\n\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"getInitialData\", function() { return _initialData__WEBPACK_IMPORTED_MODULE_1__[\"getInitialData\"]; });\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (_renderer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./node_modules/rax-app-renderer/lib/initialData.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/rax-app-renderer/lib/initialData.js ***!\n \\**********************************************************/\n/*! exports provided: setInitialData, getInitialData */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setInitialData\", function() { return setInitialData; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getInitialData\", function() { return getInitialData; });\nvar __initialData__;\n\nfunction setInitialData(initialData) {\n __initialData__ = initialData;\n}\nfunction getInitialData() {\n return __initialData__;\n}\n\n/***/ }),\n\n/***/ \"./node_modules/rax-app-renderer/lib/parseSearch.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/rax-app-renderer/lib/parseSearch.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (search) {\n var results = search.substr(1).split('&');\n var query = {};\n results.forEach(function (result) {\n var _a = result.split('='),\n key = _a[0],\n value = _a[1];\n\n query[key] = value;\n });\n return query;\n});\n\n/***/ }),\n\n/***/ \"./node_modules/rax-app-renderer/lib/renderer.js\":\n/*!*******************************************************!*\\\n !*** ./node_modules/rax-app-renderer/lib/renderer.js ***!\n \\*******************************************************/\n/*! exports provided: getRenderAppInstance, default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(process) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getRenderAppInstance\", function() { return getRenderAppInstance; });\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var create_use_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! create-use-router */ \"./node_modules/rax-app-renderer/node_modules/create-use-router/lib/index.js\");\n/* harmony import */ var create_use_router__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(create_use_router__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var driver_universal__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! driver-universal */ \"./node_modules/driver-universal/es/index.js\");\n/* harmony import */ var _initialData__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./initialData */ \"./node_modules/rax-app-renderer/lib/initialData.js\");\n/* harmony import */ var _parseSearch__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./parseSearch */ \"./node_modules/rax-app-renderer/lib/parseSearch.js\");\nvar __assign = undefined && undefined.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nvar __awaiter = undefined && undefined.__awaiter || function (thisArg, _arguments, P, generator) {\n function adopt(value) {\n return value instanceof P ? value : new P(function (resolve) {\n resolve(value);\n });\n }\n\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) {\n try {\n step(generator.next(value));\n } catch (e) {\n reject(e);\n }\n }\n\n function rejected(value) {\n try {\n step(generator[\"throw\"](value));\n } catch (e) {\n reject(e);\n }\n }\n\n function step(result) {\n result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);\n }\n\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\n\nvar __generator = undefined && undefined.__generator || function (thisArg, body) {\n var _ = {\n label: 0,\n sent: function sent() {\n if (t[0] & 1) throw t[1];\n return t[1];\n },\n trys: [],\n ops: []\n },\n f,\n y,\n t,\n g;\n return g = {\n next: verb(0),\n \"throw\": verb(1),\n \"return\": verb(2)\n }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function () {\n return this;\n }), g;\n\n function verb(n) {\n return function (v) {\n return step([n, v]);\n };\n }\n\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n\n while (_) {\n try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n\n switch (op[0]) {\n case 0:\n case 1:\n t = op;\n break;\n\n case 4:\n _.label++;\n return {\n value: op[1],\n done: false\n };\n\n case 5:\n _.label++;\n y = op[1];\n op = [0];\n continue;\n\n case 7:\n op = _.ops.pop();\n\n _.trys.pop();\n\n continue;\n\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {\n _ = 0;\n continue;\n }\n\n if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {\n _.label = op[1];\n break;\n }\n\n if (op[0] === 6 && _.label < t[1]) {\n _.label = t[1];\n t = op;\n break;\n }\n\n if (t && _.label < t[2]) {\n _.label = t[2];\n\n _.ops.push(op);\n\n break;\n }\n\n if (t[2]) _.ops.pop();\n\n _.trys.pop();\n\n continue;\n }\n\n op = body.call(thisArg, _);\n } catch (e) {\n op = [6, e];\n y = 0;\n } finally {\n f = t = 0;\n }\n }\n\n if (op[0] & 5) throw op[1];\n return {\n value: op[0] ? op[1] : void 0,\n done: true\n };\n }\n};\n/* eslint-disable */\n\n\n\n\nvar isNode = false;\nvar isKraken = false;\nvar isWeex = false;\nvar isWeb = false;\n\n\n\nvar useRouter = Object(create_use_router__WEBPACK_IMPORTED_MODULE_1__[\"createUseRouter\"])({\n useState: rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"],\n useLayoutEffect: rax__WEBPACK_IMPORTED_MODULE_0__[\"useLayoutEffect\"]\n});\nvar tabBarCache = {};\nvar driver = driver_universal__WEBPACK_IMPORTED_MODULE_2__[\"default\"];\nvar AppTabBar;\n\nfunction _isNullableComponent(component) {\n return !component || Array.isArray(component) && component.length === 0;\n}\n\nfunction _matchInitialComponent(fullpath, routes) {\n var initialComponent = null;\n\n for (var i = 0, l = routes.length; i < l; i++) {\n if (fullpath === routes[i].path || routes[i].regexp && routes[i].regexp.test(fullpath)) {\n initialComponent = routes[i].component;\n if (typeof initialComponent === 'function') initialComponent = initialComponent();\n break;\n }\n }\n\n return Promise.resolve(initialComponent);\n}\n\nfunction checkNeedTabBar(staticConfig, history) {\n var _a;\n\n var current = history.location.pathname;\n if (tabBarCache[current] !== undefined) return tabBarCache[current];\n return tabBarCache[current] = AppTabBar !== undefined && ((_a = staticConfig.tabBar) === null || _a === void 0 ? void 0 : _a.items.some(function (_a) {\n var pageName = _a.pageName,\n path = _a.path;\n\n if (!pageName) {\n pageName = path;\n }\n\n return pageName === current;\n }));\n}\n\nfunction TabBarWrapper(_a) {\n var history = _a.history,\n tabBarConfig = _a.tabBarConfig,\n children = _a.children;\n\n var _b = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(history.location.pathname),\n currentPageName = _b[0],\n setCurrentPageName = _b[1]; // Listen history pathname change\n\n\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n var unListen = history.listen(function (location) {\n setCurrentPageName(location.pathname);\n }); // remove listener\n\n return function () {\n unListen();\n };\n }, []);\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax__WEBPACK_IMPORTED_MODULE_0__[\"Fragment\"], null, children, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(AppTabBar, __assign({}, {\n config: tabBarConfig,\n currentPageName: currentPageName,\n onClick: function onClick(item) {\n history.push(item.pageName);\n }\n })));\n}\n\nfunction App(props) {\n var staticConfig = props.staticConfig,\n history = props.history,\n routes = props.routes,\n InitialComponent = props.InitialComponent,\n pageInitialProps = props.pageInitialProps;\n var PageComponent = useRouter({\n history: history,\n routes: routes,\n InitialComponent: InitialComponent\n }).component;\n // Return null directly if not matched\n if (_isNullableComponent(PageComponent)) return null;\n\n var pageProps = __assign({\n history: history,\n location: history.location\n }, pageInitialProps); // Add TabBar\n\n\n if (checkNeedTabBar(staticConfig, history)) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(TabBarWrapper, {\n history: history,\n tabBarConfig: staticConfig.tabBar\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(PageComponent, __assign({}, pageProps)));\n }\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(PageComponent, __assign({}, pageProps));\n}\n\nfunction raxAppRenderer(options) {\n if (!options.appConfig) {\n options.appConfig = {};\n }\n\n var appConfig = options.appConfig,\n setAppConfig = options.setAppConfig;\n setAppConfig(appConfig);\n if (process.env.__IS_SERVER__) return;\n renderInClient(options);\n}\n\nfunction renderInClient(options) {\n var _a;\n\n return __awaiter(this, void 0, void 0, function () {\n var appConfig, buildConfig, createBaseApp, emitLifeCycles, pathRedirect, staticConfig, context, _c, pathname, search, query, initialContext_1, _d, _e, runtime, appDynamicConfig, history, initialContext, routes;\n\n var _this = this;\n\n return __generator(this, function (_f) {\n switch (_f.label) {\n case 0:\n appConfig = options.appConfig, buildConfig = options.buildConfig, createBaseApp = options.createBaseApp, emitLifeCycles = options.emitLifeCycles, pathRedirect = options.pathRedirect, staticConfig = options.staticConfig;\n context = {};\n if (!((_a = window) === null || _a === void 0 ? void 0 : _a.__INITIAL_DATA__)) return [3\n /*break*/\n , 1];\n context.initialData = window.__INITIAL_DATA__.initialData;\n context.pageInitialProps = window.__INITIAL_DATA__.pageInitialProps;\n return [3\n /*break*/\n , 3];\n\n case 1:\n return [3\n /*break*/\n , 3];\n _c = window.location, pathname = _c.pathname, search = _c.search;\n query = Object(_parseSearch__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(search);\n initialContext_1 = {\n pathname: pathname,\n query: query\n };\n _d = context;\n return [4\n /*yield*/\n , appConfig.app.getInitialData(initialContext_1)];\n\n case 2:\n _d.initialData = _f.sent();\n _f.label = 3;\n\n case 3:\n _e = createBaseApp(appConfig, buildConfig, context), runtime = _e.runtime, appDynamicConfig = _e.appConfig, history = _e.history;\n Object(_initialData__WEBPACK_IMPORTED_MODULE_3__[\"setInitialData\"])(context.initialData);\n initialContext = {\n pathname: '',\n query: {}\n }; // Set custom driver\n\n if (typeof staticConfig.driver !== 'undefined') {\n driver = staticConfig.driver;\n }\n\n routes = staticConfig.routes; // Like https://xxx.com?_path=/page1, use `_path` to jump to a specific route.\n\n pathRedirect(history, routes);\n return [2\n /*return*/\n , _matchInitialComponent(history.location.pathname, routes).then(function (InitialComponent) {\n return __awaiter(_this, void 0, void 0, function () {\n var initialComponent, _a, props, _b, app, rootId, appInstance, rootEl, webConfig;\n\n return __generator(this, function (_c) {\n switch (_c.label) {\n case 0:\n initialComponent = InitialComponent();\n if (!(!context.pageInitialProps && initialComponent.getInitialProps)) return [3\n /*break*/\n , 2];\n _a = context;\n return [4\n /*yield*/\n , initialComponent.getInitialProps(initialContext)];\n\n case 1:\n _a.pageInitialProps = _c.sent();\n _c.label = 2;\n\n case 2:\n props = {\n staticConfig: staticConfig,\n history: history,\n routes: routes,\n InitialComponent: InitialComponent,\n pageInitialProps: context.pageInitialProps\n };\n _b = appDynamicConfig.app, app = _b === void 0 ? {} : _b;\n rootId = app.rootId;\n appInstance = getRenderAppInstance(runtime, props, options); // Emit app launch cycle\n\n emitLifeCycles();\n rootEl = document.getElementById(rootId);\n webConfig = buildConfig.web || {};\n return [2\n /*return*/\n , Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"render\"])(appInstance, rootEl, {\n driver: driver,\n hydrate: webConfig.hydrate || webConfig.snapshot || webConfig.ssr\n })];\n }\n });\n });\n })];\n }\n });\n });\n}\n\nfunction getRenderAppInstance(runtime, props, options) {\n var _a;\n\n var ErrorBoundary = options.ErrorBoundary,\n TabBar = options.TabBar,\n _b = options.appConfig,\n appConfig = _b === void 0 ? {} : _b;\n\n var _c = appConfig.app || {},\n ErrorBoundaryFallback = _c.ErrorBoundaryFallback,\n onErrorBoundaryHander = _c.onErrorBoundaryHander,\n onErrorBoundaryHandler = _c.onErrorBoundaryHandler,\n errorBoundary = _c.errorBoundary;\n\n AppTabBar = TabBar;\n var AppProvider = (_a = runtime === null || runtime === void 0 ? void 0 : runtime.composeAppProvider) === null || _a === void 0 ? void 0 : _a.call(runtime);\n\n var RootComponent = function () {\n if (AppProvider) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(AppProvider, null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(App, __assign({}, props)));\n }\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(App, __assign({}, props));\n };\n\n var Root = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(RootComponent, null);\n\n if (true) {\n if (onErrorBoundaryHandler) {\n console.error('Please use onErrorBoundaryHandler instead of onErrorBoundaryHander');\n }\n }\n\n if (errorBoundary && ErrorBoundary) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(ErrorBoundary, {\n Fallback: ErrorBoundaryFallback,\n onError: onErrorBoundaryHandler || onErrorBoundaryHander\n }, Root);\n } else {\n return Root;\n }\n}\n/* harmony default export */ __webpack_exports__[\"default\"] = (raxAppRenderer);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n/***/ }),\n\n/***/ \"./node_modules/rax-app-renderer/node_modules/create-use-router/lib/index.js\":\n/*!***********************************************************************************!*\\\n !*** ./node_modules/rax-app-renderer/node_modules/create-use-router/lib/index.js ***!\n \\***********************************************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar __assign = this && this.__assign || function () {\n __assign = Object.assign || function (t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n\n for (var p in s) {\n if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\n }\n }\n\n return t;\n };\n\n return __assign.apply(this, arguments);\n};\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.createWithRouter = exports.createUseRouter = void 0;\n\nvar pathToRegexpModule = __webpack_require__(/*! path-to-regexp */ \"./node_modules/path-to-regexp/dist.es2015/index.js\");\n\nvar cache = {};\nvar router = {\n history: null,\n handles: [],\n errorHandler: function errorHandler() {},\n addHandle: function addHandle(handle) {\n return router.handles.push(handle);\n },\n removeHandle: function removeHandle(handleId) {\n router.handles[handleId - 1] = null;\n },\n triggerHandles: function triggerHandles(component) {\n router.handles.forEach(function (handle) {\n if (handle) {\n handle(component);\n }\n });\n },\n match: function match(fullpath) {\n if (fullpath == null) return;\n router.fullpath = fullpath;\n var parent = router.root; // @ts-ignore\n\n var matched = matchRoute(parent, parent.path, fullpath); // eslint-disable-next-line\n\n function next(parent) {\n var current = matched.next();\n\n if (current.done) {\n var error = new Error(\"No match for \" + fullpath); // @ts-ignore\n\n return router.errorHandler(error, router.history.location);\n }\n\n var component = current.$.route.component;\n\n if (typeof component === 'function') {\n component = component(current.$.params, router.history.location);\n }\n\n if (component instanceof Promise) {\n // Lazy loading component by import('./Foo')\n // eslint-disable-next-line\n return component.then(function (component) {\n // Check current fullpath avoid router has changed before lazy loading complete\n // @ts-ignore\n if (fullpath === router.fullpath) {\n router.triggerHandles(component);\n }\n });\n } else if (component != null) {\n router.triggerHandles(component);\n return component;\n } else {\n return next(parent);\n }\n }\n\n return next(parent);\n }\n};\n\nfunction decodeParam(val) {\n try {\n return decodeURIComponent(val);\n } catch (err) {\n return val;\n }\n}\n\nfunction matchLocation(_a) {\n var pathname = _a.pathname;\n router.match(pathname);\n}\n\nfunction matchPath(route, pathname, parentParams) {\n // eslint-disable-next-line\n var path = route.path,\n routes = route.routes,\n _a = route.exact,\n end = _a === void 0 ? true : _a,\n _b = route.strict,\n strict = _b === void 0 ? false : _b,\n _c = route.sensitive,\n sensitive = _c === void 0 ? false : _c; // If not has path or has routes that should do not exact match\n\n if (path == null || routes) {\n end = false;\n } // Default path is empty\n\n\n path = path || '';\n var regexpCacheKey = path + \"|\" + end + \"|\" + strict + \"|\" + sensitive;\n var keysCacheKey = regexpCacheKey + \"|\";\n var regexp = cache[regexpCacheKey];\n var keys = cache[keysCacheKey] || [];\n\n if (!regexp) {\n regexp = pathToRegexpModule.pathToRegexp(path, keys, {\n end: end,\n strict: strict,\n sensitive: sensitive\n });\n cache[regexpCacheKey] = regexp;\n cache[keysCacheKey] = keys;\n }\n\n var result = regexp.exec(pathname);\n\n if (!result) {\n return null;\n }\n\n var url = result[0];\n\n var params = __assign(__assign({}, parentParams), {\n history: router.history,\n location: router.history.location\n });\n\n for (var i = 1; i < result.length; i++) {\n var key = keys[i - 1];\n var prop = key.name;\n var value = result[i];\n\n if (value !== undefined || !Object.prototype.hasOwnProperty.call(params, prop)) {\n if (key.repeat) {\n params[prop] = value ? value.split(key.delimiter).map(decodeParam) : [];\n } else {\n params[prop] = value ? decodeParam(value) : value;\n }\n }\n }\n\n return {\n path: !end && url.charAt(url.length - 1) === '/' ? url.substr(1) : url,\n params: params\n };\n}\n\nfunction matchRoute(route, baseUrl, pathname, parentParams) {\n var matched;\n var childMatches;\n var childIndex = 0;\n return {\n next: function next() {\n if (!matched) {\n matched = matchPath(route, pathname, parentParams);\n\n if (matched) {\n return {\n done: false,\n $: {\n route: route,\n baseUrl: baseUrl,\n path: matched.path,\n params: matched.params\n }\n };\n }\n }\n\n if (matched && route.routes) {\n while (childIndex < route.routes.length) {\n if (!childMatches) {\n var childRoute = route.routes[childIndex];\n childRoute.parent = route;\n childMatches = matchRoute(childRoute, baseUrl + matched.path, pathname.substr(matched.path.length), matched.params);\n }\n\n var childMatch = childMatches.next();\n\n if (!childMatch.done) {\n return {\n done: false,\n $: childMatch.$\n };\n }\n\n childMatches = null;\n childIndex++;\n }\n }\n\n return {\n done: true\n };\n }\n };\n}\n\nfunction getInitialComponent(routerConfig) {\n var InitialComponent = [];\n\n if (true) {\n if (!routerConfig) {\n throw new Error('Error: useRouter should have routerConfig.');\n }\n\n if (!routerConfig.history || !routerConfig.routes) {\n throw new Error('Error: routerConfig should contain history and routes.');\n }\n }\n\n if (routerConfig.InitialComponent) {\n InitialComponent = routerConfig.InitialComponent;\n }\n\n router.history = routerConfig.history;\n return InitialComponent;\n}\n\nfunction createUseRouter(api) {\n var useState = api.useState,\n useLayoutEffect = api.useLayoutEffect;\n return function (routerConfig) {\n var _a = useState(getInitialComponent(routerConfig)),\n component = _a[0],\n setComponent = _a[1];\n\n useLayoutEffect(function () {\n var history = routerConfig.history;\n var routes = routerConfig.routes; // @ts-ignore\n\n router.root = Array.isArray(routes) ? {\n routes: routes\n } : routes; // eslint-disable-next-line\n\n var handleId = router.addHandle(function (component) {\n setComponent(component);\n }); // Init path match\n\n if (!routerConfig.InitialComponent) {\n matchLocation(history.location);\n }\n\n var unlisten = history.listen(function (location) {\n matchLocation(location);\n });\n return function () {\n router.removeHandle(handleId);\n unlisten();\n };\n }, [routerConfig]);\n return {\n component: component\n };\n };\n}\n\nexports.createUseRouter = createUseRouter;\n\nfunction createWithRouter(api) {\n var createElement = api.createElement;\n return function (Component) {\n function Wrapper(props) {\n var history = router.history;\n return createElement(Component, __assign(__assign({}, props), {\n history: history,\n location: history.location\n }));\n }\n\n Wrapper.displayName = \"withRouter(\" + (Component.displayName || Component.name) + \")\";\n Wrapper.WrappedComponent = Component;\n return Wrapper;\n };\n}\n\nexports.createWithRouter = createWithRouter;\n\n/***/ }),\n\n/***/ \"./node_modules/rax-get-element-by-id/lib/index.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/rax-get-element-by-id/lib/index.js ***!\n \\*********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = getElementById;\nvar _universalEnv = {\n isWeex: false,\n isWeb: false,\n isKraken: false,\n isNode: false,\n isMiniApp: true,\n isWeChatMiniProgram: false,\n isWeChatMiniprogram: false,\n isByteDanceMicroApp: false,\n isKuaiShouMiniProgram: false,\n isBaiduSmartProgram: false\n};\n\nvar _rax = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n\nfunction getElementById(id) {\n if (typeof my == 'object') {\n return my.createSelectorQuery().select('#' + id);\n } else if (typeof wx == 'object') {\n return wx.createSelectorQuery().select('#' + id);\n }\n}\n\n/***/ }),\n\n/***/ \"./node_modules/rax-image/es/index.js\":\n/*!********************************************!*\\\n !*** ./node_modules/rax-image/es/index.js ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web */ \"./node_modules/rax-image/es/web/index.js\");\n/* harmony import */ var _miniapp_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./miniapp-runtime */ \"./node_modules/rax-image/es/miniapp-runtime/index.js\");\n/* harmony import */ var _weex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./weex */ \"./node_modules/rax-image/es/weex/index.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ \"./node_modules/rax-image/es/types.js\");\n/* empty/unused harmony star reexport */var isKuaiShouMiniProgram = false;\nvar isBaiduSmartProgram = false;\nvar isByteDanceMicroApp = false;\nvar isWeChatMiniProgram = false;\nvar isMiniApp = true;\nvar isWeex = false;\nvar isWeb = false;\n\n\n\nvar Image = null;\nImage = _miniapp_runtime__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (Image);\n\n\n/***/ }),\n\n/***/ \"./node_modules/rax-image/es/miniapp-runtime/index.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/rax-image/es/miniapp-runtime/index.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_emptySource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/emptySource */ \"./node_modules/rax-image/es/utils/emptySource.js\");\nvar _excluded = [\"source\", \"fallbackSource\", \"onLoad\", \"onError\", \"style\", \"resizeMode\", \"loading\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\nvar Image = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (_ref, ref) {\n var source = _ref.source,\n fallbackSource = _ref.fallbackSource,\n onLoad = _ref.onLoad,\n onError = _ref.onError,\n style = _ref.style,\n resizeMode = _ref.resizeMode,\n loading = _ref.loading,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n source = source || _utils_emptySource__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n fallbackSource = fallbackSource || _utils_emptySource__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n var nativeProps = rest;\n\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({}),\n errorState = _useState[0],\n setErrorState = _useState[1];\n\n nativeProps.onError = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useCallback\"])(function (e) {\n if (errorState.uri === undefined) {\n setErrorState({\n uri: source.uri\n });\n }\n\n onError && onError(e);\n }, [source.uri, onError, errorState]);\n nativeProps.onLoad = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useCallback\"])(function (e) {\n // onLoad is triggered by native, so no need to judge\n onLoad && onLoad(e);\n }, [onLoad, onError]);\n\n if (errorState.uri !== undefined) {\n if (errorState.uri !== source.uri) {\n errorState.uri = undefined;\n } else if (fallbackSource.uri != null) {\n source = fallbackSource;\n }\n }\n\n var _source = source,\n width = _source.width,\n height = _source.height,\n uri = _source.uri;\n nativeProps.src = uri;\n nativeProps.style = _extends({\n width: width,\n height: height\n }, style);\n\n if (loading) {\n nativeProps['lazy-load'] = loading === 'lazy';\n } // for cover and contain\n\n\n resizeMode = resizeMode || nativeProps.style.resizeMode;\n\n if (resizeMode) {\n nativeProps.style.objectFit = resizeMode;\n }\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"img\", _extends({}, nativeProps, {\n ref: ref\n }));\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Image);\n\n/***/ }),\n\n/***/ \"./node_modules/rax-image/es/types.js\":\n/*!********************************************!*\\\n !*** ./node_modules/rax-image/es/types.js ***!\n \\********************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n\n/***/ }),\n\n/***/ \"./node_modules/rax-image/es/utils/emptySource.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/rax-image/es/utils/emptySource.js ***!\n \\********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar EMPTY_SOURCE = {};\n/* harmony default export */ __webpack_exports__[\"default\"] = (EMPTY_SOURCE);\n\n/***/ }),\n\n/***/ \"./node_modules/rax-image/es/web/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/rax-image/es/web/index.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_emptySource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/emptySource */ \"./node_modules/rax-image/es/utils/emptySource.js\");\nvar _excluded = [\"source\", \"fallbackSource\", \"onLoad\", \"onError\", \"style\", \"resizeMode\", \"loading\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\nvar Image = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (_ref, ref) {\n var source = _ref.source,\n fallbackSource = _ref.fallbackSource,\n onLoad = _ref.onLoad,\n onError = _ref.onError,\n style = _ref.style,\n resizeMode = _ref.resizeMode,\n loading = _ref.loading,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n source = source || _utils_emptySource__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n fallbackSource = fallbackSource || _utils_emptySource__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n var nativeProps = rest;\n\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({}),\n errorState = _useState[0],\n setErrorState = _useState[1];\n\n nativeProps.onError = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useCallback\"])(function (e) {\n if (errorState.uri === undefined) {\n setErrorState({\n uri: source.uri\n });\n }\n\n onError && onError(e);\n }, [source.uri, onError, errorState]);\n nativeProps.onLoad = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useCallback\"])(function (e) {\n if (e && e.success) {\n // weex\n onLoad && onLoad(e);\n } else if ( // alicdn will return an 1x1 img when img is not loaded successfully\n e && e.currentTarget && e.currentTarget.naturalWidth > 1 && e.currentTarget.naturalHeight > 1) {\n // web\n onLoad && onLoad(e);\n } else {\n if (errorState.uri === undefined) {\n setErrorState({\n uri: source.uri\n });\n }\n\n onError && onError(e);\n }\n }, [onLoad, onError]);\n\n if (errorState.uri !== undefined) {\n if (errorState.uri !== source.uri) {\n errorState.uri = undefined;\n } else if (fallbackSource.uri != null) {\n source = fallbackSource;\n }\n }\n\n var _source = source,\n width = _source.width,\n height = _source.height,\n uri = _source.uri;\n nativeProps.src = uri;\n nativeProps.style = _extends({\n width: width,\n height: height\n }, style);\n\n if (loading) {\n nativeProps.loading = loading;\n } // for cover and contain\n\n\n resizeMode = resizeMode || nativeProps.style.resizeMode;\n\n if (resizeMode) {\n nativeProps.style.objectFit = resizeMode;\n }\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"img\", _extends({}, nativeProps, {\n ref: ref\n }));\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Image);\n\n/***/ }),\n\n/***/ \"./node_modules/rax-image/es/weex/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/rax-image/es/weex/index.js ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_emptySource__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/emptySource */ \"./node_modules/rax-image/es/utils/emptySource.js\");\n/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../web */ \"./node_modules/rax-image/es/web/index.js\");\nvar _excluded = [\"source\", \"fallbackSource\", \"onLoad\", \"onError\", \"style\", \"resizeMode\", \"loading\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\n\nvar Image = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (_ref, ref) {\n var source = _ref.source,\n fallbackSource = _ref.fallbackSource,\n onLoad = _ref.onLoad,\n onError = _ref.onError,\n style = _ref.style,\n resizeMode = _ref.resizeMode,\n loading = _ref.loading,\n rest = _objectWithoutPropertiesLoose(_ref, _excluded);\n\n source = source || _utils_emptySource__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n fallbackSource = fallbackSource || _utils_emptySource__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n var nativeProps = rest;\n\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({}),\n errorState = _useState[0],\n setErrorState = _useState[1];\n\n nativeProps.onError = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useCallback\"])(function (e) {\n if (errorState.uri === undefined) {\n setErrorState({\n uri: source.uri\n });\n }\n\n onError && onError(e);\n }, [source.uri, onError, errorState]);\n nativeProps.onLoad = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useCallback\"])(function (e) {\n if (e && e.success) {\n // weex\n onLoad && onLoad(e);\n } else if ( // alicdn will return an 1x1 img when img is not loaded successfully\n e && e.currentTarget && e.currentTarget.naturalWidth > 1 && e.currentTarget.naturalHeight > 1) {\n // web\n onLoad && onLoad(e);\n } else {\n if (errorState.uri === undefined) {\n setErrorState({\n uri: source.uri\n });\n }\n\n onError && onError(e);\n }\n }, [onLoad, onError]);\n\n if (errorState.uri !== undefined) {\n if (errorState.uri !== source.uri) {\n errorState.uri = undefined;\n } else if (fallbackSource.uri != null) {\n source = fallbackSource;\n }\n }\n\n var _source = source,\n width = _source.width,\n height = _source.height,\n uri = _source.uri;\n nativeProps.src = uri;\n nativeProps.style = _extends({\n width: width,\n height: height\n }, style); // for cover and contain\n\n resizeMode = resizeMode || nativeProps.style.resizeMode;\n\n if (resizeMode) {\n nativeProps.resize = resizeMode;\n nativeProps.style.resizeMode = resizeMode;\n } // Set default quality to \"original\" in weex avoid image be optimized unexpect\n // @ts-ignore\n\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"image\", _extends({\n quality: \"original\"\n }, nativeProps, {\n ref: ref\n }));\n});\n/* global __weex_v2__ */\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (typeof __weex_v2__ === 'object' ? _web__WEBPACK_IMPORTED_MODULE_2__[\"default\"] : Image);\n\n/***/ }),\n\n/***/ \"./node_modules/rax-refreshcontrol/lib/index.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/rax-refreshcontrol/lib/index.js ***!\n \\******************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\n\nvar _rax = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n\nvar _universalEnv = {\n isWeex: false,\n isWeb: false,\n isKraken: false,\n isNode: false,\n isMiniApp: true,\n isWeChatMiniProgram: false,\n isWeChatMiniprogram: false,\n isByteDanceMicroApp: false,\n isKuaiShouMiniProgram: false,\n isBaiduSmartProgram: false\n};\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar RefreshControl = function () {\n return null;\n};\n\nRefreshControl.displayName = 'RefreshControl';\nvar _default = RefreshControl;\nexports.default = _default;\n\n/***/ }),\n\n/***/ \"./node_modules/rax-scrollview/es/index.css\":\n/*!**************************************************!*\\\n !*** ./node_modules/rax-scrollview/es/index.css ***!\n \\**************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./node_modules/rax-scrollview/es/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/rax-scrollview/es/index.js ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web */ \"./node_modules/rax-scrollview/es/web/index.js\");\n/* harmony import */ var _miniapp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./miniapp */ \"./node_modules/rax-scrollview/es/miniapp/index.js\");\n/* harmony import */ var _weex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./weex */ \"./node_modules/rax-scrollview/es/weex/index.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ \"./node_modules/rax-scrollview/es/types.js\");\n/* empty/unused harmony star reexport */var isKuaiShouMiniProgram = false;\nvar isBaiduSmartProgram = false;\nvar isByteDanceMicroApp = false;\nvar isWeChatMiniProgram = false;\nvar isMiniApp = true;\nvar isWeex = false;\nvar isWeb = false;\n\n\n\nvar ScrollView = null;\nScrollView = _miniapp__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (ScrollView);\n\n\n/***/ }),\n\n/***/ \"./node_modules/rax-scrollview/es/miniapp/index.js\":\n/*!*********************************************************!*\\\n !*** ./node_modules/rax-scrollview/es/miniapp/index.js ***!\n \\*********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/wrapDefaultProperties */ \"./node_modules/rax-scrollview/es/utils/wrapDefaultProperties.js\");\n/* harmony import */ var _uni_system_info__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/system-info */ \"../dist/lib/@uni/system-info/es/index.js\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../index.css */ \"./node_modules/rax-scrollview/es/index.css\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_index_css__WEBPACK_IMPORTED_MODULE_4__);\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\n\n\nvar _styleSheet = _index_css__WEBPACK_IMPORTED_MODULE_4___default.a;\n\nfunction _getClassName() {\n var className = [];\n var args = arguments[0];\n var type = Object.prototype.toString.call(args).slice(8, -1).toLowerCase();\n\n if (type === 'string') {\n args = args.trim();\n args && className.push(args);\n } else if (type === 'array') {\n args.forEach(function (cls) {\n cls = _getClassName(cls).trim();\n cls && className.push(cls);\n });\n } else if (type === 'object') {\n for (var k in args) {\n k = k.trim();\n\n if (k && args.hasOwnProperty(k) && args[k]) {\n className.push(k);\n }\n }\n }\n\n return className.join(' ').trim();\n}\n\nfunction _getStyle(classNameExpression) {\n var cache = _styleSheet.__cache || (_styleSheet.__cache = {});\n\n var className = _getClassName(classNameExpression);\n\n var classNameArr = className.split(/\\s+/);\n var style = cache[className];\n\n if (!style) {\n style = {};\n\n if (classNameArr.length === 1) {\n style = _styleSheet[classNameArr[0].trim()];\n } else {\n classNameArr.forEach(function (cls) {\n var value = _styleSheet[cls.trim()];\n\n if (typeof value === 'object') {\n style = Object.assign(style, _styleSheet[cls.trim()]);\n }\n });\n }\n\n cache[className] = style;\n }\n\n return style;\n}\n\nvar FULL_WIDTH = 750;\nvar ANIMATION_DURATION = 400;\nvar baseCls = 'rax-scrollview';\nvar pixelRatio;\n\nfunction getPixelRatio() {\n if (pixelRatio) {\n return pixelRatio;\n }\n\n pixelRatio = Object(_uni_system_info__WEBPACK_IMPORTED_MODULE_3__[\"getInfoSync\"])().windowWidth / FULL_WIDTH;\n return pixelRatio;\n}\n\nfunction translateToPx(origin) {\n if (typeof origin === 'number') {\n return origin;\n }\n\n var matched = /^(\\d+)(r{0,1}px){0,1}$/.exec(origin);\n\n if (matched) {\n if (!matched[2]) {\n return parseInt(matched[1]);\n }\n\n if (matched[2] === 'rpx') {\n var _pixelRatio = getPixelRatio();\n\n return parseInt(matched[1]) * _pixelRatio;\n }\n\n if (matched[2] === 'px') {\n return parseInt(matched[1]);\n }\n }\n\n return 0;\n}\n\nvar ScrollView = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (props, ref) {\n var className = props.className,\n style = props.style,\n horizontal = props.horizontal,\n onEndReached = props.onEndReached,\n onScroll = props.onScroll,\n children = props.children,\n _props$disableScroll = props.disableScroll,\n disableScroll = _props$disableScroll === void 0 ? false : _props$disableScroll,\n onEndReachedThreshold = props.onEndReachedThreshold;\n\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(0),\n scrollTop = _useState[0];\n\n var _useState2 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(0),\n scrollLeft = _useState2[0];\n\n var _useState3 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n scrollWithAnimation = _useState3[0],\n setScrollWithAnimation = _useState3[1];\n\n var _useState4 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(ANIMATION_DURATION),\n scrollAnimationDuration = _useState4[0],\n setScrollAnimationDuration = _useState4[1];\n\n var _useState5 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(null),\n scrollIntoViewId = _useState5[0];\n\n var scrollerRef = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useImperativeHandle\"])(ref, function () {\n return {\n _nativeNode: scrollerRef.current,\n resetScroll: function () {\n if (horizontal) {\n scrollerRef.current.setAttribute('scroll-left', '0');\n } else {\n scrollerRef.current.setAttribute('scroll-top', '0');\n }\n },\n scrollTo: function (options) {\n var _ref = options || {},\n _ref$x = _ref.x,\n x = _ref$x === void 0 ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === void 0 ? 0 : _ref$y,\n _ref$animated = _ref.animated,\n animated = _ref$animated === void 0 ? true : _ref$animated,\n _ref$duration = _ref.duration,\n duration = _ref$duration === void 0 ? ANIMATION_DURATION : _ref$duration; // Scroll event caused by users can not change scroll-top or scroll-left, so here we add some slight random element to force update\n\n\n if (horizontal) {\n scrollerRef.current.setAttribute('scroll-left', String(translateToPx(x)));\n } else {\n scrollerRef.current.setAttribute('scroll-top', String(translateToPx(y)));\n }\n\n setScrollWithAnimation(animated);\n setScrollAnimationDuration(duration);\n },\n scrollIntoView: function (options) {\n var _ref2 = options || {},\n id = _ref2.id,\n _ref2$animated = _ref2.animated,\n animated = _ref2$animated === void 0 ? true : _ref2$animated,\n _ref2$duration = _ref2.duration,\n duration = _ref2$duration === void 0 ? ANIMATION_DURATION : _ref2$duration;\n\n if (!id) {\n throw new Error('Params missing id.');\n }\n\n scrollerRef.current.setAttribute('scroll-into-view', id);\n setScrollWithAnimation(animated);\n setScrollAnimationDuration(duration);\n }\n };\n });\n\n var scrollerStyle = _extends({}, style);\n\n if (scrollerStyle.height === null) {\n scrollerStyle.flex = 1;\n }\n\n var cls = classnames__WEBPACK_IMPORTED_MODULE_1___default()(baseCls, baseCls + \"-\" + (horizontal ? 'horizontal' : 'vertical'), className);\n var endReachedThreshold = translateToPx(onEndReachedThreshold);\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"scroll-view\", _extends({}, props, {\n ref: scrollerRef,\n className: cls,\n style: Object.assign({}, _getStyle(cls), scrollerStyle),\n \"scroll-top\": scrollTop,\n \"scroll-left\": scrollLeft,\n onScroll: onScroll ? function (e) {\n if (onScroll) {\n e.nativeEvent = {\n get contentOffset() {\n return {\n x: e.detail.scrollLeft,\n y: e.detail.scrollTop\n };\n },\n\n get contentSize() {\n return {\n width: e.detail.scrollWidth,\n height: e.detail.scrollHeight\n };\n }\n\n };\n onScroll(e);\n }\n } : null,\n onScrollToLower: onEndReached,\n \"lower-threshold\": endReachedThreshold,\n \"scroll-with-animation\": scrollWithAnimation,\n \"scroll-animation-duration\": scrollAnimationDuration,\n \"scroll-x\": !disableScroll && horizontal,\n \"scroll-y\": !disableScroll && !horizontal,\n \"scroll-into-view\": scrollIntoViewId,\n \"enable-flex\": true\n }), children);\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(ScrollView));\n\n/***/ }),\n\n/***/ \"./node_modules/rax-scrollview/es/throttle.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/rax-scrollview/es/throttle.js ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return throttle; });\nfunction throttle(func, wait) {\n var ctx;\n var args;\n var rtn;\n var timeoutID;\n var last = 0;\n\n function call() {\n timeoutID = 0;\n last = +new Date();\n rtn = func.apply(ctx, args);\n ctx = null;\n args = null;\n }\n\n return function () {\n ctx = this;\n args = arguments;\n var delta = new Date().getTime() - last;\n if (!timeoutID) if (delta >= wait) call();else timeoutID = setTimeout(call, wait - delta);\n return rtn;\n };\n}\n\n/***/ }),\n\n/***/ \"./node_modules/rax-scrollview/es/timer.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/rax-scrollview/es/timer.js ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nvar isWeb = false;\n\nvar requestAnimationFrame = function (job) {\n return setTimeout(job, 16);\n};\n\nvar cancelAnimationFrame = clearTimeout;\nvar TYPES = {\n START: 'start',\n END: 'end',\n RUN: 'run',\n STOP: 'stop'\n};\nvar easing = {\n easeOutSine: function (x) {\n return Math.sin(x * Math.PI / 2);\n }\n};\nvar MIN_DURATION = 1;\n\nvar noop = function () {};\n\nvar Timer = /*#__PURE__*/function () {\n function Timer(config) {\n this.config = {\n easing: 'linear',\n duration: Infinity,\n onStart: noop,\n onRun: noop,\n onStop: noop,\n onEnd: noop\n };\n this.isfinished = false;\n this.start = void 0;\n this.percent = void 0;\n this.easingFn = void 0;\n this.now = void 0;\n this.t = void 0;\n this.duration = void 0;\n this.progress = void 0;\n this._hasFinishedPercent = void 0;\n this._stop = void 0;\n this._raf = void 0;\n this.config = _extends({}, this.config, config);\n }\n\n var _proto = Timer.prototype;\n\n _proto.run = function () {\n var _this$config = this.config,\n duration = _this$config.duration,\n onStart = _this$config.onStart,\n onRun = _this$config.onRun;\n\n if (duration <= MIN_DURATION) {\n this.isfinished = true;\n onRun({\n percent: 1\n });\n this.stop();\n }\n\n if (this.isfinished) return;\n this._hasFinishedPercent = this._stop && this._stop.percent || 0;\n this._stop = null;\n this.start = Date.now();\n this.percent = 0;\n onStart({\n percent: 0,\n type: TYPES.START\n }); // epsilon determines the precision of the solved values\n // let epsilon = 1000 / 60 / duration / 4;\n\n this.easingFn = easing[this.config.easing];\n\n this._run();\n };\n\n _proto._run = function () {\n var _this = this;\n\n var _this$config2 = this.config,\n onRun = _this$config2.onRun,\n onStop = _this$config2.onStop;\n this._raf && cancelAnimationFrame(this._raf);\n this._raf = requestAnimationFrame(function () {\n _this.now = Date.now();\n _this.t = _this.now - _this.start;\n _this.duration = _this.now - _this.start >= _this.config.duration ? _this.config.duration : _this.now - _this.start;\n _this.progress = _this.easingFn(_this.duration / _this.config.duration);\n _this.percent = _this.duration / _this.config.duration + _this._hasFinishedPercent;\n\n if (_this.percent >= 1 || _this._stop) {\n _this.percent = _this._stop && _this._stop.percent ? _this._stop.percent : 1;\n _this.duration = _this._stop && _this._stop.duration ? _this._stop.duration : _this.duration;\n onRun({\n percent: _this.progress,\n originPercent: _this.percent,\n t: _this.t,\n type: TYPES.RUN\n });\n onStop({\n percent: _this.percent,\n t: _this.t,\n type: TYPES.STOP\n });\n\n if (_this.percent >= 1) {\n _this.isfinished = true;\n\n _this.stop();\n }\n\n return;\n }\n\n onRun({\n percent: _this.progress,\n originPercent: _this.percent,\n t: _this.t,\n type: TYPES.RUN\n });\n\n _this._run();\n });\n };\n\n _proto.stop = function () {\n var onEnd = this.config.onEnd;\n this._stop = {\n percent: this.percent,\n now: this.now\n };\n onEnd({\n percent: 1,\n t: this.t,\n type: TYPES.END\n });\n cancelAnimationFrame(this._raf);\n };\n\n return Timer;\n}();\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Timer);\n\n/***/ }),\n\n/***/ \"./node_modules/rax-scrollview/es/types.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/rax-scrollview/es/types.js ***!\n \\*************************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n\n/***/ }),\n\n/***/ \"./node_modules/rax-scrollview/es/utils/wrapDefaultProperties.js\":\n/*!***********************************************************************!*\\\n !*** ./node_modules/rax-scrollview/es/utils/wrapDefaultProperties.js ***!\n \\***********************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return wrapDefaultProperties; });\nvar DEFAULT_END_REACHED_THRESHOLD = 500;\nvar DEFAULT_SCROLL_CALLBACK_THROTTLE = 50;\nfunction wrapDefaultProperties(ScrollView) {\n ScrollView.defaultProps = {\n scrollEventThrottle: DEFAULT_SCROLL_CALLBACK_THROTTLE,\n onEndReachedThreshold: DEFAULT_END_REACHED_THRESHOLD,\n showsHorizontalScrollIndicator: true,\n showsVerticalScrollIndicator: true,\n className: 'rax-scrollview'\n };\n ScrollView.displayName = 'ScrollView';\n return ScrollView;\n}\n\n/***/ }),\n\n/***/ \"./node_modules/rax-scrollview/es/web/index.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/rax-scrollview/es/web/index.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _timer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../timer */ \"./node_modules/rax-scrollview/es/timer.js\");\n/* harmony import */ var _throttle__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../throttle */ \"./node_modules/rax-scrollview/es/throttle.js\");\n/* harmony import */ var _utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/wrapDefaultProperties */ \"./node_modules/rax-scrollview/es/utils/wrapDefaultProperties.js\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../index.css */ \"./node_modules/rax-scrollview/es/index.css\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_index_css__WEBPACK_IMPORTED_MODULE_6__);\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\n\n\n\n\nvar _styleSheet = _index_css__WEBPACK_IMPORTED_MODULE_6___default.a;\n\nfunction _getClassName() {\n var className = [];\n var args = arguments[0];\n var type = Object.prototype.toString.call(args).slice(8, -1).toLowerCase();\n\n if (type === 'string') {\n args = args.trim();\n args && className.push(args);\n } else if (type === 'array') {\n args.forEach(function (cls) {\n cls = _getClassName(cls).trim();\n cls && className.push(cls);\n });\n } else if (type === 'object') {\n for (var k in args) {\n k = k.trim();\n\n if (k && args.hasOwnProperty(k) && args[k]) {\n className.push(k);\n }\n }\n }\n\n return className.join(' ').trim();\n}\n\nfunction _getStyle(classNameExpression) {\n var cache = _styleSheet.__cache || (_styleSheet.__cache = {});\n\n var className = _getClassName(classNameExpression);\n\n var classNameArr = className.split(/\\s+/);\n var style = cache[className];\n\n if (!style) {\n style = {};\n\n if (classNameArr.length === 1) {\n style = _styleSheet[classNameArr[0].trim()];\n } else {\n classNameArr.forEach(function (cls) {\n var value = _styleSheet[cls.trim()];\n\n if (typeof value === 'object') {\n style = Object.assign(style, _styleSheet[cls.trim()]);\n }\n });\n }\n\n cache[className] = style;\n }\n\n return style;\n}\n\nvar FULL_WIDTH = 750;\nvar ANIMATION_DURATION = 400;\nvar STYLE_NODE_ID = 'rax-scrollview-style';\nvar baseCls = 'rax-scrollview';\nvar pixelRatio;\n/**\n * Scroll to some position method\n * @param scrollerRef the scroll container ref\n * @param x offset x\n * @param y offset y\n * @param animated does it need animated\n * @param duration animate duration\n */\n\nfunction _scrollTo(scrollerRef, x, y, animated, duration) {\n var scrollView = scrollerRef.current;\n var scrollLeft = scrollView.scrollLeft;\n var scrollTop = scrollView.scrollTop;\n\n if (animated) {\n var timer = new _timer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]({\n duration: duration,\n easing: 'easeOutSine',\n onRun: function (e) {\n if (scrollerRef && scrollerRef.current) {\n if (x >= 0) {\n scrollerRef.current.scrollLeft = scrollLeft + e.percent * (x - scrollLeft);\n }\n\n if (y >= 0) {\n scrollerRef.current.scrollTop = scrollTop + e.percent * (y - scrollTop);\n }\n }\n }\n });\n timer.run();\n } else {\n if (x >= 0) {\n scrollerRef.current.scrollLeft = x;\n }\n\n if (y >= 0) {\n scrollerRef.current.scrollTop = y;\n }\n }\n}\n\nfunction getPixelRatio() {\n if (pixelRatio) {\n return pixelRatio;\n }\n\n pixelRatio = document.documentElement.clientWidth / FULL_WIDTH;\n return pixelRatio;\n}\n\nfunction translateToPx(origin) {\n var pixelRatio = getPixelRatio();\n\n if (typeof origin === 'number') {\n return origin * pixelRatio;\n }\n\n var matched = /^(\\d+)(r{0,1}px){0,1}$/.exec(origin);\n\n if (matched) {\n if (!matched[2]) {\n return parseInt(matched[1]) * pixelRatio;\n }\n\n if (matched[2] === 'rpx') {\n return parseInt(matched[1]) * pixelRatio;\n }\n\n if (matched[2] === 'px') {\n return parseInt(matched[1]);\n }\n }\n\n return 0;\n}\n\nvar ScrollView = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (props, ref) {\n var _cx;\n\n var className = props.className,\n style = props.style,\n horizontal = props.horizontal,\n contentContainerStyle = props.contentContainerStyle,\n disableScroll = props.disableScroll,\n scrollEventThrottle = props.scrollEventThrottle,\n showsHorizontalScrollIndicator = props.showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator = props.showsVerticalScrollIndicator,\n onEndReached = props.onEndReached,\n onEndReachedThreshold = props.onEndReachedThreshold,\n onScroll = props.onScroll,\n children = props.children;\n var lastScrollDistance = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(0);\n var lastScrollContentSize = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(0);\n var scrollerNodeSize = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(0);\n var scrollerRef = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n var contentContainerRef = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n\n var handleScroll = function (e) {\n if (props.onScroll) {\n e.nativeEvent = {\n get contentOffset() {\n return {\n x: e.target.scrollLeft,\n y: e.target.scrollTop\n };\n },\n\n get contentSize() {\n return {\n width: e.target.scrollWidth,\n height: e.target.scrollHeight\n };\n }\n\n };\n onScroll(e);\n }\n\n if (onEndReached) {\n var scrollerNode = scrollerRef.current;\n scrollerNodeSize.current = horizontal ? scrollerNode.offsetWidth : scrollerNode.offsetHeight; // NOTE:in iOS7/8 offsetHeight/Width is is inaccurate ( use scrollHeight/Width )\n\n var scrollContentSize = horizontal ? scrollerNode.scrollWidth : scrollerNode.scrollHeight;\n var scrollDistance = horizontal ? scrollerNode.scrollLeft : scrollerNode.scrollTop;\n var endReachedThreshold = translateToPx(onEndReachedThreshold);\n var isEndReached = scrollContentSize - scrollDistance - scrollerNodeSize.current < endReachedThreshold;\n var isScrollToEnd = scrollDistance > lastScrollDistance.current;\n var isLoadedMoreContent = scrollContentSize != lastScrollContentSize.current;\n\n if (isEndReached && isScrollToEnd && isLoadedMoreContent) {\n lastScrollContentSize.current = scrollContentSize;\n props.onEndReached(e);\n }\n\n lastScrollDistance.current = scrollDistance;\n }\n };\n\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useImperativeHandle\"])(ref, function () {\n return {\n _nativeNode: scrollerRef.current,\n resetScroll: function () {\n lastScrollContentSize.current = 0;\n lastScrollDistance.current = 0;\n },\n scrollTo: function (options) {\n var _ref = options || {},\n _ref$x = _ref.x,\n x = _ref$x === void 0 ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === void 0 ? 0 : _ref$y,\n _ref$animated = _ref.animated,\n animated = _ref$animated === void 0 ? true : _ref$animated,\n _ref$duration = _ref.duration,\n duration = _ref$duration === void 0 ? ANIMATION_DURATION : _ref$duration;\n\n _scrollTo(scrollerRef, translateToPx(x), translateToPx(y), animated, duration);\n },\n scrollIntoView: function (options) {\n var _ref2 = options || {},\n id = _ref2.id,\n _ref2$animated = _ref2.animated,\n animated = _ref2$animated === void 0 ? true : _ref2$animated,\n _ref2$duration = _ref2.duration,\n duration = _ref2$duration === void 0 ? ANIMATION_DURATION : _ref2$duration;\n\n if (!id) {\n throw new Error('Params missing id.');\n }\n\n var targetElement = document.getElementById(id);\n\n if (targetElement) {\n _scrollTo(scrollerRef, targetElement.offsetLeft, targetElement.offsetTop, animated, duration);\n }\n }\n };\n });\n\n if (style) {\n var childLayoutProps = ['alignItems', 'justifyContent'].filter(function (prop) {\n return style[prop] !== undefined;\n });\n\n if (childLayoutProps.length !== 0) {\n console.warn('ScrollView child layout (' + JSON.stringify(childLayoutProps) + ') must be applied through the contentContainerStyle prop.');\n }\n }\n\n var contentContainer = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: contentContainerRef,\n className: classnames__WEBPACK_IMPORTED_MODULE_2___default()((_cx = {}, _cx[baseCls + \"-content-container-horizontal\"] = horizontal, _cx[baseCls + \"-webcontainer\"] = !horizontal, _cx)),\n style: Object.assign({}, _getStyle(classnames__WEBPACK_IMPORTED_MODULE_2___default()((_cx = {}, _cx[baseCls + \"-content-container-horizontal\"] = horizontal, _cx[baseCls + \"-webcontainer\"] = !horizontal, _cx))), contentContainerStyle)\n }, children);\n\n var scrollerStyle = _extends({}, style);\n\n if (scrollerStyle.height === null || scrollerStyle.height === undefined) {\n scrollerStyle.flex = 1;\n }\n\n var cls = classnames__WEBPACK_IMPORTED_MODULE_2___default()(baseCls, baseCls + \"-\" + (horizontal ? 'horizontal' : 'vertical'), className);\n var showsScrollIndicator = horizontal ? showsHorizontalScrollIndicator : showsVerticalScrollIndicator;\n {\n if (!showsScrollIndicator && typeof document !== 'undefined' && typeof document.getElementById === 'function' && !document.getElementById(STYLE_NODE_ID)) {\n var styleNode = document.createElement('style');\n styleNode.id = STYLE_NODE_ID;\n document.head.appendChild(styleNode);\n styleNode.innerHTML = \".\" + baseCls + \"::-webkit-scrollbar{display: none;}\";\n }\n\n scrollerStyle.WebkitOverflowScrolling = 'touch';\n\n if (horizontal) {\n scrollerStyle.overflowX = 'scroll';\n scrollerStyle.overflowY = 'hidden';\n } else {\n scrollerStyle.overflowX = 'hidden';\n scrollerStyle.overflowY = 'scroll';\n }\n\n if (disableScroll) {\n scrollerStyle.overflow = 'hidden';\n }\n\n var webProps = _extends({}, props);\n\n delete webProps.onEndReachedThreshold;\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], _extends({}, webProps, {\n ref: scrollerRef,\n className: cls,\n style: Object.assign({}, _getStyle(cls), scrollerStyle),\n onScroll: scrollEventThrottle ? Object(_throttle__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(handleScroll, scrollEventThrottle) : handleScroll\n }), contentContainer);\n }\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ScrollView));\n\n/***/ }),\n\n/***/ \"./node_modules/rax-scrollview/es/weex/index.js\":\n/*!******************************************************!*\\\n !*** ./node_modules/rax-scrollview/es/weex/index.js ***!\n \\******************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_refreshcontrol__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-refreshcontrol */ \"./node_modules/rax-refreshcontrol/lib/index.js\");\n/* harmony import */ var rax_refreshcontrol__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(rax_refreshcontrol__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var rax_get_element_by_id__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rax-get-element-by-id */ \"./node_modules/rax-get-element-by-id/lib/index.js\");\n/* harmony import */ var rax_get_element_by_id__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(rax_get_element_by_id__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! classnames */ \"./node_modules/classnames/index.js\");\n/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../utils/wrapDefaultProperties */ \"./node_modules/rax-scrollview/es/utils/wrapDefaultProperties.js\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../index.css */ \"./node_modules/rax-scrollview/es/index.css\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_index_css__WEBPACK_IMPORTED_MODULE_6__);\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\n\n\n\n\nvar _styleSheet = _index_css__WEBPACK_IMPORTED_MODULE_6___default.a;\n\nfunction _getClassName() {\n var className = [];\n var args = arguments[0];\n var type = Object.prototype.toString.call(args).slice(8, -1).toLowerCase();\n\n if (type === 'string') {\n args = args.trim();\n args && className.push(args);\n } else if (type === 'array') {\n args.forEach(function (cls) {\n cls = _getClassName(cls).trim();\n cls && className.push(cls);\n });\n } else if (type === 'object') {\n for (var k in args) {\n k = k.trim();\n\n if (k && args.hasOwnProperty(k) && args[k]) {\n className.push(k);\n }\n }\n }\n\n return className.join(' ').trim();\n}\n\nfunction _getStyle(classNameExpression) {\n var cache = _styleSheet.__cache || (_styleSheet.__cache = {});\n\n var className = _getClassName(classNameExpression);\n\n var classNameArr = className.split(/\\s+/);\n var style = cache[className];\n\n if (!style) {\n style = {};\n\n if (classNameArr.length === 1) {\n style = _styleSheet[classNameArr[0].trim()];\n } else {\n classNameArr.forEach(function (cls) {\n var value = _styleSheet[cls.trim()];\n\n if (typeof value === 'object') {\n style = Object.assign(style, _styleSheet[cls.trim()]);\n }\n });\n }\n\n cache[className] = style;\n }\n\n return style;\n}\n/* global __weex_v2__ */\n\n\nvar isWeexV2 = typeof __weex_v2__ === 'object';\nvar baseCls = 'rax-scrollview';\n\nfunction _scrollTo(scrollerRef) {\n var _scrollerRef$current;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_scrollerRef$current = scrollerRef.current).scrollTo.apply(_scrollerRef$current, args);\n}\n\nvar ScrollView = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (props, ref) {\n var className = props.className,\n style = props.style,\n horizontal = props.horizontal,\n contentContainerStyle = props.contentContainerStyle,\n showsHorizontalScrollIndicator = props.showsHorizontalScrollIndicator,\n showsVerticalScrollIndicator = props.showsVerticalScrollIndicator,\n onEndReached = props.onEndReached,\n onEndReachedThreshold = props.onEndReachedThreshold,\n onScroll = props.onScroll,\n children = props.children;\n\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(0),\n loadmoreretry = _useState[0],\n setLoadmoreretry = _useState[1];\n\n var scrollerRef = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n var contentContainerRef = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useImperativeHandle\"])(ref, function () {\n return {\n _nativeNode: scrollerRef.current,\n resetScroll: function () {\n setLoadmoreretry(loadmoreretry + 1);\n },\n scrollTo: function (options) {\n var _ref = options || {},\n _ref$x = _ref.x,\n x = _ref$x === void 0 ? 0 : _ref$x,\n _ref$y = _ref.y,\n y = _ref$y === void 0 ? 0 : _ref$y,\n _ref$animated = _ref.animated,\n animated = _ref$animated === void 0 ? true : _ref$animated,\n duration = _ref.duration;\n\n if (isWeexV2) {\n _scrollTo(scrollerRef, x, y, animated, duration);\n } else {\n var dom = __weex_require__('@weex-module/dom');\n\n var _contentContainer = contentContainerRef.current;\n /**\n * Multiple scrollviews on the first screen need to be automatically scrolled to a default selected location,\n * but the content may not have been rendered (in the case of contentContainer)\n */\n\n _contentContainer && dom.scrollToElement(_contentContainer, {\n offset: x || y || 0,\n animated: animated\n });\n }\n },\n scrollIntoView: function (options) {\n var _ref2 = options || {},\n id = _ref2.id,\n _ref2$animated = _ref2.animated,\n animated = _ref2$animated === void 0 ? true : _ref2$animated,\n duration = _ref2.duration;\n\n if (!id) {\n throw new Error('Params missing id.');\n }\n\n var node = rax_get_element_by_id__WEBPACK_IMPORTED_MODULE_3___default()(id);\n\n if (node) {\n if (isWeexV2) {\n _scrollTo(scrollerRef, node, animated, duration);\n } else {\n var dom = __weex_require__('@weex-module/dom');\n\n dom.scrollToElement(node, {\n animated: animated\n });\n }\n }\n }\n };\n }); // In weex must be int value\n\n onEndReachedThreshold = typeof onEndReachedThreshold === 'string' ? parseInt(onEndReachedThreshold, 10) : onEndReachedThreshold;\n\n if (style) {\n var childLayoutProps = ['alignItems', 'justifyContent'].filter(function (prop) {\n return style[prop] !== undefined;\n });\n\n if (childLayoutProps.length !== 0) {\n console.warn('ScrollView child layout (' + JSON.stringify(childLayoutProps) + ') must be applied through the contentContainerStyle prop.');\n }\n }\n\n var refreshContainer = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null);\n var contentChild = null;\n\n if (Array.isArray(children)) {\n contentChild = children.map(function (child) {\n if (typeof child === 'object' && child !== null && 'type' in child && child.type == rax_refreshcontrol__WEBPACK_IMPORTED_MODULE_2___default.a) {\n refreshContainer = child;\n return null;\n } else {\n return child;\n }\n });\n } else {\n contentChild = children;\n }\n\n var contentContainer;\n\n if (isWeexV2) {\n refreshContainer = null;\n contentContainer = children;\n } else {\n var _cx;\n\n contentContainer = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n ref: contentContainerRef,\n className: classnames__WEBPACK_IMPORTED_MODULE_4___default()((_cx = {}, _cx[baseCls + \"-content-container-horizontal\"] = horizontal, _cx)),\n style: Object.assign({}, _getStyle(classnames__WEBPACK_IMPORTED_MODULE_4___default()((_cx = {}, _cx[baseCls + \"-content-container-horizontal\"] = horizontal, _cx))), contentContainerStyle)\n }, contentChild);\n }\n\n var scrollerStyle = _extends({}, style);\n\n if (scrollerStyle.height === null) {\n scrollerStyle.flex = 1;\n }\n\n var cls = classnames__WEBPACK_IMPORTED_MODULE_4___default()(baseCls, baseCls + \"-\" + (horizontal ? 'horizontal' : 'vertical'), className);\n var showsScrollIndicator = horizontal ? showsHorizontalScrollIndicator : showsVerticalScrollIndicator;\n\n var weexProps = _extends({}, props);\n\n if (isWeexV2) {\n delete weexProps.onEndReachedThreshold;\n }\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"scroller\", _extends({}, weexProps, {\n ref: scrollerRef,\n className: cls,\n style: Object.assign({}, _getStyle(cls), scrollerStyle),\n showScrollbar: showsScrollIndicator,\n onLoadmore: onEndReached,\n onScroll: onScroll ? function (e) {\n e.nativeEvent = {\n contentOffset: {\n // HACK: weex scroll event value is opposite of web\n x: -e.contentOffset.x,\n y: -e.contentOffset.y\n },\n contentSize: e.contentSize ? {\n width: e.contentSize.width,\n height: e.contentSize.height\n } : null\n };\n onScroll(e);\n } : null,\n loadmoreoffset: onEndReachedThreshold,\n loadmoreretry: loadmoreretry,\n scrollDirection: horizontal ? 'horizontal' : 'vertical'\n }), refreshContainer, contentContainer);\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(ScrollView));\n\n/***/ }),\n\n/***/ \"./node_modules/rax-set-native-props/lib/flexbox.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/rax-set-native-props/lib/flexbox.js ***!\n \\**********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = void 0;\nvar BOX_ALIGN = {\n stretch: 'stretch',\n 'flex-start': 'start',\n 'flex-end': 'end',\n center: 'center'\n};\nvar BOX_ORIENT = {\n row: 'horizontal',\n column: 'vertical'\n};\nvar BOX_PACK = {\n 'flex-start': 'start',\n 'flex-end': 'end',\n center: 'center',\n 'space-between': 'justify',\n 'space-around': 'justify' // Just same as `space-between`\n\n};\nvar FLEX_PROPS = {\n display: true,\n flex: true,\n alignItems: true,\n alignSelf: true,\n flexDirection: true,\n justifyContent: true,\n flexWrap: true\n};\nvar Flexbox = {\n isFlexProp: function (prop) {\n return FLEX_PROPS[prop];\n },\n display: function (value, style) {\n if (style === void 0) {\n style = {};\n }\n\n if (value === 'flex') {\n style.display = ['-webkit-box', '-webkit-flex', 'flex'];\n } else {\n style.display = value;\n }\n\n return style;\n },\n flex: function (value, style) {\n if (style === void 0) {\n style = {};\n }\n\n style.webkitBoxFlex = value;\n style.webkitFlex = value;\n style.flex = value;\n return style;\n },\n flexWrap: function (value, style) {\n if (style === void 0) {\n style = {};\n }\n\n style.webkitFlexWrap = value;\n style.flexWrap = value;\n return style;\n },\n alignItems: function (value, style) {\n if (style === void 0) {\n style = {};\n }\n\n style.webkitBoxAlign = BOX_ALIGN[value];\n style.webkitAlignItems = value;\n style.alignItems = value;\n return style;\n },\n alignSelf: function (value, style) {\n if (style === void 0) {\n style = {};\n }\n\n style.webkitAlignSelf = value;\n style.alignSelf = value;\n return style;\n },\n flexDirection: function (value, style) {\n if (style === void 0) {\n style = {};\n }\n\n style.webkitBoxOrient = BOX_ORIENT[value];\n style.webkitFlexDirection = value;\n style.flexDirection = value;\n return style;\n },\n justifyContent: function (value, style) {\n if (style === void 0) {\n style = {};\n }\n\n style.webkitBoxPack = BOX_PACK[value];\n style.webkitJustifyContent = value;\n style.justifyContent = value;\n return style;\n }\n};\nvar _default = Flexbox;\nexports.default = _default;\n\n/***/ }),\n\n/***/ \"./node_modules/rax-set-native-props/lib/index.js\":\n/*!********************************************************!*\\\n !*** ./node_modules/rax-set-native-props/lib/index.js ***!\n \\********************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nexports.__esModule = true;\nexports.default = setNativeProps;\nvar _universalEnv = {\n isWeex: false,\n isWeb: false,\n isKraken: false,\n isNode: false,\n isMiniApp: true,\n isWeChatMiniProgram: false,\n isWeChatMiniprogram: false,\n isByteDanceMicroApp: false,\n isKuaiShouMiniProgram: false,\n isBaiduSmartProgram: false\n};\n\nvar _styleUnit = __webpack_require__(/*! style-unit */ \"./node_modules/style-unit/lib/index.js\");\n\nvar _rax = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n\nvar _flexbox = _interopRequireDefault(__webpack_require__(/*! ./flexbox */ \"./node_modules/rax-set-native-props/lib/flexbox.js\"));\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nvar ADD_EVENT = 'addEvent';\nvar DANGEROUSLY_SET_INNER_HTML = 'dangerouslySetInnerHTML';\nvar CLASS_NAME = 'className';\nvar CLASS = 'class';\nvar STYLE = 'style';\nvar CHILDREN = 'children';\nvar EVENT_PREFIX_REGEXP = /^on[A-Z]/;\nvar objectPrototypeHasOwnProperty = Object.prototype.hasOwnProperty;\n\nfunction hasOwnProperty(obj, key) {\n return objectPrototypeHasOwnProperty.call(obj, key);\n}\n\nfunction setStyles() {}\n\nfunction addEventListener() {}\n\nfunction setAttribute() {}\n/**\n * Set props directly to native node.\n * @param {Node} node Reference to node intance.\n * @param {Obejct} props k-v structure to props.\n */\n\n\nfunction setNativeProps(node, props) {\n if (props === void 0) {\n props = {};\n }\n\n for (var prop in props) {\n if (!hasOwnProperty(props, prop)) continue;\n var value = props[prop]; // Skip children.\n\n if (prop === CHILDREN) continue; // Skip nullable value.\n\n if (value === null || value === undefined) continue;\n\n if (prop === STYLE) {\n setStyles(node, value);\n } else if (EVENT_PREFIX_REGEXP.test(prop)) {\n var eventName = prop.slice(2).toLowerCase();\n addEventListener(node, eventName, value, props);\n } else {\n setAttribute(node, prop, value);\n }\n }\n}\n\n/***/ }),\n\n/***/ \"./node_modules/rax-text/es/index.css\":\n/*!********************************************!*\\\n !*** ./node_modules/rax-text/es/index.css ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./node_modules/rax-text/es/index.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/rax-text/es/index.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web */ \"./node_modules/rax-text/es/web/index.js\");\n/* harmony import */ var _miniapp_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./miniapp-runtime */ \"./node_modules/rax-text/es/miniapp-runtime/index.js\");\n/* harmony import */ var _weex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./weex */ \"./node_modules/rax-text/es/weex/index.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ \"./node_modules/rax-text/es/types.js\");\n/* empty/unused harmony star reexport */var isKuaiShouMiniProgram = false;\nvar isBaiduSmartProgram = false;\nvar isByteDanceMicroApp = false;\nvar isWeChatMiniProgram = false;\nvar isMiniApp = true;\nvar isWeex = false;\nvar isWeb = false;\n\n\n\nvar Text = null;\nText = _miniapp_runtime__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (Text);\n\n\n/***/ }),\n\n/***/ \"./node_modules/rax-text/es/miniapp-runtime/index.js\":\n/*!***********************************************************!*\\\n !*** ./node_modules/rax-text/es/miniapp-runtime/index.js ***!\n \\***********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/wrapDefaultProperties */ \"./node_modules/rax-text/es/utils/wrapDefaultProperties.js\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../index.css */ \"./node_modules/rax-text/es/index.css\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_index_css__WEBPACK_IMPORTED_MODULE_2__);\nvar _excluded = [\"className\", \"style\", \"numberOfLines\", \"children\", \"onPress\", \"onClick\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\nvar isMiniApp = true;\n\n // add version in style to avoid conflict with older version\n\nvar _styleSheet = _index_css__WEBPACK_IMPORTED_MODULE_2___default.a;\n\nfunction _getClassName() {\n var className = [];\n var args = arguments[0];\n var type = Object.prototype.toString.call(args).slice(8, -1).toLowerCase();\n\n if (type === 'string') {\n args = args.trim();\n args && className.push(args);\n } else if (type === 'array') {\n args.forEach(function (cls) {\n cls = _getClassName(cls).trim();\n cls && className.push(cls);\n });\n } else if (type === 'object') {\n for (var k in args) {\n k = k.trim();\n\n if (k && args.hasOwnProperty(k) && args[k]) {\n className.push(k);\n }\n }\n }\n\n return className.join(' ').trim();\n}\n\nfunction _getStyle(classNameExpression) {\n var cache = _styleSheet.__cache || (_styleSheet.__cache = {});\n\n var className = _getClassName(classNameExpression);\n\n var classNameArr = className.split(/\\s+/);\n var style = cache[className];\n\n if (!style) {\n style = {};\n\n if (classNameArr.length === 1) {\n style = _styleSheet[classNameArr[0].trim()];\n } else {\n classNameArr.forEach(function (cls) {\n var value = _styleSheet[cls.trim()];\n\n if (typeof value === 'object') {\n style = Object.assign(style, _styleSheet[cls.trim()]);\n }\n });\n }\n\n cache[className] = style;\n }\n\n return style;\n}\n\nvar prefixCls = 'rax-text-v2';\nvar Text = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (props, ref) {\n var className = props.className,\n style = props.style,\n numberOfLines = props.numberOfLines,\n children = props.children,\n onPress = props.onPress,\n onClick = props.onClick,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var lines = typeof numberOfLines === 'string' ? parseInt(numberOfLines, 10) : numberOfLines;\n var textString = '';\n\n if (children != null) {\n textString = Array.isArray(children) ? children.join('') : children.toString();\n }\n\n var lineClamp = lines > 0 ? lines : undefined;\n var classNames = [prefixCls, className].join(' ');\n return (// @ts-ignore\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"text\", _extends({}, rest, {\n ref: ref,\n className: classNames,\n style: Object.assign({}, _getStyle(classNames), _extends({}, style, {\n WebkitLineClamp: lineClamp\n })),\n onClick: onClick || onPress,\n \"number-of-lines\": lines\n }), textString)\n );\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Text));\n\n/***/ }),\n\n/***/ \"./node_modules/rax-text/es/types.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/rax-text/es/types.js ***!\n \\*******************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n\n/***/ }),\n\n/***/ \"./node_modules/rax-text/es/utils/wrapDefaultProperties.js\":\n/*!*****************************************************************!*\\\n !*** ./node_modules/rax-text/es/utils/wrapDefaultProperties.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return wrapDefaultProperties; });\nfunction wrapDefaultProperties(Text) {\n Text.displayName = 'ScrollView';\n return Text;\n}\n\n/***/ }),\n\n/***/ \"./node_modules/rax-text/es/web/index.js\":\n/*!***********************************************!*\\\n !*** ./node_modules/rax-text/es/web/index.js ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/wrapDefaultProperties */ \"./node_modules/rax-text/es/utils/wrapDefaultProperties.js\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../index.css */ \"./node_modules/rax-text/es/index.css\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_index_css__WEBPACK_IMPORTED_MODULE_2__);\nvar _excluded = [\"className\", \"style\", \"numberOfLines\", \"children\", \"onPress\", \"onClick\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\n // add version in style to avoid conflict with older version\n\nvar _styleSheet = _index_css__WEBPACK_IMPORTED_MODULE_2___default.a;\n\nfunction _getClassName() {\n var className = [];\n var args = arguments[0];\n var type = Object.prototype.toString.call(args).slice(8, -1).toLowerCase();\n\n if (type === 'string') {\n args = args.trim();\n args && className.push(args);\n } else if (type === 'array') {\n args.forEach(function (cls) {\n cls = _getClassName(cls).trim();\n cls && className.push(cls);\n });\n } else if (type === 'object') {\n for (var k in args) {\n k = k.trim();\n\n if (k && args.hasOwnProperty(k) && args[k]) {\n className.push(k);\n }\n }\n }\n\n return className.join(' ').trim();\n}\n\nfunction _getStyle(classNameExpression) {\n var cache = _styleSheet.__cache || (_styleSheet.__cache = {});\n\n var className = _getClassName(classNameExpression);\n\n var classNameArr = className.split(/\\s+/);\n var style = cache[className];\n\n if (!style) {\n style = {};\n\n if (classNameArr.length === 1) {\n style = _styleSheet[classNameArr[0].trim()];\n } else {\n classNameArr.forEach(function (cls) {\n var value = _styleSheet[cls.trim()];\n\n if (typeof value === 'object') {\n style = Object.assign(style, _styleSheet[cls.trim()]);\n }\n });\n }\n\n cache[className] = style;\n }\n\n return style;\n}\n\nvar prefixCls = 'rax-text-v2';\nvar Text = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (props, ref) {\n var className = props.className,\n style = props.style,\n numberOfLines = props.numberOfLines,\n children = props.children,\n onPress = props.onPress,\n onClick = props.onClick,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var lines = typeof numberOfLines === 'string' ? parseInt(numberOfLines, 10) : numberOfLines;\n var textString = '';\n\n if (children != null) {\n textString = Array.isArray(children) ? children.join('') : children.toString();\n }\n\n var classNames = [prefixCls, className];\n\n if (lines) {\n classNames.push(prefixCls + \"--overflow-hidden\");\n\n if (lines === 1) {\n classNames.push(prefixCls + \"--singleline\");\n } else {\n classNames.push(prefixCls + \"--multiline\");\n }\n }\n\n var lineClamp = lines > 1 ? lines : undefined;\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"span\", _extends({}, rest, {\n ref: ref,\n className: classNames.join(' ') // Vendor prefixes should begin with a capital letter.\n ,\n style: Object.assign({}, _getStyle(classNames.join(' ')), _extends({}, style, {\n // Currently only -webkit-line-clamp is supported in browsers\n // https://www.w3.org/TR/css-overflow-3/#webkit-line-clamp\n WebkitLineClamp: lineClamp,\n // Add line-clamp for standard compatibility and engines which\n // has already support it such as Kraken\n lineClamp: lineClamp\n })),\n onClick: onClick || onPress\n }), textString);\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Text));\n\n/***/ }),\n\n/***/ \"./node_modules/rax-text/es/weex/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/rax-text/es/weex/index.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../utils/wrapDefaultProperties */ \"./node_modules/rax-text/es/utils/wrapDefaultProperties.js\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../index.css */ \"./node_modules/rax-text/es/index.css\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_index_css__WEBPACK_IMPORTED_MODULE_2__);\nvar _excluded = [\"className\", \"style\", \"numberOfLines\", \"children\", \"onPress\", \"onClick\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\n\nvar _styleSheet = _index_css__WEBPACK_IMPORTED_MODULE_2___default.a;\n\nfunction _getClassName() {\n var className = [];\n var args = arguments[0];\n var type = Object.prototype.toString.call(args).slice(8, -1).toLowerCase();\n\n if (type === 'string') {\n args = args.trim();\n args && className.push(args);\n } else if (type === 'array') {\n args.forEach(function (cls) {\n cls = _getClassName(cls).trim();\n cls && className.push(cls);\n });\n } else if (type === 'object') {\n for (var k in args) {\n k = k.trim();\n\n if (k && args.hasOwnProperty(k) && args[k]) {\n className.push(k);\n }\n }\n }\n\n return className.join(' ').trim();\n}\n\nfunction _getStyle(classNameExpression) {\n var cache = _styleSheet.__cache || (_styleSheet.__cache = {});\n\n var className = _getClassName(classNameExpression);\n\n var classNameArr = className.split(/\\s+/);\n var style = cache[className];\n\n if (!style) {\n style = {};\n\n if (classNameArr.length === 1) {\n style = _styleSheet[classNameArr[0].trim()];\n } else {\n classNameArr.forEach(function (cls) {\n var value = _styleSheet[cls.trim()];\n\n if (typeof value === 'object') {\n style = Object.assign(style, _styleSheet[cls.trim()]);\n }\n });\n }\n\n cache[className] = style;\n }\n\n return style;\n}\n\nvar prefixCls = 'rax-text-v2';\nvar Text = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (props, ref) {\n var className = props.className,\n style = props.style,\n numberOfLines = props.numberOfLines,\n children = props.children,\n onPress = props.onPress,\n onClick = props.onClick,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var handleClick = onClick || onPress;\n var lines = typeof numberOfLines === 'string' ? parseInt(numberOfLines, 10) : numberOfLines;\n var textString = '';\n\n if (children != null) {\n textString = Array.isArray(children) ? children.join('') : children.toString();\n }\n /* global __weex_v2__ */\n\n\n if (typeof __weex_v2__ === 'object') {\n var classNames = [className];\n\n if (lines) {\n classNames.push(prefixCls + \"--overflow-hidden\");\n\n if (lines === 1) {\n classNames.push(prefixCls + \"--singleline\");\n } else {\n classNames.push(prefixCls + \"--multiline\");\n }\n }\n\n var lineClamp = lines > 1 ? lines : undefined;\n return (// @ts-ignore\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"text\", _extends({}, rest, {\n ref: ref,\n className: classNames.join(' '),\n style: Object.assign({}, _getStyle(classNames.join(' ')), _extends({}, style, {\n lineClamp: lineClamp\n })),\n onClick: handleClick\n }), textString)\n );\n }\n\n return (// @ts-ignore\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"text\", _extends({}, rest, {\n ref: ref,\n className: className,\n style: Object.assign({}, _getStyle(className), _extends({\n lines: lines\n }, style)),\n onClick: handleClick\n }), textString)\n );\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(Text));\n\n/***/ }),\n\n/***/ \"./node_modules/rax-textinput/es/index.css\":\n/*!*************************************************!*\\\n !*** ./node_modules/rax-textinput/es/index.css ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./node_modules/rax-textinput/es/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/rax-textinput/es/index.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var babel_runtime_jsx_plus__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! babel-runtime-jsx-plus */ \"./node_modules/babel-runtime-jsx-plus/dist/babel-runtime-jsx-plus.umd.js\");\n/* harmony import */ var babel_runtime_jsx_plus__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(babel_runtime_jsx_plus__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var rax_set_native_props__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-set-native-props */ \"./node_modules/rax-set-native-props/lib/index.js\");\n/* harmony import */ var rax_set_native_props__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(rax_set_native_props__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _keyboardTypeMap__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./keyboardTypeMap */ \"./node_modules/rax-textinput/es/keyboardTypeMap.js\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./index.css */ \"./node_modules/rax-textinput/es/index.css\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_index_css__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\nvar isMiniApp = true;\nvar isNode = false;\nvar isWeb = false;\nvar isWeex = false;\n\n\n\nvar _styleSheet = _index_css__WEBPACK_IMPORTED_MODULE_4___default.a;\n\nfunction _getClassName() {\n var className = [];\n var args = arguments[0];\n var type = Object.prototype.toString.call(args).slice(8, -1).toLowerCase();\n\n if (type === 'string') {\n args = args.trim();\n args && className.push(args);\n } else if (type === 'array') {\n args.forEach(function (cls) {\n cls = _getClassName(cls).trim();\n cls && className.push(cls);\n });\n } else if (type === 'object') {\n for (var k in args) {\n k = k.trim();\n\n if (k && args.hasOwnProperty(k) && args[k]) {\n className.push(k);\n }\n }\n }\n\n return className.join(' ').trim();\n}\n\nfunction _getStyle(classNameExpression) {\n var cache = _styleSheet.__cache || (_styleSheet.__cache = {});\n\n var className = _getClassName(classNameExpression);\n\n var classNameArr = className.split(/\\s+/);\n var style = cache[className];\n\n if (!style) {\n style = {};\n\n if (classNameArr.length === 1) {\n style = _styleSheet[classNameArr[0].trim()];\n } else {\n classNameArr.forEach(function (cls) {\n var value = _styleSheet[cls.trim()];\n\n if (typeof value === 'object') {\n style = Object.assign(style, _styleSheet[cls.trim()]);\n }\n });\n }\n\n cache[className] = style;\n }\n\n return style;\n}\n\nvar inputId = 0;\n\nfunction getText(event) {\n var text = '';\n text = event.target.value;\n return text;\n}\n\nfunction genEventObject(event) {\n var text = getText(event);\n return {\n nativeEvent: {\n text: text\n },\n originalEvent: event,\n value: text,\n target: event.target\n };\n}\n/**\n * Judge whether the val is truthy or zero value\n * Because number 0 should be recognized as valid input too\n * @param val\n * @returns\n */\n\n\nfunction isTruthyOrZero(val) {\n return val === 0 ? true : !!val;\n}\n\nvar TextInput = Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"forwardRef\"])(function (props, ref) {\n var refEl = Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"useRef\"])(null);\n\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(0),\n forceUpdate = _useState[1];\n\n var styleClassName = \"rax-textinput-placeholder-\" + inputId++;\n var className = props.className,\n accessibilityLabel = props.accessibilityLabel,\n autoComplete = props.autoComplete,\n editable = props.editable,\n keyboardType = props.keyboardType,\n maxNumberOfLines = props.maxNumberOfLines,\n maxLength = props.maxLength,\n maxlength = props.maxlength,\n multiline = props.multiline,\n numberOfLines = props.numberOfLines,\n confirmType = props.confirmType,\n randomNumber = props.randomNumber,\n _props$showCount = props.showCount,\n showCount = _props$showCount === void 0 ? true : _props$showCount,\n selectionStart = props.selectionStart,\n selectionEnd = props.selectionEnd,\n onBlur = props.onBlur,\n onFocus = props.onFocus,\n onChange = props.onChange,\n onChangeText = props.onChangeText,\n _onInput = props.onInput,\n password = props.password,\n secureTextEntry = props.secureTextEntry,\n style = props.style,\n _props$placeholderCol = props.placeholderColor,\n placeholderColor = _props$placeholderCol === void 0 ? '#999999' : _props$placeholderCol,\n propsValue = props.value,\n defaultValue = props.defaultValue,\n controlled = props.controlled;\n var type = password || secureTextEntry ? 'password' : typeof _keyboardTypeMap__WEBPACK_IMPORTED_MODULE_3__[\"default\"][keyboardType] === 'undefined' ? keyboardType : _keyboardTypeMap__WEBPACK_IMPORTED_MODULE_3__[\"default\"][keyboardType];\n var value = isTruthyOrZero(propsValue) ? propsValue : '';\n Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"useMemo\"])(function () {\n value = isTruthyOrZero(propsValue) ? propsValue : isTruthyOrZero(defaultValue) ? defaultValue : '';\n }, []); // Check is type supported or not\n // Use isWeb to exclude web-view\n\n // Other types, like numberpad, we can check it with canIUse\n if (!['text', 'number', 'idcard', 'digit'].includes(type) && !my.canIUse(\"input.type.\" + type)) {\n // If not support, fallback to text\n type = 'text';\n }\n\n var setValue = function (value) {\n if (value === void 0) {\n value = '';\n }\n\n rax_set_native_props__WEBPACK_IMPORTED_MODULE_2___default()(refEl.current, {\n value: value\n });\n };\n\n var handleInput = function (event) {\n _onInput(genEventObject(event));\n };\n\n var handleChange = function (event) {\n if (onChange) onChange(genEventObject(event));\n if (onChangeText) onChangeText(getText(event));\n };\n\n var propsCommon = _extends({}, props, {\n 'aria-label': accessibilityLabel,\n autoComplete: autoComplete && 'on',\n maxlength: maxlength || maxLength,\n onChange: (onChange || onChangeText) && handleChange,\n onBlur: onBlur && function (event) {\n onBlur(genEventObject(event));\n },\n onFocus: onFocus && function (event) {\n onFocus(genEventObject(event));\n }\n }); // Diff with web readonly attr, `disabled` must be boolean value\n\n\n var disabled = Boolean(editable !== undefined && !editable);\n var rows = numberOfLines || maxNumberOfLines;\n Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"useImperativeHandle\"])(ref, function () {\n return {\n _nativeNode: refEl.current,\n focus: function () {\n refEl.current.focus();\n },\n blur: function () {\n refEl.current.blur();\n },\n clear: function () {\n setValue('');\n }\n };\n });\n Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"useEffect\"])(function () {\n if (controlled && typeof value !== 'undefined' && value !== null && refEl.current) {\n var currentValue = refEl.current.value;\n var newValue = '' + value;\n\n if (currentValue !== newValue) {\n refEl.current.value = newValue;\n }\n }\n });\n\n if (multiline) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax__WEBPACK_IMPORTED_MODULE_1__[\"Fragment\"], null, Object(babel_runtime_jsx_plus__WEBPACK_IMPORTED_MODULE_0__[\"createCondition\"])([[function () {\n return (isWeb || isNode) && placeholderColor;\n }, function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(\"style\", {\n dangerouslySetInnerHTML: {\n __html: \".\" + styleClassName + \"::placeholder {\\n color: \" + placeholderColor + \"\\n }\"\n }\n });\n }]]), Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(\"textarea\", _extends({}, propsCommon, {\n ref: refEl,\n className: ['rax-textinput', styleClassName, className || ''].join(' '),\n style: Object.assign({}, _getStyle(['rax-textinput', styleClassName, className || ''].join(' ')), _extends({}, style, {\n placeholderColor: placeholderColor\n })),\n row: rows,\n rows: rows,\n disabled: disabled,\n onChange: handleChange,\n value: value,\n \"confirm-type\": confirmType,\n \"show-count\": showCount,\n onInput: function (e) {\n _onInput && handleInput(e);\n forceUpdate(function (tick) {\n return tick + 1;\n });\n }\n }), !isWeex && (propsCommon.value || defaultValue || '')));\n } else {\n return Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax__WEBPACK_IMPORTED_MODULE_1__[\"Fragment\"], null, Object(babel_runtime_jsx_plus__WEBPACK_IMPORTED_MODULE_0__[\"createCondition\"])([[function () {\n return (isWeb || isNode) && placeholderColor;\n }, function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(\"style\", {\n dangerouslySetInnerHTML: {\n __html: \".\" + styleClassName + \"::placeholder {\\n color: \" + placeholderColor + \"\\n }\"\n }\n });\n }]]), Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(\"input\", _extends({}, propsCommon, {\n ref: refEl,\n className: ['rax-textinput', styleClassName, className || ''].join(' '),\n style: Object.assign({}, _getStyle(['rax-textinput', styleClassName, className || ''].join(' ')), _extends({}, style, {\n placeholderColor: placeholderColor\n })),\n type: type,\n disabled: disabled,\n value: value,\n \"confirm-type\": confirmType,\n \"random-Number\": randomNumber,\n \"selection-start\": selectionStart,\n \"selection-end\": selectionEnd,\n onInput: function (e) {\n _onInput && handleInput(e);\n forceUpdate(function (tick) {\n return tick + 1;\n });\n }\n })));\n }\n});\nTextInput.displayName = 'TextInput';\n/* harmony default export */ __webpack_exports__[\"default\"] = (TextInput);\n\n/***/ }),\n\n/***/ \"./node_modules/rax-textinput/es/keyboardTypeMap.js\":\n/*!**********************************************************!*\\\n !*** ./node_modules/rax-textinput/es/keyboardTypeMap.js ***!\n \\**********************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar keyboardTypeMap = {\n default: 'text',\n 'ascii-capable': 'text',\n 'numbers-and-punctuation': 'number',\n url: 'url',\n 'number-pad': 'number',\n 'phone-pad': 'tel',\n 'name-phone-pad': 'text',\n 'email-address': 'email',\n 'decimal-pad': 'number',\n twitter: 'text',\n 'web-search': 'search',\n numeric: 'number',\n // Alibaba MiniApp and WeChat MiniProgram\n number: 'number',\n text: 'text',\n idcard: 'idcard',\n digit: 'digit',\n numberpad: 'numberpad',\n digitpad: 'digitpad',\n idcardpad: 'idcardpad'\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (keyboardTypeMap);\n\n/***/ }),\n\n/***/ \"./node_modules/rax-video/es/index.js\":\n/*!********************************************!*\\\n !*** ./node_modules/rax-video/es/index.js ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _web__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./web */ \"./node_modules/rax-video/es/web/index.js\");\n/* harmony import */ var _miniapp_runtime__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./miniapp-runtime */ \"./node_modules/rax-video/es/miniapp-runtime/index.js\");\n/* harmony import */ var _weex__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./weex */ \"./node_modules/rax-video/es/weex/index.js\");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./types */ \"./node_modules/rax-video/es/types.js\");\n/* empty/unused harmony star reexport */var isKuaiShouMiniProgram = false;\nvar isBaiduSmartProgram = false;\nvar isByteDanceMicroApp = false;\nvar isWeChatMiniProgram = false;\nvar isMiniApp = true;\nvar isWeex = false;\nvar isWeb = false;\n\n\n\nvar Video = null;\nVideo = _miniapp_runtime__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (Video);\n\n\n/***/ }),\n\n/***/ \"./node_modules/rax-video/es/miniapp-runtime/index.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/rax-video/es/miniapp-runtime/index.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames_dedupe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n/* harmony import */ var classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames_dedupe__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var omit_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! omit.js */ \"./node_modules/omit.js/es/index.js\");\n/* harmony import */ var _utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/wrapDefaultProperties */ \"./node_modules/rax-video/es/utils/wrapDefaultProperties.js\");\n/* harmony import */ var _uni_video__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uni/video */ \"../dist/lib/@uni/video/es/index.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\n\n\nvar miniappVideoPropsMap = {\n showMuteBtn: 'show-mute-btn',\n showPlayBtn: 'show-play-btn',\n showFullscreenBtn: 'show-fullscreen-btn',\n showCenterPlayBtn: 'show-center-play-btn',\n showThinProgressBar: 'show-thin-progress-bar',\n objectFit: 'object-fit'\n};\nvar Video = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (props, ref) {\n var id = props.id,\n _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n style = props.style,\n controls = props.controls,\n playControl = props.playControl,\n autoPlay = props.autoPlay;\n var refEl = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useImperativeHandle\"])(ref, function () {\n return refEl.current;\n });\n var common = Object(omit_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(props, ['className', 'controls', 'style', 'playControl', 'autoPlay']); // Default controls is true\n\n common.controls = controls === undefined || controls === true;\n common.autoplay = playControl === 'play' || autoPlay;\n Object.keys(miniappVideoPropsMap).forEach(function (prop) {\n common[miniappVideoPropsMap[prop]] = common[prop];\n delete common[prop];\n });\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n if (playControl !== undefined) {\n if (!id) {\n console.warn('id is required if using playControl in miniapp!');\n return;\n }\n\n var cacheVideoContext = function () {\n refEl.current = Object(_uni_video__WEBPACK_IMPORTED_MODULE_4__[\"createVideoContext\"])(id);\n window.removeEventListener('setDataFinished', cacheVideoContext);\n };\n\n window.addEventListener('setDataFinished', cacheVideoContext);\n }\n }, []);\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n if (playControl !== undefined && refEl.current) {\n playControl === 'play' ? refEl.current.play() : refEl.current.pause();\n }\n }, [playControl]);\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"video\", _extends({}, common, {\n className: classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default()('rax-video', className),\n style: style,\n \"webkit-playsinline\": true,\n playsinline: true,\n src: props.src\n }));\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Video));\n\n/***/ }),\n\n/***/ \"./node_modules/rax-video/es/types.js\":\n/*!********************************************!*\\\n !*** ./node_modules/rax-video/es/types.js ***!\n \\********************************************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n\n\n/***/ }),\n\n/***/ \"./node_modules/rax-video/es/utils/wrapDefaultProperties.js\":\n/*!******************************************************************!*\\\n !*** ./node_modules/rax-video/es/utils/wrapDefaultProperties.js ***!\n \\******************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return wrapDefaultProperties; });\nfunction wrapDefaultProperties(Video) {\n Video.displayName = 'Video';\n return Video;\n}\n\n/***/ }),\n\n/***/ \"./node_modules/rax-video/es/web/index.js\":\n/*!************************************************!*\\\n !*** ./node_modules/rax-video/es/web/index.js ***!\n \\************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames_dedupe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n/* harmony import */ var classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames_dedupe__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var omit_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! omit.js */ \"./node_modules/omit.js/es/index.js\");\n/* harmony import */ var _utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/wrapDefaultProperties */ \"./node_modules/rax-video/es/utils/wrapDefaultProperties.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\n\nvar Video = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (props, ref) {\n var className = props.className,\n style = props.style,\n controls = props.controls,\n playControl = props.playControl,\n autoPlay = props.autoPlay,\n onPlayError = props.onPlayError;\n var refEl = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useImperativeHandle\"])(ref, function () {\n return refEl.current;\n });\n var common = Object(omit_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(props, ['className', 'controls', 'style', 'playControl']); // Default controls is true\n\n if (controls == undefined || controls === true) {\n common.controls = true;\n } else {\n common.controls = false;\n }\n\n common.autoPlay = playControl === 'play' || autoPlay;\n\n if (common.autoPlay === false) {\n delete common.autoPlay; // In W3C standard, if the attribute is set, it will be treated as true regardless of its value\n }\n\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n var node = refEl.current;\n\n if (playControl !== undefined) {\n if (playControl === 'play') {\n var playPromise = node.play(); // Should return a Promise https://developer.mozilla.org/en-US/docs/Web/API/HTMLMediaElement/play\n\n if (playPromise !== undefined) {\n playPromise.catch(function (error) {\n onPlayError(error);\n });\n }\n } else {\n node.pause();\n }\n }\n }, [playControl]);\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"video\", _extends({}, common, {\n ref: refEl,\n className: classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default()('rax-video', className),\n style: style,\n \"webkit-playsinline\": true,\n playsinline: true,\n src: props.src\n }));\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Video));\n\n/***/ }),\n\n/***/ \"./node_modules/rax-video/es/weex/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/rax-video/es/weex/index.js ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames_dedupe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n/* harmony import */ var classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames_dedupe__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var omit_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! omit.js */ \"./node_modules/omit.js/es/index.js\");\n/* harmony import */ var _utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/wrapDefaultProperties */ \"./node_modules/rax-video/es/utils/wrapDefaultProperties.js\");\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\n\n\n\n\nvar Video = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (props, ref) {\n var className = props.className,\n style = props.style,\n controls = props.controls,\n playControl = props.playControl,\n autoPlay = props.autoPlay;\n var refEl = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useImperativeHandle\"])(ref, function () {\n return refEl.current;\n });\n var common = Object(omit_js__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(props, ['className', 'controls', 'style', 'playControl']); // Default controls is true\n\n if (controls == undefined || controls === true) {\n common.controls = true;\n } else {\n common.controls = 'nocontrols';\n }\n\n common.autoPlay = playControl === 'play' || autoPlay;\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"video\", _extends({}, common, {\n ref: refEl,\n className: classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default()('rax-video', className),\n style: style,\n playStatus: playControl\n }));\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(Video));\n\n/***/ }),\n\n/***/ \"./node_modules/rax-view/es/common/index.js\":\n/*!**************************************************!*\\\n !*** ./node_modules/rax-view/es/common/index.js ***!\n \\**************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames_dedupe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n/* harmony import */ var classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames_dedupe__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/wrapDefaultProperties */ \"./node_modules/rax-view/es/utils/wrapDefaultProperties.js\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../index.css */ \"./node_modules/rax-view/es/index.css\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_index_css__WEBPACK_IMPORTED_MODULE_3__);\nvar _excluded = [\"className\", \"style\", \"onFirstAppear\", \"onAppear\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\nvar isWeex = false;\n\n\nvar _styleSheet = _index_css__WEBPACK_IMPORTED_MODULE_3___default.a;\n\nfunction _getClassName() {\n var className = [];\n var args = arguments[0];\n var type = Object.prototype.toString.call(args).slice(8, -1).toLowerCase();\n\n if (type === 'string') {\n args = args.trim();\n args && className.push(args);\n } else if (type === 'array') {\n args.forEach(function (cls) {\n cls = _getClassName(cls).trim();\n cls && className.push(cls);\n });\n } else if (type === 'object') {\n for (var k in args) {\n k = k.trim();\n\n if (k && args.hasOwnProperty(k) && args[k]) {\n className.push(k);\n }\n }\n }\n\n return className.join(' ').trim();\n}\n\nfunction _getStyle(classNameExpression) {\n var cache = _styleSheet.__cache || (_styleSheet.__cache = {});\n\n var className = _getClassName(classNameExpression);\n\n var classNameArr = className.split(/\\s+/);\n var style = cache[className];\n\n if (!style) {\n style = {};\n\n if (classNameArr.length === 1) {\n style = _styleSheet[classNameArr[0].trim()];\n } else {\n classNameArr.forEach(function (cls) {\n var value = _styleSheet[cls.trim()];\n\n if (typeof value === 'object') {\n style = Object.assign(style, _styleSheet[cls.trim()]);\n }\n });\n }\n\n cache[className] = style;\n }\n\n return style;\n}\n\nvar View = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (props, ref) {\n var selfRef = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n\n var className = props.className,\n style = props.style,\n onFirstAppear = props.onFirstAppear,\n onAppear = props.onAppear,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n var handleAppear = onAppear;\n\n if (onFirstAppear) {\n handleAppear = function (event) {\n onAppear && onAppear(event);\n\n if (!selfRef.current || !selfRef.current.triggeredAppear) {\n onFirstAppear && onFirstAppear(event);\n selfRef.current = {\n triggeredAppear: true\n };\n }\n };\n }\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"div\", _extends({}, rest, {\n onAppear: handleAppear,\n ref: ref,\n className: classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default()('rax-view-v2', className),\n style: Object.assign({}, _getStyle(classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default()('rax-view-v2', className)), style)\n }));\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(View));\n\n/***/ }),\n\n/***/ \"./node_modules/rax-view/es/index.css\":\n/*!********************************************!*\\\n !*** ./node_modules/rax-view/es/index.css ***!\n \\********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n// extracted by mini-css-extract-plugin\n\n/***/ }),\n\n/***/ \"./node_modules/rax-view/es/index.js\":\n/*!*******************************************!*\\\n !*** ./node_modules/rax-view/es/index.js ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _common__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./common */ \"./node_modules/rax-view/es/common/index.js\");\n/* harmony import */ var _miniapp_ali__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./miniapp/ali */ \"./node_modules/rax-view/es/miniapp/ali.js\");\n/* harmony import */ var _miniapp_wechat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./miniapp/wechat */ \"./node_modules/rax-view/es/miniapp/wechat.js\");\nvar isWeChatMiniProgram = false;\nvar isWeb = false;\nvar isMiniApp = true;\n\n\n\nvar View = null;\nView = _miniapp_ali__WEBPACK_IMPORTED_MODULE_1__[\"default\"];\n/* harmony default export */ __webpack_exports__[\"default\"] = (View);\n\n/***/ }),\n\n/***/ \"./node_modules/rax-view/es/miniapp/ali.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/rax-view/es/miniapp/ali.js ***!\n \\*************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames_dedupe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n/* harmony import */ var classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames_dedupe__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/wrapDefaultProperties */ \"./node_modules/rax-view/es/utils/wrapDefaultProperties.js\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../index.css */ \"./node_modules/rax-view/es/index.css\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_index_css__WEBPACK_IMPORTED_MODULE_3__);\nvar _excluded = [\"className\", \"style\", \"onFirstAppear\", \"onAppear\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\n\n\nvar _styleSheet = _index_css__WEBPACK_IMPORTED_MODULE_3___default.a;\n\nfunction _getClassName() {\n var className = [];\n var args = arguments[0];\n var type = Object.prototype.toString.call(args).slice(8, -1).toLowerCase();\n\n if (type === 'string') {\n args = args.trim();\n args && className.push(args);\n } else if (type === 'array') {\n args.forEach(function (cls) {\n cls = _getClassName(cls).trim();\n cls && className.push(cls);\n });\n } else if (type === 'object') {\n for (var k in args) {\n k = k.trim();\n\n if (k && args.hasOwnProperty(k) && args[k]) {\n className.push(k);\n }\n }\n }\n\n return className.join(' ').trim();\n}\n\nfunction _getStyle(classNameExpression) {\n var cache = _styleSheet.__cache || (_styleSheet.__cache = {});\n\n var className = _getClassName(classNameExpression);\n\n var classNameArr = className.split(/\\s+/);\n var style = cache[className];\n\n if (!style) {\n style = {};\n\n if (classNameArr.length === 1) {\n style = _styleSheet[classNameArr[0].trim()];\n } else {\n classNameArr.forEach(function (cls) {\n var value = _styleSheet[cls.trim()];\n\n if (typeof value === 'object') {\n style = Object.assign(style, _styleSheet[cls.trim()]);\n }\n });\n }\n\n cache[className] = style;\n }\n\n return style;\n}\n\nvar View = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (props, ref) {\n var _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n style = props.style,\n onFirstAppear = props.onFirstAppear,\n onAppear = props.onAppear,\n rest = _objectWithoutPropertiesLoose(props, _excluded); // For miniapp runtime pre-compile\n // @ts-ignore\n\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"view\", _extends({}, rest, {\n onAppear: onAppear,\n onDisappear: rest.onDisappear,\n onFirstAppear: onFirstAppear,\n ref: ref,\n className: classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default()('rax-view-v2', className),\n style: Object.assign({}, _getStyle(classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default()('rax-view-v2', className)), style)\n }));\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(View));\n\n/***/ }),\n\n/***/ \"./node_modules/rax-view/es/miniapp/wechat.js\":\n/*!****************************************************!*\\\n !*** ./node_modules/rax-view/es/miniapp/wechat.js ***!\n \\****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var classnames_dedupe__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames/dedupe */ \"./node_modules/classnames/dedupe.js\");\n/* harmony import */ var classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames_dedupe__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../utils/wrapDefaultProperties */ \"./node_modules/rax-view/es/utils/wrapDefaultProperties.js\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../index.css */ \"./node_modules/rax-view/es/index.css\");\n/* harmony import */ var _index_css__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_index_css__WEBPACK_IMPORTED_MODULE_3__);\nvar _excluded = [\"className\", \"style\", \"onFirstAppear\", \"onAppear\", \"onDisappear\"];\n\nfunction _extends() {\n _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\n return _extends.apply(this, arguments);\n}\n\nfunction _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\n\n\n\n\nvar _styleSheet = _index_css__WEBPACK_IMPORTED_MODULE_3___default.a;\n\nfunction _getClassName() {\n var className = [];\n var args = arguments[0];\n var type = Object.prototype.toString.call(args).slice(8, -1).toLowerCase();\n\n if (type === 'string') {\n args = args.trim();\n args && className.push(args);\n } else if (type === 'array') {\n args.forEach(function (cls) {\n cls = _getClassName(cls).trim();\n cls && className.push(cls);\n });\n } else if (type === 'object') {\n for (var k in args) {\n k = k.trim();\n\n if (k && args.hasOwnProperty(k) && args[k]) {\n className.push(k);\n }\n }\n }\n\n return className.join(' ').trim();\n}\n\nfunction _getStyle(classNameExpression) {\n var cache = _styleSheet.__cache || (_styleSheet.__cache = {});\n\n var className = _getClassName(classNameExpression);\n\n var classNameArr = className.split(/\\s+/);\n var style = cache[className];\n\n if (!style) {\n style = {};\n\n if (classNameArr.length === 1) {\n style = _styleSheet[classNameArr[0].trim()];\n } else {\n classNameArr.forEach(function (cls) {\n var value = _styleSheet[cls.trim()];\n\n if (typeof value === 'object') {\n style = Object.assign(style, _styleSheet[cls.trim()]);\n }\n });\n }\n\n cache[className] = style;\n }\n\n return style;\n}\n\nvar View = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"forwardRef\"])(function (props, ref) {\n var selfRef = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n\n var _props$className = props.className,\n className = _props$className === void 0 ? '' : _props$className,\n style = props.style,\n onFirstAppear = props.onFirstAppear,\n onAppear = props.onAppear,\n onDisappear = props.onDisappear,\n rest = _objectWithoutPropertiesLoose(props, _excluded);\n\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n if (!(typeof onAppear === 'function' || typeof onFirstAppear === 'function' || typeof onDisappear === 'function')) {\n return undefined;\n }\n\n if (!props.id) {\n console.warn('id is required if using onAppear in wechat miniprogram!');\n return undefined;\n }\n\n var ele = document.getElementById(props.id);\n\n if (ele != null && ele._internal) {\n var observe = function () {\n selfRef.observer = ele._internal.createIntersectionObserver().relativeToViewport();\n selfRef.observer.observe(\"#\" + props.id, function (res) {\n var _res$intersectionRati = res.intersectionRatio,\n intersectionRatio = _res$intersectionRati === void 0 ? 0 : _res$intersectionRati;\n\n if (intersectionRatio > 0) {\n typeof onAppear === 'function' && onAppear(res);\n\n if (typeof onFirstAppear === 'function') {\n if (!selfRef.triggeredAppear) {\n onFirstAppear(res);\n selfRef.triggeredAppear = true;\n\n if (typeof onAppear !== 'function' && typeof onDisappear !== 'function') {\n selfRef.observer.disconnect();\n }\n }\n }\n } else {\n typeof onDisappear === 'function' && onDisappear(res);\n }\n });\n window.removeEventListener('setDataFinished', observe);\n };\n\n window.addEventListener('setDataFinished', observe);\n }\n\n return function () {\n if (selfRef.observer) {\n selfRef.observer.disconnect();\n }\n };\n }, [props.id, onAppear, onDisappear]);\n var handleAppear = onAppear;\n\n if (onFirstAppear) {\n handleAppear = function (event) {\n onAppear && onAppear(event);\n\n if (!selfRef.triggeredAppear) {\n onFirstAppear && onFirstAppear(event);\n selfRef.triggeredAppear = true;\n }\n };\n }\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"div\", _extends({}, rest, {\n onAppear: handleAppear,\n onDisappear: onDisappear,\n ref: ref,\n className: classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default()('rax-view-v2', className),\n style: Object.assign({}, _getStyle(classnames_dedupe__WEBPACK_IMPORTED_MODULE_1___default()('rax-view-v2', className)), style)\n }));\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_utils_wrapDefaultProperties__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(View));\n\n/***/ }),\n\n/***/ \"./node_modules/rax-view/es/utils/wrapDefaultProperties.js\":\n/*!*****************************************************************!*\\\n !*** ./node_modules/rax-view/es/utils/wrapDefaultProperties.js ***!\n \\*****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return wrapDefaultProperties; });\nfunction wrapDefaultProperties(View) {\n View.displayName = 'View';\n return View;\n}\n\n/***/ }),\n\n/***/ \"./node_modules/rax/dist/rax.js\":\n/*!**************************************!*\\\n !*** ./node_modules/rax/dist/rax.js ***!\n \\**************************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\n/*\n * Stateful things in runtime\n */\nvar Host = {\n __mountID: 1,\n __isUpdating: false,\n // Inject\n driver: null,\n // Roots\n rootComponents: {},\n rootInstances: {},\n // Current owner component\n owner: null\n};\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar ReactPropTypesSecret$1 = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\nvar ReactPropTypesSecret_1 = ReactPropTypesSecret$1;\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar printWarning = function () {};\n\n{\n var ReactPropTypesSecret = ReactPropTypesSecret_1;\n var loggedTypeFailures = {};\n var has = Function.call.bind(Object.prototype.hasOwnProperty);\n\n printWarning = function (text) {\n var message = 'Warning: ' + text;\n\n if (typeof console !== 'undefined') {\n console.error(message);\n }\n\n try {\n // --- Welcome to debugging React ---\n // This error was thrown as a convenience so that you can use this stack\n // to find the callsite that caused this warning to fire.\n throw new Error(message);\n } catch (x) {}\n };\n}\n/**\n * Assert that the values match with the type specs.\n * Error messages are memorized and will only be shown once.\n *\n * @param {object} typeSpecs Map of name to a ReactPropType\n * @param {object} values Runtime values that need to be type-checked\n * @param {string} location e.g. \"prop\", \"context\", \"child context\"\n * @param {string} componentName Name of the component for error messages.\n * @param {?Function} getStack Returns the component stack.\n * @private\n */\n\nfunction checkPropTypes(typeSpecs, values, location, componentName, getStack) {\n {\n for (var typeSpecName in typeSpecs) {\n if (has(typeSpecs, typeSpecName)) {\n var error; // Prop type validation may throw. In case they do, we don't want to\n // fail the render phase where it didn't fail before. So we log it.\n // After these have been cleaned up, we'll let them throw.\n\n try {\n // This is intentionally an invariant that gets caught. It's the same\n // behavior as without this statement except with a better message.\n if (typeof typeSpecs[typeSpecName] !== 'function') {\n var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.');\n err.name = 'Invariant Violation';\n throw err;\n }\n\n error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);\n } catch (ex) {\n error = ex;\n }\n\n if (error && !(error instanceof Error)) {\n printWarning((componentName || 'React class') + ': type specification of ' + location + ' `' + typeSpecName + '` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a ' + typeof error + '. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).');\n }\n\n if (error instanceof Error && !(error.message in loggedTypeFailures)) {\n // Only monitor this failure once because there tends to be a lot of the\n // same error.\n loggedTypeFailures[error.message] = true;\n var stack = getStack ? getStack() : '';\n printWarning('Failed ' + location + ' type: ' + error.message + (stack != null ? stack : ''));\n }\n }\n }\n }\n}\n/**\n * Resets warning cache when testing.\n *\n * @private\n */\n\n\ncheckPropTypes.resetWarningCache = function () {\n {\n loggedTypeFailures = {};\n }\n};\n\nvar checkPropTypes_1 = checkPropTypes;\n\nfunction Element(type, key, ref, props, owner) {\n var element = {\n // Built-in properties that belong on the element\n type: type,\n key: key,\n ref: ref,\n props: props,\n // Record the component responsible for creating this element.\n _owner: owner\n };\n {\n var propTypes = type.propTypes; // Validate its props provided by the propTypes definition\n\n if (propTypes) {\n var displayName = type.displayName || type.name;\n checkPropTypes_1(propTypes, props, 'prop', displayName);\n } // We make validation flag non-enumerable, so the test framework could ignore it\n\n\n Object.defineProperty(element, '__validated', {\n configurable: false,\n enumerable: false,\n writable: true,\n value: false\n }); // Props is immutable\n\n if (Object.freeze) {\n Object.freeze(props);\n }\n }\n return element;\n}\n\nfunction isNull(obj) {\n return obj === null;\n}\n\nfunction isFunction(obj) {\n return typeof obj === 'function';\n}\n\nfunction isObject(obj) {\n return typeof obj === 'object';\n}\n\nfunction isPlainObject(obj) {\n return EMPTY_OBJECT.toString.call(obj) === '[object Object]';\n}\n\nfunction isArray(array) {\n return Array.isArray(array);\n}\n\nfunction isString(string) {\n return typeof string === 'string';\n}\n\nfunction isNumber(string) {\n return typeof string === 'number';\n}\n\nvar NOOP = function () {};\n\nvar EMPTY_OBJECT = {};\n\nfunction traverseChildren(children, result) {\n if (isArray(children)) {\n for (var i = 0, l = children.length; i < l; i++) {\n traverseChildren(children[i], result);\n }\n } else {\n result.push(children);\n }\n}\n\nfunction flattenChildren(children) {\n if (children == null) {\n return children;\n }\n\n var result = [];\n traverseChildren(children, result); // If length equal 1, return the only one.\n\n return result.length - 1 ? result : result[0];\n}\n\nvar updateCallbacks = [];\nvar effectCallbacks = [];\nvar layoutCallbacks = [];\nvar scheduler = setTimeout;\n{\n // Wrapper timer for hijack timers in jest\n scheduler = function (callback) {\n setTimeout(callback);\n };\n}\n\nfunction invokeFunctionsWithClear(callbacks) {\n var callback;\n\n while (callback = callbacks.shift()) {\n callback();\n }\n} // Schedule before next render\n\n\nfunction schedule(callback) {\n if (updateCallbacks.length === 0) {\n scheduler(flush);\n }\n\n updateCallbacks.push(callback);\n} // Flush before next render\n\n\nfunction flush() {\n invokeFunctionsWithClear(updateCallbacks);\n}\n\nfunction scheduleEffect(callback) {\n if (effectCallbacks.length === 0) {\n scheduler(flushEffect);\n }\n\n effectCallbacks.push(callback);\n}\n\nfunction flushEffect() {\n invokeFunctionsWithClear(effectCallbacks);\n}\n\nfunction scheduleLayout(callback) {\n layoutCallbacks.push(callback);\n}\n\nfunction flushLayout() {\n invokeFunctionsWithClear(layoutCallbacks);\n}\n\nfunction createMinifiedError(type, code, obj) {\n var typeInfo = obj === undefined ? '' : ' got: ' + getTypeInfo(obj);\n return new Error(type + \": #\" + code + \", \" + getRenderErrorInfo() + \".\" + typeInfo);\n}\n\nfunction getTypeInfo(obj) {\n return isPlainObject(obj) ? Object.keys(obj) : obj;\n}\n\nfunction getRenderErrorInfo() {\n var ownerComponent = Host.owner;\n return ownerComponent ? \"check <\" + ownerComponent.__getName() + \">\" : 'no owner';\n}\n/**\n * Minified code:\n * 1: Hooks called outside a component, or multiple version of Rax are used.\n * 6: Invalid component type, expected a class or function component.\n * 4: Too many re-renders, the number of renders is limited to prevent an infinite loop.\n * 5: Rax driver not found.\n * @param code {Number}\n * @param obj {Object}\n */\n\n\nfunction throwMinifiedError(code, obj) {\n throw createMinifiedError('Error', code, obj);\n}\n\nfunction throwError(message, obj) {\n var typeInfo = obj === undefined ? '' : '(found: ' + (isPlainObject(obj) ? \"object with keys {\" + Object.keys(obj) + \"}\" : obj) + ')';\n throw Error(message + \" \" + typeInfo);\n}\n\nvar warning = NOOP;\n{\n warning = function (template) {\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n if (typeof console !== 'undefined') {\n var argsWithFormat = args.map(function (item) {\n return '' + item;\n });\n argsWithFormat.unshift('Warning: ' + template); // Don't use spread (or .apply) directly because it breaks IE9\n\n Function.prototype.apply.call(console.error, console, argsWithFormat);\n } // For works in DevTools when enable `Pause on caught exceptions`\n // that can find the component where caused this warning\n\n\n try {\n var argIndex = 0;\n var message = 'Warning: ' + template.replace(/%s/g, function () {\n return args[argIndex++];\n });\n throw new Error(message);\n } catch (e) {}\n };\n}\n/**\n * Warn if there's no key explicitly set on dynamic arrays of children or\n * object keys are not valid. This allows us to keep track of children between\n * updates.\n */\n\nvar ownerHasKeyUseWarning = {};\n\nfunction getCurrentComponentErrorInfo(parentType) {\n var info = '';\n var ownerComponent = Host.owner;\n\n if (ownerComponent) {\n var name = ownerComponent.__getName();\n\n if (name) {\n info = \" Check the render method of <\" + name + \">.\";\n }\n }\n\n if (!info) {\n var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;\n\n if (parentName) {\n info = \" Check the top-level render call using <\" + parentName + \">.\";\n }\n }\n\n return info;\n}\n\nfunction isValidElement(object) {\n return typeof object === 'object' && object !== null && object.type && !!object.props;\n}\n\nfunction validateExplicitKey(element, parentType) {\n if (element.__validated || element.key != null) {\n return;\n }\n\n element.__validated = true;\n var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);\n\n if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {\n return;\n }\n\n ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a\n // property, it may be the creator of the child that's responsible for\n // assigning it a key.\n\n var childOwner = '';\n\n if (element && element._owner && element._owner !== Host.owner) {\n // Give the component that originally created this child.\n childOwner = \" It was passed a child from <\" + element._owner.__getName() + \">.\";\n }\n\n warning(\"Each child in a list should have a unique \\\"key\\\" prop.\" + currentComponentErrorInfo + childOwner);\n}\n\nfunction validateChildKeys(node, parentType) {\n // Only array or element object is valid child\n if (typeof node !== 'object') {\n return;\n }\n\n if (isArray(node)) {\n for (var i = 0; i < node.length; i++) {\n var child = node[i];\n\n if (isValidElement(child)) {\n validateExplicitKey(child, parentType);\n }\n }\n } else if (isValidElement(node)) {\n node.__validated = true;\n } // Rax don't support iterator object as element children\n // TODO: add validate when rax support iterator object as element.\n\n}\n\nvar RESERVED_PROPS = {\n key: true,\n ref: true\n};\n\nfunction createElement(type, config, children) {\n // Reserved names are extracted\n var props = {};\n var key = null;\n var ref = null;\n\n if (config != null) {\n ref = config.ref === undefined ? null : config.ref;\n key = config.key === undefined ? null : '' + config.key; // Remaining properties are added to a new props object\n\n for (var propName in config) {\n if (!RESERVED_PROPS[propName]) {\n props[propName] = config[propName];\n }\n }\n } // Children arguments can be more than one\n\n\n var childrenLength = arguments.length - 2;\n\n if (childrenLength > 0) {\n if (childrenLength === 1 && !isArray(children)) {\n props.children = children;\n } else {\n var childArray = children;\n\n if (childrenLength > 1) {\n childArray = new Array(childrenLength);\n\n for (var i = 0; i < childrenLength; i++) {\n childArray[i] = arguments[i + 2];\n }\n }\n\n props.children = flattenChildren(childArray);\n }\n } // Resolve default props\n\n\n if (type && type.defaultProps) {\n var defaultProps = type.defaultProps;\n\n for (propName in defaultProps) {\n if (props[propName] === undefined) {\n props[propName] = defaultProps[propName];\n }\n }\n }\n\n if (type == null) {\n {\n throwError(\"Invalid element type, expected a string or a class/function component but got \\\"\" + type + \"\\\".\");\n }\n }\n\n {\n if (isString(ref) && !Host.owner) {\n warning(\"Adding a string ref \\\"\" + ref + \"\\\" that was not created inside render method, or multiple copies of Rax are used.\");\n }\n\n for (var _i = 2; _i < arguments.length; _i++) {\n validateChildKeys(arguments[_i], type);\n }\n }\n return new Element(type, key, ref, props, Host.owner);\n}\n\nfunction invokeFunctionsWithContext(fns, context, value) {\n for (var i = 0, l = fns && fns.length; i < l; i++) {\n fns[i].call(context, value);\n }\n}\n\nvar hasOwnProperty = EMPTY_OBJECT.hasOwnProperty;\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\n\nfunction is(x, y) {\n // SameValue algorithm\n if (x === y) {\n // Steps 1-5, 7-10\n // Steps 6.b-6.e: +0 != -0\n return x !== 0 || 1 / x === 1 / y;\n } else {\n // Step 6.a: NaN == NaN\n return x !== x && y !== y; // eslint-disable-line no-self-compare\n }\n}\n/**\n * Performs equality by iterating through keys on an object and returning false\n * when any key has values which are not strictly equal between the arguments.\n * Returns true when the values of all keys are strictly equal.\n */\n\n\nfunction shallowEqual(objA, objB) {\n if (is(objA, objB)) {\n return true;\n }\n\n if (!isObject(objA) || isNull(objA) || !isObject(objB) || isNull(objB)) {\n return false;\n }\n\n var keysA = Object.keys(objA);\n var keysB = Object.keys(objB);\n\n if (keysA.length !== keysB.length) {\n return false;\n } // Test for A's keys different from B.\n\n\n for (var i = 0; i < keysA.length; i++) {\n if (!hasOwnProperty.call(objB, keysA[i]) || !is(objA[keysA[i]], objB[keysA[i]])) {\n return false;\n }\n }\n\n return true;\n}\n/* Common constant variables for rax */\n\n\nvar INTERNAL = '_internal';\nvar INSTANCE = '_instance';\nvar NATIVE_NODE = '_nativeNode';\nvar RENDERED_COMPONENT = '_renderedComponent';\n\nfunction getCurrentInstance() {\n return Host.owner && Host.owner[INSTANCE];\n}\n\nfunction getCurrentRenderingInstance() {\n var currentInstance = getCurrentInstance();\n\n if (currentInstance) {\n return currentInstance;\n } else {\n {\n throwError('Hooks called outside a component, or multiple version of Rax are used.');\n }\n }\n}\n\nfunction areInputsEqual(inputs, prevInputs) {\n if (isNull(prevInputs) || inputs.length !== prevInputs.length) {\n return false;\n }\n\n for (var i = 0; i < inputs.length; i++) {\n if (is(inputs[i], prevInputs[i])) {\n continue;\n }\n\n return false;\n }\n\n return true;\n}\n\nfunction useState(initialState) {\n var currentInstance = getCurrentRenderingInstance();\n var hookID = currentInstance.getHookID();\n var hooks = currentInstance.getHooks();\n\n if (!hooks[hookID]) {\n // If the initial state is the result of an expensive computation,\n // you may provide a function instead for lazy initial state.\n if (isFunction(initialState)) {\n initialState = initialState();\n }\n\n var setState = function (newState) {\n // Flush all effects first before update state\n if (!Host.__isUpdating) {\n flushEffect();\n }\n\n var hook = hooks[hookID];\n var eagerState = hook[2]; // function updater\n\n if (isFunction(newState)) {\n newState = newState(eagerState);\n }\n\n if (!is(newState, eagerState)) {\n // Current instance is in render update phase.\n // After this one render finish, will continue run.\n hook[2] = newState;\n\n if (getCurrentInstance() === currentInstance) {\n // Marked as is scheduled that could finish hooks.\n currentInstance.__isScheduled = true;\n } else {\n currentInstance.__update();\n }\n }\n };\n\n hooks[hookID] = [initialState, setState, initialState];\n }\n\n var hook = hooks[hookID];\n\n if (!is(hook[0], hook[2])) {\n hook[0] = hook[2];\n currentInstance.__shouldUpdate = true;\n }\n\n return hook;\n}\n\nfunction useContext(context) {\n var currentInstance = getCurrentRenderingInstance();\n return currentInstance.useContext(context);\n}\n\nfunction useEffect(effect, inputs) {\n useEffectImpl(effect, inputs, true);\n}\n\nfunction useLayoutEffect(effect, inputs) {\n useEffectImpl(effect, inputs);\n}\n\nfunction useEffectImpl(effect, inputs, defered) {\n var currentInstance = getCurrentRenderingInstance();\n var hookID = currentInstance.getHookID();\n var hooks = currentInstance.getHooks();\n inputs = inputs === undefined ? null : inputs;\n\n if (!hooks[hookID]) {\n var __create = function __create(immediately) {\n if (!immediately && defered) return scheduleEffect(function () {\n return __create(true);\n });\n var current = __create.current;\n\n if (current) {\n __destory.current = current();\n __create.current = null;\n {\n var currentDestory = __destory.current;\n\n if (currentDestory !== undefined && typeof currentDestory !== 'function') {\n var msg;\n\n if (currentDestory === null) {\n msg = ' You returned null. If your effect does not require clean ' + 'up, return undefined (or nothing).';\n } else if (typeof currentDestory.then === 'function') {\n msg = '\\n\\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, write the async function inside your effect ' + 'and call it immediately:\\n\\n' + 'useEffect(() => {\\n' + ' async function fetchData() {\\n' + ' // You can await here\\n' + ' const response = await MyAPI.getData(someId);\\n' + ' // ...\\n' + ' }\\n' + ' fetchData();\\n' + '}, [someId]); // Or [] if effect doesn\\'t need props or state.';\n } else {\n msg = ' You returned: ' + currentDestory;\n }\n\n warning('An effect function must not return anything besides a function, ' + 'which is used for clean-up.' + msg);\n }\n }\n }\n };\n\n var __destory = function __destory(immediately) {\n if (!immediately && defered) return scheduleEffect(function () {\n return __destory(true);\n });\n var current = __destory.current;\n\n if (current) {\n current();\n __destory.current = null;\n }\n };\n\n __create.current = effect;\n hooks[hookID] = {\n __create: __create,\n __destory: __destory,\n __prevInputs: inputs,\n __inputs: inputs\n };\n currentInstance.didMount.push(__create);\n currentInstance.willUnmount.push(function () {\n return __destory(true);\n });\n currentInstance.didUpdate.push(function () {\n var _hooks$hookID = hooks[hookID],\n __prevInputs = _hooks$hookID.__prevInputs,\n __inputs = _hooks$hookID.__inputs,\n __create = _hooks$hookID.__create;\n\n if (__inputs == null || !areInputsEqual(__inputs, __prevInputs)) {\n __destory();\n\n __create();\n }\n });\n } else {\n var hook = hooks[hookID];\n var _create = hook.__create,\n prevInputs = hook.__inputs;\n hook.__inputs = inputs;\n hook.__prevInputs = prevInputs;\n _create.current = effect;\n }\n}\n\nfunction useImperativeHandle(ref, create, inputs) {\n var nextInputs = isArray(inputs) ? inputs.concat([ref]) : null;\n useLayoutEffect(function () {\n if (isFunction(ref)) {\n ref(create());\n return function () {\n return ref(null);\n };\n } else if (ref != null) {\n ref.current = create();\n return function () {\n ref.current = null;\n };\n }\n }, nextInputs);\n}\n\nfunction useRef(initialValue) {\n var currentInstance = getCurrentRenderingInstance();\n var hookID = currentInstance.getHookID();\n var hooks = currentInstance.getHooks();\n\n if (!hooks[hookID]) {\n hooks[hookID] = {\n current: initialValue\n };\n }\n\n return hooks[hookID];\n}\n\nfunction useCallback(callback, inputs) {\n return useMemo(function () {\n return callback;\n }, inputs);\n}\n\nfunction useMemo(create, inputs) {\n var currentInstance = getCurrentRenderingInstance();\n var hookID = currentInstance.getHookID();\n var hooks = currentInstance.getHooks();\n inputs = inputs === undefined ? null : inputs;\n\n if (!hooks[hookID]) {\n hooks[hookID] = [create(), inputs];\n } else {\n var prevInputs = hooks[hookID][1];\n\n if (isNull(inputs) || !areInputsEqual(inputs, prevInputs)) {\n hooks[hookID] = [create(), inputs];\n }\n }\n\n return hooks[hookID][0];\n}\n\nfunction useReducer(reducer, initialArg, init) {\n var currentInstance = getCurrentRenderingInstance();\n var hookID = currentInstance.getHookID();\n var hooks = currentInstance.getHooks();\n var hook = hooks[hookID];\n\n if (!hook) {\n var initialState = isFunction(init) ? init(initialArg) : initialArg;\n\n var dispatch = function (action) {\n // Flush all effects first before update state\n if (!Host.__isUpdating) {\n flushEffect();\n }\n\n var hook = hooks[hookID]; // Reducer will update in the next render, before that we add all\n // actions to the queue\n\n var queue = hook[2];\n\n if (getCurrentInstance() === currentInstance) {\n queue.__actions.push(action);\n\n currentInstance.__isScheduled = true;\n } else {\n var currentState = queue.__eagerState;\n var eagerReducer = queue.__eagerReducer;\n var eagerState = eagerReducer(currentState, action);\n\n if (is(eagerState, currentState)) {\n return;\n }\n\n queue.__eagerState = eagerState;\n\n queue.__actions.push(action);\n\n currentInstance.__update();\n }\n };\n\n return hooks[hookID] = [initialState, dispatch, {\n __actions: [],\n __eagerReducer: reducer,\n __eagerState: initialState\n }];\n }\n\n var queue = hook[2];\n var next = hook[0];\n\n if (currentInstance.__reRenders > 0) {\n for (var i = 0; i < queue.__actions.length; i++) {\n next = reducer(next, queue.__actions[i]);\n }\n } else {\n next = queue.__eagerState;\n }\n\n if (!is(next, hook[0])) {\n hook[0] = next;\n currentInstance.__shouldUpdate = true;\n }\n\n queue.__eagerReducer = reducer;\n queue.__eagerState = next;\n queue.__actions.length = 0;\n return hooks[hookID];\n}\n\nfunction toArray(obj) {\n return isArray(obj) ? obj : [obj];\n}\n\nfunction getNearestParent(instance, matcher) {\n var parent;\n\n while (instance && instance[INTERNAL]) {\n if (matcher(instance)) {\n parent = instance;\n break;\n }\n\n instance = instance[INTERNAL].__parentInstance;\n }\n\n return parent;\n}\n\nvar id = 0;\n\nfunction createContext(defaultValue) {\n var contextID = '_c' + id++; // Provider Component\n\n var Provider = /*#__PURE__*/function () {\n function Provider() {\n this.__contextID = contextID;\n this.__handlers = [];\n }\n\n var _proto = Provider.prototype;\n\n _proto.__on = function (handler) {\n this.__handlers.push(handler);\n };\n\n _proto.__off = function (handler) {\n this.__handlers = this.__handlers.filter(function (h) {\n return h !== handler;\n });\n } // Like getChildContext but called in SSR\n ;\n\n _proto._getChildContext = function () {\n var _ref;\n\n return _ref = {}, _ref[contextID] = this, _ref;\n } // `getValue()` called in rax-server-renderer\n ;\n\n _proto.getValue = function () {\n return this.props.value !== undefined ? this.props.value : defaultValue;\n };\n\n _proto.componentDidUpdate = function (prevProps) {\n if (this.props.value !== prevProps.value) {\n invokeFunctionsWithContext(this.__handlers, null, this.getValue());\n }\n };\n\n _proto.render = function () {\n return this.props.children;\n };\n\n return Provider;\n }();\n\n function getNearestParentProvider(instance) {\n return getNearestParent(instance, function (parent) {\n return parent.__contextID === contextID;\n });\n } // Consumer Component\n\n\n return {\n Provider: Provider,\n Consumer: function (props, context) {\n var _this = this; // Current `context[contextID]` only works in SSR\n\n\n var _useState = useState(function () {\n return context[contextID] || getNearestParentProvider(_this);\n }),\n provider = _useState[0];\n\n var value = provider ? provider.getValue() : defaultValue;\n\n var _useState2 = useState(value),\n prevValue = _useState2[0],\n setValue = _useState2[1];\n\n if (value !== prevValue) {\n setValue(value);\n return; // Interrupt execution of consumer.\n }\n\n useLayoutEffect(function () {\n if (provider) {\n provider.__on(setValue);\n\n return function () {\n provider.__off(setValue);\n };\n }\n }, []); // Consumer requires a function as a child.\n // The function receives the current context value.\n\n var consumer = toArray(props.children)[0];\n\n if (isFunction(consumer)) {\n return consumer(value);\n }\n },\n // `_contextID` and `_defaultValue` accessed in rax-server-renderer\n _contextID: contextID,\n _defaultValue: defaultValue,\n __getNearestParentProvider: getNearestParentProvider\n };\n}\n\nfunction createRef() {\n return {\n current: null\n };\n}\n\nfunction forwardRef(render) {\n // _forwardRef is also use in rax server renderer\n render._forwardRef = true;\n return render;\n}\n\nfunction memo(type, compare) {\n compare = compare || shallowEqual; // Memo could composed\n\n if (type.__compares) {\n type.__compares.push(compare);\n } else {\n type.__compares = [compare];\n }\n\n return type;\n}\n\nfunction Fragment(props) {\n return props.children;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function (o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n/**\n * Base Component\n */\n\n\nvar BaseComponent = /*#__PURE__*/function () {\n function BaseComponent(element) {\n this.__currentElement = element;\n }\n\n var _proto = BaseComponent.prototype;\n\n _proto.__initComponent = function (parent, parentInstance, context) {\n this._parent = parent;\n this.__parentInstance = parentInstance;\n this._context = context;\n this._mountID = Host.__mountID++;\n };\n\n _proto.__destoryComponent = function () {\n {\n Host.reconciler.unmountComponent(this);\n }\n this.__currentElement = this[NATIVE_NODE] = this._parent = this.__parentInstance = this._context = null;\n\n if (this[INSTANCE]) {\n this[INSTANCE] = this[INSTANCE][INTERNAL] = null;\n }\n };\n\n _proto.__mountComponent = function (parent, parentInstance, context, nativeNodeMounter) {\n this.__initComponent(parent, parentInstance, context);\n\n this.__mountNativeNode(nativeNodeMounter);\n\n {\n Host.reconciler.mountComponent(this);\n }\n var instance = {};\n instance[INTERNAL] = this;\n return instance;\n };\n\n _proto.unmountComponent = function (shouldNotRemoveChild) {\n if (this[NATIVE_NODE] && !shouldNotRemoveChild) {\n Host.driver.removeChild(this[NATIVE_NODE], this._parent);\n }\n\n this.__destoryComponent();\n };\n\n _proto.__getName = function () {\n var currentElement = this.__currentElement;\n var type = currentElement && currentElement.type;\n return type && type.displayName || type && type.name || type || // Native component's name is type\n currentElement;\n };\n\n _proto.__mountNativeNode = function (nativeNodeMounter) {\n var nativeNode = this.__getNativeNode();\n\n var parent = this._parent;\n\n if (nativeNodeMounter) {\n nativeNodeMounter(nativeNode, parent);\n } else {\n Host.driver.appendChild(nativeNode, parent);\n }\n };\n\n _proto.__getNativeNode = function () {\n return this[NATIVE_NODE] == null ? this[NATIVE_NODE] = this.__createNativeNode() : this[NATIVE_NODE];\n };\n\n _proto.__getPublicInstance = function () {\n return this.__getNativeNode();\n };\n\n return BaseComponent;\n}();\n/**\n * Empty Component\n */\n\n\nvar EmptyComponent = /*#__PURE__*/function (_BaseComponent) {\n _inheritsLoose(EmptyComponent, _BaseComponent);\n\n function EmptyComponent() {\n return _BaseComponent.apply(this, arguments) || this;\n }\n\n var _proto = EmptyComponent.prototype;\n\n _proto.__createNativeNode = function () {\n return Host.driver.createEmpty(this);\n };\n\n _proto.__updateComponent = function () {};\n\n return EmptyComponent;\n}(BaseComponent);\n/*\n * Ref manager\n */\n\n\nfunction updateRef(prevElement, nextElement, component) {\n var prevRef = prevElement ? prevElement.ref : null;\n var nextRef = nextElement ? nextElement.ref : null; // Update refs in owner component\n\n if (prevRef !== nextRef) {\n // Detach prev RenderedElement's ref\n prevRef && detachRef(prevElement._owner, prevRef, component); // Attach next RenderedElement's ref\n\n nextRef && attachRef(nextElement._owner, nextRef, component);\n }\n}\n\nfunction attachRef(ownerComponent, ref, component) {\n if (!ownerComponent) {\n {\n warning('Ref can not attach because multiple copies of Rax are used.');\n }\n return;\n }\n\n var instance = component.__getPublicInstance();\n\n {\n if (instance == null) {\n warning('Do not attach ref to function component because they don’t have instances.');\n }\n }\n\n if (isFunction(ref)) {\n ref(instance);\n } else if (isObject(ref)) {\n ref.current = instance;\n } else {\n ownerComponent[INSTANCE].refs[ref] = instance;\n }\n}\n\nfunction detachRef(ownerComponent, ref, component) {\n if (isFunction(ref)) {\n // When the referenced component is unmounted and whenever the ref changes, the old ref will be called with null as an argument.\n ref(null);\n } else {\n // Must match component and ref could detach the ref on owner when A's before ref is B's current ref\n var instance = component.__getPublicInstance();\n\n if (isObject(ref) && ref.current === instance) {\n ref.current = null;\n } else if (ownerComponent[INSTANCE].refs[ref] === instance) {\n delete ownerComponent[INSTANCE].refs[ref];\n }\n }\n}\n\nfunction instantiateComponent(element) {\n var instance;\n\n if (isPlainObject(element) && element !== null && element.type) {\n // Special case string values\n if (isString(element.type)) {\n instance = new Host.__Native(element);\n } else {\n instance = new Host.__Composite(element);\n }\n } else if (isString(element) || isNumber(element)) {\n instance = new Host.__Text(String(element));\n } else if (isArray(element)) {\n instance = new Host.__Fragment(element);\n } else {\n if (!(element === undefined || isNull(element) || element === false || element === true)) {\n {\n throwError('Invalid child type, expected types: Element instance, string, boolean, array, null, undefined.', element);\n }\n }\n\n instance = new Host.__Empty(element);\n }\n\n return instance;\n}\n\nfunction shouldUpdateComponent(prevElement, nextElement) {\n var prevEmpty = isNull(prevElement);\n var nextEmpty = isNull(nextElement);\n\n if (prevEmpty || nextEmpty) {\n return prevEmpty === nextEmpty;\n }\n\n if (isArray(prevElement) && isArray(nextElement)) {\n return true;\n }\n\n var isPrevStringOrNumber = isString(prevElement) || isNumber(prevElement);\n\n if (isPrevStringOrNumber) {\n return isString(nextElement) || isNumber(nextElement);\n } else {\n // prevElement and nextElement could be array, typeof [] is \"object\"\n return isObject(prevElement) && isObject(nextElement) && prevElement.type === nextElement.type && prevElement.key === nextElement.key;\n }\n}\n\nfunction getElementKeyName(children, element, index) {\n var elementKey = element && element.key;\n var defaultName = '.' + index.toString(36); // Inner child name default format fallback\n // Key should must be string type\n\n if (isString(elementKey)) {\n var keyName = '$' + elementKey; // Child keys must be unique.\n\n var keyUnique = children[keyName] === undefined;\n {\n if (!keyUnique) {\n // Only the first child will be used when encountered two children with the same key\n warning(\"Encountered two children with the same key \\\"\" + elementKey + \"\\\".\");\n }\n }\n return keyUnique ? keyName : defaultName;\n } else {\n return defaultName;\n }\n}\n/**\n * This function is usually been used to find the closet previous sibling native node of FragmentComponent.\n * FragmentComponent does not have a native node in the DOM tree, so when it is replaced, the new node has no corresponding location to insert.\n * So we need to look forward from the current mount position of the FragmentComponent to the nearest component which have the native node.\n * @param component\n * @return nativeNode\n */\n\n\nfunction getPrevSiblingNativeNode(component) {\n var parent = component;\n\n while (parent = component.__parentInstance && component.__parentInstance[INTERNAL]) {\n if (parent instanceof Host.__Composite) {\n component = parent;\n continue;\n }\n\n var keys = Object.keys(parent.__renderedChildren); // Find previous sibling native node from current mount index\n\n for (var i = component.__mountIndex - 1; i >= 0; i--) {\n var nativeNode = parent.__renderedChildren[keys[i]].__getNativeNode(); // Fragment component always return array\n\n\n if (isArray(nativeNode)) {\n if (nativeNode.length > 0) {\n // Get the last one\n return nativeNode[nativeNode.length - 1];\n }\n } else {\n // Others maybe native node or empty node\n return nativeNode;\n }\n } // Find parent over parent\n\n\n if (parent instanceof Host.__Fragment) {\n component = parent;\n } else {\n return null;\n }\n }\n}\n/**\n * Base component class.\n */\n\n\nvar Component = /*#__PURE__*/function () {\n function Component(props, context) {\n this.props = props;\n this.context = context;\n this.refs = {};\n }\n\n var _proto = Component.prototype;\n\n _proto.setState = function (partialState, callback) {\n // The updater property is injected when composite component mounting\n this.updater.setState(this, partialState, callback);\n };\n\n _proto.forceUpdate = function (callback) {\n this.updater.forceUpdate(this, callback);\n };\n\n return Component;\n}();\n\nvar PureComponent = /*#__PURE__*/function (_Component) {\n _inheritsLoose(PureComponent, _Component);\n\n function PureComponent(props, context) {\n var _this = _Component.call(this, props, context) || this;\n\n _this.__isPureComponent = true;\n return _this;\n }\n\n return PureComponent;\n}(Component);\n\nvar rootID = 1;\n\nvar Root = /*#__PURE__*/function (_Component) {\n _inheritsLoose(Root, _Component);\n\n function Root() {\n var _this = _Component.call(this) || this;\n\n // Using fragment instead of null for avoid create a comment node when init mount\n _this.__element = [];\n _this.__rootID = rootID++;\n return _this;\n }\n\n var _proto = Root.prototype;\n\n _proto.__getPublicInstance = function () {\n return this.__getRenderedComponent().__getPublicInstance();\n };\n\n _proto.__getRenderedComponent = function () {\n return this[INTERNAL][RENDERED_COMPONENT];\n };\n\n _proto.__update = function (element) {\n this.__element = element;\n this.forceUpdate();\n };\n\n _proto.render = function () {\n return this.__element;\n };\n\n return Root;\n}(Component);\n/**\n * Instance manager\n * @NOTE Key should not be compressed, for that will be added to native node and cause DOM Exception.\n */\n\n\nvar KEY = '_r';\nvar Instance = {\n set: function (node, instance) {\n if (!node[KEY]) {\n node[KEY] = instance; // Record root instance to roots map\n\n if (instance.__rootID) {\n Host.rootInstances[instance.__rootID] = instance;\n Host.rootComponents[instance.__rootID] = instance[INTERNAL];\n }\n }\n },\n get: function (node) {\n return node[KEY];\n },\n remove: function (node) {\n var instance = this.get(node);\n\n if (instance) {\n node[KEY] = null;\n\n if (instance.__rootID) {\n delete Host.rootComponents[instance.__rootID];\n delete Host.rootInstances[instance.__rootID];\n }\n }\n },\n mount: function (element, container, _ref) {\n var parent = _ref.parent,\n hydrate = _ref.hydrate;\n {\n Host.measurer && Host.measurer.beforeRender();\n }\n var driver = Host.driver; // Real native root node is body\n\n if (container == null) {\n container = driver.createBody();\n }\n\n var renderOptions = {\n element: element,\n container: container,\n hydrate: hydrate\n }; // Before render callback\n\n driver.beforeRender && driver.beforeRender(renderOptions); // Get the context from the conceptual parent component.\n\n var parentContext;\n\n if (parent) {\n var parentInternal = parent[INTERNAL];\n parentContext = parentInternal.__processChildContext(parentInternal._context);\n } // Update root component\n\n\n var prevRootInstance = this.get(container);\n\n if (prevRootInstance && prevRootInstance.__rootID) {\n if (parentContext) {\n // Using __penddingContext to pass new context\n prevRootInstance[INTERNAL].__penddingContext = parentContext;\n }\n\n prevRootInstance.__update(element); // After render callback\n\n\n driver.afterRender && driver.afterRender(renderOptions);\n return prevRootInstance;\n } // Init root component with empty children\n\n\n var renderedComponent = instantiateComponent(createElement(Root));\n var defaultContext = parentContext || {};\n\n var rootInstance = renderedComponent.__mountComponent(container, parent, defaultContext);\n\n this.set(container, rootInstance); // Mount new element through update queue avoid when there is in rendering phase\n\n rootInstance.__update(element); // After render callback\n\n\n driver.afterRender && driver.afterRender(renderOptions);\n {\n // Devtool render new root hook\n Host.reconciler.renderNewRootComponent(rootInstance[INTERNAL][RENDERED_COMPONENT]);\n Host.measurer && Host.measurer.afterRender();\n }\n return rootInstance;\n }\n};\nvar assign = Object.assign;\nvar STYLE = 'style';\nvar CHILDREN = 'children';\nvar TREE = 'tree';\nvar EVENT_PREFIX_REGEXP = /^on[A-Z]/;\n/**\n * Native Component\n */\n\nvar NativeComponent = /*#__PURE__*/function (_BaseComponent) {\n _inheritsLoose(NativeComponent, _BaseComponent);\n\n function NativeComponent() {\n return _BaseComponent.apply(this, arguments) || this;\n }\n\n var _proto = NativeComponent.prototype;\n\n _proto.__mountComponent = function (parent, parentInstance, context, nativeNodeMounter) {\n this.__initComponent(parent, parentInstance, context);\n\n var currentElement = this.__currentElement;\n var props = currentElement.props;\n var type = currentElement.type;\n var children = props[CHILDREN];\n var appendType = props.append || TREE; // Default is tree\n // Clone a copy for style diff\n\n this.__prevStyleCopy = assign({}, props[STYLE]);\n var instance = {\n type: type,\n props: props\n };\n instance[INTERNAL] = this;\n this[INSTANCE] = instance;\n\n if (appendType === TREE) {\n // Should after process children when mount by tree mode\n this.__mountChildren(children, context);\n\n this.__mountNativeNode(nativeNodeMounter);\n } else {\n // Should before process children when mount by node mode\n this.__mountNativeNode(nativeNodeMounter);\n\n this.__mountChildren(children, context);\n } // Ref acttach\n\n\n if (currentElement && currentElement.ref) {\n attachRef(currentElement._owner, currentElement.ref, this);\n }\n\n {\n Host.reconciler.mountComponent(this);\n }\n return instance;\n };\n\n _proto.__mountChildren = function (children, context) {\n if (children == null) return children;\n\n var nativeNode = this.__getNativeNode();\n\n return this.__mountChildrenImpl(nativeNode, toArray(children), context);\n };\n\n _proto.__mountChildrenImpl = function (parent, children, context, nativeNodeMounter) {\n var renderedChildren = this.__renderedChildren = {};\n var renderedChildrenImage = [];\n\n for (var i = 0, l = children.length; i < l; i++) {\n var element = children[i];\n var renderedChild = instantiateComponent(element);\n var name = getElementKeyName(renderedChildren, element, i);\n renderedChildren[name] = renderedChild;\n renderedChild.__mountIndex = i; // Mount children\n\n var mountImage = renderedChild.__mountComponent(parent, this[INSTANCE], context, nativeNodeMounter);\n\n renderedChildrenImage.push(mountImage);\n }\n\n return renderedChildrenImage;\n };\n\n _proto.__unmountChildren = function (shouldNotRemoveChild) {\n var renderedChildren = this.__renderedChildren;\n\n if (renderedChildren) {\n for (var name in renderedChildren) {\n var renderedChild = renderedChildren[name];\n renderedChild.unmountComponent(shouldNotRemoveChild);\n }\n\n this.__renderedChildren = null;\n }\n };\n\n _proto.unmountComponent = function (shouldNotRemoveChild) {\n if (this[NATIVE_NODE]) {\n var ref = this.__currentElement.ref;\n\n if (ref) {\n detachRef(this.__currentElement._owner, ref, this);\n }\n\n Instance.remove(this[NATIVE_NODE]);\n\n if (!shouldNotRemoveChild) {\n Host.driver.removeChild(this[NATIVE_NODE], this._parent);\n }\n }\n\n this.__unmountChildren(true);\n\n this.__prevStyleCopy = null;\n\n this.__destoryComponent();\n };\n\n _proto.__updateComponent = function (prevElement, nextElement, prevContext, nextContext) {\n // Replace current element\n this.__currentElement = nextElement;\n updateRef(prevElement, nextElement, this);\n var prevProps = prevElement.props;\n var nextProps = nextElement.props;\n\n this.__updateProperties(prevProps, nextProps); // If the prevElement has no child, mount children directly\n\n\n if (prevProps[CHILDREN] == null || isArray(prevProps[CHILDREN]) && prevProps[CHILDREN].length === 0) {\n this.__mountChildren(nextProps[CHILDREN], nextContext);\n } else {\n this.__updateChildren(nextProps[CHILDREN], nextContext);\n }\n\n {\n Host.reconciler.receiveComponent(this);\n }\n };\n\n _proto.__updateProperties = function (prevProps, nextProps) {\n var styleUpdates;\n var driver = Host.driver;\n\n var nativeNode = this.__getNativeNode();\n\n for (var propKey in prevProps) {\n // Continue children and null value prop or nextProps has some propKey that do noting\n if (propKey === CHILDREN || prevProps[propKey] == null || // Use hasOwnProperty here for avoid propKey name is some with method name in object proptotype\n nextProps.hasOwnProperty(propKey)) {\n continue;\n }\n\n if (propKey === STYLE) {\n // Remove all style\n var lastStyle = this.__prevStyleCopy;\n\n for (var styleName in lastStyle) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n\n this.__prevStyleCopy = null;\n } else if (EVENT_PREFIX_REGEXP.test(propKey)) {\n // Remove event\n var eventListener = prevProps[propKey];\n\n if (isFunction(eventListener)) {\n driver.removeEventListener(nativeNode, propKey.slice(2).toLowerCase(), eventListener);\n }\n } else {\n // Remove attribute\n driver.removeAttribute(nativeNode, propKey, prevProps[propKey]);\n }\n }\n\n for (propKey in nextProps) {\n var nextProp = nextProps[propKey];\n var prevProp = propKey === STYLE ? this.__prevStyleCopy : prevProps != null ? prevProps[propKey] : undefined; // Continue children or prevProp equal nextProp\n\n if (propKey === CHILDREN || prevProp === nextProp || nextProp == null && prevProp == null) {\n continue;\n } // Update style\n\n\n if (propKey === STYLE) {\n if (nextProp) {\n // Clone property\n nextProp = this.__prevStyleCopy = assign({}, nextProp);\n } else {\n this.__prevStyleCopy = null;\n }\n\n if (prevProp != null) {\n // Unset styles on `prevProp` but not on `nextProp`.\n for (styleName in prevProp) {\n if (!nextProp || !nextProp[styleName] && nextProp[styleName] !== 0) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = '';\n }\n } // Update styles that changed since `prevProp`.\n\n\n for (styleName in nextProp) {\n if (prevProp[styleName] !== nextProp[styleName]) {\n styleUpdates = styleUpdates || {};\n styleUpdates[styleName] = nextProp[styleName];\n }\n }\n } else {\n // Assign next prop when prev style is null\n styleUpdates = nextProp;\n }\n } else if (EVENT_PREFIX_REGEXP.test(propKey)) {\n // Update event binding\n var eventName = propKey.slice(2).toLowerCase();\n\n if (isFunction(prevProp)) {\n driver.removeEventListener(nativeNode, eventName, prevProp, nextProps);\n }\n\n if (isFunction(nextProp)) {\n driver.addEventListener(nativeNode, eventName, nextProp, nextProps);\n }\n } else {\n // Update other property\n if (nextProp != null) {\n driver.setAttribute(nativeNode, propKey, nextProp);\n } else {\n driver.removeAttribute(nativeNode, propKey, prevProps[propKey]);\n }\n\n {\n var _payload;\n\n Host.measurer && Host.measurer.recordOperation({\n instanceID: this._mountID,\n type: 'update attribute',\n payload: (_payload = {}, _payload[propKey] = nextProp, _payload)\n });\n }\n }\n }\n\n if (styleUpdates) {\n {\n Host.measurer && Host.measurer.recordOperation({\n instanceID: this._mountID,\n type: 'update style',\n payload: styleUpdates\n });\n }\n driver.setStyle(nativeNode, styleUpdates);\n }\n };\n\n _proto.__updateChildren = function (nextChildrenElements, context) {\n // prev rendered children\n var prevChildren = this.__renderedChildren;\n var driver = Host.driver;\n\n if (nextChildrenElements == null && prevChildren == null) {\n return;\n }\n\n var nextChildren = {};\n\n if (nextChildrenElements != null) {\n nextChildrenElements = toArray(nextChildrenElements); // Update next children elements\n\n for (var index = 0, length = nextChildrenElements.length; index < length; index++) {\n var nextElement = nextChildrenElements[index];\n var name = getElementKeyName(nextChildren, nextElement, index);\n var prevChild = prevChildren && prevChildren[name];\n var prevElement = prevChild && prevChild.__currentElement;\n var prevContext = prevChild && prevChild._context; // Try to update between the two of some name that has some element type,\n // and move child in next children loop if need\n\n if (prevChild != null && shouldUpdateComponent(prevElement, nextElement)) {\n if (prevElement !== nextElement || prevContext !== context) {\n // Pass the same context when updating children\n prevChild.__updateComponent(prevElement, nextElement, context, context);\n }\n\n nextChildren[name] = prevChild;\n } else {\n // Unmount the prevChild when some name with nextChild but different element type,\n // and move child node in next children loop\n if (prevChild) {\n prevChild.__unmount = true;\n } // The child must be instantiated before it's mounted.\n\n\n nextChildren[name] = instantiateComponent(nextElement);\n }\n }\n }\n\n var parent = this.__getNativeNode();\n\n var isFragmentParent = isArray(parent);\n var prevFirstChild = null;\n var prevFirstNativeNode = null;\n var isPrevFirstEmptyFragment = false;\n var shouldUnmountPrevFirstChild = false;\n var lastPlacedNode = null; // Directly remove all children from component, if nextChildren is empty (null, [], '').\n // `driver.removeChildren` is optional driver protocol.\n\n var shouldRemoveAllChildren = Boolean(driver.removeChildren // nextChildElements == null or nextChildElements is empty\n && (isNull(nextChildrenElements) || nextChildrenElements && !nextChildrenElements.length) // Fragment parent can not remove parentNode's all child nodes directly.\n && !isFragmentParent); // Unmount children that are no longer present.\n\n if (prevChildren != null) {\n for (var _name in prevChildren) {\n var _prevChild = prevChildren[_name];\n var shouldUnmount = _prevChild.__unmount || !nextChildren[_name]; // Store old first child ref for append node ahead and maybe delay remove it\n\n if (!prevFirstChild) {\n shouldUnmountPrevFirstChild = shouldUnmount;\n prevFirstChild = _prevChild;\n prevFirstNativeNode = prevFirstChild.__getNativeNode();\n\n if (isArray(prevFirstNativeNode)) {\n isPrevFirstEmptyFragment = prevFirstNativeNode.length === 0;\n prevFirstNativeNode = prevFirstNativeNode[0];\n }\n } else if (shouldUnmount) {\n _prevChild.unmountComponent(shouldRemoveAllChildren);\n }\n } // 1. When fragment embed fragment updated but prev fragment is empty\n // that need to get the prev sibling native node.\n // like: [ [] ] -> [ [1, 2] ]\n // 2. When prev fragment is empty and update to other type\n // like: [ [], 1 ] -> [ 1, 2 ]\n\n\n if (isFragmentParent && parent.length === 0 || isPrevFirstEmptyFragment) {\n lastPlacedNode = getPrevSiblingNativeNode(this);\n }\n }\n\n var insertNodes = function (nativeNodes, parentNode) {\n // The nativeNodes maybe fragment, so convert to array type\n nativeNodes = toArray(nativeNodes);\n\n for (var i = 0, l = nativeNodes.length; i < l; i++) {\n if (lastPlacedNode) {\n // Should reverse order when insert new child after lastPlacedNode:\n // [lastPlacedNode, *newChild1, *newChild2],\n // And if prev is empty fragment, lastPlacedNode is the prevSiblingNativeNode found.\n driver.insertAfter(nativeNodes[l - 1 - i], lastPlacedNode);\n } else if (prevFirstNativeNode) {\n // [*newChild1, *newChild2, prevFirstNativeNode]\n driver.insertBefore(nativeNodes[i], prevFirstNativeNode);\n } else if (parentNode) {\n // [*newChild1, *newChild2]\n driver.appendChild(nativeNodes[i], parentNode);\n }\n }\n }; // `nextIndex` will increment for each child in `nextChildren`\n\n\n var nextIndex = 0;\n\n for (var _name2 in nextChildren) {\n var nextChild = nextChildren[_name2];\n\n var _prevChild2 = prevChildren && prevChildren[_name2]; // Try to move the some key prevChild but current not at the some position\n\n\n if (_prevChild2 === nextChild) {\n var prevChildNativeNode = _prevChild2.__getNativeNode();\n\n if (_prevChild2.__mountIndex !== nextIndex) {\n insertNodes(prevChildNativeNode);\n }\n } else {\n // Mount nextChild that in prevChildren there has no some name\n // Fragment extended native component, so if parent is fragment should get this._parent\n if (isFragmentParent) {\n parent = this._parent;\n }\n\n nextChild.__mountComponent(parent, this[INSTANCE], context, insertNodes // Insert nodes mounter\n );\n } // Update to the latest mount order\n\n\n nextChild.__mountIndex = nextIndex++; // Get the last child\n\n lastPlacedNode = nextChild.__getNativeNode();\n\n if (isArray(lastPlacedNode)) {\n lastPlacedNode = lastPlacedNode[lastPlacedNode.length - 1];\n }\n }\n\n if (shouldUnmountPrevFirstChild) {\n prevFirstChild.unmountComponent(shouldRemoveAllChildren);\n }\n\n if (shouldRemoveAllChildren) {\n driver.removeChildren(this[NATIVE_NODE]);\n }\n\n this.__renderedChildren = nextChildren;\n };\n\n _proto.__createNativeNode = function () {\n var instance = this[INSTANCE];\n var nativeNode = Host.driver.createElement(instance.type, instance.props, this);\n Instance.set(nativeNode, instance);\n return nativeNode;\n };\n\n return NativeComponent;\n}(BaseComponent);\n/**\n * Text Component\n */\n\n\nvar TextComponent = /*#__PURE__*/function (_BaseComponent) {\n _inheritsLoose(TextComponent, _BaseComponent);\n\n function TextComponent() {\n return _BaseComponent.apply(this, arguments) || this;\n }\n\n var _proto = TextComponent.prototype;\n\n _proto.__updateComponent = function (prevElement, nextElement) {\n nextElement = '' + nextElement; // If text is some value that do not update even there number 1 and string \"1\"\n\n if (prevElement !== nextElement) {\n // Replace current element\n this.__currentElement = nextElement;\n Host.driver.updateText(this.__getNativeNode(), nextElement);\n {\n this._stringText = this.__currentElement;\n Host.reconciler.receiveComponent(this);\n }\n }\n };\n\n _proto.__createNativeNode = function () {\n {\n this._stringText = this.__currentElement;\n }\n return Host.driver.createText(this.__currentElement, this);\n };\n\n return TextComponent;\n}(BaseComponent);\n\nvar RE_RENDER_LIMIT = 24;\n/**\n * Functional Reactive Component Class Wrapper\n */\n\nvar ReactiveComponent = /*#__PURE__*/function (_Component) {\n _inheritsLoose(ReactiveComponent, _Component);\n\n function ReactiveComponent(pureRender, ref) {\n var _this = _Component.call(this) || this;\n\n // Marked ReactiveComponent.\n _this.__isReactiveComponent = true; // A pure function\n\n _this.__render = pureRender;\n _this.__hookID = 0; // Number of rerenders\n\n _this.__reRenders = 0;\n _this.__hooks = {}; // Is render scheduled\n\n _this.__isScheduled = false;\n _this.__shouldUpdate = false;\n _this.__children = null;\n _this.__contexts = {}; // Handles store\n\n _this.didMount = [];\n _this.didUpdate = [];\n _this.willUnmount = [];\n _this.state = EMPTY_OBJECT;\n\n if (pureRender._forwardRef) {\n _this.__prevForwardRef = _this._forwardRef = ref;\n }\n\n var compares = pureRender.__compares;\n\n if (compares) {\n _this.shouldComponentUpdate = function (nextProps) {\n // Process composed compare\n var arePropsEqual = true; // Compare push in and pop out\n\n for (var i = compares.length - 1; i > -1; i--) {\n if (arePropsEqual = compares[i](_this.props, nextProps)) {\n break;\n }\n }\n\n return !arePropsEqual || _this.__prevForwardRef !== _this._forwardRef;\n };\n }\n\n return _this;\n }\n\n var _proto = ReactiveComponent.prototype;\n\n _proto.getHooks = function () {\n return this.__hooks;\n };\n\n _proto.getHookID = function () {\n return ++this.__hookID;\n };\n\n _proto.useContext = function (context) {\n var _this2 = this;\n\n var contextID = context._contextID;\n var contextItem = this.__contexts[contextID];\n\n if (!contextItem) {\n var provider = context.__getNearestParentProvider(this);\n\n contextItem = this.__contexts[contextID] = {\n __provider: provider\n };\n\n if (provider) {\n var handleContextChange = function (value) {\n // Check the last value that maybe alread rerender\n // avoid rerender twice when provider value changed\n if (contextItem.__lastValue !== value) {\n _this2.__shouldUpdate = true;\n\n _this2.__update();\n }\n };\n\n provider.__on(handleContextChange);\n\n this.willUnmount.push(function () {\n return provider.__off(handleContextChange);\n });\n }\n }\n\n return contextItem.__lastValue = contextItem.__provider ? contextItem.__provider.getValue() : context._defaultValue;\n };\n\n _proto.componentWillMount = function () {\n this.__shouldUpdate = true;\n };\n\n _proto.componentDidMount = function () {\n invokeFunctionsWithContext(this.didMount);\n };\n\n _proto.componentWillReceiveProps = function () {\n this.__shouldUpdate = true;\n };\n\n _proto.componentDidUpdate = function () {\n invokeFunctionsWithContext(this.didUpdate);\n };\n\n _proto.componentWillUnmount = function () {\n invokeFunctionsWithContext(this.willUnmount);\n };\n\n _proto.__update = function () {\n this.setState(EMPTY_OBJECT);\n };\n\n _proto.render = function () {\n {\n Host.measurer && Host.measurer.beforeRender();\n }\n this.__hookID = 0;\n this.__reRenders = 0;\n this.__isScheduled = false;\n\n var children = this.__render(this.props, this._forwardRef ? this._forwardRef : this.context);\n\n while (this.__isScheduled) {\n this.__reRenders++;\n\n if (this.__reRenders > RE_RENDER_LIMIT) {\n {\n throw new Error('Too many re-renders, the number of renders is limited to prevent an infinite loop.');\n }\n }\n\n this.__hookID = 0;\n this.__isScheduled = false;\n children = this.__render(this.props, this._forwardRef ? this._forwardRef : this.context);\n }\n\n if (this.__shouldUpdate) {\n this.__children = children;\n this.__shouldUpdate = false;\n }\n\n return this.__children;\n };\n\n return ReactiveComponent;\n}(Component);\n\nvar dirtyComponents = [];\n\nfunction getPendingCallbacks(internal) {\n return internal.__pendingCallbacks;\n}\n\nfunction setPendingCallbacks(internal, callbacks) {\n return internal.__pendingCallbacks = callbacks;\n}\n\nfunction getPendingStateQueue(internal) {\n return internal.__pendingStateQueue;\n}\n\nfunction setPendingStateQueue(internal, partialState) {\n return internal.__pendingStateQueue = partialState;\n}\n\nfunction enqueueCallback(internal, callback) {\n var callbackQueue = getPendingCallbacks(internal) || setPendingCallbacks(internal, []);\n callbackQueue.push(callback);\n}\n\nfunction enqueueState(internal, partialState) {\n var stateQueue = getPendingStateQueue(internal) || setPendingStateQueue(internal, []);\n stateQueue.push(partialState);\n}\n\nfunction runUpdate(component) {\n var internal = component[INTERNAL];\n\n if (!internal) {\n return;\n }\n\n Host.__isUpdating = true;\n var prevElement = internal.__currentElement;\n var prevUnmaskedContext = internal._context;\n var nextUnmaskedContext = internal.__penddingContext || prevUnmaskedContext;\n internal.__penddingContext = undefined;\n\n if (getPendingStateQueue(internal) || internal.__isPendingForceUpdate) {\n internal.__updateComponent(prevElement, prevElement, prevUnmaskedContext, nextUnmaskedContext);\n\n flushLayout();\n }\n\n Host.__isUpdating = false;\n}\n\nfunction mountOrderComparator(c1, c2) {\n return c2[INTERNAL]._mountID - c1[INTERNAL]._mountID;\n}\n\nfunction performUpdate() {\n if (Host.__isUpdating) {\n return schedule(performUpdate);\n }\n\n var component;\n var dirties = dirtyComponents;\n\n if (dirties.length > 0) {\n // Before next render, we will flush all the effects\n flushEffect();\n dirtyComponents = []; // Since reconciling a component higher in the owner hierarchy usually (not\n // always -- see shouldComponentUpdate()) will reconcile children, reconcile\n // them before their children by sorting the array.\n\n if (dirties.length > 1) {\n dirties = dirties.filter(function (c) {\n return !!c[INTERNAL];\n }).sort(mountOrderComparator);\n }\n\n while (component = dirties.pop()) {\n runUpdate(component);\n }\n }\n}\n\nfunction scheduleUpdate(component, shouldAsyncUpdate) {\n if (dirtyComponents.indexOf(component) < 0) {\n dirtyComponents.push(component);\n }\n\n if (shouldAsyncUpdate) {\n // If have been scheduled before, do not need schedule again\n if (dirtyComponents.length > 1) {\n return;\n }\n\n schedule(performUpdate);\n } else {\n performUpdate();\n }\n}\n\nfunction requestUpdate(component, partialState, callback) {\n var internal = component[INTERNAL];\n\n if (!internal) {\n {\n // Block other render\n Host.__isUpdating = false;\n console.error(\"Warning: Can't perform a Rax state update on an unmounted component. This \" + 'is a no-op, but it indicates a memory leak in your application. To ' + 'fix, cancel all subscriptions and asynchronous tasks in %s.', component.__isReactiveComponent ? 'a useEffect cleanup function' : 'the componentWillUnmount method');\n }\n return;\n }\n\n if (callback) {\n enqueueCallback(internal, callback);\n }\n\n var hasComponentRendered = internal[RENDERED_COMPONENT]; // setState\n\n if (partialState) {\n // Function Component should force update\n if (component.__isReactiveComponent) {\n internal.__isPendingForceUpdate = true;\n }\n\n enqueueState(internal, partialState); // State pending when request update in componentWillMount and componentWillReceiveProps,\n // isPendingState default is false value (false or null) and set to true after componentWillReceiveProps,\n // _renderedComponent is null when componentWillMount exec.\n\n if (!internal.__isPendingState && hasComponentRendered) {\n scheduleUpdate(component, true);\n }\n } else {\n // forceUpdate\n internal.__isPendingForceUpdate = true;\n\n if (hasComponentRendered) {\n scheduleUpdate(component);\n }\n }\n}\n\nvar Updater = {\n setState: function (component, partialState, callback) {\n // Flush all effects first before update state\n if (!Host.__isUpdating) {\n flushEffect();\n }\n\n requestUpdate(component, partialState, callback);\n },\n forceUpdate: function (component, callback) {\n requestUpdate(component, null, callback);\n }\n};\n\nfunction performInSandbox(fn, instance, callback) {\n try {\n return fn();\n } catch (e) {\n if (callback) {\n callback(e);\n } else {\n handleError(instance, e);\n }\n }\n}\n/**\n * A class component becomes an error boundary if\n * it defines either (or both) of the lifecycle methods static getDerivedStateFromError() or componentDidCatch().\n * Use static getDerivedStateFromError() to render a fallback UI after an error has been thrown.\n * Use componentDidCatch() to log error information.\n * @param {*} instance\n * @param {*} error\n */\n\n\nfunction handleError(instance, error) {\n var boundary = getNearestParent(instance, function (parent) {\n return parent.componentDidCatch || parent.constructor && parent.constructor.getDerivedStateFromError;\n });\n\n if (boundary) {\n scheduleLayout(function () {\n var boundaryInternal = boundary[INTERNAL]; // Should not attempt to recover an unmounting error boundary\n\n if (boundaryInternal) {\n performInSandbox(function () {\n if (boundary.componentDidCatch) {\n boundary.componentDidCatch(error);\n } // Update state to the next render to show the fallback UI.\n\n\n if (boundary.constructor && boundary.constructor.getDerivedStateFromError) {\n var state = boundary.constructor.getDerivedStateFromError(error);\n boundary.setState(state);\n }\n }, boundaryInternal.__parentInstance);\n }\n });\n } else {\n // Do not break when error happens\n scheduler(function () {\n throw error;\n }, 0);\n }\n}\n\nvar measureLifeCycle;\n{\n measureLifeCycle = function (callback, instanceID, type) {\n Host.measurer && Host.measurer.beforeLifeCycle(instanceID, type);\n callback();\n Host.measurer && Host.measurer.afterLifeCycle(instanceID, type);\n };\n}\n\nfunction scheduleLayoutInSandbox(fn, instance) {\n scheduleLayout(function () {\n performInSandbox(fn, instance);\n });\n}\n\nfunction scheduleLayoutCallbacksInSandbox(callbacks, instance) {\n if (callbacks) {\n scheduleLayoutInSandbox(function () {\n invokeFunctionsWithContext(callbacks, instance);\n }, instance);\n }\n}\n/**\n * Composite Component\n */\n\n\nvar CompositeComponent = /*#__PURE__*/function (_BaseComponent) {\n _inheritsLoose(CompositeComponent, _BaseComponent);\n\n function CompositeComponent() {\n return _BaseComponent.apply(this, arguments) || this;\n }\n\n var _proto = CompositeComponent.prototype;\n\n _proto.__mountComponent = function (parent, parentInstance, context, nativeNodeMounter) {\n var _this = this;\n\n this.__initComponent(parent, parentInstance, context);\n\n {\n this._updateCount = 0;\n Host.measurer && Host.measurer.beforeMountComponent(this._mountID, this);\n }\n var currentElement = this.__currentElement;\n var Component = currentElement.type;\n var ref = currentElement.ref;\n var publicProps = currentElement.props;\n var componentPrototype = Component.prototype; // Context process\n\n var publicContext = this.__processContext(context); // Initialize the public class\n\n\n var instance;\n var renderedElement;\n performInSandbox(function () {\n if (componentPrototype && componentPrototype.render) {\n // Class Component instance\n instance = new Component(publicProps, publicContext);\n } else if (isFunction(Component)) {\n // Functional reactive component with hooks\n instance = new ReactiveComponent(Component, ref);\n } else {\n throwError('Invalid component type, expected a class or function component.', Component);\n }\n }, parentInstance);\n\n if (!instance) {\n return;\n } // These should be set up in the constructor, but as a convenience for\n // simpler class abstractions, we set them up after the fact.\n\n\n instance.props = publicProps;\n instance.context = publicContext;\n instance.refs = {}; // Inject the updater into instance\n\n instance.updater = Updater;\n instance[INTERNAL] = this;\n this[INSTANCE] = instance; // Init state, must be set to an object or null\n\n var initialState = instance.state;\n\n if (initialState === undefined) {\n // TODO clone the state?\n instance.state = initialState = null;\n }\n\n if (instance.componentWillMount) {\n performInSandbox(function () {\n measureLifeCycle(function () {\n instance.componentWillMount();\n }, _this._mountID, 'componentWillMount');\n }, instance);\n }\n\n Host.owner = this; // Process pending state when call setState in componentWillMount\n\n instance.state = this.__processPendingState(publicProps, publicContext);\n var callbacks = this.__pendingCallbacks;\n this.__pendingCallbacks = null;\n performInSandbox(function () {\n measureLifeCycle(function () {\n renderedElement = instance.render();\n }, _this._mountID, 'render');\n }, instance);\n {\n validateChildKeys(renderedElement, this.__currentElement.type);\n }\n Host.owner = null;\n this[RENDERED_COMPONENT] = instantiateComponent(renderedElement);\n\n this[RENDERED_COMPONENT].__mountComponent(this._parent, instance, this.__processChildContext(context), nativeNodeMounter);\n\n if (!currentElement.type._forwardRef && ref) {\n attachRef(currentElement._owner, ref, this);\n }\n\n if (instance.componentDidMount) {\n scheduleLayoutInSandbox(function () {\n {\n measureLifeCycle(function () {\n instance.componentDidMount();\n }, _this._mountID, 'componentDidMount');\n }\n }, instance);\n } // Trigger setState callback\n\n\n scheduleLayoutCallbacksInSandbox(callbacks, instance);\n {\n scheduleLayout(function () {\n Host.reconciler.mountComponent(_this);\n Host.measurer && Host.measurer.afterMountComponent(_this._mountID);\n });\n }\n return instance;\n };\n\n _proto.unmountComponent = function (shouldNotRemoveChild) {\n var instance = this[INSTANCE]; // Unmounting a composite component maybe not complete mounted\n // when throw error in component constructor stage\n\n if (instance && instance.componentWillUnmount) {\n performInSandbox(function () {\n instance.componentWillUnmount();\n }, instance);\n }\n\n if (this[RENDERED_COMPONENT] != null) {\n var currentElement = this.__currentElement;\n var ref = currentElement.ref;\n\n if (!currentElement.type._forwardRef && ref) {\n detachRef(currentElement._owner, ref, this);\n }\n\n this[RENDERED_COMPONENT].unmountComponent(shouldNotRemoveChild);\n this[RENDERED_COMPONENT] = null;\n } // Reset pending fields\n // Even if this component is scheduled for another async update,\n // it would still be ignored because these fields are reset.\n\n\n this.__pendingStateQueue = null;\n this.__isPendingForceUpdate = false;\n\n this.__destoryComponent();\n }\n /**\n * Filters the context object to only contain keys specified in\n * `contextTypes`\n */\n ;\n\n _proto.__processContext = function (context) {\n var maskedContext = {};\n var Component = this.__currentElement.type;\n var contextTypes = Component.contextTypes;\n\n if (contextTypes) {\n for (var contextName in contextTypes) {\n maskedContext[contextName] = context[contextName];\n }\n }\n\n return maskedContext;\n };\n\n _proto.__processChildContext = function (currentContext) {\n var instance = this[INSTANCE]; // The getChildContext method context should be current instance\n\n var childContext = instance.getChildContext && instance.getChildContext();\n\n if (childContext) {\n return assign({}, currentContext, childContext);\n }\n\n return currentContext;\n };\n\n _proto.__processPendingState = function (props, context) {\n var instance = this[INSTANCE];\n var queue = this.__pendingStateQueue;\n\n if (!queue) {\n return instance.state;\n } // Reset pending queue\n\n\n this.__pendingStateQueue = null;\n var nextState = assign({}, instance.state);\n\n for (var i = 0; i < queue.length; i++) {\n var partial = queue[i];\n assign(nextState, isFunction(partial) ? partial.call(instance, nextState, props, context) : partial);\n }\n\n return nextState;\n };\n\n _proto.__updateComponent = function (prevElement, nextElement, prevUnmaskedContext, nextUnmaskedContext) {\n var _this2 = this;\n\n var instance = this[INSTANCE]; // Maybe update component that has already been unmounted or failed mount.\n\n if (!instance) {\n return;\n }\n\n performInSandbox(function () {\n Host.measurer && Host.measurer.beforeUpdateComponent(_this2._mountID, _this2);\n var willReceive;\n var nextContext;\n var nextProps; // Determine if the context has changed or not\n\n if (_this2._context === nextUnmaskedContext) {\n nextContext = instance.context;\n } else {\n nextContext = _this2.__processContext(nextUnmaskedContext);\n willReceive = true;\n } // Distinguish between a props update versus a simple state update\n // Skip checking prop types again -- we don't read component.props to avoid\n // warning for DOM component props in this upgrade\n\n\n nextProps = nextElement.props;\n\n if (prevElement !== nextElement) {\n willReceive = true;\n }\n\n if (willReceive && instance.componentWillReceiveProps) {\n // Calling this.setState() within componentWillReceiveProps will not trigger an additional render.\n _this2.__isPendingState = true;\n instance.componentWillReceiveProps(nextProps, nextContext);\n _this2.__isPendingState = false;\n } // Update refs\n\n\n if (_this2.__currentElement.type._forwardRef) {\n instance.__prevForwardRef = prevElement.ref;\n instance._forwardRef = nextElement.ref;\n } else {\n updateRef(prevElement, nextElement, _this2);\n } // Shoud update default\n\n\n var shouldUpdate = true;\n var prevProps = instance.props;\n var prevState = instance.state; // TODO: could delay execution processPendingState\n\n var nextState = _this2.__processPendingState(nextProps, nextContext);\n\n var callbacks = _this2.__pendingCallbacks;\n _this2.__pendingCallbacks = null; // ShouldComponentUpdate is not called when forceUpdate is used\n\n if (!_this2.__isPendingForceUpdate) {\n if (instance.shouldComponentUpdate) {\n shouldUpdate = instance.shouldComponentUpdate(nextProps, nextState, nextContext);\n } else if (instance.__isPureComponent) {\n // Pure Component\n shouldUpdate = !shallowEqual(prevProps, nextProps) || !shallowEqual(prevState, nextState);\n }\n }\n\n if (shouldUpdate) {\n _this2.__isPendingForceUpdate = false; // Will set `this.props`, `this.state` and `this.context`.\n\n var prevContext = instance.context; // Cannot use this.setState() in componentWillUpdate.\n // If need to update state in response to a prop change, use componentWillReceiveProps instead.\n\n if (instance.componentWillUpdate) {\n instance.componentWillUpdate(nextProps, nextState, nextContext);\n } // Replace with next\n\n\n _this2.__currentElement = nextElement;\n _this2._context = nextUnmaskedContext;\n instance.props = nextProps;\n instance.state = nextState;\n instance.context = nextContext;\n\n _this2.__updateRenderedComponent(nextUnmaskedContext);\n\n if (instance.componentDidUpdate) {\n scheduleLayoutInSandbox(function () {\n instance.componentDidUpdate(prevProps, prevState, prevContext);\n }, instance);\n }\n\n // Calc update count.\n _this2._updateCount++;\n } else {\n // If it's determined that a component should not update, we still want\n // to set props and state but we shortcut the rest of the update.\n _this2.__currentElement = nextElement;\n _this2._context = nextUnmaskedContext;\n instance.props = nextProps;\n instance.state = nextState;\n instance.context = nextContext;\n }\n\n scheduleLayoutCallbacksInSandbox(callbacks, instance);\n scheduleLayout(function () {\n Host.measurer && Host.measurer.afterUpdateComponent(_this2._mountID);\n Host.reconciler.receiveComponent(_this2);\n });\n }, instance);\n }\n /**\n * Call the component's `render` method and update the DOM accordingly.\n */\n ;\n\n _proto.__updateRenderedComponent = function (context) {\n var prevRenderedComponent = this[RENDERED_COMPONENT];\n var prevRenderedElement = prevRenderedComponent.__currentElement;\n var instance = this[INSTANCE];\n var nextRenderedElement;\n Host.owner = this;\n {\n measureLifeCycle(function () {\n nextRenderedElement = instance.render();\n }, this._mountID, 'render');\n }\n Host.owner = null;\n\n if (shouldUpdateComponent(prevRenderedElement, nextRenderedElement)) {\n var prevRenderedUnmaskedContext = prevRenderedComponent._context;\n\n var nextRenderedUnmaskedContext = this.__processChildContext(context); // If getChildContext existed and invoked when component updated that will make\n // prevRenderedUnmaskedContext not equal nextRenderedUnmaskedContext under the tree\n\n\n if (prevRenderedElement !== nextRenderedElement || prevRenderedUnmaskedContext !== nextRenderedUnmaskedContext) {\n // If element type is illegal catch the error\n prevRenderedComponent.__updateComponent(prevRenderedElement, nextRenderedElement, prevRenderedUnmaskedContext, nextRenderedUnmaskedContext);\n }\n\n {\n Host.measurer && Host.measurer.recordOperation({\n instanceID: this._mountID,\n type: 'update component',\n payload: {}\n });\n }\n } else {\n var lastNativeNode = null;\n\n var prevNativeNode = prevRenderedComponent.__getNativeNode(); // Only prevNativeNode is empty fragment should find the prevSlibingNativeNode\n // And current root component is fragment, but not need find the prevSlibingNativeNode when init mounting\n\n\n if (isArray(prevNativeNode) && prevNativeNode.length === 0 && instance.__rootID == null) {\n lastNativeNode = getPrevSiblingNativeNode(prevRenderedComponent);\n }\n\n prevRenderedComponent.unmountComponent(true);\n this[RENDERED_COMPONENT] = instantiateComponent(nextRenderedElement);\n\n this[RENDERED_COMPONENT].__mountComponent(this._parent, instance, this.__processChildContext(context), function (newNativeNode, parent) {\n var driver = Host.driver;\n prevNativeNode = toArray(prevNativeNode);\n newNativeNode = toArray(newNativeNode); // If the new length large then prev\n\n for (var i = 0; i < newNativeNode.length; i++) {\n var nativeNode = newNativeNode[i];\n\n if (prevNativeNode[i]) {\n driver.replaceChild(nativeNode, prevNativeNode[i]);\n } else if (lastNativeNode) {\n driver.insertAfter(nativeNode, lastNativeNode);\n } else {\n driver.appendChild(nativeNode, parent);\n }\n\n lastNativeNode = nativeNode;\n } // If the new length less then prev\n\n\n for (var _i = newNativeNode.length; _i < prevNativeNode.length; _i++) {\n driver.removeChild(prevNativeNode[_i]);\n }\n });\n }\n };\n\n _proto.__getNativeNode = function () {\n var renderedComponent = this[RENDERED_COMPONENT];\n\n if (renderedComponent) {\n return renderedComponent.__getNativeNode();\n }\n };\n\n _proto.__getPublicInstance = function () {\n var instance = this[INSTANCE]; // The functional components cannot be given refs\n\n if (instance.__isReactiveComponent) return null;\n return instance;\n };\n\n return CompositeComponent;\n}(BaseComponent);\n/**\n * Fragment Component\n */\n\n\nvar FragmentComponent = /*#__PURE__*/function (_NativeComponent) {\n _inheritsLoose(FragmentComponent, _NativeComponent);\n\n function FragmentComponent() {\n return _NativeComponent.apply(this, arguments) || this;\n }\n\n var _proto = FragmentComponent.prototype;\n\n _proto.__mountComponent = function (parent, parentInstance, context, nativeNodeMounter) {\n this.__initComponent(parent, parentInstance, context);\n\n var instance = this[INSTANCE] = {};\n instance[INTERNAL] = this;\n var fragment = [];\n\n this.__mountChildrenImpl(this._parent, this.__currentElement, context, function (nativeNode) {\n nativeNode = toArray(nativeNode);\n\n for (var i = 0; i < nativeNode.length; i++) {\n fragment.push(nativeNode[i]);\n }\n });\n\n if (nativeNodeMounter) {\n nativeNodeMounter(fragment, parent);\n } else {\n for (var i = 0; i < fragment.length; i++) {\n Host.driver.appendChild(fragment[i], parent);\n }\n }\n\n {\n this.__currentElement.type = FragmentComponent;\n Host.reconciler.mountComponent(this);\n }\n return instance;\n };\n\n _proto.unmountComponent = function (shouldNotRemoveChild) {\n if (!shouldNotRemoveChild) {\n var nativeNode = this.__getNativeNode();\n\n for (var i = 0, l = nativeNode.length; i < l; i++) {\n Host.driver.removeChild(nativeNode[i]);\n }\n } // Do not need remove child when their parent is removed\n\n\n this.__unmountChildren(true);\n\n this.__destoryComponent();\n };\n\n _proto.__updateComponent = function (prevElement, nextElement, prevContext, nextContext) {\n // Replace current element\n this.__currentElement = nextElement;\n\n this.__updateChildren(this.__currentElement, nextContext);\n\n {\n this.__currentElement.type = FragmentComponent;\n Host.reconciler.receiveComponent(this);\n }\n };\n\n _proto.__getNativeNode = function () {\n var renderedChildren = this.__renderedChildren || {};\n return [].concat.apply([], Object.keys(renderedChildren).map(function (key) {\n return renderedChildren[key].__getNativeNode();\n }));\n };\n\n return FragmentComponent;\n}(NativeComponent);\n\n{\n FragmentComponent.displayName = 'Fragment';\n}\nvar Reconciler = {\n // Stubs - DevTools expects to find these methods and replace them\n // with wrappers in order to observe components being mounted, updated and\n // unmounted\n mountComponent: function () {},\n receiveComponent: function () {},\n unmountComponent: function () {},\n // Stub - DevTools expects to find this method and replace it\n // with a wrapper in order to observe new root components being added\n renderNewRootComponent: function () {}\n};\n\nfunction inject(_ref) {\n var driver = _ref.driver,\n measurer = _ref.measurer; // Inject component class\n\n Host.__Empty = EmptyComponent;\n Host.__Native = NativeComponent;\n Host.__Text = TextComponent;\n Host.__Fragment = FragmentComponent;\n Host.__Composite = CompositeComponent; // Inject render driver\n\n if (!(Host.driver = driver || Host.driver)) {\n {\n throwError('Rax driver not found.');\n }\n }\n\n {\n // Inject devtool renderer hook\n Host.reconciler = Reconciler; // Inject performance measurer\n\n Host.measurer = measurer;\n }\n}\n\nfunction render(element, container, options, callback) {\n // Compatible with `render(element, container, callback)`\n if (isFunction(options)) {\n callback = options;\n options = null;\n }\n\n options = options || EMPTY_OBJECT; // Init inject\n\n inject(options);\n var rootComponent = Instance.mount(element, container, options);\n\n var componentInstance = rootComponent.__getPublicInstance();\n\n if (callback) {\n callback.call(componentInstance);\n }\n\n return componentInstance;\n}\n\nvar version = \"1.2.2\";\nvar DevtoolsHook = {\n ComponentTree: {\n getClosestInstanceFromNode: function (node) {\n return Instance.get(node);\n },\n getNodeFromInstance: function (inst) {\n // inst is an internal instance (but could be a composite)\n while (inst[RENDERED_COMPONENT]) {\n inst = inst[RENDERED_COMPONENT];\n }\n\n if (inst) {\n return inst._nativeNode;\n } else {\n return null;\n }\n }\n },\n Mount: {\n get _instancesByReactRootID() {\n var rootComponents = {}; // Ignore display top-level root component\n\n for (var rootID in Host.rootComponents) {\n rootComponents[rootID] = Host.rootComponents[rootID][RENDERED_COMPONENT];\n }\n\n return rootComponents;\n },\n\n _renderNewRootComponent: Reconciler.renderNewRootComponent\n },\n Reconciler: Reconciler,\n // monitor the info of all components\n monitor: null\n};\nvar shared = {\n Host: Host,\n Instance: Instance,\n Element: Element,\n flattenChildren: flattenChildren\n};\n{\n /* global __RAX_DEVTOOLS_GLOBAL_HOOK__ */\n if (typeof __RAX_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined' && typeof __RAX_DEVTOOLS_GLOBAL_HOOK__.inject === 'function') {\n __RAX_DEVTOOLS_GLOBAL_HOOK__.inject(DevtoolsHook);\n }\n\n if (typeof window !== 'undefined') {\n if (window.__RAX_INITIALISED__) {\n console.error('Warning: more than one instance of Rax has been initialised, this could lead to unexpected behaviour.');\n }\n\n window.__RAX_INITIALISED__ = true;\n }\n}\nexports.Component = Component;\nexports.Fragment = Fragment;\nexports.PureComponent = PureComponent;\nexports.createContext = createContext;\nexports.createElement = createElement;\nexports.createRef = createRef;\nexports.forwardRef = forwardRef;\nexports.memo = memo;\nexports.render = render;\nexports.shared = shared;\nexports.useCallback = useCallback;\nexports.useContext = useContext;\nexports.useEffect = useEffect;\nexports.useImperativeHandle = useImperativeHandle;\nexports.useLayoutEffect = useLayoutEffect;\nexports.useMemo = useMemo;\nexports.useReducer = useReducer;\nexports.useRef = useRef;\nexports.useState = useState;\nexports.version = version;\n\n/***/ }),\n\n/***/ \"./node_modules/rax/index.js\":\n/*!***********************************!*\\\n !*** ./node_modules/rax/index.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nif (false) {} else {\n module.exports = __webpack_require__(/*! ./dist/rax.js */ \"./node_modules/rax/dist/rax.js\");\n}\n\n/***/ }),\n\n/***/ \"./node_modules/regenerator-runtime/runtime.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/regenerator-runtime/runtime.js ***!\n \\*****************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\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 */\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\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\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 || []); // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n return generator;\n }\n\n exports.wrap = wrap; // 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\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\"; // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n\n var ContinueSentinel = {}; // 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\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {} // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n\n if (NativeIteratorPrototype && NativeIteratorPrototype !== Op && 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 = Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"); // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n\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 ? ctor === GeneratorFunction || // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\" : 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\n genFun.prototype = Object.create(Gp);\n return genFun;\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\n\n exports.awrap = function (arg) {\n return {\n __await: arg\n };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n\n if (value && typeof value === \"object\" && 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 = // 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(callInvokeWithMethodAndArg, // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n } // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n\n\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator; // 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\n exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? 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 return function (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 } // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n\n\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\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 } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n var record = tryCatch(innerFn, self, context);\n\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 ? GenStateCompleted : \"suspendedYield\";\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n } else if (record.type === \"throw\") {\n state = GenStateCompleted; // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n\n context.method = \"throw\";\n context.arg = record.arg;\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\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\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(\"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; // Resume execution at the desired location (see delegateYield).\n\n context.next = delegate.nextLoc; // 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\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined;\n }\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n } // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n\n\n context.delegate = null;\n return ContinueSentinel;\n } // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n\n\n defineIteratorMethods(Gp);\n define(Gp, toStringTagSymbol, \"Generator\"); // 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\n define(Gp, iteratorSymbol, function () {\n return this;\n });\n define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\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 = [{\n tryLoc: \"root\"\n }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n keys.reverse(); // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\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\n\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n\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,\n 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 return next;\n };\n\n return next.next = next;\n }\n } // Return an iterator with no values.\n\n\n return {\n next: doneResult\n };\n }\n\n exports.values = values;\n\n function doneResult() {\n return {\n value: undefined,\n done: true\n };\n }\n\n Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n this.prev = 0;\n this.next = 0; // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n\n this.sent = this._sent = undefined;\n this.done = false;\n this.delegate = null;\n this.method = \"next\";\n this.arg = undefined;\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\" && hasOwn.call(this, name) && !isNaN(+name.slice(1))) {\n this[name] = undefined;\n }\n }\n }\n },\n stop: function stop() {\n this.done = true;\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n\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 } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry && (type === \"break\" || type === \"continue\") && finallyEntry.tryLoc <= arg && 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 complete: function complete(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" || 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 finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n } // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(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 }; // 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\n return exports;\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\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 }\n}\n\n/***/ }),\n\n/***/ \"./node_modules/resolve-pathname/esm/resolve-pathname.js\":\n/*!***************************************************************!*\\\n !*** ./node_modules/resolve-pathname/esm/resolve-pathname.js ***!\n \\***************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n} // About 1.5x faster than the two-arg version of Array#splice()\n\n\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n} // This implementation is based heavily on node's url.parse\n\n\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n var toParts = to && to.split('/') || [];\n var fromParts = from && from.split('/') || [];\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n var hasTrailingSlash;\n\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) {\n fromParts.unshift('..');\n }\n if (mustEndAbs && fromParts[0] !== '' && (!fromParts[0] || !isAbsolute(fromParts[0]))) fromParts.unshift('');\n var result = fromParts.join('/');\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n return result;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (resolvePathname);\n\n/***/ }),\n\n/***/ \"./node_modules/split-on-first/index.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/split-on-first/index.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (string, separator) {\n if (!(typeof string === 'string' && typeof separator === 'string')) {\n throw new TypeError('Expected the arguments to be of type `string`');\n }\n\n if (separator === '') {\n return [string];\n }\n\n var separatorIndex = string.indexOf(separator);\n\n if (separatorIndex === -1) {\n return [string];\n }\n\n return [string.slice(0, separatorIndex), string.slice(separatorIndex + separator.length)];\n};\n\n/***/ }),\n\n/***/ \"./node_modules/strict-uri-encode/index.js\":\n/*!*************************************************!*\\\n !*** ./node_modules/strict-uri-encode/index.js ***!\n \\*************************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = function (str) {\n return encodeURIComponent(str).replace(/[!'()*]/g, function (x) {\n return \"%\" + x.charCodeAt(0).toString(16).toUpperCase();\n });\n};\n\n/***/ }),\n\n/***/ \"./node_modules/style-unit/lib/index.js\":\n/*!**********************************************!*\\\n !*** ./node_modules/style-unit/lib/index.js ***!\n \\**********************************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nexports.__esModule = true;\nexports.isRpx = isRpx;\nexports.calcRpx = calcRpx;\nexports.getRpx = getRpx;\nexports.setRpx = setRpx;\nexports.getViewportWidth = getViewportWidth;\nexports.setViewportWidth = setViewportWidth;\nexports.setDecimalPixelTransformer = setDecimalPixelTransformer;\nexports.setUnitPrecision = setUnitPrecision;\nexports.cached = cached;\nexports.setTargetPlatform = setTargetPlatform;\nexports.convertUnit = void 0;\n\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ \"./node_modules/@babel/runtime/helpers/defineProperty.js\"));\n\nvar _universalEnv = {\n isWeex: false,\n isWeb: false,\n isKraken: false,\n isNode: false,\n isMiniApp: true,\n isWeChatMiniProgram: false,\n isWeChatMiniprogram: false,\n isByteDanceMicroApp: false,\n isKuaiShouMiniProgram: false,\n isBaiduSmartProgram: false\n};\nvar RPX_REG = /\"[^\"]+\"|'[^']+'|url\\([^\\)]+\\)|(\\d*\\.?\\d+)rpx/g;\n\nvar __rpx_coefficient__;\n\nvar __viewport_width__; // convertUnit method targetPlatform\n\n\nvar targetPlatform = ''; // Init toFixed method\n\nvar unitPrecision = 4;\n\nvar toFixed = function (number, precision) {\n var multiplier = Math.pow(10, precision + 1);\n var wholeNumber = Math.floor(number * multiplier);\n return Math.round(wholeNumber / 10) * 10 / multiplier;\n}; // Dedault decimal px transformer.\n\n\nvar decimalPixelTransformer = function (rpx, $1) {\n return $1 ? parseFloat(rpx) * getRpx() + 'px' : rpx;\n}; // Default decimal vw transformer.\n\n\nvar decimalVWTransformer = function (rpx, $1) {\n return $1 ? toFixed(parseFloat(rpx) / (getViewportWidth() / 100), unitPrecision) + 'vw' : rpx;\n}; // Default 1 rpx to 1 px\n\n\nif (getRpx() === undefined) {\n setRpx(1);\n} // Viewport width, default to 750.\n\n\nif (getViewportWidth() === undefined) {\n setViewportWidth(750);\n}\n\nvar CustomMap = /*#__PURE__*/function () {\n function CustomMap() {\n (0, _defineProperty2[\"default\"])(this, \"__store\", {});\n }\n\n var _proto = CustomMap.prototype;\n\n _proto.set = function (key, value) {\n this.__store[key + \"_\" + typeof key] = value;\n };\n\n _proto.get = function (key) {\n return this.__store[key + \"_\" + typeof key];\n };\n\n _proto.has = function (key) {\n return Object.prototype.hasOwnProperty.call(this.__store, key + \"_\" + typeof key);\n };\n\n return CustomMap;\n}();\n/**\n * Is string contains rpx\n * note: rpx is an alias to rpx\n * @param {String} str\n * @returns {Boolean}\n */\n\n\nfunction isRpx(str) {\n return typeof str === 'string' && RPX_REG.test(str);\n}\n/**\n * Calculate rpx\n * @param {String} str\n * @returns {String}\n */\n\n\nfunction calcRpx(str) {\n if (targetPlatform === 'web') {\n // In Web convert rpx to 'vw', same as driver-dom and driver-universal\n // '375rpx' => '50vw'\n return str.replace(RPX_REG, decimalVWTransformer);\n } else if (targetPlatform === 'weex') {\n // In Weex convert rpx to 'px'\n // '375rpx' => 375 * px\n return str.replace(RPX_REG, decimalPixelTransformer);\n } else {\n // Other platform return original value, like Mini-App and WX Mini-Program ...\n // '375rpx' => '375rpx'\n return str;\n }\n}\n\nfunction getRpx() {\n return __rpx_coefficient__;\n}\n\nfunction setRpx(rpx) {\n __rpx_coefficient__ = rpx;\n}\n\nfunction getViewportWidth() {\n return __viewport_width__;\n}\n\nfunction setViewportWidth(viewport) {\n __viewport_width__ = viewport;\n}\n/**\n * Set a function to transform unit of pixel,\n * default to passthrough.\n * @param {Function} transformer function\n */\n\n\nfunction setDecimalPixelTransformer(transformer) {\n decimalPixelTransformer = transformer;\n}\n/**\n * Set unit precision.\n * @param n {Number} Unit precision, default to 4.\n */\n\n\nfunction setUnitPrecision(n) {\n unitPrecision = n;\n}\n/**\n * Create a cached version of a pure function.\n * Use the first params as cache key.\n */\n\n\nfunction cached(fn) {\n var cache = new CustomMap();\n return function () {\n var key = arguments.length <= 0 ? undefined : arguments[0];\n if (!cache.has(key)) cache.set(key, fn.apply(void 0, arguments));\n return cache.get(key);\n };\n}\n\nfunction setTargetPlatform(platform) {\n targetPlatform = platform;\n}\n/**\n * Convert rpx.\n * @param value\n * @param prop\n * @param platform\n * @return {String} Transformed value.\n */\n\n\nvar convertUnit = cached(function (value, prop, platform) {\n if (platform) {\n setTargetPlatform(platform);\n }\n\n return isRpx(value) ? calcRpx(value) : value;\n});\nexports.convertUnit = convertUnit;\n\n/***/ }),\n\n/***/ \"./node_modules/tiny-invariant/dist/tiny-invariant.esm.js\":\n/*!****************************************************************!*\\\n !*** ./node_modules/tiny-invariant/dist/tiny-invariant.esm.js ***!\n \\****************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar isProduction = \"development\" === 'production';\nvar prefix = 'Invariant failed';\n\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n\n if (isProduction) {\n throw new Error(prefix);\n }\n\n throw new Error(prefix + \": \" + (message || ''));\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (invariant);\n\n/***/ }),\n\n/***/ \"./node_modules/tiny-warning/dist/tiny-warning.esm.js\":\n/*!************************************************************!*\\\n !*** ./node_modules/tiny-warning/dist/tiny-warning.esm.js ***!\n \\************************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nvar isProduction = \"development\" === 'production';\n\nfunction warning(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n var text = \"Warning: \" + message;\n\n if (typeof console !== 'undefined') {\n console.warn(text);\n }\n\n try {\n throw Error(text);\n } catch (x) {}\n }\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (warning);\n\n/***/ }),\n\n/***/ \"./node_modules/value-equal/esm/value-equal.js\":\n/*!*****************************************************!*\\\n !*** ./node_modules/value-equal/esm/value-equal.js ***!\n \\*****************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\nfunction valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true; // Otherwise, if either of them == null they are not equal.\n\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return Array.isArray(b) && a.length === b.length && a.every(function (item, index) {\n return valueEqual(item, b[index]);\n });\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n return Object.keys(Object.assign({}, a, b)).every(function (key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (valueEqual);\n\n/***/ }),\n\n/***/ \"./node_modules/webpack/buildin/global.js\":\n/*!***********************************!*\\\n !*** (webpack)/buildin/global.js ***!\n \\***********************************/\n/*! no static exports found */\n/***/ (function(module, exports) {\n\nvar g = function () {\n return this;\n}(); // This works in non-strict mode\n\n\ntry {\n // This works if eval is allowed (see CSP)\n g = g || new Function(\"return this\")();\n} catch (e) {\n // This works if the window reference is available\n if (typeof window === \"object\") g = window;\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\n\nmodule.exports = g;\n\n/***/ }),\n\n/***/ \"./src/app.js\":\n/*!********************!*\\\n !*** ./src/app.js ***!\n \\********************/\n/*! no exports provided */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax-app */ \"./.rax/index.ts\");\n/* harmony import */ var _app_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./app.json */ \"./src/app.json\");\n// import \"./Agro-Mobile/Theme/global.less\";\n\n\nObject(rax_app__WEBPACK_IMPORTED_MODULE_0__[\"runApp\"])(_app_json__WEBPACK_IMPORTED_MODULE_1__[\"default\"]);\n\n/***/ }),\n\n/***/ \"./src/app.json\":\n/*!**********************!*\\\n !*** ./src/app.json ***!\n \\**********************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\nvar routes = [];\nroutes.push(_extends({}, {\n \"path\": \"/pages/Home/index\",\n \"source\": \"pages/Home/index\",\n \"window\": {\n \"title\": \"uni\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/Home/index */ \"./src/pages/Home/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/Home/index\",\n \"source\": \"pages/Home/index\",\n \"window\": {\n \"title\": \"uni\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/application/index\",\n \"source\": \"pages/application/index\",\n \"window\": {\n \"title\": \"application\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/application/index */ \"./src/pages/application/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/application/index\",\n \"source\": \"pages/application/index\",\n \"window\": {\n \"title\": \"application\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/caniuse/index\",\n \"source\": \"pages/caniuse/index\",\n \"window\": {\n \"title\": \"caniuse\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/caniuse/index */ \"./src/pages/caniuse/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/caniuse/index\",\n \"source\": \"pages/caniuse/index\",\n \"window\": {\n \"title\": \"caniuse\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/canvas/index\",\n \"source\": \"pages/canvas/index\",\n \"window\": {\n \"title\": \"canvas\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/canvas/index */ \"./src/pages/canvas/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/canvas/index\",\n \"source\": \"pages/canvas/index\",\n \"window\": {\n \"title\": \"canvas\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/accelerometer/index\",\n \"source\": \"pages/accelerometer/index\",\n \"window\": {\n \"title\": \"accelerometer\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/accelerometer/index */ \"./src/pages/accelerometer/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/accelerometer/index\",\n \"source\": \"pages/accelerometer/index\",\n \"window\": {\n \"title\": \"accelerometer\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/clipboard/index\",\n \"source\": \"pages/clipboard/index\",\n \"window\": {\n \"title\": \"clipboard\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/clipboard/index */ \"./src/pages/clipboard/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/clipboard/index\",\n \"source\": \"pages/clipboard/index\",\n \"window\": {\n \"title\": \"clipboard\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/system-info/index\",\n \"source\": \"pages/system-info/index\",\n \"window\": {\n \"title\": \"system-info\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/system-info/index */ \"./src/pages/system-info/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/system-info/index\",\n \"source\": \"pages/system-info/index\",\n \"window\": {\n \"title\": \"system-info\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/scan/index\",\n \"source\": \"pages/scan/index\",\n \"window\": {\n \"title\": \"scan\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/scan/index */ \"./src/pages/scan/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/scan/index\",\n \"source\": \"pages/scan/index\",\n \"window\": {\n \"title\": \"scan\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/file/index\",\n \"source\": \"pages/file/index\",\n \"window\": {\n \"title\": \"file\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/file/index */ \"./src/pages/file/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/file/index\",\n \"source\": \"pages/file/index\",\n \"window\": {\n \"title\": \"file\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/action-sheet/index\",\n \"source\": \"pages/action-sheet/index\",\n \"window\": {\n \"title\": \"action-sheet\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/action-sheet/index */ \"./src/pages/action-sheet/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/action-sheet/index\",\n \"source\": \"pages/action-sheet/index\",\n \"window\": {\n \"title\": \"action-sheet\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/alert/index\",\n \"source\": \"pages/alert/index\",\n \"window\": {\n \"title\": \"alert\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/alert/index */ \"./src/pages/alert/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/alert/index\",\n \"source\": \"pages/alert/index\",\n \"window\": {\n \"title\": \"alert\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/animation/index\",\n \"source\": \"pages/animation/index\",\n \"window\": {\n \"title\": \"animation\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/animation/index */ \"./src/pages/animation/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/animation/index\",\n \"source\": \"pages/animation/index\",\n \"window\": {\n \"title\": \"animation\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/toast/index\",\n \"source\": \"pages/toast/index\",\n \"window\": {\n \"title\": \"toast\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/toast/index */ \"./src/pages/toast/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/toast/index\",\n \"source\": \"pages/toast/index\",\n \"window\": {\n \"title\": \"toast\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/loading/index\",\n \"source\": \"pages/loading/index\",\n \"window\": {\n \"title\": \"loading\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/loading/index */ \"./src/pages/loading/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/loading/index\",\n \"source\": \"pages/loading/index\",\n \"window\": {\n \"title\": \"loading\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/navigation-bar/index\",\n \"source\": \"pages/navigation-bar/index\",\n \"window\": {\n \"title\": \"navigation-bar\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/navigation-bar/index */ \"./src/pages/navigation-bar/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/navigation-bar/index\",\n \"source\": \"pages/navigation-bar/index\",\n \"window\": {\n \"title\": \"navigation-bar\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/pull-down-refresh/index\",\n \"source\": \"pages/pull-down-refresh/index\",\n \"window\": {\n \"title\": \"pull-down-refresh\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/pull-down-refresh/index */ \"./src/pages/pull-down-refresh/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/pull-down-refresh/index\",\n \"source\": \"pages/pull-down-refresh/index\",\n \"window\": {\n \"title\": \"pull-down-refresh\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/tab-bar/index\",\n \"source\": \"pages/tab-bar/index\",\n \"window\": {\n \"title\": \"tab-bar\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/tab-bar/index */ \"./src/pages/tab-bar/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/tab-bar/index\",\n \"source\": \"pages/tab-bar/index\",\n \"window\": {\n \"title\": \"tab-bar\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/element/index\",\n \"source\": \"pages/element/index\",\n \"window\": {\n \"title\": \"element\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/element/index */ \"./src/pages/element/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/element/index\",\n \"source\": \"pages/element/index\",\n \"window\": {\n \"title\": \"element\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/intersection-observer/index\",\n \"source\": \"pages/intersection-observer/index\",\n \"window\": {\n \"title\": \"intersection-observer\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/intersection-observer/index */ \"./src/pages/intersection-observer/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/intersection-observer/index\",\n \"source\": \"pages/intersection-observer/index\",\n \"window\": {\n \"title\": \"intersection-observer\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/confirm/index\",\n \"source\": \"pages/confirm/index\",\n \"window\": {\n \"title\": \"confirm\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/confirm/index */ \"./src/pages/confirm/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/confirm/index\",\n \"source\": \"pages/confirm/index\",\n \"window\": {\n \"title\": \"confirm\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/location/index\",\n \"source\": \"pages/location/index\",\n \"window\": {\n \"title\": \"location\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/location/index */ \"./src/pages/location/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/location/index\",\n \"source\": \"pages/location/index\",\n \"window\": {\n \"title\": \"location\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/image/index\",\n \"source\": \"pages/image/index\",\n \"window\": {\n \"title\": \"image\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/image/index */ \"./src/pages/image/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/image/index\",\n \"source\": \"pages/image/index\",\n \"window\": {\n \"title\": \"image\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/audio/index\",\n \"source\": \"pages/audio/index\",\n \"window\": {\n \"title\": \"audio\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/audio/index */ \"./src/pages/audio/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/audio/index\",\n \"source\": \"pages/audio/index\",\n \"window\": {\n \"title\": \"audio\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/navigate/index\",\n \"source\": \"pages/navigate/index\",\n \"window\": {\n \"title\": \"navigate\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/navigate/index */ \"./src/pages/navigate/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/navigate/index\",\n \"source\": \"pages/navigate/index\",\n \"window\": {\n \"title\": \"navigate\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/request/index\",\n \"source\": \"pages/request/index\",\n \"window\": {\n \"title\": \"request\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/request/index */ \"./src/pages/request/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/request/index\",\n \"source\": \"pages/request/index\",\n \"window\": {\n \"title\": \"request\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/storage/index\",\n \"source\": \"pages/storage/index\",\n \"window\": {\n \"title\": \"storage\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/storage/index */ \"./src/pages/storage/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/storage/index\",\n \"source\": \"pages/storage/index\",\n \"window\": {\n \"title\": \"storage\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/recorder/index\",\n \"source\": \"pages/recorder/index\",\n \"window\": {\n \"title\": \"recorder\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/recorder/index */ \"./src/pages/recorder/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/recorder/index\",\n \"source\": \"pages/recorder/index\",\n \"window\": {\n \"title\": \"recorder\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/video/index\",\n \"source\": \"pages/video/index\",\n \"window\": {\n \"title\": \"video\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/video/index */ \"./src/pages/video/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/video/index\",\n \"source\": \"pages/video/index\",\n \"window\": {\n \"title\": \"video\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/make-phone-call/index\",\n \"source\": \"pages/make-phone-call/index\",\n \"window\": {\n \"title\": \"make-phone-call\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/make-phone-call/index */ \"./src/pages/make-phone-call/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/make-phone-call/index\",\n \"source\": \"pages/make-phone-call/index\",\n \"window\": {\n \"title\": \"make-phone-call\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/vibrate/index\",\n \"source\": \"pages/vibrate/index\",\n \"window\": {\n \"title\": \"vibrate\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/vibrate/index */ \"./src/pages/vibrate/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/vibrate/index\",\n \"source\": \"pages/vibrate/index\",\n \"window\": {\n \"title\": \"vibrate\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/page-scroll-to/index\",\n \"source\": \"pages/page-scroll-to/index\",\n \"window\": {\n \"title\": \"page-scroll-to\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/page-scroll-to/index */ \"./src/pages/page-scroll-to/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/page-scroll-to/index\",\n \"source\": \"pages/page-scroll-to/index\",\n \"window\": {\n \"title\": \"page-scroll-to\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/authorize/index\",\n \"source\": \"pages/authorize/index\",\n \"window\": {\n \"title\": \"authorize\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/authorize/index */ \"./src/pages/authorize/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/authorize/index\",\n \"source\": \"pages/authorize/index\",\n \"window\": {\n \"title\": \"authorize\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/subscribe-message/index\",\n \"source\": \"pages/subscribe-message/index\",\n \"window\": {\n \"title\": \"subscribe-message\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/subscribe-message/index */ \"./src/pages/subscribe-message/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/subscribe-message/index\",\n \"source\": \"pages/subscribe-message/index\",\n \"window\": {\n \"title\": \"subscribe-message\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\nroutes.push(_extends({}, {\n \"path\": \"/pages/share/index\",\n \"source\": \"pages/share/index\",\n \"window\": {\n \"title\": \"share\"\n }\n}, {\n component: function component() {\n return function () {\n function Component(props) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(__webpack_require__(/*! ./src/pages/share/index */ \"./src/pages/share/index.tsx\")[\"default\"], _extends({\n pageConfig: {\n \"path\": \"/pages/share/index\",\n \"source\": \"pages/share/index\",\n \"window\": {\n \"title\": \"share\"\n }\n }\n }, props));\n }\n\n return Component;\n };\n }\n}));\n\nvar appConfig = _extends({}, {\n \"routes\": [{\n \"path\": \"/pages/Home/index\",\n \"source\": \"pages/Home/index\",\n \"window\": {\n \"title\": \"uni\"\n }\n }, {\n \"path\": \"/pages/application/index\",\n \"source\": \"pages/application/index\",\n \"window\": {\n \"title\": \"application\"\n }\n }, {\n \"path\": \"/pages/caniuse/index\",\n \"source\": \"pages/caniuse/index\",\n \"window\": {\n \"title\": \"caniuse\"\n }\n }, {\n \"path\": \"/pages/canvas/index\",\n \"source\": \"pages/canvas/index\",\n \"window\": {\n \"title\": \"canvas\"\n }\n }, {\n \"path\": \"/pages/accelerometer/index\",\n \"source\": \"pages/accelerometer/index\",\n \"window\": {\n \"title\": \"accelerometer\"\n }\n }, {\n \"path\": \"/pages/clipboard/index\",\n \"source\": \"pages/clipboard/index\",\n \"window\": {\n \"title\": \"clipboard\"\n }\n }, {\n \"path\": \"/pages/system-info/index\",\n \"source\": \"pages/system-info/index\",\n \"window\": {\n \"title\": \"system-info\"\n }\n }, {\n \"path\": \"/pages/scan/index\",\n \"source\": \"pages/scan/index\",\n \"window\": {\n \"title\": \"scan\"\n }\n }, {\n \"path\": \"/pages/file/index\",\n \"source\": \"pages/file/index\",\n \"window\": {\n \"title\": \"file\"\n }\n }, {\n \"path\": \"/pages/action-sheet/index\",\n \"source\": \"pages/action-sheet/index\",\n \"window\": {\n \"title\": \"action-sheet\"\n }\n }, {\n \"path\": \"/pages/alert/index\",\n \"source\": \"pages/alert/index\",\n \"window\": {\n \"title\": \"alert\"\n }\n }, {\n \"path\": \"/pages/animation/index\",\n \"source\": \"pages/animation/index\",\n \"window\": {\n \"title\": \"animation\"\n }\n }, {\n \"path\": \"/pages/toast/index\",\n \"source\": \"pages/toast/index\",\n \"window\": {\n \"title\": \"toast\"\n }\n }, {\n \"path\": \"/pages/loading/index\",\n \"source\": \"pages/loading/index\",\n \"window\": {\n \"title\": \"loading\"\n }\n }, {\n \"path\": \"/pages/navigation-bar/index\",\n \"source\": \"pages/navigation-bar/index\",\n \"window\": {\n \"title\": \"navigation-bar\"\n }\n }, {\n \"path\": \"/pages/pull-down-refresh/index\",\n \"source\": \"pages/pull-down-refresh/index\",\n \"window\": {\n \"title\": \"pull-down-refresh\"\n }\n }, {\n \"path\": \"/pages/tab-bar/index\",\n \"source\": \"pages/tab-bar/index\",\n \"window\": {\n \"title\": \"tab-bar\"\n }\n }, {\n \"path\": \"/pages/element/index\",\n \"source\": \"pages/element/index\",\n \"window\": {\n \"title\": \"element\"\n }\n }, {\n \"path\": \"/pages/intersection-observer/index\",\n \"source\": \"pages/intersection-observer/index\",\n \"window\": {\n \"title\": \"intersection-observer\"\n }\n }, {\n \"path\": \"/pages/confirm/index\",\n \"source\": \"pages/confirm/index\",\n \"window\": {\n \"title\": \"confirm\"\n }\n }, {\n \"path\": \"/pages/location/index\",\n \"source\": \"pages/location/index\",\n \"window\": {\n \"title\": \"location\"\n }\n }, {\n \"path\": \"/pages/image/index\",\n \"source\": \"pages/image/index\",\n \"window\": {\n \"title\": \"image\"\n }\n }, {\n \"path\": \"/pages/audio/index\",\n \"source\": \"pages/audio/index\",\n \"window\": {\n \"title\": \"audio\"\n }\n }, {\n \"path\": \"/pages/navigate/index\",\n \"source\": \"pages/navigate/index\",\n \"window\": {\n \"title\": \"navigate\"\n }\n }, {\n \"path\": \"/pages/request/index\",\n \"source\": \"pages/request/index\",\n \"window\": {\n \"title\": \"request\"\n }\n }, {\n \"path\": \"/pages/storage/index\",\n \"source\": \"pages/storage/index\",\n \"window\": {\n \"title\": \"storage\"\n }\n }, {\n \"path\": \"/pages/recorder/index\",\n \"source\": \"pages/recorder/index\",\n \"window\": {\n \"title\": \"recorder\"\n }\n }, {\n \"path\": \"/pages/video/index\",\n \"source\": \"pages/video/index\",\n \"window\": {\n \"title\": \"video\"\n }\n }, {\n \"path\": \"/pages/make-phone-call/index\",\n \"source\": \"pages/make-phone-call/index\",\n \"window\": {\n \"title\": \"make-phone-call\"\n }\n }, {\n \"path\": \"/pages/vibrate/index\",\n \"source\": \"pages/vibrate/index\",\n \"window\": {\n \"title\": \"vibrate\"\n }\n }, {\n \"path\": \"/pages/page-scroll-to/index\",\n \"source\": \"pages/page-scroll-to/index\",\n \"window\": {\n \"title\": \"page-scroll-to\"\n }\n }, {\n \"path\": \"/pages/authorize/index\",\n \"source\": \"pages/authorize/index\",\n \"window\": {\n \"title\": \"authorize\"\n }\n }, {\n \"path\": \"/pages/subscribe-message/index\",\n \"source\": \"pages/subscribe-message/index\",\n \"window\": {\n \"title\": \"subscribe-message\"\n }\n }, {\n \"path\": \"/pages/share/index\",\n \"source\": \"pages/share/index\",\n \"window\": {\n \"title\": \"share\"\n }\n }],\n \"window\": {\n \"title\": \"\"\n },\n \"permission\": {\n \"scope.userLocation\": {\n \"desc\": \"你的位置信息将用于小程序位置接口的效果展示\"\n }\n },\n \"tabBar\": {\n \"textColor\": \"#999\",\n \"selectedColor\": \"#666\",\n \"backgroundColor\": \"#f8f8f8\",\n \"items\": [{\n \"pagePath\": \"pages/Home/index\",\n \"icon\": \"https://gw.alicdn.com/imgextra/i2/O1CN01R4VAGp28dtnSLAKM7_!!6000000007956-2-tps-50-50.png\",\n \"activeIcon\": \"https://gw.alicdn.com/imgextra/i2/O1CN01JFSxTt1xz0HB4jO0L_!!6000000006513-2-tps-50-50.png\",\n \"text\": \"home\"\n }, {\n \"pagePath\": \"pages/tab-bar/index\",\n \"icon\": \"https://gw.alicdn.com/imgextra/i4/O1CN01TJQjGB1JOkHwRoGVa_!!6000000001019-2-tps-30-30.png\",\n \"activeIcon\": \"https://gw.alicdn.com/imgextra/i2/O1CN01IADkfG20L6cgxIC5j_!!6000000006832-2-tps-50-50.png\",\n \"text\": \"tabBar\"\n }],\n \"list\": [{\n \"pagePath\": \"pages/Home/index\",\n \"text\": \"home\"\n }, {\n \"pagePath\": \"pages/tab-bar/index\",\n \"text\": \"tabBar\"\n }]\n }\n}, {\n routes: routes\n});\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (appConfig);\n\n/***/ }),\n\n/***/ \"./src/pages/Home/index.tsx\":\n/*!**********************************!*\\\n !*** ./src/pages/Home/index.tsx ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _app_json__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../app.json */ \"./src/app.json\");\n/* harmony import */ var _uni_navigate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/navigate */ \"../dist/lib/@uni/navigate/es/index.js\");\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n\nvar Index = function (_ref) {\n _ref.history;\n\n var clickHandler = function (path) {\n _uni_navigate__WEBPACK_IMPORTED_MODULE_3__[\"default\"].push({\n url: path,\n isHash: true,\n refresh: true\n });\n };\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, _app_json__WEBPACK_IMPORTED_MODULE_2__[\"default\"].routes.filter(function (i) {\n return i.path != '/pages/Home/index';\n }).map(function (i) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n key: i.path,\n style: styles.button,\n onClick: function onClick() {\n return clickHandler(i.path);\n }\n }, i.window.title);\n }));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/accelerometer/index.tsx\":\n/*!*******************************************!*\\\n !*** ./src/pages/accelerometer/index.tsx ***!\n \\*******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-text */ \"./node_modules/rax-text/es/index.js\");\n/* harmony import */ var _uni_accelerometer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/accelerometer */ \"../dist/lib/@uni/accelerometer/es/index.js\");\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({\n x: 0,\n y: 0,\n z: 0\n }),\n res = _useState[0],\n setRes = _useState[1];\n\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n _uni_accelerometer__WEBPACK_IMPORTED_MODULE_3__[\"default\"].onChange(function (res) {\n setRes(res);\n console.log(res.x);\n console.log(res.y);\n console.log(res.z);\n });\n }, []);\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"\\u52A0\\u901F\\u6643\\u52A8\\u624B\\u673A\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"x\\u8F74\\u52A0\\u901F\\u5EA6: \", res.x), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"y\\u8F74\\u52A0\\u901F\\u5EA6: \", res.y), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"z\\u8F74\\u52A0\\u901F\\u5EA6: \", res.z));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/action-sheet/index.tsx\":\n/*!******************************************!*\\\n !*** ./src/pages/action-sheet/index.tsx ***!\n \\******************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_action_sheet__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/action-sheet */ \"../dist/lib/@uni/action-sheet/es/index.js\");\n/* harmony import */ var _uni_toast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/toast */ \"../dist/lib/@uni/toast/es/index.js\");\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_action_sheet__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n itemList: ['A', 'B', 'C'],\n _ext: {\n aliMiniApp: {\n title: '我是额外参数标题_ext.aliMiniApp',\n cancelButtonText: '阿里按钮文案'\n },\n wechatMiniProgram: {\n itemColor: '#ff1214'\n }\n }\n }).then(function (res) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].show(\"\\u9009\\u4E2D\\u9879Index:\" + res.tapIndex);\n });\n }\n }, \"showActionSheet\");\n});\n\n/***/ }),\n\n/***/ \"./src/pages/alert/index.tsx\":\n/*!***********************************!*\\\n !*** ./src/pages/alert/index.tsx ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_alert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/alert */ \"../dist/lib/@uni/alert/es/index.js\");\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n\nvar Index = function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return Object(_uni_alert__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n content: '我是一个弹窗',\n title: '弹窗',\n buttonText: '确定',\n _ext: {\n wechatMiniProgram: {\n confirmColor: '#ff1214'\n }\n }\n });\n }\n }, \"\\u70B9\\u51FB\\u5F39\\u51FA\\u666E\\u901A\\u5F39\\u7A97\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return Object(_uni_alert__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n content: '我是一个弹窗',\n title: '弹窗',\n buttonText: '确定',\n success: function success() {\n Object(_uni_alert__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n content: '你点击了确定',\n title: '弹窗',\n buttonText: '确定'\n });\n }\n });\n }\n }, \"\\u70B9\\u51FB\\u76D1\\u542C\\u70B9\\u51FB\"));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/animation/index.tsx\":\n/*!***************************************!*\\\n !*** ./src/pages/animation/index.tsx ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_animation__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/animation */ \"../dist/lib/@uni/animation/es/index.js\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\nvar styles = {\n box: {\n position: 'absolute',\n top: '100rpx',\n left: '100rpx',\n width: '300rpx',\n height: '180rpx',\n background: '#f7c8c8'\n },\n buttonWrapper: {\n position: 'absolute',\n top: '400rpx',\n left: '16rpx',\n right: '16rpx',\n zIndex: '2',\n fontSize: '26rpx',\n color: '#333'\n },\n buttonGroup: {\n flexDirection: 'row',\n flexWrap: 'wrap'\n },\n button: {\n margin: '2rpx',\n padding: '12rpx 16px',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n desc: {\n flexDirection: 'row',\n alignItems: 'center',\n marginTop: '20rpx'\n }\n};\n\nvar random = function (min, max, digit) {\n if (digit === void 0) {\n digit = 0;\n }\n\n var r = Math.random() * (max - min) + min;\n return Number(r.toFixed(digit));\n};\n\nvar Index = function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(true),\n visible = _useState[0],\n setVisible = _useState[1];\n\n var _useState2 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])([]),\n selected = _useState2[0],\n setSelected = _useState2[1];\n\n var _useState3 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({}),\n animationData = _useState3[0],\n setAnimationData = _useState3[1];\n\n var boxRef = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])();\n var ani = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])();\n\n if (!ani.current) {\n ani.current = Object(_uni_animation__WEBPACK_IMPORTED_MODULE_2__[\"createAnimation\"])();\n }\n\n var put = function (name) {\n var current = selected.pop();\n if (!current) current = [];\n current.push(name);\n selected.push(current);\n setSelected(selected.slice());\n };\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, visible && Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.box,\n ref: boxRef,\n animation: animationData\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.buttonWrapper\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.buttonGroup\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return put('旋转');\n }\n }, \"\\u65CB\\u8F6C\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return put('缩放');\n }\n }, \"\\u7F29\\u653E\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return put('平移');\n }\n }, \"\\u5E73\\u79FB\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return put('倾斜');\n }\n }, \"\\u503E\\u659C\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return put('3D变换');\n }\n }, \"3D\\u53D8\\u6362\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return put('改变大小');\n }\n }, \"\\u6539\\u53D8\\u5927\\u5C0F\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return put('改变背景色');\n }\n }, \"\\u6539\\u53D8\\u80CC\\u666F\\u8272\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return put('改变透明度');\n }\n }, \"\\u6539\\u53D8\\u900F\\u660E\\u5EA6\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return put('延迟500ms');\n }\n }, \"\\u5EF6\\u8FDF500ms\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.desc\n }, \"\\u5DF2\\u6DFB\\u52A0\\u7684\\u52A8\\u753B\\u6548\\u679C\\uFF1A\", Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: _extends({}, styles.button, {\n padding: '4rpx',\n background: '#35b0ce'\n }),\n onClick: function addGroup() {\n var newSelected = selected.slice();\n newSelected.push([]);\n setSelected(newSelected);\n }\n }, \"\\u6DFB\\u52A0\\u52A8\\u753B\\u7EC4\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: _extends({}, styles.button, {\n padding: '4rpx',\n background: '#35b0ce'\n }),\n onClick: function copyGroup() {\n var newSelected = selected.slice();\n var target = newSelected[newSelected.length - 1] || [];\n newSelected.push(target.slice());\n setSelected(newSelected);\n }\n }, \"\\u62F7\\u8D1D\\u5F53\\u524D\\u52A8\\u753B\\u7EC4\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: {\n color: '#17BD88',\n margin: '20rpx 0'\n }\n }, selected.map(function (item, index) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, index + 1, \": \", item.join(', '));\n })), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: _extends({}, styles.button, {\n marginTop: '30rpx'\n }),\n onClick: function play() {\n var inst = ani.current;\n selected.forEach(function (step) {\n if (step.length === 0) return;\n step.forEach(function (item) {\n switch (item) {\n case '旋转':\n inst.rotate(random(-30, 30));\n break;\n\n case '缩放':\n inst.scale(random(0.5, 1.5, 2));\n break;\n\n case '平移':\n inst.translate(random(-50, 50), random(-50, 50));\n break;\n\n case '倾斜':\n inst.skew(random(-30, 30), random(-30, 30));\n break;\n\n case '3D变换':\n inst.rotate3d(random(-2, 2, 2), random(-2, 2, 2), random(-2, 2, 2), random(-90, 90));\n inst.translate3d(random(-50, 50), random(-50, 50), random(-50, 50));\n break;\n\n case '改变大小':\n inst.width(random(100, 300)).height(random(50, 140));\n break;\n\n case '改变背景色':\n inst.backgroundColor(\"rgb(\" + random(0, 255) + \", \" + random(0, 255) + \", \" + random(0, 255) + \")\");\n break;\n\n case '改变透明度':\n inst.opacity(random(0.2, 1, 2));\n break;\n\n case '延迟500ms':\n inst.step().step({\n duration: 0,\n delay: 500\n });\n break;\n\n default:\n }\n });\n inst.step();\n });\n var data = inst.export(boxRef.current);\n console.log('animationData', data);\n setAnimationData(data);\n }\n }, \"\\u64AD\\u653E\\u52A8\\u753B\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: _extends({}, styles.button, {\n marginTop: '10rpx'\n }),\n onClick: function reset() {\n ani.current = Object(_uni_animation__WEBPACK_IMPORTED_MODULE_2__[\"createAnimation\"])();\n setVisible(false);\n setSelected([]);\n setAnimationData({});\n setTimeout(function () {\n setVisible(true);\n }, 0);\n }\n }, \"\\u91CD\\u7F6E\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: _extends({}, styles.button, {\n marginTop: '30rpx'\n }),\n onClick: function playTransition() {\n var transition = Object(_uni_animation__WEBPACK_IMPORTED_MODULE_2__[\"createTransition\"])({\n from: {\n transform: 'translate(10px, 10px) scale(1)'\n },\n to: {\n transform: 'translate(100px, 50px) scale(1.4, 1.2)'\n }\n });\n var data = transition.export(boxRef.current);\n console.log('transitionData', data);\n setAnimationData(data);\n }\n }, \"createTransition \\u6F14\\u793A\\uFF08\\u5E73\\u79FB+\\u7F29\\u653E\\uFF09\")));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/application/index.tsx\":\n/*!*****************************************!*\\\n !*** ./src/pages/application/index.tsx ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_application__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/application */ \"../dist/lib/@uni/application/es/index.js\");\n/* harmony import */ var _uni_toast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/toast */ \"../dist/lib/@uni/toast/es/index.js\");\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var ref = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(function () {\n Object(_uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"show\"])('捕获到一个错误');\n });\n\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({\n firstPage: {},\n currentPage: {}\n }),\n data = _useState[0],\n setData = _useState[1];\n\n var _useState2 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(1),\n a = _useState2[0],\n setA = _useState2[1];\n\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n Object(_uni_application__WEBPACK_IMPORTED_MODULE_2__[\"onError\"])(ref.current);\n return function () {\n Object(_uni_application__WEBPACK_IMPORTED_MODULE_2__[\"offError\"])(ref.current);\n };\n }, []);\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n throw new Error('我是一个错误');\n }, [a]);\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_application__WEBPACK_IMPORTED_MODULE_2__[\"getApp\"])().globalData = 'I am global data';\n }\n }, \"\\u8BBE\\u7F6E\\u5168\\u5C40\\u5C5E\\u6027\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"show\"])(Object(_uni_application__WEBPACK_IMPORTED_MODULE_2__[\"getApp\"])().globalData);\n }\n }, \"\\u83B7\\u53D6\\u5168\\u5C40\\u5C5E\\u6027\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_application__WEBPACK_IMPORTED_MODULE_2__[\"onError\"])(ref.current);\n }\n }, \"\\u76D1\\u542C\\u9519\\u8BEF\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function showError() {\n setA(function (a) {\n return a + 1;\n });\n }\n }, \"\\u89E6\\u53D1\\u9519\\u8BEF\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_application__WEBPACK_IMPORTED_MODULE_2__[\"offError\"])(ref.current);\n }\n }, \"\\u53D6\\u6D88\\u76D1\\u542C\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n var pageInfo = Object(_uni_application__WEBPACK_IMPORTED_MODULE_2__[\"getCurrentPages\"])();\n setData({\n firstPage: {\n pageId: pageInfo[0].pageId\n },\n currentPage: {\n pageId: pageInfo[pageInfo.length - 1].pageId\n }\n });\n }\n }, \"\\u83B7\\u53D6\\u9875\\u9762\\u5806\\u6808\\u4FE1\\u606F\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"\\u5F53\\u524D\\u9875\\u9762id\\u662F\\uFF1A\", data.currentPage.pageId)));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/audio/index.tsx\":\n/*!***********************************!*\\\n !*** ./src/pages/audio/index.tsx ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-text */ \"./node_modules/rax-text/es/index.js\");\n/* harmony import */ var _uni_audio__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/audio */ \"../dist/lib/@uni/audio/es/index.js\");\n/* harmony import */ var _uni_toast__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uni/toast */ \"../dist/lib/@uni/toast/es/index.js\");\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n\n\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n text: {\n marginTop: '100rpx',\n padding: '20rpx',\n fontSize: '26rpx',\n textAlign: 'center',\n color: 'green'\n },\n container: {\n marginTop: '100rpx'\n },\n input: {\n margin: '20rpx',\n borderBottom: 'solid #32a1ce',\n color: '#32a1ce'\n }\n};\n\nvar Index = function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(),\n innerAudioContext = _useState[0],\n setInnerAudioContext = _useState[1];\n\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_5__[\"isMiniApp\"]) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showToast({\n content: 'IDE 模拟器暂不支持调试,请以真机调试结果为准'\n });\n }\n\n var innerAudioContext = _uni_audio__WEBPACK_IMPORTED_MODULE_3__[\"default\"].createAudioContext();\n innerAudioContext.src = 'https://static.yximgs.com/udata/pkg/miniprogram-outer/test.m4a';\n innerAudioContext.autoplay = false;\n innerAudioContext.startTime = 0;\n innerAudioContext.playbackRate = 2;\n innerAudioContext.onPlay(function (res) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showToast({\n content: '音频播放'\n });\n console.log('onPlay', res);\n });\n innerAudioContext.onCanplay(function (res) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showToast({\n content: '音频进入可播放状态'\n });\n console.log('onCanplay', res);\n innerAudioContext.offCanplay(function (res) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showToast({\n content: '关闭监听音频进入可播放状态'\n });\n console.log('offCanplay', res);\n });\n });\n innerAudioContext.onPause(function (res) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showToast({\n content: '音频暂停'\n });\n console.log('onPause', res);\n });\n innerAudioContext.onStop(function (res) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showToast({\n content: '音频停止'\n });\n console.log('onStop', res);\n });\n innerAudioContext.onEnded(function (res) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showToast({\n content: '音频自然播放结束'\n });\n console.log('onEnded', res);\n });\n innerAudioContext.onError(function (err) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showToast({\n content: JSON.stringify(err)\n });\n console.log('onError', err);\n });\n innerAudioContext.onWaiting(function (res) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showToast({\n content: '音频加载中......'\n });\n console.log('onWaiting', res);\n });\n setInnerAudioContext(innerAudioContext);\n }, []);\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.container\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: {\n marginTop: '20rpx'\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function play() {\n innerAudioContext.play();\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"play\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function pause() {\n innerAudioContext.pause();\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"pause\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function stop() {\n innerAudioContext.stop();\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"stop\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function seek() {\n innerAudioContext.seek(30);\n _uni_toast__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showToast({\n content: '跳转到音频30s处'\n });\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"seek\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function destroy() {\n innerAudioContext.destroy();\n _uni_toast__WEBPACK_IMPORTED_MODULE_4__[\"default\"].showToast({\n content: '音频销毁,需要重新触发创建时期'\n });\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"destroy\"))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/authorize/index.tsx\":\n/*!***************************************!*\\\n !*** ./src/pages/authorize/index.tsx ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_authorize__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/authorize */ \"../dist/lib/@uni/authorize/es/index.js\");\n/* harmony import */ var _uni_toast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/toast */ \"../dist/lib/@uni/toast/es/index.js\");\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n bg: {\n background: '#333',\n color: '#fff',\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function clickHandler() {\n Object(_uni_authorize__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n scope: 'scope.userLocation',\n success: function success() {\n Object(_uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"showToast\"])('授权成功');\n },\n fail: function fail() {\n Object(_uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"showToast\"])('授权失败');\n }\n });\n }\n }, \"\\u83B7\\u53D6\\u5730\\u7406\\u4F4D\\u7F6E\\u6388\\u6743\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function clickHandler1() {\n Object(_uni_authorize__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n scope: 'scope.camera',\n success: function success() {\n Object(_uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"showToast\"])('授权成功');\n },\n fail: function fail() {\n Object(_uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"showToast\"])('授权失败');\n }\n });\n }\n }, \"\\u83B7\\u53D6\\u6444\\u50CF\\u5934\\u6388\\u6743\"));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/caniuse/index.tsx\":\n/*!*************************************!*\\\n !*** ./src/pages/caniuse/index.tsx ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_textinput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-textinput */ \"./node_modules/rax-textinput/es/index.js\");\n/* harmony import */ var _uni_caniuse__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/caniuse */ \"../dist/lib/@uni/caniuse/es/index.js\");\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(''),\n value = _useState[0],\n setValue = _useState[1];\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"\\u8BF7\\u8F93\\u5165api\\u6216\\u5305\\u540D\\uFF0C\\u5982'clipboard.getClipboard'\\u6216'clipboard'\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_textinput__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.input,\n placeholder: \"\\u8F93\\u5165\\u9A8C\\u8BC1\\u7684api\",\n value: value,\n onInput: function onInput(_ref) {\n var value = _ref.value;\n console.log(value);\n setValue(value);\n }\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"\\u7ED3\\u679C\\uFF1A\", Object(_uni_caniuse__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(value) + ''));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/canvas/index.tsx\":\n/*!************************************!*\\\n !*** ./src/pages/canvas/index.tsx ***!\n \\************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_canvas__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/canvas */ \"../dist/lib/@uni/canvas/es/index.js\");\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var canvasContextRef = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n\n var queryNode = function (color) {\n var node = document.querySelector('#canvas');\n _uni_canvas__WEBPACK_IMPORTED_MODULE_2__[\"default\"].createContext({\n canvasId: 'canvas',\n context: node._internal\n }).then(function (canvasContext) {\n canvasContextRef.current = canvasContext;\n canvasContext.fillStyle = color;\n canvasContext.fillRect(0, 0, 200, 200);\n });\n };\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"canvas\", {\n id: \"canvas\",\n \"canvas-id\": \"canvas\",\n type: \"2d\",\n width: \"400\",\n height: \"400\"\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function draw() {\n if (!canvasContextRef.current) {\n queryNode('red');\n } else {\n canvasContextRef.current.fillStyle = 'red';\n canvasContextRef.current.fillRect(0, 0, 200, 200);\n }\n }\n }, \"\\u70B9\\u51FB\\u751F\\u6210200*200\\u7684\\u77E9\\u5F62\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function draw2() {\n if (!canvasContextRef.current) {\n queryNode('yellow');\n } else if (canvasContextRef.current) {\n canvasContextRef.current.fillStyle = 'yellow';\n canvasContextRef.current.fillRect(0, 0, 200, 200);\n }\n }\n }, \"\\u70B9\\u51FB\\u751F\\u6210\\u9EC4\\u8272\\u7684\\u77E9\\u5F62\"));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/clipboard/index.tsx\":\n/*!***************************************!*\\\n !*** ./src/pages/clipboard/index.tsx ***!\n \\***************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_textinput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-textinput */ \"./node_modules/rax-textinput/es/index.js\");\n/* harmony import */ var _uni_clipboard__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/clipboard */ \"../dist/lib/@uni/clipboard/es/index.js\");\n/* harmony import */ var _uni_confirm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uni/confirm */ \"../dist/lib/@uni/confirm/es/index.js\");\n\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(''),\n value = _useState[0],\n setValue = _useState[1];\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_clipboard__WEBPACK_IMPORTED_MODULE_3__[\"getClipboard\"])().then(function (_ref) {\n var text = _ref.text;\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n content: text\n });\n });\n }\n }, \"\\u83B7\\u53D6\\u526A\\u5207\\u677F\\u6570\\u636E\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_textinput__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.input,\n placeholder: \"\\u8F93\\u5165\\u8BBE\\u7F6E\\u526A\\u5207\\u677F\\u6570\\u636E\",\n value: value,\n onInput: function onInput(_ref2) {\n var value = _ref2.value;\n console.log(value);\n setValue(value);\n }\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n console.log(value);\n Object(_uni_clipboard__WEBPACK_IMPORTED_MODULE_3__[\"setClipboard\"])({\n text: value\n }).then(function () {\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '设置剪切板数据',\n content: value\n });\n });\n }\n }, \"\\u8BBE\\u7F6E\\u526A\\u5207\\u677F\\u6570\\u636E\"));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/confirm/index.tsx\":\n/*!*************************************!*\\\n !*** ./src/pages/confirm/index.tsx ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_confirm__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/confirm */ \"../dist/lib/@uni/confirm/es/index.js\");\n/* harmony import */ var _uni_toast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/toast */ \"../dist/lib/@uni/toast/es/index.js\");\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n content: '显示modal'\n }).then(function (res) {\n if (res.confirm) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].show('点击了确认');\n } else {\n _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].show('点击了取消');\n }\n });\n }\n }, \"confirm\\u65E0title\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n title: '标题',\n content: '显示modal内容'\n }).then(function (res) {\n if (res.confirm) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].show('点击了确认');\n } else {\n _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].show('点击了取消');\n }\n });\n }\n }, \"confirm\\u6709title\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n title: '标题',\n content: '显示modal内容',\n confirmText: '继续',\n cancelText: '返回'\n }).then(function (res) {\n if (res.confirm) {\n _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].show('点击了确认');\n } else {\n _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].show('点击了取消');\n }\n });\n }\n }, \"confirm\\u81EA\\u5B9A\\u4E49\\u6309\\u94AE\\u6587\\u6848\"));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/element/index.tsx\":\n/*!*************************************!*\\\n !*** ./src/pages/element/index.tsx ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-text */ \"./node_modules/rax-text/es/index.js\");\n/* harmony import */ var _uni_element__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/element */ \"../dist/lib/@uni/element/es/index.js\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n demo1: {\n border: '1px solid #eee',\n padding: '20rpx',\n fontSize: '26rpx',\n textAlign: 'center',\n margin: '20rpx'\n },\n preview: {\n padding: '20rpx'\n }\n};\n\nvar Index = function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({\n scrollTop: '',\n scrollLeft: ''\n }),\n demoInfo = _useState[0],\n setDemoInfo = _useState[1];\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n id: \"demo1\",\n style: styles.demo1\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"\\u6211\\u662Fdemo1\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n var node = document.querySelector('#demo1');\n Object(_uni_element__WEBPACK_IMPORTED_MODULE_3__[\"getScrollOffset\"])('#demo1', node._internal).then(function (ret) {\n var _ret$ = ret[0],\n scrollTop = _ret$.scrollTop,\n scrollLeft = _ret$.scrollLeft;\n console.log(scrollTop, scrollLeft);\n setDemoInfo(function (state) {\n return _extends({}, state, {\n scrollTop: scrollTop,\n scrollLeft: scrollLeft\n });\n });\n });\n }\n }, \"\\u70B9\\u51FB\\u83B7\\u53D6demo1\\u7684scrollTop\\u548CscrollLeft\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n var node = document.querySelector('#demo1');\n Object(_uni_element__WEBPACK_IMPORTED_MODULE_3__[\"getBoundingClientRect\"])('#demo1', node._internal).then(function (ret) {\n console.log(ret[0]);\n setDemoInfo(function (state) {\n return _extends({}, state, ret[0]);\n });\n });\n }\n }, \"\\u70B9\\u51FB\\u83B7\\u53D6demo1\\u7684boundingClientRect\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.preview\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.preview\n }, \"scrollTop: \", demoInfo.scrollTop), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.preview\n }, \"scrollLeft: \", demoInfo.scrollLeft), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.preview\n }, \"width: \", demoInfo.width), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.preview\n }, \"height: \", demoInfo.height), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.preview\n }, \"left: \", demoInfo.left), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.preview\n }, \"right: \", demoInfo.right), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.preview\n }, \"top: \", demoInfo.top), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.preview\n }, \"bottom: \", demoInfo.bottom)));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/file/index.tsx\":\n/*!**********************************!*\\\n !*** ./src/pages/file/index.tsx ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-image */ \"./node_modules/rax-image/es/index.js\");\n/* harmony import */ var _uni_file__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/file */ \"../dist/lib/@uni/file/es/index.js\");\n/* harmony import */ var _uni_alert__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uni/alert */ \"../dist/lib/@uni/alert/es/index.js\");\n/* harmony import */ var _uni_image__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @uni/image */ \"../dist/lib/@uni/image/es/index.js\");\n\n\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n\nvar Index = function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(''),\n img2 = _useState[0],\n setImg2 = _useState[1];\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n \"x-if\": img2,\n style: {\n flexDirection: 'row',\n justifyContent: 'center'\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_image__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n resizeMode: \"cover\",\n mode: \"aspectFill\",\n source: {\n uri: img2\n }\n })), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function uploadHandler() {\n Object(_uni_image__WEBPACK_IMPORTED_MODULE_5__[\"chooseImage\"])({\n success: function success(res) {\n var tempFilePaths = res.tempFilePaths,\n files = res.files;\n\n if (files || tempFilePaths) {\n var task = Object(_uni_file__WEBPACK_IMPORTED_MODULE_3__[\"upload\"])({\n url: \"https://httpbin.org/post\",\n filePath: files ? files[0] : tempFilePaths[0],\n fileName: 'file',\n fileType: 'image'\n });\n\n if (task && task.onProgressUpdate) {\n task.onProgressUpdate(function (_ref) {\n var progress = _ref.progress,\n totalBytesSent = _ref.totalBytesSent,\n totalBytesExpectedToSend = _ref.totalBytesExpectedToSend;\n console.log(\"Upload onProgressUpdate: \", progress, totalBytesSent, totalBytesExpectedToSend);\n });\n }\n\n if (task && task.onHeadersReceived) {\n task.onHeadersReceived(function (headers) {\n console.log(\"Upload onHeadersReceived: \", JSON.stringify(headers));\n });\n }\n }\n }\n });\n }\n }, \"\\u70B9\\u51FB\\u4E0A\\u4F20\\u56FE\\u7247\\uFF08upload\\uFF09\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function downloadHandler() {\n Object(_uni_file__WEBPACK_IMPORTED_MODULE_3__[\"download\"])({\n url: 'https://gw.alicdn.com/tfs/TB18EuDjGNj0u4jSZFyXXXgMVXa-225-225.jpg',\n success: function success(res) {\n var filePath = res.tempFilePath;\n setImg2(filePath);\n Object(_uni_alert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '提示',\n content: \"\\u4E0B\\u8F7D\\u6210\\u529F\" + res.tempFilePath\n });\n }\n });\n }\n }, \"\\u70B9\\u51FB\\u4E0B\\u8F7D\\u56FE\\u7247\\uFF08download\\uFF09\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function getFileInfoHandler() {\n if (!img2) {\n Object(_uni_alert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '提示',\n content: '请先下载图片'\n });\n }\n\n Object(_uni_file__WEBPACK_IMPORTED_MODULE_3__[\"getInfo\"])({\n filePath: img2,\n success: function success(res) {\n Object(_uni_alert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '提示',\n content: \"\\u4E0B\\u8F7D\\u6587\\u4EF6\\u7684\\u4FE1\\u606F\\u4E3A\" + JSON.stringify(res)\n });\n }\n });\n }\n }, \"\\u70B9\\u51FB\\u83B7\\u53D6\\u4E0B\\u8F7D\\u56FE\\u7247\\u7684\\u4FE1\\u606F\\uFF08getFileInfo\\uFF09\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function saveHandler() {\n Object(_uni_image__WEBPACK_IMPORTED_MODULE_5__[\"chooseImage\"])({\n success: function success(res) {\n var tempFilePaths = res.tempFilePaths;\n\n if (tempFilePaths[0]) {\n Object(_uni_file__WEBPACK_IMPORTED_MODULE_3__[\"save\"])({\n tempFilePath: tempFilePaths[0],\n success: function success(res) {\n Object(_uni_alert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '提示',\n content: \"\\u6587\\u4EF6\\u4FDD\\u5B58\\u6210\\u529F\\uFF1A\" + res.savedFilePath\n });\n },\n fail: function fail(e) {\n Object(_uni_alert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '提示',\n content: \"\\u6587\\u4EF6\\u4FDD\\u5B58\\u5931\\u8D25\\uFF1A\" + JSON.stringify(e)\n });\n }\n });\n }\n },\n fail: function fail(e) {\n Object(_uni_alert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '提示',\n content: \"\\u6587\\u4EF6\\u4FDD\\u5B58\\u5931\\u8D25\\uFF1A\" + JSON.stringify(e)\n });\n }\n }).then(function (e) {\n return console.log(e);\n }).catch(function (e) {\n return console.log(e);\n });\n }\n }, \"\\u70B9\\u51FB\\u4FDD\\u5B58\\u4E34\\u65F6\\u6587\\u4EF6\\uFF08save\\uFF09\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function openDocumentHandler() {\n Object(_uni_file__WEBPACK_IMPORTED_MODULE_3__[\"download\"])({\n url: 'https://github.com/DOBEEE/assets/raw/master/%E8%BF%99%E6%98%AF%E4%B8%80%E4%B8%AA%E7%A4%BA%E4%BE%8B%E6%96%87%E4%BB%B6.pdf',\n success: function success(res) {\n var filePath = res.tempFilePath;\n Object(_uni_file__WEBPACK_IMPORTED_MODULE_3__[\"openDocument\"])({\n filePath: filePath,\n success: function success() {\n console.log('打开文档成功');\n }\n });\n }\n });\n }\n }, \"\\u70B9\\u51FB\\u6253\\u5F00pdf\\u6587\\u4EF6\\uFF08openDocument\\uFF09\"));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/image/index.tsx\":\n/*!***********************************!*\\\n !*** ./src/pages/image/index.tsx ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_textinput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-textinput */ \"./node_modules/rax-textinput/es/index.js\");\n/* harmony import */ var _uni_image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/image */ \"../dist/lib/@uni/image/es/index.js\");\n/* harmony import */ var _uni_confirm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uni/confirm */ \"../dist/lib/@uni/confirm/es/index.js\");\n/* harmony import */ var _uni_action_sheet__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @uni/action-sheet */ \"../dist/lib/@uni/action-sheet/es/index.js\");\n/* harmony import */ var rax_image__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! rax-image */ \"./node_modules/rax-image/es/index.js\");\n\n\n\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(null),\n count = _useState[0],\n setCount = _useState[1];\n\n var _useState2 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(null),\n quality = _useState2[0],\n setQuality = _useState2[1];\n\n var _useState3 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])([]),\n tempFilePaths = _useState3[0],\n setTempFilePaths = _useState3[1];\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_textinput__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.input,\n value: count,\n placeholder: \"\\u8F93\\u5165\\u6700\\u5927\\u53EF\\u9009\\u56FE\\u7247\\u6570\",\n type: \"number\",\n onInput: function onInput(_ref) {\n var value = _ref.value;\n setCount(Math.min(9, Math.max(1, +value)));\n }\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_textinput__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.input,\n value: quality,\n placeholder: \"\\u8F93\\u5165\\u538B\\u7F29\\u8D28\\u91CF0~3\",\n type: \"number\",\n onInput: function onInput(_ref2) {\n var value = _ref2.value;\n setQuality(+value);\n }\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n _uni_image__WEBPACK_IMPORTED_MODULE_3__[\"default\"].chooseImage({\n count: count || 1,\n sourceType: ['album', 'camera']\n }).then(function (res) {\n console.log(res);\n setTempFilePaths(res.tempFilePaths);\n });\n }\n }, \"\\u9009\\u62E9\\u56FE\\u7247\"), !!tempFilePaths.length && Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"\\u70B9\\u51FB\\u56FE\\u7247\\u89E6\\u53D1\\u64CD\\u4F5C\"), tempFilePaths.map(function (uri, index) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n key: uri\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, uri), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_image__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n style: {\n width: '100%',\n height: '400rpx'\n },\n source: {\n uri: uri\n },\n onClick: function onClick() {\n Object(_uni_action_sheet__WEBPACK_IMPORTED_MODULE_5__[\"default\"])({\n itemList: ['压缩图片', '获取图片信息', '点击预览图片', '保存图片到相册']\n }).then(function (res) {\n if (res.tapIndex === 0) {\n _uni_image__WEBPACK_IMPORTED_MODULE_3__[\"default\"].compressImage({\n src: uri,\n quality: quality || 4\n }).then(function (res) {\n console.log(res);\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n content: '压缩地址' + res.tempFilePath\n });\n }).catch(function (err) {\n return console.log(err);\n });\n } else if (res.tapIndex === 1) {\n _uni_image__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getImageInfo({\n src: uri\n }).then(function (res) {\n console.log(res);\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n content: '图片信息,宽度:' + res.width + ';高度:' + res.height + ';本地路径:' + res.path\n });\n });\n } else if (res.tapIndex === 2) {\n _uni_image__WEBPACK_IMPORTED_MODULE_3__[\"default\"].previewImage({\n urls: tempFilePaths,\n current: index\n });\n } else if (res.tapIndex === 3) {\n _uni_image__WEBPACK_IMPORTED_MODULE_3__[\"default\"].saveImage({\n url: uri\n });\n }\n });\n }\n }));\n }));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/intersection-observer/index.tsx\":\n/*!***************************************************!*\\\n !*** ./src/pages/intersection-observer/index.tsx ***!\n \\***************************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_scrollview__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-scrollview */ \"./node_modules/rax-scrollview/es/index.js\");\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n/* harmony import */ var _uni_intersection_observer__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uni/intersection-observer */ \"../dist/lib/@uni/intersection-observer/es/index.js\");\n\n\n\n\n\nvar styles = {\n block: {\n width: '100%',\n height: '400rpx',\n border: '1px solid #eee'\n },\n inner: {\n height: '1000rpx',\n position: 'relative',\n alignItems: 'center'\n },\n fill: {\n height: '450rpx'\n },\n circle: {\n background: 'red',\n borderRadius: '50%',\n width: '100rpx',\n height: '100rpx',\n marginTop: '100rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n appear = _useState[0],\n setAppear = _useState[1];\n\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n setTimeout(function () {\n var node = document.querySelector('.parent');\n var intersectionObserver;\n\n if (_uni_env__WEBPACK_IMPORTED_MODULE_3__[\"isWeChatMiniProgram\"]) {\n intersectionObserver = Object(_uni_intersection_observer__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(null, node._internal);\n } else {\n intersectionObserver = Object(_uni_intersection_observer__WEBPACK_IMPORTED_MODULE_4__[\"default\"])();\n }\n\n var clsPre = _uni_env__WEBPACK_IMPORTED_MODULE_3__[\"isWeChatMiniProgram\"] ? '.parent >>> ' : '';\n intersectionObserver.relativeTo(clsPre + '.block').observe(clsPre + '.circle', function (res) {\n console.log(res);\n setAppear(res.intersectionRatio > 0);\n });\n }, 0);\n }, []);\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n className: \"parent\"\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_scrollview__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.block,\n className: \"block\"\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.inner\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"\\u5411\\u4E0A\\u6ED1\\u52A8\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.fill\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, appear ? '小球出现' : '小球消失'), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.circle,\n className: \"circle\"\n }))));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/loading/index.tsx\":\n/*!*************************************!*\\\n !*** ./src/pages/loading/index.tsx ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-text */ \"./node_modules/rax-text/es/index.js\");\n/* harmony import */ var _uni_loading__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/loading */ \"../dist/lib/@uni/loading/es/index.js\");\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n }\n};\n\nvar Index = function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function handleClick() {\n _uni_loading__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showLoading({\n content: 'Loading, please wait'\n });\n setTimeout(function () {\n return _uni_loading__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hideLoading();\n }, 3000);\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"\\u70B9\\u51FB\\u5F39\\u51FAloading\")));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/location/index.tsx\":\n/*!**************************************!*\\\n !*** ./src/pages/location/index.tsx ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_location__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/location */ \"../dist/lib/@uni/location/es/index.js\");\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({}),\n location = _useState[0],\n setLocation = _useState[1];\n\n var _useState2 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(''),\n chooseRes = _useState2[0],\n setChooseRes = _useState2[1];\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_location__WEBPACK_IMPORTED_MODULE_2__[\"getLocation\"])({\n _ext: {\n aliMiniApp: {\n type: 1\n },\n wechatMiniProgram: {\n altitude: true\n }\n }\n }).then(function (res) {\n setLocation(res);\n });\n }\n }, \"\\u83B7\\u53D6\\u5F53\\u524D\\u5B9A\\u4F4D\"), Object.keys(location).map(function (key) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n key: key,\n style: styles.flex\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, key, \": \"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, location[key]));\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_location__WEBPACK_IMPORTED_MODULE_2__[\"openLocation\"])({\n longitude: '120.126293',\n latitude: '30.274653',\n name: '黄龙万科中心',\n address: '学院路77号'\n });\n }\n }, \"\\u6253\\u5F00\\u5185\\u7F6E\\u5730\\u56FE\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_location__WEBPACK_IMPORTED_MODULE_2__[\"chooseLocation\"])({\n longitude: 120.126293,\n latitude: 30.274653\n }).then(function (res) {\n console.log(res);\n setChooseRes(JSON.stringify(res));\n });\n }\n }, \"\\u9009\\u62E9\\u4F4D\\u7F6E\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"\\u9009\\u62E9\\u4F4D\\u7F6E\\u6570\\u636E\\uFF1A\", chooseRes));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/make-phone-call/index.tsx\":\n/*!*********************************************!*\\\n !*** ./src/pages/make-phone-call/index.tsx ***!\n \\*********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_textinput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rax-textinput */ \"./node_modules/rax-textinput/es/index.js\");\n/* harmony import */ var _uni_make_phone_call__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uni/make-phone-call */ \"../dist/lib/@uni/make-phone-call/es/index.js\");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n marginLeft: '10rpx',\n padding: '10rpx 20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n }\n};\n\nvar Index = function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])('10086'),\n phone = _useState[0],\n setPhone = _useState[1];\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: _extends({}, styles.flex, {\n marginTop: 30\n })\n }, Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_textinput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n style: {\n border: '1px solid #eee',\n flex: '1 1 0'\n },\n value: phone,\n placeholder: \"\\u8F93\\u5165\\u624B\\u673A\\u53F7\\u7801\",\n onInput: function onInput(e) {\n return setPhone(e.target.value);\n }\n }), Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.button,\n onClick: function () {\n var _onClick = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function (_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Object(_uni_make_phone_call__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n phoneNumber: phone\n });\n\n case 2:\n console.log('拨号完成');\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function onClick() {\n return _onClick.apply(this, arguments);\n };\n }()\n }, \"\\u70B9\\u51FB\\u62E8\\u53F7\"));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/navigate/index.tsx\":\n/*!**************************************!*\\\n !*** ./src/pages/navigate/index.tsx ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_navigate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/navigate */ \"../dist/lib/@uni/navigate/es/index.js\");\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n _uni_navigate__WEBPACK_IMPORTED_MODULE_2__[\"default\"].push({\n url: '/pages/toast/index',\n isHash: true,\n refresh: true\n });\n }\n }, \"push\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n _uni_navigate__WEBPACK_IMPORTED_MODULE_2__[\"default\"].replace({\n url: '/pages/toast/index',\n isHash: true,\n refresh: true\n });\n }\n }, \"replace\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n _uni_navigate__WEBPACK_IMPORTED_MODULE_2__[\"default\"].reLaunch({\n url: '/pages/toast/index',\n isHash: true,\n refresh: true\n });\n }\n }, \"reLaunch\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n _uni_navigate__WEBPACK_IMPORTED_MODULE_2__[\"default\"].back();\n }\n }, \"back\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n _uni_navigate__WEBPACK_IMPORTED_MODULE_2__[\"default\"].go({\n step: -1\n });\n }\n }, \"go(-1)\"));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/navigation-bar/index.tsx\":\n/*!********************************************!*\\\n !*** ./src/pages/navigation-bar/index.tsx ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-text */ \"./node_modules/rax-text/es/index.js\");\n/* harmony import */ var rax_textinput__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rax-textinput */ \"./node_modules/rax-textinput/es/index.js\");\n/* harmony import */ var _uni_navigation_bar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uni/navigation-bar */ \"../dist/lib/@uni/navigation-bar/es/index.js\");\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n text: {\n marginTop: '100rpx',\n padding: '20rpx',\n fontSize: '26rpx',\n textAlign: 'center',\n color: 'green'\n },\n container: {\n marginTop: '100rpx'\n },\n input: {\n margin: '20rpx',\n borderBottom: 'solid #32a1ce',\n color: '#32a1ce'\n }\n};\n\nvar Index = function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({\n title: '标题',\n backgroundColor: '导航栏背景色'\n }),\n opts = _useState[0],\n setOpts = _useState[1];\n\n var _useState2 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({}),\n menuButtonBoundingClientRect = _useState2[0],\n setMenuButtonBoundingClientRect = _useState2[1];\n\n var handleSubmit = function () {\n console.log('title, color: ', opts);\n _uni_navigation_bar__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavigationBarTitle({\n title: opts.title\n });\n !_uni_env__WEBPACK_IMPORTED_MODULE_5__[\"isWeb\"] && _uni_navigation_bar__WEBPACK_IMPORTED_MODULE_4__[\"default\"].setNavigationBarColor({\n backgroundColor: opts.backgroundColor\n });\n };\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.container\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n onSubmit: handleSubmit\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_textinput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n style: styles.input,\n value: opts.title,\n type: \"text\",\n placeholder: \"\\u6807\\u9898\",\n name: \"title\",\n onInput: function onInput(_ref) {\n var value = _ref.value;\n setOpts(_extends({}, opts, {\n title: value\n }));\n }\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_textinput__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n style: styles.input,\n value: opts.backgroundColor,\n type: \"text\",\n placeholder: \"\\u5BFC\\u822A\\u680F\\u80CC\\u666F\\u8272\",\n name: \"backgroundColor\",\n onInput: function onInput(_ref2) {\n var value = _ref2.value;\n setOpts(_extends({}, opts, {\n backgroundColor: value\n }));\n }\n })), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: {\n marginTop: '20rpx'\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: handleSubmit\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"Submit\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function handleReset() {\n return setOpts({\n title: '标题',\n backgroundColor: '导航栏背景色'\n });\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"Reset\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function handleGetMenuButtonBoundingClientRect() {\n var menuButtonBoundingClientRect = _uni_navigation_bar__WEBPACK_IMPORTED_MODULE_4__[\"default\"].getMenuButtonBoundingClientRect();\n setMenuButtonBoundingClientRect(menuButtonBoundingClientRect);\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"\\u83B7\\u53D6\\u80F6\\u56CA\\u6309\\u94AE\\u4FE1\\u606F\"))), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: {\n margin: '20rpx'\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, Object.entries(menuButtonBoundingClientRect).map(function (array) {\n return \"\\n\" + (array == null ? void 0 : array[0]) + \": \" + (array == null ? void 0 : array[1]);\n })))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/page-scroll-to/index.tsx\":\n/*!********************************************!*\\\n !*** ./src/pages/page-scroll-to/index.tsx ***!\n \\********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @babel/runtime/regenerator */ \"./node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_text__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rax-text */ \"./node_modules/rax-text/es/index.js\");\n/* harmony import */ var _uni_page_scroll_to__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uni/page-scroll-to */ \"../dist/lib/@uni/page-scroll-to/es/index.js\");\n\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n }\n};\n\nvar Index = function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: {\n position: 'relative'\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: {\n position: 'relative'\n }\n }, [300, 600, 900, 1200, 1500, 1800, 2100].map(function (item) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n key: item,\n style: {\n position: 'absolute',\n top: item + \"px\",\n fontSize: '13px',\n color: '#999'\n }\n }, item);\n })), Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: _extends({}, styles.button, {\n position: 'absolute',\n top: '20px'\n }),\n onClick: function () {\n var _onClick = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function (_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.next = 2;\n return Object(_uni_page_scroll_to__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n scrollTop: 900\n });\n\n case 2:\n console.log('滚动完成');\n\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n return function onClick() {\n return _onClick.apply(this, arguments);\n };\n }()\n }, Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, \"\\u6EDA\\u52A8\\u5230\\u9876\\u90E8 900px \\u4F4D\\u7F6E\")), Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: _extends({}, styles.button, {\n position: 'absolute',\n top: '80px'\n }),\n onClick: function () {\n var _onClick2 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function (_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.next = 2;\n return Object(_uni_page_scroll_to__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n selector: '.box'\n });\n\n case 2:\n console.log('滚动完成');\n\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n return function onClick() {\n return _onClick2.apply(this, arguments);\n };\n }()\n }, Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, \"\\u6EDA\\u52A8\\u5230 .box \\u5143\\u7D20\\u4F4D\\u7F6E (\\u9700\\u5E73\\u53F0\\u652F\\u6301)\")), Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: _extends({}, styles.button, {\n position: 'absolute',\n top: '940px'\n }),\n onClick: function () {\n var _onClick3 = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3() {\n return _babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function (_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.next = 2;\n return Object(_uni_page_scroll_to__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n scrollTop: 300\n });\n\n case 2:\n console.log('滚动完成');\n\n case 3:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n return function onClick() {\n return _onClick3.apply(this, arguments);\n };\n }()\n }, Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, \"\\u6EDA\\u52A8\\u5230\\u9876\\u90E8 300px \\u4F4D\\u7F6E\")), Object(rax__WEBPACK_IMPORTED_MODULE_1__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n className: \"box\",\n style: {\n position: 'absolute',\n top: '1240px',\n background: '#fff1ff',\n color: '#c021c1',\n padding: '10px 20px'\n }\n }, \".box\"));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/pull-down-refresh/index.tsx\":\n/*!***********************************************!*\\\n !*** ./src/pages/pull-down-refresh/index.tsx ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var $$framework_runApp__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! $$framework/runApp */ \"./.rax/runApp.ts\");\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_text__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rax-text */ \"./node_modules/rax-text/es/index.js\");\n/* harmony import */ var _uni_pull_down_refresh__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uni/pull-down-refresh */ \"../dist/lib/@uni/pull-down-refresh/es/index.js\");\n/* harmony import */ var _uni_env__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @uni/env */ \"../dist/lib/@uni/env/es/index.js\");\n\n\n\n\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n text: {\n marginTop: '100rpx',\n padding: '20rpx',\n fontSize: '26rpx',\n textAlign: 'center',\n color: 'green'\n },\n container: {\n marginTop: '100rpx'\n }\n};\n\nvar Index = function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n pullRefresh = _useState[0],\n setPullRefresh = _useState[1];\n\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n if (_uni_env__WEBPACK_IMPORTED_MODULE_5__[\"isWeb\"]) {\n _uni_pull_down_refresh__WEBPACK_IMPORTED_MODULE_4__[\"default\"].onPullDownRefresh({\n pullRefresh: true,\n triggerDistance: 100,\n eventCallback: function eventCallback() {\n console.log(\"pulldownrefresh触发了\");\n setPullRefresh(!pullRefresh);\n }\n });\n }\n }, []);\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n var handlePullDownRefresh = function () {\n return console.log('onPullDownRefresh');\n };\n\n Object($$framework_runApp__WEBPACK_IMPORTED_MODULE_1__[\"addNativeEventListener\"])('onPullDownRefresh', handlePullDownRefresh);\n return function () {\n Object($$framework_runApp__WEBPACK_IMPORTED_MODULE_1__[\"removeNativeEventListener\"])('onPullDownRefresh', handlePullDownRefresh);\n };\n }, [pullRefresh]);\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.container\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.button,\n onClick: function handleClickStart() {\n _uni_pull_down_refresh__WEBPACK_IMPORTED_MODULE_4__[\"default\"].startPullDownRefresh();\n !pullRefresh && setPullRefresh(true);\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, \"\\u5F00\\u59CB\\u5237\\u65B0\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.button,\n onClick: function handleClickStop() {\n _uni_pull_down_refresh__WEBPACK_IMPORTED_MODULE_4__[\"default\"].stopPullDownRefresh();\n pullRefresh && setPullRefresh(false);\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, \"\\u505C\\u6B62\\u5237\\u65B0\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.text\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, pullRefresh ? \"刷新了\" : \"\")));\n};\n\nObject($$framework_runApp__WEBPACK_IMPORTED_MODULE_1__[\"registerNativeEventListeners\"])(Index, ['onPullDownRefresh']);\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/recorder/index.tsx\":\n/*!**************************************!*\\\n !*** ./src/pages/recorder/index.tsx ***!\n \\**************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_recorder__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/recorder */ \"../dist/lib/@uni/recorder/es/index.js\");\n/* harmony import */ var _uni_toast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/toast */ \"../dist/lib/@uni/toast/es/index.js\");\n/* harmony import */ var _uni_alert__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uni/alert */ \"../dist/lib/@uni/alert/es/index.js\");\n\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var recorderManager = null;\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n recorderManager = Object(_uni_recorder__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n recorderManager.onStart(function () {\n _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showToast('监听到开始录音');\n });\n recorderManager.onPause(function () {\n _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showToast('监听到暂停录音');\n });\n recorderManager.onResume(function () {\n _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showToast('监听到继续录音');\n });\n recorderManager.onStop(function (res) {\n Object(_uni_alert__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n content: \"\\u97F3\\u9891\\u5F55\\u5236\\u7ED3\\u679C\\uFF1A\" + JSON.stringify(res),\n title: '停止录音',\n buttonText: '确定'\n });\n });\n }, []);\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n recorderManager.start();\n }\n }, \"\\u5F00\\u59CB\\u5F55\\u97F3\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n recorderManager.pause();\n }\n }, \"\\u6682\\u505C\\u5F55\\u97F3\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n recorderManager.resume();\n }\n }, \"\\u7EE7\\u7EED\\u5F55\\u97F3\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n recorderManager.stop();\n }\n }, \"\\u505C\\u6B62\\u5F55\\u97F3\"));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/request/index.tsx\":\n/*!*************************************!*\\\n !*** ./src/pages/request/index.tsx ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_request__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/request */ \"../dist/lib/@uni/request/es/index.js\");\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n bg: {\n background: '#333',\n color: '#fff',\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var _data$data, _data$data2;\n\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(false),\n loading = _useState[0],\n setLoading = _useState[1];\n\n var _useState2 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(''),\n data = _useState2[0],\n setData = _useState2[1];\n\n var _useState3 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(''),\n error = _useState3[0],\n setError = _useState3[1];\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function clickHandler() {\n setLoading(true);\n Object(_uni_request__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n url: 'https://httpbin.org/post',\n method: 'POST',\n headers: {},\n data: {\n test: '1'\n },\n timeout: 5000,\n success: function success(data) {\n setLoading(false);\n console.log('data', data);\n setData({\n data: data,\n url: 'https://httpbin.org/post'\n });\n },\n fail: function fail(error) {\n setLoading(false);\n setError(error);\n }\n });\n }\n }, \"\\u53D1\\u9001\\u8BF7\\u6C42\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function clickHandler1() {\n setLoading(true);\n Object(_uni_request__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n url: 'http://suggest.taobao.com/sug',\n method: 'JSONP',\n headers: {},\n data: {\n code: 'utf-8',\n q: '卫衣'\n },\n jsonpCallback: 'cb',\n jsonpCallbackProp: 'callback',\n timeout: 5000,\n success: function success(data) {\n setLoading(false);\n console.log('data', data);\n setData(_extends({}, data, {\n url: 'http://suggest.taobao.com/sug'\n }));\n },\n fail: function fail(error) {\n setLoading(false);\n setError(error);\n }\n });\n }\n }, \"\\u53D1\\u9001JSONP\\u8BF7\\u6C42\"), loading ? Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.bg\n }, \"loading\") : null, data ? Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.bg\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"p\", null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"text\", null, \"url: \" + JSON.stringify(data.url))), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"p\", null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"text\", null, \"data: \" + JSON.stringify(data.data))), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"p\", null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"text\", null, \"headers: \" + JSON.stringify((_data$data = data.data) == null ? void 0 : _data$data.headers))), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"p\", null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(\"text\", null, \"status: \" + JSON.stringify((_data$data2 = data.data) == null ? void 0 : _data$data2.status)))) : null, error ? Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.bg\n }, JSON.stringify(error)) : null);\n});\n\n/***/ }),\n\n/***/ \"./src/pages/scan/index.tsx\":\n/*!**********************************!*\\\n !*** ./src/pages/scan/index.tsx ***!\n \\**********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_alert__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/alert */ \"../dist/lib/@uni/alert/es/index.js\");\n/* harmony import */ var _uni_scan__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/scan */ \"../dist/lib/@uni/scan/es/index.js\");\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_scan__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n scanType: ['qrCode', 'barCode']\n }).then(function (res) {\n Object(_uni_alert__WEBPACK_IMPORTED_MODULE_2__[\"default\"])({\n title: \"\" + res.result\n });\n });\n }\n }, \"\\u626B\\u7801\");\n});\n\n/***/ }),\n\n/***/ \"./src/pages/share/index.tsx\":\n/*!***********************************!*\\\n !*** ./src/pages/share/index.tsx ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_share__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/share */ \"../dist/lib/@uni/share/es/index.js\");\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n bg: {\n background: '#333',\n color: '#fff',\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function clickHandler() {\n Object(_uni_share__WEBPACK_IMPORTED_MODULE_2__[\"showShareMenu\"])();\n }\n }, \"\\u6253\\u5F00\\u5206\\u4EAB\\u9762\\u677F\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function clickHandler1() {\n Object(_uni_share__WEBPACK_IMPORTED_MODULE_2__[\"hideShareMenu\"])();\n }\n }, \"\\u5173\\u95ED\\u5206\\u4EAB\\u9762\\u677F\"));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/storage/index.tsx\":\n/*!*************************************!*\\\n !*** ./src/pages/storage/index.tsx ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_textinput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-textinput */ \"./node_modules/rax-textinput/es/index.js\");\n/* harmony import */ var _uni_storage__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/storage */ \"../dist/lib/@uni/storage/es/index.js\");\n/* harmony import */ var _uni_confirm__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @uni/confirm */ \"../dist/lib/@uni/confirm/es/index.js\");\n\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(''),\n key = _useState[0],\n setKey = _useState[1];\n\n var _useState2 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(''),\n data = _useState2[0],\n setData = _useState2[1];\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.flex\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"key: \"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_textinput__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.input,\n value: key,\n placeholder: \"\\u8F93\\u5165\\u5B58\\u50A8\\u952E\",\n onInput: function onInput(_ref) {\n var value = _ref.value;\n setKey(value);\n }\n })), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.flex\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"data: \"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_textinput__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.input,\n value: data,\n placeholder: \"\\u8F93\\u5165\\u5B58\\u50A8\\u503C\",\n onInput: function onInput(_ref2) {\n var value = _ref2.value;\n setData(value);\n }\n })), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"\\u5F02\\u6B65\\u5B58\\u50A8\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.flex\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n _uni_storage__WEBPACK_IMPORTED_MODULE_3__[\"default\"].setStorage({\n key: key,\n data: data\n }).then(function () {\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '存储成功',\n showCancel: false,\n content: key + ':' + data\n });\n });\n }\n }, \"setStorage\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n _uni_storage__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getStorage({\n key: key\n }).then(function (res) {\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '获取缓存',\n showCancel: false,\n content: key + ':' + res.data\n });\n });\n }\n }, \"getStorage\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n _uni_storage__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeStorage({\n key: key\n }).then(function () {\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '删除缓存',\n showCancel: false,\n content: key\n });\n });\n }\n }, \"removeStorage\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"\\u540C\\u6B65\\u5B58\\u50A8\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.flex\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n _uni_storage__WEBPACK_IMPORTED_MODULE_3__[\"default\"].setStorageSync({\n key: key,\n data: data\n });\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '存储成功',\n showCancel: false,\n content: key + ':' + data\n });\n }\n }, \"setStorageSync\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n var res = _uni_storage__WEBPACK_IMPORTED_MODULE_3__[\"default\"].getStorageSync({\n key: key\n });\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '获取缓存',\n showCancel: false,\n content: key + ':' + res.data\n });\n }\n }, \"getStorageSync\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n _uni_storage__WEBPACK_IMPORTED_MODULE_3__[\"default\"].removeStorageSync({\n key: key\n });\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_4__[\"default\"])({\n title: '删除缓存',\n showCancel: false,\n content: key\n });\n }\n }, \"removeStorageSync\")));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/subscribe-message/index.tsx\":\n/*!***********************************************!*\\\n !*** ./src/pages/subscribe-message/index.tsx ***!\n \\***********************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n bg: {\n background: '#333',\n color: '#fff',\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function clickHandler() {\n subscribeMessage({\n tmplIds: ['']\n }).then(function () {\n console.log('success');\n });\n }\n }, \"\\u70B9\\u5F00\\u8BA2\\u9605\\u9762\\u677F\"));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/system-info/index.tsx\":\n/*!*****************************************!*\\\n !*** ./src/pages/system-info/index.tsx ***!\n \\*****************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_system_info__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/system-info */ \"../dist/lib/@uni/system-info/es/index.js\");\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])({}),\n systemInfo = _useState[0],\n setSystemInfo = _useState[1];\n\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n var res = Object(_uni_system_info__WEBPACK_IMPORTED_MODULE_2__[\"getInfoSync\"])();\n setSystemInfo(res);\n }\n }, \"\\u83B7\\u53D6\\u7CFB\\u7EDF\\u4FE1\\u606F\"), Object.keys(systemInfo).map(function (key, i) {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n key: i,\n style: styles.flex\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, key, \": \"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, systemInfo[key]));\n }));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/tab-bar/index.tsx\":\n/*!*************************************!*\\\n !*** ./src/pages/tab-bar/index.tsx ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-text */ \"./node_modules/rax-text/es/index.js\");\n/* harmony import */ var _uni_tab_bar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/tab-bar */ \"../dist/lib/@uni/tab-bar/es/index.js\");\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n text: {\n marginTop: '100rpx',\n padding: '20rpx',\n fontSize: '26rpx',\n textAlign: 'center',\n color: 'green'\n },\n container: {\n marginTop: '100rpx'\n },\n input: {\n margin: '20rpx',\n borderBottom: 'solid #32a1ce',\n color: '#32a1ce'\n }\n};\n\nvar Index = function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.container\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: {\n marginTop: '20rpx'\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function handleShow() {\n _uni_tab_bar__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showTabBar();\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"Show\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function handleHide() {\n _uni_tab_bar__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hideTabBar();\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"Hide\")))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/toast/index.tsx\":\n/*!***********************************!*\\\n !*** ./src/pages/toast/index.tsx ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_text__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-text */ \"./node_modules/rax-text/es/index.js\");\n/* harmony import */ var _uni_toast__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/toast */ \"../dist/lib/@uni/toast/es/index.js\");\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n\nvar Index = function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showToast('默认提示');\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"\\u70B9\\u51FB\\u5F39\\u51FA\\u666E\\u901A\\u5F39\\u7A97\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showToast({\n type: 'success',\n content: 'success提示'\n });\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"\\u70B9\\u51FB\\u5F39\\u51FAsuccess\\u5F39\\u7A97\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showToast({\n type: 'fail',\n content: 'fail提示'\n });\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"\\u70B9\\u51FB\\u5F39\\u51FAfail\\u5F39\\u7A97\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].showToast({\n type: 'none',\n content: '5s提示',\n duration: 5000\n });\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"\\u70B9\\u51FB\\u5F39\\u51FA5s\\u5F39\\u7A97\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n return _uni_toast__WEBPACK_IMPORTED_MODULE_3__[\"default\"].hideToast();\n }\n }, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_text__WEBPACK_IMPORTED_MODULE_2__[\"default\"], null, \"\\u70B9\\u51FB\\u5173\\u95ED\\u5F39\\u7A97\")));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Index);\n\n/***/ }),\n\n/***/ \"./src/pages/vibrate/index.tsx\":\n/*!*************************************!*\\\n !*** ./src/pages/vibrate/index.tsx ***!\n \\*************************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var _uni_vibrate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @uni/vibrate */ \"../dist/lib/@uni/vibrate/es/index.js\");\n/* harmony import */ var _uni_confirm__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/confirm */ \"../dist/lib/@uni/confirm/es/index.js\");\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_vibrate__WEBPACK_IMPORTED_MODULE_2__[\"vibrateLong\"])().then(function () {\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n content: '调用成功'\n });\n });\n }\n }, \"\\u957F\\u7684\\u9707\\u52A8\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_vibrate__WEBPACK_IMPORTED_MODULE_2__[\"vibrateShort\"])().then(function () {\n Object(_uni_confirm__WEBPACK_IMPORTED_MODULE_3__[\"default\"])({\n content: '调用成功'\n });\n });\n }\n }, \"\\u77ED\\u7684\\u9707\\u52A8\"));\n});\n\n/***/ }),\n\n/***/ \"./src/pages/video/index.tsx\":\n/*!***********************************!*\\\n !*** ./src/pages/video/index.tsx ***!\n \\***********************************/\n/*! exports provided: default */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! rax */ \"./node_modules/rax/index.js\");\n/* harmony import */ var rax__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(rax__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var rax_view__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! rax-view */ \"./node_modules/rax-view/es/index.js\");\n/* harmony import */ var rax_textinput__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! rax-textinput */ \"./node_modules/rax-textinput/es/index.js\");\n/* harmony import */ var _uni_video__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @uni/video */ \"../dist/lib/@uni/video/es/index.js\");\n/* harmony import */ var rax_video__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rax-video */ \"./node_modules/rax-video/es/index.js\");\n\n\n\n\n\nvar styles = {\n flex: {\n flexDirection: 'row'\n },\n button: {\n margin: '10rpx',\n padding: '20rpx',\n background: '#17BD88',\n color: '#fff',\n fontSize: '26rpx',\n textAlign: 'center'\n },\n input: {\n border: '1px solid #eee',\n margin: '10rpx'\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (function () {\n var _useState = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(60),\n maxDuration = _useState[0],\n setMaxDuration = _useState[1];\n\n var _useState2 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(null),\n videoInfo = _useState2[0],\n setVideoInfo = _useState2[1];\n\n var _useState3 = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useState\"])(null),\n medias = _useState3[0],\n setMedias = _useState3[1];\n\n var videoContext = Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useRef\"])(null);\n Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"useEffect\"])(function () {\n if (!videoContext.current) {\n videoContext.current = Object(_uni_video__WEBPACK_IMPORTED_MODULE_3__[\"createVideoContext\"])('demoVideo');\n }\n }, []);\n return Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_textinput__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n style: styles.input,\n value: maxDuration,\n placeholder: \"\\u8F93\\u5165\\u89C6\\u9891\\u6700\\u5927\\u65F6\\u957F\",\n type: \"number\",\n onInput: function onInput(_ref) {\n var value = _ref.value;\n setMaxDuration(+value);\n }\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_video__WEBPACK_IMPORTED_MODULE_3__[\"chooseVideo\"])({\n maxDuration: maxDuration\n }).then(function (res) {\n setVideoInfo(res);\n }).catch(function (e) {\n console.log(e);\n });\n }\n }, \"\\u9009\\u62E9\\u89C6\\u9891\"), videoInfo && Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax__WEBPACK_IMPORTED_MODULE_0__[\"Fragment\"], null, Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"\\u89C6\\u9891\\u4FE1\\u606F\\uFF1A\", JSON.stringify(videoInfo)), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_video__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n id: \"demoVideo\",\n src: videoInfo.tempFilePath,\n style: {\n width: videoInfo.width || 300,\n height: videoInfo.height || 300\n }\n }), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n videoContext.current.play();\n }\n }, \"\\u64AD\\u653E\\u89C6\\u9891\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n videoContext.current.pause();\n }\n }, \"\\u6682\\u505C\\u89C6\\u9891\"), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n videoContext.current.stop();\n }\n }, \"\\u505C\\u6B62\\u89C6\\u9891\")), Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n style: styles.button,\n onClick: function onClick() {\n Object(_uni_video__WEBPACK_IMPORTED_MODULE_3__[\"chooseMedia\"])().then(function (res) {\n setMedias(res);\n }).catch(function (e) {\n console.log(e);\n });\n }\n }, \"\\u9009\\u62E9\\u6587\\u4EF6\"), medias && Object(rax__WEBPACK_IMPORTED_MODULE_0__[\"createElement\"])(rax_view__WEBPACK_IMPORTED_MODULE_1__[\"default\"], null, \"\\u6587\\u4EF6\\u4FE1\\u606F\\uFF1A\", JSON.stringify(medias)));\n});\n\n/***/ }),\n\n/***/ 0:\n/*!**************************!*\\\n !*** multi ./src/app.js ***!\n \\**************************/\n/*! no static exports found */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(/*! /Users/yitan/Documents/workspace/code/universal-api/demos/src/app.js */\"./src/app.js\");\n\n\n/***/ })\n\n/******/ });}\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWNjZWxlcm9tZXRlci9lcy9fdXRpbHMvbWluaWFwcEVudkFwcC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hY2NlbGVyb21ldGVyL2VzL2FsaS1taW5pYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjY2VsZXJvbWV0ZXIvZXMvYWxpLW1pbmlhcHAvb2ZmQ2hhbmdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjY2VsZXJvbWV0ZXIvZXMvYWxpLW1pbmlhcHAvb25DaGFuZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWNjZWxlcm9tZXRlci9lcy9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWNjZWxlcm9tZXRlci9lcy9iYWlkdS1zbWFydHByb2dyYW0vb2ZmQ2hhbmdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjY2VsZXJvbWV0ZXIvZXMvYmFpZHUtc21hcnRwcm9ncmFtL29uQ2hhbmdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjY2VsZXJvbWV0ZXIvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjY2VsZXJvbWV0ZXIvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL29mZkNoYW5nZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hY2NlbGVyb21ldGVyL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9vbkNoYW5nZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hY2NlbGVyb21ldGVyL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjY2VsZXJvbWV0ZXIvZXMva3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWNjZWxlcm9tZXRlci9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9vZmZDaGFuZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWNjZWxlcm9tZXRlci9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9vbkNoYW5nZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hY2NlbGVyb21ldGVyL2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hY2NlbGVyb21ldGVyL2VzL3dlYi9vZmZDaGFuZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWNjZWxlcm9tZXRlci9lcy93ZWIvb25DaGFuZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWNjZWxlcm9tZXRlci9lcy93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWNjZWxlcm9tZXRlci9lcy93ZWNoYXQtbWluaXByb2dyYW0vb2ZmQ2hhbmdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjY2VsZXJvbWV0ZXIvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL29uQ2hhbmdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjdGlvbi1zaGVldC9lcy9fdXRpbHMvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWN0aW9uLXNoZWV0L2VzL191dGlscy9taW5pYXBwRW52QXBwLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjdGlvbi1zaGVldC9lcy9fdXRpbHMvcHJvbWlzaWZ5LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjdGlvbi1zaGVldC9lcy9fdXRpbHMvc3R5bGVPcHRpb25zLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjdGlvbi1zaGVldC9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hY3Rpb24tc2hlZXQvZXMvYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjdGlvbi1zaGVldC9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWN0aW9uLXNoZWV0L2VzL2NvbW1vbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hY3Rpb24tc2hlZXQvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWN0aW9uLXNoZWV0L2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjdGlvbi1zaGVldC9lcy93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWN0aW9uLXNoZWV0L2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hY3Rpb24tc2hlZXQvbGliL191dGlscy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hY3Rpb24tc2hlZXQvbGliL191dGlscy9taW5pYXBwRW52QXBwLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FjdGlvbi1zaGVldC9saWIvX3V0aWxzL3Byb21pc2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hY3Rpb24tc2hlZXQvbGliL191dGlscy9zdHlsZU9wdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWN0aW9uLXNoZWV0L2xpYi9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hY3Rpb24tc2hlZXQvbGliL2NvbW1vbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hbGVydC9lcy9fdXRpbHMvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWxlcnQvZXMvX3V0aWxzL21pbmlhcHBFbnZBcHAuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWxlcnQvZXMvX3V0aWxzL3Byb21pc2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hbGVydC9lcy9fdXRpbHMvc3R5bGVPcHRpb25zLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FsZXJ0L2VzL2FsaS1taW5pYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FsZXJ0L2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hbGVydC9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYWxlcnQvZXMvY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FsZXJ0L2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FsZXJ0L2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FsZXJ0L2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hbGVydC9lcy93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYW5pbWF0aW9uL2VzL191dGlscy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hbmltYXRpb24vZXMvX3V0aWxzL3N0eWxlT3B0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hbmltYXRpb24vZXMvYWxpLW1pbmlhcHAvY3JlYXRlQW5pbWF0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FuaW1hdGlvbi9lcy9hbGktbWluaWFwcC9jcmVhdGVUcmFuc2l0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FuaW1hdGlvbi9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hbmltYXRpb24vZXMvYmFpZHUtc21hcnRwcm9ncmFtL2NyZWF0ZUFuaW1hdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hbmltYXRpb24vZXMvYmFpZHUtc21hcnRwcm9ncmFtL2NyZWF0ZVRyYW5zaXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYW5pbWF0aW9uL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hbmltYXRpb24vZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2NyZWF0ZUFuaW1hdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hbmltYXRpb24vZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2NyZWF0ZVRyYW5zaXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYW5pbWF0aW9uL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hbmltYXRpb24vZXMvY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FuaW1hdGlvbi9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hbmltYXRpb24vZXMvd2ViL0FuaW1hdGlvbkltcGwuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYW5pbWF0aW9uL2VzL3dlYi9jcmVhdGVBbmltYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYW5pbWF0aW9uL2VzL3dlYi9jcmVhdGVUcmFuc2l0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FuaW1hdGlvbi9lcy93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYW5pbWF0aW9uL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9jcmVhdGVBbmltYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYW5pbWF0aW9uL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9jcmVhdGVUcmFuc2l0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FuaW1hdGlvbi9lcy93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvX3V0aWxzL21pbmlhcHBFbnZBcHAuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvYWxpLW1pbmlhcHAvZ2V0QXBwLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL2FsaS1taW5pYXBwL2dldEN1cnJlbnRQYWdlcy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy9hbGktbWluaWFwcC9nZXRMYXVuY2hPcHRpb25zU3luYy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy9hbGktbWluaWFwcC9vZmZFcnJvci5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy9hbGktbWluaWFwcC9vZmZVbmhhbmRsZWRSZWplY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvYWxpLW1pbmlhcHAvb25FcnJvci5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy9hbGktbWluaWFwcC9vblVuaGFuZGxlZFJlamVjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy9iYWlkdS1zbWFydHByb2dyYW0vZ2V0QXBwLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9nZXRDdXJyZW50UGFnZXMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvYmFpZHUtc21hcnRwcm9ncmFtL2dldExhdW5jaE9wdGlvbnNTeW5jLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy9iYWlkdS1zbWFydHByb2dyYW0vb2ZmRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvYmFpZHUtc21hcnRwcm9ncmFtL29mZlVuaGFuZGxlZFJlamVjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy9iYWlkdS1zbWFydHByb2dyYW0vb25FcnJvci5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy9iYWlkdS1zbWFydHByb2dyYW0vb25VbmhhbmRsZWRSZWplY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2dldEFwcC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy9ieXRlZGFuY2UtbWljcm9hcHAvZ2V0Q3VycmVudFBhZ2VzLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9nZXRMYXVuY2hPcHRpb25zU3luYy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL29mZkVycm9yLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9vZmZVbmhhbmRsZWRSZWplY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL29uRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL29uVW5oYW5kbGVkUmVqZWN0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2dldEFwcC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9nZXRDdXJyZW50UGFnZXMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMva3VhaXNob3UtbWluaXByb2dyYW0vZ2V0TGF1bmNoT3B0aW9uc1N5bmMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMva3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMva3VhaXNob3UtbWluaXByb2dyYW0vb2ZmRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMva3VhaXNob3UtbWluaXByb2dyYW0vb2ZmVW5oYW5kbGVkUmVqZWN0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL29uRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMva3VhaXNob3UtbWluaXByb2dyYW0vb25VbmhhbmRsZWRSZWplY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvd2ViL2dldEFwcC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy93ZWIvZ2V0Q3VycmVudFBhZ2VzLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL3dlYi9nZXRMYXVuY2hPcHRpb25zU3luYy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvd2ViL29mZkVycm9yLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL3dlYi9vZmZVbmhhbmRsZWRSZWplY3Rpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvd2ViL29uRXJyb3IuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvd2ViL29uVW5oYW5kbGVkUmVqZWN0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9nZXRBcHAuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2dldEN1cnJlbnRQYWdlcy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy93ZWNoYXQtbWluaXByb2dyYW0vZ2V0TGF1bmNoT3B0aW9uc1N5bmMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXBwbGljYXRpb24vZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9vZmZFcnJvci5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hcHBsaWNhdGlvbi9lcy93ZWNoYXQtbWluaXByb2dyYW0vb2ZmVW5oYW5kbGVkUmVqZWN0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9vbkVycm9yLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2FwcGxpY2F0aW9uL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9vblVuaGFuZGxlZFJlamVjdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hdWRpby9lcy9fdXRpbHMvZXZlbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXVkaW8vZXMvX3V0aWxzL21pbmlhcHBFbnZBcHAuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXVkaW8vZXMvYWxpLW1pbmlhcHAvY3JlYXRlQXVkaW9Db250ZXh0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2F1ZGlvL2VzL2FsaS1taW5pYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2F1ZGlvL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9jcmVhdGVBdWRpb0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXVkaW8vZXMvYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2F1ZGlvL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9jcmVhdGVBdWRpb0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXVkaW8vZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2F1ZGlvL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2F1ZGlvL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2NyZWF0ZUF1ZGlvQ29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hdWRpby9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hdWRpby9lcy93ZWIvY3JlYXRlQXVkaW9Db250ZXh0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2F1ZGlvL2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hdWRpby9lcy93ZWNoYXQtbWluaXByb2dyYW0vY3JlYXRlQXVkaW9Db250ZXh0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2F1ZGlvL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hdXRob3JpemUvZXMvX3V0aWxzL2NvbnN0YW50LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2F1dGhvcml6ZS9lcy9fdXRpbHMvcHJvbWlzaWZ5LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2F1dGhvcml6ZS9lcy9fdXRpbHMvc3R5bGVPcHRpb25zLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2F1dGhvcml6ZS9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hdXRob3JpemUvZXMvYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2F1dGhvcml6ZS9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXV0aG9yaXplL2VzL2NvbW1vbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9hdXRob3JpemUvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXV0aG9yaXplL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2F1dGhvcml6ZS9lcy93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvYXV0aG9yaXplL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jYW5pdXNlL2VzL191dGlscy9taW5pYXBwRW52QXBwLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2Nhbml1c2UvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2FudmFzL2VzL191dGlscy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jYW52YXMvZXMvX3V0aWxzL3N0eWxlT3B0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jYW52YXMvZXMvYWxpLW1pbmlhcHAvY3JlYXRlQ29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jYW52YXMvZXMvYWxpLW1pbmlhcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2FudmFzL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9jcmVhdGVDb250ZXh0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NhbnZhcy9lcy9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2FudmFzL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9jcmVhdGVDb250ZXh0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NhbnZhcy9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2FudmFzL2VzL2NvbW1vbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jYW52YXMvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2FudmFzL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2NyZWF0ZUNvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2FudmFzL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NhbnZhcy9lcy93ZWIvY3JlYXRlQ29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jYW52YXMvZXMvd2ViL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NhbnZhcy9lcy93ZWNoYXQtbWluaXByb2dyYW0vY3JlYXRlQ29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jYW52YXMvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NsaXBib2FyZC9lcy9fdXRpbHMvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2xpcGJvYXJkL2VzL191dGlscy9taW5pYXBwRW52QXBwLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NsaXBib2FyZC9lcy9fdXRpbHMvcHJvbWlzaWZ5LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NsaXBib2FyZC9lcy9fdXRpbHMvc3R5bGVPcHRpb25zLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NsaXBib2FyZC9lcy9hbGktbWluaWFwcC9nZXRDbGlwYm9hcmQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2xpcGJvYXJkL2VzL2FsaS1taW5pYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NsaXBib2FyZC9lcy9hbGktbWluaWFwcC9zZXRDbGlwYm9hcmQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2xpcGJvYXJkL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9nZXRDbGlwYm9hcmQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2xpcGJvYXJkL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jbGlwYm9hcmQvZXMvYmFpZHUtc21hcnRwcm9ncmFtL3NldENsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jbGlwYm9hcmQvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2dldENsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jbGlwYm9hcmQvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NsaXBib2FyZC9lcy9ieXRlZGFuY2UtbWljcm9hcHAvc2V0Q2xpcGJvYXJkLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NsaXBib2FyZC9lcy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2xpcGJvYXJkL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NsaXBib2FyZC9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9nZXRDbGlwYm9hcmQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2xpcGJvYXJkL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NsaXBib2FyZC9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9zZXRDbGlwYm9hcmQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2xpcGJvYXJkL2VzL3dlYi9nZXRDbGlwYm9hcmQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY2xpcGJvYXJkL2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jbGlwYm9hcmQvZXMvd2ViL3NldENsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jbGlwYm9hcmQvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2dldENsaXBib2FyZC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jbGlwYm9hcmQvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NsaXBib2FyZC9lcy93ZWNoYXQtbWluaXByb2dyYW0vc2V0Q2xpcGJvYXJkLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NvbmZpcm0vZXMvX3V0aWxzL2NvbnN0YW50LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NvbmZpcm0vZXMvX3V0aWxzL21pbmlhcHBFbnZBcHAuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY29uZmlybS9lcy9fdXRpbHMvcHJvbWlzaWZ5LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NvbmZpcm0vZXMvX3V0aWxzL3N0eWxlT3B0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jb25maXJtL2VzL2FsaS1taW5pYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NvbmZpcm0vZXMvYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NvbmZpcm0vZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NvbmZpcm0vZXMvY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NvbmZpcm0vZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY29uZmlybS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jb25maXJtL2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jb25maXJtL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jb25maXJtL2xpYi9fdXRpbHMvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvY29uZmlybS9saWIvX3V0aWxzL3Byb21pc2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jb25maXJtL2xpYi9fdXRpbHMvc3R5bGVPcHRpb25zLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2NvbmZpcm0vbGliL2NvbW1vbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9jb25maXJtL2xpYi93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZWxlbWVudC9lcy9hbGktbWluaWFwcC9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZWxlbWVudC9lcy9hbGktbWluaWFwcC9nZXRTY3JvbGxPZmZzZXQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZWxlbWVudC9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9lbGVtZW50L2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9nZXRCb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZWxlbWVudC9lcy9iYWlkdS1zbWFydHByb2dyYW0vZ2V0U2Nyb2xsT2Zmc2V0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2VsZW1lbnQvZXMvYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2VsZW1lbnQvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9lbGVtZW50L2VzL2J5dGVkYW5jZS1taWNyb2FwcC9nZXRTY3JvbGxPZmZzZXQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZWxlbWVudC9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZWxlbWVudC9lcy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZWxlbWVudC9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9lbGVtZW50L2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9lbGVtZW50L2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2dldFNjcm9sbE9mZnNldC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9lbGVtZW50L2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2VsZW1lbnQvZXMvd2ViL2dldEJvdW5kaW5nQ2xpZW50UmVjdC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9lbGVtZW50L2VzL3dlYi9nZXRTY3JvbGxPZmZzZXQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZWxlbWVudC9lcy93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZWxlbWVudC9lcy93ZWNoYXQtbWluaXByb2dyYW0vZ2V0Qm91bmRpbmdDbGllbnRSZWN0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2VsZW1lbnQvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2dldFNjcm9sbE9mZnNldC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9lbGVtZW50L2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9lbnYvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9fdXRpbHMvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9fdXRpbHMvbWluaWFwcEVudkFwcC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL191dGlscy9wcm9taXNpZnkuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9fdXRpbHMvc3R5bGVPcHRpb25zLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvYWxpLW1pbmlhcHAvZG93bmxvYWQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9hbGktbWluaWFwcC9nZXRJbmZvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvYWxpLW1pbmlhcHAvZ2V0U2F2ZWRJbmZvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvYWxpLW1pbmlhcHAvZ2V0U2F2ZWRMaXN0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvYWxpLW1pbmlhcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9hbGktbWluaWFwcC9vcGVuRG9jdW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9hbGktbWluaWFwcC9yZW1vdmVTYXZlZC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL2FsaS1taW5pYXBwL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9hbGktbWluaWFwcC91cGxvYWQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9iYWlkdS1zbWFydHByb2dyYW0vZG93bmxvYWQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9iYWlkdS1zbWFydHByb2dyYW0vZ2V0SW5mby5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9nZXRTYXZlZEluZm8uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9iYWlkdS1zbWFydHByb2dyYW0vZ2V0U2F2ZWRMaXN0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvYmFpZHUtc21hcnRwcm9ncmFtL29wZW5Eb2N1bWVudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9yZW1vdmVTYXZlZC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9zYXZlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvYmFpZHUtc21hcnRwcm9ncmFtL3VwbG9hZC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9kb3dubG9hZC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9nZXRJbmZvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2dldFNhdmVkSW5mby5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9nZXRTYXZlZExpc3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9ieXRlZGFuY2UtbWljcm9hcHAvb3BlbkRvY3VtZW50LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL3JlbW92ZVNhdmVkLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9ieXRlZGFuY2UtbWljcm9hcHAvdXBsb2FkLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9kb3dubG9hZC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2dldEluZm8uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9nZXRTYXZlZEluZm8uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9nZXRTYXZlZExpc3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL29wZW5Eb2N1bWVudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL3JlbW92ZVNhdmVkLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMva3VhaXNob3UtbWluaXByb2dyYW0vc2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL3VwbG9hZC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL3dlYi9kb3dubG9hZC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL3dlYi9nZXRJbmZvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvd2ViL2dldFNhdmVkSW5mby5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL3dlYi9nZXRTYXZlZExpc3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy93ZWIvb3BlbkRvY3VtZW50LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvd2ViL3JlbW92ZVNhdmVkLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvd2ViL3NhdmUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy93ZWIvdXBsb2FkLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2Rvd25sb2FkLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2dldEluZm8uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy93ZWNoYXQtbWluaXByb2dyYW0vZ2V0U2F2ZWRJbmZvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ZpbGUvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2dldFNhdmVkTGlzdC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9vcGVuRG9jdW1lbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy93ZWNoYXQtbWluaXByb2dyYW0vcmVtb3ZlU2F2ZWQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvZmlsZS9lcy93ZWNoYXQtbWluaXByb2dyYW0vc2F2ZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9maWxlL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS91cGxvYWQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMvX3V0aWxzL2NvbnN0YW50LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL191dGlscy9taW5pYXBwRW52QXBwLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL191dGlscy9wcm9taXNpZnkuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMvX3V0aWxzL3N0eWxlT3B0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy9hbGktbWluaWFwcC9jaG9vc2VJbWFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy9hbGktbWluaWFwcC9jb21wcmVzc0ltYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL2FsaS1taW5pYXBwL2dldEltYWdlSW5mby5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy9hbGktbWluaWFwcC9wcmV2aWV3SW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMvYWxpLW1pbmlhcHAvc2F2ZUltYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9jaG9vc2VJbWFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy9iYWlkdS1zbWFydHByb2dyYW0vY29tcHJlc3NJbWFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy9iYWlkdS1zbWFydHByb2dyYW0vZ2V0SW1hZ2VJbmZvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy9iYWlkdS1zbWFydHByb2dyYW0vcHJldmlld0ltYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9zYXZlSW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2Nob29zZUltYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9jb21wcmVzc0ltYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9nZXRJbWFnZUluZm8uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9wcmV2aWV3SW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL3NhdmVJbWFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMva3VhaXNob3UtbWluaXByb2dyYW0vY2hvb3NlSW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMva3VhaXNob3UtbWluaXByb2dyYW0vY29tcHJlc3NJbWFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9nZXRJbWFnZUluZm8uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMva3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMva3VhaXNob3UtbWluaXByb2dyYW0vcHJldmlld0ltYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL3NhdmVJbWFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy93ZWIvY2hvb3NlSW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMvd2ViL2NvbXByZXNzSW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMvd2ViL2dldEltYWdlSW5mby5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW1hZ2UvZXMvd2ViL3ByZXZpZXdJbWFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy93ZWIvc2F2ZUltYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9jaG9vc2VJbWFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy93ZWNoYXQtbWluaXByb2dyYW0vY29tcHJlc3NJbWFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy93ZWNoYXQtbWluaXByb2dyYW0vZ2V0SW1hZ2VJbmZvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbWFnZS9lcy93ZWNoYXQtbWluaXByb2dyYW0vcHJldmlld0ltYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ltYWdlL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9zYXZlSW1hZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2VzL191dGlscy9taW5pYXBwRW52QXBwLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ludGVyc2VjdGlvbi1vYnNlcnZlci9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvZXMvYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ludGVyc2VjdGlvbi1vYnNlcnZlci9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2ludGVyc2VjdGlvbi1vYnNlcnZlci9lcy93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2FkaW5nL2VzL191dGlscy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2FkaW5nL2VzL191dGlscy9taW5pYXBwRW52QXBwLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvYWRpbmcvZXMvX3V0aWxzL3Byb21pc2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2FkaW5nL2VzL191dGlscy9zdHlsZU9wdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9hZGluZy9lcy9hbGktbWluaWFwcC9oaWRlTG9hZGluZy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2FkaW5nL2VzL2FsaS1taW5pYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvYWRpbmcvZXMvYWxpLW1pbmlhcHAvc2hvd0xvYWRpbmcuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9hZGluZy9lcy9iYWlkdS1zbWFydHByb2dyYW0vaGlkZUxvYWRpbmcuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9hZGluZy9lcy9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9hZGluZy9lcy9iYWlkdS1zbWFydHByb2dyYW0vc2hvd0xvYWRpbmcuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9hZGluZy9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaGlkZUxvYWRpbmcuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9hZGluZy9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9hZGluZy9lcy9ieXRlZGFuY2UtbWljcm9hcHAvc2hvd0xvYWRpbmcuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9hZGluZy9lcy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9hZGluZy9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2FkaW5nL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2hpZGVMb2FkaW5nLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvYWRpbmcvZXMva3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9hZGluZy9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9zaG93TG9hZGluZy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2FkaW5nL2VzL3dlYi9oaWRlTG9hZGluZy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2FkaW5nL2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2FkaW5nL2VzL3dlYi9zaG93TG9hZGluZy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2FkaW5nL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9oaWRlTG9hZGluZy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2FkaW5nL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2FkaW5nL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9zaG93TG9hZGluZy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2NhdGlvbi9lcy9fdXRpbHMvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9jYXRpb24vZXMvX3V0aWxzL21pbmlhcHBFbnZBcHAuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9jYXRpb24vZXMvX3V0aWxzL3Byb21pc2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2NhdGlvbi9lcy9fdXRpbHMvc3R5bGVPcHRpb25zLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL2FsaS1taW5pYXBwL2Nob29zZUxvY2F0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL2FsaS1taW5pYXBwL2dldExvY2F0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL2FsaS1taW5pYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL2FsaS1taW5pYXBwL29wZW5Mb2NhdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2NhdGlvbi9lcy9iYWlkdS1zbWFydHByb2dyYW0vY2hvb3NlTG9jYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9jYXRpb24vZXMvYmFpZHUtc21hcnRwcm9ncmFtL2dldExvY2F0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2NhdGlvbi9lcy9iYWlkdS1zbWFydHByb2dyYW0vb3BlbkxvY2F0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9jaG9vc2VMb2NhdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2NhdGlvbi9lcy9ieXRlZGFuY2UtbWljcm9hcHAvZ2V0TG9jYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9jYXRpb24vZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9vcGVuTG9jYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9jYXRpb24vZXMvY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2Nob29zZUxvY2F0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2dldExvY2F0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL29wZW5Mb2NhdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2NhdGlvbi9lcy93ZWIvY2hvb3NlTG9jYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9jYXRpb24vZXMvd2ViL2dldExvY2F0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2NhdGlvbi9lcy93ZWIvb3BlbkxvY2F0aW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9jaG9vc2VMb2NhdGlvbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9sb2NhdGlvbi9lcy93ZWNoYXQtbWluaXByb2dyYW0vZ2V0TG9jYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbG9jYXRpb24vZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL2xvY2F0aW9uL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9vcGVuTG9jYXRpb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbWFrZS1waG9uZS1jYWxsL2VzL191dGlscy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9tYWtlLXBob25lLWNhbGwvZXMvX3V0aWxzL21pbmlhcHBFbnZBcHAuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbWFrZS1waG9uZS1jYWxsL2VzL191dGlscy9wcm9taXNpZnkuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbWFrZS1waG9uZS1jYWxsL2VzL191dGlscy9zdHlsZU9wdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbWFrZS1waG9uZS1jYWxsL2VzL2FsaS1taW5pYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL21ha2UtcGhvbmUtY2FsbC9lcy9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbWFrZS1waG9uZS1jYWxsL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9tYWtlLXBob25lLWNhbGwvZXMvY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL21ha2UtcGhvbmUtY2FsbC9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9tYWtlLXBob25lLWNhbGwvZXMva3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbWFrZS1waG9uZS1jYWxsL2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9tYWtlLXBob25lLWNhbGwvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL191dGlscy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy9fdXRpbHMvcHJvbWlzaWZ5LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL191dGlscy9zdHlsZU9wdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvYWxpLW1pbmlhcHAvYmFjay5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy9hbGktbWluaWFwcC9nby5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy9hbGktbWluaWFwcC9wdXNoLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL2FsaS1taW5pYXBwL3JlTGF1bmNoLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL2FsaS1taW5pYXBwL3JlcGxhY2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvYWxpLW1pbmlhcHAvc3dpdGNoVGFiLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9iYWNrLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9nby5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvYmFpZHUtc21hcnRwcm9ncmFtL3B1c2guanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvYmFpZHUtc21hcnRwcm9ncmFtL3JlTGF1bmNoLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9yZXBsYWNlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9zd2l0Y2hUYWIuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2JhY2suanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2dvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy9ieXRlZGFuY2UtbWljcm9hcHAvcHVzaC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy9ieXRlZGFuY2UtbWljcm9hcHAvcmVMYXVuY2guanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL3JlcGxhY2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL3N3aXRjaFRhYi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMva3VhaXNob3UtbWluaXByb2dyYW0vYmFjay5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9nby5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9wdXNoLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL3JlTGF1bmNoLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL3JlcGxhY2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMva3VhaXNob3UtbWluaXByb2dyYW0vc3dpdGNoVGFiLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL3dlYi9iYWNrLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL3dlYi9nby5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvd2ViL3B1c2guanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvd2ViL3JlTGF1bmNoLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL3dlYi9yZXBsYWNlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL3dlYi9zd2l0Y2hUYWIuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2JhY2suanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2dvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRlL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy93ZWNoYXQtbWluaXByb2dyYW0vcHVzaC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0ZS9lcy93ZWNoYXQtbWluaXByb2dyYW0vcmVMYXVuY2guanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL3JlcGxhY2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGUvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL3N3aXRjaFRhYi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0aW9uLWJhci9lcy9fdXRpbHMvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGlvbi1iYXIvZXMvX3V0aWxzL21pbmlhcHBFbnZBcHAuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGlvbi1iYXIvZXMvX3V0aWxzL3Byb21pc2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0aW9uLWJhci9lcy9fdXRpbHMvc3R5bGVPcHRpb25zLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRpb24tYmFyL2VzL2FsaS1taW5pYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRpb24tYmFyL2VzL2FsaS1taW5pYXBwL3NldE5hdmlnYXRpb25CYXJDb2xvci5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0aW9uLWJhci9lcy9hbGktbWluaWFwcC9zZXROYXZpZ2F0aW9uQmFyVGl0bGUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGlvbi1iYXIvZXMvYmFpZHUtc21hcnRwcm9ncmFtL2dldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGlvbi1iYXIvZXMvYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRpb24tYmFyL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9zZXROYXZpZ2F0aW9uQmFyQ29sb3IuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGlvbi1iYXIvZXMvYmFpZHUtc21hcnRwcm9ncmFtL3NldE5hdmlnYXRpb25CYXJUaXRsZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0aW9uLWJhci9lcy9ieXRlZGFuY2UtbWljcm9hcHAvZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0aW9uLWJhci9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGlvbi1iYXIvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL3NldE5hdmlnYXRpb25CYXJDb2xvci5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0aW9uLWJhci9lcy9ieXRlZGFuY2UtbWljcm9hcHAvc2V0TmF2aWdhdGlvbkJhclRpdGxlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRpb24tYmFyL2VzL2NvbW1vbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0aW9uLWJhci9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0aW9uLWJhci9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9nZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRpb24tYmFyL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRpb24tYmFyL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL3NldE5hdmlnYXRpb25CYXJDb2xvci5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9uYXZpZ2F0aW9uLWJhci9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9zZXROYXZpZ2F0aW9uQmFyVGl0bGUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGlvbi1iYXIvZXMvd2ViL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRpb24tYmFyL2VzL3dlYi9zZXROYXZpZ2F0aW9uQmFyVGl0bGUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGlvbi1iYXIvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2dldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGlvbi1iYXIvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL25hdmlnYXRpb24tYmFyL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9zZXROYXZpZ2F0aW9uQmFyQ29sb3IuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvbmF2aWdhdGlvbi1iYXIvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL3NldE5hdmlnYXRpb25CYXJUaXRsZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9wYWdlLXNjcm9sbC10by9lcy9fdXRpbHMvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcGFnZS1zY3JvbGwtdG8vZXMvX3V0aWxzL3Byb21pc2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9wYWdlLXNjcm9sbC10by9lcy9fdXRpbHMvc3R5bGVPcHRpb25zLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3BhZ2Utc2Nyb2xsLXRvL2VzL2FsaS1taW5pYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3BhZ2Utc2Nyb2xsLXRvL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9wYWdlLXNjcm9sbC10by9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcGFnZS1zY3JvbGwtdG8vZXMvY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3BhZ2Utc2Nyb2xsLXRvL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3BhZ2Utc2Nyb2xsLXRvL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3BhZ2Utc2Nyb2xsLXRvL2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9wYWdlLXNjcm9sbC10by9lcy93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcHVsbC1kb3duLXJlZnJlc2gvZXMvX3V0aWxzL2NvbnN0YW50LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3B1bGwtZG93bi1yZWZyZXNoL2VzL191dGlscy9ldmVudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9wdWxsLWRvd24tcmVmcmVzaC9lcy9fdXRpbHMvbWluaWFwcEVudkFwcC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9wdWxsLWRvd24tcmVmcmVzaC9lcy9fdXRpbHMvcHJvbWlzaWZ5LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3B1bGwtZG93bi1yZWZyZXNoL2VzL191dGlscy9zdHlsZU9wdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcHVsbC1kb3duLXJlZnJlc2gvZXMvYWxpLW1pbmlhcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcHVsbC1kb3duLXJlZnJlc2gvZXMvYWxpLW1pbmlhcHAvc3RhcnRQdWxsRG93blJlZnJlc2guanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcHVsbC1kb3duLXJlZnJlc2gvZXMvYWxpLW1pbmlhcHAvc3RvcFB1bGxEb3duUmVmcmVzaC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9wdWxsLWRvd24tcmVmcmVzaC9lcy9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcHVsbC1kb3duLXJlZnJlc2gvZXMvYmFpZHUtc21hcnRwcm9ncmFtL3N0YXJ0UHVsbERvd25SZWZyZXNoLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3B1bGwtZG93bi1yZWZyZXNoL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9zdG9wUHVsbERvd25SZWZyZXNoLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3B1bGwtZG93bi1yZWZyZXNoL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9wdWxsLWRvd24tcmVmcmVzaC9lcy9ieXRlZGFuY2UtbWljcm9hcHAvc3RhcnRQdWxsRG93blJlZnJlc2guanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcHVsbC1kb3duLXJlZnJlc2gvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL3N0b3BQdWxsRG93blJlZnJlc2guanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcHVsbC1kb3duLXJlZnJlc2gvZXMvY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3B1bGwtZG93bi1yZWZyZXNoL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3B1bGwtZG93bi1yZWZyZXNoL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3B1bGwtZG93bi1yZWZyZXNoL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL3N0YXJ0UHVsbERvd25SZWZyZXNoLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3B1bGwtZG93bi1yZWZyZXNoL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL3N0b3BQdWxsRG93blJlZnJlc2guanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcHVsbC1kb3duLXJlZnJlc2gvZXMvd2ViL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3B1bGwtZG93bi1yZWZyZXNoL2VzL3dlYi9vblB1bGxEb3duUmVmcmVzaC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9wdWxsLWRvd24tcmVmcmVzaC9lcy93ZWIvc3RhcnRQdWxsRG93blJlZnJlc2guanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcHVsbC1kb3duLXJlZnJlc2gvZXMvd2ViL3N0b3BQdWxsRG93blJlZnJlc2guanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcHVsbC1kb3duLXJlZnJlc2gvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3B1bGwtZG93bi1yZWZyZXNoL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9zdGFydFB1bGxEb3duUmVmcmVzaC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9wdWxsLWRvd24tcmVmcmVzaC9lcy93ZWNoYXQtbWluaXByb2dyYW0vc3RvcFB1bGxEb3duUmVmcmVzaC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9yZWNvcmRlci9lcy9fdXRpbHMvbWluaWFwcEVudkFwcC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9yZWNvcmRlci9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9yZWNvcmRlci9lcy9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcmVjb3JkZXIvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3JlY29yZGVyL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3JlY29yZGVyL2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9yZWNvcmRlci9lcy93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcmVxdWVzdC9lcy9fdXRpbHMvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcmVxdWVzdC9lcy9fdXRpbHMvbWluaWFwcEVudkFwcC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9yZXF1ZXN0L2VzL191dGlscy9zdHlsZU9wdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcmVxdWVzdC9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9yZXF1ZXN0L2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9yZXF1ZXN0L2VzL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9yZXF1ZXN0L2VzL2NvbW1vbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9yZXF1ZXN0L2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3JlcXVlc3QvZXMva3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvcmVxdWVzdC9lcy90eXBlcy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9yZXF1ZXN0L2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9yZXF1ZXN0L2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zY2FuL2VzL191dGlscy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zY2FuL2VzL191dGlscy9wcm9taXNpZnkuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2Nhbi9lcy9fdXRpbHMvc3R5bGVPcHRpb25zLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3NjYW4vZXMvYWxpLW1pbmlhcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2Nhbi9lcy9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2Nhbi9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2Nhbi9lcy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2Nhbi9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zY2FuL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3NjYW4vZXMvd2ViL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3NjYW4vZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3NoYXJlL2VzL191dGlscy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zaGFyZS9lcy9fdXRpbHMvcHJvbWlzaWZ5LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3NoYXJlL2VzL191dGlscy9zdHlsZU9wdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2hhcmUvZXMvYWxpLW1pbmlhcHAvaGlkZVNoYXJlTWVudS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zaGFyZS9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zaGFyZS9lcy9hbGktbWluaWFwcC9zaG93U2hhcmVNZW51LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3NoYXJlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9oaWRlU2hhcmVNZW51LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3NoYXJlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zaGFyZS9lcy9iYWlkdS1zbWFydHByb2dyYW0vc2hvd1NoYXJlTWVudS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zaGFyZS9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaGlkZVNoYXJlTWVudS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zaGFyZS9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2hhcmUvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL3Nob3dTaGFyZU1lbnUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2hhcmUvZXMvY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3NoYXJlL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3NoYXJlL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2hpZGVTaGFyZU1lbnUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2hhcmUvZXMva3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2hhcmUvZXMva3VhaXNob3UtbWluaXByb2dyYW0vc2hvd1NoYXJlTWVudS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zaGFyZS9lcy93ZWIvaGlkZVNoYXJlTWVudS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zaGFyZS9lcy93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2hhcmUvZXMvd2ViL3Nob3dTaGFyZU1lbnUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2hhcmUvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2hpZGVTaGFyZU1lbnUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc2hhcmUvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3NoYXJlL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9zaG93U2hhcmVNZW51LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvX3V0aWxzL2NvbnN0YW50LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvX3V0aWxzL21pbmlhcHBFbnZBcHAuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy9fdXRpbHMvcHJvbWlzaWZ5LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvX3V0aWxzL3N0eWxlT3B0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL2FsaS1taW5pYXBwL2dldFN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy9hbGktbWluaWFwcC9nZXRTdG9yYWdlU3luYy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL2FsaS1taW5pYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvYWxpLW1pbmlhcHAvcmVtb3ZlU3RvcmFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL2FsaS1taW5pYXBwL3JlbW92ZVN0b3JhZ2VTeW5jLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvYWxpLW1pbmlhcHAvc2V0U3RvcmFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL2FsaS1taW5pYXBwL3NldFN0b3JhZ2VTeW5jLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvYmFpZHUtc21hcnRwcm9ncmFtL2dldFN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy9iYWlkdS1zbWFydHByb2dyYW0vZ2V0U3RvcmFnZVN5bmMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy9iYWlkdS1zbWFydHByb2dyYW0vcmVtb3ZlU3RvcmFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9yZW1vdmVTdG9yYWdlU3luYy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9zZXRTdG9yYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvYmFpZHUtc21hcnRwcm9ncmFtL3NldFN0b3JhZ2VTeW5jLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2dldFN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy9ieXRlZGFuY2UtbWljcm9hcHAvZ2V0U3RvcmFnZVN5bmMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy9ieXRlZGFuY2UtbWljcm9hcHAvcmVtb3ZlU3RvcmFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9yZW1vdmVTdG9yYWdlU3luYy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9zZXRTdG9yYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL3NldFN0b3JhZ2VTeW5jLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9nZXRTdG9yYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMva3VhaXNob3UtbWluaXByb2dyYW0vZ2V0U3RvcmFnZVN5bmMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL3JlbW92ZVN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9yZW1vdmVTdG9yYWdlU3luYy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL3NldFN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9zZXRTdG9yYWdlU3luYy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL3dlYi9nZXRTdG9yYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvd2ViL2dldFN0b3JhZ2VTeW5jLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvd2ViL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvd2ViL3JlbW92ZVN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy93ZWIvcmVtb3ZlU3RvcmFnZVN5bmMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy93ZWIvc2V0U3RvcmFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL3dlYi9zZXRTdG9yYWdlU3luYy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9nZXRTdG9yYWdlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2dldFN0b3JhZ2VTeW5jLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N0b3JhZ2UvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL3JlbW92ZVN0b3JhZ2UuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy93ZWNoYXQtbWluaXByb2dyYW0vcmVtb3ZlU3RvcmFnZVN5bmMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3RvcmFnZS9lcy93ZWNoYXQtbWluaXByb2dyYW0vc2V0U3RvcmFnZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zdG9yYWdlL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9zZXRTdG9yYWdlU3luYy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zeXN0ZW0taW5mby9lcy9fdXRpbHMvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3lzdGVtLWluZm8vZXMvX3V0aWxzL21pbmlhcHBFbnZBcHAuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3lzdGVtLWluZm8vZXMvX3V0aWxzL3Byb21pc2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zeXN0ZW0taW5mby9lcy9fdXRpbHMvc3R5bGVPcHRpb25zLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N5c3RlbS1pbmZvL2VzL2FsaS1taW5pYXBwL2dldEluZm8uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3lzdGVtLWluZm8vZXMvYWxpLW1pbmlhcHAvZ2V0SW5mb1N5bmMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3lzdGVtLWluZm8vZXMvYWxpLW1pbmlhcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3lzdGVtLWluZm8vZXMvYmFpZHUtc21hcnRwcm9ncmFtL2dldEluZm8uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3lzdGVtLWluZm8vZXMvYmFpZHUtc21hcnRwcm9ncmFtL2dldEluZm9TeW5jLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N5c3RlbS1pbmZvL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zeXN0ZW0taW5mby9lcy9ieXRlZGFuY2UtbWljcm9hcHAvZ2V0SW5mby5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zeXN0ZW0taW5mby9lcy9ieXRlZGFuY2UtbWljcm9hcHAvZ2V0SW5mb1N5bmMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3lzdGVtLWluZm8vZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N5c3RlbS1pbmZvL2VzL2NvbW1vbi5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zeXN0ZW0taW5mby9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zeXN0ZW0taW5mby9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9nZXRJbmZvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N5c3RlbS1pbmZvL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2dldEluZm9TeW5jLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N5c3RlbS1pbmZvL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N5c3RlbS1pbmZvL2VzL3dlYi9nZXRJbmZvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N5c3RlbS1pbmZvL2VzL3dlYi9nZXRJbmZvU3luYy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS9zeXN0ZW0taW5mby9lcy93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3lzdGVtLWluZm8vZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2dldEluZm8uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvc3lzdGVtLWluZm8vZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2dldEluZm9TeW5jLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3N5c3RlbS1pbmZvL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90YWItYmFyL2VzL191dGlscy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90YWItYmFyL2VzL191dGlscy9taW5pYXBwRW52QXBwLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RhYi1iYXIvZXMvX3V0aWxzL3Byb21pc2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90YWItYmFyL2VzL191dGlscy9zdHlsZU9wdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdGFiLWJhci9lcy9hbGktbWluaWFwcC9oaWRlVGFiQmFyLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RhYi1iYXIvZXMvYWxpLW1pbmlhcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdGFiLWJhci9lcy9hbGktbWluaWFwcC9zaG93VGFiQmFyLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RhYi1iYXIvZXMvYmFpZHUtc21hcnRwcm9ncmFtL2hpZGVUYWJCYXIuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdGFiLWJhci9lcy9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdGFiLWJhci9lcy9iYWlkdS1zbWFydHByb2dyYW0vc2hvd1RhYkJhci5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90YWItYmFyL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9oaWRlVGFiQmFyLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RhYi1iYXIvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RhYi1iYXIvZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL3Nob3dUYWJCYXIuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdGFiLWJhci9lcy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdGFiLWJhci9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90YWItYmFyL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2hpZGVUYWJCYXIuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdGFiLWJhci9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90YWItYmFyL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL3Nob3dUYWJCYXIuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdGFiLWJhci9lcy93ZWNoYXQtbWluaXByb2dyYW0vaGlkZVRhYkJhci5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90YWItYmFyL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90YWItYmFyL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9zaG93VGFiQmFyLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RvYXN0L2VzL191dGlscy9taW5pYXBwRW52QXBwLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RvYXN0L2VzL191dGlscy9wcm9taXNpZnkuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMvYWxpLW1pbmlhcHAvaGlkZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90b2FzdC9lcy9hbGktbWluaWFwcC9oaWRlVG9hc3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMvYWxpLW1pbmlhcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMvYWxpLW1pbmlhcHAvc2hvdy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90b2FzdC9lcy9hbGktbWluaWFwcC9zaG93VG9hc3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMvYmFpZHUtc21hcnRwcm9ncmFtL2hpZGUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMvYmFpZHUtc21hcnRwcm9ncmFtL2hpZGVUb2FzdC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90b2FzdC9lcy9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMvYmFpZHUtc21hcnRwcm9ncmFtL3Nob3cuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMvYmFpZHUtc21hcnRwcm9ncmFtL3Nob3dUb2FzdC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90b2FzdC9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaGlkZS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90b2FzdC9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaGlkZVRvYXN0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RvYXN0L2VzL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90b2FzdC9lcy9ieXRlZGFuY2UtbWljcm9hcHAvc2hvdy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90b2FzdC9lcy9ieXRlZGFuY2UtbWljcm9hcHAvc2hvd1RvYXN0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RvYXN0L2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RvYXN0L2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2hpZGUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMva3VhaXNob3UtbWluaXByb2dyYW0vaGlkZVRvYXN0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RvYXN0L2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RvYXN0L2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL3Nob3cuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMva3VhaXNob3UtbWluaXByb2dyYW0vc2hvd1RvYXN0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RvYXN0L2VzL3V0aWxzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RvYXN0L2VzL3dlYi9oaWRlLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RvYXN0L2VzL3dlYi9oaWRlVG9hc3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMvd2ViL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RvYXN0L2VzL3dlYi9zaG93LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3RvYXN0L2VzL3dlYi9zaG93VG9hc3QuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2hpZGUuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2hpZGVUb2FzdC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS90b2FzdC9lcy93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL3Nob3cuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdG9hc3QvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL3Nob3dUb2FzdC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWJyYXRlL2VzL191dGlscy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWJyYXRlL2VzL191dGlscy9taW5pYXBwRW52QXBwLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpYnJhdGUvZXMvX3V0aWxzL3Byb21pc2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWJyYXRlL2VzL191dGlscy9zdHlsZU9wdGlvbnMuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlicmF0ZS9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWJyYXRlL2VzL2FsaS1taW5pYXBwL3ZpYnJhdGVMb25nLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpYnJhdGUvZXMvYWxpLW1pbmlhcHAvdmlicmF0ZVNob3J0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpYnJhdGUvZXMvYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpYnJhdGUvZXMvYmFpZHUtc21hcnRwcm9ncmFtL3ZpYnJhdGVMb25nLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpYnJhdGUvZXMvYmFpZHUtc21hcnRwcm9ncmFtL3ZpYnJhdGVTaG9ydC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWJyYXRlL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWJyYXRlL2VzL2J5dGVkYW5jZS1taWNyb2FwcC92aWJyYXRlTG9uZy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWJyYXRlL2VzL2J5dGVkYW5jZS1taWNyb2FwcC92aWJyYXRlU2hvcnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlicmF0ZS9lcy9jb21tb24uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlicmF0ZS9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWJyYXRlL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpYnJhdGUvZXMva3VhaXNob3UtbWluaXByb2dyYW0vdmlicmF0ZUxvbmcuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlicmF0ZS9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS92aWJyYXRlU2hvcnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlicmF0ZS9lcy93ZWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlicmF0ZS9lcy93ZWIvdmlicmF0ZUxvbmcuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlicmF0ZS9lcy93ZWIvdmlicmF0ZVNob3J0LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpYnJhdGUvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpYnJhdGUvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL3ZpYnJhdGVMb25nLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpYnJhdGUvZXMvd2VjaGF0LW1pbmlwcm9ncmFtL3ZpYnJhdGVTaG9ydC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9lcy9fdXRpbHMvY29uc3RhbnQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlkZW8vZXMvX3V0aWxzL21pbmlhcHBFbnZBcHAuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlkZW8vZXMvX3V0aWxzL3Byb21pc2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9lcy9fdXRpbHMvc3R5bGVPcHRpb25zLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpZGVvL2VzL2FsaS1taW5pYXBwL2Nob29zZU1lZGlhLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpZGVvL2VzL2FsaS1taW5pYXBwL2Nob29zZVZpZGVvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpZGVvL2VzL2FsaS1taW5pYXBwL2NyZWF0ZVZpZGVvQ29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9lcy9hbGktbWluaWFwcC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9lcy9iYWlkdS1zbWFydHByb2dyYW0vY2hvb3NlTWVkaWEuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlkZW8vZXMvYmFpZHUtc21hcnRwcm9ncmFtL2Nob29zZVZpZGVvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpZGVvL2VzL2JhaWR1LXNtYXJ0cHJvZ3JhbS9jcmVhdGVWaWRlb0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlkZW8vZXMvYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpZGVvL2VzL2J5dGVkYW5jZS1taWNyb2FwcC9jaG9vc2VNZWRpYS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9lcy9ieXRlZGFuY2UtbWljcm9hcHAvY2hvb3NlVmlkZW8uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlkZW8vZXMvYnl0ZWRhbmNlLW1pY3JvYXBwL2NyZWF0ZVZpZGVvQ29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9lcy9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlkZW8vZXMvY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpZGVvL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpZGVvL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2Nob29zZU1lZGlhLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpZGVvL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2Nob29zZVZpZGVvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpZGVvL2VzL2t1YWlzaG91LW1pbmlwcm9ncmFtL2NyZWF0ZVZpZGVvQ29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9lcy9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9lcy93ZWIvY2hvb3NlTWVkaWEuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlkZW8vZXMvd2ViL2Nob29zZVZpZGVvLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpZGVvL2VzL3dlYi9jcmVhdGVWaWRlb0NvbnRleHQuanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlkZW8vZXMvd2ViL2luZGV4LmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpZGVvL2VzL3dlY2hhdC1taW5pcHJvZ3JhbS9jaG9vc2VNZWRpYS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9lcy93ZWNoYXQtbWluaXByb2dyYW0vY2hvb3NlVmlkZW8uanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlkZW8vZXMvd2VjaGF0LW1pbmlwcm9ncmFtL2NyZWF0ZVZpZGVvQ29udGV4dC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9lcy93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4uL2Rpc3QvbGliL0B1bmkvdmlkZW8vbGliL191dGlscy9jb25zdGFudC5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9saWIvX3V0aWxzL3Byb21pc2lmeS5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9saWIvX3V0aWxzL3N0eWxlT3B0aW9ucy5qcyIsIndlYnBhY2s6Ly8vLi4vZGlzdC9saWIvQHVuaS92aWRlby9saWIvY29tbW9uLmpzIiwid2VicGFjazovLy8uLi9kaXN0L2xpYi9AdW5pL3ZpZGVvL2xpYi93ZWIvY2hvb3NlTWVkaWEuanMiLCJ3ZWJwYWNrOi8vLy4vLnJheC9FcnJvckJvdW5kYXJ5L0Vycm9yQm91bmRhcnlGYWxsYmFjay50c3giLCJ3ZWJwYWNrOi8vLy4vLnJheC9FcnJvckJvdW5kYXJ5L2luZGV4LnRzeCIsIndlYnBhY2s6Ly8vLi8ucmF4L1RhYkJhci9pbmRleC5jc3MiLCJ3ZWJwYWNrOi8vLy4vLnJheC9UYWJCYXIvaW5kZXgudHN4Iiwid2VicGFjazovLy8uLy5yYXgvYXBwQ29uZmlnLnRzIiwid2VicGFjazovLy8uLy5yYXgvY29uZmlnLnRzIiwid2VicGFjazovLy8uLy5yYXgvaW5kZXgudHMiLCJ3ZWJwYWNrOi8vLy4vLnJheC9sb2FkUnVudGltZU1vZHVsZXMudHMiLCJ3ZWJwYWNrOi8vLy4vLnJheC9sb2FkU3RhdGljTW9kdWxlcy50cyIsIndlYnBhY2s6Ly8vLi8ucmF4L3JlbmRlci50cyIsIndlYnBhY2s6Ly8vLi8ucmF4L3J1bkFwcC50cyIsIndlYnBhY2s6Ly8vLi8ucmF4L3N0YXRpY0NvbmZpZy50cyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9kZWZpbmVQcm9wZXJ0eS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL0BiYWJlbC9ydW50aW1lL3JlZ2VuZXJhdG9yL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lLWpzeC1wbHVzL2Rpc3QvYmFiZWwtcnVudGltZS1qc3gtcGx1cy51bWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2JhYmVsLXJ1bnRpbWUvY29yZS1qcy9vYmplY3QvYXNzaWduLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9iYWJlbC1ydW50aW1lL2hlbHBlcnMvZXh0ZW5kcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYnVpbGQtcGx1Z2luLWFwcC1jb3JlL2xpYi9ydW50aW1lLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jbGFzc25hbWVzL2RlZHVwZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY2xhc3NuYW1lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L2ZuL29iamVjdC9hc3NpZ24uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19hLWZ1bmN0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYW4tb2JqZWN0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fYXJyYXktaW5jbHVkZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb2YuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19jb3JlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fY3R4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZGVmaW5lZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2Rlc2NyaXB0b3JzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fZG9tLWNyZWF0ZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2VudW0tYnVnLWtleXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19leHBvcnQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19mYWlscy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hhcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2hpZGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pZTgtZG9tLWRlZmluZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX2lvYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19pcy1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19saWJyYXJ5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWFzc2lnbi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1kcC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1nb3BzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fb2JqZWN0LWtleXMtaW50ZXJuYWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19vYmplY3Qta2V5cy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX29iamVjdC1waWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL19wcm9wZXJ0eS1kZXNjLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fc2hhcmVkLWtleS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3NoYXJlZC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWFic29sdXRlLWluZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLWpzL2xpYnJhcnkvbW9kdWxlcy9fdG8taW50ZWdlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY29yZS1qcy9saWJyYXJ5L21vZHVsZXMvX3RvLWlvYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1sZW5ndGguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1vYmplY3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL190by1wcmltaXRpdmUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL191aWQuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NvcmUtanMvbGlicmFyeS9tb2R1bGVzL2VzNi5vYmplY3QuYXNzaWduLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcmVhdGUtYXBwLXNoYXJlZC9saWIvYXBwTGlmZUN5Y2xlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLWFwcC1zaGFyZWQvbGliL2NvbGxlY3RBcHBMaWZlQ3ljbGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1hcHAtc2hhcmVkL2xpYi9jb25zdGFudHMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1hcHAtc2hhcmVkL2xpYi9jcmVhdGVCYXNlQXBwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jcmVhdGUtYXBwLXNoYXJlZC9saWIvZW1pdExpZmVDeWNsZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1hcHAtc2hhcmVkL2xpYi9lbmhhbmNlV2l0aFJvdXRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLWFwcC1zaGFyZWQvbGliL2Vudi5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLWFwcC1zaGFyZWQvbGliL2dldFNlYXJjaFBhcmFtcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLWFwcC1zaGFyZWQvbGliL2hpc3RvcnkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1hcHAtc2hhcmVkL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLWFwcC1zaGFyZWQvbGliL25hdGl2ZUV2ZW50TGlzdGVuZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1hcHAtc2hhcmVkL2xpYi9wYWdlTGlmZUN5Y2xlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLWFwcC1zaGFyZWQvbGliL3JvdXRlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLWFwcC1zaGFyZWQvbGliL3J1bnRpbWVNb2R1bGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS1hcHAtc2hhcmVkL2xpYi91dGlscy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLWFwcC1zaGFyZWQvbGliL3V0aWxzL3BhdGhSZWRpcmVjdC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvY3JlYXRlLWFwcC1zaGFyZWQvbGliL3V0aWxzL3R5cGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2NyZWF0ZS11c2Utcm91dGVyL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZGVjb2RlLXVyaS1jb21wb25lbnQvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2RyaXZlci1taW5pYXBwL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZHJpdmVyLXVuaXZlcnNhbC9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvZHJpdmVyLXVuaXZlcnNhbC9lcy9taW5pYXBwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9maWx0ZXItb2JqL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9oaXN0b3J5L2VzbS9oaXN0b3J5LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9taW5pYXBwLWhpc3RvcnkvZXMvSGlzdG9yeS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvbWluaWFwcC1oaXN0b3J5L2VzL0xvY2F0aW9uLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9taW5pYXBwLWhpc3RvcnkvZXMvY29uc3RhbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9taW5pYXBwLWhpc3RvcnkvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21pbmlhcHAtaGlzdG9yeS9lcy9saXN0ZW5lcnMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21pbmlhcHAtaGlzdG9yeS9lcy9yb3V0ZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL21pbmlhcHAtcmVuZGVyZXIvbGliL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9taW5pYXBwLXJlbmRlcmVyL2xpYi9taW5pYXBwUmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL29taXQuanMvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3BhdGgtdG8tcmVnZXhwL2Rpc3QuZXMyMDE1L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9wcm9jZXNzL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3F1ZXJ5LXN0cmluZy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LWFwcC1yZW5kZXJlci9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC1hcHAtcmVuZGVyZXIvbGliL2luaXRpYWxEYXRhLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYXgtYXBwLXJlbmRlcmVyL2xpYi9wYXJzZVNlYXJjaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LWFwcC1yZW5kZXJlci9saWIvcmVuZGVyZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC1hcHAtcmVuZGVyZXIvbm9kZV9tb2R1bGVzL2NyZWF0ZS11c2Utcm91dGVyL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LWdldC1lbGVtZW50LWJ5LWlkL2xpYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LWltYWdlL2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYXgtaW1hZ2UvZXMvbWluaWFwcC1ydW50aW1lL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYXgtaW1hZ2UvZXMvdHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC1pbWFnZS9lcy91dGlscy9lbXB0eVNvdXJjZS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LWltYWdlL2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LWltYWdlL2VzL3dlZXgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC1yZWZyZXNoY29udHJvbC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC1zY3JvbGx2aWV3L2VzL2luZGV4LmNzcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LXNjcm9sbHZpZXcvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC1zY3JvbGx2aWV3L2VzL21pbmlhcHAvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC1zY3JvbGx2aWV3L2VzL3Rocm90dGxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYXgtc2Nyb2xsdmlldy9lcy90aW1lci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LXNjcm9sbHZpZXcvZXMvdHlwZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC1zY3JvbGx2aWV3L2VzL3V0aWxzL3dyYXBEZWZhdWx0UHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LXNjcm9sbHZpZXcvZXMvd2ViL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYXgtc2Nyb2xsdmlldy9lcy93ZWV4L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYXgtc2V0LW5hdGl2ZS1wcm9wcy9saWIvZmxleGJveC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LXNldC1uYXRpdmUtcHJvcHMvbGliL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYXgtdGV4dC9lcy9pbmRleC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC10ZXh0L2VzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYXgtdGV4dC9lcy9taW5pYXBwLXJ1bnRpbWUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC10ZXh0L2VzL3R5cGVzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYXgtdGV4dC9lcy91dGlscy93cmFwRGVmYXVsdFByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC10ZXh0L2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LXRleHQvZXMvd2VleC9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LXRleHRpbnB1dC9lcy9pbmRleC5jc3MiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC10ZXh0aW5wdXQvZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC10ZXh0aW5wdXQvZXMva2V5Ym9hcmRUeXBlTWFwLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYXgtdmlkZW8vZXMvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC12aWRlby9lcy9taW5pYXBwLXJ1bnRpbWUvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC12aWRlby9lcy90eXBlcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LXZpZGVvL2VzL3V0aWxzL3dyYXBEZWZhdWx0UHJvcGVydGllcy5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LXZpZGVvL2VzL3dlYi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LXZpZGVvL2VzL3dlZXgvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC12aWV3L2VzL2NvbW1vbi9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LXZpZXcvZXMvaW5kZXguY3NzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYXgtdmlldy9lcy9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4LXZpZXcvZXMvbWluaWFwcC9hbGkuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC12aWV3L2VzL21pbmlhcHAvd2VjaGF0LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yYXgtdmlldy9lcy91dGlscy93cmFwRGVmYXVsdFByb3BlcnRpZXMuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JheC9kaXN0L3JheC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmF4L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWdlbmVyYXRvci1ydW50aW1lL3J1bnRpbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3Jlc29sdmUtcGF0aG5hbWUvZXNtL3Jlc29sdmUtcGF0aG5hbWUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NwbGl0LW9uLWZpcnN0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHJpY3QtdXJpLWVuY29kZS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvc3R5bGUtdW5pdC9saWIvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3RpbnktaW52YXJpYW50L2Rpc3QvdGlueS1pbnZhcmlhbnQuZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90aW55LXdhcm5pbmcvZGlzdC90aW55LXdhcm5pbmcuZXNtLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy92YWx1ZS1lcXVhbC9lc20vdmFsdWUtZXF1YWwuanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9zcmMvYXBwLmpzIiwid2VicGFjazovLy8uL3NyYy9hcHAuanNvbiIsIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvSG9tZS9pbmRleC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL3BhZ2VzL2FjY2VsZXJvbWV0ZXIvaW5kZXgudHN4Iiwid2VicGFjazovLy8uL3NyYy9wYWdlcy9hY3Rpb24tc2hlZXQvaW5kZXgudHN4Iiwid2VicGFjazovLy8uL3NyYy9wYWdlcy9hbGVydC9pbmRleC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL3BhZ2VzL2FuaW1hdGlvbi9pbmRleC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL3BhZ2VzL2FwcGxpY2F0aW9uL2luZGV4LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvYXVkaW8vaW5kZXgudHN4Iiwid2VicGFjazovLy8uL3NyYy9wYWdlcy9hdXRob3JpemUvaW5kZXgudHN4Iiwid2VicGFjazovLy8uL3NyYy9wYWdlcy9jYW5pdXNlL2luZGV4LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvY2FudmFzL2luZGV4LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvY2xpcGJvYXJkL2luZGV4LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvY29uZmlybS9pbmRleC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL3BhZ2VzL2VsZW1lbnQvaW5kZXgudHN4Iiwid2VicGFjazovLy8uL3NyYy9wYWdlcy9maWxlL2luZGV4LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvaW1hZ2UvaW5kZXgudHN4Iiwid2VicGFjazovLy8uL3NyYy9wYWdlcy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW5kZXgudHN4Iiwid2VicGFjazovLy8uL3NyYy9wYWdlcy9sb2FkaW5nL2luZGV4LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvbG9jYXRpb24vaW5kZXgudHN4Iiwid2VicGFjazovLy8uL3NyYy9wYWdlcy9tYWtlLXBob25lLWNhbGwvaW5kZXgudHN4Iiwid2VicGFjazovLy8uL3NyYy9wYWdlcy9uYXZpZ2F0ZS9pbmRleC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL3BhZ2VzL25hdmlnYXRpb24tYmFyL2luZGV4LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvcGFnZS1zY3JvbGwtdG8vaW5kZXgudHN4Iiwid2VicGFjazovLy8uL3NyYy9wYWdlcy9wdWxsLWRvd24tcmVmcmVzaC9pbmRleC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL3BhZ2VzL3JlY29yZGVyL2luZGV4LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvcmVxdWVzdC9pbmRleC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL3BhZ2VzL3NjYW4vaW5kZXgudHN4Iiwid2VicGFjazovLy8uL3NyYy9wYWdlcy9zaGFyZS9pbmRleC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL3BhZ2VzL3N0b3JhZ2UvaW5kZXgudHN4Iiwid2VicGFjazovLy8uL3NyYy9wYWdlcy9zdWJzY3JpYmUtbWVzc2FnZS9pbmRleC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL3BhZ2VzL3N5c3RlbS1pbmZvL2luZGV4LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvdGFiLWJhci9pbmRleC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL3BhZ2VzL3RvYXN0L2luZGV4LnRzeCIsIndlYnBhY2s6Ly8vLi9zcmMvcGFnZXMvdmlicmF0ZS9pbmRleC50c3giLCJ3ZWJwYWNrOi8vLy4vc3JjL3BhZ2VzL3ZpZGVvL2luZGV4LnRzeCJdLCJuYW1lcyI6WyJ0eXBlIiwiaXNEaW5nZGluZ01pbmlhcHAiLCJpc1VuZGVmIiwiZGQiLCJvbkNoYW5nZSIsIm9mZkNoYW5nZSIsIm15IiwiY29tcGxldGUiLCJjYiIsInN3YW4iLCJ0dCIsIndlYk1vZHVsZSIsImt1YWlTaG91TW9kdWxlIiwid2VDaGF0TW9kdWxlIiwiYnl0ZWRhbmNlTW9kdWxlIiwiYWxpTWluaUFwcE1vZHVsZSIsImJhaUR1TW9kdWxlIiwia3MiLCJ3eCIsIkNPTlRBSU5FUl9OQU1FIiwiV0VDSEFUIiwiQUxJUEFZIiwiQllURSIsIldFQiIsIkJBSURVIiwiS1dBSSIsIl9leHRlbmRzIiwiT2JqZWN0IiwiaSIsImFyZ3VtZW50cyIsInNvdXJjZSIsInRhcmdldCIsInByb21pc2lmeUFyZyIsImFwaSIsInN1Y2Nlc3MiLCJyZXNvbHZlIiwib25TdWNjZXNzIiwiZmFpbCIsInJlamVjdCIsIm9uRmFpbCIsIm9uQ29tcGxldGUiLCJfZXhjbHVkZWQiLCJzb3VyY2VLZXlzIiwia2V5IiwiZXhjbHVkZWQiLCJzdHlsZU91dCIsIl9vcmlnaW5hbCIsImlucHV0Iiwib3V0cHV0Iiwic3R5bGVJbiIsIl9yZWYiLCJvcHRpb25zIiwiX3JlZiRfZXh0IiwiX2V4dCIsInJlc3QiLCJfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZSIsInNob3dBY3Rpb25TaGVldCIsImFyZ3MiLCJub3JtYWxpemUiLCJlcnIiLCJ0YXBJbmRleCIsImZvcm1hdFJlc3BvbnNlIiwicmVzIiwiaW5kZXgiLCJjbHNQcmVmaXgiLCJzdHlsZXMiLCJzdHlsZUVsZW1lbnQiLCJhY3Rpb25TaGVldEVsZW1lbnQiLCJoaWRlRm4iLCJoaWRlQ2FsbGJhY2siLCJkb2N1bWVudCIsIm1hc2tFbGUiLCJjb250YWluZXJFbGUiLCJpdGVtTGlzdCIsIl9sb29wIiwiaXRlbUVsZSIsImNhbmNlbEVsZSIsInNldFRpbWVvdXQiLCJjYWxsYmFjayIsImV4cG9ydHMiLCJfbWluaWFwcEVudkFwcCIsInJlcXVpcmUiLCJfY29uc3RhbnQiLCJfY29tbW9uIiwiX2RlZmF1bHQiLCJfcHJvbWlzaWZ5IiwiX3N0eWxlT3B0aW9ucyIsImFsZXJ0Iiwic2hvd0NhbmNlbCIsImNvbmZpcm1UZXh0IiwiYnV0dG9uVGV4dCIsImNvbnRlbnQiLCJ0aXRsZSIsInByb21pc2lmeSIsInN0eWxlT3B0aW9ucyIsImNvbmZpcm0iLCJhbmltYXRpb24iLCJnZXRNZXJnZWRPcHRpb25zIiwiX3N0ZXAiLCJfZXhwb3J0Iiwib3B0cyIsImNyZWF0ZUFuaW1hdGlvbiIsIm5vcm1hbGl6ZUNyZWF0ZVRyYW5zaXRpb24iLCJjcmVhdGVUcmFuc2l0aW9uIiwibWVyZ2VkT3B0aW9ucyIsImR1cmF0aW9uIiwidGltaW5nRnVuY3Rpb24iLCJkZWxheSIsInRyYW5zZm9ybU9yaWdpbiIsInZhbHVlIiwiU3RyaW5nIiwicG9zIiwiaXNWYWxpZFdvcmQiLCJjb2RlIiwic2tpcFNwYWNlIiwiZWF0IiwicGFyc2VBdG9tIiwibmFtZSIsImlzUmVhZEFyZ3MiLCJpc0V4cGVjdFdvcmQiLCJjaHVua1N0YXJ0Iiwic3RyIiwiaGFzSW52YWxpZCIsImdldFZhbGlkQXJnIiwidW5pdCIsIm1hdGNoIiwiTnVtYmVyIiwicmVzdWx0IiwiX3JlZiRmcm9tIiwiZnJvbSIsIl9yZWYkdG8iLCJ0byIsImFuaW1hdGlvbk9wdGlvbnMiLCJhcHBseVRyYW5zZm9ybSIsInBhcnNlVHJhbnNmb3JtIiwiQXJyYXkiLCJBTklNQVRJT05fUlVOTklORyIsIkFOSU1BVElPTl9DQU5DRUwiLCJBTklNQVRJT05fT1JJR0lOQUxfU1RZTEUiLCJmb3JjZSIsImFjdGlvbnMiLCJhY3Rpb24iLCJmbiIsImhhbmRsZUFjdGlvbnNRdWV1ZSIsIm9uRmluaXNoIiwiZG9tIiwiY2xlYXJUaW1lb3V0IiwidHJhbnNpdGlvblByb3BlcnR5IiwidHJhbnNpdGlvbkR1cmF0aW9uIiwidHJhbnNpdGlvbkRlbGF5IiwidHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uIiwiYXBwbHlBY3Rpb24iLCJfYWN0aW9uJG9wdGlvbiIsInRyYW5zaXRpb24iLCJ0cmFuc2Zvcm0iLCJhbmltYXRlIiwiX2FuaW1hdGUkYXJncyIsInByb3BlcnR5IiwiY29zdCIsImlzTmFOIiwic2F2ZUNhbmNlbCIsIkFuaW1hdGlvbkltcGwiLCJfcHJvdG8iLCJhcHBseVdlYkFuaW1hdGlvbiIsIl90aGlzIiwiYW5pbWF0ZXMiLCJvcHRpb24iLCJub3JtYWxpemVVbml0IiwiYW5nbGUiLCJ4IiwieSIsInoiLCJzeCIsInN5Iiwic3oiLCJzY2FsZSIsInR4IiwidHkiLCJ0eiIsInRyYW5zbGF0aW9uIiwiYXgiLCJheSIsImEiLCJiIiwiYyIsImQiLCJhMSIsImIxIiwiYzEiLCJkMSIsImEyIiwiYjIiLCJjMiIsImQyIiwiYTMiLCJiMyIsImMzIiwiZDMiLCJhNCIsImI0IiwiYzQiLCJkNCIsImdldEFwcCIsImdldEN1cnJlbnRQYWdlcyIsImdldExhdW5jaE9wdGlvbnNTeW5jIiwib25FcnJvciIsIm9mZkVycm9yIiwib25VbmhhbmRsZWRSZWplY3Rpb24iLCJvZmZVbmhhbmRsZWRSZWplY3Rpb24iLCJxdWVyeSIsImhhc2giLCJ3aW5kb3ciLCJwYWdlSWQiLCJwYXRoIiwiaW5mbyIsImdlbiIsIlByb21pc2UiLCJzZWxmIiwiYXN5bmNHZW5lcmF0b3JTdGVwIiwiX25leHQiLCJFdmVudHMiLCJfcXVldWUiLCJfYXN5bmNUb0dlbmVyYXRvciIsIl9jb250ZXh0IiwiaXRlbSIsIm9uY2UiLCJoYW5kbGVyIiwiX3RoaXMyIiwiY3JlYXRlQXVkaW9Db250ZXh0IiwicHJvcHMiLCJkZXNjcmlwdG9yIiwiX2RlZmluZVByb3BlcnRpZXMiLCJDb25zdHJ1Y3RvciIsIklubmVyQXVkaW9Db250ZXh0IiwieGhyIiwiSlNPTiIsIl90aGlzJF9ldmVudHMkZXZlbnRzIiwiX3RoaXMkX2V2ZW50cyRldmVudHMkIiwiX3RoaXMkX2V2ZW50cyRldmVudHMyIiwiX3RoaXMkX2V2ZW50cyRldmVudHMzIiwiX3RoaXMkX2V2ZW50cyRldmVudHM0IiwiX3RoaXMkX2V2ZW50cyRldmVudHM1IiwiX3RoaXMkX2V2ZW50cyRldmVudHM2IiwiX3RoaXMkX2V2ZW50cyRldmVudHM3IiwiX3RoaXMkX2V2ZW50cyRldmVudHM4IiwiX3RoaXMkX2V2ZW50cyRldmVudHM5IiwiX3RoaXMkX2V2ZW50cyRldmVudHMxMCIsIl90aGlzJF9ldmVudHMkZXZlbnRzMTEiLCJfdGhpcyRfZXZlbnRzJGV2ZW50czEyIiwiX3RoaXMkX2V2ZW50cyRldmVudHMxMyIsIl90aGlzJF9ldmVudHMkZXZlbnRzMTQiLCJfdGhpcyRfZXZlbnRzJGV2ZW50czE1IiwiX3RoaXMkX2V2ZW50cyRldmVudHMxNiIsIl90aGlzJF9ldmVudHMkZXZlbnRzMTciLCJBdWRpb0NvbnRleHQiLCJzaW5nbGVBdWRpb0NvbnRleHQiLCJfY3JlYXRlQ2xhc3MiLCJnZXQiLCJzZXQiLCJfdGhpcyRfc291cmNlIiwiX3RoaXMkX2J1ZmZlciIsIl90aGlzJF9nYWluTm9kZSIsIl90aGlzJF9nYWluTm9kZSRnYWluIiwiX3RoaXMkX3NvdXJjZTIiLCJfdGhpcyRfc291cmNlMiRwbGF5YmEiLCJjcmVhdGVJbm5lckF1ZGlvQ29udGV4dCIsInNpbmdsZUlubmVyQXVkaW9Db250ZXh0Iiwic2NvcGUiLCJfc3VjY2VzcyIsIl9mYWlsIiwiX2NvbXBsZXRlIiwic2NvcGVNYXAiLCJhdXRoX2Jhc2UiLCJhdXRoX3poaW1hIiwic2NvcGVzIiwiYWZ0ZXJPcHRpb25zIiwic3VwcG9ydEluZm8iLCJhcHBsaWNhdGlvbiIsInN1cHBvcnQiLCJjYW52YXMiLCJjcmVhdGVDb250ZXh0IiwiYWNjZWxlcm9tZXRlciIsImNsaXBib2FyZCIsImdldENsaXBib2FyZCIsInNldENsaXBib2FyZCIsImdldEluZm8iLCJnZXRJbmZvU3luYyIsImZpbGUiLCJnZXRTYXZlZEluZm8iLCJnZXRTYXZlZExpc3QiLCJvcGVuRG9jdW1lbnQiLCJyZW1vdmVTYXZlZCIsInNhdmUiLCJkb3dubG9hZCIsInVwbG9hZCIsInRvYXN0IiwibG9hZGluZyIsInNob3dMb2FkaW5nIiwiaGlkZUxvYWRpbmciLCJzdGFydFB1bGxEb3duUmVmcmVzaCIsInN0b3BQdWxsRG93blJlZnJlc2giLCJlbGVtZW50IiwibG9jYXRpb24iLCJnZXRMb2NhdGlvbiIsIm9wZW5Mb2NhdGlvbiIsImltYWdlIiwiY2hvb3NlSW1hZ2UiLCJjb21wcmVzc0ltYWdlIiwiZ2V0SW1hZ2VJbmZvIiwicHJldmlld0ltYWdlIiwic2F2ZUltYWdlIiwibmF2aWdhdGUiLCJwdXNoIiwiYmFjayIsInJlcGxhY2UiLCJyZUxhdW5jaCIsImdvIiwicmVxdWVzdCIsInN0b3JhZ2UiLCJnZXRTdG9yYWdlIiwic2V0U3RvcmFnZSIsInJlbW92ZVN0b3JhZ2UiLCJnZXRTdG9yYWdlU3luYyIsInNldFN0b3JhZ2VTeW5jIiwicmVtb3ZlU3RvcmFnZVN5bmMiLCJjYW5JVXNlIiwiYXBpTmFtZSIsImNhbnZhc0lkIiwiY2FudmFzT3B0aW9ucyIsImNhbnZhc0NvbnRleHQiLCJfY2xlYXJSZWN0IiwiX2xlbiIsIl9rZXkiLCJfZmlsbCIsIl9sZW4yIiwiX2tleTIiLCJfZmlsbFJlY3QiLCJfbGVuMyIsIl9rZXkzIiwiX2ZpbGxUZXh0IiwiX2xlbjQiLCJfa2V5NCIsIl9zdHJva2UiLCJfbGVuNSIsIl9rZXk1IiwiX3N0cm9rZVJlY3QiLCJfbGVuNiIsIl9rZXk2IiwiX3N0cm9rZVRleHQiLCJfbGVuNyIsIl9rZXk3IiwiX2NhbnZhc09wdGlvbnMkdHlwZSIsImNhbnZhc05vZGUiLCJfY2FudmFzT3B0aW9ucyRjb250ZXgiLCJjb250ZXh0Iiwibm9kZSIsInNpemUiLCJub3JtYWxpemVHZXQiLCJub3JtYWxpemVTZXQiLCJ0ZXh0IiwiX3JlZiR0ZXh0IiwiX3JlZiRzdWNjZXNzIiwiX3JlZiRmYWlsIiwiX3JlZiRjb21wbGV0ZSIsImlzT1MiLCJuYXZpZ2F0b3IiLCJjcmVhdGVUZXh0QXJlYSIsInRleHRBcmVhIiwic2VsZWN0VGV4dCIsInJhbmdlIiwic2VsZWN0aW9uIiwiY29weVRvQ2xpcGJvYXJkIiwicGFyYW1zIiwiY29uZmlybUJ1dHRvblRleHQiLCJjYW5jZWxCdXR0b25UZXh0IiwiY2FuY2VsVGV4dCIsImNhbmNlbCIsImNvbmZpcm1FbGVtZW50IiwidGl0bGVFbGUiLCJjb250ZW50RWxlIiwib3BlcmF0ZUVsZSIsImNhbmNlbEJ1dHRvbiIsImNvbmZpcm1CdXR0b24iLCJnZXRCb3VuZGluZ0NsaWVudFJlY3QiLCJyZXQiLCJnZXRTY3JvbGxPZmZzZXQiLCJzY3JvbGxMZWZ0Iiwic2Nyb2xsVG9wIiwic3R5bGVCb3VuZGluZ0NsaWVudFJlY3RSZXNwb25zZSIsImRhdGEiLCJsZWZ0IiwiaXNOb25lIiwicmlnaHQiLCJ0b3AiLCJib3R0b20iLCJ3aWR0aCIsImhlaWdodCIsInZhbCIsImVsIiwiaXNXZWIiLCJpc05vZGUiLCJwcm9jZXNzIiwiaXNXZWV4IiwiV1hFbnZpcm9ubWVudCIsImlzS3Jha2VuIiwiaXNNaW5pQXBwIiwiaXNCeXRlRGFuY2VNaWNyb0FwcCIsImlzQmFpZHVTbWFydFByb2dyYW0iLCJpc0t1YWlTaG91TWluaVByb2dyYW0iLCJpc1dlQ2hhdE1pbmlQcm9ncmFtIiwiaXNRdWlja0FwcCIsImdsb2JhbCIsImRvd25sb2FkRmlsZSIsInVybCIsImhlYWRlciIsIl9kb3dubG9hZEZpbGUiLCJmaWxlUGF0aCIsImRpZ2VzdEFsZ29yaXRobSIsImdldEZpbGVJbmZvIiwiYXBGaWxlUGF0aCIsImdldFNhdmVkRmlsZUluZm8iLCJnZXRTYXZlZEZpbGVMaXN0IiwiZmlsZVR5cGUiLCJvcGVuRG9jdW1lbnRBcGkiLCJyZW1vdmVTYXZlZEZpbGUiLCJ0ZW1wRmlsZVBhdGgiLCJzYXZlRmlsZSIsImZpbGVOYW1lIiwiX29wdGlvbnMkZmlsZVR5cGUiLCJmb3JtRGF0YSIsInVwbG9hZEZpbGUiLCJ0YXNrIiwicHJvZ3Jlc3NDYWxsYmFjayIsInByb2dyZXNzIiwidG90YWxCeXRlc1dyaXR0ZW4iLCJ0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlIiwidG90YWxCeXRlc1NlbnQiLCJ0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQiLCJhYm9ydCIsIm9uUHJvZ3Jlc3NVcGRhdGUiLCJvZmZQcm9ncmVzc1VwZGF0ZSIsInRpbWVvdXQiLCJmb3JtYXRSZXMiLCJfb3B0aW9ucyIsImZpbGVMaXN0IiwiY3JlYXRlVGltZSIsInNhdmVkRmlsZVBhdGgiLCJibG9iIiwiYXJyIiwiYmFzZTY0RGF0YSIsIm1pbWVTdHIiLCJtaW1lIiwiYnN0ciIsImF0b2IiLCJuIiwidThhcnIiLCJkYXRhVVJMdG9CbG9iIiwidGhlQmxvYiIsImJsb2JUb0ZpbGUiLCJoZWFkZXJzIiwiaGVhZGVyTWFwIiwicGFydHMiLCJsaW5lIiwiX2hlYWRlciIsInBhcmFtIiwiYmFzZTY0dG9GaWxlIiwiYm9keSIsIkFjY2VwdCIsImhlYWRlcnNSZWNlaXZlZENhbGxiYWNrIiwiZ2V0SGVhZGVyTWFwIiwic3RhdHVzQ29kZSIsImVyck1zZyIsImV2dCIsIk1hdGgiLCJvbkhlYWRlcnNSZWNlaXZlZCIsIm9mZkhlYWRlcnNSZWNlaXZlZCIsImN1cnJlbnQiLCJ0ZW1wRmlsZXMiLCJ0ZW1wRmlsZVBhdGhzIiwiY291bnQiLCJfYXJncyIsIl9hcmdzJGNvdW50IiwiX2FyZ3Mkc3VjY2VzcyIsIl9hcmdzJGZhaWwiLCJfYXJncyRjb21wbGV0ZSIsImNob29zZU1lZGlhIiwiYWNjZXB0IiwiZmlsZXMiLCJzcmMiLCJzZXRJbWFnZUluZm8iLCJjaGVja1RpbWVyIiwiY2xlYXIiLCJjbGVhckludGVydmFsIiwic2V0SW50ZXJ2YWwiLCJfcmVmJHVybHMiLCJ1cmxzIiwiX3JlZjIkY3VycmVudCIsIl9yZWYyIiwicGFnZUluZGV4RWxlIiwic3dpcGVyRWxlIiwiZGFtcCIsImNsaWVudFdpZHRoIiwic3RhcnRYIiwiZSIsIm1vdmVYIiwiZW5kWCIsInN3aXBlckl0ZW1FbGUiLCJpbWFnZUVsZSIsInBvaW50MSIsInBvaW50MiIsInhMZW4iLCJ5TGVuIiwicGFnZVkiLCJ0b3VjaERpc3RhbmNlIiwicGluY2hTY2FsZSIsImltYWdlU2NhbGUiLCJfZGQiLCJfbXkiLCJjcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlciIsIm1hcmdpbnMiLCJyb290Iiwicm9vdE1hcmdpbiIsImJ1aWxkTWFyZ2luU3RyIiwidGhyZXNob2xkIiwidGhyZXNob2xkcyIsIkludGVyc2VjdGlvbk9ic2VydmVycyIsInJlbGF0aXZlIiwidGFyZ2V0cyIsIm9ic2VydmVyIiwiZW50cmllcyIsImJvdW5kaW5nQ2xpZW50UmVjdCIsImVudHJ5IiwiaW50ZXJzZWN0aW9uUmF0aW8iLCJpbnRlcnNlY3Rpb25SZWN0IiwicmVsYXRpdmVSZWN0IiwidGltZSIsIm5vcm1hbGl6ZUhpZGUiLCJub3JtYWxpemVTaG93IiwiX3JlZiRjb250ZW50IiwiY2lyY2xlIiwiX3RleHQiLCJjaG9vc2VMb2NhdGlvbiIsIm5vcm1hbGl6ZUNob29zZUxvY2F0aW9uIiwibm9ybWFsaXplR2V0TG9jYXRpb24iLCJub3JtYWxpemVPcGVuTG9jYXRpb24iLCJsYXRpdHVkZSIsImxvbmdpdHVkZSIsImFjY3VyYWN5IiwiaG9yaXpvbnRhbEFjY3VyYWN5IiwicG9zaXRpb24iLCJtZXNzYWdlIiwibWFrZVBob25lQ2FsbCIsInBob25lTnVtYmVyIiwiZXh0IiwibnVtYmVyIiwiZGVsdGEiLCJzdGVwIiwic3dpdGNoVGFiIiwiaGlzdG9yeSIsIl9vcHRpb25zJGlzSGFzaCIsImlzSGFzaCIsIl9vcHRpb25zJHJlZnJlc2giLCJyZWZyZXNoIiwicGFnZV9pZCIsIl91cmwiLCJfcmVmJGlzSGFzaCIsIl9yZWYkcmVmcmVzaCIsInNldE5hdmlnYXRpb25CYXJDb2xvciIsInNldE5hdmlnYXRpb25CYXJUaXRsZSIsIm5vcm1hbGl6ZVNldE5hdmlnYXRpb25CYXJDb2xvciIsIm5vcm1hbGl6ZVNldE5hdmlnYXRpb25CYXJUaXRsZSIsImdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3QiLCJzZWxlY3RvciIsInJvb3RFbGVtZW50IiwibXNnIiwiZWxlIiwiX21zZyIsIm1heFNjcm9sbFRvcCIsInNwZWVkIiwiaGFuZGxlU2Nyb2xsIiwicmVxdWVzdEFuaW1hdGlvbkZyYW1lIiwiRGF0ZSIsIm5leHRUb3AiLCJub3JtYWxpemVTdGFydCIsImNvbnNvbGUiLCJub3JtYWxpemVTdG9wIiwib25QdWxsRG93blJlZnJlc2giLCJQdWxsRG93blJlZnJlc2giLCJ0ZXh0QWxpZ24iLCJkaXNwbGF5IiwiZmxleFdyYXAiLCJhbGlnbkl0ZW1zIiwianVzdGlmeUNvbnRlbnQiLCJ6SW5kZXgiLCJyZWZyZXNoTG9hZGluZ1N0eWxlIiwibWFyZ2luUmlnaHQiLCJjb2xvciIsInJlZnJlc2hUZXh0IiwiZm9udFNpemUiLCJyZWZyZXNoTG9hZGluZ0ltZyIsIl9nZXRSZWZyZXNoIiwiX2VsZW1lbnQiLCJfc3RhcnRQb3MiLCJfdHJhbnNpdGlvbkhlaWdodCIsIm5vcm1hbGl6ZVN3aXRjaCIsIl9yZWYkcHVsbFJlZnJlc2giLCJwdWxsUmVmcmVzaCIsIl9yZWYkdHJpZ2dlckRpc3RhbmNlIiwidHJpZ2dlckRpc3RhbmNlIiwiX3JlZiRldmVudENhbGxiYWNrIiwiZXZlbnRDYWxsYmFjayIsInB1bGxEb3duUmVmcmVzaCIsIl9zdGFydFB1bGxEb3duUmVmcmVzaCIsIl9zdG9wUHVsbERvd25SZWZyZXNoIiwiZ2V0UmVjb3JkZXJNYW5hZ2VyIiwiZ2V0VXNlck1lZGlhIiwicmF3R2V0VXNlck1lZGlhIiwiZ2V0QXVkaW9NZWRpYSIsImF1ZGlvIiwicmVjb3JkZXJNYW5nZXIiLCJfdGhpczMiLCJmaWxlU2l6ZSIsIl90aGlzNCIsIl90aGlzNSIsInNpbmdsZVJlY29yZGVyTWFuYWdlciIsIm1ldGhvZCIsImRhdGFUeXBlIiwiaHR0cFJlcXVlc3QiLCJxcyIsImVuY29kZVVSSUNvbXBvbmVudCIsInN0cmluZ2lmeVFTIiwib2JqIiwiaXNPYmplY3QiLCJrZXlMaXN0IiwiaGVhZGVyS2V5IiwidmFsaWRhdGVTdGF0dXMiLCJzdGF0dXMiLCJFTVBUWV9PQkpFQ1QiLCJERUZBVUxUX1JFUVVFU1RfT1BUSU9OUyIsImpzb25wQ2FsbGJhY2tQcm9wIiwianNvbnBDYWxsYmFjayIsImlzSnNvbnAiLCJfb3B0aW9ucyRtZXRob2QiLCJhZGFwdGVyUmVzcG9uc2UiLCJfcmVzJGVyck1zZyIsImVycm9yIiwiZXJyb3JNZXNzYWdlIiwiYWZ0ZXJSZXMiLCJjb250YWluZXJOYW1lIiwiX3JlcyRkYXRhIiwibm9ybWFsaXplSGVhZGVycyIsIl92YWxpZGF0ZVN0YXR1cyIsIl9yZXMiLCJfZXh0ZW5kczIiLCJERUZBVUxUX1RJTUVPVVQiLCJERUZBVUxUX0pTT05fQ0FMTEJBQ0siLCJERUZBVUxUX0pTT05QX09QVElPTlMiLCJFUlJPUl9SRVFVRVNUX0FCT1JUIiwiRVJST1JfUkVRVUVTVF9USU1FT1VUIiwiRVJST1JfUkVRVUVTVF9OT1RfU1VQUE9SVCIsIl9qc29ucENhbGxiYWNrUHJvcCRqcyIsIndpdGhDcmVkZW50aWFscyIsInNjcmlwdFVybCIsImFwcGx5UGFyYW1Ub1VSTCIsInNjcmlwdCIsImNsZWFuIiwidGltZXIiLCJjaGVja0lzQXBwbHlEYXRhVG9VUkwiLCJyZXF1ZXN0RGF0YSIsImlzUGxhaW5PYmplY3QiLCJvYmplY3QyanNvbiIsIm5vcm1hbGl6ZWQiLCJoaWRlQWxidW0iLCJzY2FuVHlwZSIsIm9ubHlGcm9tQ2FtZXJhIiwic2NhbkNvZGUiLCJTQ0FOVFlQRU1BUCIsImJhckNvZGUiLCJxckNvZGUiLCJkbUNvZGUiLCJwZGY0MTdDb2RlIiwic2hvd1NoYXJlTWVudSIsImhpZGVTaGFyZU1lbnUiLCJpbWFnZVVybCIsIm1lbnVzIiwiX29wdGlvbnMkd2l0aFNoYXJlVGljIiwid2l0aFNoYXJlVGlja2V0IiwiZmFpbEZuIiwiZm9ybWF0R2V0U3RvcmFnZVJlcyIsImZvcm1hdFN5c3RlbUluZm9Bc3luYyIsIl9nZXRJbmZvIiwiZm9ybWF0U3lzdGVtSW5mbyIsImZvcm1hdExhbmd1YWdlIiwiZmwiLCJsYW5ndWFnZSIsImZvcm1hdFJlc3VsdCIsInBpeGVsUmF0aW8iLCJzY3JlZW5XaWR0aCIsInNjcmVlbkhlaWdodCIsIndpbmRvd1dpZHRoIiwid2luZG93SGVpZ2h0IiwidmVyc2lvbiIsInBsYXRmb3JtIiwiX25hdmlnYXRvciIsImdldFBsYXRmb3JtIiwiaGlkZVRhYkJhciIsIm5vcm1hbGl6ZUhpZGVUYWJCYXJPcHRpb25zIiwic2hvd1RhYkJhciIsIm5vcm1hbGl6ZVNob3dUYWJCYXJPcHRpb25zIiwiaGlkZSIsImhpZGVUb2FzdCIsInNob3ciLCJzaG93VG9hc3QiLCJpY29uIiwibm9uZSIsImljb25NYXAiLCJMT05HX0RFTEFZIiwiU0hPUlRfREVMQVkiLCJjb250YWluZXIiLCJiYWNrZ3JvdW5kQ29sb3IiLCJib3hTaXppbmciLCJtYXhXaWR0aCIsInBhZGRpbmciLCJmbGV4RGlyZWN0aW9uIiwibGluZUhlaWdodCIsImZvbnRXZWlnaHQiLCJib3JkZXJSYWRpdXMiLCJ3ZWJraXRUcmFuc2l0aW9uIiwid2Via2l0VHJhbnNmb3JtIiwibWFyZ2luQm90dG9tIiwiaW5uZXJUb2FzdCIsImhpZGVUaW1lciIsInRvYXN0SW5mbyIsInNob3dUb2FzdFdpbmRvdyIsInN3aXRjaFRvTmV4dCIsImhpZGVUb2FzdFdpbmRvdyIsInF1ZXVlIiwiaXNQcm9jZXNzaW5nIiwidG9hc3RXaW4iLCJ0b2FzdENvbnRlbnQiLCJ0b2FzdEljb24iLCJ2aWJyYXRlU2hvcnQiLCJ2aWJyYXRlTG9uZyIsIl92aWJyYXRlTG9uZyIsIl92aWJyYXRlU2hvcnQiLCJFcnJvciIsIm1lZGlhVHlwZSIsImltYWdlRm4iLCJ2aWRlb0ZuIiwiY2hvb3NlVmlkZW8iLCJjcmVhdGVWaWRlb0NvbnRleHQiLCJzaXplVHlwZSIsInNvdXJjZVR5cGUiLCJtYXhEdXJhdGlvbiIsImlucHV0RWxlbWVudCIsIm11bHRpcGxlIiwiaW5wdXRDcmVhdGVBbmRBcHBlbmQiLCJNb3VzZUV2ZW50cyIsImVudW1lcmFibGUiLCJjb25maWd1cmFibGUiLCJ3cml0YWJsZSIsIm1vZHVsZSIsInIiLCJsIiwidCIsIm8iLCJmIiwiX2Fzc2lnbiIsIl9hc3NpZ24yIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsImRlZmF1bHQiLCJfX2Fzc2lnbiIsInMiLCJhZGRQcm92aWRlciIsIl9hIiwiYXBwQ29uZmlnIiwid3JhcHBlclJvdXRlQ29tcG9uZW50IiwiZ2V0U2VhcmNoUGFyYW1zIiwiY3JlYXRlRWxlbWVudCIsIl9iIiwiYXBwIiwiX2MiLCJwYXJzZVNlYXJjaFBhcmFtcyIsIndyYXBwZXJQYWdlQ29tcG9uZW50IiwiV3JhcHBlcmVkUGFnZUNvbXBvbmVudCIsInNlYXJjaFBhcmFtcyIsImNsYXNzTmFtZXMiLCJTdG9yYWdlT2JqZWN0IiwibGVuZ3RoIiwiYXJyYXkiLCJfcGFyc2UiLCJoYXNPd24iLCJyZXN1bHRTZXQiLCJvYmplY3QiLCJTUEFDRSIsImFyZ1R5cGUiLCJfcGFyc2VTdHJpbmciLCJfcGFyc2VBcnJheSIsIl9wYXJzZU9iamVjdCIsIl9wYXJzZU51bWJlciIsImxlbiIsImNsYXNzU2V0IiwibGlzdCIsImRlZmluZSIsImNsYXNzZXMiLCJhcmciLCJpbm5lciIsInVuaXZlcnNhbF9lbnZfMSIsImVudl8xIiwiY29uc3RhbnRzXzEiLCJ1dGlsc18xIiwiaGlzdG9yeV8xIiwicm91dGVyXzEiLCJwYWdlTGlmZUN5Y2xlc18xIiwiX2kiLCJjeWNsZXMiLCJjeWNsZSIsImVtaXQiLCJzaGFyZUluZm8iLCJnbG9iYWxFdmVudCIsIl9fd2VleF9yZXF1aXJlX18iLCJjdXJyZW50UGF0aE5hbWUiLCJldmVudCIsImFwcExpZmVDeWNsZXNfMSIsIm9uTGF1bmNoIiwib25TaG93Iiwib25IaWRlIiwib25UYWJJdGVtQ2xpY2siLCJvblBhZ2VOb3RGb3VuZCIsIm9uU2hhcmVBcHBNZXNzYWdlIiwicnVudGltZU1vZHVsZV8xIiwiY29sbGVjdEFwcExpZmVDeWNsZV8xIiwiREVGQVVMRV9BUFBfQ09ORklHIiwicm9vdElkIiwicm91dGVyIiwiY29uZmlnIiwibWVyZ2VEZWZhdWx0Q29uZmlnIiwiZGVmYXVsdENvbmZpZyIsImxvYWRSdW50aW1lTW9kdWxlcyIsImluaXRIaXN0b3J5IiwiY3JlYXRlQmFzZUFwcCIsImJhc2VuYW1lIiwiY3VzdG9tSGlzdG9yeSIsImxvY2F0aW9uXzEiLCJydW50aW1lIiwicGF0aG5hbWUiLCJ2aXNpYmlsdHlTdGF0ZSIsImhpc3RvcnlfMiIsIndpdGhSb3V0ZXIiLCJXcmFwcGVyIiwiQ29tcG9uZW50IiwiX19jcmVhdGVCaW5kaW5nIiwiazIiLCJtIiwiX19leHBvcnRTdGFyIiwicCIsInF1ZXJ5U3RyaW5nIiwibWluaWFwcF9oaXN0b3J5XzEiLCJyb3V0ZXMiLCJlbmhhbmNlV2l0aFJvdXRlcl8xIiwiZW1pdExpZmVDeWNsZXNfMSIsImNyZWF0ZUJhc2VBcHBfMSIsIm5hdGl2ZUV2ZW50TGlzdGVuZXJfMSIsImdldFNlYXJjaFBhcmFtc18xIiwidXNlRWZmZWN0IiwidXNlUGFnZVNob3ciLCJ1c2VQYWdlSGlkZSIsImNyZWF0ZUhpc3RvcnkiLCJnZXRIaXN0b3J5IiwiZW1pdExpZmVDeWNsZXMiLCJjb2xsZWN0QXBwTGlmZUN5Y2xlIiwid2l0aFBhZ2VMaWZlQ3ljbGUiLCJhZGRBcHBMaWZlQ3ljbGUiLCJwYXRoUmVkaXJlY3QiLCJyZWdpc3Rlck5hdGl2ZUV2ZW50TGlzdGVuZXJzIiwiYWRkTmF0aXZlRXZlbnRMaXN0ZW5lciIsInJlbW92ZU5hdGl2ZUV2ZW50TGlzdGVuZXIiLCJfX2V4dGVuZHMiLCJleHRlbmRTdGF0aWNzIiwiX19wcm90b19fIiwiX18iLCJ2aXNpYmxlTGlzdGVuZXJzIiwiYWRkUGFnZUxpZmVDeWNsZSIsIl9zdXBlciIsImNyZWF0ZVBhZ2VMaWZlQ3ljbGUiLCJwcmV2IiwiX19wYWdlSWQiLCJfX3Jlc3QiLCJSdW50aW1lTW9kdWxlIiwid3JhcHBlciIsIm1vZGlmeSIsImN1cnIiLCJydW50aW1lQVBJIiwic2V0UmVuZGVyUm91dGVyIiwiYWRkRE9NUmVuZGVyIiwibW9kaWZ5Um91dGVzIiwid3JhcHBlclJvdXRlclJlbmRlciIsIm1vZGlmeVJvdXRlc0NvbXBvbmVudCIsImJ1aWxkQ29uZmlnIiwiY2hpbGRyZW4iLCJDdXJyZW50UHJvdmlkZXIiLCJ0eXBlXzEiLCJwYXRoUmVkaXJlY3RfMSIsIlRBUkdFVF9QQVRIX1JFRyIsInRhcmdldFBhdGgiLCJ0YXJnZXRRdWVyeSIsImlzQ29uZmlybWVkIiwiaXNGdW5jdGlvbiIsInBhdGhUb1JlZ2V4cE1vZHVsZSIsImNhY2hlIiwiX2luaXRpYWxpemVkIiwiX3JvdXRlckNvbmZpZyIsImhhbmRsZXMiLCJlcnJvckhhbmRsZXIiLCJhZGRIYW5kbGUiLCJyZW1vdmVIYW5kbGUiLCJoYW5kbGVJZCIsInRyaWdnZXJIYW5kbGVzIiwiaGFuZGxlIiwiZnVsbHBhdGgiLCJwYXJlbnQiLCJtYXRjaGVkIiwibWF0Y2hSb3V0ZSIsImNvbXBvbmVudCIsIm5leHQiLCJkZWNvZGVVUklDb21wb25lbnQiLCJyb3V0ZSIsImVuZCIsInN0cmljdCIsInNlbnNpdGl2ZSIsInJlZ2V4cENhY2hlS2V5Iiwia2V5c0NhY2hlS2V5IiwicmVnZXhwIiwia2V5cyIsInByb3AiLCJkZWNvZGVQYXJhbSIsImNoaWxkSW5kZXgiLCJtYXRjaFBhdGgiLCJkb25lIiwiJCIsImJhc2VVcmwiLCJjaGlsZFJvdXRlIiwiY2hpbGRNYXRjaGVzIiwiY2hpbGRNYXRjaCIsIkluaXRpYWxDb21wb25lbnQiLCJyb3V0ZXJDb25maWciLCJ1c2VTdGF0ZSIsInVzZUxheW91dEVmZmVjdCIsImdldEluaXRpYWxDb21wb25lbnQiLCJzZXRDb21wb25lbnQiLCJtYXRjaExvY2F0aW9uIiwidW5saXN0ZW4iLCJ0b2tlbiIsInNpbmdsZU1hdGNoZXIiLCJtdWx0aU1hdGNoZXIiLCJjb21wb25lbnRzIiwic3BsaXQiLCJkZWNvZGVDb21wb25lbnRzIiwidG9rZW5zIiwicmVwbGFjZU1hcCIsImRlY29kZSIsImVuY29kZWRVUkkiLCJjdXN0b21EZWNvZGVVUklDb21wb25lbnQiLCJOT05fRElNRU5TSU9OQUxfUkVHIiwiRVZFTlRfUFJFRklYX1JFRyIsIkNMQVNTX05BTUUiLCJDTEFTUyIsIlNUWUxFIiwiQ0hJTERSRU4iLCJURVhUX0NPTlRFTlRfQVRUUiIsIkNSRUFURV9DT01NRU5UIiwiQ1JFQVRFX1RFWFRfTk9ERSIsIlNFVF9BVFRSSUJVVEUiLCJSRU1PVkVfQVRUUklCVVRFIiwiRU1QVFkiLCJpc0RpbWVuc2lvbmFsUHJvcCIsImNhY2hlZCIsImlzRXZlbnRQcm9wIiwiYXR0cnMiLCJldmVudHMiLCJzdHlsZSIsInRhZ05hbWUiLCJzZXRTdHlsZSIsIm9sZENoaWxkIiwiYWZ0ZXIiLCJuZXh0U2libGluZyIsImluc2VydEJlZm9yZSIsImFwcGVuZENoaWxkIiwiYmVmb3JlIiwicHJvcEtleSIsImNvbnZlcnRlZFZhbHVlIiwiY3JlYXRlQm9keSIsImNyZWF0ZUVtcHR5IiwiY3JlYXRlVGV4dCIsInVwZGF0ZVRleHQiLCJyZW1vdmVDaGlsZCIsInJlcGxhY2VDaGlsZCIsImluc2VydEFmdGVyIiwiYWRkRXZlbnRMaXN0ZW5lciIsInJlbW92ZUV2ZW50TGlzdGVuZXIiLCJyZW1vdmVBdHRyaWJ1dGUiLCJzZXRBdHRyaWJ1dGUiLCJiZWZvcmVSZW5kZXIiLCJhZnRlclJlbmRlciIsInJlbW92ZUNoaWxkcmVuIiwiY3VycmVudERyaXZlciIsImlzQXJyIiwicHJlZGljYXRlIiwicHJlZml4IiwiaGFzQmFzZW5hbWUiLCJzZWFyY2giLCJoYXNoSW5kZXgiLCJzZWFyY2hJbmRleCIsInBhcnNlUGF0aCIsInN0YXRlIiwiZGVjb2RlVVJJIiwiY3VycmVudExvY2F0aW9uIiwicmVzb2x2ZVBhdGhuYW1lIiwidmFsdWVFcXVhbCIsInByb21wdCIsIndhcm5pbmciLCJnZXRVc2VyQ29uZmlybWF0aW9uIiwibGlzdGVuZXJzIiwiaXNBY3RpdmUiLCJsaXN0ZW5lciIsInNldFByb21wdCIsImNvbmZpcm1UcmFuc2l0aW9uVG8iLCJhcHBlbmRMaXN0ZW5lciIsIm5vdGlmeUxpc3RlbmVycyIsImNhblVzZURPTSIsInVhIiwiUG9wU3RhdGVFdmVudCIsIkhhc2hDaGFuZ2VFdmVudCIsImludmFyaWFudCIsImdsb2JhbEhpc3RvcnkiLCJjYW5Vc2VIaXN0b3J5Iiwic3VwcG9ydHNIaXN0b3J5IiwibmVlZHNIYXNoQ2hhbmdlTGlzdGVuZXIiLCJzdXBwb3J0c1BvcFN0YXRlT25IYXNoQ2hhbmdlIiwiX3Byb3BzIiwiX3Byb3BzJGZvcmNlUmVmcmVzaCIsImZvcmNlUmVmcmVzaCIsIl9wcm9wcyRnZXRVc2VyQ29uZmlybSIsIl9wcm9wcyRrZXlMZW5ndGgiLCJrZXlMZW5ndGgiLCJzdHJpcFRyYWlsaW5nU2xhc2giLCJhZGRMZWFkaW5nU2xhc2giLCJoaXN0b3J5U3RhdGUiLCJfd2luZG93JGxvY2F0aW9uIiwic3RyaXBCYXNlbmFtZSIsImNyZWF0ZUxvY2F0aW9uIiwidHJhbnNpdGlvbk1hbmFnZXIiLCJjcmVhdGVUcmFuc2l0aW9uTWFuYWdlciIsImlzRXh0cmFuZW91c1BvcHN0YXRlRXZlbnQiLCJoYW5kbGVQb3AiLCJnZXRET01Mb2NhdGlvbiIsImdldEhpc3RvcnlTdGF0ZSIsImZvcmNlTmV4dFBvcCIsInNldFN0YXRlIiwicmV2ZXJ0UG9wIiwidG9Mb2NhdGlvbiIsInRvSW5kZXgiLCJhbGxLZXlzIiwiZnJvbUluZGV4IiwiZnJvbUxvY2F0aW9uIiwiaW5pdGlhbExvY2F0aW9uIiwiY3JlYXRlUGF0aCIsImxpc3RlbmVyQ291bnQiLCJpc0Jsb2NrZWQiLCJ1bmJsb2NrIiwiY2hlY2tET01MaXN0ZW5lcnMiLCJjcmVhdGVIcmVmIiwiY3JlYXRlS2V5IiwiaHJlZiIsInByZXZJbmRleCIsIm5leHRLZXlzIiwiZ29CYWNrIiwiZ29Gb3J3YXJkIiwiYmxvY2siLCJsaXN0ZW4iLCJIYXNoQ2hhbmdlRXZlbnQkMSIsIkhhc2hQYXRoQ29kZXJzIiwiaGFzaGJhbmciLCJlbmNvZGVQYXRoIiwic3RyaXBMZWFkaW5nU2xhc2giLCJkZWNvZGVQYXRoIiwibm9zbGFzaCIsInNsYXNoIiwic3RyaXBIYXNoIiwiY2FuR29XaXRob3V0UmVsb2FkIiwic3VwcG9ydHNHb1dpdGhvdXRSZWxvYWRVc2luZ0hhc2giLCJfcHJvcHMkaGFzaFR5cGUiLCJoYXNoVHlwZSIsIl9IYXNoUGF0aENvZGVycyRoYXNoVCIsImdldEhhc2hQYXRoIiwiaWdub3JlUGF0aCIsImVuY29kZWRQYXRoIiwicmVwbGFjZUhhc2hQYXRoIiwicHJldkxvY2F0aW9uIiwibG9jYXRpb25zQXJlRXF1YWwkJDEiLCJhbGxQYXRocyIsImJhc2VUYWciLCJoYXNoQ2hhbmdlZCIsInB1c2hIYXNoUGF0aCIsIm5leHRQYXRocyIsIl9wcm9wcyRpbml0aWFsRW50cmllcyIsImluaXRpYWxFbnRyaWVzIiwiX3Byb3BzJGluaXRpYWxJbmRleCIsImluaXRpYWxJbmRleCIsImNsYW1wIiwibmV4dEluZGV4IiwibmV4dEVudHJpZXMiLCJjYW5HbyIsIl9yb3V0ZXIiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIl9Mb2NhdGlvbiIsIl9saXN0ZW5lcnMiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJkZXNjIiwiTWluaUFwcEhpc3RvcnkiLCJMb2NhdGlvbiIsInBhZ2VzIiwiY3VycmVudFBhZ2UiLCJQVVNIIiwiUE9QIiwiUkVQTEFDRSIsIl9IaXN0b3J5IiwiX3VuaXZlcnNhbEVudiIsIl9jb25zdGFudHMiLCJfX3JvdXRlck1hcCIsImFwaUNvcmUiLCJuYXZpZ2F0ZVRvIiwiZ2VuZXJhdGVVcmwiLCJyZWRpcmVjdFRvIiwibmF2aWdhdGVCYWNrIiwiX3BhdGgkc3BsaXQiLCJtaW5pYXBwUGF0aCIsInN0cmluZ2lmeVF1ZXJ5IiwibWluaWFwcFJlbmRlcmVyXzEiLCJfZCIsInN0YXRpY0NvbmZpZyIsInBhZ2VQcm9wcyIsIkVycm9yQm91bmRhcnkiLCJtb3VudCIsInVubW91bnQiLCJBcHBQcm92aWRlciIsIl9lIiwiX2YiLCJFcnJvckJvdW5kYXJ5RmFsbGJhY2siLCJvbkVycm9yQm91bmRhcnlIYW5kZXIiLCJlcnJvckJvdW5kYXJ5IiwiQXBwIiwiUGFnZSIsIm90aGVyUHJvcHMiLCJQYWdlQ29tcG9uZW50IiwiYXBwSW5zdGFuY2UiLCJGYWxsYmFjayIsInBhZ2VzUmVuZGVySW5mbyIsInJlbmRlciIsInJvb3RFbCIsInNldERvY3VtZW50IiwiTWluaUFwcEdsb2JhbEluc3RhbmNlIiwiZGlzcGF0Y2hEb2N1bWVudE1vZGlmeSIsInNoYWxsb3dDb3B5IiwiZmllbGRzIiwiY2hhciIsImoiLCJwYXR0ZXJuIiwibGV4ZXIiLCJwcmVmaXhlcyIsImRlZmF1bHRQYXR0ZXJuIiwiZXNjYXBlU3RyaW5nIiwidHJ5Q29uc3VtZSIsIm11c3RDb25zdW1lIiwibmV4dFR5cGUiLCJjb25zdW1lVGV4dCIsInN1ZmZpeCIsIm1vZGlmaWVyIiwib3BlbiIsIm5hbWVfMSIsInBhdHRlcm5fMSIsInRva2Vuc1RvRnVuY3Rpb24iLCJwYXJzZSIsInJlRmxhZ3MiLCJmbGFncyIsImVuY29kZSIsInZhbGlkYXRlIiwibWF0Y2hlcyIsIm9wdGlvbmFsIiwicmVwZWF0Iiwic2VnbWVudCIsInR5cGVPZk1lc3NhZ2UiLCJyZSIsInBhdGhUb1JlZ2V4cCIsInJlZ2V4cFRvRnVuY3Rpb24iLCJfbG9vcF8xIiwiZ3JvdXBzUmVnZXgiLCJleGVjUmVzdWx0IiwidG9rZW5zVG9SZWdleHAiLCJzdGFydCIsImVuZHNXaXRoIiwiZGVsaW1pdGVyIiwidG9rZW5zXzEiLCJtb2QiLCJlbmRUb2tlbiIsImlzRW5kRGVsaW1pdGVkIiwicmVnZXhwVG9SZWdleHAiLCJhcnJheVRvUmVnZXhwIiwic3RyaW5nVG9SZWdleHAiLCJjYWNoZWRTZXRUaW1lb3V0IiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwiZHJhaW5pbmciLCJxdWV1ZUluZGV4IiwiY3VycmVudFF1ZXVlIiwiZHJhaW5RdWV1ZSIsInJ1blRpbWVvdXQiLCJydW5DbGVhclRpbWVvdXQiLCJJdGVtIiwic3RyaWN0VXJpRW5jb2RlIiwiZGVjb2RlQ29tcG9uZW50Iiwic3BsaXRPbkZpcnN0IiwiZmlsdGVyT2JqZWN0IiwiaXNOdWxsT3JVbmRlZmluZWQiLCJhY2N1bXVsYXRvciIsImlzQXJyYXkiLCJpc0VuY29kZWRBcnJheSIsIm5ld1ZhbHVlIiwia2V5c1NvcnRlciIsImhhc2hTdGFydCIsInJlbW92ZUhhc2giLCJxdWVyeVN0YXJ0Iiwic29ydCIsImFycmF5Rm9ybWF0IiwiYXJyYXlGb3JtYXRTZXBhcmF0b3IiLCJwYXJzZU51bWJlcnMiLCJwYXJzZUJvb2xlYW5zIiwidmFsaWRhdGVBcnJheUZvcm1hdFNlcGFyYXRvciIsImZvcm1hdHRlciIsInBhcnNlckZvckFycmF5Rm9ybWF0IiwiayIsInBhcnNlVmFsdWUiLCJCb29sZWFuIiwic2hvdWxkRmlsdGVyIiwiZW5jb2RlckZvckFycmF5Rm9ybWF0Iiwib2JqZWN0Q29weSIsInVybF8iLCJleHRyYWN0IiwiZnJhZ21lbnRJZGVudGlmaWVyIiwicXVlcnlGcm9tVXJsIiwicGFyc2VkUXVlcnlGcm9tVXJsIiwiZ2V0SGFzaCIsInBhcnNlRnJhZ21lbnRJZGVudGlmaWVyIiwiZXhjbHVzaW9uRmlsdGVyIiwiZmlsdGVyIiwiX19pbml0aWFsRGF0YV9fIiwicmVzdWx0cyIsIl9fYXdhaXRlciIsIlAiLCJnZW5lcmF0b3IiLCJhZG9wdCIsIl9hcmd1bWVudHMiLCJfX2dlbmVyYXRvciIsIl8iLCJsYWJlbCIsInNlbnQiLCJ0cnlzIiwib3BzIiwidmVyYiIsImciLCJTeW1ib2wiLCJvcCIsInVzZVJvdXRlciIsImNyZWF0ZVVzZVJvdXRlciIsInRhYkJhckNhY2hlIiwiZHJpdmVyIiwiaW5pdGlhbENvbXBvbmVudCIsInBhZ2VOYW1lIiwidGFiQmFyQ29uZmlnIiwiY3VycmVudFBhZ2VOYW1lIiwic2V0Q3VycmVudFBhZ2VOYW1lIiwidW5MaXN0ZW4iLCJvbkNsaWNrIiwicGFnZUluaXRpYWxQcm9wcyIsIl9pc051bGxhYmxlQ29tcG9uZW50IiwiY2hlY2tOZWVkVGFiQmFyIiwidGFiQmFyIiwic2V0QXBwQ29uZmlnIiwicmVuZGVySW5DbGllbnQiLCJwYXJzZVNlYXJjaCIsImluaXRpYWxDb250ZXh0XzEiLCJhcHBEeW5hbWljQ29uZmlnIiwic2V0SW5pdGlhbERhdGEiLCJpbml0aWFsQ29udGV4dCIsImdldFJlbmRlckFwcEluc3RhbmNlIiwid2ViQ29uZmlnIiwiaHlkcmF0ZSIsInNzciIsIlRhYkJhciIsIm9uRXJyb3JCb3VuZGFyeUhhbmRsZXIiLCJBcHBUYWJCYXIiLCJSb290Q29tcG9uZW50IiwiUm9vdCIsIl9yYXgiLCJJbWFnZSIsImZvcndhcmRSZWYiLCJmYWxsYmFja1NvdXJjZSIsIm9uTG9hZCIsInJlc2l6ZU1vZGUiLCJuYXRpdmVQcm9wcyIsIl91c2VTdGF0ZSIsImVycm9yU3RhdGUiLCJzZXRFcnJvclN0YXRlIiwidXNlQ2FsbGJhY2siLCJ1cmkiLCJfc291cmNlIiwicmVmIiwiRU1QVFlfU09VUkNFIiwicXVhbGl0eSIsIlJlZnJlc2hDb250cm9sIiwiU2Nyb2xsVmlldyIsIl9zdHlsZVNoZWV0IiwiY2xhc3NOYW1lIiwiY2xzIiwiX2dldENsYXNzTmFtZSIsImNsYXNzTmFtZUFyciIsIkZVTExfV0lEVEgiLCJBTklNQVRJT05fRFVSQVRJT04iLCJiYXNlQ2xzIiwicGFyc2VJbnQiLCJfcGl4ZWxSYXRpbyIsImdldFBpeGVsUmF0aW8iLCJob3Jpem9udGFsIiwib25FbmRSZWFjaGVkIiwib25TY3JvbGwiLCJfcHJvcHMkZGlzYWJsZVNjcm9sbCIsImRpc2FibGVTY3JvbGwiLCJvbkVuZFJlYWNoZWRUaHJlc2hvbGQiLCJfdXNlU3RhdGUyIiwiX3VzZVN0YXRlMyIsInNjcm9sbFdpdGhBbmltYXRpb24iLCJzZXRTY3JvbGxXaXRoQW5pbWF0aW9uIiwiX3VzZVN0YXRlNCIsInNjcm9sbEFuaW1hdGlvbkR1cmF0aW9uIiwic2V0U2Nyb2xsQW5pbWF0aW9uRHVyYXRpb24iLCJfdXNlU3RhdGU1Iiwic2Nyb2xsSW50b1ZpZXdJZCIsInNjcm9sbGVyUmVmIiwidXNlUmVmIiwidXNlSW1wZXJhdGl2ZUhhbmRsZSIsIl9uYXRpdmVOb2RlIiwicmVzZXRTY3JvbGwiLCJzY3JvbGxUbyIsIl9yZWYkeCIsIl9yZWYkeSIsIl9yZWYkYW5pbWF0ZWQiLCJhbmltYXRlZCIsIl9yZWYkZHVyYXRpb24iLCJ0cmFuc2xhdGVUb1B4Iiwic2Nyb2xsSW50b1ZpZXciLCJpZCIsIl9yZWYyJGFuaW1hdGVkIiwiX3JlZjIkZHVyYXRpb24iLCJzY3JvbGxlclN0eWxlIiwiY3giLCJlbmRSZWFjaGVkVGhyZXNob2xkIiwiX2dldFN0eWxlIiwic2Nyb2xsSGVpZ2h0Iiwib25TY3JvbGxUb0xvd2VyIiwid3JhcERlZmF1bHRQcm9wZXJ0aWVzIiwibGFzdCIsInRpbWVvdXRJRCIsInJ0biIsImZ1bmMiLCJjdHgiLCJjYWxsIiwid2FpdCIsImNhbmNlbEFuaW1hdGlvbkZyYW1lIiwiVFlQRVMiLCJTVEFSVCIsIkVORCIsIlJVTiIsIlNUT1AiLCJlYXNpbmciLCJlYXNlT3V0U2luZSIsIk1JTl9EVVJBVElPTiIsIm5vb3AiLCJUaW1lciIsIm9uU3RhcnQiLCJvblJ1biIsIm9uU3RvcCIsIm9uRW5kIiwiX3RoaXMkY29uZmlnIiwicGVyY2VudCIsIl90aGlzJGNvbmZpZzIiLCJvcmlnaW5QZXJjZW50Iiwibm93IiwiREVGQVVMVF9FTkRfUkVBQ0hFRF9USFJFU0hPTEQiLCJERUZBVUxUX1NDUk9MTF9DQUxMQkFDS19USFJPVFRMRSIsInNjcm9sbEV2ZW50VGhyb3R0bGUiLCJzaG93c0hvcml6b250YWxTY3JvbGxJbmRpY2F0b3IiLCJzaG93c1ZlcnRpY2FsU2Nyb2xsSW5kaWNhdG9yIiwiU1RZTEVfTk9ERV9JRCIsInNjcm9sbFZpZXciLCJvcmlnaW4iLCJjb250ZW50Q29udGFpbmVyU3R5bGUiLCJsYXN0U2Nyb2xsRGlzdGFuY2UiLCJsYXN0U2Nyb2xsQ29udGVudFNpemUiLCJzY3JvbGxlck5vZGVTaXplIiwiY29udGVudENvbnRhaW5lclJlZiIsInNjcm9sbGVyTm9kZSIsInNjcm9sbENvbnRlbnRTaXplIiwic2Nyb2xsRGlzdGFuY2UiLCJpc0VuZFJlYWNoZWQiLCJpc1Njcm9sbFRvRW5kIiwiaXNMb2FkZWRNb3JlQ29udGVudCIsIl9zY3JvbGxUbyIsInRhcmdldEVsZW1lbnQiLCJjaGlsZExheW91dFByb3BzIiwiY29udGVudENvbnRhaW5lciIsIl9jeCIsInNob3dzU2Nyb2xsSW5kaWNhdG9yIiwic3R5bGVOb2RlIiwid2ViUHJvcHMiLCJ0aHJvdHRsZSIsImlzV2VleFYyIiwiX3Njcm9sbGVyUmVmJGN1cnJlbnQiLCJsb2FkbW9yZXJldHJ5Iiwic2V0TG9hZG1vcmVyZXRyeSIsIl9jb250ZW50Q29udGFpbmVyIiwib2Zmc2V0IiwiZ2V0RWxlbWVudEJ5SWQiLCJyZWZyZXNoQ29udGFpbmVyIiwiY29udGVudENoaWxkIiwiY2hpbGQiLCJ3ZWV4UHJvcHMiLCJzaG93U2Nyb2xsYmFyIiwib25Mb2FkbW9yZSIsImNvbnRlbnRPZmZzZXQiLCJjb250ZW50U2l6ZSIsImxvYWRtb3Jlb2Zmc2V0Iiwic2Nyb2xsRGlyZWN0aW9uIiwiQk9YX0FMSUdOIiwic3RyZXRjaCIsImNlbnRlciIsIkJPWF9PUklFTlQiLCJyb3ciLCJjb2x1bW4iLCJCT1hfUEFDSyIsIkZMRVhfUFJPUFMiLCJmbGV4IiwiYWxpZ25TZWxmIiwiRmxleGJveCIsImlzRmxleFByb3AiLCJfc3R5bGVVbml0IiwiX2ZsZXhib3giLCJBRERfRVZFTlQiLCJEQU5HRVJPVVNMWV9TRVRfSU5ORVJfSFRNTCIsIkVWRU5UX1BSRUZJWF9SRUdFWFAiLCJvYmplY3RQcm90b3R5cGVIYXNPd25Qcm9wZXJ0eSIsImhhc093blByb3BlcnR5Iiwic2V0U3R5bGVzIiwiZXZlbnROYW1lIiwiVGV4dCIsInByZWZpeENscyIsIm51bWJlck9mTGluZXMiLCJvblByZXNzIiwibGluZXMiLCJ0ZXh0U3RyaW5nIiwibGluZUNsYW1wIiwiY2xhc3NOYW1lc0FyciIsIldlYmtpdExpbmVDbGFtcCIsImhhbmRsZUNsaWNrIiwiaW5wdXRJZCIsImdldFRleHQiLCJuYXRpdmVFdmVudCIsIm9yaWdpbmFsRXZlbnQiLCJUZXh0SW5wdXQiLCJyZWZFbCIsImZvcmNlVXBkYXRlIiwic3R5bGVDbGFzc05hbWUiLCJhY2Nlc3NpYmlsaXR5TGFiZWwiLCJhdXRvQ29tcGxldGUiLCJlZGl0YWJsZSIsImtleWJvYXJkVHlwZSIsIm1heE51bWJlck9mTGluZXMiLCJtYXhMZW5ndGgiLCJtYXhsZW5ndGgiLCJtdWx0aWxpbmUiLCJjb25maXJtVHlwZSIsInJhbmRvbU51bWJlciIsIl9wcm9wcyRzaG93Q291bnQiLCJzaG93Q291bnQiLCJzZWxlY3Rpb25TdGFydCIsInNlbGVjdGlvbkVuZCIsIm9uQmx1ciIsIm9uRm9jdXMiLCJvbkNoYW5nZVRleHQiLCJfb25JbnB1dCIsInBhc3N3b3JkIiwic2VjdXJlVGV4dEVudHJ5IiwiX3Byb3BzJHBsYWNlaG9sZGVyQ29sIiwicGxhY2Vob2xkZXJDb2xvciIsInByb3BzVmFsdWUiLCJkZWZhdWx0VmFsdWUiLCJjb250cm9sbGVkIiwia2V5Ym9hcmRUeXBlTWFwIiwiaXNUcnV0aHlPclplcm8iLCJ1c2VNZW1vIiwic2V0VmFsdWUiLCJzZXROYXRpdmVQcm9wcyIsImhhbmRsZUlucHV0IiwiZ2VuRXZlbnRPYmplY3QiLCJoYW5kbGVDaGFuZ2UiLCJwcm9wc0NvbW1vbiIsImRpc2FibGVkIiwicm93cyIsImZvY3VzIiwiYmx1ciIsImN1cnJlbnRWYWx1ZSIsIl9fY3JlYXRlX2NvbmRpdGlvbl9fIiwiZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUwiLCJfX2h0bWwiLCJvbklucHV0IiwidGljayIsInR3aXR0ZXIiLCJudW1lcmljIiwiaWRjYXJkIiwiZGlnaXQiLCJudW1iZXJwYWQiLCJkaWdpdHBhZCIsImlkY2FyZHBhZCIsIlZpZGVvIiwibWluaWFwcFZpZGVvUHJvcHNNYXAiLCJzaG93TXV0ZUJ0biIsInNob3dQbGF5QnRuIiwic2hvd0Z1bGxzY3JlZW5CdG4iLCJzaG93Q2VudGVyUGxheUJ0biIsInNob3dUaGluUHJvZ3Jlc3NCYXIiLCJvYmplY3RGaXQiLCJfcHJvcHMkY2xhc3NOYW1lIiwiY29udHJvbHMiLCJwbGF5Q29udHJvbCIsImF1dG9QbGF5IiwiY29tbW9uIiwib21pdCIsImNhY2hlVmlkZW9Db250ZXh0IiwicGxheXNpbmxpbmUiLCJvblBsYXlFcnJvciIsInBsYXlQcm9taXNlIiwicGxheVN0YXR1cyIsIlZpZXciLCJzZWxmUmVmIiwib25GaXJzdEFwcGVhciIsIm9uQXBwZWFyIiwiaGFuZGxlQXBwZWFyIiwidHJpZ2dlcmVkQXBwZWFyIiwib25EaXNhcHBlYXIiLCJvYnNlcnZlIiwiX3JlcyRpbnRlcnNlY3Rpb25SYXRpIiwiSG9zdCIsIl9fbW91bnRJRCIsIl9faXNVcGRhdGluZyIsInJvb3RDb21wb25lbnRzIiwicm9vdEluc3RhbmNlcyIsIm93bmVyIiwiUmVhY3RQcm9wVHlwZXNTZWNyZXQkMSIsIlJlYWN0UHJvcFR5cGVzU2VjcmV0XzEiLCJwcmludFdhcm5pbmciLCJSZWFjdFByb3BUeXBlc1NlY3JldCIsImxvZ2dlZFR5cGVGYWlsdXJlcyIsImhhcyIsIkZ1bmN0aW9uIiwidHlwZVNwZWNzIiwiY29tcG9uZW50TmFtZSIsInN0YWNrIiwiZ2V0U3RhY2siLCJjaGVja1Byb3BUeXBlcyIsImNoZWNrUHJvcFR5cGVzXzEiLCJfb3duZXIiLCJwcm9wVHlwZXMiLCJkaXNwbGF5TmFtZSIsIk5PT1AiLCJ0cmF2ZXJzZUNoaWxkcmVuIiwidXBkYXRlQ2FsbGJhY2tzIiwiZWZmZWN0Q2FsbGJhY2tzIiwibGF5b3V0Q2FsbGJhY2tzIiwic2NoZWR1bGVyIiwiY2FsbGJhY2tzIiwiaW52b2tlRnVuY3Rpb25zV2l0aENsZWFyIiwidHlwZUluZm8iLCJnZXRUeXBlSW5mbyIsImdldFJlbmRlckVycm9ySW5mbyIsIm93bmVyQ29tcG9uZW50IiwiY3JlYXRlTWluaWZpZWRFcnJvciIsImFyZ3NXaXRoRm9ybWF0IiwiYXJnSW5kZXgiLCJvd25lckhhc0tleVVzZVdhcm5pbmciLCJwYXJlbnROYW1lIiwicGFyZW50VHlwZSIsImN1cnJlbnRDb21wb25lbnRFcnJvckluZm8iLCJnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvIiwiY2hpbGRPd25lciIsImlzVmFsaWRFbGVtZW50IiwidmFsaWRhdGVFeHBsaWNpdEtleSIsIlJFU0VSVkVEX1BST1BTIiwiY2hpbGRyZW5MZW5ndGgiLCJjaGlsZEFycmF5IiwiZmxhdHRlbkNoaWxkcmVuIiwiZGVmYXVsdFByb3BzIiwidGhyb3dFcnJvciIsImlzU3RyaW5nIiwidmFsaWRhdGVDaGlsZEtleXMiLCJmbnMiLCJpcyIsImlzTnVsbCIsImtleXNBIiwia2V5c0IiLCJvYmpBIiwib2JqQiIsIklOVEVSTkFMIiwiSU5TVEFOQ0UiLCJOQVRJVkVfTk9ERSIsIlJFTkRFUkVEX0NPTVBPTkVOVCIsImN1cnJlbnRJbnN0YW5jZSIsImdldEN1cnJlbnRJbnN0YW5jZSIsImlucHV0cyIsInByZXZJbnB1dHMiLCJnZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UiLCJob29rSUQiLCJob29rcyIsImluaXRpYWxTdGF0ZSIsImZsdXNoRWZmZWN0IiwiaG9vayIsImVhZ2VyU3RhdGUiLCJuZXdTdGF0ZSIsInVzZUVmZmVjdEltcGwiLCJfX2NyZWF0ZSIsInNjaGVkdWxlRWZmZWN0IiwiX19kZXN0b3J5IiwiY3VycmVudERlc3RvcnkiLCJfX3ByZXZJbnB1dHMiLCJfX2lucHV0cyIsIl9ob29rcyRob29rSUQiLCJhcmVJbnB1dHNFcXVhbCIsIl9jcmVhdGUiLCJuZXh0SW5wdXRzIiwiY3JlYXRlIiwiaW5pdGlhbFZhbHVlIiwiaW5pdCIsImRpc3BhdGNoIiwiY3VycmVudFN0YXRlIiwiZWFnZXJSZWR1Y2VyIiwiX19hY3Rpb25zIiwiX19lYWdlclJlZHVjZXIiLCJfX2VhZ2VyU3RhdGUiLCJyZWR1Y2VyIiwiaW5zdGFuY2UiLCJtYXRjaGVyIiwiY29udGV4dElEIiwiUHJvdmlkZXIiLCJoIiwicHJldlByb3BzIiwiaW52b2tlRnVuY3Rpb25zV2l0aENvbnRleHQiLCJnZXROZWFyZXN0UGFyZW50IiwiQ29uc3VtZXIiLCJnZXROZWFyZXN0UGFyZW50UHJvdmlkZXIiLCJwcm92aWRlciIsInByZXZWYWx1ZSIsImNvbnN1bWVyIiwidG9BcnJheSIsIl9jb250ZXh0SUQiLCJfZGVmYXVsdFZhbHVlIiwiX19nZXROZWFyZXN0UGFyZW50UHJvdmlkZXIiLCJjb21wYXJlIiwic3ViQ2xhc3MiLCJzdXBlckNsYXNzIiwiX3NldFByb3RvdHlwZU9mIiwiQmFzZUNvbXBvbmVudCIsImN1cnJlbnRFbGVtZW50IiwibmF0aXZlTm9kZSIsIm5hdGl2ZU5vZGVNb3VudGVyIiwiRW1wdHlDb21wb25lbnQiLCJfaW5oZXJpdHNMb29zZSIsIl9CYXNlQ29tcG9uZW50IiwicHJldlJlZiIsInByZXZFbGVtZW50IiwibmV4dFJlZiIsIm5leHRFbGVtZW50IiwiZGV0YWNoUmVmIiwiYXR0YWNoUmVmIiwiaXNOdW1iZXIiLCJwcmV2RW1wdHkiLCJuZXh0RW1wdHkiLCJpc1ByZXZTdHJpbmdPck51bWJlciIsImVsZW1lbnRLZXkiLCJkZWZhdWx0TmFtZSIsImtleU5hbWUiLCJrZXlVbmlxdWUiLCJQdXJlQ29tcG9uZW50IiwiX0NvbXBvbmVudCIsInJvb3RJRCIsIktFWSIsIkluc3RhbmNlIiwicmVtb3ZlIiwicmVuZGVyT3B0aW9ucyIsInBhcmVudEludGVybmFsIiwicGFyZW50Q29udGV4dCIsInByZXZSb290SW5zdGFuY2UiLCJyZW5kZXJlZENvbXBvbmVudCIsImluc3RhbnRpYXRlQ29tcG9uZW50IiwiZGVmYXVsdENvbnRleHQiLCJyb290SW5zdGFuY2UiLCJhc3NpZ24iLCJUUkVFIiwiTmF0aXZlQ29tcG9uZW50IiwiYXBwZW5kVHlwZSIsInJlbmRlcmVkQ2hpbGRyZW4iLCJyZW5kZXJlZENoaWxkcmVuSW1hZ2UiLCJyZW5kZXJlZENoaWxkIiwiZ2V0RWxlbWVudEtleU5hbWUiLCJtb3VudEltYWdlIiwidXBkYXRlUmVmIiwibmV4dFByb3BzIiwibGFzdFN0eWxlIiwic3R5bGVVcGRhdGVzIiwiZXZlbnRMaXN0ZW5lciIsIm5leHRQcm9wIiwicHJldlByb3AiLCJpbnN0YW5jZUlEIiwicGF5bG9hZCIsIl9wYXlsb2FkIiwicHJldkNoaWxkcmVuIiwibmV4dENoaWxkcmVuRWxlbWVudHMiLCJuZXh0Q2hpbGRyZW4iLCJwcmV2Q2hpbGQiLCJwcmV2Q29udGV4dCIsInNob3VsZFVwZGF0ZUNvbXBvbmVudCIsImlzRnJhZ21lbnRQYXJlbnQiLCJwcmV2Rmlyc3RDaGlsZCIsInByZXZGaXJzdE5hdGl2ZU5vZGUiLCJpc1ByZXZGaXJzdEVtcHR5RnJhZ21lbnQiLCJzaG91bGRVbm1vdW50UHJldkZpcnN0Q2hpbGQiLCJsYXN0UGxhY2VkTm9kZSIsInNob3VsZFJlbW92ZUFsbENoaWxkcmVuIiwiX3ByZXZDaGlsZCIsInNob3VsZFVubW91bnQiLCJnZXRQcmV2U2libGluZ05hdGl2ZU5vZGUiLCJpbnNlcnROb2RlcyIsIm5hdGl2ZU5vZGVzIiwibmV4dENoaWxkIiwiX3ByZXZDaGlsZDIiLCJwcmV2Q2hpbGROYXRpdmVOb2RlIiwiVGV4dENvbXBvbmVudCIsIlJFX1JFTkRFUl9MSU1JVCIsIlJlYWN0aXZlQ29tcG9uZW50IiwicHVyZVJlbmRlciIsImNvbXBhcmVzIiwiYXJlUHJvcHNFcXVhbCIsImNvbnRleHRJdGVtIiwiX19wcm92aWRlciIsImhhbmRsZUNvbnRleHRDaGFuZ2UiLCJkaXJ0eUNvbXBvbmVudHMiLCJpbnRlcm5hbCIsImNhbGxiYWNrUXVldWUiLCJnZXRQZW5kaW5nQ2FsbGJhY2tzIiwic2V0UGVuZGluZ0NhbGxiYWNrcyIsInN0YXRlUXVldWUiLCJnZXRQZW5kaW5nU3RhdGVRdWV1ZSIsInNldFBlbmRpbmdTdGF0ZVF1ZXVlIiwicHJldlVubWFza2VkQ29udGV4dCIsIm5leHRVbm1hc2tlZENvbnRleHQiLCJmbHVzaExheW91dCIsInNjaGVkdWxlIiwiZGlydGllcyIsInJ1blVwZGF0ZSIsInBlcmZvcm1VcGRhdGUiLCJlbnF1ZXVlQ2FsbGJhY2siLCJoYXNDb21wb25lbnRSZW5kZXJlZCIsImVucXVldWVTdGF0ZSIsInNjaGVkdWxlVXBkYXRlIiwiVXBkYXRlciIsInJlcXVlc3RVcGRhdGUiLCJoYW5kbGVFcnJvciIsImJvdW5kYXJ5Iiwic2NoZWR1bGVMYXlvdXQiLCJib3VuZGFyeUludGVybmFsIiwicGVyZm9ybUluU2FuZGJveCIsIm1lYXN1cmVMaWZlQ3ljbGUiLCJzY2hlZHVsZUxheW91dEluU2FuZGJveCIsIkNvbXBvc2l0ZUNvbXBvbmVudCIsInB1YmxpY1Byb3BzIiwiY29tcG9uZW50UHJvdG90eXBlIiwicHVibGljQ29udGV4dCIsInJlbmRlcmVkRWxlbWVudCIsInNjaGVkdWxlTGF5b3V0Q2FsbGJhY2tzSW5TYW5kYm94IiwibWFza2VkQ29udGV4dCIsImNvbnRleHRUeXBlcyIsImNoaWxkQ29udGV4dCIsIm5leHRTdGF0ZSIsInBhcnRpYWwiLCJuZXh0Q29udGV4dCIsIndpbGxSZWNlaXZlIiwic2hvdWxkVXBkYXRlIiwicHJldlN0YXRlIiwic2hhbGxvd0VxdWFsIiwicHJldlJlbmRlcmVkQ29tcG9uZW50IiwicHJldlJlbmRlcmVkRWxlbWVudCIsIm5leHRSZW5kZXJlZEVsZW1lbnQiLCJwcmV2UmVuZGVyZWRVbm1hc2tlZENvbnRleHQiLCJuZXh0UmVuZGVyZWRVbm1hc2tlZENvbnRleHQiLCJsYXN0TmF0aXZlTm9kZSIsInByZXZOYXRpdmVOb2RlIiwibmV3TmF0aXZlTm9kZSIsIkZyYWdtZW50Q29tcG9uZW50IiwiX05hdGl2ZUNvbXBvbmVudCIsImZyYWdtZW50IiwiUmVjb25jaWxlciIsIm1vdW50Q29tcG9uZW50IiwicmVjZWl2ZUNvbXBvbmVudCIsInVubW91bnRDb21wb25lbnQiLCJyZW5kZXJOZXdSb290Q29tcG9uZW50IiwibWVhc3VyZXIiLCJpbmplY3QiLCJyb290Q29tcG9uZW50IiwiY29tcG9uZW50SW5zdGFuY2UiLCJEZXZ0b29sc0hvb2siLCJDb21wb25lbnRUcmVlIiwiZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUiLCJnZXROb2RlRnJvbUluc3RhbmNlIiwiaW5zdCIsIk1vdW50IiwiX3JlbmRlck5ld1Jvb3RDb21wb25lbnQiLCJtb25pdG9yIiwic2hhcmVkIiwiRWxlbWVudCIsIl9fUkFYX0RFVlRPT0xTX0dMT0JBTF9IT09LX18iLCJPcCIsIiRTeW1ib2wiLCJpdGVyYXRvclN5bWJvbCIsImFzeW5jSXRlcmF0b3JTeW1ib2wiLCJ0b1N0cmluZ1RhZ1N5bWJvbCIsInByb3RvR2VuZXJhdG9yIiwib3V0ZXJGbiIsInRyeUxvY3NMaXN0IiwibWFrZUludm9rZU1ldGhvZCIsIkdlblN0YXRlU3VzcGVuZGVkU3RhcnQiLCJHZW5TdGF0ZUV4ZWN1dGluZyIsIkdlblN0YXRlQ29tcGxldGVkIiwiQ29udGludWVTZW50aW5lbCIsIkl0ZXJhdG9yUHJvdG90eXBlIiwiZ2V0UHJvdG8iLCJOYXRpdmVJdGVyYXRvclByb3RvdHlwZSIsInZhbHVlcyIsIkdwIiwiR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUiLCJHZW5lcmF0b3IiLCJHZW5lcmF0b3JGdW5jdGlvbiIsImN0b3IiLCJnZW5GdW4iLCJfX2F3YWl0IiwicmVjb3JkIiwidHJ5Q2F0Y2giLCJpbnZva2UiLCJwcmV2aW91c1Byb21pc2UiLCJjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZyIsImRlZmluZUl0ZXJhdG9yTWV0aG9kcyIsIkFzeW5jSXRlcmF0b3IiLCJQcm9taXNlSW1wbCIsIml0ZXIiLCJ3cmFwIiwiZG9uZVJlc3VsdCIsImRlbGVnYXRlIiwiZGVsZWdhdGVSZXN1bHQiLCJtYXliZUludm9rZURlbGVnYXRlIiwidHJ5TG9jIiwibG9jcyIsIml0ZXJhdG9yTWV0aG9kIiwiaXRlcmFibGUiLCJDb250ZXh0IiwiY29uc3RydWN0b3IiLCJyZXNldCIsInN0b3AiLCJyb290RW50cnkiLCJyb290UmVjb3JkIiwiZGlzcGF0Y2hFeGNlcHRpb24iLCJoYXNDYXRjaCIsImhhc0ZpbmFsbHkiLCJhYnJ1cHQiLCJmaW5hbGx5RW50cnkiLCJmaW5pc2giLCJyZXNldFRyeUVudHJ5IiwidGhyb3duIiwiZGVsZWdhdGVZaWVsZCIsIml0ZXJhdG9yIiwicmVzdWx0TmFtZSIsIm5leHRMb2MiLCJyZWdlbmVyYXRvclJ1bnRpbWUiLCJnbG9iYWxUaGlzIiwidG9QYXJ0cyIsImZyb21QYXJ0cyIsImlzVG9BYnMiLCJpc0Fic29sdXRlIiwiaXNGcm9tQWJzIiwibXVzdEVuZEFicyIsImhhc1RyYWlsaW5nU2xhc2giLCJ1cCIsInBhcnQiLCJzcGxpY2VPbmUiLCJzZXBhcmF0b3IiLCJzZXBhcmF0b3JJbmRleCIsInN0cmluZyIsIl9kZWZpbmVQcm9wZXJ0eTIiLCJSUFhfUkVHIiwidGFyZ2V0UGxhdGZvcm0iLCJ1bml0UHJlY2lzaW9uIiwidG9GaXhlZCIsIm11bHRpcGxpZXIiLCJwcmVjaXNpb24iLCJ3aG9sZU51bWJlciIsImRlY2ltYWxQaXhlbFRyYW5zZm9ybWVyIiwiJDEiLCJwYXJzZUZsb2F0IiwiZ2V0UnB4IiwiZGVjaW1hbFZXVHJhbnNmb3JtZXIiLCJnZXRWaWV3cG9ydFdpZHRoIiwic2V0UnB4Iiwic2V0Vmlld3BvcnRXaWR0aCIsIkN1c3RvbU1hcCIsIl9fcnB4X2NvZWZmaWNpZW50X18iLCJfX3ZpZXdwb3J0X3dpZHRoX18iLCJjb252ZXJ0VW5pdCIsInNldFRhcmdldFBsYXRmb3JtIiwiaXNScHgiLCJjYWxjUnB4IiwiaXNQcm9kdWN0aW9uIiwiYVZhbHVlIiwidmFsdWVPZiIsImJWYWx1ZSIsInJ1bkFwcCIsInBhZ2VDb25maWciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7OztRQUFBO1FBQ0E7O1FBRUE7UUFDQTs7UUFFQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUNBO1FBQ0E7UUFDQTs7UUFFQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBOzs7UUFHQTtRQUNBOztRQUVBO1FBQ0E7O1FBRUE7UUFDQTtRQUNBO1FBQ0EsMENBQTBDLGdDQUFnQztRQUMxRTtRQUNBOztRQUVBO1FB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QUFNLElBQUksMERBQUMsZ0RBQUQsRUFBSyxJQUFMLEUsZ0NBQUEsRUFBWSxJQUFJLENBQUMsU0FBTCxDQUFlLE1BQWYsQ0FBWixDQTFDUixDQUFQO0FBNENELEMiLCJmaWxlIjoiYnVuZGxlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiIFx0Ly8gVGhlIG1vZHVsZSBjYWNoZVxuIFx0dmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTtcblxuIFx0Ly8gVGhlIHJlcXVpcmUgZnVuY3Rpb25cbiBcdGZ1bmN0aW9uIF9fd2VicGFja19yZXF1aXJlX18obW9kdWxlSWQpIHtcblxuIFx0XHQvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGVcbiBcdFx0aWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHtcbiBcdFx0XHRyZXR1cm4gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0uZXhwb3J0cztcbiBcdFx0fVxuIFx0XHQvLyBDcmVhdGUgYSBuZXcgbW9kdWxlIChhbmQgcHV0IGl0IGludG8gdGhlIGNhY2hlKVxuIFx0XHR2YXIgbW9kdWxlID0gaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0gPSB7XG4gXHRcdFx0aTogbW9kdWxlSWQsXG4gXHRcdFx0bDogZmFsc2UsXG4gXHRcdFx0ZXhwb3J0czoge31cbiBcdFx0fTtcblxuIFx0XHQvLyBFeGVjdXRlIHRoZSBtb2R1bGUgZnVuY3Rpb25cbiBcdFx0bW9kdWxlc1ttb2R1bGVJZF0uY2FsbChtb2R1bGUuZXhwb3J0cywgbW9kdWxlLCBtb2R1bGUuZXhwb3J0cywgX193ZWJwYWNrX3JlcXVpcmVfXyk7XG5cbiBcdFx0Ly8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZFxuIFx0XHRtb2R1bGUubCA9IHRydWU7XG5cbiBcdFx0Ly8gUmV0dXJuIHRoZSBleHBvcnRzIG9mIHRoZSBtb2R1bGVcbiBcdFx0cmV0dXJuIG1vZHVsZS5leHBvcnRzO1xuIFx0fVxuXG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlcyBvYmplY3QgKF9fd2VicGFja19tb2R1bGVzX18pXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzO1xuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5jID0gaW5zdGFsbGVkTW9kdWxlcztcblxuIFx0Ly8gZGVmaW5lIGdldHRlciBmdW5jdGlvbiBmb3IgaGFybW9ueSBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQgPSBmdW5jdGlvbihleHBvcnRzLCBuYW1lLCBnZXR0ZXIpIHtcbiBcdFx0aWYoIV9fd2VicGFja19yZXF1aXJlX18ubyhleHBvcnRzLCBuYW1lKSkge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBuYW1lLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZ2V0dGVyIH0pO1xuIFx0XHR9XG4gXHR9O1xuXG4gXHQvLyBkZWZpbmUgX19lc01vZHVsZSBvbiBleHBvcnRzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIgPSBmdW5jdGlvbihleHBvcnRzKSB7XG4gXHRcdGlmKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC50b1N0cmluZ1RhZykge1xuIFx0XHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBTeW1ib2wudG9TdHJpbmdUYWcsIHsgdmFsdWU6ICdNb2R1bGUnIH0pO1xuIFx0XHR9XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCAnX19lc01vZHVsZScsIHsgdmFsdWU6IHRydWUgfSk7XG4gXHR9O1xuXG4gXHQvLyBjcmVhdGUgYSBmYWtlIG5hbWVzcGFjZSBvYmplY3RcbiBcdC8vIG1vZGUgJiAxOiB2YWx1ZSBpcyBhIG1vZHVsZSBpZCwgcmVxdWlyZSBpdFxuIFx0Ly8gbW9kZSAmIDI6IG1lcmdlIGFsbCBwcm9wZXJ0aWVzIG9mIHZhbHVlIGludG8gdGhlIG5zXG4gXHQvLyBtb2RlICYgNDogcmV0dXJuIHZhbHVlIHdoZW4gYWxyZWFkeSBucyBvYmplY3RcbiBcdC8vIG1vZGUgJiA4fDE6IGJlaGF2ZSBsaWtlIHJlcXVpcmVcbiBcdF9fd2VicGFja19yZXF1aXJlX18udCA9IGZ1bmN0aW9uKHZhbHVlLCBtb2RlKSB7XG4gXHRcdGlmKG1vZGUgJiAxKSB2YWx1ZSA9IF9fd2VicGFja19yZXF1aXJlX18odmFsdWUpO1xuIFx0XHRpZihtb2RlICYgOCkgcmV0dXJuIHZhbHVlO1xuIFx0XHRpZigobW9kZSAmIDQpICYmIHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcgJiYgdmFsdWUgJiYgdmFsdWUuX19lc01vZHVsZSkgcmV0dXJuIHZhbHVlO1xuIFx0XHR2YXIgbnMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLnIobnMpO1xuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkobnMsICdkZWZhdWx0JywgeyBlbnVtZXJhYmxlOiB0cnVlLCB2YWx1ZTogdmFsdWUgfSk7XG4gXHRcdGlmKG1vZGUgJiAyICYmIHR5cGVvZiB2YWx1ZSAhPSAnc3RyaW5nJykgZm9yKHZhciBrZXkgaW4gdmFsdWUpIF9fd2VicGFja19yZXF1aXJlX18uZChucywga2V5LCBmdW5jdGlvbihrZXkpIHsgcmV0dXJuIHZhbHVlW2tleV07IH0uYmluZChudWxsLCBrZXkpKTtcbiBcdFx0cmV0dXJuIG5zO1xuIFx0fTtcblxuIFx0Ly8gZ2V0RGVmYXVsdEV4cG9ydCBmdW5jdGlvbiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIG5vbi1oYXJtb255IG1vZHVsZXNcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkge1xuIFx0XHR2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID9cbiBcdFx0XHRmdW5jdGlvbiBnZXREZWZhdWx0KCkgeyByZXR1cm4gbW9kdWxlWydkZWZhdWx0J107IH0gOlxuIFx0XHRcdGZ1bmN0aW9uIGdldE1vZHVsZUV4cG9ydHMoKSB7IHJldHVybiBtb2R1bGU7IH07XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18uZChnZXR0ZXIsICdhJywgZ2V0dGVyKTtcbiBcdFx0cmV0dXJuIGdldHRlcjtcbiBcdH07XG5cbiBcdC8vIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbFxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9O1xuXG4gXHQvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfX1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5wID0gXCIvXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAwKTtcbiIsImZ1bmN0aW9uIGlzVW5kZWYodHlwZSkge1xuICByZXR1cm4gdHlwZSA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbmV4cG9ydCB2YXIgaXNEaW5nZGluZ01pbmlhcHAgPSAhaXNVbmRlZih0eXBlb2YgZGQpICYmIGRkICE9PSBudWxsICYmICFpc1VuZGVmKHR5cGVvZiBkZC5hbGVydCk7IiwiaW1wb3J0IG9mZkNoYW5nZSBmcm9tIFwiLi9vZmZDaGFuZ2VcIjtcbmltcG9ydCBvbkNoYW5nZSBmcm9tIFwiLi9vbkNoYW5nZVwiO1xuZXhwb3J0IHsgb25DaGFuZ2UsIG9mZkNoYW5nZSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBvbkNoYW5nZTogb25DaGFuZ2UsXG4gIG9mZkNoYW5nZTogb2ZmQ2hhbmdlXG59OyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5cbnZhciBvZmZDaGFuZ2UgPSBmdW5jdGlvbiBvZmZDaGFuZ2UoY2IpIHtcbiAgcmV0dXJuIGlzRGluZ2RpbmdNaW5pYXBwID8gZGQub2ZmQWNjZWxlcm9tZXRlckNoYW5nZShjYikgOiBteS5vZmZBY2NlbGVyb21ldGVyQ2hhbmdlKGNiKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG9mZkNoYW5nZTsiLCJpbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xuXG52YXIgb25DaGFuZ2UgPSBmdW5jdGlvbiBvbkNoYW5nZShjYikge1xuICByZXR1cm4gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5vbkFjY2VsZXJvbWV0ZXJDaGFuZ2UoY2IpIDogbXkub25BY2NlbGVyb21ldGVyQ2hhbmdlKGNiKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG9uQ2hhbmdlOyIsImltcG9ydCBvZmZDaGFuZ2UgZnJvbSBcIi4vb2ZmQ2hhbmdlXCI7XG5pbXBvcnQgb25DaGFuZ2UgZnJvbSBcIi4vb25DaGFuZ2VcIjtcbmV4cG9ydCB7IG9uQ2hhbmdlLCBvZmZDaGFuZ2UgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxuICBvZmZDaGFuZ2U6IG9mZkNoYW5nZVxufTsiLCJ2YXIgb2ZmQ2hhbmdlID0gZnVuY3Rpb24gb2ZmQ2hhbmdlKGNiKSB7XG4gIHJldHVybiBzd2FuLnN0b3BBY2NlbGVyb21ldGVyKHtcbiAgICBjb21wbGV0ZTogY2JcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBvZmZDaGFuZ2U7IiwidmFyIG9uQ2hhbmdlID0gZnVuY3Rpb24gb25DaGFuZ2UoY2IpIHtcbiAgcmV0dXJuIHN3YW4ub25BY2NlbGVyb21ldGVyQ2hhbmdlKGNiKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG9uQ2hhbmdlOyIsImltcG9ydCBvZmZDaGFuZ2UgZnJvbSBcIi4vb2ZmQ2hhbmdlXCI7XG5pbXBvcnQgb25DaGFuZ2UgZnJvbSBcIi4vb25DaGFuZ2VcIjtcbmV4cG9ydCB7IG9uQ2hhbmdlLCBvZmZDaGFuZ2UgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgb25DaGFuZ2U6IG9uQ2hhbmdlLFxuICBvZmZDaGFuZ2U6IG9mZkNoYW5nZVxufTsiLCJ2YXIgb2ZmQ2hhbmdlID0gZnVuY3Rpb24gb2ZmQ2hhbmdlKGNiKSB7XG4gIHJldHVybiB0dC5vZmZBY2NlbGVyb21ldGVyQ2hhbmdlKGNiKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG9mZkNoYW5nZTsiLCJ2YXIgb25DaGFuZ2UgPSBmdW5jdGlvbiBvbkNoYW5nZShjYikge1xuICByZXR1cm4gdHQub25BY2NlbGVyb21ldGVyQ2hhbmdlKGNiKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG9uQ2hhbmdlOyIsImltcG9ydCB7IGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNXZWIsIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSwgaXNCYWlkdVNtYXJ0UHJvZ3JhbSB9IGZyb20gXCJAdW5pL2VudlwiO1xuaW1wb3J0IGFsaU1pbmlBcHBNb2R1bGUgZnJvbSBcIi4vYWxpLW1pbmlhcHAvaW5kZXhcIjtcbmltcG9ydCB3ZUNoYXRNb2R1bGUgZnJvbSBcIi4vd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYnl0ZWRhbmNlTW9kdWxlIGZyb20gXCIuL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleFwiO1xuaW1wb3J0IHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmltcG9ydCBrdWFpU2hvdU1vZHVsZSBmcm9tIFwiLi9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJhaUR1TW9kdWxlIGZyb20gXCIuL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleFwiO1xuZXhwb3J0IHZhciBvbkNoYW5nZSA9IGZ1bmN0aW9uIG9uQ2hhbmdlKGNiKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUub25DaGFuZ2UoY2IpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5vbkNoYW5nZShjYik7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUub25DaGFuZ2UoY2IpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLm9uQ2hhbmdlKGNiKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5vbkNoYW5nZShjYik7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5vbkNoYW5nZShjYik7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yaQWNjZWxlcm9tZXRlcuaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBvZmZDaGFuZ2UgPSBmdW5jdGlvbiBvZmZDaGFuZ2UoY2IpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5vZmZDaGFuZ2UoY2IpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5vZmZDaGFuZ2UoY2IpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLm9mZkNoYW5nZShjYik7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUub2ZmQ2hhbmdlKGNiKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5vZmZDaGFuZ2UoY2IpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUub2ZmQ2hhbmdlKGNiKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpBY2NlbGVyb21ldGVy5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIG9uQ2hhbmdlOiBvbkNoYW5nZSxcbiAgb2ZmQ2hhbmdlOiBvZmZDaGFuZ2Vcbn07IiwiaW1wb3J0IG9mZkNoYW5nZSBmcm9tIFwiLi9vZmZDaGFuZ2VcIjtcbmltcG9ydCBvbkNoYW5nZSBmcm9tIFwiLi9vbkNoYW5nZVwiO1xuZXhwb3J0IHsgb25DaGFuZ2UsIG9mZkNoYW5nZSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBvbkNoYW5nZTogb25DaGFuZ2UsXG4gIG9mZkNoYW5nZTogb2ZmQ2hhbmdlXG59OyIsInZhciBvZmZDaGFuZ2UgPSBmdW5jdGlvbiBvZmZDaGFuZ2UoY2IpIHtcbiAgcmV0dXJuIGtzLm9mZkFjY2VsZXJvbWV0ZXJDaGFuZ2UoY2IpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgb2ZmQ2hhbmdlOyIsInZhciBvbkNoYW5nZSA9IGZ1bmN0aW9uIG9uQ2hhbmdlKGNiKSB7XG4gIHJldHVybiBrcy5vbkFjY2VsZXJvbWV0ZXJDaGFuZ2UoY2IpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgb25DaGFuZ2U7IiwiaW1wb3J0IG9mZkNoYW5nZSBmcm9tIFwiLi9vZmZDaGFuZ2VcIjtcbmltcG9ydCBvbkNoYW5nZSBmcm9tIFwiLi9vbkNoYW5nZVwiO1xuZXhwb3J0IHsgb25DaGFuZ2UsIG9mZkNoYW5nZSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBvbkNoYW5nZTogb25DaGFuZ2UsXG4gIG9mZkNoYW5nZTogb2ZmQ2hhbmdlXG59OyIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xudmFyIG9mZkNoYW5nZSA9IGZ1bmN0aW9uIG9mZkNoYW5nZShjYikge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEk6IGFjY2VsZXJvbWV0ZXLkuI3mlK/mjIEnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG9mZkNoYW5nZTsiLCIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbnZhciBvbkNoYW5nZSA9IGZ1bmN0aW9uIG9uQ2hhbmdlKGNiKSB7XG4gIHRocm93IG5ldyBFcnJvcignVW5pIEFQSTogYWNjZWxlcm9tZXRlcuS4jeaUr+aMgScpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgb25DaGFuZ2U7IiwiaW1wb3J0IG9mZkNoYW5nZSBmcm9tIFwiLi9vZmZDaGFuZ2VcIjtcbmltcG9ydCBvbkNoYW5nZSBmcm9tIFwiLi9vbkNoYW5nZVwiO1xuZXhwb3J0IHsgb25DaGFuZ2UsIG9mZkNoYW5nZSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBvbkNoYW5nZTogb25DaGFuZ2UsXG4gIG9mZkNoYW5nZTogb2ZmQ2hhbmdlXG59OyIsInZhciBvZmZDaGFuZ2UgPSBmdW5jdGlvbiBvZmZDaGFuZ2UoY2IpIHtcbiAgcmV0dXJuIHd4Lm9mZkFjY2VsZXJvbWV0ZXJDaGFuZ2UoY2IpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgb2ZmQ2hhbmdlOyIsInZhciBvbkNoYW5nZSA9IGZ1bmN0aW9uIG9uQ2hhbmdlKGNiKSB7XG4gIHJldHVybiB3eC5vbkFjY2VsZXJvbWV0ZXJDaGFuZ2UoY2IpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgb25DaGFuZ2U7IiwiZXhwb3J0IHZhciBDT05UQUlORVJfTkFNRSA9IHtcbiAgV0VDSEFUOiAnd2VjaGF0TWluaVByb2dyYW0nLFxuICBBTElQQVk6ICdhbGlNaW5pQXBwJyxcbiAgQllURTogJ2J5dGVkYW5jZU1pY3JvQXBwJyxcbiAgV0VCOiAnd2ViJyxcbiAgQkFJRFU6ICdiYWlkdVNtYXJ0UHJvZ3JhbScsXG4gIEtXQUk6ICdrdWFpc2hvdU1pbmlQcm9ncmFtJ1xufTsiLCJmdW5jdGlvbiBpc1VuZGVmKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgdmFyIGlzRGluZ2RpbmdNaW5pYXBwID0gIWlzVW5kZWYodHlwZW9mIGRkKSAmJiBkZCAhPT0gbnVsbCAmJiAhaXNVbmRlZih0eXBlb2YgZGQuYWxlcnQpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNpZnkoYXBpKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBwcm9taXNpZnlBcmcgPSBhcmc7XG4gICAgICBhcGkoX2V4dGVuZHMoe30sIHByb21pc2lmeUFyZywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5zdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuc3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiBvblN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuZmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25GYWlsOiBmdW5jdGlvbiBvbkZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uRmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uRmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuY29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uIG9uQ29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH07XG59IiwidmFyIF9leGNsdWRlZCA9IFtcIl9leHRcIl07XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IHZhciBzdHlsZU91dCA9IGZ1bmN0aW9uIHN0eWxlT3V0KG91dHB1dCwgb3JpZ2luYWxJbnB1dCwgb3JpZ2luYWxPdXRwdXQpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRwdXQsIHtcbiAgICBfb3JpZ2luYWw6IHtcbiAgICAgIGlucHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxJbnB1dCksXG4gICAgICAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g5a+55YWl5Y+C6L+b6KGMIGZvcm1hdCDkuYvlkI7nmoTnu5PmnpxcbiAgICAgIG91dHB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsT3V0cHV0KSAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g6L+U5Zue5YC8IGZvcm1hdCDkuYvliY3nmoTnu5PmnpxcblxuICAgIH1cbiAgfSk7XG59O1xuZXhwb3J0IHZhciBzdHlsZUluID0gZnVuY3Rpb24gc3R5bGVJbihvcHRpb25zLCBiYXNlTmFtZSkge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfcmVmJF9leHQgPSBfcmVmLl9leHQsXG4gICAgICBfZXh0ID0gX3JlZiRfZXh0ID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkX2V4dCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgX2V4dFtiYXNlTmFtZV0gfHwge30pO1xufTsiLCJpbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5cbnZhciBzaG93QWN0aW9uU2hlZXQgPSBmdW5jdGlvbiBzaG93QWN0aW9uU2hlZXQoYXJncykge1xuICBhcmdzLml0ZW1zID0gYXJncy5pdGVtTGlzdDtcbiAgaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5zaG93QWN0aW9uU2hlZXQoYXJncykgOiBteS5zaG93QWN0aW9uU2hlZXQoYXJncyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoc2hvd0FjdGlvblNoZWV0LCBDT05UQUlORVJfTkFNRS5BTElQQVkpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IGRlZmF1bHQgbm9ybWFsaXplKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHN3YW4uc2hvd0FjdGlvblNoZWV0KF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChlcnIpIHtcbiAgICAgIGlmIChlcnIgJiYgZXJyLmVyck1zZyA9PT0gJ3Nob3dBY3Rpb25TaGVldDpmYWlsIGNhbmNlbCcpIHtcbiAgICAgICAgYXJncy5zdWNjZXNzKHtcbiAgICAgICAgICB0YXBJbmRleDogLTFcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhcmdzLmZhaWwoZXJyKTtcbiAgICAgIH1cbiAgICB9XG4gIH0pKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShmdW5jdGlvbiAoYXJncykge1xuICB0dC5zaG93QWN0aW9uU2hlZXQoX2V4dGVuZHMoe30sIGFyZ3MsIHtcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKGVycikge1xuICAgICAgaWYgKGVyciAmJiBlcnIuZXJyTXNnID09PSAnc2hvd0FjdGlvblNoZWV0OmZhaWwgY2FuY2VsJykge1xuICAgICAgICBhcmdzLnN1Y2Nlc3Moe1xuICAgICAgICAgIHRhcEluZGV4OiAtMVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFyZ3MuZmFpbChlcnIpO1xuICAgICAgfVxuICAgIH1cbiAgfSkpO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuLyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tIFwiLi9fdXRpbHMvcHJvbWlzaWZ5XCI7XG5pbXBvcnQgeyBzdHlsZUluIH0gZnJvbSBcIi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiO1xuXG4vKipcbiAqIEBwYXJhbSByZXNcbiAqL1xudmFyIGZvcm1hdFJlc3BvbnNlID0gZnVuY3Rpb24gZm9ybWF0UmVzcG9uc2UocmVzKSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzLCB7XG4gICAgdGFwSW5kZXg6IHJlcy50YXBJbmRleCAhPSB1bmRlZmluZWQgPyByZXMudGFwSW5kZXggOiByZXMuaW5kZXhcbiAgfSk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICBhcmdzID0gc3R5bGVJbihhcmdzLCBjb250YWluZXJOYW1lKTtcbiAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoX2V4dGVuZHMoe30sIGFyZ3MsIHtcbiAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgIGFyZ3Muc3VjY2VzcyAmJiBhcmdzLnN1Y2Nlc3MoZm9ybWF0UmVzcG9uc2UocmVzKSk7XG4gICAgICB9LFxuICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICBhcmdzLmNvbXBsZXRlICYmIGFyZ3MuY29tcGxldGUocmVzKTtcbiAgICAgIH1cbiAgICB9KSkudGhlbihmb3JtYXRSZXNwb25zZSk7XG4gIH07XG59IiwiaW1wb3J0IHsgaXNNaW5pQXBwLCBpc1dlQ2hhdE1pbmlQcm9ncmFtLCBpc1dlYiwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtLCBpc0JhaWR1U21hcnRQcm9ncmFtIH0gZnJvbSBcIkB1bmkvZW52XCI7XG5pbXBvcnQgYWxpTWluaUFwcE1vZHVsZSBmcm9tIFwiLi9hbGktbWluaWFwcC9pbmRleFwiO1xuaW1wb3J0IHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmltcG9ydCB3ZUNoYXRNb2R1bGUgZnJvbSBcIi4vd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYnl0ZWRhbmNlTW9kdWxlIGZyb20gXCIuL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleFwiO1xuaW1wb3J0IGt1YWlTaG91TW9kdWxlIGZyb20gXCIuL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYmFpRHVNb2R1bGUgZnJvbSBcIi4vYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4XCI7XG5leHBvcnQgdmFyIHNob3dBY3Rpb25TaGVldCA9IGZ1bmN0aW9uIHNob3dBY3Rpb25TaGVldChhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yac2hvd0FjdGlvblNoZWV05pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBzaG93QWN0aW9uU2hlZXQ7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoZnVuY3Rpb24gKGFyZ3MpIHtcbiAga3Muc2hvd0FjdGlvblNoZWV0KF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChlcnIpIHtcbiAgICAgIGlmIChlcnIgJiYgZXJyLmVyck1zZyA9PT0gJ3Nob3dBY3Rpb25TaGVldDogZmFpbCBjYW5jZWwnKSB7XG4gICAgICAgIGFyZ3Muc3VjY2Vzcyh7XG4gICAgICAgICAgdGFwSW5kZXg6IC0xXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgYXJncy5mYWlsKGVycik7XG4gICAgICB9XG4gICAgfVxuICB9KSk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBjbHNQcmVmaXggPSAnX191bml2ZXJzYWxfYWN0aW9uc2hlZXQnO1xudmFyIHN0eWxlcyA9IChcIi5cIiArIGNsc1ByZWZpeCArIFwiIHtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIGJhY2tncm91bmQ6ICNmZmY7XFxuICBjb2xvcjogIzAwMDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBib3JkZXItcmFkaXVzOiAxMnB4IDEycHggMCAwO1xcbiAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICB6LWluZGV4OiA5OTk5O1xcbiAgb3V0bGluZTogbm9uZTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGFuaW1hdGlvbi1kdXJhdGlvbjogLjNzO1xcbiAgYW5pbWF0aW9uLWZpbGwtbW9kZTogYm90aDtcXG59XFxuLlwiICsgY2xzUHJlZml4ICsgXCJfbWFzayB7XFxuICBjb250ZW50OiBcXFwiXFxcIjtcXG4gIHBvc2l0aW9uOiBmaXhlZDtcXG4gIGxlZnQ6IDA7XFxuICByaWdodDogMDtcXG4gIGJvdHRvbTogMDtcXG4gIHRvcDogMDtcXG4gIG1hcmdpbjogYXV0bztcXG4gIGRpc3BsYXk6IGJsb2NrO1xcbiAgei1pbmRleDogOTk5OTtcXG4gIGJhY2tncm91bmQ6ICMwMDA7XFxuICBvcGFjaXR5OiAwO1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuM3M7XFxuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xcbn1cXG4uXCIgKyBjbHNQcmVmaXggKyBcIl9pdGVtIHtcXG4gIHBhZGRpbmc6IDE2cHggMDtcXG4gIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjZWVlO1xcbn1cXG4uXCIgKyBjbHNQcmVmaXggKyBcIl9jYW5jZWwge1xcbiAgcGFkZGluZzogMTZweCAwO1xcbiAgYm9yZGVyLXRvcDogMTBweCBzb2xpZCAjZWVlO1xcbn1cXG5Aa2V5ZnJhbWVzIFwiICsgY2xzUHJlZml4ICsgXCJfc2xpZGVJbiB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogdHJhbnNsYXRlWSgxMDAlKTtcXG4gICAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBcIiArIGNsc1ByZWZpeCArIFwiX3NsaWRlT3V0IHtcXG4gIDAlIHtcXG4gICAgdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDApO1xcbiAgICAtd2Via2l0LXRyYW5zZm9ybTogdHJhbnNsYXRlWSgwKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoMTAwJSk7XFxuICAgIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVZKDEwMCUpO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIFwiICsgY2xzUHJlZml4ICsgXCJfZmFkZUluIHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAuNjtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBcIiArIGNsc1ByZWZpeCArIFwiX2ZhZGVPdXQge1xcbiAgMCUge1xcbiAgICBvcGFjaXR5OiAuNjtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbn1cIikucmVwbGFjZSgvXFxuL2csICcnKTtcbnZhciBzdHlsZUVsZW1lbnQgPSBudWxsO1xudmFyIGFjdGlvblNoZWV0RWxlbWVudCA9IG51bGw7XG5cbnZhciBoaWRlRm4gPSBmdW5jdGlvbiBoaWRlRm4oKSB7fTtcblxudmFyIGhpZGVDYWxsYmFjayA9IGZ1bmN0aW9uIGhpZGVDYWxsYmFjaygpIHt9O1xuXG52YXIgc2hvd0FjdGlvblNoZWV0ID0gZnVuY3Rpb24gc2hvd0FjdGlvblNoZWV0KGFyZ3MpIHtcbiAgdHJ5IHtcbiAgICBpZiAoIXN0eWxlRWxlbWVudCkge1xuICAgICAgLy8gY3JlYXRlIGEgc3R5bGUgdGFnIGZvciBrZXlmcmFtZXNcbiAgICAgIHN0eWxlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ3N0eWxlJyk7XG4gICAgICBzdHlsZUVsZW1lbnQuaW5uZXJIVE1MID0gc3R5bGVzO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpO1xuICAgIH1cblxuICAgIGlmICghYWN0aW9uU2hlZXRFbGVtZW50KSB7XG4gICAgICAvLyBjcmVhdGUgYSBhY3Rpb25zaGVldCBlbGVtZW50XG4gICAgICBhY3Rpb25TaGVldEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgLy8gY3JlYXRlIGEgbWFzayBlbGVtZW50XG5cbiAgICAgIHZhciBtYXNrRWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBtYXNrRWxlLmNsYXNzTmFtZSA9IGNsc1ByZWZpeCArIFwiX21hc2tcIjtcbiAgICAgIG1hc2tFbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGhpZGVDYWxsYmFjaygtMSk7XG4gICAgICB9KTtcbiAgICAgIGFjdGlvblNoZWV0RWxlbWVudC5hcHBlbmRDaGlsZChtYXNrRWxlKTsgLy8gY3JlYXRlIGNvbnRhaW5lciBlbGVtZW50XG5cbiAgICAgIHZhciBjb250YWluZXJFbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGNvbnRhaW5lckVsZS5jbGFzc05hbWUgPSBjbHNQcmVmaXg7IC8vIGFkZCBhbGwgaXRlbSBlbGVtZW50XG5cbiAgICAgIHZhciBpdGVtTGlzdCA9IGFyZ3MuaXRlbUxpc3QgfHwgW107XG5cbiAgICAgIHZhciBfbG9vcCA9IGZ1bmN0aW9uIF9sb29wKGluZGV4KSB7XG4gICAgICAgIHZhciBpdGVtRWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICAgIGl0ZW1FbGUuY2xhc3NOYW1lID0gY2xzUHJlZml4ICsgXCJfaXRlbVwiO1xuICAgICAgICBpdGVtRWxlLmlubmVyVGV4dCA9IGl0ZW1MaXN0W2luZGV4XTsgLy8gc3VwcG9ydCBmb3IgQVJJQSwgYWRkIHRhYmluZGV4IGZvciBmb2N1c1xuICAgICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RhYmluZGV4XG5cbiAgICAgICAgaXRlbUVsZS5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgXCJcIiArIGluZGV4KTsgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLWxvb3AtZnVuY1xuXG4gICAgICAgIGl0ZW1FbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGlkZUNhbGxiYWNrKGluZGV4KTtcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbnRhaW5lckVsZS5hcHBlbmRDaGlsZChpdGVtRWxlKTtcbiAgICAgIH07XG5cbiAgICAgIGZvciAodmFyIGluZGV4ID0gMDsgaW5kZXggPCBpdGVtTGlzdC5sZW5ndGg7IGluZGV4KyspIHtcbiAgICAgICAgX2xvb3AoaW5kZXgpO1xuICAgICAgfSAvLyBhZGQgY2FuY2VsIGVsZW1lbnRcblxuXG4gICAgICB2YXIgY2FuY2VsRWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBjYW5jZWxFbGUuY2xhc3NOYW1lID0gY2xzUHJlZml4ICsgXCJfY2FuY2VsXCI7XG4gICAgICBjYW5jZWxFbGUuaW5uZXJUZXh0ID0gJ+WPlua2iCc7XG4gICAgICBjYW5jZWxFbGUuc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgICAgY2FuY2VsRWxlLmFkZEV2ZW50TGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24gKCkge1xuICAgICAgICBoaWRlQ2FsbGJhY2soLTEpO1xuICAgICAgfSk7XG4gICAgICBjb250YWluZXJFbGUuYXBwZW5kQ2hpbGQoY2FuY2VsRWxlKTtcbiAgICAgIGFjdGlvblNoZWV0RWxlbWVudC5hcHBlbmRDaGlsZChjb250YWluZXJFbGUpO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhY3Rpb25TaGVldEVsZW1lbnQpO1xuICAgICAgbWFza0VsZS5zdHlsZS5hbmltYXRpb25OYW1lID0gY2xzUHJlZml4ICsgXCJfZmFkZUluXCI7XG4gICAgICBjb250YWluZXJFbGUuc3R5bGUuYW5pbWF0aW9uTmFtZSA9IGNsc1ByZWZpeCArIFwiX3NsaWRlSW5cIjtcblxuICAgICAgaGlkZUZuID0gZnVuY3Rpb24gaGlkZUZuKGNhbGxiYWNrKSB7XG4gICAgICAgIG1hc2tFbGUuc3R5bGUuYW5pbWF0aW9uTmFtZSA9IGNsc1ByZWZpeCArIFwiX2ZhZGVPdXRcIjtcbiAgICAgICAgY29udGFpbmVyRWxlLnN0eWxlLmFuaW1hdGlvbk5hbWUgPSBjbHNQcmVmaXggKyBcIl9zbGlkZU91dFwiO1xuICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGFjdGlvblNoZWV0RWxlbWVudCk7XG4gICAgICAgICAgYWN0aW9uU2hlZXRFbGVtZW50ID0gbnVsbDtcbiAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICB9LCAzMDApO1xuICAgICAgfTtcblxuICAgICAgaGlkZUNhbGxiYWNrID0gZnVuY3Rpb24gaGlkZUNhbGxiYWNrKGluZGV4KSB7XG4gICAgICAgIGhpZGVGbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXJncy5zdWNjZXNzKHtcbiAgICAgICAgICAgIHRhcEluZGV4OiBpbmRleFxuICAgICAgICAgIH0pO1xuICAgICAgICAgIGFyZ3MuY29tcGxldGUoe1xuICAgICAgICAgICAgdGFwSW5kZXg6IGluZGV4XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfTtcbiAgICB9XG4gIH0gY2F0Y2ggKGVycikge1xuICAgIGFyZ3MuZmFpbChlcnIpO1xuICAgIGFyZ3MuY29tcGxldGUoZXJyKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgbm9ybWFsaXplKHNob3dBY3Rpb25TaGVldCwgQ09OVEFJTkVSX05BTUUuV0VCKTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShmdW5jdGlvbiAoYXJncykge1xuICB3eC5zaG93QWN0aW9uU2hlZXQoX2V4dGVuZHMoe30sIGFyZ3MsIHtcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKGVycikge1xuICAgICAgaWYgKGVyciAmJiBlcnIuZXJyTXNnID09PSAnc2hvd0FjdGlvblNoZWV0OmZhaWwgY2FuY2VsJykge1xuICAgICAgICBhcmdzLnN1Y2Nlc3Moe1xuICAgICAgICAgIHRhcEluZGV4OiAtMVxuICAgICAgICB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGFyZ3MuZmFpbChlcnIpO1xuICAgICAgfVxuICAgIH1cbiAgfSkpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuQ09OVEFJTkVSX05BTUUgPSB2b2lkIDA7XG52YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07XG5leHBvcnRzLkNPTlRBSU5FUl9OQU1FID0gQ09OVEFJTkVSX05BTUU7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmlzRGluZ2RpbmdNaW5pYXBwID0gdm9pZCAwO1xuXG5mdW5jdGlvbiBpc1VuZGVmKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09ICd1bmRlZmluZWQnO1xufVxuXG52YXIgaXNEaW5nZGluZ01pbmlhcHAgPSAhaXNVbmRlZih0eXBlb2YgZGQpICYmIGRkICE9PSBudWxsICYmICFpc1VuZGVmKHR5cGVvZiBkZC5hbGVydCk7XG5leHBvcnRzLmlzRGluZ2RpbmdNaW5pYXBwID0gaXNEaW5nZGluZ01pbmlhcHA7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLnByb21pc2lmeSA9IHByb21pc2lmeTtcblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gcHJvbWlzaWZ5KGFwaSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcHJvbWlzaWZ5QXJnID0gYXJnO1xuICAgICAgYXBpKF9leHRlbmRzKHt9LCBwcm9taXNpZnlBcmcsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuc3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gb25TdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5mYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRmFpbDogZnVuY3Rpb24gb25GYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5jb21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbiBvbkNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25Db21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9O1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5zdHlsZUluID0gZXhwb3J0cy5zdHlsZU91dCA9IHZvaWQgMDtcbnZhciBfZXhjbHVkZWQgPSBbXCJfZXh0XCJdO1xuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbnZhciBzdHlsZU91dCA9IGZ1bmN0aW9uIHN0eWxlT3V0KG91dHB1dCwgb3JpZ2luYWxJbnB1dCwgb3JpZ2luYWxPdXRwdXQpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRwdXQsIHtcbiAgICBfb3JpZ2luYWw6IHtcbiAgICAgIGlucHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxJbnB1dCksXG4gICAgICAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g5a+55YWl5Y+C6L+b6KGMIGZvcm1hdCDkuYvlkI7nmoTnu5PmnpxcbiAgICAgIG91dHB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsT3V0cHV0KSAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g6L+U5Zue5YC8IGZvcm1hdCDkuYvliY3nmoTnu5PmnpxcblxuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnRzLnN0eWxlT3V0ID0gc3R5bGVPdXQ7XG5cbnZhciBzdHlsZUluID0gZnVuY3Rpb24gc3R5bGVJbihvcHRpb25zLCBiYXNlTmFtZSkge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfcmVmJF9leHQgPSBfcmVmLl9leHQsXG4gICAgICBfZXh0ID0gX3JlZiRfZXh0ID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkX2V4dCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgX2V4dFtiYXNlTmFtZV0gfHwge30pO1xufTtcblxuZXhwb3J0cy5zdHlsZUluID0gc3R5bGVJbjsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9taW5pYXBwRW52QXBwID0gcmVxdWlyZShcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCIpO1xuXG52YXIgX2NvbnN0YW50ID0gcmVxdWlyZShcIi4uL191dGlscy9jb25zdGFudFwiKTtcblxudmFyIF9jb21tb24gPSByZXF1aXJlKFwiLi4vY29tbW9uXCIpO1xuXG52YXIgc2hvd0FjdGlvblNoZWV0ID0gZnVuY3Rpb24gc2hvd0FjdGlvblNoZWV0KGFyZ3MpIHtcbiAgYXJncy5pdGVtcyA9IGFyZ3MuaXRlbUxpc3Q7XG4gIF9taW5pYXBwRW52QXBwLmlzRGluZ2RpbmdNaW5pYXBwID8gZGQuc2hvd0FjdGlvblNoZWV0KGFyZ3MpIDogbXkuc2hvd0FjdGlvblNoZWV0KGFyZ3MpO1xufTtcblxudmFyIF9kZWZhdWx0ID0gKDAsIF9jb21tb24ubm9ybWFsaXplKShzaG93QWN0aW9uU2hlZXQsIF9jb25zdGFudC5DT05UQUlORVJfTkFNRS5BTElQQVkpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMubm9ybWFsaXplID0gbm9ybWFsaXplO1xuXG52YXIgX3Byb21pc2lmeSA9IHJlcXVpcmUoXCIuL191dGlscy9wcm9taXNpZnlcIik7XG5cbnZhciBfc3R5bGVPcHRpb25zID0gcmVxdWlyZShcIi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiKTtcblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuLyoqXG4gKiBAcGFyYW0gcmVzXG4gKi9cbnZhciBmb3JtYXRSZXNwb25zZSA9IGZ1bmN0aW9uIGZvcm1hdFJlc3BvbnNlKHJlcykge1xuICByZXR1cm4gX2V4dGVuZHMoe30sIHJlcywge1xuICAgIHRhcEluZGV4OiByZXMudGFwSW5kZXggIT0gdW5kZWZpbmVkID8gcmVzLnRhcEluZGV4IDogcmVzLmluZGV4XG4gIH0pO1xufTtcblxuZnVuY3Rpb24gbm9ybWFsaXplKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICBhcmdzID0gKDAsIF9zdHlsZU9wdGlvbnMuc3R5bGVJbikoYXJncywgY29udGFpbmVyTmFtZSk7XG4gICAgcmV0dXJuICgwLCBfcHJvbWlzaWZ5LnByb21pc2lmeSkoYXBpKShfZXh0ZW5kcyh7fSwgYXJncywge1xuICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgYXJncy5zdWNjZXNzICYmIGFyZ3Muc3VjY2Vzcyhmb3JtYXRSZXNwb25zZShyZXMpKTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgIGFyZ3MuY29tcGxldGUgJiYgYXJncy5jb21wbGV0ZShyZXMpO1xuICAgICAgfVxuICAgIH0pKS50aGVuKGZvcm1hdFJlc3BvbnNlKTtcbiAgfTtcbn0iLCJleHBvcnQgdmFyIENPTlRBSU5FUl9OQU1FID0ge1xuICBXRUNIQVQ6ICd3ZWNoYXRNaW5pUHJvZ3JhbScsXG4gIEFMSVBBWTogJ2FsaU1pbmlBcHAnLFxuICBCWVRFOiAnYnl0ZWRhbmNlTWljcm9BcHAnLFxuICBXRUI6ICd3ZWInLFxuICBCQUlEVTogJ2JhaWR1U21hcnRQcm9ncmFtJyxcbiAgS1dBSTogJ2t1YWlzaG91TWluaVByb2dyYW0nXG59OyIsImZ1bmN0aW9uIGlzVW5kZWYodHlwZSkge1xuICByZXR1cm4gdHlwZSA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbmV4cG9ydCB2YXIgaXNEaW5nZGluZ01pbmlhcHAgPSAhaXNVbmRlZih0eXBlb2YgZGQpICYmIGRkICE9PSBudWxsICYmICFpc1VuZGVmKHR5cGVvZiBkZC5hbGVydCk7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2lmeShhcGkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHByb21pc2lmeUFyZyA9IGFyZztcbiAgICAgIGFwaShfZXh0ZW5kcyh7fSwgcHJvbWlzaWZ5QXJnLCB7XG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5zdWNjZXNzKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBvblN1Y2Nlc3M6IGZ1bmN0aW9uIG9uU3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25TdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25TdWNjZXNzKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5mYWlsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuZmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBvbkZhaWw6IGZ1bmN0aW9uIG9uRmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25GYWlsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25GYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuY29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5jb21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24gb25Db21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25Db21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfTtcbn0iLCJ2YXIgX2V4Y2x1ZGVkID0gW1wiX2V4dFwiXTtcblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgdmFyIHN0eWxlT3V0ID0gZnVuY3Rpb24gc3R5bGVPdXQob3V0cHV0LCBvcmlnaW5hbElucHV0LCBvcmlnaW5hbE91dHB1dCkge1xuICByZXR1cm4gX2V4dGVuZHMoe30sIG91dHB1dCwge1xuICAgIF9vcmlnaW5hbDoge1xuICAgICAgaW5wdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbElucHV0KSxcbiAgICAgIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDlr7nlhaXlj4Lov5vooYwgZm9ybWF0IOS5i+WQjueahOe7k+aenFxuICAgICAgb3V0cHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxPdXRwdXQpIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDov5Tlm57lgLwgZm9ybWF0IOS5i+WJjeeahOe7k+aenFxuXG4gICAgfVxuICB9KTtcbn07XG5leHBvcnQgdmFyIHN0eWxlSW4gPSBmdW5jdGlvbiBzdHlsZUluKG9wdGlvbnMsIGJhc2VOYW1lKSB7XG4gIHZhciBfcmVmID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIF9yZWYkX2V4dCA9IF9yZWYuX2V4dCxcbiAgICAgIF9leHQgPSBfcmVmJF9leHQgPT09IHZvaWQgMCA/IHt9IDogX3JlZiRfZXh0LFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXN0LCBfZXh0W2Jhc2VOYW1lXSB8fCB7fSk7XG59OyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcblxudmFyIGFsZXJ0ID0gZnVuY3Rpb24gYWxlcnQoYXJncykge1xuICByZXR1cm4gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5hbGVydChhcmdzKSA6IG15LmFsZXJ0KGFyZ3MpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbm9ybWFsaXplKGFsZXJ0LCBDT05UQUlORVJfTkFNRS5BTElQQVkpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG52YXIgYWxlcnQgPSBmdW5jdGlvbiBhbGVydChhcmdzKSB7XG4gIHN3YW4uc2hvd01vZGFsKF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgc2hvd0NhbmNlbDogZmFsc2UsXG4gICAgY29uZmlybVRleHQ6IGFyZ3MuYnV0dG9uVGV4dFxuICB9KSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoYWxlcnQsIENPTlRBSU5FUl9OQU1FLkJBSURVKTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxudmFyIGFsZXJ0ID0gZnVuY3Rpb24gYWxlcnQoYXJncykge1xuICB0dC5zaG93TW9kYWwoX2V4dGVuZHMoe30sIGFyZ3MsIHtcbiAgICBzaG93Q2FuY2VsOiBmYWxzZSxcbiAgICBjb25maXJtVGV4dDogYXJncy5idXR0b25UZXh0XG4gIH0pKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShhbGVydCwgQ09OVEFJTkVSX05BTUUuQllURSk7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSBcIi4vX3V0aWxzL3Byb21pc2lmeVwiO1xuaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcbmV4cG9ydCBmdW5jdGlvbiBzdHlsZU9wdGlvbnMob3B0aW9ucykge1xuICB2YXIgREVGQVVMVF9SRVFVRVNUX09QVElPTlMgPSB7XG4gICAgY29udGVudDogJycsXG4gICAgdGl0bGU6ICcnLFxuICAgIGJ1dHRvblRleHQ6ICfnoa7lrponXG4gIH07XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgREVGQVVMVF9SRVFVRVNUX09QVElPTlMsIG9wdGlvbnMpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlT3B0aW9ucyhzdHlsZUluKGFyZ3MsIGNvbnRhaW5lck5hbWUpKSk7XG4gIH07XG59IiwiaW1wb3J0IHsgaXNNaW5pQXBwLCBpc1dlQ2hhdE1pbmlQcm9ncmFtLCBpc1dlYiwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtLCBpc0JhaWR1U21hcnRQcm9ncmFtIH0gZnJvbSBcIkB1bmkvZW52XCI7XG5pbXBvcnQgYWxpTWluaUFwcE1vZHVsZSBmcm9tIFwiLi9hbGktbWluaWFwcC9pbmRleFwiO1xuaW1wb3J0IHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmltcG9ydCB3ZUNoYXRNb2R1bGUgZnJvbSBcIi4vd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYnl0ZWRhbmNlTW9kdWxlIGZyb20gXCIuL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleFwiO1xuaW1wb3J0IGt1YWlTaG91TW9kdWxlIGZyb20gXCIuL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYmFpRHVNb2R1bGUgZnJvbSBcIi4vYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4XCI7XG5leHBvcnQgdmFyIGFsZXJ0ID0gZnVuY3Rpb24gYWxlcnQoYXJncykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlKGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mmFsZXJ05pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBhbGVydDsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxudmFyIGFsZXJ0ID0gZnVuY3Rpb24gYWxlcnQoYXJncykge1xuICBrcy5zaG93TW9kYWwoX2V4dGVuZHMoe30sIGFyZ3MsIHtcbiAgICBzaG93Q2FuY2VsOiBmYWxzZSxcbiAgICBjb25maXJtVGV4dDogYXJncy5idXR0b25UZXh0XG4gIH0pKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShhbGVydCwgQ09OVEFJTkVSX05BTUUuS1dBSSk7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IGNvbmZpcm0gZnJvbSBcIkB1bmkvY29uZmlybS9saWIvd2ViL2luZGV4LmpzXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxudmFyIGFsZXJ0ID0gZnVuY3Rpb24gYWxlcnQoYXJncykge1xuICBjb25maXJtKF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgc2hvd0NhbmNlbDogZmFsc2UsXG4gICAgY29uZmlybVRleHQ6IGFyZ3MuYnV0dG9uVGV4dFxuICB9KSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoYWxlcnQsIENPTlRBSU5FUl9OQU1FLldFQik7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbnZhciBhbGVydCA9IGZ1bmN0aW9uIGFsZXJ0KGFyZ3MpIHtcbiAgd3guc2hvd01vZGFsKF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgc2hvd0NhbmNlbDogZmFsc2UsXG4gICAgY29uZmlybVRleHQ6IGFyZ3MuYnV0dG9uVGV4dFxuICB9KSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoYWxlcnQsIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7IiwiZXhwb3J0IHZhciBDT05UQUlORVJfTkFNRSA9IHtcbiAgV0VDSEFUOiAnd2VjaGF0TWluaVByb2dyYW0nLFxuICBBTElQQVk6ICdhbGlNaW5pQXBwJyxcbiAgQllURTogJ2J5dGVkYW5jZU1pY3JvQXBwJyxcbiAgV0VCOiAnd2ViJyxcbiAgQkFJRFU6ICdiYWlkdVNtYXJ0UHJvZ3JhbScsXG4gIEtXQUk6ICdrdWFpc2hvdU1pbmlQcm9ncmFtJ1xufTsiLCJ2YXIgX2V4Y2x1ZGVkID0gW1wiX2V4dFwiXTtcblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgdmFyIHN0eWxlT3V0ID0gZnVuY3Rpb24gc3R5bGVPdXQob3V0cHV0LCBvcmlnaW5hbElucHV0LCBvcmlnaW5hbE91dHB1dCkge1xuICByZXR1cm4gX2V4dGVuZHMoe30sIG91dHB1dCwge1xuICAgIF9vcmlnaW5hbDoge1xuICAgICAgaW5wdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbElucHV0KSxcbiAgICAgIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDlr7nlhaXlj4Lov5vooYwgZm9ybWF0IOS5i+WQjueahOe7k+aenFxuICAgICAgb3V0cHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxPdXRwdXQpIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDov5Tlm57lgLwgZm9ybWF0IOS5i+WJjeeahOe7k+aenFxuXG4gICAgfVxuICB9KTtcbn07XG5leHBvcnQgdmFyIHN0eWxlSW4gPSBmdW5jdGlvbiBzdHlsZUluKG9wdGlvbnMsIGJhc2VOYW1lKSB7XG4gIHZhciBfcmVmID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIF9yZWYkX2V4dCA9IF9yZWYuX2V4dCxcbiAgICAgIF9leHQgPSBfcmVmJF9leHQgPT09IHZvaWQgMCA/IHt9IDogX3JlZiRfZXh0LFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXN0LCBfZXh0W2Jhc2VOYW1lXSB8fCB7fSk7XG59OyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgZ2V0TWVyZ2VkT3B0aW9ucyB9IGZyb20gXCIuLi9jb21tb25cIjtcblxuZnVuY3Rpb24gY3JlYXRlQW5pbWF0aW9uKG9wdGlvbnMpIHtcbiAgdmFyIGFuaW1hdGlvbiA9IG15LmNyZWF0ZUFuaW1hdGlvbihnZXRNZXJnZWRPcHRpb25zKENPTlRBSU5FUl9OQU1FLkFMSVBBWSwgb3B0aW9ucykpOyAvLyBvdmVycmlkZVxuXG4gIHZhciBfc3RlcCA9IGFuaW1hdGlvbi5zdGVwLmJpbmQoYW5pbWF0aW9uKTtcblxuICB2YXIgX2V4cG9ydCA9IGFuaW1hdGlvbi5leHBvcnQuYmluZChhbmltYXRpb24pO1xuXG4gIGFuaW1hdGlvbi5zdGVwID0gZnVuY3Rpb24gKG9wdHMpIHtcbiAgICBvcHRzID0gZ2V0TWVyZ2VkT3B0aW9ucyhDT05UQUlORVJfTkFNRS5BTElQQVksIF9leHRlbmRzKHt9LCBvcHRpb25zLCBvcHRzKSk7XG4gICAgcmV0dXJuIF9zdGVwKG9wdHMpO1xuICB9O1xuXG4gIGFuaW1hdGlvbi5leHBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9leHBvcnQoKTtcbiAgfTtcblxuICByZXR1cm4gYW5pbWF0aW9uO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVBbmltYXRpb247IiwiaW1wb3J0IGNyZWF0ZUFuaW1hdGlvbiBmcm9tIFwiLi9jcmVhdGVBbmltYXRpb25cIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUNyZWF0ZVRyYW5zaXRpb24gfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5cbmZ1bmN0aW9uIGNyZWF0ZVRyYW5zaXRpb24ob3B0aW9ucykge1xuICB2YXIgYW5pbWF0aW9uID0gY3JlYXRlQW5pbWF0aW9uKCk7XG4gIHJldHVybiBub3JtYWxpemVDcmVhdGVUcmFuc2l0aW9uKGFuaW1hdGlvbiwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVRyYW5zaXRpb247IiwiaW1wb3J0IGNyZWF0ZUFuaW1hdGlvbiBmcm9tIFwiLi9jcmVhdGVBbmltYXRpb25cIjtcbmltcG9ydCBjcmVhdGVUcmFuc2l0aW9uIGZyb20gXCIuL2NyZWF0ZVRyYW5zaXRpb25cIjtcbmV4cG9ydCB7IGNyZWF0ZUFuaW1hdGlvbiwgY3JlYXRlVHJhbnNpdGlvbiB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVBbmltYXRpb246IGNyZWF0ZUFuaW1hdGlvbixcbiAgY3JlYXRlVHJhbnNpdGlvbjogY3JlYXRlVHJhbnNpdGlvblxufTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IGdldE1lcmdlZE9wdGlvbnMgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5cbmZ1bmN0aW9uIGNyZWF0ZUFuaW1hdGlvbihvcHRpb25zKSB7XG4gIHZhciBhbmltYXRpb24gPSBzd2FuLmNyZWF0ZUFuaW1hdGlvbihnZXRNZXJnZWRPcHRpb25zKENPTlRBSU5FUl9OQU1FLkJBSURVLCBvcHRpb25zKSk7IC8vIG92ZXJyaWRlXG5cbiAgdmFyIF9zdGVwID0gYW5pbWF0aW9uLnN0ZXAuYmluZChhbmltYXRpb24pO1xuXG4gIHZhciBfZXhwb3J0ID0gYW5pbWF0aW9uLmV4cG9ydC5iaW5kKGFuaW1hdGlvbik7XG5cbiAgYW5pbWF0aW9uLnN0ZXAgPSBmdW5jdGlvbiAob3B0cykge1xuICAgIG9wdHMgPSBnZXRNZXJnZWRPcHRpb25zKENPTlRBSU5FUl9OQU1FLkJBSURVLCBfZXh0ZW5kcyh7fSwgb3B0aW9ucywgb3B0cykpO1xuICAgIHJldHVybiBfc3RlcChvcHRzKTtcbiAgfTtcblxuICBhbmltYXRpb24uZXhwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfZXhwb3J0KCk7XG4gIH07XG5cbiAgcmV0dXJuIGFuaW1hdGlvbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQW5pbWF0aW9uOyIsImltcG9ydCBjcmVhdGVBbmltYXRpb24gZnJvbSBcIi4vY3JlYXRlQW5pbWF0aW9uXCI7XG5pbXBvcnQgeyBub3JtYWxpemVDcmVhdGVUcmFuc2l0aW9uIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuXG5mdW5jdGlvbiBjcmVhdGVUcmFuc2l0aW9uKG9wdGlvbnMpIHtcbiAgdmFyIGFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpO1xuICByZXR1cm4gbm9ybWFsaXplQ3JlYXRlVHJhbnNpdGlvbihhbmltYXRpb24sIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVUcmFuc2l0aW9uOyIsImltcG9ydCBjcmVhdGVBbmltYXRpb24gZnJvbSBcIi4vY3JlYXRlQW5pbWF0aW9uXCI7XG5pbXBvcnQgY3JlYXRlVHJhbnNpdGlvbiBmcm9tIFwiLi9jcmVhdGVUcmFuc2l0aW9uXCI7XG5leHBvcnQgeyBjcmVhdGVBbmltYXRpb24sIGNyZWF0ZVRyYW5zaXRpb24gfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlQW5pbWF0aW9uOiBjcmVhdGVBbmltYXRpb24sXG4gIGNyZWF0ZVRyYW5zaXRpb246IGNyZWF0ZVRyYW5zaXRpb25cbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5pbXBvcnQgeyBnZXRNZXJnZWRPcHRpb25zIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuXG5mdW5jdGlvbiBjcmVhdGVBbmltYXRpb24ob3B0aW9ucykge1xuICB2YXIgYW5pbWF0aW9uID0gdHQuY3JlYXRlQW5pbWF0aW9uKGdldE1lcmdlZE9wdGlvbnMoQ09OVEFJTkVSX05BTUUuQllURSwgb3B0aW9ucykpOyAvLyBvdmVycmlkZVxuXG4gIHZhciBfc3RlcCA9IGFuaW1hdGlvbi5zdGVwLmJpbmQoYW5pbWF0aW9uKTtcblxuICB2YXIgX2V4cG9ydCA9IGFuaW1hdGlvbi5leHBvcnQuYmluZChhbmltYXRpb24pO1xuXG4gIGFuaW1hdGlvbi5zdGVwID0gZnVuY3Rpb24gKG9wdHMpIHtcbiAgICBvcHRzID0gZ2V0TWVyZ2VkT3B0aW9ucyhDT05UQUlORVJfTkFNRS5CWVRFLCBfZXh0ZW5kcyh7fSwgb3B0aW9ucywgb3B0cykpO1xuICAgIHJldHVybiBfc3RlcChvcHRzKTtcbiAgfTtcblxuICBhbmltYXRpb24uZXhwb3J0ID0gZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiBfZXhwb3J0KCk7XG4gIH07XG5cbiAgcmV0dXJuIGFuaW1hdGlvbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQW5pbWF0aW9uOyIsImltcG9ydCBjcmVhdGVBbmltYXRpb24gZnJvbSBcIi4vY3JlYXRlQW5pbWF0aW9uXCI7XG5pbXBvcnQgeyBub3JtYWxpemVDcmVhdGVUcmFuc2l0aW9uIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuXG5mdW5jdGlvbiBjcmVhdGVUcmFuc2l0aW9uKG9wdGlvbnMpIHtcbiAgdmFyIGFuaW1hdGlvbiA9IGNyZWF0ZUFuaW1hdGlvbigpO1xuICByZXR1cm4gbm9ybWFsaXplQ3JlYXRlVHJhbnNpdGlvbihhbmltYXRpb24sIG9wdGlvbnMpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVUcmFuc2l0aW9uOyIsImltcG9ydCBjcmVhdGVBbmltYXRpb24gZnJvbSBcIi4vY3JlYXRlQW5pbWF0aW9uXCI7XG5pbXBvcnQgY3JlYXRlVHJhbnNpdGlvbiBmcm9tIFwiLi9jcmVhdGVUcmFuc2l0aW9uXCI7XG5leHBvcnQgeyBjcmVhdGVBbmltYXRpb24sIGNyZWF0ZVRyYW5zaXRpb24gfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlQW5pbWF0aW9uOiBjcmVhdGVBbmltYXRpb24sXG4gIGNyZWF0ZVRyYW5zaXRpb246IGNyZWF0ZVRyYW5zaXRpb25cbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcblxuLyoqXG4gKiBtZXJnZSBkZWZhdWx0IG9wdGlvbnNcbiAqIEBwYXJhbSBjb250YWluZXJOYW1lXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWVyZ2VkT3B0aW9ucyhjb250YWluZXJOYW1lLCBvcHRpb25zKSB7XG4gIHZhciBtZXJnZWRPcHRpb25zID0gc3R5bGVJbihfZXh0ZW5kcyh7XG4gICAgZHVyYXRpb246IDQwMCxcbiAgICB0aW1pbmdGdW5jdGlvbjogJ2xpbmVhcicsXG4gICAgZGVsYXk6IDAsXG4gICAgdHJhbnNmb3JtT3JpZ2luOiAnNTAlIDUwJSAwJ1xuICB9LCBvcHRpb25zKSwgY29udGFpbmVyTmFtZSk7IC8vIHNldCB0aGUgbWluIGR1cmF0aW9uIHRvIDE2bXMgdG8gYXZvaWQgc29tZSBwcm9ibGVtc1xuXG4gIGlmIChtZXJnZWRPcHRpb25zLmR1cmF0aW9uIDwgMTYpIHtcbiAgICBtZXJnZWRPcHRpb25zLmR1cmF0aW9uID0gMTY7XG4gIH1cblxuICByZXR1cm4gbWVyZ2VkT3B0aW9ucztcbn1cbi8qKlxuICogcGFyc2UgdmFsdWUgb2YgdHJhbnNmb3JtXG4gKiBAcGFyYW0gdmFsdWVcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VUcmFuc2Zvcm0odmFsdWUpIHtcbiAgdmFsdWUgPSBTdHJpbmcodmFsdWUgfHwgJycpO1xuICB2YXIgcG9zID0gMDtcblxuICB2YXIgaXNWYWxpZFdvcmQgPSBmdW5jdGlvbiBpc1ZhbGlkV29yZChjb2RlKSB7XG4gICAgaWYgKGNvZGUgPj0gNjUgJiYgY29kZSA8PSA5MCkgcmV0dXJuIHRydWU7IC8vIEEtWlxuXG4gICAgaWYgKGNvZGUgPj0gOTcgJiYgY29kZSA8PSAxMjIpIHJldHVybiB0cnVlOyAvLyBhLXpcblxuICAgIGlmIChjb2RlID49IDQ4ICYmIGNvZGUgPD0gNTcpIHJldHVybiB0cnVlOyAvLyAwLTlcblxuICAgIGlmIChjb2RlID09PSA0NSB8fCBjb2RlID09PSA0NikgcmV0dXJuIHRydWU7IC8vIGAtYCBvciBgLmBcblxuICAgIHJldHVybiBmYWxzZTtcbiAgfTtcblxuICB2YXIgc2tpcFNwYWNlID0gZnVuY3Rpb24gc2tpcFNwYWNlKCkge1xuICAgIHdoaWxlIChwb3MgPCB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHZhciBjb2RlID0gdmFsdWUuY2hhckNvZGVBdChwb3MpO1xuXG4gICAgICBpZiAoY29kZSA9PT0gMzIgfHwgY29kZSA9PT0gMTYwKSB7XG4gICAgICAgIC8vIGAgYFxuICAgICAgICBwb3MrKztcbiAgICAgIH0gZWxzZSBpZiAoY29kZSA9PT0gMTMgfHwgY29kZSA9PT0gMTAgfHwgY29kZSA9PT0gODIzMiB8fCBjb2RlID09PSA4MjMzKSB7XG4gICAgICAgIC8vIG5ldyBsaW5lXG4gICAgICAgIGlmIChjb2RlID09PSAxMyAmJiB2YWx1ZS5jaGFyQ29kZUF0KHBvcyArIDEpID09PSAxMCkge1xuICAgICAgICAgIC8vIENSTEZcbiAgICAgICAgICBwb3MrKztcbiAgICAgICAgfVxuXG4gICAgICAgIHBvcysrO1xuICAgICAgfSBlbHNlIGlmIChjb2RlID4gOCAmJiBjb2RlIDwgMTQpIHtcbiAgICAgICAgLy8gb3RoZXIgc3BhY2VcbiAgICAgICAgcG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH07XG5cbiAgdmFyIGVhdCA9IGZ1bmN0aW9uIGVhdChfY2hhcikge1xuICAgIGlmICh2YWx1ZVtwb3NdID09PSBfY2hhcikge1xuICAgICAgcG9zKys7XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gZmFsc2U7XG4gIH07XG5cbiAgdmFyIHBhcnNlQXRvbSA9IGZ1bmN0aW9uIHBhcnNlQXRvbSgpIHtcbiAgICB2YXIgbmFtZSA9ICcnO1xuICAgIHZhciBhcmdzID0gW107XG4gICAgdmFyIGlzUmVhZEFyZ3MgPSBmYWxzZTtcbiAgICB2YXIgaXNFeHBlY3RXb3JkID0gdHJ1ZTtcblxuICAgIHdoaWxlIChwb3MgPCB2YWx1ZS5sZW5ndGgpIHtcbiAgICAgIHNraXBTcGFjZSgpO1xuICAgICAgdmFyIGNvZGUgPSB2YWx1ZS5jaGFyQ29kZUF0KHBvcyk7XG5cbiAgICAgIGlmIChpc0V4cGVjdFdvcmQpIHtcbiAgICAgICAgaWYgKCFpc1ZhbGlkV29yZChjb2RlKSkgYnJlYWs7XG4gICAgICAgIHZhciBjaHVua1N0YXJ0ID0gcG9zO1xuXG4gICAgICAgIHdoaWxlIChwb3MgPCB2YWx1ZS5sZW5ndGggJiYgaXNWYWxpZFdvcmQoY29kZSkpIHtcbiAgICAgICAgICBjb2RlID0gdmFsdWUuY2hhckNvZGVBdCgrK3Bvcyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgc3RyID0gdmFsdWUuc2xpY2UoY2h1bmtTdGFydCwgcG9zKTtcblxuICAgICAgICBpZiAoaXNSZWFkQXJncykge1xuICAgICAgICAgIGFyZ3MucHVzaChzdHIpO1xuICAgICAgICAgIGlzRXhwZWN0V29yZCA9IGZhbHNlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5hbWUgPSBzdHI7XG4gICAgICAgICAgc2tpcFNwYWNlKCk7XG4gICAgICAgICAgaWYgKCFlYXQoJygnKSkgYnJlYWs7XG4gICAgICAgICAgaXNSZWFkQXJncyA9IHRydWU7XG4gICAgICAgICAgaXNFeHBlY3RXb3JkID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChjb2RlID09PSA0NCkge1xuICAgICAgICAvLyBgLGBcbiAgICAgICAgaXNFeHBlY3RXb3JkID0gdHJ1ZTtcbiAgICAgICAgcG9zKys7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoaXNFeHBlY3RXb3JkIHx8ICFlYXQoJyknKSkgcmV0dXJuIG51bGw7XG4gICAgaWYgKCFuYW1lIHx8IGFyZ3MubGVuZ3RoID09PSAwKSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4ge1xuICAgICAgbmFtZTogbmFtZSxcbiAgICAgIGFyZ3M6IGFyZ3NcbiAgICB9O1xuICB9O1xuXG4gIHZhciBoYXNJbnZhbGlkID0gZmFsc2U7XG5cbiAgdmFyIGdldFZhbGlkQXJnID0gZnVuY3Rpb24gZ2V0VmFsaWRBcmcodmFsLCB1bml0KSB7XG4gICAgaWYgKHVuaXQgPT09IHZvaWQgMCkge1xuICAgICAgdW5pdCA9ICcnO1xuICAgIH1cblxuICAgIHZhciBtYXRjaCA9IG5ldyBSZWdFeHAoXCJeKC0/XFxcXGQqKFxcXFwuXFxcXGQrKT8pXCIgKyB1bml0ICsgXCIkXCIsICdpJykuZXhlYyh2YWwpO1xuXG4gICAgaWYgKG1hdGNoICYmIG1hdGNoWzFdKSB7XG4gICAgICByZXR1cm4gTnVtYmVyKG1hdGNoWzFdKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFzSW52YWxpZCA9IHRydWU7XG4gICAgfVxuICB9O1xuXG4gIHZhciByZXN1bHQgPSB7fTtcblxuICB3aGlsZSAocG9zIDwgdmFsdWUubGVuZ3RoKSB7XG4gICAgdmFyIHJlcyA9IHBhcnNlQXRvbSgpO1xuICAgIHNraXBTcGFjZSgpO1xuICAgIGlmICghcmVzKSByZXR1cm4ge307XG4gICAgdmFyIGFyZ3MgPSByZXMuYXJncztcblxuICAgIGlmIChbJ3JvdGF0ZScsICdyb3RhdGVYJywgJ3JvdGF0ZVknLCAncm90YXRlWicsICdza2V3JywgJ3NrZXdYJywgJ3NrZXdZJ10uaW5jbHVkZXMocmVzLm5hbWUpKSB7XG4gICAgICBhcmdzID0gYXJncy5tYXAoZnVuY3Rpb24gKGFyZykge1xuICAgICAgICByZXR1cm4gZ2V0VmFsaWRBcmcoYXJnLCAnZGVnJyk7XG4gICAgICB9KTtcbiAgICB9IGVsc2UgaWYgKFsndHJhbnNsYXRlJywgJ3RyYW5zbGF0ZVgnLCAndHJhbnNsYXRlWScsICd0cmFuc2xhdGVaJywgJ3RyYW5zbGF0ZTNkJ10uaW5jbHVkZXMocmVzLm5hbWUpKSB7XG4gICAgICBhcmdzID0gYXJncy5tYXAoZnVuY3Rpb24gKGFyZykge1xuICAgICAgICByZXR1cm4gZ2V0VmFsaWRBcmcoYXJnLCAncHgnKTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSBpZiAoWydzY2FsZScsICdzY2FsZTNkJywgJ3NjYWxlWCcsICdzY2FsZVknLCAnc2NhbGVaJywgJ21hdHJpeCcsICdtYXRyaXgzZCddLmluY2x1ZGVzKHJlcy5uYW1lKSkge1xuICAgICAgYXJncyA9IGFyZ3MubWFwKGZ1bmN0aW9uIChhcmcpIHtcbiAgICAgICAgcmV0dXJuIGdldFZhbGlkQXJnKGFyZywgJycpO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIGlmIChyZXMubmFtZSA9PT0gJ3JvdGF0ZTNkJykge1xuICAgICAgYXJncyA9IFtdLmNvbmNhdChhcmdzLnNsaWNlKDAsIDMpLm1hcChmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgIHJldHVybiBnZXRWYWxpZEFyZyhhcmcsICcnKTtcbiAgICAgIH0pLCBhcmdzLnNsaWNlKDMsIDQpLm1hcChmdW5jdGlvbiAoYXJnKSB7XG4gICAgICAgIHJldHVybiBnZXRWYWxpZEFyZyhhcmcsICdkZWcnKTtcbiAgICAgIH0pKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHt9O1xuICAgIH1cblxuICAgIGlmIChoYXNJbnZhbGlkKSByZXR1cm4ge307XG4gICAgcmVzdWx0W3Jlcy5uYW1lXSA9IGFyZ3M7XG4gIH1cblxuICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBub3JtYWxpemUgY3JlYXRlVHJhbnNpdGlvbiBtZXRob2RcbiAqIEBwYXJhbSBhbmltYXRpb25cbiAqIEBwYXJhbSBvcHRpb25zXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUNyZWF0ZVRyYW5zaXRpb24oYW5pbWF0aW9uLCBvcHRpb25zKSB7XG4gIHZhciBfcmVmID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIF9yZWYkZnJvbSA9IF9yZWYuZnJvbSxcbiAgICAgIGZyb20gPSBfcmVmJGZyb20gPT09IHZvaWQgMCA/IHt9IDogX3JlZiRmcm9tLFxuICAgICAgX3JlZiR0byA9IF9yZWYudG8sXG4gICAgICB0byA9IF9yZWYkdG8gPT09IHZvaWQgMCA/IHt9IDogX3JlZiR0byxcbiAgICAgIGFuaW1hdGlvbk9wdGlvbnMgPSBfcmVmLm9wdGlvbnM7XG5cbiAgdmFyIGFwcGx5VHJhbnNmb3JtID0gZnVuY3Rpb24gYXBwbHlUcmFuc2Zvcm0ob3B0cykge1xuICAgIE9iamVjdC5rZXlzKG9wdHMpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgdmFyIHZhbHVlID0gb3B0c1trZXldO1xuXG4gICAgICBpZiAoa2V5ID09PSAndHJhbnNmb3JtJykge1xuICAgICAgICBhcHBseVRyYW5zZm9ybShwYXJzZVRyYW5zZm9ybSh2YWx1ZSkpO1xuICAgICAgfSBlbHNlIGlmICh0eXBlb2YgYW5pbWF0aW9uW2tleV0gPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgYW5pbWF0aW9uW2tleV0uYXBwbHkoYW5pbWF0aW9uLCB2YWx1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYW5pbWF0aW9uW2tleV0odmFsdWUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gIH07IC8vIGZyb21cblxuXG4gIGFwcGx5VHJhbnNmb3JtKGZyb20pO1xuICBhbmltYXRpb24uc3RlcChfZXh0ZW5kcyh7fSwgYW5pbWF0aW9uT3B0aW9ucywge1xuICAgIGR1cmF0aW9uOiAxNixcbiAgICBkZWxheTogMFxuICB9KSk7IC8vIHRvXG5cbiAgYXBwbHlUcmFuc2Zvcm0odG8pO1xuICBhbmltYXRpb24uc3RlcChhbmltYXRpb25PcHRpb25zKTtcbiAgcmV0dXJuIGFuaW1hdGlvbjtcbn0iLCJpbXBvcnQgeyBpc01pbmlBcHAsIGlzV2VDaGF0TWluaVByb2dyYW0sIGlzV2ViLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0JhaWR1U21hcnRQcm9ncmFtLCBpc0t1YWlTaG91TWluaVByb2dyYW0gfSBmcm9tIFwiQHVuaS9lbnZcIjtcbmltcG9ydCBhbGlNaW5pQXBwTW9kdWxlIGZyb20gXCIuL2FsaS1taW5pYXBwL2luZGV4XCI7XG5pbXBvcnQgd2ViTW9kdWxlIGZyb20gXCIuL3dlYi9pbmRleFwiO1xuaW1wb3J0IHdlQ2hhdE1vZHVsZSBmcm9tIFwiLi93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBieXRlZGFuY2VNb2R1bGUgZnJvbSBcIi4vYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4XCI7XG5pbXBvcnQgYmFpRHVNb2R1bGUgZnJvbSBcIi4vYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4XCI7XG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQW5pbWF0aW9uKG9wdGlvbnMpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5jcmVhdGVBbmltYXRpb24ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5pL2FwaXPvvJpjcmVhdGVBbmltYXRpb24g5pqC5LiN5pSv5oyBJyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuY3JlYXRlQW5pbWF0aW9uKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmNyZWF0ZUFuaW1hdGlvbihvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5jcmVhdGVBbmltYXRpb24ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5jcmVhdGVBbmltYXRpb24ob3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5pL2FwaXPvvJpjcmVhdGVBbmltYXRpb24g5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn1cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVUcmFuc2l0aW9uKG9wdGlvbnMpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5jcmVhdGVUcmFuc2l0aW9uKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQHVuaS9hcGlz77yaY3JlYXRlQW5pbWF0aW9uIOaaguS4jeaUr+aMgScpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmNyZWF0ZVRyYW5zaXRpb24ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuY3JlYXRlVHJhbnNpdGlvbihvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5jcmVhdGVUcmFuc2l0aW9uKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuY3JlYXRlVHJhbnNpdGlvbihvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0B1bmkvYXBpc++8mmNyZWF0ZVRyYW5zaXRpb24g5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlQW5pbWF0aW9uOiBjcmVhdGVBbmltYXRpb24sXG4gIGNyZWF0ZVRyYW5zaXRpb246IGNyZWF0ZVRyYW5zaXRpb25cbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgZ2V0TWVyZ2VkT3B0aW9ucyB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIEFOSU1BVElPTl9SVU5OSU5HID0gJ19fVU5JX0FQSV9BTklNQVRJT05fUlVOTklOR19fJztcbnZhciBBTklNQVRJT05fQ0FOQ0VMID0gJ19fVU5JX0FQSV9BTklNQVRJT05fQ0FOQ0VMX18nO1xudmFyIEFOSU1BVElPTl9PUklHSU5BTF9TVFlMRSA9ICdfX1VOSV9BUElfQU5JTUFUSU9OX09SSUdJTkFMX1NUWUxFX18nO1xuLyoqXG4gKiBub3JtYWxpemUgdW5pdFxuICogQHBhcmFtIHZhbHVlXG4gKiBAcGFyYW0gdW5pdFxuICogQHBhcmFtIGZvcmNlXG4gKi9cblxuZnVuY3Rpb24gbm9ybWFsaXplVW5pdCh2YWx1ZSwgdW5pdCwgZm9yY2UpIHtcbiAgaWYgKGZvcmNlID09PSB2b2lkIDApIHtcbiAgICBmb3JjZSA9IGZhbHNlO1xuICB9XG5cbiAgaWYgKGZvcmNlIHx8IHR5cGVvZiB2YWx1ZSA9PT0gJ251bWJlcicpIHtcbiAgICByZXR1cm4gXCJcIiArIHZhbHVlICsgdW5pdDtcbiAgfVxuXG4gIHJldHVybiB2YWx1ZTtcbn1cbi8qKlxuICogaGFuZGxlIGFuaW1hdGlvbiBhY3Rpb25zIHF1ZXVlXG4gKiBAcGFyYW0gYWN0aW9uc1xuICogQHBhcmFtIGZuXG4gKiBAcGFyYW0gb25GaW5pc2hcbiAqL1xuXG5cbmZ1bmN0aW9uIGhhbmRsZUFjdGlvbnNRdWV1ZShhY3Rpb25zLCBmbiwgb25GaW5pc2gpIHtcbiAgYWN0aW9ucyA9IGFjdGlvbnMuc2xpY2UoKTtcbiAgdmFyIGFjdGlvbiA9IGFjdGlvbnMuc2hpZnQoKTtcblxuICBpZiAoYWN0aW9uKSB7XG4gICAgZm4oYWN0aW9uLCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gaGFuZGxlQWN0aW9uc1F1ZXVlKGFjdGlvbnMsIGZuLCBvbkZpbmlzaCk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAob25GaW5pc2gpIHtcbiAgICBvbkZpbmlzaCgpO1xuICB9XG59XG4vKipcbiAqIGFwcGx5IGFuaW1hdGlvbiBmb3Igd2ViLXNpZGVcbiAqIEBwYXJhbSBhY3Rpb25zXG4gKiBAcGFyYW0gZG9tXG4gKi9cblxuXG5mdW5jdGlvbiBhcHBseVdlYkFuaW1hdGlvbihhY3Rpb25zLCBkb20pIHtcbiAgLy8gSWYgYGRvbWAgaXMgbm90IEhUTUwgTm9kZSwgaWdub3JlXG4gIGlmICghKGRvbSAmJiBkb20ubm9kZVR5cGUgPT09IDEpKSB7XG4gICAgcmV0dXJuO1xuICB9IC8vIGNsZWFyIHRoZSBsYXN0IGFuaW1hdGlvblxuXG5cbiAgaWYgKGRvbVtBTklNQVRJT05fUlVOTklOR10pIHtcbiAgICAoZG9tW0FOSU1BVElPTl9DQU5DRUxdIHx8IFtdKS5mb3JFYWNoKGZ1bmN0aW9uICh0KSB7XG4gICAgICByZXR1cm4gY2xlYXJUaW1lb3V0KHQpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIC8vIGNhY2hlIG9yaWdpbmFsIHN0eWxlXG4gICAgZG9tW0FOSU1BVElPTl9PUklHSU5BTF9TVFlMRV0gPSB7XG4gICAgICB0cmFuc2l0aW9uUHJvcGVydHk6IGRvbS5zdHlsZS50cmFuc2l0aW9uUHJvcGVydHksXG4gICAgICB0cmFuc2l0aW9uRHVyYXRpb246IGRvbS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24sXG4gICAgICB0cmFuc2l0aW9uRGVsYXk6IGRvbS5zdHlsZS50cmFuc2l0aW9uRGVsYXksXG4gICAgICB0cmFuc2l0aW9uVGltaW5nRnVuY3Rpb246IGRvbS5zdHlsZS50cmFuc2l0aW9uVGltaW5nRnVuY3Rpb24sXG4gICAgICB0cmFuc2Zvcm1PcmlnaW46IGRvbS5zdHlsZS50cmFuc2Zvcm1PcmlnaW5cbiAgICB9O1xuICB9XG5cbiAgZG9tW0FOSU1BVElPTl9SVU5OSU5HXSA9IHRydWU7XG4gIGRvbVtBTklNQVRJT05fQ0FOQ0VMXSA9IFtdO1xuICAvKipcbiAgICogQXBwbHkgYW5pbWF0aW9uIGFjdGlvbiwgcmV0dXJuIHRoZSBjdXJyZW50IGNvc3QgdGltZVxuICAgKiBAcGFyYW0gYWN0aW9uXG4gICAqL1xuXG4gIHZhciBhcHBseUFjdGlvbiA9IGZ1bmN0aW9uIGFwcGx5QWN0aW9uKGFjdGlvbikge1xuICAgIHZhciBfYWN0aW9uJG9wdGlvbiA9IGFjdGlvbi5vcHRpb24sXG4gICAgICAgIHRyYW5zaXRpb24gPSBfYWN0aW9uJG9wdGlvbi50cmFuc2l0aW9uLFxuICAgICAgICB0cmFuc2Zvcm1PcmlnaW4gPSBfYWN0aW9uJG9wdGlvbi50cmFuc2Zvcm1PcmlnaW47XG4gICAgdmFyIHRyYW5zZm9ybSA9IFtdO1xuICAgIGFjdGlvbi5hbmltYXRlcy5mb3JFYWNoKGZ1bmN0aW9uIChhbmltYXRlKSB7XG4gICAgICBpZiAoYW5pbWF0ZS50eXBlID09PSAnc3R5bGUnKSB7XG4gICAgICAgIHZhciBfYW5pbWF0ZSRhcmdzID0gYW5pbWF0ZS5hcmdzLFxuICAgICAgICAgICAgcHJvcGVydHkgPSBfYW5pbWF0ZSRhcmdzWzBdLFxuICAgICAgICAgICAgdmFsdWUgPSBfYW5pbWF0ZSRhcmdzWzFdO1xuICAgICAgICBkb20uc3R5bGVbcHJvcGVydHldID0gdmFsdWU7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0cmFuc2Zvcm0ucHVzaChhbmltYXRlLnR5cGUgKyBcIihcIiArIGFuaW1hdGUuYXJncy5qb2luKCcsJykgKyBcIilcIik7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICBpZiAodHJhbnNmb3JtLmxlbmd0aCA+IDApIHtcbiAgICAgIGRvbS5zdHlsZS50cmFuc2Zvcm0gPSB0cmFuc2Zvcm0uam9pbignICcpO1xuICAgIH1cblxuICAgIGRvbS5zdHlsZS50cmFuc2l0aW9uUHJvcGVydHkgPSAnYWxsJztcbiAgICBkb20uc3R5bGUudHJhbnNpdGlvbkR1cmF0aW9uID0gdHJhbnNpdGlvbi5kdXJhdGlvbiArIFwibXNcIjtcbiAgICBkb20uc3R5bGUudHJhbnNpdGlvbkRlbGF5ID0gdHJhbnNpdGlvbi5kZWxheSArIFwibXNcIjtcbiAgICBkb20uc3R5bGUudHJhbnNpdGlvblRpbWluZ0Z1bmN0aW9uID0gdHJhbnNpdGlvbi50aW1pbmdGdW5jdGlvbjtcbiAgICBkb20uc3R5bGUudHJhbnNmb3JtT3JpZ2luID0gdHJhbnNmb3JtT3JpZ2luO1xuICAgIHZhciBjb3N0ID0gdHJhbnNpdGlvbi5kZWxheSArIHRyYW5zaXRpb24uZHVyYXRpb247XG4gICAgcmV0dXJuIGlzTmFOKGNvc3QpID8gMCA6IGNvc3Q7XG4gIH07XG5cbiAgdmFyIHNhdmVDYW5jZWwgPSBmdW5jdGlvbiBzYXZlQ2FuY2VsKHRpbWVyKSB7XG4gICAgZG9tW0FOSU1BVElPTl9DQU5DRUxdID0gZG9tW0FOSU1BVElPTl9DQU5DRUxdIHx8IFtdO1xuICAgIGRvbVtBTklNQVRJT05fQ0FOQ0VMXS5wdXNoKHRpbWVyKTtcbiAgfTtcblxuICB2YXIgZGVsYXkgPSAwO1xuICBoYW5kbGVBY3Rpb25zUXVldWUoYWN0aW9ucywgZnVuY3Rpb24gKGFjdGlvbiwgY2FsbGJhY2spIHtcbiAgICBzYXZlQ2FuY2VsKHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgZGVsYXkgPSBhcHBseUFjdGlvbihhY3Rpb24pO1xuICAgICAgY2FsbGJhY2soKTtcbiAgICB9LCBkZWxheSkpO1xuICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgc2F2ZUNhbmNlbCggLy8gUmVzdG9yZSB0aGUgc3R5bGUgYXQgdGhlIGVuZCBvZiB0aGUgYW5pbWF0aW9uXG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBPYmplY3QuYXNzaWduKGRvbS5zdHlsZSwgZG9tW0FOSU1BVElPTl9PUklHSU5BTF9TVFlMRV0gfHwge30pO1xuICAgICAgZG9tW0FOSU1BVElPTl9SVU5OSU5HXSA9IG51bGw7XG4gICAgICBkb21bQU5JTUFUSU9OX0NBTkNFTF0gPSBudWxsO1xuICAgICAgZG9tW0FOSU1BVElPTl9PUklHSU5BTF9TVFlMRV0gPSBudWxsO1xuICAgIH0sIGRlbGF5KSk7XG4gIH0pO1xufVxuXG52YXIgQW5pbWF0aW9uSW1wbCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEFuaW1hdGlvbkltcGwob3B0aW9ucykge1xuICAgIHRoaXMub3B0aW9ucyA9IHZvaWQgMDtcbiAgICB0aGlzLmFjdGlvbnMgPSB2b2lkIDA7XG4gICAgdGhpcy5jdXJyZW50VHJhbnNmb3JtID0gdm9pZCAwO1xuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcyA9IHZvaWQgMDtcbiAgICB0aGlzLm9wdGlvbnMgPSBnZXRNZXJnZWRPcHRpb25zKENPTlRBSU5FUl9OQU1FLldFQiwgb3B0aW9ucyk7XG4gICAgdGhpcy5hY3Rpb25zID0gW107XG4gICAgdGhpcy5jdXJyZW50VHJhbnNmb3JtID0ge307XG4gICAgdGhpcy5jdXJyZW50U3RlcEFuaW1hdGVzID0gW107XG4gIH1cblxuICB2YXIgX3Byb3RvID0gQW5pbWF0aW9uSW1wbC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmV4cG9ydCA9IGZ1bmN0aW9uIF9leHBvcnQoZG9tKSB7XG4gICAgdmFyIGFjdGlvbnMgPSB0aGlzLmFjdGlvbnMuc2xpY2UoKTtcbiAgICBhcHBseVdlYkFuaW1hdGlvbihhY3Rpb25zLCBkb20pO1xuICAgIHRoaXMuYWN0aW9ucyA9IFtdO1xuICAgIHJldHVybiB7XG4gICAgICBhY3Rpb25zOiBhY3Rpb25zXG4gICAgfTtcbiAgfTtcblxuICBfcHJvdG8uc3RlcCA9IGZ1bmN0aW9uIHN0ZXAob3B0aW9ucykge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICBvcHRpb25zID0gZ2V0TWVyZ2VkT3B0aW9ucyhDT05UQUlORVJfTkFNRS5XRUIsIF9leHRlbmRzKHt9LCB0aGlzLm9wdGlvbnMsIG9wdGlvbnMpKTtcbiAgICB0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMuZm9yRWFjaChmdW5jdGlvbiAoYW5pbWF0ZSkge1xuICAgICAgdmFyIGtleSA9IGFuaW1hdGUudHlwZTtcblxuICAgICAgaWYgKGtleSA9PT0gJ3N0eWxlJykge1xuICAgICAgICBrZXkgKz0gXCIuXCIgKyBhbmltYXRlLmFyZ3NbMF07XG4gICAgICB9XG5cbiAgICAgIF90aGlzLmN1cnJlbnRUcmFuc2Zvcm1ba2V5XSA9IGFuaW1hdGU7XG4gICAgfSk7XG4gICAgdmFyIGFuaW1hdGVzID0gW107XG4gICAgT2JqZWN0LmtleXModGhpcy5jdXJyZW50VHJhbnNmb3JtKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXkpIHtcbiAgICAgIGFuaW1hdGVzLnB1c2goX3RoaXMuY3VycmVudFRyYW5zZm9ybVtrZXldKTtcbiAgICB9KTtcbiAgICB0aGlzLmFjdGlvbnMucHVzaCh7XG4gICAgICBhbmltYXRlczogYW5pbWF0ZXMsXG4gICAgICBvcHRpb246IHtcbiAgICAgICAgdHJhbnNmb3JtT3JpZ2luOiBvcHRpb25zLnRyYW5zZm9ybU9yaWdpbixcbiAgICAgICAgdHJhbnNpdGlvbjoge1xuICAgICAgICAgIGRlbGF5OiBvcHRpb25zLmRlbGF5LFxuICAgICAgICAgIGR1cmF0aW9uOiBvcHRpb25zLmR1cmF0aW9uLFxuICAgICAgICAgIHRpbWluZ0Z1bmN0aW9uOiBvcHRpb25zLnRpbWluZ0Z1bmN0aW9uXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMgPSBbXTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8ub3BhY2l0eSA9IGZ1bmN0aW9uIG9wYWNpdHkodmFsdWUpIHtcbiAgICB0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMucHVzaCh7XG4gICAgICB0eXBlOiAnc3R5bGUnLFxuICAgICAgYXJnczogWydvcGFjaXR5JywgdmFsdWVdXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLmJhY2tncm91bmRDb2xvciA9IGZ1bmN0aW9uIGJhY2tncm91bmRDb2xvcih2YWx1ZSkge1xuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdzdHlsZScsXG4gICAgICBhcmdzOiBbJ2JhY2tncm91bmQtY29sb3InLCB2YWx1ZV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8ud2lkdGggPSBmdW5jdGlvbiB3aWR0aCh2YWx1ZSkge1xuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdzdHlsZScsXG4gICAgICBhcmdzOiBbJ3dpZHRoJywgbm9ybWFsaXplVW5pdCh2YWx1ZSwgJ3B4JyldXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLmhlaWdodCA9IGZ1bmN0aW9uIGhlaWdodCh2YWx1ZSkge1xuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdzdHlsZScsXG4gICAgICBhcmdzOiBbJ2hlaWdodCcsIG5vcm1hbGl6ZVVuaXQodmFsdWUsICdweCcpXVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5sZWZ0ID0gZnVuY3Rpb24gbGVmdCh2YWx1ZSkge1xuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdzdHlsZScsXG4gICAgICBhcmdzOiBbJ2xlZnQnLCBub3JtYWxpemVVbml0KHZhbHVlLCAncHgnKV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8ucmlnaHQgPSBmdW5jdGlvbiByaWdodCh2YWx1ZSkge1xuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdzdHlsZScsXG4gICAgICBhcmdzOiBbJ3JpZ2h0Jywgbm9ybWFsaXplVW5pdCh2YWx1ZSwgJ3B4JyldXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLnRvcCA9IGZ1bmN0aW9uIHRvcCh2YWx1ZSkge1xuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdzdHlsZScsXG4gICAgICBhcmdzOiBbJ3RvcCcsIG5vcm1hbGl6ZVVuaXQodmFsdWUsICdweCcpXVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5ib3R0b20gPSBmdW5jdGlvbiBib3R0b20odmFsdWUpIHtcbiAgICB0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMucHVzaCh7XG4gICAgICB0eXBlOiAnc3R5bGUnLFxuICAgICAgYXJnczogWydib3R0b20nLCBub3JtYWxpemVVbml0KHZhbHVlLCAncHgnKV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8ucm90YXRlID0gZnVuY3Rpb24gcm90YXRlKGFuZ2xlKSB7XG4gICAgaWYgKGFuZ2xlID09PSB2b2lkIDApIHtcbiAgICAgIGFuZ2xlID0gMDtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMucHVzaCh7XG4gICAgICB0eXBlOiAncm90YXRlJyxcbiAgICAgIGFyZ3M6IFtub3JtYWxpemVVbml0KGFuZ2xlLCAnZGVnJywgdHJ1ZSldXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLnJvdGF0ZTNkID0gZnVuY3Rpb24gcm90YXRlM2QoeCwgeSwgeiwgYW5nbGUpIHtcbiAgICBpZiAoeCA9PT0gdm9pZCAwKSB7XG4gICAgICB4ID0gMDtcbiAgICB9XG5cbiAgICBpZiAoeSA9PT0gdm9pZCAwKSB7XG4gICAgICB5ID0gMDtcbiAgICB9XG5cbiAgICBpZiAoeiA9PT0gdm9pZCAwKSB7XG4gICAgICB6ID0gMDtcbiAgICB9XG5cbiAgICBpZiAoYW5nbGUgPT09IHZvaWQgMCkge1xuICAgICAgYW5nbGUgPSAwO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdyb3RhdGUzZCcsXG4gICAgICBhcmdzOiBbeCwgeSwgeiwgbm9ybWFsaXplVW5pdChhbmdsZSwgJ2RlZycsIHRydWUpXVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5yb3RhdGVYID0gZnVuY3Rpb24gcm90YXRlWChhbmdsZSkge1xuICAgIGlmIChhbmdsZSA9PT0gdm9pZCAwKSB7XG4gICAgICBhbmdsZSA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50U3RlcEFuaW1hdGVzLnB1c2goe1xuICAgICAgdHlwZTogJ3JvdGF0ZVgnLFxuICAgICAgYXJnczogW25vcm1hbGl6ZVVuaXQoYW5nbGUsICdkZWcnLCB0cnVlKV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8ucm90YXRlWSA9IGZ1bmN0aW9uIHJvdGF0ZVkoYW5nbGUpIHtcbiAgICBpZiAoYW5nbGUgPT09IHZvaWQgMCkge1xuICAgICAgYW5nbGUgPSAwO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdyb3RhdGVZJyxcbiAgICAgIGFyZ3M6IFtub3JtYWxpemVVbml0KGFuZ2xlLCAnZGVnJywgdHJ1ZSldXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLnJvdGF0ZVogPSBmdW5jdGlvbiByb3RhdGVaKGFuZ2xlKSB7XG4gICAgaWYgKGFuZ2xlID09PSB2b2lkIDApIHtcbiAgICAgIGFuZ2xlID0gMDtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMucHVzaCh7XG4gICAgICB0eXBlOiAncm90YXRlWicsXG4gICAgICBhcmdzOiBbbm9ybWFsaXplVW5pdChhbmdsZSwgJ2RlZycsIHRydWUpXVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5zY2FsZSA9IGZ1bmN0aW9uIHNjYWxlKHN4LCBzeSkge1xuICAgIGlmIChzeCA9PT0gdW5kZWZpbmVkKSBzeCA9IDE7XG4gICAgaWYgKHN5ID09PSB1bmRlZmluZWQpIHN5ID0gc3g7XG4gICAgdGhpcy5jdXJyZW50U3RlcEFuaW1hdGVzLnB1c2goe1xuICAgICAgdHlwZTogJ3NjYWxlJyxcbiAgICAgIGFyZ3M6IFtzeCwgc3ldXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLnNjYWxlM2QgPSBmdW5jdGlvbiBzY2FsZTNkKHN4LCBzeSwgc3opIHtcbiAgICBpZiAoc3ggPT09IHZvaWQgMCkge1xuICAgICAgc3ggPSAxO1xuICAgIH1cblxuICAgIGlmIChzeSA9PT0gdm9pZCAwKSB7XG4gICAgICBzeSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHN6ID09PSB2b2lkIDApIHtcbiAgICAgIHN6ID0gMTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMucHVzaCh7XG4gICAgICB0eXBlOiAnc2NhbGUzZCcsXG4gICAgICBhcmdzOiBbc3gsIHN5LCBzel1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8uc2NhbGVYID0gZnVuY3Rpb24gc2NhbGVYKHNjYWxlKSB7XG4gICAgaWYgKHNjYWxlID09PSB2b2lkIDApIHtcbiAgICAgIHNjYWxlID0gMTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMucHVzaCh7XG4gICAgICB0eXBlOiAnc2NhbGVYJyxcbiAgICAgIGFyZ3M6IFtzY2FsZV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8uc2NhbGVZID0gZnVuY3Rpb24gc2NhbGVZKHNjYWxlKSB7XG4gICAgaWYgKHNjYWxlID09PSB2b2lkIDApIHtcbiAgICAgIHNjYWxlID0gMTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMucHVzaCh7XG4gICAgICB0eXBlOiAnc2NhbGVZJyxcbiAgICAgIGFyZ3M6IFtzY2FsZV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8uc2NhbGVaID0gZnVuY3Rpb24gc2NhbGVaKHNjYWxlKSB7XG4gICAgaWYgKHNjYWxlID09PSB2b2lkIDApIHtcbiAgICAgIHNjYWxlID0gMTtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMucHVzaCh7XG4gICAgICB0eXBlOiAnc2NhbGVaJyxcbiAgICAgIGFyZ3M6IFtzY2FsZV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8udHJhbnNsYXRlID0gZnVuY3Rpb24gdHJhbnNsYXRlKHR4LCB0eSkge1xuICAgIGlmICh0eCA9PT0gdm9pZCAwKSB7XG4gICAgICB0eCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHR5ID09PSB2b2lkIDApIHtcbiAgICAgIHR5ID0gMDtcbiAgICB9XG5cbiAgICB0aGlzLmN1cnJlbnRTdGVwQW5pbWF0ZXMucHVzaCh7XG4gICAgICB0eXBlOiAndHJhbnNsYXRlJyxcbiAgICAgIGFyZ3M6IFtub3JtYWxpemVVbml0KHR4LCAncHgnLCB0cnVlKSwgbm9ybWFsaXplVW5pdCh0eSwgJ3B4JywgdHJ1ZSldXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLnRyYW5zbGF0ZTNkID0gZnVuY3Rpb24gdHJhbnNsYXRlM2QodHgsIHR5LCB0eikge1xuICAgIGlmICh0eCA9PT0gdm9pZCAwKSB7XG4gICAgICB0eCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKHR5ID09PSB2b2lkIDApIHtcbiAgICAgIHR5ID0gMDtcbiAgICB9XG5cbiAgICBpZiAodHogPT09IHZvaWQgMCkge1xuICAgICAgdHogPSAwO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICd0cmFuc2xhdGUzZCcsXG4gICAgICBhcmdzOiBbbm9ybWFsaXplVW5pdCh0eCwgJ3B4JywgdHJ1ZSksIG5vcm1hbGl6ZVVuaXQodHksICdweCcsIHRydWUpLCBub3JtYWxpemVVbml0KHR6LCAncHgnLCB0cnVlKV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8udHJhbnNsYXRlWCA9IGZ1bmN0aW9uIHRyYW5zbGF0ZVgodHJhbnNsYXRpb24pIHtcbiAgICBpZiAodHJhbnNsYXRpb24gPT09IHZvaWQgMCkge1xuICAgICAgdHJhbnNsYXRpb24gPSAwO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICd0cmFuc2xhdGVYJyxcbiAgICAgIGFyZ3M6IFtub3JtYWxpemVVbml0KHRyYW5zbGF0aW9uLCAncHgnLCB0cnVlKV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8udHJhbnNsYXRlWSA9IGZ1bmN0aW9uIHRyYW5zbGF0ZVkodHJhbnNsYXRpb24pIHtcbiAgICBpZiAodHJhbnNsYXRpb24gPT09IHZvaWQgMCkge1xuICAgICAgdHJhbnNsYXRpb24gPSAwO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICd0cmFuc2xhdGVZJyxcbiAgICAgIGFyZ3M6IFtub3JtYWxpemVVbml0KHRyYW5zbGF0aW9uLCAncHgnLCB0cnVlKV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8udHJhbnNsYXRlWiA9IGZ1bmN0aW9uIHRyYW5zbGF0ZVoodHJhbnNsYXRpb24pIHtcbiAgICBpZiAodHJhbnNsYXRpb24gPT09IHZvaWQgMCkge1xuICAgICAgdHJhbnNsYXRpb24gPSAwO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICd0cmFuc2xhdGVaJyxcbiAgICAgIGFyZ3M6IFtub3JtYWxpemVVbml0KHRyYW5zbGF0aW9uLCAncHgnLCB0cnVlKV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8uc2tldyA9IGZ1bmN0aW9uIHNrZXcoYXgsIGF5KSB7XG4gICAgaWYgKGF4ID09PSB2b2lkIDApIHtcbiAgICAgIGF4ID0gMDtcbiAgICB9XG5cbiAgICBpZiAoYXkgPT09IHZvaWQgMCkge1xuICAgICAgYXkgPSAwO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdza2V3JyxcbiAgICAgIGFyZ3M6IFtub3JtYWxpemVVbml0KGF4LCAnZGVnJywgdHJ1ZSksIG5vcm1hbGl6ZVVuaXQoYXksICdkZWcnLCB0cnVlKV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8uc2tld1ggPSBmdW5jdGlvbiBza2V3WChhbmdsZSkge1xuICAgIGlmIChhbmdsZSA9PT0gdm9pZCAwKSB7XG4gICAgICBhbmdsZSA9IDA7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50U3RlcEFuaW1hdGVzLnB1c2goe1xuICAgICAgdHlwZTogJ3NrZXdYJyxcbiAgICAgIGFyZ3M6IFtub3JtYWxpemVVbml0KGFuZ2xlLCAnZGVnJywgdHJ1ZSldXG4gICAgfSk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH07XG5cbiAgX3Byb3RvLnNrZXdZID0gZnVuY3Rpb24gc2tld1koYW5nbGUpIHtcbiAgICBpZiAoYW5nbGUgPT09IHZvaWQgMCkge1xuICAgICAgYW5nbGUgPSAwO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdza2V3WScsXG4gICAgICBhcmdzOiBbbm9ybWFsaXplVW5pdChhbmdsZSwgJ2RlZycsIHRydWUpXVxuICAgIH0pO1xuICAgIHJldHVybiB0aGlzO1xuICB9O1xuXG4gIF9wcm90by5tYXRyaXggPSBmdW5jdGlvbiBtYXRyaXgoYSwgYiwgYywgZCwgdHgsIHR5KSB7XG4gICAgaWYgKGEgPT09IHZvaWQgMCkge1xuICAgICAgYSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKGIgPT09IHZvaWQgMCkge1xuICAgICAgYiA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGMgPT09IHZvaWQgMCkge1xuICAgICAgYyA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGQgPT09IHZvaWQgMCkge1xuICAgICAgZCA9IDE7XG4gICAgfVxuXG4gICAgaWYgKHR4ID09PSB2b2lkIDApIHtcbiAgICAgIHR4ID0gMDtcbiAgICB9XG5cbiAgICBpZiAodHkgPT09IHZvaWQgMCkge1xuICAgICAgdHkgPSAwO1xuICAgIH1cblxuICAgIHRoaXMuY3VycmVudFN0ZXBBbmltYXRlcy5wdXNoKHtcbiAgICAgIHR5cGU6ICdtYXRyaXgnLFxuICAgICAgYXJnczogW2EsIGIsIGMsIGQsIHR4LCB0eV1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICBfcHJvdG8ubWF0cml4M2QgPSBmdW5jdGlvbiBtYXRyaXgzZChhMSwgYjEsIGMxLCBkMSwgYTIsIGIyLCBjMiwgZDIsIGEzLCBiMywgYzMsIGQzLCBhNCwgYjQsIGM0LCBkNCkge1xuICAgIGlmIChhMSA9PT0gdm9pZCAwKSB7XG4gICAgICBhMSA9IDE7XG4gICAgfVxuXG4gICAgaWYgKGIxID09PSB2b2lkIDApIHtcbiAgICAgIGIxID0gMDtcbiAgICB9XG5cbiAgICBpZiAoYzEgPT09IHZvaWQgMCkge1xuICAgICAgYzEgPSAwO1xuICAgIH1cblxuICAgIGlmIChkMSA9PT0gdm9pZCAwKSB7XG4gICAgICBkMSA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGEyID09PSB2b2lkIDApIHtcbiAgICAgIGEyID0gMDtcbiAgICB9XG5cbiAgICBpZiAoYjIgPT09IHZvaWQgMCkge1xuICAgICAgYjIgPSAxO1xuICAgIH1cblxuICAgIGlmIChjMiA9PT0gdm9pZCAwKSB7XG4gICAgICBjMiA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGQyID09PSB2b2lkIDApIHtcbiAgICAgIGQyID0gMDtcbiAgICB9XG5cbiAgICBpZiAoYTMgPT09IHZvaWQgMCkge1xuICAgICAgYTMgPSAwO1xuICAgIH1cblxuICAgIGlmIChiMyA9PT0gdm9pZCAwKSB7XG4gICAgICBiMyA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGMzID09PSB2b2lkIDApIHtcbiAgICAgIGMzID0gMTtcbiAgICB9XG5cbiAgICBpZiAoZDMgPT09IHZvaWQgMCkge1xuICAgICAgZDMgPSAwO1xuICAgIH1cblxuICAgIGlmIChhNCA9PT0gdm9pZCAwKSB7XG4gICAgICBhNCA9IDA7XG4gICAgfVxuXG4gICAgaWYgKGI0ID09PSB2b2lkIDApIHtcbiAgICAgIGI0ID0gMDtcbiAgICB9XG5cbiAgICBpZiAoYzQgPT09IHZvaWQgMCkge1xuICAgICAgYzQgPSAwO1xuICAgIH1cblxuICAgIGlmIChkNCA9PT0gdm9pZCAwKSB7XG4gICAgICBkNCA9IDE7XG4gICAgfVxuXG4gICAgdGhpcy5jdXJyZW50U3RlcEFuaW1hdGVzLnB1c2goe1xuICAgICAgdHlwZTogJ21hdHJpeDNkJyxcbiAgICAgIGFyZ3M6IFthMSwgYjEsIGMxLCBkMSwgYTIsIGIyLCBjMiwgZDIsIGEzLCBiMywgYzMsIGQzLCBhNCwgYjQsIGM0LCBkNF1cbiAgICB9KTtcbiAgICByZXR1cm4gdGhpcztcbiAgfTtcblxuICByZXR1cm4gQW5pbWF0aW9uSW1wbDtcbn0oKTtcblxuZXhwb3J0IHsgQW5pbWF0aW9uSW1wbCBhcyBkZWZhdWx0IH07IiwiaW1wb3J0IEFuaW1hdGlvbkltcGwgZnJvbSBcIi4vQW5pbWF0aW9uSW1wbFwiO1xuXG5mdW5jdGlvbiBjcmVhdGVBbmltYXRpb24ob3B0aW9ucykge1xuICByZXR1cm4gbmV3IEFuaW1hdGlvbkltcGwob3B0aW9ucyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUFuaW1hdGlvbjsiLCJpbXBvcnQgY3JlYXRlQW5pbWF0aW9uIGZyb20gXCIuL2NyZWF0ZUFuaW1hdGlvblwiO1xuaW1wb3J0IHsgbm9ybWFsaXplQ3JlYXRlVHJhbnNpdGlvbiB9IGZyb20gXCIuLi9jb21tb25cIjtcblxuZnVuY3Rpb24gY3JlYXRlVHJhbnNpdGlvbihvcHRpb25zKSB7XG4gIHZhciBhbmltYXRpb24gPSBjcmVhdGVBbmltYXRpb24oKTtcbiAgcmV0dXJuIG5vcm1hbGl6ZUNyZWF0ZVRyYW5zaXRpb24oYW5pbWF0aW9uLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlVHJhbnNpdGlvbjsiLCJpbXBvcnQgY3JlYXRlQW5pbWF0aW9uIGZyb20gXCIuL2NyZWF0ZUFuaW1hdGlvblwiO1xuaW1wb3J0IGNyZWF0ZVRyYW5zaXRpb24gZnJvbSBcIi4vY3JlYXRlVHJhbnNpdGlvblwiO1xuZXhwb3J0IHsgY3JlYXRlQW5pbWF0aW9uLCBjcmVhdGVUcmFuc2l0aW9uIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGNyZWF0ZUFuaW1hdGlvbjogY3JlYXRlQW5pbWF0aW9uLFxuICBjcmVhdGVUcmFuc2l0aW9uOiBjcmVhdGVUcmFuc2l0aW9uXG59OyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgZ2V0TWVyZ2VkT3B0aW9ucyB9IGZyb20gXCIuLi9jb21tb25cIjtcblxuZnVuY3Rpb24gY3JlYXRlQW5pbWF0aW9uKG9wdGlvbnMpIHtcbiAgdmFyIGFuaW1hdGlvbiA9IHd4LmNyZWF0ZUFuaW1hdGlvbihnZXRNZXJnZWRPcHRpb25zKENPTlRBSU5FUl9OQU1FLldFQ0hBVCwgb3B0aW9ucykpOyAvLyBvdmVycmlkZVxuXG4gIHZhciBfc3RlcCA9IGFuaW1hdGlvbi5zdGVwLmJpbmQoYW5pbWF0aW9uKTtcblxuICB2YXIgX2V4cG9ydCA9IGFuaW1hdGlvbi5leHBvcnQuYmluZChhbmltYXRpb24pO1xuXG4gIGFuaW1hdGlvbi5zdGVwID0gZnVuY3Rpb24gKG9wdHMpIHtcbiAgICBvcHRzID0gZ2V0TWVyZ2VkT3B0aW9ucyhDT05UQUlORVJfTkFNRS5XRUNIQVQsIF9leHRlbmRzKHt9LCBvcHRpb25zLCBvcHRzKSk7XG4gICAgcmV0dXJuIF9zdGVwKG9wdHMpO1xuICB9O1xuXG4gIGFuaW1hdGlvbi5leHBvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIF9leHBvcnQoKTtcbiAgfTtcblxuICByZXR1cm4gYW5pbWF0aW9uO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVBbmltYXRpb247IiwiaW1wb3J0IGNyZWF0ZUFuaW1hdGlvbiBmcm9tIFwiLi9jcmVhdGVBbmltYXRpb25cIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUNyZWF0ZVRyYW5zaXRpb24gfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5cbmZ1bmN0aW9uIGNyZWF0ZVRyYW5zaXRpb24ob3B0aW9ucykge1xuICB2YXIgYW5pbWF0aW9uID0gY3JlYXRlQW5pbWF0aW9uKCk7XG4gIHJldHVybiBub3JtYWxpemVDcmVhdGVUcmFuc2l0aW9uKGFuaW1hdGlvbiwgb3B0aW9ucyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVRyYW5zaXRpb247IiwiaW1wb3J0IGNyZWF0ZUFuaW1hdGlvbiBmcm9tIFwiLi9jcmVhdGVBbmltYXRpb25cIjtcbmltcG9ydCBjcmVhdGVUcmFuc2l0aW9uIGZyb20gXCIuL2NyZWF0ZVRyYW5zaXRpb25cIjtcbmV4cG9ydCB7IGNyZWF0ZUFuaW1hdGlvbiwgY3JlYXRlVHJhbnNpdGlvbiB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVBbmltYXRpb246IGNyZWF0ZUFuaW1hdGlvbixcbiAgY3JlYXRlVHJhbnNpdGlvbjogY3JlYXRlVHJhbnNpdGlvblxufTsiLCJmdW5jdGlvbiBpc1VuZGVmKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgdmFyIGlzRGluZ2RpbmdNaW5pYXBwID0gIWlzVW5kZWYodHlwZW9mIGRkKSAmJiBkZCAhPT0gbnVsbCAmJiAhaXNVbmRlZih0eXBlb2YgZGQuYWxlcnQpOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBnZXRBcHAoKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBnZXRDdXJyZW50UGFnZXMoKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBteS5nZXRMYXVuY2hPcHRpb25zU3luYygpO1xufSk7IiwiaW1wb3J0IGdldEFwcCBmcm9tIFwiLi9nZXRBcHBcIjtcbmltcG9ydCBnZXRDdXJyZW50UGFnZXMgZnJvbSBcIi4vZ2V0Q3VycmVudFBhZ2VzXCI7XG5pbXBvcnQgZ2V0TGF1bmNoT3B0aW9uc1N5bmMgZnJvbSBcIi4vZ2V0TGF1bmNoT3B0aW9uc1N5bmNcIjtcbmltcG9ydCBvbkVycm9yIGZyb20gXCIuL29uRXJyb3JcIjtcbmltcG9ydCBvZmZFcnJvciBmcm9tIFwiLi9vZmZFcnJvclwiO1xuaW1wb3J0IG9uVW5oYW5kbGVkUmVqZWN0aW9uIGZyb20gXCIuL29uVW5oYW5kbGVkUmVqZWN0aW9uXCI7XG5pbXBvcnQgb2ZmVW5oYW5kbGVkUmVqZWN0aW9uIGZyb20gXCIuL29mZlVuaGFuZGxlZFJlamVjdGlvblwiO1xuZXhwb3J0IHsgZ2V0QXBwLCBnZXRDdXJyZW50UGFnZXMsIGdldExhdW5jaE9wdGlvbnNTeW5jLCBvbkVycm9yLCBvZmZFcnJvciwgb25VbmhhbmRsZWRSZWplY3Rpb24sIG9mZlVuaGFuZGxlZFJlamVjdGlvbiB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRBcHA6IGdldEFwcCxcbiAgZ2V0Q3VycmVudFBhZ2VzOiBnZXRDdXJyZW50UGFnZXMsXG4gIGdldExhdW5jaE9wdGlvbnNTeW5jOiBnZXRMYXVuY2hPcHRpb25zU3luYyxcbiAgb25FcnJvcjogb25FcnJvcixcbiAgb2ZmRXJyb3I6IG9mZkVycm9yLFxuICBvblVuaGFuZGxlZFJlamVjdGlvbjogb25VbmhhbmRsZWRSZWplY3Rpb24sXG4gIG9mZlVuaGFuZGxlZFJlamVjdGlvbjogb2ZmVW5oYW5kbGVkUmVqZWN0aW9uXG59OyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGNiKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLm9mZkVycm9yKGNiKSA6IG15Lm9mZkVycm9yKGNiKTtcbn0pOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGNiKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLm9mZlVuaGFuZGxlZFJlamVjdGlvbihjYikgOiBteS5vZmZVbmhhbmRsZWRSZWplY3Rpb24oY2IpO1xufSk7IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoY2IpIHtcbiAgcmV0dXJuIGlzRGluZ2RpbmdNaW5pYXBwID8gZGQub25FcnJvcihjYikgOiBteS5vbkVycm9yKGNiKTtcbn0pOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGNiKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLm9uVW5oYW5kbGVkUmVqZWN0aW9uKGNiKSA6IG15Lm9uVW5oYW5kbGVkUmVqZWN0aW9uKGNiKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBnZXRBcHAoKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBnZXRDdXJyZW50UGFnZXMoKTtcbn0pOyIsIi8vIGV4cG9ydCBkZWZhdWx0ICgpID0+IHN3YW4uZ2V0TGF1bmNoT3B0aW9uc1N5bmMoKTtcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7fSk7IiwiaW1wb3J0IGdldEFwcCBmcm9tIFwiLi9nZXRBcHBcIjtcbmltcG9ydCBnZXRDdXJyZW50UGFnZXMgZnJvbSBcIi4vZ2V0Q3VycmVudFBhZ2VzXCI7XG5pbXBvcnQgZ2V0TGF1bmNoT3B0aW9uc1N5bmMgZnJvbSBcIi4vZ2V0TGF1bmNoT3B0aW9uc1N5bmNcIjtcbmltcG9ydCBvbkVycm9yIGZyb20gXCIuL29uRXJyb3JcIjtcbmltcG9ydCBvZmZFcnJvciBmcm9tIFwiLi9vZmZFcnJvclwiO1xuaW1wb3J0IG9uVW5oYW5kbGVkUmVqZWN0aW9uIGZyb20gXCIuL29uVW5oYW5kbGVkUmVqZWN0aW9uXCI7XG5pbXBvcnQgb2ZmVW5oYW5kbGVkUmVqZWN0aW9uIGZyb20gXCIuL29mZlVuaGFuZGxlZFJlamVjdGlvblwiO1xuZXhwb3J0IHsgZ2V0QXBwLCBnZXRDdXJyZW50UGFnZXMsIGdldExhdW5jaE9wdGlvbnNTeW5jLCBvbkVycm9yLCBvZmZFcnJvciwgb25VbmhhbmRsZWRSZWplY3Rpb24sIG9mZlVuaGFuZGxlZFJlamVjdGlvbiB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRBcHA6IGdldEFwcCxcbiAgZ2V0Q3VycmVudFBhZ2VzOiBnZXRDdXJyZW50UGFnZXMsXG4gIGdldExhdW5jaE9wdGlvbnNTeW5jOiBnZXRMYXVuY2hPcHRpb25zU3luYyxcbiAgb25FcnJvcjogb25FcnJvcixcbiAgb2ZmRXJyb3I6IG9mZkVycm9yLFxuICBvblVuaGFuZGxlZFJlamVjdGlvbjogb25VbmhhbmRsZWRSZWplY3Rpb24sXG4gIG9mZlVuaGFuZGxlZFJlamVjdGlvbjogb2ZmVW5oYW5kbGVkUmVqZWN0aW9uXG59OyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoY2IpIHtcbiAgcmV0dXJuIHN3YW4ub2ZmRXJyb3IoY2IpO1xufSk7IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChjYikgey8vIHJldHVybiBzd2FuLm9mZlVuaGFuZGxlZFJlamVjdGlvbihjYik7XG59KTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGNiKSB7XG4gIHJldHVybiBzd2FuLm9uRXJyb3IoY2IpO1xufSk7IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChjYikgey8vIHJldHVybiBzd2FuLm9uVW5oYW5kbGVkUmVqZWN0aW9uKGNiKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBnZXRBcHAoKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBnZXRDdXJyZW50UGFnZXMoKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0dC5nZXRMYXVuY2hPcHRpb25zU3luYygpO1xufSk7IiwiaW1wb3J0IGdldEFwcCBmcm9tIFwiLi9nZXRBcHBcIjtcbmltcG9ydCBnZXRDdXJyZW50UGFnZXMgZnJvbSBcIi4vZ2V0Q3VycmVudFBhZ2VzXCI7XG5pbXBvcnQgZ2V0TGF1bmNoT3B0aW9uc1N5bmMgZnJvbSBcIi4vZ2V0TGF1bmNoT3B0aW9uc1N5bmNcIjtcbmltcG9ydCBvbkVycm9yIGZyb20gXCIuL29uRXJyb3JcIjtcbmltcG9ydCBvZmZFcnJvciBmcm9tIFwiLi9vZmZFcnJvclwiO1xuaW1wb3J0IG9uVW5oYW5kbGVkUmVqZWN0aW9uIGZyb20gXCIuL29uVW5oYW5kbGVkUmVqZWN0aW9uXCI7XG5pbXBvcnQgb2ZmVW5oYW5kbGVkUmVqZWN0aW9uIGZyb20gXCIuL29mZlVuaGFuZGxlZFJlamVjdGlvblwiO1xuZXhwb3J0IHsgZ2V0QXBwLCBnZXRDdXJyZW50UGFnZXMsIGdldExhdW5jaE9wdGlvbnNTeW5jLCBvbkVycm9yLCBvZmZFcnJvciwgb25VbmhhbmRsZWRSZWplY3Rpb24sIG9mZlVuaGFuZGxlZFJlamVjdGlvbiB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRBcHA6IGdldEFwcCxcbiAgZ2V0Q3VycmVudFBhZ2VzOiBnZXRDdXJyZW50UGFnZXMsXG4gIGdldExhdW5jaE9wdGlvbnNTeW5jOiBnZXRMYXVuY2hPcHRpb25zU3luYyxcbiAgb25FcnJvcjogb25FcnJvcixcbiAgb2ZmRXJyb3I6IG9mZkVycm9yLFxuICBvblVuaGFuZGxlZFJlamVjdGlvbjogb25VbmhhbmRsZWRSZWplY3Rpb24sXG4gIG9mZlVuaGFuZGxlZFJlamVjdGlvbjogb2ZmVW5oYW5kbGVkUmVqZWN0aW9uXG59OyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoY2IpIHtcbiAgcmV0dXJuIHR0Lm9mZkVycm9yKGNiKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoY2IpIHtcbiAgcmV0dXJuIHR0Lm9mZlVuaGFuZGxlZFJlamVjdGlvbihjYik7XG59KTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGNiKSB7XG4gIHJldHVybiB0dC5vbkVycm9yKGNiKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoY2IpIHtcbiAgcmV0dXJuIHR0Lm9uVW5oYW5kbGVkUmVqZWN0aW9uKGNiKTtcbn0pOyIsImltcG9ydCB7IGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNXZWIsIGlzQnl0ZURhbmNlTWljcm9BcHAsIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSwgaXNCYWlkdVNtYXJ0UHJvZ3JhbSB9IGZyb20gXCJAdW5pL2VudlwiO1xuaW1wb3J0IGFsaU1pbmlBcHBNb2R1bGUgZnJvbSBcIi4vYWxpLW1pbmlhcHAvaW5kZXhcIjtcbmltcG9ydCB3ZUNoYXRNb2R1bGUgZnJvbSBcIi4vd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYnl0ZWRhbmNlTW9kdWxlIGZyb20gXCIuL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleFwiO1xuaW1wb3J0IHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmltcG9ydCBrdWFpU2hvdU1vZHVsZSBmcm9tIFwiLi9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJhaUR1TW9kdWxlIGZyb20gXCIuL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleFwiO1xuZXhwb3J0IHZhciBnZXRBcHAgPSBmdW5jdGlvbiBnZXRBcHAoKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuZ2V0QXBwKCk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmdldEFwcCgpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmdldEFwcCgpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmdldEFwcCgpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLmdldEFwcCgpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuZ2V0QXBwKCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5p77yaYXBwbGljYXRpb24uZ2V0QXBwIOaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBnZXRDdXJyZW50UGFnZXMgPSBmdW5jdGlvbiBnZXRDdXJyZW50UGFnZXMoKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuZ2V0Q3VycmVudFBhZ2VzKCk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmdldEN1cnJlbnRQYWdlcygpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmdldEN1cnJlbnRQYWdlcygpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmdldEN1cnJlbnRQYWdlcygpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLmdldEN1cnJlbnRQYWdlcygpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuZ2V0Q3VycmVudFBhZ2VzKCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5p77yaYXBwbGljYXRpb24uZ2V0Q3VycmVudFBhZ2VzIOaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBnZXRMYXVuY2hPcHRpb25zU3luYyA9IGZ1bmN0aW9uIGdldExhdW5jaE9wdGlvbnNTeW5jKCkge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLmdldExhdW5jaE9wdGlvbnNTeW5jKCk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmdldExhdW5jaE9wdGlvbnNTeW5jKCk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuZ2V0TGF1bmNoT3B0aW9uc1N5bmMoKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5nZXRMYXVuY2hPcHRpb25zU3luYygpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLmdldExhdW5jaE9wdGlvbnNTeW5jKCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5p77yaYXBwbGljYXRpb24uZ2V0TGF1bmNoT3B0aW9uc1N5bmMg5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIG9uRXJyb3IgPSBmdW5jdGlvbiBvbkVycm9yKG9wdGlvbnMpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5vbkVycm9yKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQHVuae+8mm9uRXJyb3Ig5pqC5LiN5pSv5oyBJyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUub25FcnJvcihvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5vbkVycm9yKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLm9uRXJyb3Iob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5vbkVycm9yKG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQHVuae+8mm9uRXJyb3Ig5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIG9mZkVycm9yID0gZnVuY3Rpb24gb2ZmRXJyb3Iob3B0aW9ucykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLm9mZkVycm9yKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHRocm93IG5ldyBFcnJvcignQHVuae+8mm9mZkVycm9yIOaaguS4jeaUr+aMgScpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLm9mZkVycm9yKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLm9mZkVycm9yKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLm9mZkVycm9yKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUub2ZmRXJyb3Iob3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5p77yab2ZmRXJyb3LmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgb25VbmhhbmRsZWRSZWplY3Rpb24gPSBmdW5jdGlvbiBvblVuaGFuZGxlZFJlamVjdGlvbihvcHRpb25zKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUub25VbmhhbmRsZWRSZWplY3Rpb24ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLm9uVW5oYW5kbGVkUmVqZWN0aW9uKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLm9uVW5oYW5kbGVkUmVqZWN0aW9uKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLm9uVW5oYW5kbGVkUmVqZWN0aW9uKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLm9uVW5oYW5kbGVkUmVqZWN0aW9uKG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQHVuae+8mm9uVW5oYW5kbGVkUmVqZWN0aW9uIOaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBvZmZVbmhhbmRsZWRSZWplY3Rpb24gPSBmdW5jdGlvbiBvZmZVbmhhbmRsZWRSZWplY3Rpb24ob3B0aW9ucykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLm9mZlVuaGFuZGxlZFJlamVjdGlvbihvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUub2ZmVW5oYW5kbGVkUmVqZWN0aW9uKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLm9mZlVuaGFuZGxlZFJlamVjdGlvbihvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5vZmZVbmhhbmRsZWRSZWplY3Rpb24ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUub2ZmVW5oYW5kbGVkUmVqZWN0aW9uKG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQHVuae+8mkFwcGxpY2F0aW9uLm9mZlVuaGFuZGxlZFJlamVjdGlvbiDmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0QXBwOiBnZXRBcHAsXG4gIGdldEN1cnJlbnRQYWdlczogZ2V0Q3VycmVudFBhZ2VzLFxuICBnZXRMYXVuY2hPcHRpb25zU3luYzogZ2V0TGF1bmNoT3B0aW9uc1N5bmMsXG4gIG9uRXJyb3I6IG9uRXJyb3IsXG4gIG9mZkVycm9yOiBvZmZFcnJvcixcbiAgb25VbmhhbmRsZWRSZWplY3Rpb246IG9uVW5oYW5kbGVkUmVqZWN0aW9uLFxuICBvZmZVbmhhbmRsZWRSZWplY3Rpb246IG9mZlVuaGFuZGxlZFJlamVjdGlvblxufTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZ2V0QXBwKCk7XG59KTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gZ2V0Q3VycmVudFBhZ2VzKCk7XG59KTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4ga3MuZ2V0TGF1bmNoT3B0aW9uc1N5bmMoKTtcbn0pOyIsImltcG9ydCBnZXRBcHAgZnJvbSBcIi4vZ2V0QXBwXCI7XG5pbXBvcnQgZ2V0Q3VycmVudFBhZ2VzIGZyb20gXCIuL2dldEN1cnJlbnRQYWdlc1wiO1xuaW1wb3J0IGdldExhdW5jaE9wdGlvbnNTeW5jIGZyb20gXCIuL2dldExhdW5jaE9wdGlvbnNTeW5jXCI7XG5pbXBvcnQgb25FcnJvciBmcm9tIFwiLi9vbkVycm9yXCI7XG5pbXBvcnQgb2ZmRXJyb3IgZnJvbSBcIi4vb2ZmRXJyb3JcIjtcbmltcG9ydCBvblVuaGFuZGxlZFJlamVjdGlvbiBmcm9tIFwiLi9vblVuaGFuZGxlZFJlamVjdGlvblwiO1xuaW1wb3J0IG9mZlVuaGFuZGxlZFJlamVjdGlvbiBmcm9tIFwiLi9vZmZVbmhhbmRsZWRSZWplY3Rpb25cIjtcbmV4cG9ydCB7IGdldEFwcCwgZ2V0Q3VycmVudFBhZ2VzLCBnZXRMYXVuY2hPcHRpb25zU3luYywgb25FcnJvciwgb2ZmRXJyb3IsIG9uVW5oYW5kbGVkUmVqZWN0aW9uLCBvZmZVbmhhbmRsZWRSZWplY3Rpb24gfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0QXBwOiBnZXRBcHAsXG4gIGdldEN1cnJlbnRQYWdlczogZ2V0Q3VycmVudFBhZ2VzLFxuICBnZXRMYXVuY2hPcHRpb25zU3luYzogZ2V0TGF1bmNoT3B0aW9uc1N5bmMsXG4gIG9uRXJyb3I6IG9uRXJyb3IsXG4gIG9mZkVycm9yOiBvZmZFcnJvcixcbiAgb25VbmhhbmRsZWRSZWplY3Rpb246IG9uVW5oYW5kbGVkUmVqZWN0aW9uLFxuICBvZmZVbmhhbmRsZWRSZWplY3Rpb246IG9mZlVuaGFuZGxlZFJlamVjdGlvblxufTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGNiKSB7XG4gIHJldHVybiBrcy5vZmZFcnJvcihjYik7XG59KTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGNiKSB7XG4gIHJldHVybiBrcy5vZmZVbmhhbmRsZWRSZWplY3Rpb24oY2IpO1xufSk7IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChjYikge1xuICByZXR1cm4ga3Mub25FcnJvcihjYik7XG59KTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGNiKSB7XG4gIHJldHVybiBrcy5vblVuaGFuZGxlZFJlamVjdGlvbihjYik7XG59KTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gd2luZG93O1xufSk7IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICgpIHtcbiAgdmFyIHF1ZXJ5ID0ge307XG4gIHZhciBoYXNoID0ge307XG4gIHdpbmRvdy5sb2NhdGlvbi5oYXNoLnJlcGxhY2UoLyMuKj9cXD8vLCAnJykuc3BsaXQoJyYnKS5mb3JFYWNoKGZ1bmN0aW9uIChpKSB7XG4gICAgaGFzaFtpLnNwbGl0KCc9JylbMF1dID0gaS5zcGxpdCgnPScpWzFdO1xuICB9KTtcbiAgd2luZG93LmxvY2F0aW9uLnNlYXJjaC5yZXBsYWNlKCc/JywgJycpLnNwbGl0KCcmJykuZm9yRWFjaChmdW5jdGlvbiAoaSkge1xuICAgIHF1ZXJ5W2kuc3BsaXQoJz0nKVswXV0gPSBpLnNwbGl0KCc9JylbMV07XG4gIH0pO1xuICByZXR1cm4gW3tcbiAgICBwYWdlSWQ6IFwiXCIgKyB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWUgKyB3aW5kb3cubG9jYXRpb24uaGFzaCArIFwiLTFcIixcbiAgICBxdWVyeTogcXVlcnksXG4gICAgaGFzaDogaGFzaFxuICB9XTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB7XG4gICAgcGF0aDogd2luZG93LmxvY2F0aW9uLnBhdGhuYW1lLFxuICAgIHF1ZXJ5OiB7fVxuICB9O1xufSk7IiwiaW1wb3J0IGdldEFwcCBmcm9tIFwiLi9nZXRBcHBcIjtcbmltcG9ydCBnZXRDdXJyZW50UGFnZXMgZnJvbSBcIi4vZ2V0Q3VycmVudFBhZ2VzXCI7XG5pbXBvcnQgZ2V0TGF1bmNoT3B0aW9uc1N5bmMgZnJvbSBcIi4vZ2V0TGF1bmNoT3B0aW9uc1N5bmNcIjtcbmltcG9ydCBvbkVycm9yIGZyb20gXCIuL29uRXJyb3JcIjtcbmltcG9ydCBvZmZFcnJvciBmcm9tIFwiLi9vZmZFcnJvclwiO1xuaW1wb3J0IG9uVW5oYW5kbGVkUmVqZWN0aW9uIGZyb20gXCIuL29uVW5oYW5kbGVkUmVqZWN0aW9uXCI7XG5pbXBvcnQgb2ZmVW5oYW5kbGVkUmVqZWN0aW9uIGZyb20gXCIuL29mZlVuaGFuZGxlZFJlamVjdGlvblwiO1xuZXhwb3J0IHsgZ2V0QXBwLCBnZXRDdXJyZW50UGFnZXMsIGdldExhdW5jaE9wdGlvbnNTeW5jLCBvbkVycm9yLCBvZmZFcnJvciwgb25VbmhhbmRsZWRSZWplY3Rpb24sIG9mZlVuaGFuZGxlZFJlamVjdGlvbiB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRBcHA6IGdldEFwcCxcbiAgZ2V0Q3VycmVudFBhZ2VzOiBnZXRDdXJyZW50UGFnZXMsXG4gIGdldExhdW5jaE9wdGlvbnNTeW5jOiBnZXRMYXVuY2hPcHRpb25zU3luYyxcbiAgb25FcnJvcjogb25FcnJvcixcbiAgb2ZmRXJyb3I6IG9mZkVycm9yLFxuICBvblVuaGFuZGxlZFJlamVjdGlvbjogb25VbmhhbmRsZWRSZWplY3Rpb24sXG4gIG9mZlVuaGFuZGxlZFJlamVjdGlvbjogb2ZmVW5oYW5kbGVkUmVqZWN0aW9uXG59OyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoY2IpIHtcbiAgcmV0dXJuIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCdlcnJvcicsIGNiKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoY2IpIHtcbiAgcmV0dXJuIHdpbmRvdy5yZW1vdmVFdmVudExpc3RlbmVyKCd1bmhhbmRsZWRyZWplY3Rpb24nLCBjYik7XG59KTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGNiKSB7XG4gIHJldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBjYik7XG59KTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGNiKSB7XG4gIHJldHVybiB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigndW5oYW5kbGVkcmVqZWN0aW9uJywgY2IpO1xufSk7IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGdldEFwcCgpO1xufSk7IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGdldEN1cnJlbnRQYWdlcygpO1xufSk7IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHd4LmdldExhdW5jaE9wdGlvbnNTeW5jKCk7XG59KTsiLCJpbXBvcnQgZ2V0QXBwIGZyb20gXCIuL2dldEFwcFwiO1xuaW1wb3J0IGdldEN1cnJlbnRQYWdlcyBmcm9tIFwiLi9nZXRDdXJyZW50UGFnZXNcIjtcbmltcG9ydCBnZXRMYXVuY2hPcHRpb25zU3luYyBmcm9tIFwiLi9nZXRMYXVuY2hPcHRpb25zU3luY1wiO1xuaW1wb3J0IG9uRXJyb3IgZnJvbSBcIi4vb25FcnJvclwiO1xuaW1wb3J0IG9mZkVycm9yIGZyb20gXCIuL29mZkVycm9yXCI7XG5pbXBvcnQgb25VbmhhbmRsZWRSZWplY3Rpb24gZnJvbSBcIi4vb25VbmhhbmRsZWRSZWplY3Rpb25cIjtcbmltcG9ydCBvZmZVbmhhbmRsZWRSZWplY3Rpb24gZnJvbSBcIi4vb2ZmVW5oYW5kbGVkUmVqZWN0aW9uXCI7XG5leHBvcnQgeyBnZXRBcHAsIGdldEN1cnJlbnRQYWdlcywgZ2V0TGF1bmNoT3B0aW9uc1N5bmMsIG9uRXJyb3IsIG9mZkVycm9yLCBvblVuaGFuZGxlZFJlamVjdGlvbiwgb2ZmVW5oYW5kbGVkUmVqZWN0aW9uIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldEFwcDogZ2V0QXBwLFxuICBnZXRDdXJyZW50UGFnZXM6IGdldEN1cnJlbnRQYWdlcyxcbiAgZ2V0TGF1bmNoT3B0aW9uc1N5bmM6IGdldExhdW5jaE9wdGlvbnNTeW5jLFxuICBvbkVycm9yOiBvbkVycm9yLFxuICBvZmZFcnJvcjogb2ZmRXJyb3IsXG4gIG9uVW5oYW5kbGVkUmVqZWN0aW9uOiBvblVuaGFuZGxlZFJlamVjdGlvbixcbiAgb2ZmVW5oYW5kbGVkUmVqZWN0aW9uOiBvZmZVbmhhbmRsZWRSZWplY3Rpb25cbn07IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChjYikge1xuICByZXR1cm4gd3gub2ZmRXJyb3IoY2IpO1xufSk7IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChjYikge1xuICByZXR1cm4gd3gub2ZmVW5oYW5kbGVkUmVqZWN0aW9uKGNiKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoY2IpIHtcbiAgcmV0dXJuIHd4Lm9uRXJyb3IoY2IpO1xufSk7IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChjYikge1xuICByZXR1cm4gd3gub25VbmhhbmRsZWRSZWplY3Rpb24oY2IpO1xufSk7IiwiZnVuY3Rpb24gYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBrZXksIGFyZykgeyB0cnkgeyB2YXIgaW5mbyA9IGdlbltrZXldKGFyZyk7IHZhciB2YWx1ZSA9IGluZm8udmFsdWU7IH0gY2F0Y2ggKGVycm9yKSB7IHJlamVjdChlcnJvcik7IHJldHVybjsgfSBpZiAoaW5mby5kb25lKSB7IHJlc29sdmUodmFsdWUpOyB9IGVsc2UgeyBQcm9taXNlLnJlc29sdmUodmFsdWUpLnRoZW4oX25leHQsIF90aHJvdyk7IH0gfVxuXG5mdW5jdGlvbiBfYXN5bmNUb0dlbmVyYXRvcihmbikgeyByZXR1cm4gZnVuY3Rpb24gKCkgeyB2YXIgc2VsZiA9IHRoaXMsIGFyZ3MgPSBhcmd1bWVudHM7IHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7IHZhciBnZW4gPSBmbi5hcHBseShzZWxmLCBhcmdzKTsgZnVuY3Rpb24gX25leHQodmFsdWUpIHsgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcIm5leHRcIiwgdmFsdWUpOyB9IGZ1bmN0aW9uIF90aHJvdyhlcnIpIHsgYXN5bmNHZW5lcmF0b3JTdGVwKGdlbiwgcmVzb2x2ZSwgcmVqZWN0LCBfbmV4dCwgX3Rocm93LCBcInRocm93XCIsIGVycik7IH0gX25leHQodW5kZWZpbmVkKTsgfSk7IH07IH1cblxudmFyIEV2ZW50cyA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEV2ZW50cygpIHtcbiAgICB0aGlzLmV2ZW50cyA9IHZvaWQgMDtcbiAgICB0aGlzLmV2ZW50cyA9IHt9O1xuICB9XG5cbiAgdmFyIF9wcm90byA9IEV2ZW50cy5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLmVtaXQgPSBmdW5jdGlvbiBlbWl0KGtleSwgcGFyYW1zKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIGlmICh0aGlzLmV2ZW50c1trZXldICYmIHRoaXMuZXZlbnRzW2tleV0uc2l6ZSA+IDApIHtcbiAgICAgIHZhciBfcXVldWUgPSBuZXcgU2V0KEFycmF5LmZyb20odGhpcy5ldmVudHNba2V5XSkpO1xuXG4gICAgICBfcXVldWUuZm9yRWFjaCggLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIF9yZWYgPSBfYXN5bmNUb0dlbmVyYXRvciggLyojX19QVVJFX18qL3JlZ2VuZXJhdG9yUnVudGltZS5tYXJrKGZ1bmN0aW9uIF9jYWxsZWUoaXRlbSkge1xuICAgICAgICAgIHJldHVybiByZWdlbmVyYXRvclJ1bnRpbWUud3JhcChmdW5jdGlvbiBfY2FsbGVlJChfY29udGV4dCkge1xuICAgICAgICAgICAgd2hpbGUgKDEpIHtcbiAgICAgICAgICAgICAgc3dpdGNoIChfY29udGV4dC5wcmV2ID0gX2NvbnRleHQubmV4dCkge1xuICAgICAgICAgICAgICAgIGNhc2UgMDpcbiAgICAgICAgICAgICAgICAgIGl0ZW0uaGFuZGxlcihwYXJhbXMpO1xuXG4gICAgICAgICAgICAgICAgICBpZiAoaXRlbS5vbmNlKSB7XG4gICAgICAgICAgICAgICAgICAgIF90aGlzLmV2ZW50c1trZXldLmRlbGV0ZShpdGVtKTtcbiAgICAgICAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgICAgICBjYXNlIFwiZW5kXCI6XG4gICAgICAgICAgICAgICAgICByZXR1cm4gX2NvbnRleHQuc3RvcCgpO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSwgX2NhbGxlZSk7XG4gICAgICAgIH0pKTtcblxuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF94KSB7XG4gICAgICAgICAgcmV0dXJuIF9yZWYuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbiAgICAgICAgfTtcbiAgICAgIH0oKSk7XG4gICAgfVxuICB9IC8vIGFzeW5jIF9lbWl0KGtleTogc3RyaW5nLCBwYXJhbXM6IGFueSkge1xuICAvLyAgIGlmICh0aGlzLmV2ZW50c1trZXldICYmIHRoaXMuZXZlbnRzW2tleV0ubGVuZ3RoID4gMCkge1xuICAvLyAgICAgY29uc3QgaXRlbSA9IHRoaXMuZXZlbnRzW2tleV0uc2hpZnQoKTtcbiAgLy8gICAgIGlmIChpc0FzeW5jKGl0ZW0pKSB7XG4gIC8vICAgICAgIGF3YWl0IGl0ZW0ocGFyYW1zKTtcbiAgLy8gICAgIH0gZWxzZSB7XG4gIC8vICAgICAgIGl0ZW0ocGFyYW1zKTtcbiAgLy8gICAgIH1cbiAgLy8gICAgIHRoaXMuZW1pdChrZXksIHBhcmFtcyk7XG4gIC8vICAgfVxuICAvLyB9XG4gIDtcblxuICBfcHJvdG8ub25jZSA9IGZ1bmN0aW9uIG9uY2Uoa2V5LCBjYikge1xuICAgIHZhciBpdGVtID0ge1xuICAgICAgb25jZTogdHJ1ZSxcbiAgICAgIGhhbmRsZXI6IGNiXG4gICAgfTtcbiAgICB0aGlzLmV2ZW50c1trZXldID8gdGhpcy5ldmVudHNba2V5XS5hZGQoaXRlbSkgOiB0aGlzLmV2ZW50c1trZXldID0gbmV3IFNldChbaXRlbV0pOyAvLyByZXR1cm4gKCkgPT4ge1xuICAgIC8vICAgdGhpcy5ldmVudHNba2V5XS5kZWxldGUoaXRlbSk7XG4gICAgLy8gfTtcbiAgfTtcblxuICBfcHJvdG8ucmVnaXN0ZXIgPSBmdW5jdGlvbiByZWdpc3RlcihrZXksIGNiKSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICB2YXIgaXRlbSA9IHtcbiAgICAgIG9uY2U6IGZhbHNlLFxuICAgICAgaGFuZGxlcjogY2JcbiAgICB9O1xuICAgIHRoaXMuZXZlbnRzW2tleV0gPyB0aGlzLmV2ZW50c1trZXldLmFkZChpdGVtKSA6IHRoaXMuZXZlbnRzW2tleV0gPSBuZXcgU2V0KFtpdGVtXSk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzMi5ldmVudHNba2V5XS5kZWxldGUoaXRlbSk7XG4gICAgfTtcbiAgfTtcblxuICByZXR1cm4gRXZlbnRzO1xufSgpO1xuXG5leHBvcnQgeyBFdmVudHMgYXMgZGVmYXVsdCB9OyIsImZ1bmN0aW9uIGlzVW5kZWYodHlwZSkge1xuICByZXR1cm4gdHlwZSA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbmV4cG9ydCB2YXIgaXNEaW5nZGluZ01pbmlhcHAgPSAhaXNVbmRlZih0eXBlb2YgZGQpICYmIGRkICE9PSBudWxsICYmICFpc1VuZGVmKHR5cGVvZiBkZC5hbGVydCk7IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLmNyZWF0ZUlubmVyQXVkaW9Db250ZXh0KCkgOiBteS5jcmVhdGVJbm5lckF1ZGlvQ29udGV4dCgpO1xufSk7IiwiaW1wb3J0IGNyZWF0ZUF1ZGlvQ29udGV4dCBmcm9tIFwiLi9jcmVhdGVBdWRpb0NvbnRleHRcIjtcbmV4cG9ydCB7IGNyZWF0ZUF1ZGlvQ29udGV4dCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVBdWRpb0NvbnRleHQ6IGNyZWF0ZUF1ZGlvQ29udGV4dFxufTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gc3dhbi5jcmVhdGVJbm5lckF1ZGlvQ29udGV4dCgpO1xufSk7IiwiaW1wb3J0IGNyZWF0ZUF1ZGlvQ29udGV4dCBmcm9tIFwiLi9jcmVhdGVBdWRpb0NvbnRleHRcIjtcbmV4cG9ydCB7IGNyZWF0ZUF1ZGlvQ29udGV4dCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVBdWRpb0NvbnRleHQ6IGNyZWF0ZUF1ZGlvQ29udGV4dFxufTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHQuY3JlYXRlSW5uZXJBdWRpb0NvbnRleHQoKTtcbn0pOyIsImltcG9ydCBjcmVhdGVBdWRpb0NvbnRleHQgZnJvbSBcIi4vY3JlYXRlQXVkaW9Db250ZXh0XCI7XG5leHBvcnQgeyBjcmVhdGVBdWRpb0NvbnRleHQgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlQXVkaW9Db250ZXh0OiBjcmVhdGVBdWRpb0NvbnRleHRcbn07IiwiaW1wb3J0IHsgaXNNaW5pQXBwLCBpc1dlQ2hhdE1pbmlQcm9ncmFtLCBpc1dlYiwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNCYWlkdVNtYXJ0UHJvZ3JhbSwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtIH0gZnJvbSBcIkB1bmkvZW52XCI7XG5pbXBvcnQgYWxpTWluaUFwcE1vZHVsZSBmcm9tIFwiLi9hbGktbWluaWFwcC9pbmRleFwiO1xuaW1wb3J0IHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmltcG9ydCB3ZUNoYXRNb2R1bGUgZnJvbSBcIi4vd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYnl0ZWRhbmNlTW9kdWxlIGZyb20gXCIuL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleFwiO1xuaW1wb3J0IGJhaUR1TW9kdWxlIGZyb20gXCIuL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGt1YWlTaG91TW9kdWxlIGZyb20gXCIuL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5leHBvcnQgdmFyIGNyZWF0ZUF1ZGlvQ29udGV4dCA9IGZ1bmN0aW9uIGNyZWF0ZUF1ZGlvQ29udGV4dChhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuY3JlYXRlQXVkaW9Db250ZXh0KCk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmNyZWF0ZUF1ZGlvQ29udGV4dCgpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmNyZWF0ZUF1ZGlvQ29udGV4dChhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5jcmVhdGVBdWRpb0NvbnRleHQoKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5jcmVhdGVBdWRpb0NvbnRleHQoKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLmNyZWF0ZUF1ZGlvQ29udGV4dCgpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQHVuaS9hcGlz77yaY3JlYXRlSW5uZXJBdWRpb0NvbnRleHTmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlQXVkaW9Db250ZXh0OiBjcmVhdGVBdWRpb0NvbnRleHRcbn07IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGtzLmNyZWF0ZUlubmVyQXVkaW9Db250ZXh0KCk7XG59KTsiLCJpbXBvcnQgY3JlYXRlQXVkaW9Db250ZXh0IGZyb20gXCIuL2NyZWF0ZUF1ZGlvQ29udGV4dFwiO1xuZXhwb3J0IHsgY3JlYXRlQXVkaW9Db250ZXh0IH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGNyZWF0ZUF1ZGlvQ29udGV4dDogY3JlYXRlQXVkaW9Db250ZXh0XG59OyIsImZ1bmN0aW9uIF9kZWZpbmVQcm9wZXJ0aWVzKHRhcmdldCwgcHJvcHMpIHsgZm9yICh2YXIgaSA9IDA7IGkgPCBwcm9wcy5sZW5ndGg7IGkrKykgeyB2YXIgZGVzY3JpcHRvciA9IHByb3BzW2ldOyBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSBkZXNjcmlwdG9yLmVudW1lcmFibGUgfHwgZmFsc2U7IGRlc2NyaXB0b3IuY29uZmlndXJhYmxlID0gdHJ1ZTsgaWYgKFwidmFsdWVcIiBpbiBkZXNjcmlwdG9yKSBkZXNjcmlwdG9yLndyaXRhYmxlID0gdHJ1ZTsgT2JqZWN0LmRlZmluZVByb3BlcnR5KHRhcmdldCwgZGVzY3JpcHRvci5rZXksIGRlc2NyaXB0b3IpOyB9IH1cblxuZnVuY3Rpb24gX2NyZWF0ZUNsYXNzKENvbnN0cnVjdG9yLCBwcm90b1Byb3BzLCBzdGF0aWNQcm9wcykgeyBpZiAocHJvdG9Qcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IucHJvdG90eXBlLCBwcm90b1Byb3BzKTsgaWYgKHN0YXRpY1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvciwgc3RhdGljUHJvcHMpOyByZXR1cm4gQ29uc3RydWN0b3I7IH1cblxuLyogZXNsaW50LWRpc2FibGUgICovXG4vLyBpbXBvcnQgeyBBdWRpb0NvbnRleHQgfSBmcm9tICcuLi90eXBlcyc7XG5pbXBvcnQgRXZlbnRzIGZyb20gXCIuLi9fdXRpbHMvZXZlbnRcIjtcblxudmFyIElubmVyQXVkaW9Db250ZXh0ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gSW5uZXJBdWRpb0NvbnRleHQoKSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIHRoaXMuX3NpbmdsZUF1ZGlvQ29udGV4dCA9IHZvaWQgMDtcbiAgICB0aGlzLl9zb3VyY2UgPSB2b2lkIDA7XG4gICAgdGhpcy5fZ2Fpbk5vZGUgPSB2b2lkIDA7XG4gICAgdGhpcy5fc3JjID0gJyc7XG4gICAgdGhpcy5fc3RhcnRUaW1lID0gMDtcbiAgICB0aGlzLl9hdXRvcGxheSA9IGZhbHNlO1xuICAgIHRoaXMuX2J1ZmZlciA9IHZvaWQgMDtcbiAgICB0aGlzLl9ldmVudHMgPSBuZXcgRXZlbnRzKCk7XG4gICAgdGhpcy5faXNQbGF5aW5nID0gZmFsc2U7XG4gICAgdGhpcy5fY3VycmVudFRpbWUgPSAwO1xuICAgIHRoaXMuX3RpbWVTdGFtcCA9IDA7XG4gICAgdGhpcy5fbG9vcCA9IGZhbHNlO1xuICAgIHRoaXMuX3ZvbHVtZSA9IDE7XG4gICAgdGhpcy5fcGxheWJhY2tSYXRlID0gMTtcbiAgICB0aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrID0ge307XG4gICAgdGhpcy5faXNXYWl0aW5nID0gdHJ1ZTtcblxuICAgIHRoaXMuX3N0YXJ0ID0gZnVuY3Rpb24gKHN0YXJ0VGltZSkge1xuICAgICAgLy8g5aGr5YWF6Z+z6aKRYnVmZmVy5pWw5o2uXG4gICAgICAvLyDliJvlu7rmkq3mlL7lr7nosaHoioLngrlcbiAgICAgIF90aGlzLl9zb3VyY2UgPSBfdGhpcy5fc2luZ2xlQXVkaW9Db250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOyAvLyDliJvlu7rpn7Pph4/oioLngrko5aaC5p6c5L2g6ZyA6KaB55So6LCD5pW06Z+z6YeP5aSn5bCP55qE6K+dKVxuXG4gICAgICBfdGhpcy5fZ2Fpbk5vZGUgPSBfdGhpcy5fc2luZ2xlQXVkaW9Db250ZXh0LmNyZWF0ZUdhaW4oKTsgLy8gdGhpcy5hZGRFdmVudExpc3RlbmVyKCdvblBhbHknLCB0aGlzLm9uUGFseSk7XG5cbiAgICAgIF90aGlzLl9zb3VyY2UuYnVmZmVyID0gX3RoaXMuX2J1ZmZlcjsgLy8gY29uc29sZS5sb2coJ2J1ZmZlcicsIHRoaXMuX2J1ZmZlcik7XG5cbiAgICAgIF90aGlzLl9zb3VyY2UubG9vcCA9IF90aGlzLl9sb29wO1xuICAgICAgX3RoaXMuX3NvdXJjZS5wbGF5YmFja1JhdGUudmFsdWUgPSBfdGhpcy5fcGxheWJhY2tSYXRlO1xuICAgICAgX3RoaXMuX2dhaW5Ob2RlLmdhaW4udmFsdWUgPSBfdGhpcy5fdm9sdW1lO1xuXG4gICAgICBfdGhpcy5fc291cmNlLm9uZW5kZWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5fZXZlbnRzLmVtaXQoJ29uRW5kZWQnKTtcbiAgICAgIH07IC8vIOi/nuaOpeiKgueCueWvueixoVxuXG5cbiAgICAgIF90aGlzLl9zb3VyY2UuY29ubmVjdChfdGhpcy5fZ2Fpbk5vZGUpO1xuXG4gICAgICBfdGhpcy5fZ2Fpbk5vZGUuY29ubmVjdChfdGhpcy5fc2luZ2xlQXVkaW9Db250ZXh0LmRlc3RpbmF0aW9uKTtcblxuICAgICAgX3RoaXMuX3NvdXJjZS5zdGFydCgwLCBzdGFydFRpbWUpO1xuICAgIH07XG5cbiAgICB0aGlzLl9nZXREYXRhID0gZnVuY3Rpb24gKCkge1xuICAgICAgLy8gY29uc29sZS5sb2coJ2dldCBkYXRhIHN0YXJ0JywgdGhpcyk7XG4gICAgICBfdGhpcy5faXNXYWl0aW5nID0gdHJ1ZTtcblxuICAgICAgX3RoaXMuX2V2ZW50cy5lbWl0KCdvbldhaXRpbmcnKTtcblxuICAgICAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgICAgeGhyLm9wZW4oJ0dFVCcsIF90aGlzLl9zcmMsIHRydWUpO1xuICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcic7XG5cbiAgICAgIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIF90aGlzLl9zaW5nbGVBdWRpb0NvbnRleHQuZGVjb2RlQXVkaW9EYXRhKHhoci5yZXNwb25zZSwgZnVuY3Rpb24gKGJ1ZmZlcikge1xuICAgICAgICAgIF90aGlzLl9idWZmZXIgPSBidWZmZXI7XG5cbiAgICAgICAgICBfdGhpcy5fZXZlbnRzLmVtaXQoJ29uQ2FucGxheScpO1xuXG4gICAgICAgICAgX3RoaXMuX2lzV2FpdGluZyA9IGZhbHNlO1xuICAgICAgICAgIF90aGlzLmF1dG9wbGF5ICYmIF90aGlzLnBsYXkoKTtcbiAgICAgICAgfSk7XG4gICAgICB9O1xuXG4gICAgICB4aHIuc2VuZCgpO1xuICAgIH07XG5cbiAgICB0aGlzLnBsYXkgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5fY3VycmVudFRpbWUgPSBfdGhpcy5fY3VycmVudFRpbWUgKyBfdGhpcy5fc2luZ2xlQXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lIC0gX3RoaXMuX3RpbWVTdGFtcDtcbiAgICAgIF90aGlzLl90aW1lU3RhbXAgPSBfdGhpcy5fc2luZ2xlQXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lO1xuXG4gICAgICBpZiAoIV90aGlzLl9pc1BsYXlpbmcpIHtcbiAgICAgICAgX3RoaXMuX3N0YXJ0KF90aGlzLl9zdGFydFRpbWUpO1xuXG4gICAgICAgIF90aGlzLl9pc1BsYXlpbmcgPSB0cnVlO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5fc2luZ2xlQXVkaW9Db250ZXh0LnJlc3VtZSgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMuX2V2ZW50cy5lbWl0KCdvblBsYXknKTtcbiAgICAgIH0pLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShlKS5pbmRleE9mKCdjYW5ub3QgcmVzdW1lIGEgY2xvc2VkIEF1ZGlvQ29udGV4dCcpICE9PSAtMSkge1xuICAgICAgICAgIF90aGlzLl9ldmVudHMuZW1pdCgnb25FcnJvcicsICdjYW5ub3QgcmVzdW1lIGEgY2xvc2VkIEF1ZGlvQ29udGV4dCcpO1xuXG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9IC8vIGNvbnNvbGUubG9nKGUpO1xuXG5cbiAgICAgICAgX3RoaXMuX2V2ZW50cy5lbWl0KCdvbkVycm9yJywgZSk7XG4gICAgICB9KTsgLy8gY29uc29sZS5sb2coJ2N1cnJlbnRUaW1lJywgdGhpcy5jdXJyZW50VGltZSk7XG5cbiAgICB9O1xuXG4gICAgdGhpcy5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIF90aGlzLl9zaW5nbGVBdWRpb0NvbnRleHQuc3VzcGVuZCgpLnRoZW4oZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gX3RoaXMuX2V2ZW50cy5lbWl0KCdvblBhdXNlJyk7XG4gICAgICB9KS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZyhlKTtcbiAgICAgICAgX3RoaXMuX2V2ZW50cy5lbWl0KCdvbkVycm9yJywgZSk7XG4gICAgICB9KTtcblxuICAgICAgX3RoaXMuX2N1cnJlbnRUaW1lID0gX3RoaXMuX2N1cnJlbnRUaW1lICsgX3RoaXMuX3NpbmdsZUF1ZGlvQ29udGV4dC5jdXJyZW50VGltZSAtIF90aGlzLl90aW1lU3RhbXA7XG4gICAgICBfdGhpcy5fdGltZVN0YW1wID0gX3RoaXMuX3NpbmdsZUF1ZGlvQ29udGV4dC5jdXJyZW50VGltZTsgLy8gY29uc29sZS5sb2coJ2N1cnJlbnRUaW1lJywgdGhpcy5jdXJyZW50VGltZSk7XG4gICAgfTtcblxuICAgIHRoaXMuc3RvcCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIF90aGlzLl9zb3VyY2Uuc3RvcCgwKTtcblxuICAgICAgICBfdGhpcy5fY3VycmVudFRpbWUgPSBfdGhpcy5fY3VycmVudFRpbWUgKyBfdGhpcy5fc2luZ2xlQXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lIC0gX3RoaXMuX3RpbWVTdGFtcDtcbiAgICAgICAgX3RoaXMuX3RpbWVTdGFtcCA9IF90aGlzLl9zaW5nbGVBdWRpb0NvbnRleHQuY3VycmVudFRpbWU7XG4gICAgICAgIF90aGlzLl9pc1BsYXlpbmcgPSBmYWxzZTtcblxuICAgICAgICBfdGhpcy5fZXZlbnRzLmVtaXQoJ29uU3RvcCcpO1xuXG4gICAgICAgICFfdGhpcy5faXNXYWl0aW5nICYmIF90aGlzLl9ldmVudHMuZW1pdCgnb25DYW5wbGF5Jyk7XG4gICAgICAgIF90aGlzLl9jdXJyZW50VGltZSA9IF90aGlzLnN0YXJ0VGltZTtcbiAgICAgICAgX3RoaXMuX3RpbWVTdGFtcCA9IF90aGlzLl9zaW5nbGVBdWRpb0NvbnRleHQuY3VycmVudFRpbWU7IC8vIGNvbnNvbGUubG9nKCdjdXJyZW50VGltZScsIHRoaXMuY3VycmVudFRpbWUpO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBfdGhpcy5fZXZlbnRzLmVtaXQoJ29uRXJyb3InLCBlKTtcbiAgICAgIH1cbiAgICB9O1xuXG4gICAgdGhpcy5zZWVrID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBfdGhpcy5fZXZlbnRzLmVtaXQoJ29uU2Vla2luZycpO1xuXG4gICAgICAgIHZhbHVlID0gdmFsdWUgPCAwID8gMCA6IHZhbHVlO1xuICAgICAgICB2YWx1ZSA9IHZhbHVlID4gX3RoaXMuZHVyYXRpb24gPyBfdGhpcy5kdXJhdGlvbiA6IHZhbHVlO1xuICAgICAgICBfdGhpcy5faXNQbGF5aW5nID0gZmFsc2U7XG5cbiAgICAgICAgX3RoaXMuX3NvdXJjZS5zdG9wKDApO1xuXG4gICAgICAgIF90aGlzLl9zdGFydCh2YWx1ZSk7XG5cbiAgICAgICAgX3RoaXMuX2lzUGxheWluZyA9IHRydWU7XG5cbiAgICAgICAgX3RoaXMuX2V2ZW50cy5lbWl0KCdvblNlZWtlZCcpO1xuXG4gICAgICAgIF90aGlzLl9jdXJyZW50VGltZSA9IHZhbHVlO1xuICAgICAgICBfdGhpcy5fdGltZVN0YW1wID0gX3RoaXMuX3NpbmdsZUF1ZGlvQ29udGV4dC5jdXJyZW50VGltZTsgLy8gY29uc29sZS5sb2coJ2N1cnJlbnRUaW1lJywgdGhpcy5jdXJyZW50VGltZSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIF90aGlzLl9ldmVudHMuZW1pdCgnb25FcnJvcicsIGUpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICB0aGlzLmRlc3Ryb3kgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5fc2luZ2xlQXVkaW9Db250ZXh0LmNsb3NlKCkudGhlbihmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfdGhpcy5fZXZlbnRzLmVtaXQoJ29uRGVzdHJveScpO1xuICAgICAgfSkuY2F0Y2goZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coZSk7XG4gICAgICAgIF90aGlzLl9ldmVudHMuZW1pdCgnb25FcnJvcicsIGUpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRoaXMub25DYW5wbGF5ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICBpZiAoY2FsbGJhY2sgPT09IHZvaWQgMCkge1xuICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKGUpIHt9O1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5fZXZlbnREZWxldGVDYWxsYmFja1tjYWxsYmFjay50b1N0cmluZygpXSA9IF90aGlzLl9ldmVudHMucmVnaXN0ZXIoJ29uQ2FucGxheScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvbkNhbnBsYXknKTtcbiAgICAgICAgY2FsbGJhY2soZSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5vZmZDYW5wbGF5ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBfdGhpcyRfZXZlbnRzJGV2ZW50cywgX3RoaXMkX2V2ZW50cyRldmVudHMkO1xuXG4gICAgICAgIChfdGhpcyRfZXZlbnRzJGV2ZW50cyA9IF90aGlzLl9ldmVudHMuZXZlbnRzKSA9PSBudWxsID8gdm9pZCAwIDogKF90aGlzJF9ldmVudHMkZXZlbnRzJCA9IF90aGlzJF9ldmVudHMkZXZlbnRzLm9uQ2FucGxheSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzJF9ldmVudHMkZXZlbnRzJC5jbGVhcigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldICYmIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldKCk7XG4gICAgfTtcblxuICAgIHRoaXMub25QbGF5ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICBpZiAoY2FsbGJhY2sgPT09IHZvaWQgMCkge1xuICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKGUpIHt9O1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5fZXZlbnREZWxldGVDYWxsYmFja1tjYWxsYmFjay50b1N0cmluZygpXSA9IF90aGlzLl9ldmVudHMucmVnaXN0ZXIoJ29uUGxheScsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblBsYXknKTtcbiAgICAgICAgY2FsbGJhY2soZSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5vZmZQbGF5ID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBfdGhpcyRfZXZlbnRzJGV2ZW50czIsIF90aGlzJF9ldmVudHMkZXZlbnRzMztcblxuICAgICAgICAoX3RoaXMkX2V2ZW50cyRldmVudHMyID0gX3RoaXMuX2V2ZW50cy5ldmVudHMpID09IG51bGwgPyB2b2lkIDAgOiAoX3RoaXMkX2V2ZW50cyRldmVudHMzID0gX3RoaXMkX2V2ZW50cyRldmVudHMyLm9uUGxheSkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzJF9ldmVudHMkZXZlbnRzMy5jbGVhcigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldICYmIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldKCk7XG4gICAgfTtcblxuICAgIHRoaXMub25QYXVzZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgICAgaWYgKGNhbGxiYWNrID09PSB2b2lkIDApIHtcbiAgICAgICAgY2FsbGJhY2sgPSBmdW5jdGlvbiBjYWxsYmFjayhlKSB7fTtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuX2V2ZW50RGVsZXRlQ2FsbGJhY2tbY2FsbGJhY2sudG9TdHJpbmcoKV0gPSBfdGhpcy5fZXZlbnRzLnJlZ2lzdGVyKCdvblBhdXNlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uUGF1c2UnKTtcbiAgICAgICAgY2FsbGJhY2soZSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5vZmZQYXVzZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgICAgaWYgKCFjYWxsYmFjaykge1xuICAgICAgICB2YXIgX3RoaXMkX2V2ZW50cyRldmVudHM0LCBfdGhpcyRfZXZlbnRzJGV2ZW50czU7XG5cbiAgICAgICAgKF90aGlzJF9ldmVudHMkZXZlbnRzNCA9IF90aGlzLl9ldmVudHMuZXZlbnRzKSA9PSBudWxsID8gdm9pZCAwIDogKF90aGlzJF9ldmVudHMkZXZlbnRzNSA9IF90aGlzJF9ldmVudHMkZXZlbnRzNC5vblBhdXNlKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXMkX2V2ZW50cyRldmVudHM1LmNsZWFyKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuX2V2ZW50RGVsZXRlQ2FsbGJhY2tbY2FsbGJhY2sudG9TdHJpbmcoKV0gJiYgX3RoaXMuX2V2ZW50RGVsZXRlQ2FsbGJhY2tbY2FsbGJhY2sudG9TdHJpbmcoKV0oKTtcbiAgICB9O1xuXG4gICAgdGhpcy5vblN0b3AgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgIGlmIChjYWxsYmFjayA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24gY2FsbGJhY2soZSkge307XG4gICAgICB9XG5cbiAgICAgIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldID0gX3RoaXMuX2V2ZW50cy5yZWdpc3Rlcignb25TdG9wJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ29uU3RvcCcpO1xuICAgICAgICBjYWxsYmFjayhlKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLm9mZlN0b3AgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIF90aGlzJF9ldmVudHMkZXZlbnRzNiwgX3RoaXMkX2V2ZW50cyRldmVudHM3O1xuXG4gICAgICAgIChfdGhpcyRfZXZlbnRzJGV2ZW50czYgPSBfdGhpcy5fZXZlbnRzLmV2ZW50cykgPT0gbnVsbCA/IHZvaWQgMCA6IChfdGhpcyRfZXZlbnRzJGV2ZW50czcgPSBfdGhpcyRfZXZlbnRzJGV2ZW50czYub25TdG9wKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXMkX2V2ZW50cyRldmVudHM3LmNsZWFyKCk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgX3RoaXMuX2V2ZW50RGVsZXRlQ2FsbGJhY2tbY2FsbGJhY2sudG9TdHJpbmcoKV0gJiYgX3RoaXMuX2V2ZW50RGVsZXRlQ2FsbGJhY2tbY2FsbGJhY2sudG9TdHJpbmcoKV0oKTtcbiAgICB9O1xuXG4gICAgdGhpcy5vbkVuZGVkID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICBpZiAoY2FsbGJhY2sgPT09IHZvaWQgMCkge1xuICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKGUpIHt9O1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5fZXZlbnREZWxldGVDYWxsYmFja1tjYWxsYmFjay50b1N0cmluZygpXSA9IF90aGlzLl9ldmVudHMucmVnaXN0ZXIoJ29uRW5kZWQnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25FbmRlZCcpO1xuICAgICAgICBjYWxsYmFjayhlKTtcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICB0aGlzLm9mZkVuZGVkID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBfdGhpcyRfZXZlbnRzJGV2ZW50czgsIF90aGlzJF9ldmVudHMkZXZlbnRzOTtcblxuICAgICAgICAoX3RoaXMkX2V2ZW50cyRldmVudHM4ID0gX3RoaXMuX2V2ZW50cy5ldmVudHMpID09IG51bGwgPyB2b2lkIDAgOiAoX3RoaXMkX2V2ZW50cyRldmVudHM5ID0gX3RoaXMkX2V2ZW50cyRldmVudHM4Lm9uRW5kZWQpID09IG51bGwgPyB2b2lkIDAgOiBfdGhpcyRfZXZlbnRzJGV2ZW50czkuY2xlYXIoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5fZXZlbnREZWxldGVDYWxsYmFja1tjYWxsYmFjay50b1N0cmluZygpXSAmJiBfdGhpcy5fZXZlbnREZWxldGVDYWxsYmFja1tjYWxsYmFjay50b1N0cmluZygpXSgpO1xuICAgIH07XG5cbiAgICB0aGlzLm9uRXJyb3IgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgIGlmIChjYWxsYmFjayA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24gY2FsbGJhY2soZSkge307XG4gICAgICB9XG5cbiAgICAgIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldID0gX3RoaXMuX2V2ZW50cy5yZWdpc3Rlcignb25FcnJvcicsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvbkVycm9yMjIyJyk7XG4gICAgICAgIGNhbGxiYWNrKGUpO1xuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHRoaXMub2ZmRXJyb3IgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIF90aGlzJF9ldmVudHMkZXZlbnRzMTAsIF90aGlzJF9ldmVudHMkZXZlbnRzMTE7XG5cbiAgICAgICAgKF90aGlzJF9ldmVudHMkZXZlbnRzMTAgPSBfdGhpcy5fZXZlbnRzLmV2ZW50cykgPT0gbnVsbCA/IHZvaWQgMCA6IChfdGhpcyRfZXZlbnRzJGV2ZW50czExID0gX3RoaXMkX2V2ZW50cyRldmVudHMxMC5vbkVycm9yKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXMkX2V2ZW50cyRldmVudHMxMS5jbGVhcigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldICYmIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldKCk7XG4gICAgfTtcblxuICAgIHRoaXMub25XYWl0aW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICBpZiAoY2FsbGJhY2sgPT09IHZvaWQgMCkge1xuICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKGUpIHt9O1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5fZXZlbnREZWxldGVDYWxsYmFja1tjYWxsYmFjay50b1N0cmluZygpXSA9IF90aGlzLl9ldmVudHMucmVnaXN0ZXIoJ29uV2FpdGluZycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvbldhaXRpbmcnKTtcbiAgICAgICAgY2FsbGJhY2soZSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5vZmZXYWl0aW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBfdGhpcyRfZXZlbnRzJGV2ZW50czEyLCBfdGhpcyRfZXZlbnRzJGV2ZW50czEzO1xuXG4gICAgICAgIChfdGhpcyRfZXZlbnRzJGV2ZW50czEyID0gX3RoaXMuX2V2ZW50cy5ldmVudHMpID09IG51bGwgPyB2b2lkIDAgOiAoX3RoaXMkX2V2ZW50cyRldmVudHMxMyA9IF90aGlzJF9ldmVudHMkZXZlbnRzMTIub25XYWl0aW5nKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXMkX2V2ZW50cyRldmVudHMxMy5jbGVhcigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldICYmIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldKCk7XG4gICAgfTtcblxuICAgIHRoaXMub25TZWVraW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICBpZiAoY2FsbGJhY2sgPT09IHZvaWQgMCkge1xuICAgICAgICBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKGUpIHt9O1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5fZXZlbnREZWxldGVDYWxsYmFja1tjYWxsYmFjay50b1N0cmluZygpXSA9IF90aGlzLl9ldmVudHMucmVnaXN0ZXIoJ29uU2Vla2luZycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCdvblNlZWtpbmcnKTtcbiAgICAgICAgY2FsbGJhY2soZSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5vZmZTZWVraW5nID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gICAgICBpZiAoIWNhbGxiYWNrKSB7XG4gICAgICAgIHZhciBfdGhpcyRfZXZlbnRzJGV2ZW50czE0LCBfdGhpcyRfZXZlbnRzJGV2ZW50czE1O1xuXG4gICAgICAgIChfdGhpcyRfZXZlbnRzJGV2ZW50czE0ID0gX3RoaXMuX2V2ZW50cy5ldmVudHMpID09IG51bGwgPyB2b2lkIDAgOiAoX3RoaXMkX2V2ZW50cyRldmVudHMxNSA9IF90aGlzJF9ldmVudHMkZXZlbnRzMTQub25TZWVraW5nKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXMkX2V2ZW50cyRldmVudHMxNS5jbGVhcigpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldICYmIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldKCk7XG4gICAgfTtcblxuICAgIHRoaXMub25TZWVrZWQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgIGlmIChjYWxsYmFjayA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGNhbGxiYWNrID0gZnVuY3Rpb24gY2FsbGJhY2soZSkge307XG4gICAgICB9XG5cbiAgICAgIF90aGlzLl9ldmVudERlbGV0ZUNhbGxiYWNrW2NhbGxiYWNrLnRvU3RyaW5nKCldID0gX3RoaXMuX2V2ZW50cy5yZWdpc3Rlcignb25TZWVrZWQnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgICAvLyBjb25zb2xlLmxvZygnb25TZWVrZWQnKTtcbiAgICAgICAgY2FsbGJhY2soZSk7XG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgdGhpcy5vZmZTZWVrZWQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgIGlmICghY2FsbGJhY2spIHtcbiAgICAgICAgdmFyIF90aGlzJF9ldmVudHMkZXZlbnRzMTYsIF90aGlzJF9ldmVudHMkZXZlbnRzMTc7XG5cbiAgICAgICAgKF90aGlzJF9ldmVudHMkZXZlbnRzMTYgPSBfdGhpcy5fZXZlbnRzLmV2ZW50cykgPT0gbnVsbCA/IHZvaWQgMCA6IChfdGhpcyRfZXZlbnRzJGV2ZW50czE3ID0gX3RoaXMkX2V2ZW50cyRldmVudHMxNi5vblNlZWtlZCkgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzJF9ldmVudHMkZXZlbnRzMTcuY2xlYXIoKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBfdGhpcy5fZXZlbnREZWxldGVDYWxsYmFja1tjYWxsYmFjay50b1N0cmluZygpXSAmJiBfdGhpcy5fZXZlbnREZWxldGVDYWxsYmFja1tjYWxsYmFjay50b1N0cmluZygpXSgpO1xuICAgIH07XG5cbiAgICAvLyBzdXBlcigpO1xuICAgIHZhciBBdWRpb0NvbnRleHQgPSB3aW5kb3cuQXVkaW9Db250ZXh0IHx8IHdpbmRvdy53ZWJraXRBdWRpb0NvbnRleHQ7XG4gICAgdmFyIHNpbmdsZUF1ZGlvQ29udGV4dCA9IG5ldyBBdWRpb0NvbnRleHQoKTtcbiAgICB0aGlzLl9zaW5nbGVBdWRpb0NvbnRleHQgPSBzaW5nbGVBdWRpb0NvbnRleHQ7IC8vIOWIm+W7uuaSreaUvuWvueixoeiKgueCuVxuXG4gICAgdGhpcy5fc291cmNlID0gdGhpcy5fc2luZ2xlQXVkaW9Db250ZXh0LmNyZWF0ZUJ1ZmZlclNvdXJjZSgpOyAvLyDliJvlu7rpn7Pph4/oioLngrko5aaC5p6c5L2g6ZyA6KaB55So6LCD5pW06Z+z6YeP5aSn5bCP55qE6K+dKVxuXG4gICAgdGhpcy5fZ2Fpbk5vZGUgPSB0aGlzLl9zaW5nbGVBdWRpb0NvbnRleHQuY3JlYXRlR2FpbigpO1xuICB9XG5cbiAgX2NyZWF0ZUNsYXNzKElubmVyQXVkaW9Db250ZXh0LCBbe1xuICAgIGtleTogXCJzcmNcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zcmM7XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgdGhpcy5fc3JjID0gdmFsdWU7XG5cbiAgICAgIHRoaXMuX2dldERhdGEoKTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwic3RhcnRUaW1lXCIsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lO1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IHZhbHVlO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJhdXRvcGxheVwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgcmV0dXJuIHRoaXMuX2F1dG9wbGF5O1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAgIHRoaXMuX2F1dG9wbGF5ID0gdmFsdWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImxvb3BcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHZhciBfdGhpcyRfc291cmNlO1xuXG4gICAgICByZXR1cm4gKChfdGhpcyRfc291cmNlID0gdGhpcy5fc291cmNlKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXMkX3NvdXJjZS5sb29wKSB8fCB0aGlzLl9sb29wO1xuICAgIH0sXG4gICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAgIHRoaXMuX3NvdXJjZS5sb29wID0gdmFsdWU7XG4gICAgICB0aGlzLl9sb29wID0gdmFsdWU7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImR1cmF0aW9uXCIsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICB2YXIgX3RoaXMkX2J1ZmZlcjtcblxuICAgICAgcmV0dXJuICgoX3RoaXMkX2J1ZmZlciA9IHRoaXMuX2J1ZmZlcikgPT0gbnVsbCA/IHZvaWQgMCA6IF90aGlzJF9idWZmZXIuZHVyYXRpb24pIHx8IDA7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcImN1cnJlbnRUaW1lXCIsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICB2YXIgcmVzID0gdGhpcy5fY3VycmVudFRpbWUgKyB0aGlzLl9zaW5nbGVBdWRpb0NvbnRleHQuY3VycmVudFRpbWUgLSB0aGlzLl90aW1lU3RhbXA7XG5cbiAgICAgIHdoaWxlIChyZXMgPiB0aGlzLmR1cmF0aW9uKSB7XG4gICAgICAgIHJlcyA9IHJlcyAtIHRoaXMuZHVyYXRpb247XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX2N1cnJlbnRUaW1lID0gcmVzO1xuICAgICAgdGhpcy5fdGltZVN0YW1wID0gdGhpcy5fc2luZ2xlQXVkaW9Db250ZXh0LmN1cnJlbnRUaW1lO1xuICAgICAgcmV0dXJuIHRoaXMuX2N1cnJlbnRUaW1lO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJwYXVzZWRcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zaW5nbGVBdWRpb0NvbnRleHQuc3RhdGUgPT09ICdzdXNwZW5kZWQnO1xuICAgIH1cbiAgfSwge1xuICAgIGtleTogXCJ2b2x1bWVcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHZhciBfdGhpcyRfZ2Fpbk5vZGUsIF90aGlzJF9nYWluTm9kZSRnYWluO1xuXG4gICAgICByZXR1cm4gKChfdGhpcyRfZ2Fpbk5vZGUgPSB0aGlzLl9nYWluTm9kZSkgPT0gbnVsbCA/IHZvaWQgMCA6IChfdGhpcyRfZ2Fpbk5vZGUkZ2FpbiA9IF90aGlzJF9nYWluTm9kZS5nYWluKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXMkX2dhaW5Ob2RlJGdhaW4udmFsdWUpIHx8IHRoaXMuX3ZvbHVtZTtcbiAgICB9LFxuICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgICB0aGlzLl9nYWluTm9kZS5nYWluLnZhbHVlID0gdmFsdWU7XG4gICAgICB0aGlzLl92b2x1bWUgPSB2YWx1ZTtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGxheWJhY2tSYXRlXCIsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICB2YXIgX3RoaXMkX3NvdXJjZTIsIF90aGlzJF9zb3VyY2UyJHBsYXliYTtcblxuICAgICAgcmV0dXJuICgoX3RoaXMkX3NvdXJjZTIgPSB0aGlzLl9zb3VyY2UpID09IG51bGwgPyB2b2lkIDAgOiAoX3RoaXMkX3NvdXJjZTIkcGxheWJhID0gX3RoaXMkX3NvdXJjZTIucGxheWJhY2tSYXRlKSA9PSBudWxsID8gdm9pZCAwIDogX3RoaXMkX3NvdXJjZTIkcGxheWJhLnZhbHVlKSB8fCB0aGlzLl9wbGF5YmFja1JhdGU7XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgdGhpcy5fc291cmNlLnBsYXliYWNrUmF0ZS52YWx1ZSA9IHZhbHVlO1xuICAgICAgdGhpcy5fcGxheWJhY2tSYXRlID0gdmFsdWU7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIElubmVyQXVkaW9Db250ZXh0O1xufSgpOyAvLyDliJvlu7phdWRpb1xuXG5cbnZhciBjcmVhdGVJbm5lckF1ZGlvQ29udGV4dCA9IGZ1bmN0aW9uIGNyZWF0ZUlubmVyQXVkaW9Db250ZXh0KCkge1xuICB2YXIgc2luZ2xlSW5uZXJBdWRpb0NvbnRleHQgPSBuZXcgSW5uZXJBdWRpb0NvbnRleHQoKTtcbiAgcmV0dXJuIHNpbmdsZUlubmVyQXVkaW9Db250ZXh0O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlSW5uZXJBdWRpb0NvbnRleHQ7IiwiaW1wb3J0IGNyZWF0ZUF1ZGlvQ29udGV4dCBmcm9tIFwiLi9jcmVhdGVBdWRpb0NvbnRleHRcIjtcbmV4cG9ydCB7IGNyZWF0ZUF1ZGlvQ29udGV4dCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVBdWRpb0NvbnRleHQ6IGNyZWF0ZUF1ZGlvQ29udGV4dFxufTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHd4LmNyZWF0ZUlubmVyQXVkaW9Db250ZXh0KGFyZ3MpO1xufSk7IiwiaW1wb3J0IGNyZWF0ZUF1ZGlvQ29udGV4dCBmcm9tIFwiLi9jcmVhdGVBdWRpb0NvbnRleHRcIjtcbmV4cG9ydCB7IGNyZWF0ZUF1ZGlvQ29udGV4dCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVBdWRpb0NvbnRleHQ6IGNyZWF0ZUF1ZGlvQ29udGV4dFxufTsiLCJleHBvcnQgdmFyIENPTlRBSU5FUl9OQU1FID0ge1xuICBXRUNIQVQ6ICd3ZWNoYXRNaW5pUHJvZ3JhbScsXG4gIEFMSVBBWTogJ2FsaU1pbmlBcHAnLFxuICBCWVRFOiAnYnl0ZWRhbmNlTWljcm9BcHAnLFxuICBXRUI6ICd3ZWInLFxuICBCQUlEVTogJ2JhaWR1U21hcnRQcm9ncmFtJyxcbiAgS1dBSTogJ2t1YWlzaG91TWluaVByb2dyYW0nXG59OyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNpZnkoYXBpKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBwcm9taXNpZnlBcmcgPSBhcmc7XG4gICAgICBhcGkoX2V4dGVuZHMoe30sIHByb21pc2lmeUFyZywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5zdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuc3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiBvblN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuZmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25GYWlsOiBmdW5jdGlvbiBvbkZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uRmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uRmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuY29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uIG9uQ29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH07XG59IiwidmFyIF9leGNsdWRlZCA9IFtcIl9leHRcIl07XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IHZhciBzdHlsZU91dCA9IGZ1bmN0aW9uIHN0eWxlT3V0KG91dHB1dCwgb3JpZ2luYWxJbnB1dCwgb3JpZ2luYWxPdXRwdXQpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRwdXQsIHtcbiAgICBfb3JpZ2luYWw6IHtcbiAgICAgIGlucHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxJbnB1dCksXG4gICAgICAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g5a+55YWl5Y+C6L+b6KGMIGZvcm1hdCDkuYvlkI7nmoTnu5PmnpxcbiAgICAgIG91dHB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsT3V0cHV0KSAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g6L+U5Zue5YC8IGZvcm1hdCDkuYvliY3nmoTnu5PmnpxcblxuICAgIH1cbiAgfSk7XG59O1xuZXhwb3J0IHZhciBzdHlsZUluID0gZnVuY3Rpb24gc3R5bGVJbihvcHRpb25zLCBiYXNlTmFtZSkge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfcmVmJF9leHQgPSBfcmVmLl9leHQsXG4gICAgICBfZXh0ID0gX3JlZiRfZXh0ID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkX2V4dCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgX2V4dFtiYXNlTmFtZV0gfHwge30pO1xufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxuZnVuY3Rpb24gYXV0aG9yaXplKG9wdGlvbnMpIHtcbiAgdmFyIHNjb3BlID0gb3B0aW9ucy5zY29wZSxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB2YXIgc2NvcGVNYXAgPSB7XG4gICAgYXV0aF9iYXNlOiAnYXV0aF9iYXNlJyxcbiAgICBhdXRoX3poaW1hOiAnYXV0aF96aGltYSdcbiAgfTtcbiAgcmV0dXJuIG15LmdldEF1dGhDb2RlKHtcbiAgICBzY29wZXM6IHNjb3BlTWFwW3Njb3BlXSA/IHNjb3BlTWFwW3Njb3BlXSA6ICdhdXRoX3VzZXInLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcyhyZXMpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbm9ybWFsaXplKGF1dGhvcml6ZSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxuZnVuY3Rpb24gYXV0aG9yaXplKG9wdGlvbnMpIHtcbiAgdmFyIHNjb3BlID0gb3B0aW9ucy5zY29wZSxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICByZXR1cm4gc3dhbi5hdXRob3JpemUoe1xuICAgIHNjb3BlOiBzY29wZSxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShhdXRob3JpemUsIENPTlRBSU5FUl9OQU1FLkJBSURVKTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxuZnVuY3Rpb24gYXV0aG9yaXplKG9wdGlvbnMpIHtcbiAgdmFyIHNjb3BlID0gb3B0aW9ucy5zY29wZSxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB2YXIgc2NvcGVNYXAgPSB7XG4gICAgJ3Njb3BlLndyaXRlUGhvdG9zQWxidW0nOiAnc2NvcGUuYWxidW0nXG4gIH07XG4gIHJldHVybiB0dC5hdXRob3JpemUoe1xuICAgIHNjb3BlOiBzY29wZU1hcFtzY29wZV0gPyBzY29wZU1hcFtzY29wZV0gOiBzY29wZSxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShhdXRob3JpemUsIENPTlRBSU5FUl9OQU1FLkJZVEUpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1zaGFkb3cgKi9cblxuLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWludmFsaWQtdm9pZC10eXBlICovXG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLWVtcHR5ICovXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tIFwiLi9fdXRpbHMvcHJvbWlzaWZ5XCI7XG5pbXBvcnQgeyBzdHlsZUluIH0gZnJvbSBcIi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlT3B0aW9ucyhvcHRpb25zKSB7XG4gIHZhciBERUZBVUxUX1JFUVVFU1RfT1BUSU9OUyA9IHtcbiAgICBzY29wZTogJ2F1dGhfYmFzZSdcbiAgfTtcblxuICB2YXIgYWZ0ZXJPcHRpb25zID0gX2V4dGVuZHMoe30sIERFRkFVTFRfUkVRVUVTVF9PUFRJT05TLCBvcHRpb25zKTtcblxuICByZXR1cm4gYWZ0ZXJPcHRpb25zO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFyIGFmdGVyT3B0aW9ucyA9IHN0eWxlT3B0aW9ucyhzdHlsZUluKG9wdGlvbnMsIGNvbnRhaW5lck5hbWUpKTtcbiAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoYWZ0ZXJPcHRpb25zKTtcbiAgfTtcbn0iLCJpbXBvcnQgeyBpc01pbmlBcHAsIGlzV2VDaGF0TWluaVByb2dyYW0sIGlzV2ViLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0t1YWlTaG91TWluaVByb2dyYW0sIGlzQmFpZHVTbWFydFByb2dyYW0gfSBmcm9tIFwiQHVuaS9lbnZcIjtcbmltcG9ydCB3ZWJNb2R1bGUgZnJvbSBcIi4vd2ViL2luZGV4XCI7XG5pbXBvcnQgYWxpTWluaUFwcE1vZHVsZSBmcm9tIFwiLi9hbGktbWluaWFwcC9pbmRleFwiO1xuaW1wb3J0IHdlQ2hhdE1vZHVsZSBmcm9tIFwiLi93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBieXRlZGFuY2VNb2R1bGUgZnJvbSBcIi4vYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4XCI7XG5pbXBvcnQgYmFpRHVNb2R1bGUgZnJvbSBcIi4vYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQga3VhaVNob3VNb2R1bGUgZnJvbSBcIi4va3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXhcIjtcbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAob3B0aW9ucykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlKCk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUob3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yaYXV0aG9yaXpl5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn0pOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG5mdW5jdGlvbiBhdXRob3JpemUob3B0aW9ucykge1xuICB2YXIgc2NvcGUgPSBvcHRpb25zLnNjb3BlLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHJldHVybiBrcy5hdXRob3JpemUoe1xuICAgIHNjb3BlOiBzY29wZSxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShhdXRob3JpemUsIENPTlRBSU5FUl9OQU1FLktXQUkpOyIsIi8qIGVzbGludC1kaXNhYmxlIG5vLW1peGVkLW9wZXJhdG9ycyAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG5mdW5jdGlvbiBhdXRob3JpemUoKSB7XG4gIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mmF1dGhvcml6ZSB3ZWIg5pqC5LiN5pSv5oyBJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGF1dGhvcml6ZTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxuZnVuY3Rpb24gYXV0aG9yaXplKG9wdGlvbnMpIHtcbiAgdmFyIHNjb3BlID0gb3B0aW9ucy5zY29wZSxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICByZXR1cm4gd3guYXV0aG9yaXplKHtcbiAgICBzY29wZTogc2NvcGUsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoYXV0aG9yaXplLCBDT05UQUlORVJfTkFNRS5XRUNIQVQpOyIsImZ1bmN0aW9uIGlzVW5kZWYodHlwZSkge1xuICByZXR1cm4gdHlwZSA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbmV4cG9ydCB2YXIgaXNEaW5nZGluZ01pbmlhcHAgPSAhaXNVbmRlZih0eXBlb2YgZGQpICYmIGRkICE9PSBudWxsICYmICFpc1VuZGVmKHR5cGVvZiBkZC5hbGVydCk7IiwiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXNoYWRvdyAqL1xuaW1wb3J0IHsgaXNNaW5pQXBwLCBpc1dlQ2hhdE1pbmlQcm9ncmFtLCBpc1dlYiwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtLCBpc0JhaWR1U21hcnRQcm9ncmFtIH0gZnJvbSBcIkB1bmkvZW52XCI7XG5pbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuL191dGlscy9taW5pYXBwRW52QXBwXCI7IC8vIOaMiXdlY2hhdOOAgWJ5dGVkYW5jZeOAgWRk44CB5pSv5LuY5a6d44CBd2Vi44CBa3VhaXNob3XjgIFiYWlkdeeahOaWueW8j++8jOS4jeaUr+aMgeeahOerr+ebuOW6lOS9jeaVsOe9rjDljbPlj69cblxudmFyIHN1cHBvcnRJbmZvID0ge1xuICBhcHBsaWNhdGlvbjoge1xuICAgIHN1cHBvcnQ6IDExMTExMTEsXG4gICAgZ2V0QXBwOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMTExXG4gICAgfSxcbiAgICBnZXRDdXJyZW50UGFnZXM6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTExMTFcbiAgICB9LFxuICAgIGdldExhdW5jaE9wdGlvbnNTeW5jOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMTEwXG4gICAgfSxcbiAgICBvbkVycm9yOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMTAxXG4gICAgfSxcbiAgICBvZmZFcnJvcjoge1xuICAgICAgc3VwcG9ydDogMTExMTEwMVxuICAgIH0sXG4gICAgb25VbmhhbmRsZWRSZWplY3Rpb246IHtcbiAgICAgIHN1cHBvcnQ6IDExMTExMTBcbiAgICB9LFxuICAgIG9mZlVuaGFuZGxlZFJlamVjdGlvbjoge1xuICAgICAgc3VwcG9ydDogMTExMTExMFxuICAgIH1cbiAgfSxcbiAgY2FudmFzOiB7XG4gICAgc3VwcG9ydDogMTExMTExMSxcbiAgICBjcmVhdGVDb250ZXh0OiB7XG4gICAgICBzdXBwb3J0OiAxMTExMTExXG4gICAgfVxuICB9LFxuICBhY2NlbGVyb21ldGVyOiB7XG4gICAgc3VwcG9ydDogMTExMTAxMSxcbiAgICBvbkNoYW5nZToge1xuICAgICAgc3VwcG9ydDogMTExMTAxMVxuICAgIH0sXG4gICAgb2ZmQ2hhbmdlOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMDExXG4gICAgfVxuICB9LFxuICBjbGlwYm9hcmQ6IHtcbiAgICBzdXBwb3J0OiAxMTExMTExLFxuICAgIGdldENsaXBib2FyZDoge1xuICAgICAgc3VwcG9ydDogMTExMTAxMVxuICAgIH0sXG4gICAgc2V0Q2xpcGJvYXJkOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMTExXG4gICAgfVxuICB9LFxuICAnc3lzdGVtLWluZm8nOiB7XG4gICAgc3VwcG9ydDogMTExMTExMSxcbiAgICBnZXRJbmZvOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMTExXG4gICAgfSxcbiAgICBnZXRJbmZvU3luYzoge1xuICAgICAgc3VwcG9ydDogMTExMTExMVxuICAgIH1cbiAgfSxcbiAgZmlsZToge1xuICAgIHN1cHBvcnQ6IDExMTExMTEsXG4gICAgZ2V0SW5mbzoge1xuICAgICAgc3VwcG9ydDogMTExMTAxMVxuICAgIH0sXG4gICAgZ2V0U2F2ZWRJbmZvOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMDExXG4gICAgfSxcbiAgICBnZXRTYXZlZExpc3Q6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTEwMTFcbiAgICB9LFxuICAgIG9wZW5Eb2N1bWVudDoge1xuICAgICAgc3VwcG9ydDogMTExMTAxMVxuICAgIH0sXG4gICAgcmVtb3ZlU2F2ZWQ6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTEwMTFcbiAgICB9LFxuICAgIHNhdmU6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTEwMTFcbiAgICB9LFxuICAgIGRvd25sb2FkOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMDExXG4gICAgfSxcbiAgICB1cGxvYWQ6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTExMTFcbiAgICB9XG4gIH0sXG4gICdhY3Rpb24tc2hlZXQnOiB7XG4gICAgc3VwcG9ydDogMTExMTExMVxuICB9LFxuICBhbGVydDoge1xuICAgIHN1cHBvcnQ6IDExMTExMTFcbiAgfSxcbiAgYW5pbWF0aW9uOiB7XG4gICAgc3VwcG9ydDogMTExMTEwMVxuICB9LFxuICB0b2FzdDoge1xuICAgIHN1cHBvcnQ6IDExMTExMTFcbiAgfSxcbiAgbG9hZGluZzoge1xuICAgIHN1cHBvcnQ6IDExMTExMTEsXG4gICAgc2hvd0xvYWRpbmc6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTExMTFcbiAgICB9LFxuICAgIGhpZGVMb2FkaW5nOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMTExXG4gICAgfVxuICB9LFxuICAncHVsbC1kb3duLXJlZnJlc2gnOiB7XG4gICAgc3VwcG9ydDogMTExMTExMSxcbiAgICBzdGFydFB1bGxEb3duUmVmcmVzaDoge1xuICAgICAgc3VwcG9ydDogMTExMTExMVxuICAgIH0sXG4gICAgc3RvcFB1bGxEb3duUmVmcmVzaDoge1xuICAgICAgc3VwcG9ydDogMTExMTExMVxuICAgIH1cbiAgfSxcbiAgZWxlbWVudDoge1xuICAgIHN1cHBvcnQ6IDExMTExMTFcbiAgfSxcbiAgJ2luc2VjdGlvbi1vYnNlcnZlcic6IHtcbiAgICBzdXBwb3J0OiAxMTExMTAxXG4gIH0sXG4gIGNvbmZpcm06IHtcbiAgICBzdXBwb3J0OiAxMTExMTExXG4gIH0sXG4gIGxvY2F0aW9uOiB7XG4gICAgc3VwcG9ydDogMTExMTExMSxcbiAgICBnZXRMb2NhdGlvbjoge1xuICAgICAgc3VwcG9ydDogMTExMTExMVxuICAgIH0sXG4gICAgb3BlbkxvY2F0aW9uOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMDExXG4gICAgfVxuICB9LFxuICBpbWFnZToge1xuICAgIHN1cHBvcnQ6IDExMTExMTEsXG4gICAgY2hvb3NlSW1hZ2U6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTExMTFcbiAgICB9LFxuICAgIGNvbXByZXNzSW1hZ2U6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTEwMTFcbiAgICB9LFxuICAgIGdldEltYWdlSW5mbzoge1xuICAgICAgc3VwcG9ydDogMTExMTExMVxuICAgIH0sXG4gICAgcHJldmlld0ltYWdlOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMDExXG4gICAgfSxcbiAgICBzYXZlSW1hZ2U6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTEwMTFcbiAgICB9XG4gIH0sXG4gIG5hdmlnYXRlOiB7XG4gICAgc3VwcG9ydDogMTExMTExMSxcbiAgICBwdXNoOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMTExXG4gICAgfSxcbiAgICBiYWNrOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMTExXG4gICAgfSxcbiAgICByZXBsYWNlOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMTExXG4gICAgfSxcbiAgICByZUxhdW5jaDoge1xuICAgICAgc3VwcG9ydDogMTExMTExMVxuICAgIH0sXG4gICAgZ286IHtcbiAgICAgIHN1cHBvcnQ6IDExMTExMTFcbiAgICB9XG4gIH0sXG4gIHJlcXVlc3Q6IHtcbiAgICBzdXBwb3J0OiAxMTExMTExXG4gIH0sXG4gIHN0b3JhZ2U6IHtcbiAgICBzdXBwb3J0OiAxMTExMTExLFxuICAgIGdldFN0b3JhZ2U6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTExMTFcbiAgICB9LFxuICAgIHNldFN0b3JhZ2U6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTExMTFcbiAgICB9LFxuICAgIHJlbW92ZVN0b3JhZ2U6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTExMTFcbiAgICB9LFxuICAgIGdldFN0b3JhZ2VTeW5jOiB7XG4gICAgICBzdXBwb3J0OiAxMTExMTExXG4gICAgfSxcbiAgICBzZXRTdG9yYWdlU3luYzoge1xuICAgICAgc3VwcG9ydDogMTExMTExMVxuICAgIH0sXG4gICAgcmVtb3ZlU3RvcmFnZVN5bmM6IHtcbiAgICAgIHN1cHBvcnQ6IDExMTExMTFcbiAgICB9XG4gIH1cbn07XG5cbnZhciBjYW5JVXNlID0gZnVuY3Rpb24gY2FuSVVzZShwbGF0Zm9ybSwgYXBpLCBzdXBwb3J0SW5mbykge1xuICB2YXIgYXBpTmFtZSA9IGFwaS5zcGxpdCgnLicpWzBdO1xuXG4gIGlmICghYXBpTmFtZSB8fCAhc3VwcG9ydEluZm9bYXBpTmFtZV0pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICB2YXIgcmVzdCA9IGFwaS5zcGxpdCgnLicpLnNsaWNlKDEpLmpvaW4oJy4nKTtcblxuICBpZiAocmVzdC5sZW5ndGgpIHtcbiAgICByZXR1cm4gY2FuSVVzZShwbGF0Zm9ybSwgcmVzdCwgc3VwcG9ydEluZm9bYXBpTmFtZV0pO1xuICB9XG5cbiAgaWYgKChcIlwiICsgc3VwcG9ydEluZm9bYXBpTmFtZV0uc3VwcG9ydClbcGxhdGZvcm1dICE9PSAnMCcpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoYXBpTmFtZSkge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gY2FuSVVzZSg0LCBhcGlOYW1lLCBzdXBwb3J0SW5mbyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGNhbklVc2UoNSwgYXBpTmFtZSwgc3VwcG9ydEluZm8pO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gY2FuSVVzZSgwLCBhcGlOYW1lLCBzdXBwb3J0SW5mbyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBjYW5JVXNlKDEsIGFwaU5hbWUsIHN1cHBvcnRJbmZvKTtcbiAgfSBlbHNlIGlmIChpc0RpbmdkaW5nTWluaWFwcCkge1xuICAgIHJldHVybiBjYW5JVXNlKDIsIGFwaU5hbWUsIHN1cHBvcnRJbmZvKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gY2FuSVVzZSgzLCBhcGlOYW1lLCBzdXBwb3J0SW5mbyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBjYW5JVXNlKDYsIGFwaU5hbWUsIHN1cHBvcnRJbmZvKTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbn0pOyIsImV4cG9ydCB2YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07IiwidmFyIF9leGNsdWRlZCA9IFtcIl9leHRcIl07XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IHZhciBzdHlsZU91dCA9IGZ1bmN0aW9uIHN0eWxlT3V0KG91dHB1dCwgb3JpZ2luYWxJbnB1dCwgb3JpZ2luYWxPdXRwdXQpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRwdXQsIHtcbiAgICBfb3JpZ2luYWw6IHtcbiAgICAgIGlucHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxJbnB1dCksXG4gICAgICAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g5a+55YWl5Y+C6L+b6KGMIGZvcm1hdCDkuYvlkI7nmoTnu5PmnpxcbiAgICAgIG91dHB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsT3V0cHV0KSAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g6L+U5Zue5YC8IGZvcm1hdCDkuYvliY3nmoTnu5PmnpxcblxuICAgIH1cbiAgfSk7XG59O1xuZXhwb3J0IHZhciBzdHlsZUluID0gZnVuY3Rpb24gc3R5bGVJbihvcHRpb25zLCBiYXNlTmFtZSkge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfcmVmJF9leHQgPSBfcmVmLl9leHQsXG4gICAgICBfZXh0ID0gX3JlZiRfZXh0ID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkX2V4dCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgX2V4dFtiYXNlTmFtZV0gfHwge30pO1xufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBjcmVhdGVDb250ZXh0ID0gbm9ybWFsaXplKGZ1bmN0aW9uIChjYW52YXNPcHRpb25zKSB7XG4gIHZhciBjYW52YXNJZCA9IGNhbnZhc09wdGlvbnMuY2FudmFzSWQ7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIHZhciBjYW52YXNDb250ZXh0ID0gbXkuY3JlYXRlQ2FudmFzQ29udGV4dChjYW52YXNJZCk7XG4gICAgdmFyIF9jbGVhclJlY3QgPSBjYW52YXNDb250ZXh0LmNsZWFyUmVjdDtcblxuICAgIGNhbnZhc0NvbnRleHQuY2xlYXJSZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIF9jbGVhclJlY3QuYXBwbHkoY2FudmFzQ29udGV4dCwgYXJncyk7XG5cbiAgICAgIGNhbnZhc0NvbnRleHQuZHJhdyh0cnVlKTtcbiAgICB9O1xuXG4gICAgdmFyIF9maWxsID0gY2FudmFzQ29udGV4dC5maWxsO1xuXG4gICAgY2FudmFzQ29udGV4dC5maWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgX2ZpbGwuYXBwbHkoY2FudmFzQ29udGV4dCwgYXJncyk7XG5cbiAgICAgIGNhbnZhc0NvbnRleHQuZHJhdyh0cnVlKTtcbiAgICB9O1xuXG4gICAgdmFyIF9maWxsUmVjdCA9IGNhbnZhc0NvbnRleHQuZmlsbFJlY3Q7XG5cbiAgICBjYW52YXNDb250ZXh0LmZpbGxSZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4zKSwgX2tleTMgPSAwOyBfa2V5MyA8IF9sZW4zOyBfa2V5MysrKSB7XG4gICAgICAgIGFyZ3NbX2tleTNdID0gYXJndW1lbnRzW19rZXkzXTtcbiAgICAgIH1cblxuICAgICAgX2ZpbGxSZWN0LmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICBjYW52YXNDb250ZXh0LmRyYXcodHJ1ZSk7XG4gICAgfTtcblxuICAgIHZhciBfZmlsbFRleHQgPSBjYW52YXNDb250ZXh0LmZpbGxUZXh0O1xuXG4gICAgY2FudmFzQ29udGV4dC5maWxsVGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIF9sZW40ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNCksIF9rZXk0ID0gMDsgX2tleTQgPCBfbGVuNDsgX2tleTQrKykge1xuICAgICAgICBhcmdzW19rZXk0XSA9IGFyZ3VtZW50c1tfa2V5NF07XG4gICAgICB9XG5cbiAgICAgIF9maWxsVGV4dC5hcHBseShjYW52YXNDb250ZXh0LCBhcmdzKTtcblxuICAgICAgY2FudmFzQ29udGV4dC5kcmF3KHRydWUpO1xuICAgIH07XG5cbiAgICB2YXIgX3N0cm9rZSA9IGNhbnZhc0NvbnRleHQuc3Ryb2tlO1xuXG4gICAgY2FudmFzQ29udGV4dC5zdHJva2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBfbGVuNSA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjUpLCBfa2V5NSA9IDA7IF9rZXk1IDwgX2xlbjU7IF9rZXk1KyspIHtcbiAgICAgICAgYXJnc1tfa2V5NV0gPSBhcmd1bWVudHNbX2tleTVdO1xuICAgICAgfVxuXG4gICAgICBfc3Ryb2tlLmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICBjYW52YXNDb250ZXh0LmRyYXcodHJ1ZSk7XG4gICAgfTtcblxuICAgIHZhciBfc3Ryb2tlUmVjdCA9IGNhbnZhc0NvbnRleHQuc3Ryb2tlUmVjdDtcblxuICAgIGNhbnZhc0NvbnRleHQuc3Ryb2tlUmVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIF9sZW42ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNiksIF9rZXk2ID0gMDsgX2tleTYgPCBfbGVuNjsgX2tleTYrKykge1xuICAgICAgICBhcmdzW19rZXk2XSA9IGFyZ3VtZW50c1tfa2V5Nl07XG4gICAgICB9XG5cbiAgICAgIF9zdHJva2VSZWN0LmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICBjYW52YXNDb250ZXh0LmRyYXcodHJ1ZSk7XG4gICAgfTtcblxuICAgIHZhciBfc3Ryb2tlVGV4dCA9IGNhbnZhc0NvbnRleHQuc3Ryb2tlVGV4dDtcblxuICAgIGNhbnZhc0NvbnRleHQuc3Ryb2tlVGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIF9sZW43ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNyksIF9rZXk3ID0gMDsgX2tleTcgPCBfbGVuNzsgX2tleTcrKykge1xuICAgICAgICBhcmdzW19rZXk3XSA9IGFyZ3VtZW50c1tfa2V5N107XG4gICAgICB9XG5cbiAgICAgIF9zdHJva2VUZXh0LmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICBjYW52YXNDb250ZXh0LmRyYXcodHJ1ZSk7XG4gICAgfTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjYW52YXNDb250ZXh0LCAnZmlsbFN0eWxlJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBjYW52YXNDb250ZXh0LnNldEZpbGxTdHlsZTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgICBjYW52YXNDb250ZXh0LnNldEZpbGxTdHlsZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmVzb2x2ZShjYW52YXNDb250ZXh0KTtcbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5BTElQQVkpO1xuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQ29udGV4dDsiLCJpbXBvcnQgY3JlYXRlQ29udGV4dCBmcm9tIFwiLi9jcmVhdGVDb250ZXh0XCI7XG5leHBvcnQgeyBjcmVhdGVDb250ZXh0IH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGNyZWF0ZUNvbnRleHQ6IGNyZWF0ZUNvbnRleHRcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgY3JlYXRlQ29udGV4dCA9IG5vcm1hbGl6ZShmdW5jdGlvbiAoY2FudmFzT3B0aW9ucykge1xuICB2YXIgY2FudmFzSWQgPSBjYW52YXNPcHRpb25zLmNhbnZhc0lkO1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICB2YXIgY2FudmFzQ29udGV4dCA9IHN3YW4uY3JlYXRlQ2FudmFzQ29udGV4dChjYW52YXNJZCk7XG4gICAgdmFyIF9jbGVhclJlY3QgPSBjYW52YXNDb250ZXh0LmNsZWFyUmVjdDtcblxuICAgIGNhbnZhc0NvbnRleHQuY2xlYXJSZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiksIF9rZXkgPSAwOyBfa2V5IDwgX2xlbjsgX2tleSsrKSB7XG4gICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICB9XG5cbiAgICAgIF9jbGVhclJlY3QuYXBwbHkoY2FudmFzQ29udGV4dCwgYXJncyk7XG5cbiAgICAgIGNhbnZhc0NvbnRleHQuZHJhdyh0cnVlKTtcbiAgICB9O1xuXG4gICAgdmFyIF9maWxsID0gY2FudmFzQ29udGV4dC5maWxsO1xuXG4gICAgY2FudmFzQ29udGV4dC5maWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgIGFyZ3NbX2tleTJdID0gYXJndW1lbnRzW19rZXkyXTtcbiAgICAgIH1cblxuICAgICAgX2ZpbGwuYXBwbHkoY2FudmFzQ29udGV4dCwgYXJncyk7XG5cbiAgICAgIGNhbnZhc0NvbnRleHQuZHJhdyh0cnVlKTtcbiAgICB9O1xuXG4gICAgdmFyIF9maWxsUmVjdCA9IGNhbnZhc0NvbnRleHQuZmlsbFJlY3Q7XG5cbiAgICBjYW52YXNDb250ZXh0LmZpbGxSZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4zKSwgX2tleTMgPSAwOyBfa2V5MyA8IF9sZW4zOyBfa2V5MysrKSB7XG4gICAgICAgIGFyZ3NbX2tleTNdID0gYXJndW1lbnRzW19rZXkzXTtcbiAgICAgIH1cblxuICAgICAgX2ZpbGxSZWN0LmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICBjYW52YXNDb250ZXh0LmRyYXcodHJ1ZSk7XG4gICAgfTtcblxuICAgIHZhciBfZmlsbFRleHQgPSBjYW52YXNDb250ZXh0LmZpbGxUZXh0O1xuXG4gICAgY2FudmFzQ29udGV4dC5maWxsVGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIF9sZW40ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNCksIF9rZXk0ID0gMDsgX2tleTQgPCBfbGVuNDsgX2tleTQrKykge1xuICAgICAgICBhcmdzW19rZXk0XSA9IGFyZ3VtZW50c1tfa2V5NF07XG4gICAgICB9XG5cbiAgICAgIF9maWxsVGV4dC5hcHBseShjYW52YXNDb250ZXh0LCBhcmdzKTtcblxuICAgICAgY2FudmFzQ29udGV4dC5kcmF3KHRydWUpO1xuICAgIH07XG5cbiAgICB2YXIgX3N0cm9rZSA9IGNhbnZhc0NvbnRleHQuc3Ryb2tlO1xuXG4gICAgY2FudmFzQ29udGV4dC5zdHJva2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBmb3IgKHZhciBfbGVuNSA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjUpLCBfa2V5NSA9IDA7IF9rZXk1IDwgX2xlbjU7IF9rZXk1KyspIHtcbiAgICAgICAgYXJnc1tfa2V5NV0gPSBhcmd1bWVudHNbX2tleTVdO1xuICAgICAgfVxuXG4gICAgICBfc3Ryb2tlLmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICBjYW52YXNDb250ZXh0LmRyYXcodHJ1ZSk7XG4gICAgfTtcblxuICAgIHZhciBfc3Ryb2tlUmVjdCA9IGNhbnZhc0NvbnRleHQuc3Ryb2tlUmVjdDtcblxuICAgIGNhbnZhc0NvbnRleHQuc3Ryb2tlUmVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIF9sZW42ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNiksIF9rZXk2ID0gMDsgX2tleTYgPCBfbGVuNjsgX2tleTYrKykge1xuICAgICAgICBhcmdzW19rZXk2XSA9IGFyZ3VtZW50c1tfa2V5Nl07XG4gICAgICB9XG5cbiAgICAgIF9zdHJva2VSZWN0LmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICBjYW52YXNDb250ZXh0LmRyYXcodHJ1ZSk7XG4gICAgfTtcblxuICAgIHZhciBfc3Ryb2tlVGV4dCA9IGNhbnZhc0NvbnRleHQuc3Ryb2tlVGV4dDtcblxuICAgIGNhbnZhc0NvbnRleHQuc3Ryb2tlVGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgIGZvciAodmFyIF9sZW43ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNyksIF9rZXk3ID0gMDsgX2tleTcgPCBfbGVuNzsgX2tleTcrKykge1xuICAgICAgICBhcmdzW19rZXk3XSA9IGFyZ3VtZW50c1tfa2V5N107XG4gICAgICB9XG5cbiAgICAgIF9zdHJva2VUZXh0LmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICBjYW52YXNDb250ZXh0LmRyYXcodHJ1ZSk7XG4gICAgfTtcblxuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjYW52YXNDb250ZXh0LCAnZmlsbFN0eWxlJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBjYW52YXNDb250ZXh0LnNldEZpbGxTdHlsZTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgICBjYW52YXNDb250ZXh0LnNldEZpbGxTdHlsZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNhbnZhc0NvbnRleHQsICdzdHJva2VTdHlsZScsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gY2FudmFzQ29udGV4dC5zZXRTdHJva2VTdHlsZTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgICBjYW52YXNDb250ZXh0LnNldFN0cm9rZVN0eWxlKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ2ZvbnRTaXplJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBjYW52YXNDb250ZXh0LnNldEZvbnRTaXplO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgICAgIGNhbnZhc0NvbnRleHQuc2V0Rm9udFNpemUodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjYW52YXNDb250ZXh0LCAnZ2xvYmFsQWxwaGEnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGNhbnZhc0NvbnRleHQuc2V0R2xvYmFsQWxwaGE7XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAgICAgY2FudmFzQ29udGV4dC5zZXRHbG9iYWxBbHBoYSh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNhbnZhc0NvbnRleHQsICdsaW5lV2lkdGgnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGNhbnZhc0NvbnRleHQuc2V0TGluZVdpZHRoO1xuICAgICAgfSxcbiAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgICAgIGNhbnZhc0NvbnRleHQuc2V0TGluZVdpZHRoKHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ2xpbmVDYXAnLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGNhbnZhc0NvbnRleHQuc2V0TGluZUNhcDtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgICBjYW52YXNDb250ZXh0LnNldExpbmVDYXAodmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjYW52YXNDb250ZXh0LCAnbGluZUpvaW4nLCB7XG4gICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgcmV0dXJuIGNhbnZhc0NvbnRleHQuc2V0TGluZUpvaW47XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAgICAgY2FudmFzQ29udGV4dC5zZXRMaW5lSm9pbih2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KGNhbnZhc0NvbnRleHQsICdtaXRlckxpbWl0Jywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBjYW52YXNDb250ZXh0LnNldE1pdGVyTGltaXQ7XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAgICAgY2FudmFzQ29udGV4dC5zZXRNaXRlckxpbWl0KHZhbHVlKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ3RleHRBbGlnbicsIHtcbiAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICByZXR1cm4gY2FudmFzQ29udGV4dC5zZXRUZXh0QWxpZ247XG4gICAgICB9LFxuICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAgICAgY2FudmFzQ29udGV4dC5zZXRUZXh0QWxpZ24odmFsdWUpO1xuICAgICAgfVxuICAgIH0pO1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShjYW52YXNDb250ZXh0LCAndGV4dEJhc2VMaW5lJywge1xuICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgIHJldHVybiBjYW52YXNDb250ZXh0LnNldFRleHRCYXNlTGluZTtcbiAgICAgIH0sXG4gICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgICBjYW52YXNDb250ZXh0LnNldFRleHRCYXNlTGluZSh2YWx1ZSk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgcmVzb2x2ZShjYW52YXNDb250ZXh0KTtcbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCBjcmVhdGVDb250ZXh0OyIsImltcG9ydCBjcmVhdGVDb250ZXh0IGZyb20gXCIuL2NyZWF0ZUNvbnRleHRcIjtcbmV4cG9ydCB7IGNyZWF0ZUNvbnRleHQgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlQ29udGV4dDogY3JlYXRlQ29udGV4dFxufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBjcmVhdGVDb250ZXh0ID0gbm9ybWFsaXplKGZ1bmN0aW9uIChjYW52YXNPcHRpb25zKSB7XG4gIHZhciBjYW52YXNJZCA9IGNhbnZhc09wdGlvbnMuY2FudmFzSWQsXG4gICAgICBfY2FudmFzT3B0aW9ucyR0eXBlID0gY2FudmFzT3B0aW9ucy50eXBlLFxuICAgICAgdHlwZSA9IF9jYW52YXNPcHRpb25zJHR5cGUgPT09IHZvaWQgMCA/ICcyZCcgOiBfY2FudmFzT3B0aW9ucyR0eXBlLFxuICAgICAgb3B0aW9ucyA9IGNhbnZhc09wdGlvbnMub3B0aW9ucztcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgcXVlcnkgPSB0dC5jcmVhdGVTZWxlY3RvclF1ZXJ5KCk7XG4gICAgcXVlcnkuc2VsZWN0KFwiI1wiICsgY2FudmFzSWQpLm5vZGUoKS5leGVjKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIGlmICghcmVzWzBdIHx8ICFyZXNbMF0ubm9kZSkgcmVqZWN0KG5ldyBFcnJvcignVGhlIGNhbnZhcyBub2RlIG1heSBub3QgZXhpc3QuJykpO1xuICAgICAgdmFyIGNhbnZhc05vZGUgPSByZXNbMF0ubm9kZTtcbiAgICAgIHZhciBjYW52YXNDb250ZXh0ID0gY2FudmFzTm9kZS5nZXRDb250ZXh0KHR5cGUsIG9wdGlvbnMpOyAvLyBGb3IgZmFsbGJhY2tcblxuICAgICAgdmFyIF9jbGVhclJlY3QgPSBjYW52YXNDb250ZXh0LmNsZWFyUmVjdDtcblxuICAgICAgY2FudmFzQ29udGV4dC5jbGVhclJlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgICAgIGFyZ3NbX2tleV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgICAgIH1cblxuICAgICAgICBfY2xlYXJSZWN0LmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICAgIGNhbnZhc0NvbnRleHQuZHJhdyh0cnVlKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBfZmlsbCA9IGNhbnZhc0NvbnRleHQuZmlsbDtcblxuICAgICAgY2FudmFzQ29udGV4dC5maWxsID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKHZhciBfbGVuMiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjIpLCBfa2V5MiA9IDA7IF9rZXkyIDwgX2xlbjI7IF9rZXkyKyspIHtcbiAgICAgICAgICBhcmdzW19rZXkyXSA9IGFyZ3VtZW50c1tfa2V5Ml07XG4gICAgICAgIH1cblxuICAgICAgICBfZmlsbC5hcHBseShjYW52YXNDb250ZXh0LCBhcmdzKTtcblxuICAgICAgICBjYW52YXNDb250ZXh0LmRyYXcodHJ1ZSk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgX2ZpbGxSZWN0ID0gY2FudmFzQ29udGV4dC5maWxsUmVjdDtcblxuICAgICAgY2FudmFzQ29udGV4dC5maWxsUmVjdCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yICh2YXIgX2xlbjMgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4zKSwgX2tleTMgPSAwOyBfa2V5MyA8IF9sZW4zOyBfa2V5MysrKSB7XG4gICAgICAgICAgYXJnc1tfa2V5M10gPSBhcmd1bWVudHNbX2tleTNdO1xuICAgICAgICB9XG5cbiAgICAgICAgX2ZpbGxSZWN0LmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICAgIGNhbnZhc0NvbnRleHQuZHJhdyh0cnVlKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBfZmlsbFRleHQgPSBjYW52YXNDb250ZXh0LmZpbGxUZXh0O1xuXG4gICAgICBjYW52YXNDb250ZXh0LmZpbGxUZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKHZhciBfbGVuNCA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjQpLCBfa2V5NCA9IDA7IF9rZXk0IDwgX2xlbjQ7IF9rZXk0KyspIHtcbiAgICAgICAgICBhcmdzW19rZXk0XSA9IGFyZ3VtZW50c1tfa2V5NF07XG4gICAgICAgIH1cblxuICAgICAgICBfZmlsbFRleHQuYXBwbHkoY2FudmFzQ29udGV4dCwgYXJncyk7XG5cbiAgICAgICAgY2FudmFzQ29udGV4dC5kcmF3KHRydWUpO1xuICAgICAgfTtcblxuICAgICAgdmFyIF9zdHJva2UgPSBjYW52YXNDb250ZXh0LnN0cm9rZTtcblxuICAgICAgY2FudmFzQ29udGV4dC5zdHJva2UgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAodmFyIF9sZW41ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNSksIF9rZXk1ID0gMDsgX2tleTUgPCBfbGVuNTsgX2tleTUrKykge1xuICAgICAgICAgIGFyZ3NbX2tleTVdID0gYXJndW1lbnRzW19rZXk1XTtcbiAgICAgICAgfVxuXG4gICAgICAgIF9zdHJva2UuYXBwbHkoY2FudmFzQ29udGV4dCwgYXJncyk7XG5cbiAgICAgICAgY2FudmFzQ29udGV4dC5kcmF3KHRydWUpO1xuICAgICAgfTtcblxuICAgICAgdmFyIF9zdHJva2VSZWN0ID0gY2FudmFzQ29udGV4dC5zdHJva2VSZWN0O1xuXG4gICAgICBjYW52YXNDb250ZXh0LnN0cm9rZVJlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAodmFyIF9sZW42ID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuNiksIF9rZXk2ID0gMDsgX2tleTYgPCBfbGVuNjsgX2tleTYrKykge1xuICAgICAgICAgIGFyZ3NbX2tleTZdID0gYXJndW1lbnRzW19rZXk2XTtcbiAgICAgICAgfVxuXG4gICAgICAgIF9zdHJva2VSZWN0LmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICAgIGNhbnZhc0NvbnRleHQuZHJhdyh0cnVlKTtcbiAgICAgIH07IC8vIOWtl+iKguayoeacieivpeaWueazlVxuICAgICAgLy8gY29uc3QgX3N0cm9rZVRleHQgPSBjYW52YXNDb250ZXh0LnN0cm9rZVRleHQ7XG4gICAgICAvLyBjYW52YXNDb250ZXh0LnN0cm9rZVRleHQgPSAoLi4uYXJncykgPT4ge1xuICAgICAgLy8gICBfc3Ryb2tlVGV4dC5hcHBseShjYW52YXNDb250ZXh0LCBhcmdzKTtcbiAgICAgIC8vICAgY2FudmFzQ29udGV4dC5kcmF3KHRydWUpO1xuICAgICAgLy8gfTtcblxuXG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ2ZpbGxTdHlsZScsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbnZhc0NvbnRleHQuc2V0RmlsbFN0eWxlO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgICAgIGNhbnZhc0NvbnRleHQuc2V0RmlsbFN0eWxlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ3N0cm9rZVN0eWxlJywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gY2FudmFzQ29udGV4dC5zZXRTdHJva2VTdHlsZTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAgICAgICBjYW52YXNDb250ZXh0LnNldFN0cm9rZVN0eWxlKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ2ZvbnRTaXplJywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gY2FudmFzQ29udGV4dC5zZXRGb250U2l6ZTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAgICAgICBjYW52YXNDb250ZXh0LnNldEZvbnRTaXplKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ2dsb2JhbEFscGhhJywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gY2FudmFzQ29udGV4dC5zZXRHbG9iYWxBbHBoYTtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAgICAgICBjYW52YXNDb250ZXh0LnNldEdsb2JhbEFscGhhKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ2xpbmVXaWR0aCcsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbnZhc0NvbnRleHQuc2V0TGluZVdpZHRoO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgICAgIGNhbnZhc0NvbnRleHQuc2V0TGluZVdpZHRoKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ2xpbmVDYXAnLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBjYW52YXNDb250ZXh0LnNldExpbmVDYXA7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgICAgICAgY2FudmFzQ29udGV4dC5zZXRMaW5lQ2FwKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ2xpbmVKb2luJywge1xuICAgICAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgICAgICByZXR1cm4gY2FudmFzQ29udGV4dC5zZXRMaW5lSm9pbjtcbiAgICAgICAgfSxcbiAgICAgICAgc2V0OiBmdW5jdGlvbiBzZXQodmFsdWUpIHtcbiAgICAgICAgICBjYW52YXNDb250ZXh0LnNldExpbmVKb2luKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ21pdGVyTGltaXQnLCB7XG4gICAgICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgICAgIHJldHVybiBjYW52YXNDb250ZXh0LnNldE1pdGVyTGltaXQ7XG4gICAgICAgIH0sXG4gICAgICAgIHNldDogZnVuY3Rpb24gc2V0KHZhbHVlKSB7XG4gICAgICAgICAgY2FudmFzQ29udGV4dC5zZXRNaXRlckxpbWl0KHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ3RleHRBbGlnbicsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbnZhc0NvbnRleHQuc2V0VGV4dEFsaWduO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgICAgIGNhbnZhc0NvbnRleHQuc2V0VGV4dEFsaWduKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoY2FudmFzQ29udGV4dCwgJ3RleHRCYXNlTGluZScsIHtcbiAgICAgICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAgICAgcmV0dXJuIGNhbnZhc0NvbnRleHQuc2V0VGV4dEJhc2VMaW5lO1xuICAgICAgICB9LFxuICAgICAgICBzZXQ6IGZ1bmN0aW9uIHNldCh2YWx1ZSkge1xuICAgICAgICAgIGNhbnZhc0NvbnRleHQuc2V0VGV4dEJhc2VMaW5lKHZhbHVlKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICByZXNvbHZlKGNhbnZhc0NvbnRleHQpO1xuICAgIH0pO1xuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgY3JlYXRlQ29udGV4dDsiLCJpbXBvcnQgY3JlYXRlQ29udGV4dCBmcm9tIFwiLi9jcmVhdGVDb250ZXh0XCI7XG5leHBvcnQgeyBjcmVhdGVDb250ZXh0IH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGNyZWF0ZUNvbnRleHQ6IGNyZWF0ZUNvbnRleHRcbn07IiwiaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoYXBpLCBjb250YWluZXJOYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHZhciBhZnRlck9wdGlvbnMgPSBzdHlsZUluKG9wdGlvbnMsIGNvbnRhaW5lck5hbWUpO1xuICAgIHJldHVybiBhcGkoYWZ0ZXJPcHRpb25zKTtcbiAgfTtcbn0iLCIvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzXG5pbXBvcnQgeyBpc01pbmlBcHAsIGlzV2VDaGF0TWluaVByb2dyYW0sIGlzV2ViLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0JhaWR1U21hcnRQcm9ncmFtLCBpc0t1YWlTaG91TWluaVByb2dyYW0gfSBmcm9tIFwiQHVuaS9lbnZcIjtcbmltcG9ydCAqIGFzIHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmltcG9ydCAqIGFzIGFsaU1pbmlBcHBNb2R1bGUgZnJvbSBcIi4vYWxpLW1pbmlhcHAvaW5kZXhcIjtcbmltcG9ydCAqIGFzIHdlQ2hhdE1vZHVsZSBmcm9tIFwiLi93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCAqIGFzIGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCAqIGFzIGt1YWlTaG91TW9kdWxlIGZyb20gXCIuL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgKiBhcyBiYWlEdU1vZHVsZSBmcm9tIFwiLi9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXhcIjtcbmV4cG9ydCB2YXIgY3JlYXRlQ29udGV4dCA9IGZ1bmN0aW9uIGNyZWF0ZUNvbnRleHQoY2FudmFzT3B0aW9ucykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLmNyZWF0ZUNvbnRleHQoY2FudmFzT3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmNyZWF0ZUNvbnRleHQoY2FudmFzT3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuY3JlYXRlQ29udGV4dChjYW52YXNPcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5jcmVhdGVDb250ZXh0KGNhbnZhc09wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLmNyZWF0ZUNvbnRleHQoY2FudmFzT3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5jcmVhdGVDb250ZXh0KGNhbnZhc09wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQHVuae+8mmNhbnZhc+aaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVDb250ZXh0OiBjcmVhdGVDb250ZXh0XG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBjcmVhdGVDb250ZXh0ID0gbm9ybWFsaXplKGZ1bmN0aW9uIChjYW52YXNPcHRpb25zKSB7XG4gIC8vIOS9v+eUqOW+ruS/oeeahCBnZXRDb250ZXh0IOaWueazleWPr+S7peiOt+WPliBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkTvvIzlr7npvZBodG1sIGNhbnZhcyAyZCBjb250ZXh0XG4gIHZhciBjYW52YXNJZCA9IGNhbnZhc09wdGlvbnMuY2FudmFzSWQsXG4gICAgICBfY2FudmFzT3B0aW9ucyR0eXBlID0gY2FudmFzT3B0aW9ucy50eXBlLFxuICAgICAgdHlwZSA9IF9jYW52YXNPcHRpb25zJHR5cGUgPT09IHZvaWQgMCA/ICcyZCcgOiBfY2FudmFzT3B0aW9ucyR0eXBlLFxuICAgICAgX2NhbnZhc09wdGlvbnMkY29udGV4ID0gY2FudmFzT3B0aW9ucy5jb250ZXh0LFxuICAgICAgY29udGV4dCA9IF9jYW52YXNPcHRpb25zJGNvbnRleCA9PT0gdm9pZCAwID8ga3MgOiBfY2FudmFzT3B0aW9ucyRjb250ZXgsXG4gICAgICBvcHRpb25zID0gY2FudmFzT3B0aW9ucy5vcHRpb25zO1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciBxdWVyeSA9IGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSgpO1xuICAgIHF1ZXJ5LnNlbGVjdChcIiNcIiArIGNhbnZhc0lkKS5maWVsZHMoe1xuICAgICAgbm9kZTogdHJ1ZSxcbiAgICAgIHNpemU6IHRydWVcbiAgICB9KS5leGVjKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIGlmICghcmVzWzBdIHx8ICFyZXNbMF0ubm9kZSkgcmVqZWN0KG5ldyBFcnJvcignVGhlIGNhbnZhcyBub2RlIG1heSBub3QgZXhpc3QuJykpO1xuICAgICAgdmFyIGNhbnZhc05vZGUgPSByZXNbMF0ubm9kZTtcbiAgICAgIHZhciBjYW52YXNDb250ZXh0ID0gY2FudmFzTm9kZS5nZXRDb250ZXh0KHR5cGUsIG9wdGlvbnMpOyAvLyBGb3IgZmFsbGJhY2tcbiAgICAgIC8vIGNvbnRleHQuZHJhdyA9IGZ1bmN0aW9uKCkge307XG5cbiAgICAgIHZhciBfY2xlYXJSZWN0ID0gY2FudmFzQ29udGV4dC5jbGVhclJlY3Q7XG5cbiAgICAgIGNhbnZhc0NvbnRleHQuY2xlYXJSZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKHZhciBfbGVuID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuKSwgX2tleSA9IDA7IF9rZXkgPCBfbGVuOyBfa2V5KyspIHtcbiAgICAgICAgICBhcmdzW19rZXldID0gYXJndW1lbnRzW19rZXldO1xuICAgICAgICB9XG5cbiAgICAgICAgX2NsZWFyUmVjdC5hcHBseShjYW52YXNDb250ZXh0LCBhcmdzKTtcblxuICAgICAgICBjYW52YXNDb250ZXh0LmRyYXcodHJ1ZSk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgX2ZpbGwgPSBjYW52YXNDb250ZXh0LmZpbGw7XG5cbiAgICAgIGNhbnZhc0NvbnRleHQuZmlsbCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yICh2YXIgX2xlbjIgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4yKSwgX2tleTIgPSAwOyBfa2V5MiA8IF9sZW4yOyBfa2V5MisrKSB7XG4gICAgICAgICAgYXJnc1tfa2V5Ml0gPSBhcmd1bWVudHNbX2tleTJdO1xuICAgICAgICB9XG5cbiAgICAgICAgX2ZpbGwuYXBwbHkoY2FudmFzQ29udGV4dCwgYXJncyk7XG5cbiAgICAgICAgY2FudmFzQ29udGV4dC5kcmF3KHRydWUpO1xuICAgICAgfTtcblxuICAgICAgdmFyIF9maWxsUmVjdCA9IGNhbnZhc0NvbnRleHQuZmlsbFJlY3Q7XG5cbiAgICAgIGNhbnZhc0NvbnRleHQuZmlsbFJlY3QgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGZvciAodmFyIF9sZW4zID0gYXJndW1lbnRzLmxlbmd0aCwgYXJncyA9IG5ldyBBcnJheShfbGVuMyksIF9rZXkzID0gMDsgX2tleTMgPCBfbGVuMzsgX2tleTMrKykge1xuICAgICAgICAgIGFyZ3NbX2tleTNdID0gYXJndW1lbnRzW19rZXkzXTtcbiAgICAgICAgfVxuXG4gICAgICAgIF9maWxsUmVjdC5hcHBseShjYW52YXNDb250ZXh0LCBhcmdzKTtcblxuICAgICAgICBjYW52YXNDb250ZXh0LmRyYXcodHJ1ZSk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgX2ZpbGxUZXh0ID0gY2FudmFzQ29udGV4dC5maWxsVGV4dDtcblxuICAgICAgY2FudmFzQ29udGV4dC5maWxsVGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yICh2YXIgX2xlbjQgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW40KSwgX2tleTQgPSAwOyBfa2V5NCA8IF9sZW40OyBfa2V5NCsrKSB7XG4gICAgICAgICAgYXJnc1tfa2V5NF0gPSBhcmd1bWVudHNbX2tleTRdO1xuICAgICAgICB9XG5cbiAgICAgICAgX2ZpbGxUZXh0LmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICAgIGNhbnZhc0NvbnRleHQuZHJhdyh0cnVlKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBfc3Ryb2tlID0gY2FudmFzQ29udGV4dC5zdHJva2U7XG5cbiAgICAgIGNhbnZhc0NvbnRleHQuc3Ryb2tlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKHZhciBfbGVuNSA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjUpLCBfa2V5NSA9IDA7IF9rZXk1IDwgX2xlbjU7IF9rZXk1KyspIHtcbiAgICAgICAgICBhcmdzW19rZXk1XSA9IGFyZ3VtZW50c1tfa2V5NV07XG4gICAgICAgIH1cblxuICAgICAgICBfc3Ryb2tlLmFwcGx5KGNhbnZhc0NvbnRleHQsIGFyZ3MpO1xuXG4gICAgICAgIGNhbnZhc0NvbnRleHQuZHJhdyh0cnVlKTtcbiAgICAgIH07XG5cbiAgICAgIHZhciBfc3Ryb2tlUmVjdCA9IGNhbnZhc0NvbnRleHQuc3Ryb2tlUmVjdDtcblxuICAgICAgY2FudmFzQ29udGV4dC5zdHJva2VSZWN0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBmb3IgKHZhciBfbGVuNiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbjYpLCBfa2V5NiA9IDA7IF9rZXk2IDwgX2xlbjY7IF9rZXk2KyspIHtcbiAgICAgICAgICBhcmdzW19rZXk2XSA9IGFyZ3VtZW50c1tfa2V5Nl07XG4gICAgICAgIH1cblxuICAgICAgICBfc3Ryb2tlUmVjdC5hcHBseShjYW52YXNDb250ZXh0LCBhcmdzKTtcblxuICAgICAgICBjYW52YXNDb250ZXh0LmRyYXcodHJ1ZSk7XG4gICAgICB9O1xuXG4gICAgICB2YXIgX3N0cm9rZVRleHQgPSBjYW52YXNDb250ZXh0LnN0cm9rZVRleHQ7XG5cbiAgICAgIGNhbnZhc0NvbnRleHQuc3Ryb2tlVGV4dCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgZm9yICh2YXIgX2xlbjcgPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW43KSwgX2tleTcgPSAwOyBfa2V5NyA8IF9sZW43OyBfa2V5NysrKSB7XG4gICAgICAgICAgYXJnc1tfa2V5N10gPSBhcmd1bWVudHNbX2tleTddO1xuICAgICAgICB9XG5cbiAgICAgICAgX3N0cm9rZVRleHQuYXBwbHkoY2FudmFzQ29udGV4dCwgYXJncyk7XG5cbiAgICAgICAgY2FudmFzQ29udGV4dC5kcmF3KHRydWUpO1xuICAgICAgfTtcblxuICAgICAgcmVzb2x2ZShjYW52YXNDb250ZXh0KTtcbiAgICB9KTtcbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUNvbnRleHQ7IC8vIGV4cG9ydCBkZWZhdWx0ICgpID0+IHt9OyIsImltcG9ydCBjcmVhdGVDb250ZXh0IGZyb20gXCIuL2NyZWF0ZUNvbnRleHRcIjtcbmV4cG9ydCB7IGNyZWF0ZUNvbnRleHQgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY3JlYXRlQ29udGV4dDogY3JlYXRlQ29udGV4dFxufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBjcmVhdGVDb250ZXh0ID0gbm9ybWFsaXplKGZ1bmN0aW9uIChjYW52YXNPcHRpb25zKSB7XG4gIHZhciBjYW52YXNJZCA9IGNhbnZhc09wdGlvbnMuY2FudmFzSWQsXG4gICAgICBfY2FudmFzT3B0aW9ucyR0eXBlID0gY2FudmFzT3B0aW9ucy50eXBlLFxuICAgICAgdHlwZSA9IF9jYW52YXNPcHRpb25zJHR5cGUgPT09IHZvaWQgMCA/ICcyZCcgOiBfY2FudmFzT3B0aW9ucyR0eXBlLFxuICAgICAgb3B0aW9ucyA9IGNhbnZhc09wdGlvbnMub3B0aW9ucztcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICB2YXIgY2FudmFzTm9kZSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNhbnZhc0lkKTtcbiAgICBpZiAoIWNhbnZhc05vZGUpIHJlamVjdChuZXcgRXJyb3IoJ1RoZSBjYW52YXMgbm9kZSBtYXkgbm90IGV4aXN0LicpKTtcbiAgICB2YXIgY29udGV4dCA9IGNhbnZhc05vZGUuZ2V0Q29udGV4dCh0eXBlLCBvcHRpb25zKTsgLy8gRm9yIGZhbGxiYWNrXG5cbiAgICBjb250ZXh0LmRyYXcgPSBmdW5jdGlvbiAoKSB7fTtcblxuICAgIHJlc29sdmUoY29udGV4dCk7XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUNvbnRleHQ7IiwiaW1wb3J0IGNyZWF0ZUNvbnRleHQgZnJvbSBcIi4vY3JlYXRlQ29udGV4dFwiO1xuZXhwb3J0IHsgY3JlYXRlQ29udGV4dCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVDb250ZXh0OiBjcmVhdGVDb250ZXh0XG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBjcmVhdGVDb250ZXh0ID0gbm9ybWFsaXplKGZ1bmN0aW9uIChjYW52YXNPcHRpb25zKSB7XG4gIC8vIOS9v+eUqOW+ruS/oeeahCBnZXRDb250ZXh0IOaWueazleWPr+S7peiOt+WPliBDYW52YXNSZW5kZXJpbmdDb250ZXh0MkTvvIzlr7npvZBodG1sIGNhbnZhcyAyZCBjb250ZXh0XG4gIHZhciBjYW52YXNJZCA9IGNhbnZhc09wdGlvbnMuY2FudmFzSWQsXG4gICAgICBfY2FudmFzT3B0aW9ucyR0eXBlID0gY2FudmFzT3B0aW9ucy50eXBlLFxuICAgICAgdHlwZSA9IF9jYW52YXNPcHRpb25zJHR5cGUgPT09IHZvaWQgMCA/ICcyZCcgOiBfY2FudmFzT3B0aW9ucyR0eXBlLFxuICAgICAgX2NhbnZhc09wdGlvbnMkY29udGV4ID0gY2FudmFzT3B0aW9ucy5jb250ZXh0LFxuICAgICAgY29udGV4dCA9IF9jYW52YXNPcHRpb25zJGNvbnRleCA9PT0gdm9pZCAwID8gd3ggOiBfY2FudmFzT3B0aW9ucyRjb250ZXgsXG4gICAgICBvcHRpb25zID0gY2FudmFzT3B0aW9ucy5vcHRpb25zO1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgIHZhciBxdWVyeSA9IGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSgpO1xuICAgIHF1ZXJ5LnNlbGVjdChcIiNcIiArIGNhbnZhc0lkKS5maWVsZHMoe1xuICAgICAgbm9kZTogdHJ1ZSxcbiAgICAgIHNpemU6IHRydWVcbiAgICB9KS5leGVjKGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgIGlmICghcmVzWzBdIHx8ICFyZXNbMF0ubm9kZSkgcmVqZWN0KG5ldyBFcnJvcignVGhlIGNhbnZhcyBub2RlIG1heSBub3QgZXhpc3QuJykpO1xuICAgICAgdmFyIGNhbnZhc05vZGUgPSByZXNbMF0ubm9kZTtcbiAgICAgIHZhciBjYW52YXNDb250ZXh0ID0gY2FudmFzTm9kZS5nZXRDb250ZXh0KHR5cGUsIG9wdGlvbnMpOyAvLyBGb3IgZmFsbGJhY2tcbiAgICAgIC8vIGNvbnRleHQuZHJhdyA9IGZ1bmN0aW9uKCkge307XG5cbiAgICAgIHJlc29sdmUoY2FudmFzQ29udGV4dCk7XG4gICAgfSk7XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZUNvbnRleHQ7IiwiaW1wb3J0IGNyZWF0ZUNvbnRleHQgZnJvbSBcIi4vY3JlYXRlQ29udGV4dFwiO1xuZXhwb3J0IHsgY3JlYXRlQ29udGV4dCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjcmVhdGVDb250ZXh0OiBjcmVhdGVDb250ZXh0XG59OyIsImV4cG9ydCB2YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07IiwiZnVuY3Rpb24gaXNVbmRlZih0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSAndW5kZWZpbmVkJztcbn1cblxuZXhwb3J0IHZhciBpc0RpbmdkaW5nTWluaWFwcCA9ICFpc1VuZGVmKHR5cGVvZiBkZCkgJiYgZGQgIT09IG51bGwgJiYgIWlzVW5kZWYodHlwZW9mIGRkLmFsZXJ0KTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzaWZ5KGFwaSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcHJvbWlzaWZ5QXJnID0gYXJnO1xuICAgICAgYXBpKF9leHRlbmRzKHt9LCBwcm9taXNpZnlBcmcsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuc3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gb25TdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5mYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRmFpbDogZnVuY3Rpb24gb25GYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5jb21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbiBvbkNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25Db21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9O1xufSIsInZhciBfZXhjbHVkZWQgPSBbXCJfZXh0XCJdO1xuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCB2YXIgc3R5bGVPdXQgPSBmdW5jdGlvbiBzdHlsZU91dChvdXRwdXQsIG9yaWdpbmFsSW5wdXQsIG9yaWdpbmFsT3V0cHV0KSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0cHV0LCB7XG4gICAgX29yaWdpbmFsOiB7XG4gICAgICBpbnB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsSW5wdXQpLFxuICAgICAgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOWvueWFpeWPgui/m+ihjCBmb3JtYXQg5LmL5ZCO55qE57uT5p6cXG4gICAgICBvdXRwdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbE91dHB1dCkgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOi/lOWbnuWAvCBmb3JtYXQg5LmL5YmN55qE57uT5p6cXG5cbiAgICB9XG4gIH0pO1xufTtcbmV4cG9ydCB2YXIgc3R5bGVJbiA9IGZ1bmN0aW9uIHN0eWxlSW4ob3B0aW9ucywgYmFzZU5hbWUpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgX3JlZiRfZXh0ID0gX3JlZi5fZXh0LFxuICAgICAgX2V4dCA9IF9yZWYkX2V4dCA9PT0gdm9pZCAwID8ge30gOiBfcmVmJF9leHQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcblxuICByZXR1cm4gX2V4dGVuZHMoe30sIHJlc3QsIF9leHRbYmFzZU5hbWVdIHx8IHt9KTtcbn07IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplR2V0IH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIGdldENsaXBib2FyZCA9IG5vcm1hbGl6ZUdldChmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5nZXRDbGlwYm9hcmQoYXJncykgOiBteS5nZXRDbGlwYm9hcmQoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5BTElQQVkpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0Q2xpcGJvYXJkOyIsImltcG9ydCBnZXRDbGlwYm9hcmQgZnJvbSBcIi4vZ2V0Q2xpcGJvYXJkXCI7XG5pbXBvcnQgc2V0Q2xpcGJvYXJkIGZyb20gXCIuL3NldENsaXBib2FyZFwiO1xuZXhwb3J0IHsgZ2V0Q2xpcGJvYXJkLCBzZXRDbGlwYm9hcmQgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0Q2xpcGJvYXJkOiBnZXRDbGlwYm9hcmQsXG4gIHNldENsaXBib2FyZDogc2V0Q2xpcGJvYXJkXG59OyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVNldCB9IGZyb20gXCIuLi9jb21tb25cIjtcbnZhciBzZXRDbGlwYm9hcmQgPSBub3JtYWxpemVTZXQoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGlzRGluZ2RpbmdNaW5pYXBwID8gZGQuc2V0Q2xpcGJvYXJkKGFyZ3MpIDogbXkuc2V0Q2xpcGJvYXJkKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IHNldENsaXBib2FyZDsiLCJpbXBvcnQgeyBub3JtYWxpemVHZXQgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRDbGlwYm9hcmQgPSBub3JtYWxpemVHZXQoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHN3YW4uZ2V0Q2xpcGJvYXJkRGF0YShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IGdldENsaXBib2FyZDsiLCJpbXBvcnQgZ2V0Q2xpcGJvYXJkIGZyb20gXCIuL2dldENsaXBib2FyZFwiO1xuaW1wb3J0IHNldENsaXBib2FyZCBmcm9tIFwiLi9zZXRDbGlwYm9hcmRcIjtcbmV4cG9ydCB7IGdldENsaXBib2FyZCwgc2V0Q2xpcGJvYXJkIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldENsaXBib2FyZDogZ2V0Q2xpcGJvYXJkLFxuICBzZXRDbGlwYm9hcmQ6IHNldENsaXBib2FyZFxufTsiLCJpbXBvcnQgeyBub3JtYWxpemVTZXQgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzZXRDbGlwYm9hcmQgPSBub3JtYWxpemVTZXQoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgYXJncy5kYXRhID0gYXJncy50ZXh0O1xuICBkZWxldGUgYXJncy50ZXh0O1xuICByZXR1cm4gc3dhbi5zZXRDbGlwYm9hcmREYXRhKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgc2V0Q2xpcGJvYXJkOyIsImltcG9ydCB7IG5vcm1hbGl6ZUdldCB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdldENsaXBib2FyZCA9IG5vcm1hbGl6ZUdldChmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gdHQuZ2V0Q2xpcGJvYXJkRGF0YShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0Q2xpcGJvYXJkOyIsImltcG9ydCBnZXRDbGlwYm9hcmQgZnJvbSBcIi4vZ2V0Q2xpcGJvYXJkXCI7XG5pbXBvcnQgc2V0Q2xpcGJvYXJkIGZyb20gXCIuL3NldENsaXBib2FyZFwiO1xuZXhwb3J0IHsgZ2V0Q2xpcGJvYXJkLCBzZXRDbGlwYm9hcmQgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0Q2xpcGJvYXJkOiBnZXRDbGlwYm9hcmQsXG4gIHNldENsaXBib2FyZDogc2V0Q2xpcGJvYXJkXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZVNldCB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHNldENsaXBib2FyZCA9IG5vcm1hbGl6ZVNldChmdW5jdGlvbiAoYXJncykge1xuICBhcmdzLmRhdGEgPSBhcmdzLnRleHQ7XG4gIGRlbGV0ZSBhcmdzLnRleHQ7XG4gIHJldHVybiB0dC5zZXRDbGlwYm9hcmREYXRhKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCBzZXRDbGlwYm9hcmQ7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuLyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tIFwiLi9fdXRpbHMvcHJvbWlzaWZ5XCI7XG5pbXBvcnQgeyBzdHlsZUluIH0gZnJvbSBcIi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiO1xuXG4vKipcbiAqIGFjdGlvbnNoZWV06L+U5Zue5YC85qC85byP5YyWXG4gKiBAcGFyYW0gcmVzXG4gKi9cbnZhciBmb3JtYXRSZXNwb25zZSA9IGZ1bmN0aW9uIGZvcm1hdFJlc3BvbnNlKHJlcykge1xuICByZXR1cm4ge1xuICAgIHRleHQ6IHJlcy5kYXRhICE9IHVuZGVmaW5lZCA/IHJlcy5kYXRhIDogcmVzLnRleHRcbiAgfTtcbn07XG4vKipcbiAqIGFjdGlvbnNoZWV05Y+C5pWw5qC85byP5YyWXG4gKiBAcGFyYW0gb3B0aW9uc1xuICovXG5cblxuZnVuY3Rpb24gc3R5bGVPcHRpb25zKG9wdGlvbnMpIHtcbiAgcmV0dXJuIG9wdGlvbnMgPyBfZXh0ZW5kcyh7fSwgb3B0aW9ucywge1xuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBvcHRpb25zLnN1Y2Nlc3MgJiYgb3B0aW9ucy5zdWNjZXNzKGZvcm1hdFJlc3BvbnNlKHJlcykpO1xuICAgIH1cbiAgfSkgOiB7fTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUdldChhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlT3B0aW9ucyhzdHlsZUluKGFyZ3MsIGNvbnRhaW5lck5hbWUpKSkudGhlbihmb3JtYXRSZXNwb25zZSk7XG4gIH07XG59XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2V0KGFwaSwgY29udGFpbmVyTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoc3R5bGVJbihhcmdzLCBjb250YWluZXJOYW1lKSk7XG4gIH07XG59IiwiaW1wb3J0IHsgaXNNaW5pQXBwLCBpc1dlQ2hhdE1pbmlQcm9ncmFtLCBpc1dlYiwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtLCBpc0JhaWR1U21hcnRQcm9ncmFtIH0gZnJvbSBcIkB1bmkvZW52XCI7XG5pbXBvcnQgYWxpTWluaUFwcE1vZHVsZSBmcm9tIFwiLi9hbGktbWluaWFwcC9pbmRleFwiO1xuaW1wb3J0IHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmltcG9ydCB3ZUNoYXRNb2R1bGUgZnJvbSBcIi4vd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYnl0ZWRhbmNlTW9kdWxlIGZyb20gXCIuL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleFwiO1xuaW1wb3J0IGt1YWlTaG91TW9kdWxlIGZyb20gXCIuL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYmFpRHVNb2R1bGUgZnJvbSBcIi4vYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4XCI7IC8vIHdlYiDmmoLkuI3mlK/mjIHov5nkuKrlip/og71cblxuZXhwb3J0IHZhciBnZXRDbGlwYm9hcmQgPSBmdW5jdGlvbiBnZXRDbGlwYm9hcmQoYXJncykge1xuICBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmdldENsaXBib2FyZChhcmdzKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5nZXRDbGlwYm9hcmQoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuZ2V0Q2xpcGJvYXJkKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLmdldENsaXBib2FyZChhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLmdldENsaXBib2FyZChhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpnZXRDbGlwYm9hcmTmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgc2V0Q2xpcGJvYXJkID0gZnVuY3Rpb24gc2V0Q2xpcGJvYXJkKGFyZ3MpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5zZXRDbGlwYm9hcmQoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLnNldENsaXBib2FyZChhcmdzKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5zZXRDbGlwYm9hcmQoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuc2V0Q2xpcGJvYXJkKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLnNldENsaXBib2FyZChhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLnNldENsaXBib2FyZChhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpzZXRDbGlwYm9hcmTmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0Q2xpcGJvYXJkOiBnZXRDbGlwYm9hcmQsXG4gIHNldENsaXBib2FyZDogc2V0Q2xpcGJvYXJkXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZUdldCB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdldENsaXBib2FyZCA9IG5vcm1hbGl6ZUdldChmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4ga3MuZ2V0Q2xpcGJvYXJkRGF0YShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0Q2xpcGJvYXJkOyIsImltcG9ydCBnZXRDbGlwYm9hcmQgZnJvbSBcIi4vZ2V0Q2xpcGJvYXJkXCI7XG5pbXBvcnQgc2V0Q2xpcGJvYXJkIGZyb20gXCIuL3NldENsaXBib2FyZFwiO1xuZXhwb3J0IHsgZ2V0Q2xpcGJvYXJkLCBzZXRDbGlwYm9hcmQgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0Q2xpcGJvYXJkOiBnZXRDbGlwYm9hcmQsXG4gIHNldENsaXBib2FyZDogc2V0Q2xpcGJvYXJkXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZVNldCB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHNldENsaXBib2FyZCA9IG5vcm1hbGl6ZVNldChmdW5jdGlvbiAoYXJncykge1xuICBhcmdzLmRhdGEgPSBhcmdzLnRleHQ7XG4gIGRlbGV0ZSBhcmdzLnRleHQ7XG4gIHJldHVybiBrcy5zZXRDbGlwYm9hcmREYXRhKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBzZXRDbGlwYm9hcmQ7IiwiaW1wb3J0IHsgbm9ybWFsaXplR2V0IH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ2V0Q2xpcGJvYXJkID0gbm9ybWFsaXplR2V0KGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJOiBnZXRDbGlwYm9hcmTkuI3mlK/mjIEnKTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQik7XG5leHBvcnQgZGVmYXVsdCBnZXRDbGlwYm9hcmQ7IiwiaW1wb3J0IGdldENsaXBib2FyZCBmcm9tIFwiLi9nZXRDbGlwYm9hcmRcIjtcbmltcG9ydCBzZXRDbGlwYm9hcmQgZnJvbSBcIi4vc2V0Q2xpcGJvYXJkXCI7XG5leHBvcnQgeyBnZXRDbGlwYm9hcmQsIHNldENsaXBib2FyZCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRDbGlwYm9hcmQ6IGdldENsaXBib2FyZCxcbiAgc2V0Q2xpcGJvYXJkOiBzZXRDbGlwYm9hcmRcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplU2V0IH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc2V0Q2xpcGJvYXJkID0gbm9ybWFsaXplU2V0KGZ1bmN0aW9uIChhcmdzKSB7XG4gIHZhciBfcmVmID0gYXJncyB8fCB7fSxcbiAgICAgIF9yZWYkdGV4dCA9IF9yZWYudGV4dCxcbiAgICAgIHRleHQgPSBfcmVmJHRleHQgPT09IHZvaWQgMCA/ICcnIDogX3JlZiR0ZXh0LFxuICAgICAgX3JlZiRzdWNjZXNzID0gX3JlZi5zdWNjZXNzLFxuICAgICAgc3VjY2VzcyA9IF9yZWYkc3VjY2VzcyA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfcmVmJHN1Y2Nlc3MsXG4gICAgICBfcmVmJGZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBmYWlsID0gX3JlZiRmYWlsID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9yZWYkZmFpbCxcbiAgICAgIF9yZWYkY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlLFxuICAgICAgY29tcGxldGUgPSBfcmVmJGNvbXBsZXRlID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9yZWYkY29tcGxldGU7XG5cbiAgdmFyIHRleHRBcmVhO1xuXG4gIHZhciBpc09TID0gZnVuY3Rpb24gaXNPUygpIHtcbiAgICByZXR1cm4gbmF2aWdhdG9yLnVzZXJBZ2VudC5tYXRjaCgvaXBhZHxpcGhvbmUvaSk7XG4gIH07XG5cbiAgdmFyIGNyZWF0ZVRleHRBcmVhID0gZnVuY3Rpb24gY3JlYXRlVGV4dEFyZWEoKSB7XG4gICAgdGV4dEFyZWEgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd0ZXh0QXJlYScpO1xuICAgIHRleHRBcmVhLnZhbHVlID0gdGV4dDtcbiAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHRleHRBcmVhKTtcbiAgfTtcblxuICB2YXIgc2VsZWN0VGV4dCA9IGZ1bmN0aW9uIHNlbGVjdFRleHQoKSB7XG4gICAgdmFyIHJhbmdlO1xuICAgIHZhciBzZWxlY3Rpb247XG5cbiAgICBpZiAoaXNPUygpKSB7XG4gICAgICByYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7XG4gICAgICByYW5nZS5zZWxlY3ROb2RlQ29udGVudHModGV4dEFyZWEpO1xuICAgICAgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpO1xuICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpO1xuICAgICAgc2VsZWN0aW9uLmFkZFJhbmdlKHJhbmdlKTtcbiAgICAgIHRleHRBcmVhLnNldFNlbGVjdGlvblJhbmdlKDAsIDk5OTk5OSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRleHRBcmVhLnNlbGVjdCgpO1xuICAgIH1cbiAgfTtcblxuICB2YXIgY29weVRvQ2xpcGJvYXJkID0gZnVuY3Rpb24gY29weVRvQ2xpcGJvYXJkKCkge1xuICAgIGRvY3VtZW50LmV4ZWNDb21tYW5kKCdjb3B5Jyk7XG4gICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZCh0ZXh0QXJlYSk7XG4gIH07XG5cbiAgdHJ5IHtcbiAgICBjcmVhdGVUZXh0QXJlYSgpO1xuICAgIHNlbGVjdFRleHQoKTtcbiAgICBjb3B5VG9DbGlwYm9hcmQoKTtcbiAgICBzdWNjZXNzKHRleHQpO1xuICAgIGNvbXBsZXRlKHRleHQpO1xuICAgIHJldHVybiB0ZXh0O1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGZhaWwoZXJyb3IpO1xuICAgIGNvbXBsZXRlKHRleHQpO1xuICB9XG59LCBDT05UQUlORVJfTkFNRS5XRUIpO1xuZXhwb3J0IGRlZmF1bHQgc2V0Q2xpcGJvYXJkOyIsImltcG9ydCB7IG5vcm1hbGl6ZUdldCB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdldENsaXBib2FyZCA9IG5vcm1hbGl6ZUdldChmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gd3guZ2V0Q2xpcGJvYXJkRGF0YShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCBnZXRDbGlwYm9hcmQ7IiwiaW1wb3J0IGdldENsaXBib2FyZCBmcm9tIFwiLi9nZXRDbGlwYm9hcmRcIjtcbmltcG9ydCBzZXRDbGlwYm9hcmQgZnJvbSBcIi4vc2V0Q2xpcGJvYXJkXCI7XG5leHBvcnQgeyBnZXRDbGlwYm9hcmQsIHNldENsaXBib2FyZCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRDbGlwYm9hcmQ6IGdldENsaXBib2FyZCxcbiAgc2V0Q2xpcGJvYXJkOiBzZXRDbGlwYm9hcmRcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplU2V0IH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc2V0Q2xpcGJvYXJkID0gbm9ybWFsaXplU2V0KGZ1bmN0aW9uIChhcmdzKSB7XG4gIGFyZ3MuZGF0YSA9IGFyZ3MudGV4dDtcbiAgZGVsZXRlIGFyZ3MudGV4dDtcbiAgcmV0dXJuIHd4LnNldENsaXBib2FyZERhdGEoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuZXhwb3J0IGRlZmF1bHQgc2V0Q2xpcGJvYXJkOyIsImV4cG9ydCB2YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07IiwiZnVuY3Rpb24gaXNVbmRlZih0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSAndW5kZWZpbmVkJztcbn1cblxuZXhwb3J0IHZhciBpc0RpbmdkaW5nTWluaWFwcCA9ICFpc1VuZGVmKHR5cGVvZiBkZCkgJiYgZGQgIT09IG51bGwgJiYgIWlzVW5kZWYodHlwZW9mIGRkLmFsZXJ0KTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzaWZ5KGFwaSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcHJvbWlzaWZ5QXJnID0gYXJnO1xuICAgICAgYXBpKF9leHRlbmRzKHt9LCBwcm9taXNpZnlBcmcsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuc3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gb25TdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5mYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRmFpbDogZnVuY3Rpb24gb25GYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5jb21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbiBvbkNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25Db21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9O1xufSIsInZhciBfZXhjbHVkZWQgPSBbXCJfZXh0XCJdO1xuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCB2YXIgc3R5bGVPdXQgPSBmdW5jdGlvbiBzdHlsZU91dChvdXRwdXQsIG9yaWdpbmFsSW5wdXQsIG9yaWdpbmFsT3V0cHV0KSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0cHV0LCB7XG4gICAgX29yaWdpbmFsOiB7XG4gICAgICBpbnB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsSW5wdXQpLFxuICAgICAgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOWvueWFpeWPgui/m+ihjCBmb3JtYXQg5LmL5ZCO55qE57uT5p6cXG4gICAgICBvdXRwdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbE91dHB1dCkgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOi/lOWbnuWAvCBmb3JtYXQg5LmL5YmN55qE57uT5p6cXG5cbiAgICB9XG4gIH0pO1xufTtcbmV4cG9ydCB2YXIgc3R5bGVJbiA9IGZ1bmN0aW9uIHN0eWxlSW4ob3B0aW9ucywgYmFzZU5hbWUpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgX3JlZiRfZXh0ID0gX3JlZi5fZXh0LFxuICAgICAgX2V4dCA9IF9yZWYkX2V4dCA9PT0gdm9pZCAwID8ge30gOiBfcmVmJF9leHQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcblxuICByZXR1cm4gX2V4dGVuZHMoe30sIHJlc3QsIF9leHRbYmFzZU5hbWVdIHx8IHt9KTtcbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuXG52YXIgY29uZmlybSA9IGZ1bmN0aW9uIGNvbmZpcm0oYXJncykge1xuICB2YXIgcGFyYW1zID0gX2V4dGVuZHMoe30sIGFyZ3MsIHtcbiAgICBjb25maXJtQnV0dG9uVGV4dDogYXJncy5jb25maXJtVGV4dCxcbiAgICBjYW5jZWxCdXR0b25UZXh0OiBhcmdzLmNhbmNlbFRleHRcbiAgfSk7XG5cbiAgaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5jb25maXJtKHBhcmFtcykgOiBteS5jb25maXJtKHBhcmFtcyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoY29uZmlybSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gc3dhbi5zaG93TW9kYWwoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHR0LnNob3dNb2RhbChhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gXCIuL191dGlscy9wcm9taXNpZnlcIjtcbmltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5cbi8qKlxuICogQHBhcmFtIHJlc1xuICovXG52YXIgZm9ybWF0UmVzcG9uc2UgPSBmdW5jdGlvbiBmb3JtYXRSZXNwb25zZShyZXMpIHtcbiAgcmV0dXJuIHtcbiAgICBjb25maXJtOiByZXMuY29uZmlybSxcbiAgICBjYW5jZWw6ICFyZXMuY29uZmlybVxuICB9O1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgYXJncyA9IHN0eWxlSW4oYXJncywgY29udGFpbmVyTmFtZSk7XG4gICAgcmV0dXJuIHByb21pc2lmeShhcGkpKF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgICB0aXRsZTogYXJncy50aXRsZSB8fCAnJyxcbiAgICAgIGNvbnRlbnQ6IGFyZ3MuY29udGVudCB8fCAnJyxcbiAgICAgIGNvbmZpcm1UZXh0OiBhcmdzLmNvbmZpcm1UZXh0IHx8ICfnoa7lrponLFxuICAgICAgY2FuY2VsVGV4dDogYXJncy5jYW5jZWxUZXh0IHx8ICflj5bmtognLFxuICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgYXJncy5zdWNjZXNzICYmIGFyZ3Muc3VjY2Vzcyhmb3JtYXRSZXNwb25zZShyZXMpKTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgIGFyZ3MuY29tcGxldGUgJiYgYXJncy5jb21wbGV0ZShyZXMpO1xuICAgICAgfVxuICAgIH0pKS50aGVuKGZvcm1hdFJlc3BvbnNlKTtcbiAgfTtcbn0iLCJpbXBvcnQgeyBpc01pbmlBcHAsIGlzV2VDaGF0TWluaVByb2dyYW0sIGlzV2ViLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0t1YWlTaG91TWluaVByb2dyYW0sIGlzQmFpZHVTbWFydFByb2dyYW0gfSBmcm9tIFwiQHVuaS9lbnZcIjtcbmltcG9ydCBhbGlNaW5pQXBwTW9kdWxlIGZyb20gXCIuL2FsaS1taW5pYXBwL2luZGV4XCI7XG5pbXBvcnQgd2ViTW9kdWxlIGZyb20gXCIuL3dlYi9pbmRleFwiO1xuaW1wb3J0IHdlQ2hhdE1vZHVsZSBmcm9tIFwiLi93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBieXRlZGFuY2VNb2R1bGUgZnJvbSBcIi4vYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4XCI7XG5pbXBvcnQga3VhaVNob3VNb2R1bGUgZnJvbSBcIi4va3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBiYWlEdU1vZHVsZSBmcm9tIFwiLi9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXhcIjtcbmV4cG9ydCB2YXIgY29uZmlybSA9IGZ1bmN0aW9uIGNvbmZpcm0oYXJncykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlKGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mmNvbmZpcm3mmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGNvbmZpcm07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGtzLnNob3dNb2RhbChhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpOyIsImltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIGNsc1ByZWZpeCA9ICdfX3VuaXZlcnNhbF9jb25maXJtJztcbnZhciBzdHlsZXMgPSAoXCIuXCIgKyBjbHNQcmVmaXggKyBcIiB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBsZWZ0OiA1MCU7XFxuICB0b3A6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG4gIGJhY2tncm91bmQ6ICNmZmY7XFxuICBjb2xvcjogIzAwMDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBib3JkZXItcmFkaXVzOiAxMnB4O1xcbiAgei1pbmRleDogOTk5OTtcXG4gIG91dGxpbmU6IG5vbmU7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB3aWR0aDogMjgwcHg7XFxuICBvcGFjaXR5OiAwO1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuM3M7XFxuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xcbn1cXG4uXCIgKyBjbHNQcmVmaXggKyBcIl9tYXNrIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgdG9wOiAwO1xcbiAgbWFyZ2luOiBhdXRvO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB6LWluZGV4OiA5OTk5O1xcbiAgYmFja2dyb3VuZDogIzAwMDtcXG4gIG9wYWNpdHk6IDA7XFxuICBhbmltYXRpb24tZHVyYXRpb246IC4zcztcXG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XFxufVxcbi5cIiArIGNsc1ByZWZpeCArIFwiX3RpdGxlIHtcXG4gIHBhZGRpbmc6IDI4cHggMTZweCAxNnB4O1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxufVxcbi5cIiArIGNsc1ByZWZpeCArIFwiX2NvbnRlbnQge1xcbiAgY29sb3I6ICM2NjY7XFxuICBwYWRkaW5nOiAwIDE2cHg7XFxuICBtYXJnaW4tYm90dG9tOiAyOHB4O1xcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xcbiAgbWF4LWhlaWdodDogMjAwcHg7XFxuICBvdmVyZmxvdzogc2Nyb2xsO1xcbn1cXG4uXCIgKyBjbHNQcmVmaXggKyBcIl9jYW5jZWwge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBwYWRkaW5nOiAxNHB4IDA7XFxuICB3aWR0aDogNTAlO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2VlZTtcXG59XFxuLlwiICsgY2xzUHJlZml4ICsgXCJfY29uZmlybSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGNvbG9yOiAjNTc2Qjk1O1xcbiAgcGFkZGluZzogMTRweCAwO1xcbiAgd2lkdGg6IDUwJTtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBib3JkZXItdG9wOiAxcHggc29saWQgI2VlZTtcXG59XFxuQGtleWZyYW1lcyBcIiArIGNsc1ByZWZpeCArIFwiX2luIHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIFwiICsgY2xzUHJlZml4ICsgXCJfb3V0IHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIFwiICsgY2xzUHJlZml4ICsgXCJfZmFkZUluIHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAuNjtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBcIiArIGNsc1ByZWZpeCArIFwiX2ZhZGVPdXQge1xcbiAgMCUge1xcbiAgICBvcGFjaXR5OiAuNjtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbn1cIikucmVwbGFjZSgvXFxuL2csICcnKTtcbnZhciBzdHlsZUVsZW1lbnQgPSBudWxsO1xudmFyIGNvbmZpcm1FbGVtZW50ID0gbnVsbDtcblxudmFyIGhpZGVGbiA9IGZ1bmN0aW9uIGhpZGVGbigpIHt9O1xuXG52YXIgY29uZmlybSA9IGZ1bmN0aW9uIGNvbmZpcm0oYXJncykge1xuICB0cnkge1xuICAgIGlmICghc3R5bGVFbGVtZW50KSB7XG4gICAgICAvLyBjcmVhdGUgYSBzdHlsZSB0YWcgZm9yIGtleWZyYW1lc1xuICAgICAgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgIHN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSBzdHlsZXM7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKCFjb25maXJtRWxlbWVudCkge1xuICAgICAgLy8gY3JlYXRlIGEgYWN0aW9uc2hlZXQgZWxlbWVudFxuICAgICAgY29uZmlybUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgLy8gY3JlYXRlIGEgbWFzayBlbGVtZW50XG5cbiAgICAgIHZhciBtYXNrRWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBtYXNrRWxlLmNsYXNzTmFtZSA9IGNsc1ByZWZpeCArIFwiX21hc2tcIjtcbiAgICAgIGNvbmZpcm1FbGVtZW50LmFwcGVuZENoaWxkKG1hc2tFbGUpOyAvLyBjcmVhdGUgY29udGFpbmVyIGVsZW1lbnRcblxuICAgICAgdmFyIGNvbnRhaW5lckVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgY29udGFpbmVyRWxlLmNsYXNzTmFtZSA9IGNsc1ByZWZpeDsgLy8gYWRkIHRpdGxlXG5cbiAgICAgIHZhciB0aXRsZUVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGl0bGVFbGUuY2xhc3NOYW1lID0gY2xzUHJlZml4ICsgXCJfdGl0bGVcIjtcbiAgICAgIHRpdGxlRWxlLmlubmVyVGV4dCA9IGFyZ3MudGl0bGU7XG4gICAgICBjb250YWluZXJFbGUuYXBwZW5kQ2hpbGQodGl0bGVFbGUpOyAvLyBhZGQgY29udGVudFxuXG4gICAgICB2YXIgY29udGVudEVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgY29udGVudEVsZS5jbGFzc05hbWUgPSBjbHNQcmVmaXggKyBcIl9jb250ZW50XCI7XG4gICAgICBjb250ZW50RWxlLmlubmVyVGV4dCA9IGFyZ3MuY29udGVudDtcbiAgICAgIGNvbnRhaW5lckVsZS5hcHBlbmRDaGlsZChjb250ZW50RWxlKTsgLy8gYWRkIG9wZXJhdG9yc1xuXG4gICAgICB2YXIgb3BlcmF0ZUVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyAvLyBhZGQgY2FuY2VsQnV0dG9uXG5cbiAgICAgIGlmIChhcmdzLnNob3dDYW5jZWwgIT09IGZhbHNlKSB7XG4gICAgICAgIHZhciBjYW5jZWxCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY2FuY2VsQnV0dG9uLmNsYXNzTmFtZSA9IGNsc1ByZWZpeCArIFwiX2NhbmNlbFwiO1xuICAgICAgICBjYW5jZWxCdXR0b24uaW5uZXJUZXh0ID0gYXJncy5jYW5jZWxUZXh0O1xuICAgICAgICBjYW5jZWxCdXR0b24uc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgICAgICBjYW5jZWxCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGlkZUZuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGFyZ3Muc3VjY2Vzcyh7XG4gICAgICAgICAgICAgIGNvbmZpcm06IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFyZ3MuY29tcGxldGUoe1xuICAgICAgICAgICAgICBjb25maXJtOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBvcGVyYXRlRWxlLmFwcGVuZENoaWxkKGNhbmNlbEJ1dHRvbik7XG4gICAgICB9IC8vIGFkZCBjb25maXJtQnV0dG9uXG5cblxuICAgICAgdmFyIGNvbmZpcm1CdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGNvbmZpcm1CdXR0b24uY2xhc3NOYW1lID0gY2xzUHJlZml4ICsgXCJfY29uZmlybVwiO1xuXG4gICAgICBpZiAoYXJncy5zaG93Q2FuY2VsID09PSBmYWxzZSkge1xuICAgICAgICBjb25maXJtQnV0dG9uLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgfVxuXG4gICAgICBjb25maXJtQnV0dG9uLmlubmVyVGV4dCA9IGFyZ3MuY29uZmlybVRleHQ7XG4gICAgICBjb25maXJtQnV0dG9uLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIGNvbmZpcm1CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGhpZGVGbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXJncy5zdWNjZXNzKHtcbiAgICAgICAgICAgIGNvbmZpcm06IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhcmdzLmNvbXBsZXRlKHtcbiAgICAgICAgICAgIGNvbmZpcm06IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIG9wZXJhdGVFbGUuYXBwZW5kQ2hpbGQoY29uZmlybUJ1dHRvbik7XG4gICAgICBjb250YWluZXJFbGUuYXBwZW5kQ2hpbGQob3BlcmF0ZUVsZSk7XG4gICAgICBjb25maXJtRWxlbWVudC5hcHBlbmRDaGlsZChjb250YWluZXJFbGUpO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25maXJtRWxlbWVudCk7XG4gICAgICBtYXNrRWxlLnN0eWxlLmFuaW1hdGlvbk5hbWUgPSBjbHNQcmVmaXggKyBcIl9mYWRlSW5cIjtcbiAgICAgIGNvbnRhaW5lckVsZS5zdHlsZS5hbmltYXRpb25OYW1lID0gY2xzUHJlZml4ICsgXCJfaW5cIjtcblxuICAgICAgaGlkZUZuID0gZnVuY3Rpb24gaGlkZUZuKGNhbGxiYWNrKSB7XG4gICAgICAgIG1hc2tFbGUuc3R5bGUuYW5pbWF0aW9uTmFtZSA9IGNsc1ByZWZpeCArIFwiX2ZhZGVPdXRcIjtcbiAgICAgICAgY29uZmlybUVsZW1lbnQucmVtb3ZlQ2hpbGQoY29udGFpbmVyRWxlKTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChjb25maXJtRWxlbWVudCk7XG4gICAgICAgICAgY29uZmlybUVsZW1lbnQgPSBudWxsO1xuICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9O1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgYXJncy5mYWlsKGVycik7XG4gICAgYXJncy5jb21wbGV0ZShlcnIpO1xuICB9XG59O1xuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoY29uZmlybSwgQ09OVEFJTkVSX05BTUUuV0VCKTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gd3guc2hvd01vZGFsKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuQ09OVEFJTkVSX05BTUUgPSB2b2lkIDA7XG52YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07XG5leHBvcnRzLkNPTlRBSU5FUl9OQU1FID0gQ09OVEFJTkVSX05BTUU7IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLnByb21pc2lmeSA9IHByb21pc2lmeTtcblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gcHJvbWlzaWZ5KGFwaSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcHJvbWlzaWZ5QXJnID0gYXJnO1xuICAgICAgYXBpKF9leHRlbmRzKHt9LCBwcm9taXNpZnlBcmcsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuc3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gb25TdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5mYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRmFpbDogZnVuY3Rpb24gb25GYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5jb21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbiBvbkNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25Db21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9O1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5zdHlsZUluID0gZXhwb3J0cy5zdHlsZU91dCA9IHZvaWQgMDtcbnZhciBfZXhjbHVkZWQgPSBbXCJfZXh0XCJdO1xuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbnZhciBzdHlsZU91dCA9IGZ1bmN0aW9uIHN0eWxlT3V0KG91dHB1dCwgb3JpZ2luYWxJbnB1dCwgb3JpZ2luYWxPdXRwdXQpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRwdXQsIHtcbiAgICBfb3JpZ2luYWw6IHtcbiAgICAgIGlucHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxJbnB1dCksXG4gICAgICAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g5a+55YWl5Y+C6L+b6KGMIGZvcm1hdCDkuYvlkI7nmoTnu5PmnpxcbiAgICAgIG91dHB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsT3V0cHV0KSAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g6L+U5Zue5YC8IGZvcm1hdCDkuYvliY3nmoTnu5PmnpxcblxuICAgIH1cbiAgfSk7XG59O1xuXG5leHBvcnRzLnN0eWxlT3V0ID0gc3R5bGVPdXQ7XG5cbnZhciBzdHlsZUluID0gZnVuY3Rpb24gc3R5bGVJbihvcHRpb25zLCBiYXNlTmFtZSkge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfcmVmJF9leHQgPSBfcmVmLl9leHQsXG4gICAgICBfZXh0ID0gX3JlZiRfZXh0ID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkX2V4dCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgX2V4dFtiYXNlTmFtZV0gfHwge30pO1xufTtcblxuZXhwb3J0cy5zdHlsZUluID0gc3R5bGVJbjsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMubm9ybWFsaXplID0gbm9ybWFsaXplO1xuXG52YXIgX3Byb21pc2lmeSA9IHJlcXVpcmUoXCIuL191dGlscy9wcm9taXNpZnlcIik7XG5cbnZhciBfc3R5bGVPcHRpb25zID0gcmVxdWlyZShcIi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiKTtcblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuLyoqXG4gKiBAcGFyYW0gcmVzXG4gKi9cbnZhciBmb3JtYXRSZXNwb25zZSA9IGZ1bmN0aW9uIGZvcm1hdFJlc3BvbnNlKHJlcykge1xuICByZXR1cm4ge1xuICAgIGNvbmZpcm06IHJlcy5jb25maXJtLFxuICAgIGNhbmNlbDogIXJlcy5jb25maXJtXG4gIH07XG59O1xuXG5mdW5jdGlvbiBub3JtYWxpemUoYXBpLCBjb250YWluZXJOYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJncykge1xuICAgIGFyZ3MgPSAoMCwgX3N0eWxlT3B0aW9ucy5zdHlsZUluKShhcmdzLCBjb250YWluZXJOYW1lKTtcbiAgICByZXR1cm4gKDAsIF9wcm9taXNpZnkucHJvbWlzaWZ5KShhcGkpKF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgICB0aXRsZTogYXJncy50aXRsZSB8fCAnJyxcbiAgICAgIGNvbnRlbnQ6IGFyZ3MuY29udGVudCB8fCAnJyxcbiAgICAgIGNvbmZpcm1UZXh0OiBhcmdzLmNvbmZpcm1UZXh0IHx8ICfnoa7lrponLFxuICAgICAgY2FuY2VsVGV4dDogYXJncy5jYW5jZWxUZXh0IHx8ICflj5bmtognLFxuICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgYXJncy5zdWNjZXNzICYmIGFyZ3Muc3VjY2Vzcyhmb3JtYXRSZXNwb25zZShyZXMpKTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgIGFyZ3MuY29tcGxldGUgJiYgYXJncy5jb21wbGV0ZShyZXMpO1xuICAgICAgfVxuICAgIH0pKS50aGVuKGZvcm1hdFJlc3BvbnNlKTtcbiAgfTtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9jb25zdGFudCA9IHJlcXVpcmUoXCIuLi9fdXRpbHMvY29uc3RhbnRcIik7XG5cbnZhciBfY29tbW9uID0gcmVxdWlyZShcIi4uL2NvbW1vblwiKTtcblxudmFyIGNsc1ByZWZpeCA9ICdfX3VuaXZlcnNhbF9jb25maXJtJztcbnZhciBzdHlsZXMgPSAoXCIuXCIgKyBjbHNQcmVmaXggKyBcIiB7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBsZWZ0OiA1MCU7XFxuICB0b3A6IDUwJTtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlKC01MCUsIC01MCUpO1xcbiAgLXdlYmtpdC10cmFuc2Zvcm06IHRyYW5zbGF0ZSgtNTAlLCAtNTAlKTtcXG4gIGJhY2tncm91bmQ6ICNmZmY7XFxuICBjb2xvcjogIzAwMDtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBib3JkZXItcmFkaXVzOiAxMnB4O1xcbiAgei1pbmRleDogOTk5OTtcXG4gIG91dGxpbmU6IG5vbmU7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICB3aWR0aDogMjgwcHg7XFxuICBvcGFjaXR5OiAwO1xcbiAgYW5pbWF0aW9uLWR1cmF0aW9uOiAuM3M7XFxuICBhbmltYXRpb24tZmlsbC1tb2RlOiBib3RoO1xcbn1cXG4uXCIgKyBjbHNQcmVmaXggKyBcIl9tYXNrIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgdG9wOiAwO1xcbiAgbWFyZ2luOiBhdXRvO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICB6LWluZGV4OiA5OTk5O1xcbiAgYmFja2dyb3VuZDogIzAwMDtcXG4gIG9wYWNpdHk6IDA7XFxuICBhbmltYXRpb24tZHVyYXRpb246IC4zcztcXG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XFxufVxcbi5cIiArIGNsc1ByZWZpeCArIFwiX3RpdGxlIHtcXG4gIHBhZGRpbmc6IDI4cHggMTZweCAxNnB4O1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxufVxcbi5cIiArIGNsc1ByZWZpeCArIFwiX2NvbnRlbnQge1xcbiAgY29sb3I6ICM2NjY7XFxuICBwYWRkaW5nOiAwIDE2cHg7XFxuICBtYXJnaW4tYm90dG9tOiAyOHB4O1xcbiAgd29yZC1icmVhazogYnJlYWstYWxsO1xcbiAgbWF4LWhlaWdodDogMjAwcHg7XFxuICBvdmVyZmxvdzogc2Nyb2xsO1xcbn1cXG4uXCIgKyBjbHNQcmVmaXggKyBcIl9jYW5jZWwge1xcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xcbiAgZm9udC13ZWlnaHQ6IGJvbGQ7XFxuICBwYWRkaW5nOiAxNHB4IDA7XFxuICB3aWR0aDogNTAlO1xcbiAgYm94LXNpemluZzogYm9yZGVyLWJveDtcXG4gIGJvcmRlci10b3A6IDFweCBzb2xpZCAjZWVlO1xcbiAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI2VlZTtcXG59XFxuLlwiICsgY2xzUHJlZml4ICsgXCJfY29uZmlybSB7XFxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XFxuICBmb250LXdlaWdodDogYm9sZDtcXG4gIGNvbG9yOiAjNTc2Qjk1O1xcbiAgcGFkZGluZzogMTRweCAwO1xcbiAgd2lkdGg6IDUwJTtcXG4gIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XFxuICBib3JkZXItdG9wOiAxcHggc29saWQgI2VlZTtcXG59XFxuQGtleWZyYW1lcyBcIiArIGNsc1ByZWZpeCArIFwiX2luIHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIFwiICsgY2xzUHJlZml4ICsgXCJfb3V0IHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIFwiICsgY2xzUHJlZml4ICsgXCJfZmFkZUluIHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAuNjtcXG4gIH1cXG59XFxuQGtleWZyYW1lcyBcIiArIGNsc1ByZWZpeCArIFwiX2ZhZGVPdXQge1xcbiAgMCUge1xcbiAgICBvcGFjaXR5OiAuNjtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAwO1xcbiAgfVxcbn1cIikucmVwbGFjZSgvXFxuL2csICcnKTtcbnZhciBzdHlsZUVsZW1lbnQgPSBudWxsO1xudmFyIGNvbmZpcm1FbGVtZW50ID0gbnVsbDtcblxudmFyIGhpZGVGbiA9IGZ1bmN0aW9uIGhpZGVGbigpIHt9O1xuXG52YXIgY29uZmlybSA9IGZ1bmN0aW9uIGNvbmZpcm0oYXJncykge1xuICB0cnkge1xuICAgIGlmICghc3R5bGVFbGVtZW50KSB7XG4gICAgICAvLyBjcmVhdGUgYSBzdHlsZSB0YWcgZm9yIGtleWZyYW1lc1xuICAgICAgc3R5bGVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3R5bGUnKTtcbiAgICAgIHN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSBzdHlsZXM7XG4gICAgICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKHN0eWxlRWxlbWVudCk7XG4gICAgfVxuXG4gICAgaWYgKCFjb25maXJtRWxlbWVudCkge1xuICAgICAgLy8gY3JlYXRlIGEgYWN0aW9uc2hlZXQgZWxlbWVudFxuICAgICAgY29uZmlybUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsgLy8gY3JlYXRlIGEgbWFzayBlbGVtZW50XG5cbiAgICAgIHZhciBtYXNrRWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICBtYXNrRWxlLmNsYXNzTmFtZSA9IGNsc1ByZWZpeCArIFwiX21hc2tcIjtcbiAgICAgIGNvbmZpcm1FbGVtZW50LmFwcGVuZENoaWxkKG1hc2tFbGUpOyAvLyBjcmVhdGUgY29udGFpbmVyIGVsZW1lbnRcblxuICAgICAgdmFyIGNvbnRhaW5lckVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgY29udGFpbmVyRWxlLmNsYXNzTmFtZSA9IGNsc1ByZWZpeDsgLy8gYWRkIHRpdGxlXG5cbiAgICAgIHZhciB0aXRsZUVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgdGl0bGVFbGUuY2xhc3NOYW1lID0gY2xzUHJlZml4ICsgXCJfdGl0bGVcIjtcbiAgICAgIHRpdGxlRWxlLmlubmVyVGV4dCA9IGFyZ3MudGl0bGU7XG4gICAgICBjb250YWluZXJFbGUuYXBwZW5kQ2hpbGQodGl0bGVFbGUpOyAvLyBhZGQgY29udGVudFxuXG4gICAgICB2YXIgY29udGVudEVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgY29udGVudEVsZS5jbGFzc05hbWUgPSBjbHNQcmVmaXggKyBcIl9jb250ZW50XCI7XG4gICAgICBjb250ZW50RWxlLmlubmVyVGV4dCA9IGFyZ3MuY29udGVudDtcbiAgICAgIGNvbnRhaW5lckVsZS5hcHBlbmRDaGlsZChjb250ZW50RWxlKTsgLy8gYWRkIG9wZXJhdG9yc1xuXG4gICAgICB2YXIgb3BlcmF0ZUVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpOyAvLyBhZGQgY2FuY2VsQnV0dG9uXG5cbiAgICAgIGlmIChhcmdzLnNob3dDYW5jZWwgIT09IGZhbHNlKSB7XG4gICAgICAgIHZhciBjYW5jZWxCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgY2FuY2VsQnV0dG9uLmNsYXNzTmFtZSA9IGNsc1ByZWZpeCArIFwiX2NhbmNlbFwiO1xuICAgICAgICBjYW5jZWxCdXR0b24uaW5uZXJUZXh0ID0gYXJncy5jYW5jZWxUZXh0O1xuICAgICAgICBjYW5jZWxCdXR0b24uc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpO1xuICAgICAgICBjYW5jZWxCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgaGlkZUZuKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGFyZ3Muc3VjY2Vzcyh7XG4gICAgICAgICAgICAgIGNvbmZpcm06IGZhbHNlXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGFyZ3MuY29tcGxldGUoe1xuICAgICAgICAgICAgICBjb25maXJtOiBmYWxzZVxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICBvcGVyYXRlRWxlLmFwcGVuZENoaWxkKGNhbmNlbEJ1dHRvbik7XG4gICAgICB9IC8vIGFkZCBjb25maXJtQnV0dG9uXG5cblxuICAgICAgdmFyIGNvbmZpcm1CdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGNvbmZpcm1CdXR0b24uY2xhc3NOYW1lID0gY2xzUHJlZml4ICsgXCJfY29uZmlybVwiO1xuXG4gICAgICBpZiAoYXJncy5zaG93Q2FuY2VsID09PSBmYWxzZSkge1xuICAgICAgICBjb25maXJtQnV0dG9uLnN0eWxlLndpZHRoID0gJzEwMCUnO1xuICAgICAgfVxuXG4gICAgICBjb25maXJtQnV0dG9uLmlubmVyVGV4dCA9IGFyZ3MuY29uZmlybVRleHQ7XG4gICAgICBjb25maXJtQnV0dG9uLnNldEF0dHJpYnV0ZSgndGFiaW5kZXgnLCAnLTEnKTtcbiAgICAgIGNvbmZpcm1CdXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGhpZGVGbihmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgYXJncy5zdWNjZXNzKHtcbiAgICAgICAgICAgIGNvbmZpcm06IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgICBhcmdzLmNvbXBsZXRlKHtcbiAgICAgICAgICAgIGNvbmZpcm06IHRydWVcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICAgIG9wZXJhdGVFbGUuYXBwZW5kQ2hpbGQoY29uZmlybUJ1dHRvbik7XG4gICAgICBjb250YWluZXJFbGUuYXBwZW5kQ2hpbGQob3BlcmF0ZUVsZSk7XG4gICAgICBjb25maXJtRWxlbWVudC5hcHBlbmRDaGlsZChjb250YWluZXJFbGUpO1xuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChjb25maXJtRWxlbWVudCk7XG4gICAgICBtYXNrRWxlLnN0eWxlLmFuaW1hdGlvbk5hbWUgPSBjbHNQcmVmaXggKyBcIl9mYWRlSW5cIjtcbiAgICAgIGNvbnRhaW5lckVsZS5zdHlsZS5hbmltYXRpb25OYW1lID0gY2xzUHJlZml4ICsgXCJfaW5cIjtcblxuICAgICAgaGlkZUZuID0gZnVuY3Rpb24gaGlkZUZuKGNhbGxiYWNrKSB7XG4gICAgICAgIG1hc2tFbGUuc3R5bGUuYW5pbWF0aW9uTmFtZSA9IGNsc1ByZWZpeCArIFwiX2ZhZGVPdXRcIjtcbiAgICAgICAgY29uZmlybUVsZW1lbnQucmVtb3ZlQ2hpbGQoY29udGFpbmVyRWxlKTtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChjb25maXJtRWxlbWVudCk7XG4gICAgICAgICAgY29uZmlybUVsZW1lbnQgPSBudWxsO1xuICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgIH0sIDMwMCk7XG4gICAgICB9O1xuICAgIH1cbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgYXJncy5mYWlsKGVycik7XG4gICAgYXJncy5jb21wbGV0ZShlcnIpO1xuICB9XG59O1xuXG52YXIgX2RlZmF1bHQgPSAoMCwgX2NvbW1vbi5ub3JtYWxpemUpKGNvbmZpcm0sIF9jb25zdGFudC5DT05UQUlORVJfTkFNRS5XRUIpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID0gbm9ybWFsaXplLmdldEJvdW5kaW5nQ2xpZW50UmVjdChmdW5jdGlvbiAoc2VsZWN0b3IpIHtcbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgbXkuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLnNlbGVjdEFsbChzZWxlY3RvcikuYm91bmRpbmdDbGllbnRSZWN0KCkuZXhlYyhmdW5jdGlvbiAocmV0KSB7XG4gICAgICByZXNvbHZlKHJldFswXSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5leHBvcnQgZGVmYXVsdCBnZXRCb3VuZGluZ0NsaWVudFJlY3Q7IiwidmFyIGdldFNjcm9sbE9mZnNldCA9IGZ1bmN0aW9uIGdldFNjcm9sbE9mZnNldChzZWxlY3Rvcikge1xuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICBteS5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuc2VsZWN0QWxsKHNlbGVjdG9yKS5zY3JvbGxPZmZzZXQoKS5leGVjKGZ1bmN0aW9uIChyZXQpIHtcbiAgICAgIHJlc29sdmUocmV0WzBdID8gcmV0WzBdLm1hcChmdW5jdGlvbiAoaSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNjcm9sbExlZnQ6IGkuc2Nyb2xsTGVmdCxcbiAgICAgICAgICBzY3JvbGxUb3A6IGkuc2Nyb2xsVG9wXG4gICAgICAgIH07XG4gICAgICB9KSA6IFtdKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRTY3JvbGxPZmZzZXQ7IiwiaW1wb3J0IGdldFNjcm9sbE9mZnNldCBmcm9tIFwiLi9nZXRTY3JvbGxPZmZzZXRcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCI7XG5leHBvcnQgeyBnZXRTY3JvbGxPZmZzZXQsIGdldEJvdW5kaW5nQ2xpZW50UmVjdCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRTY3JvbGxPZmZzZXQ6IGdldFNjcm9sbE9mZnNldCxcbiAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0OiBnZXRCb3VuZGluZ0NsaWVudFJlY3Rcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIGdldEJvdW5kaW5nQ2xpZW50UmVjdCA9IG5vcm1hbGl6ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoZnVuY3Rpb24gKHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHtcbiAgICBjb250ZXh0ID0gc3dhbjtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSA9IGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSB8fCBzd2FuLmNyZWF0ZVNlbGVjdG9yUXVlcnk7XG4gICAgY29udGV4dC5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuc2VsZWN0QWxsKHNlbGVjdG9yKS5ib3VuZGluZ0NsaWVudFJlY3QoKS5leGVjKGZ1bmN0aW9uIChyZXQpIHtcbiAgICAgIHJlc29sdmUocmV0WzBdKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IGdldEJvdW5kaW5nQ2xpZW50UmVjdDsiLCJ2YXIgZ2V0U2Nyb2xsT2Zmc2V0ID0gZnVuY3Rpb24gZ2V0U2Nyb2xsT2Zmc2V0KHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHtcbiAgICBjb250ZXh0ID0gc3dhbjtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSA9IGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSB8fCBzd2FuLmNyZWF0ZVNlbGVjdG9yUXVlcnk7XG4gICAgY29udGV4dC5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuc2VsZWN0QWxsKHNlbGVjdG9yKS5zY3JvbGxPZmZzZXQoKS5leGVjKGZ1bmN0aW9uIChyZXQpIHtcbiAgICAgIHJlc29sdmUocmV0WzBdID8gcmV0WzBdLm1hcChmdW5jdGlvbiAoaSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNjcm9sbExlZnQ6IGkuc2Nyb2xsTGVmdCxcbiAgICAgICAgICBzY3JvbGxUb3A6IGkuc2Nyb2xsVG9wXG4gICAgICAgIH07XG4gICAgICB9KSA6IFtdKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRTY3JvbGxPZmZzZXQ7IiwiaW1wb3J0IGdldFNjcm9sbE9mZnNldCBmcm9tIFwiLi9nZXRTY3JvbGxPZmZzZXRcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCI7XG5leHBvcnQgeyBnZXRTY3JvbGxPZmZzZXQsIGdldEJvdW5kaW5nQ2xpZW50UmVjdCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRTY3JvbGxPZmZzZXQ6IGdldFNjcm9sbE9mZnNldCxcbiAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0OiBnZXRCb3VuZGluZ0NsaWVudFJlY3Rcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIGdldEJvdW5kaW5nQ2xpZW50UmVjdCA9IG5vcm1hbGl6ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoZnVuY3Rpb24gKHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHtcbiAgICBjb250ZXh0ID0gdHQ7XG4gIH1cblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICBjb250ZXh0LmNyZWF0ZVNlbGVjdG9yUXVlcnkgPSBjb250ZXh0LmNyZWF0ZVNlbGVjdG9yUXVlcnkgfHwgdHQuY3JlYXRlU2VsZWN0b3JRdWVyeTtcbiAgICBjb250ZXh0LmNyZWF0ZVNlbGVjdG9yUXVlcnkoKS5zZWxlY3RBbGwoc2VsZWN0b3IpLmJvdW5kaW5nQ2xpZW50UmVjdCgpLmV4ZWMoZnVuY3Rpb24gKHJldCkge1xuICAgICAgcmVzb2x2ZShyZXRbMF0pO1xuICAgIH0pO1xuICB9KTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0OyIsInZhciBnZXRTY3JvbGxPZmZzZXQgPSBmdW5jdGlvbiBnZXRTY3JvbGxPZmZzZXQoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkge1xuICAgIGNvbnRleHQgPSB0dDtcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSA9IGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSB8fCB0dC5jcmVhdGVTZWxlY3RvclF1ZXJ5O1xuICAgIGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLnNlbGVjdEFsbChzZWxlY3Rvcikuc2Nyb2xsT2Zmc2V0KCkuZXhlYyhmdW5jdGlvbiAocmV0KSB7XG4gICAgICByZXNvbHZlKHJldFswXSA/IHJldFswXS5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzY3JvbGxMZWZ0OiBpLnNjcm9sbExlZnQsXG4gICAgICAgICAgc2Nyb2xsVG9wOiBpLnNjcm9sbFRvcFxuICAgICAgICB9O1xuICAgICAgfSkgOiBbXSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0U2Nyb2xsT2Zmc2V0OyIsImltcG9ydCBnZXRTY3JvbGxPZmZzZXQgZnJvbSBcIi4vZ2V0U2Nyb2xsT2Zmc2V0XCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdFwiO1xuZXhwb3J0IHsgZ2V0U2Nyb2xsT2Zmc2V0LCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0U2Nyb2xsT2Zmc2V0OiBnZXRTY3JvbGxPZmZzZXQsXG4gIGdldEJvdW5kaW5nQ2xpZW50UmVjdDogZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG59OyIsImV4cG9ydCB2YXIgc3R5bGVCb3VuZGluZ0NsaWVudFJlY3RSZXNwb25zZSA9IGZ1bmN0aW9uIHN0eWxlQm91bmRpbmdDbGllbnRSZWN0UmVzcG9uc2UoZGF0YSkge1xuICByZXR1cm4gZGF0YSA/IGRhdGEubWFwKGZ1bmN0aW9uIChyZXMpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbGVmdDogaXNOb25lKHJlcy5sZWZ0KSA/ICcnIDogcmVzLmxlZnQsXG4gICAgICByaWdodDogaXNOb25lKHJlcy5yaWdodCkgPyAnJyA6IHJlcy5yaWdodCxcbiAgICAgIHRvcDogaXNOb25lKHJlcy50b3ApID8gJycgOiByZXMudG9wLFxuICAgICAgYm90dG9tOiBpc05vbmUocmVzLmJvdHRvbSkgPyAnJyA6IHJlcy5ib3R0b20sXG4gICAgICB3aWR0aDogcmVzLndpZHRoLFxuICAgICAgaGVpZ2h0OiByZXMuaGVpZ2h0XG4gICAgfTtcbiAgfSkgOiBbXTtcbn07XG5leHBvcnQgdmFyIG5vcm1hbGl6ZSA9IHtcbiAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0OiBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3QoYXBpKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBhcGkuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpLnRoZW4oc3R5bGVCb3VuZGluZ0NsaWVudFJlY3RSZXNwb25zZSk7XG4gICAgfTtcbiAgfVxufTtcblxudmFyIGlzTm9uZSA9IGZ1bmN0aW9uIGlzTm9uZSh2YWwpIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWwgPT09ICd1bmRlZmluZWQnIHx8ICF2YWwgJiYgdmFsICE9PSAwO1xufTsiLCJpbXBvcnQgeyBpc01pbmlBcHAsIGlzV2VDaGF0TWluaVByb2dyYW0sIGlzV2ViLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0t1YWlTaG91TWluaVByb2dyYW0sIGlzQmFpZHVTbWFydFByb2dyYW0gfSBmcm9tIFwiQHVuaS9lbnZcIjtcbmltcG9ydCBhbGlNaW5pQXBwTW9kdWxlIGZyb20gXCIuL2FsaS1taW5pYXBwL2luZGV4XCI7XG5pbXBvcnQgd2VDaGF0TW9kdWxlIGZyb20gXCIuL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCBrdWFpU2hvdU1vZHVsZSBmcm9tIFwiLi9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJhaUR1TW9kdWxlIGZyb20gXCIuL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmV4cG9ydCB2YXIgZ2V0U2Nyb2xsT2Zmc2V0ID0gZnVuY3Rpb24gZ2V0U2Nyb2xsT2Zmc2V0KHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuZ2V0U2Nyb2xsT2Zmc2V0KHNlbGVjdG9yKTtcbiAgfSBlbHNlIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUuZ2V0U2Nyb2xsT2Zmc2V0KHNlbGVjdG9yLCBjb250ZXh0KTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5nZXRTY3JvbGxPZmZzZXQoc2VsZWN0b3IsIGNvbnRleHQpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmdldFNjcm9sbE9mZnNldChzZWxlY3RvciwgY29udGV4dCk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUuZ2V0U2Nyb2xsT2Zmc2V0KHNlbGVjdG9yKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLmdldFNjcm9sbE9mZnNldChzZWxlY3RvciwgY29udGV4dCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yaZWxlbWVudOaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBnZXRCb3VuZGluZ0NsaWVudFJlY3QgPSBmdW5jdGlvbiBnZXRCb3VuZGluZ0NsaWVudFJlY3Qoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qoc2VsZWN0b3IpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qoc2VsZWN0b3IsIGNvbnRleHQpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmdldEJvdW5kaW5nQ2xpZW50UmVjdChzZWxlY3RvciwgY29udGV4dCk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHNlbGVjdG9yLCBjb250ZXh0KTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3Qoc2VsZWN0b3IpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KHNlbGVjdG9yLCBjb250ZXh0KTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJplbGVtZW505pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldFNjcm9sbE9mZnNldDogZ2V0U2Nyb2xsT2Zmc2V0LFxuICBnZXRCb3VuZGluZ0NsaWVudFJlY3Q6IGdldEJvdW5kaW5nQ2xpZW50UmVjdFxufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgZ2V0Qm91bmRpbmdDbGllbnRSZWN0ID0gbm9ybWFsaXplLmdldEJvdW5kaW5nQ2xpZW50UmVjdChmdW5jdGlvbiAoc2VsZWN0b3IsIGNvbnRleHQpIHtcbiAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkge1xuICAgIGNvbnRleHQgPSBrcztcbiAgfVxuXG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSA9IGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSB8fCBrcy5jcmVhdGVTZWxlY3RvclF1ZXJ5O1xuICAgIGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLnNlbGVjdEFsbChzZWxlY3RvcikuYm91bmRpbmdDbGllbnRSZWN0KCkuZXhlYyhmdW5jdGlvbiAocmV0KSB7XG4gICAgICByZXNvbHZlKHJldFswXSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG5leHBvcnQgZGVmYXVsdCBnZXRCb3VuZGluZ0NsaWVudFJlY3Q7IiwidmFyIGdldFNjcm9sbE9mZnNldCA9IGZ1bmN0aW9uIGdldFNjcm9sbE9mZnNldChzZWxlY3RvciwgY29udGV4dCkge1xuICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgY29udGV4dCA9IGtzO1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgY29udGV4dC5jcmVhdGVTZWxlY3RvclF1ZXJ5ID0gY29udGV4dC5jcmVhdGVTZWxlY3RvclF1ZXJ5IHx8IGtzLmNyZWF0ZVNlbGVjdG9yUXVlcnk7XG4gICAgY29udGV4dC5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuc2VsZWN0QWxsKHNlbGVjdG9yKS5zY3JvbGxPZmZzZXQoKS5leGVjKGZ1bmN0aW9uIChyZXQpIHtcbiAgICAgIHJlc29sdmUocmV0WzBdID8gcmV0WzBdLm1hcChmdW5jdGlvbiAoaSkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHNjcm9sbExlZnQ6IGkuc2Nyb2xsTGVmdCxcbiAgICAgICAgICBzY3JvbGxUb3A6IGkuc2Nyb2xsVG9wXG4gICAgICAgIH07XG4gICAgICB9KSA6IFtdKTtcbiAgICB9KTtcbiAgfSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRTY3JvbGxPZmZzZXQ7IiwiaW1wb3J0IGdldFNjcm9sbE9mZnNldCBmcm9tIFwiLi9nZXRTY3JvbGxPZmZzZXRcIjtcbmltcG9ydCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgZnJvbSBcIi4vZ2V0Qm91bmRpbmdDbGllbnRSZWN0XCI7XG5leHBvcnQgeyBnZXRTY3JvbGxPZmZzZXQsIGdldEJvdW5kaW5nQ2xpZW50UmVjdCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRTY3JvbGxPZmZzZXQ6IGdldFNjcm9sbE9mZnNldCxcbiAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0OiBnZXRCb3VuZGluZ0NsaWVudFJlY3Rcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIGdldEJvdW5kaW5nQ2xpZW50UmVjdCA9IG5vcm1hbGl6ZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoZnVuY3Rpb24gKHNlbGVjdG9yKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIHZhciBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICAgIHJlc29sdmUoZWwubGVuZ3RoID09PSAwID8gW10gOiBbXS5tYXAuY2FsbChlbCwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiBub2RlLmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICAgIH0pKTtcbiAgfSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IGdldEJvdW5kaW5nQ2xpZW50UmVjdDsiLCJ2YXIgZ2V0U2Nyb2xsT2Zmc2V0ID0gZnVuY3Rpb24gZ2V0U2Nyb2xsT2Zmc2V0KHNlbGVjdG9yKSB7XG4gIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSkge1xuICAgIHZhciBlbCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoc2VsZWN0b3IpO1xuICAgIHJlc29sdmUoZWwubGVuZ3RoID09PSAwID8gW10gOiBbXS5tYXAuY2FsbChlbCwgZnVuY3Rpb24gKG5vZGUpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHNjcm9sbFRvcDogbm9kZS5zY3JvbGxUb3AsXG4gICAgICAgIHNjcm9sbExlZnQ6IG5vZGUuc2Nyb2xsTGVmdFxuICAgICAgfTtcbiAgICB9KSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0U2Nyb2xsT2Zmc2V0OyIsImltcG9ydCBnZXRTY3JvbGxPZmZzZXQgZnJvbSBcIi4vZ2V0U2Nyb2xsT2Zmc2V0XCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdFwiO1xuZXhwb3J0IHsgZ2V0U2Nyb2xsT2Zmc2V0LCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0U2Nyb2xsT2Zmc2V0OiBnZXRTY3JvbGxPZmZzZXQsXG4gIGdldEJvdW5kaW5nQ2xpZW50UmVjdDogZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbnZhciBnZXRCb3VuZGluZ0NsaWVudFJlY3QgPSBub3JtYWxpemUuZ2V0Qm91bmRpbmdDbGllbnRSZWN0KGZ1bmN0aW9uIChzZWxlY3RvciwgY29udGV4dCkge1xuICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgY29udGV4dCA9IHd4O1xuICB9XG5cbiAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlKSB7XG4gICAgY29udGV4dC5jcmVhdGVTZWxlY3RvclF1ZXJ5ID0gY29udGV4dC5jcmVhdGVTZWxlY3RvclF1ZXJ5IHx8IHd4LmNyZWF0ZVNlbGVjdG9yUXVlcnk7XG4gICAgY29udGV4dC5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuc2VsZWN0QWxsKHNlbGVjdG9yKS5ib3VuZGluZ0NsaWVudFJlY3QoKS5leGVjKGZ1bmN0aW9uIChyZXQpIHtcbiAgICAgIHJlc29sdmUocmV0WzBdKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IGdldEJvdW5kaW5nQ2xpZW50UmVjdDsiLCJ2YXIgZ2V0U2Nyb2xsT2Zmc2V0ID0gZnVuY3Rpb24gZ2V0U2Nyb2xsT2Zmc2V0KHNlbGVjdG9yLCBjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHtcbiAgICBjb250ZXh0ID0gd3g7XG4gIH1cblxuICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUpIHtcbiAgICAvLyBjb25zdCBlbGU6IGFueSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpO1xuICAgIC8vIGlmICghZWxlIHx8ICFlbGUuX2ludGVybmFsKSB7XG4gICAgLy8gICBjb25zb2xlLndhcm4oJ2VsZW1lbnQgbm90IGZvdW5kJywgc2VsZWN0b3IpO1xuICAgIC8vICAgcmVzb2x2ZShbXSk7XG4gICAgLy8gfVxuICAgIGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSA9IGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSB8fCB3eC5jcmVhdGVTZWxlY3RvclF1ZXJ5O1xuICAgIGNvbnRleHQuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLnNlbGVjdEFsbChzZWxlY3Rvcikuc2Nyb2xsT2Zmc2V0KCkuZXhlYyhmdW5jdGlvbiAocmV0KSB7XG4gICAgICByZXNvbHZlKHJldFswXSA/IHJldFswXS5tYXAoZnVuY3Rpb24gKGkpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBzY3JvbGxMZWZ0OiBpLnNjcm9sbExlZnQsXG4gICAgICAgICAgc2Nyb2xsVG9wOiBpLnNjcm9sbFRvcFxuICAgICAgICB9O1xuICAgICAgfSkgOiBbXSk7XG4gICAgfSk7XG4gIH0pO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0U2Nyb2xsT2Zmc2V0OyIsImltcG9ydCBnZXRTY3JvbGxPZmZzZXQgZnJvbSBcIi4vZ2V0U2Nyb2xsT2Zmc2V0XCI7XG5pbXBvcnQgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldEJvdW5kaW5nQ2xpZW50UmVjdFwiO1xuZXhwb3J0IHsgZ2V0U2Nyb2xsT2Zmc2V0LCBnZXRCb3VuZGluZ0NsaWVudFJlY3QgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0U2Nyb2xsT2Zmc2V0OiBnZXRTY3JvbGxPZmZzZXQsXG4gIGdldEJvdW5kaW5nQ2xpZW50UmVjdDogZ2V0Qm91bmRpbmdDbGllbnRSZWN0XG59OyIsImV4cG9ydCB2YXIgaXNXZWIgPSB0eXBlb2Ygd2luZG93ICE9PSAndW5kZWZpbmVkJyAmJiAnb25sb2FkJyBpbiB3aW5kb3c7XG5leHBvcnQgdmFyIGlzTm9kZSA9IHR5cGVvZiBwcm9jZXNzICE9PSAndW5kZWZpbmVkJyAmJiAhIShwcm9jZXNzLnZlcnNpb25zICYmIHByb2Nlc3MudmVyc2lvbnMubm9kZSk7XG5leHBvcnQgdmFyIGlzV2VleCA9IHR5cGVvZiBXWEVudmlyb25tZW50ICE9PSAndW5kZWZpbmVkJyAmJiBXWEVudmlyb25tZW50LnBsYXRmb3JtICE9PSAnV2ViJztcbmV4cG9ydCB2YXIgaXNLcmFrZW4gPSB0eXBlb2YgX19rcmFrZW5fXyAhPT0gJ3VuZGVmaW5lZCc7XG5leHBvcnQgdmFyIGlzTWluaUFwcCA9IHR5cGVvZiBteSAhPT0gJ3VuZGVmaW5lZCcgJiYgbXkgIT09IG51bGwgJiYgdHlwZW9mIG15LmFsZXJ0ICE9PSAndW5kZWZpbmVkJztcbmV4cG9ydCB2YXIgaXNCeXRlRGFuY2VNaWNyb0FwcCA9IHR5cGVvZiB0dCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHQgIT09IG51bGwgJiYgdHlwZW9mIHR0LnNob3dUb2FzdCAhPT0gJ3VuZGVmaW5lZCc7XG5leHBvcnQgdmFyIGlzQmFpZHVTbWFydFByb2dyYW0gPSB0eXBlb2Ygc3dhbiAhPT0gJ3VuZGVmaW5lZCcgJiYgc3dhbiAhPT0gbnVsbCAmJiB0eXBlb2Ygc3dhbi5zaG93VG9hc3QgIT09ICd1bmRlZmluZWQnO1xuZXhwb3J0IHZhciBpc0t1YWlTaG91TWluaVByb2dyYW0gPSB0eXBlb2Yga3MgIT09ICd1bmRlZmluZWQnICYmIGtzICE9PSBudWxsICYmIHR5cGVvZiBrcy5zaG93VG9hc3QgIT09ICd1bmRlZmluZWQnOyAvLyBJbiB3ZWNoYXQgbWluaSBwcm9ncmFtLCB3eC5sb2dpbiBpcyBhIGZ1bmN0aW9uXG4vLyBJbiB3ZWNoYXQgbWluaSBwcm9wZ3JhbSB3ZWJ2aWV3LCB0aGVyZSBpcyBubyB3eC5sb2dpbiwgYnV0IGV4aXN0IHd4Lm1pbmlQcm9ncmFtXG4vLyBJbiBieXRlZGFuY2UgbWFpY3JvIGFwcCwgdGhlcmUgaXMgd3ggdmFyaWFibGUuXG4vLyBJbiBrdWFpc2hvdSBtaW5pIHByb2dyYW0sIHRoZXJlIGlzIHd4IHZhcmlhYmxlLlxuXG5leHBvcnQgdmFyIGlzV2VDaGF0TWluaVByb2dyYW0gPSAhaXNCeXRlRGFuY2VNaWNyb0FwcCAmJiB0eXBlb2Ygd3ggIT09ICd1bmRlZmluZWQnICYmIHd4ICE9PSBudWxsICYmICh0eXBlb2Ygd3gucmVxdWVzdCAhPT0gJ3VuZGVmaW5lZCcgfHwgdHlwZW9mIHd4Lm1pbmlQcm9ncmFtICE9PSAndW5kZWZpbmVkJyk7XG5leHBvcnQgdmFyIGlzUXVpY2tBcHAgPSB0eXBlb2YgZ2xvYmFsICE9PSAndW5kZWZpbmVkJyAmJiBnbG9iYWwgIT09IG51bGwgJiYgdHlwZW9mIGdsb2JhbC5jYWxsTmF0aXZlICE9PSAndW5kZWZpbmVkJyAmJiAhaXNXZWV4O1xuZXhwb3J0IGRlZmF1bHQge1xuICBpc1dlYjogaXNXZWIsXG4gIGlzTm9kZTogaXNOb2RlLFxuICBpc1dlZXg6IGlzV2VleCxcbiAgaXNLcmFrZW46IGlzS3Jha2VuLFxuICBpc01pbmlBcHA6IGlzTWluaUFwcCxcbiAgaXNCeXRlRGFuY2VNaWNyb0FwcDogaXNCeXRlRGFuY2VNaWNyb0FwcCxcbiAgaXNCYWlkdVNtYXJ0UHJvZ3JhbTogaXNCYWlkdVNtYXJ0UHJvZ3JhbSxcbiAgaXNLdWFpU2hvdU1pbmlQcm9ncmFtOiBpc0t1YWlTaG91TWluaVByb2dyYW0sXG4gIGlzV2VDaGF0TWluaVByb2dyYW06IGlzV2VDaGF0TWluaVByb2dyYW0sXG4gIGlzUXVpY2tBcHA6IGlzUXVpY2tBcHBcbn07IiwiZXhwb3J0IHZhciBDT05UQUlORVJfTkFNRSA9IHtcbiAgV0VDSEFUOiAnd2VjaGF0TWluaVByb2dyYW0nLFxuICBBTElQQVk6ICdhbGlNaW5pQXBwJyxcbiAgQllURTogJ2J5dGVkYW5jZU1pY3JvQXBwJyxcbiAgV0VCOiAnd2ViJyxcbiAgQkFJRFU6ICdiYWlkdVNtYXJ0UHJvZ3JhbScsXG4gIEtXQUk6ICdrdWFpc2hvdU1pbmlQcm9ncmFtJ1xufTsiLCJmdW5jdGlvbiBpc1VuZGVmKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgdmFyIGlzRGluZ2RpbmdNaW5pYXBwID0gIWlzVW5kZWYodHlwZW9mIGRkKSAmJiBkZCAhPT0gbnVsbCAmJiAhaXNVbmRlZih0eXBlb2YgZGQuYWxlcnQpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNpZnkoYXBpKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBwcm9taXNpZnlBcmcgPSBhcmc7XG4gICAgICBhcGkoX2V4dGVuZHMoe30sIHByb21pc2lmeUFyZywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5zdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuc3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiBvblN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuZmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25GYWlsOiBmdW5jdGlvbiBvbkZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uRmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uRmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuY29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uIG9uQ29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH07XG59IiwidmFyIF9leGNsdWRlZCA9IFtcIl9leHRcIl07XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IHZhciBzdHlsZU91dCA9IGZ1bmN0aW9uIHN0eWxlT3V0KG91dHB1dCwgb3JpZ2luYWxJbnB1dCwgb3JpZ2luYWxPdXRwdXQpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRwdXQsIHtcbiAgICBfb3JpZ2luYWw6IHtcbiAgICAgIGlucHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxJbnB1dCksXG4gICAgICAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g5a+55YWl5Y+C6L+b6KGMIGZvcm1hdCDkuYvlkI7nmoTnu5PmnpxcbiAgICAgIG91dHB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsT3V0cHV0KSAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g6L+U5Zue5YC8IGZvcm1hdCDkuYvliY3nmoTnu5PmnpxcblxuICAgIH1cbiAgfSk7XG59O1xuZXhwb3J0IHZhciBzdHlsZUluID0gZnVuY3Rpb24gc3R5bGVJbihvcHRpb25zLCBiYXNlTmFtZSkge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfcmVmJF9leHQgPSBfcmVmLl9leHQsXG4gICAgICBfZXh0ID0gX3JlZiRfZXh0ID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkX2V4dCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgX2V4dFtiYXNlTmFtZV0gfHwge30pO1xufTsiLCJpbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZG93bmxvYWRGaWxlID0gbm9ybWFsaXplLmRvd25sb2FkKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciB1cmwgPSBvcHRpb25zLnVybCxcbiAgICAgIGhlYWRlciA9IG9wdGlvbnMuaGVhZGVyLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG5cbiAgdmFyIF9kb3dubG9hZEZpbGUgPSBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLmRvd25sb2FkRmlsZSA6IG15LmRvd25sb2FkRmlsZTtcblxuICBfZG93bmxvYWRGaWxlKHtcbiAgICB1cmw6IHVybCxcbiAgICBoZWFkZXI6IGhlYWRlcixcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5BTElQQVkpO1xuZXhwb3J0IGRlZmF1bHQgZG93bmxvYWRGaWxlOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRJbmZvID0gbm9ybWFsaXplLmdldEluZm8oZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIGZpbGVQYXRoID0gb3B0aW9ucy5maWxlUGF0aCxcbiAgICAgIGRpZ2VzdEFsZ29yaXRobSA9IG9wdGlvbnMuZGlnZXN0QWxnb3JpdGhtLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHZhciBnZXRGaWxlSW5mbyA9IGlzRGluZ2RpbmdNaW5pYXBwID8gZGQuZ2V0RmlsZUluZm8gOiBteS5nZXRGaWxlSW5mbztcbiAgZ2V0RmlsZUluZm8oe1xuICAgIGFwRmlsZVBhdGg6IGZpbGVQYXRoLFxuICAgIGRpZ2VzdEFsZ29yaXRobTogZGlnZXN0QWxnb3JpdGhtLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcyhyZXMpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCBnZXRJbmZvOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRTYXZlZEluZm8gPSBub3JtYWxpemUuZ2V0U2F2ZWRJbmZvKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBmaWxlUGF0aCA9IG9wdGlvbnMuZmlsZVBhdGgsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgdmFyIGdldFNhdmVkRmlsZUluZm8gPSBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLmdldFNhdmVkRmlsZUluZm8gOiBteS5nZXRTYXZlZEZpbGVJbmZvO1xuICBnZXRTYXZlZEZpbGVJbmZvKHtcbiAgICBhcEZpbGVQYXRoOiBmaWxlUGF0aCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5BTElQQVkpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0U2F2ZWRJbmZvOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRTYXZlZExpc3QgPSBub3JtYWxpemUuZ2V0U2F2ZWRMaXN0KGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgdmFyIGdldFNhdmVkRmlsZUxpc3QgPSBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLmdldFNhdmVkRmlsZUxpc3QgOiBteS5nZXRTYXZlZEZpbGVMaXN0O1xuICBnZXRTYXZlZEZpbGVMaXN0KHtcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5BTElQQVkpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0U2F2ZWRMaXN0OyIsImltcG9ydCBvcGVuRG9jdW1lbnQgZnJvbSBcIi4vb3BlbkRvY3VtZW50XCI7XG5pbXBvcnQgcmVtb3ZlU2F2ZWQgZnJvbSBcIi4vcmVtb3ZlU2F2ZWRcIjtcbmltcG9ydCB1cGxvYWQgZnJvbSBcIi4vdXBsb2FkXCI7XG5pbXBvcnQgc2F2ZSBmcm9tIFwiLi9zYXZlXCI7XG5pbXBvcnQgZ2V0U2F2ZWRMaXN0IGZyb20gXCIuL2dldFNhdmVkTGlzdFwiO1xuaW1wb3J0IGdldFNhdmVkSW5mbyBmcm9tIFwiLi9nZXRTYXZlZEluZm9cIjtcbmltcG9ydCBnZXRJbmZvIGZyb20gXCIuL2dldEluZm9cIjtcbmltcG9ydCBkb3dubG9hZCBmcm9tIFwiLi9kb3dubG9hZFwiO1xuZXhwb3J0IHsgb3BlbkRvY3VtZW50LCByZW1vdmVTYXZlZCwgdXBsb2FkLCBzYXZlLCBnZXRTYXZlZExpc3QsIGdldFNhdmVkSW5mbywgZ2V0SW5mbywgZG93bmxvYWQgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgb3BlbkRvY3VtZW50OiBvcGVuRG9jdW1lbnQsXG4gIHJlbW92ZVNhdmVkOiByZW1vdmVTYXZlZCxcbiAgdXBsb2FkOiB1cGxvYWQsXG4gIHNhdmU6IHNhdmUsXG4gIGdldFNhdmVkTGlzdDogZ2V0U2F2ZWRMaXN0LFxuICBnZXRTYXZlZEluZm86IGdldFNhdmVkSW5mbyxcbiAgZ2V0SW5mbzogZ2V0SW5mbyxcbiAgZG93bmxvYWQ6IGRvd25sb2FkXG59OyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBvcGVuRG9jdW1lbnQgPSBub3JtYWxpemUub3BlbkRvY3VtZW50KGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBmaWxlUGF0aCA9IG9wdGlvbnMuZmlsZVBhdGgsXG4gICAgICBmaWxlVHlwZSA9IG9wdGlvbnMuZmlsZVR5cGUsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgdmFyIG9wZW5Eb2N1bWVudEFwaSA9IGlzRGluZ2RpbmdNaW5pYXBwID8gZGQub3BlbkRvY3VtZW50IDogbXkub3BlbkRvY3VtZW50O1xuICBvcGVuRG9jdW1lbnRBcGkoe1xuICAgIGZpbGVQYXRoOiBmaWxlUGF0aCxcbiAgICBmaWxlVHlwZTogZmlsZVR5cGUsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IG9wZW5Eb2N1bWVudDsiLCJpbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgcmVtb3ZlU2F2ZWQgPSBub3JtYWxpemUucmVtb3ZlU2F2ZWQoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIGZpbGVQYXRoID0gb3B0aW9ucy5maWxlUGF0aCxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB2YXIgcmVtb3ZlU2F2ZWRGaWxlID0gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5yZW1vdmVTYXZlZEZpbGUgOiBteS5yZW1vdmVTYXZlZEZpbGU7XG4gIHJlbW92ZVNhdmVkRmlsZSh7XG4gICAgYXBGaWxlUGF0aDogZmlsZVBhdGgsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IHJlbW92ZVNhdmVkOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzYXZlID0gbm9ybWFsaXplLnNhdmUoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHRlbXBGaWxlUGF0aCA9IG9wdGlvbnMudGVtcEZpbGVQYXRoLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHZhciBzYXZlRmlsZSA9IGlzRGluZ2RpbmdNaW5pYXBwID8gZGQuc2F2ZUZpbGUgOiBteS5zYXZlRmlsZTtcbiAgc2F2ZUZpbGUoe1xuICAgIGFwRmlsZVBhdGg6IHRlbXBGaWxlUGF0aCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5BTElQQVkpO1xuZXhwb3J0IGRlZmF1bHQgc2F2ZTsiLCJpbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgdXBsb2FkID0gbm9ybWFsaXplLnVwbG9hZChmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgdXJsID0gb3B0aW9ucy51cmwsXG4gICAgICBmaWxlUGF0aCA9IG9wdGlvbnMuZmlsZVBhdGgsXG4gICAgICBmaWxlTmFtZSA9IG9wdGlvbnMuZmlsZU5hbWUsXG4gICAgICBfb3B0aW9ucyRmaWxlVHlwZSA9IG9wdGlvbnMuZmlsZVR5cGUsXG4gICAgICBmaWxlVHlwZSA9IF9vcHRpb25zJGZpbGVUeXBlID09PSB2b2lkIDAgPyAnaW1hZ2UnIDogX29wdGlvbnMkZmlsZVR5cGUsXG4gICAgICBoaWRlTG9hZGluZyA9IG9wdGlvbnMuaGlkZUxvYWRpbmcsXG4gICAgICBoZWFkZXIgPSBvcHRpb25zLmhlYWRlcixcbiAgICAgIGZvcm1EYXRhID0gb3B0aW9ucy5mb3JtRGF0YSxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB2YXIgdXBsb2FkRmlsZSA9IGlzRGluZ2RpbmdNaW5pYXBwID8gZGQudXBsb2FkRmlsZSA6IG15LnVwbG9hZEZpbGU7XG4gIHZhciB0YXNrID0gdXBsb2FkRmlsZSh7XG4gICAgdXJsOiB1cmwsXG4gICAgZmlsZVBhdGg6IGZpbGVQYXRoLFxuICAgIGZpbGVOYW1lOiBmaWxlTmFtZSxcbiAgICBmaWxlVHlwZTogZmlsZVR5cGUsXG4gICAgaGlkZUxvYWRpbmc6IGhpZGVMb2FkaW5nLFxuICAgIGhlYWRlcjogaGVhZGVyLFxuICAgIGZvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKHRhc2sgJiYgdGFzay5vblByb2dyZXNzVXBkYXRlKSB7XG4gICAgLy8g5pSv5LuY5a6dIDEwLjEuMzUg5Y+K5Lul5LiK54mI5pys5pSv5oyBXG4gICAgdmFyIHByb2dyZXNzQ2FsbGJhY2sgPSBbXTtcbiAgICB0YXNrLm9uUHJvZ3Jlc3NVcGRhdGUoZnVuY3Rpb24gKF9yZWYpIHtcbiAgICAgIHZhciBwcm9ncmVzcyA9IF9yZWYucHJvZ3Jlc3MsXG4gICAgICAgICAgdG90YWxCeXRlc1dyaXR0ZW4gPSBfcmVmLnRvdGFsQnl0ZXNXcml0dGVuLFxuICAgICAgICAgIHRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGUgPSBfcmVmLnRvdGFsQnl0ZXNFeHBlY3RlZFRvV3JpdGU7XG4gICAgICB2YXIgcmVzID0ge1xuICAgICAgICBwcm9ncmVzczogcHJvZ3Jlc3MsXG4gICAgICAgIHRvdGFsQnl0ZXNTZW50OiB0b3RhbEJ5dGVzV3JpdHRlbixcbiAgICAgICAgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kOiB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1dyaXRlXG4gICAgICB9O1xuXG4gICAgICBpZiAocHJvZ3Jlc3NDYWxsYmFjay5sZW5ndGggPiAwKSB7XG4gICAgICAgIHByb2dyZXNzQ2FsbGJhY2suZm9yRWFjaChmdW5jdGlvbiAoeCkge1xuICAgICAgICAgIHJldHVybiB4KHJlcyk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiB7XG4gICAgICBhYm9ydDogZnVuY3Rpb24gYWJvcnQoKSB7XG4gICAgICAgIHRhc2suYWJvcnQoKTtcbiAgICAgIH0sXG4gICAgICBvblByb2dyZXNzVXBkYXRlOiBmdW5jdGlvbiBvblByb2dyZXNzVXBkYXRlKGNiKSB7XG4gICAgICAgIHByb2dyZXNzQ2FsbGJhY2sucHVzaChjYik7XG4gICAgICB9LFxuICAgICAgb2ZmUHJvZ3Jlc3NVcGRhdGU6IGZ1bmN0aW9uIG9mZlByb2dyZXNzVXBkYXRlKGNiKSB7XG4gICAgICAgIGlmIChwcm9ncmVzc0NhbGxiYWNrLmluZGV4T2YoY2IpICE9PSAtMSkge1xuICAgICAgICAgIHByb2dyZXNzQ2FsbGJhY2suc3BsaWNlKHByb2dyZXNzQ2FsbGJhY2suaW5kZXhPZihjYiksIDEpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IHVwbG9hZDsiLCJ2YXIgX2V4Y2x1ZGVkID0gW1widXJsXCIsIFwiaGVhZGVyXCIsIFwic3VjY2Vzc1wiLCBcImZhaWxcIiwgXCJjb21wbGV0ZVwiXTtcblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBkb3dubG9hZEZpbGUgPSBub3JtYWxpemUuZG93bmxvYWQoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHVybCA9IG9wdGlvbnMudXJsLFxuICAgICAgaGVhZGVyID0gb3B0aW9ucy5oZWFkZXIsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZSxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShvcHRpb25zLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBzd2FuLmRvd25sb2FkRmlsZShfZXh0ZW5kcyh7XG4gICAgdXJsOiB1cmwsXG4gICAgaGVhZGVyOiBoZWFkZXJcbiAgfSwgcmVzdCwge1xuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2Vzcyh7XG4gICAgICAgIHRlbXBGaWxlUGF0aDogcmVzLnRlbXBGaWxlUGF0aFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzLnRlbXBGaWxlUGF0aCA/IHtcbiAgICAgICAgdGVtcEZpbGVQYXRoOiByZXMudGVtcEZpbGVQYXRoXG4gICAgICB9IDogcmVzKTtcbiAgICB9XG4gIH0pKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IGRvd25sb2FkRmlsZTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRJbmZvID0gbm9ybWFsaXplLmdldEluZm8oZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIGZpbGVQYXRoID0gb3B0aW9ucy5maWxlUGF0aCxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICBzd2FuLmdldEZpbGVJbmZvKHtcbiAgICBmaWxlUGF0aDogZmlsZVBhdGgsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKHJlcyk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0SW5mbzsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRTYXZlZEluZm8gPSBub3JtYWxpemUuZ2V0U2F2ZWRJbmZvKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBmaWxlUGF0aCA9IG9wdGlvbnMuZmlsZVBhdGgsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgc3dhbi5nZXRGaWxlSW5mbyh7XG4gICAgZmlsZVBhdGg6IGZpbGVQYXRoLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcyhyZXMpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IGdldFNhdmVkSW5mbzsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRTYXZlZExpc3QgPSBub3JtYWxpemUuZ2V0U2F2ZWRMaXN0KGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgc3dhbi5nZXRTYXZlZEZpbGVMaXN0KHtcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCBnZXRTYXZlZExpc3Q7IiwiaW1wb3J0IG9wZW5Eb2N1bWVudCBmcm9tIFwiLi9vcGVuRG9jdW1lbnRcIjtcbmltcG9ydCByZW1vdmVTYXZlZCBmcm9tIFwiLi9yZW1vdmVTYXZlZFwiO1xuaW1wb3J0IHVwbG9hZCBmcm9tIFwiLi91cGxvYWRcIjtcbmltcG9ydCBzYXZlIGZyb20gXCIuL3NhdmVcIjtcbmltcG9ydCBnZXRTYXZlZExpc3QgZnJvbSBcIi4vZ2V0U2F2ZWRMaXN0XCI7XG5pbXBvcnQgZ2V0U2F2ZWRJbmZvIGZyb20gXCIuL2dldFNhdmVkSW5mb1wiO1xuaW1wb3J0IGdldEluZm8gZnJvbSBcIi4vZ2V0SW5mb1wiO1xuaW1wb3J0IGRvd25sb2FkIGZyb20gXCIuL2Rvd25sb2FkXCI7XG5leHBvcnQgeyBvcGVuRG9jdW1lbnQsIHJlbW92ZVNhdmVkLCB1cGxvYWQsIHNhdmUsIGdldFNhdmVkTGlzdCwgZ2V0U2F2ZWRJbmZvLCBnZXRJbmZvLCBkb3dubG9hZCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBvcGVuRG9jdW1lbnQ6IG9wZW5Eb2N1bWVudCxcbiAgcmVtb3ZlU2F2ZWQ6IHJlbW92ZVNhdmVkLFxuICB1cGxvYWQ6IHVwbG9hZCxcbiAgc2F2ZTogc2F2ZSxcbiAgZ2V0U2F2ZWRMaXN0OiBnZXRTYXZlZExpc3QsXG4gIGdldFNhdmVkSW5mbzogZ2V0U2F2ZWRJbmZvLFxuICBnZXRJbmZvOiBnZXRJbmZvLFxuICBkb3dubG9hZDogZG93bmxvYWRcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgb3BlbkRvY3VtZW50ID0gbm9ybWFsaXplLm9wZW5Eb2N1bWVudChmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgZmlsZVBhdGggPSBvcHRpb25zLmZpbGVQYXRoLFxuICAgICAgZmlsZVR5cGUgPSBvcHRpb25zLmZpbGVUeXBlLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHN3YW4ub3BlbkRvY3VtZW50KHtcbiAgICBmaWxlUGF0aDogZmlsZVBhdGgsXG4gICAgZmlsZVR5cGU6IGZpbGVUeXBlLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IG9wZW5Eb2N1bWVudDsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciByZW1vdmVTYXZlZCA9IG5vcm1hbGl6ZS5yZW1vdmVTYXZlZChmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgZmlsZVBhdGggPSBvcHRpb25zLmZpbGVQYXRoLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHN3YW4ucmVtb3ZlU2F2ZWRGaWxlKHtcbiAgICBmaWxlUGF0aDogZmlsZVBhdGgsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgcmVtb3ZlU2F2ZWQ7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc2F2ZSA9IG5vcm1hbGl6ZS5zYXZlKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciB0ZW1wRmlsZVBhdGggPSBvcHRpb25zLnRlbXBGaWxlUGF0aCxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICBzd2FuLnNhdmVGaWxlKHtcbiAgICB0ZW1wRmlsZVBhdGg6IHRlbXBGaWxlUGF0aCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCBzYXZlOyIsImltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIHVwbG9hZCA9IG5vcm1hbGl6ZS51cGxvYWQoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHVybCA9IG9wdGlvbnMudXJsLFxuICAgICAgZmlsZVBhdGggPSBvcHRpb25zLmZpbGVQYXRoLFxuICAgICAgZmlsZU5hbWUgPSBvcHRpb25zLmZpbGVOYW1lLFxuICAgICAgaGlkZUxvYWRpbmcgPSBvcHRpb25zLmhpZGVMb2FkaW5nLFxuICAgICAgaGVhZGVyID0gb3B0aW9ucy5oZWFkZXIsXG4gICAgICBmb3JtRGF0YSA9IG9wdGlvbnMuZm9ybURhdGEsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZSxcbiAgICAgIHRpbWVvdXQgPSBvcHRpb25zLnRpbWVvdXQ7XG4gIHJldHVybiBzd2FuLnVwbG9hZEZpbGUoe1xuICAgIHVybDogdXJsLFxuICAgIGZpbGVQYXRoOiBmaWxlUGF0aCxcbiAgICBuYW1lOiBmaWxlTmFtZSxcbiAgICBoaWRlTG9hZGluZzogaGlkZUxvYWRpbmcsXG4gICAgaGVhZGVyOiBoZWFkZXIsXG4gICAgdGltZW91dDogdGltZW91dCxcbiAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKHJlcyk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgdXBsb2FkOyIsInZhciBfZXhjbHVkZWQgPSBbXCJ1cmxcIiwgXCJoZWFkZXJcIiwgXCJzdWNjZXNzXCIsIFwiZmFpbFwiLCBcImNvbXBsZXRlXCJdO1xuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGRvd25sb2FkRmlsZSA9IG5vcm1hbGl6ZS5kb3dubG9hZChmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgdXJsID0gb3B0aW9ucy51cmwsXG4gICAgICBoZWFkZXIgPSBvcHRpb25zLmhlYWRlcixcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlLFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKG9wdGlvbnMsIF9leGNsdWRlZCk7XG5cbiAgcmV0dXJuIHR0LmRvd25sb2FkRmlsZShfZXh0ZW5kcyh7XG4gICAgdXJsOiB1cmwsXG4gICAgaGVhZGVyOiBoZWFkZXJcbiAgfSwgcmVzdCwge1xuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2Vzcyh7XG4gICAgICAgIHRlbXBGaWxlUGF0aDogcmVzLnRlbXBGaWxlUGF0aFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzLnRlbXBGaWxlUGF0aCA/IHtcbiAgICAgICAgdGVtcEZpbGVQYXRoOiByZXMudGVtcEZpbGVQYXRoXG4gICAgICB9IDogcmVzKTtcbiAgICB9XG4gIH0pKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgZG93bmxvYWRGaWxlOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdldEluZm8gPSBub3JtYWxpemUuZ2V0SW5mbyhmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgZmlsZVBhdGggPSBvcHRpb25zLmZpbGVQYXRoLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHR0LmdldEZpbGVJbmZvKHtcbiAgICBmaWxlUGF0aDogZmlsZVBhdGgsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKHJlcyk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCBnZXRJbmZvOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdldFNhdmVkSW5mbyA9IG5vcm1hbGl6ZS5nZXRTYXZlZEluZm8oZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIGZpbGVQYXRoID0gb3B0aW9ucy5maWxlUGF0aCxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB0dC5nZXRGaWxlSW5mbyh7XG4gICAgZmlsZVBhdGg6IGZpbGVQYXRoLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcyhyZXMpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0U2F2ZWRJbmZvOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdldFNhdmVkTGlzdCA9IG5vcm1hbGl6ZS5nZXRTYXZlZExpc3QoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB0dC5nZXRTYXZlZEZpbGVMaXN0KHtcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5CWVRFKTtcbmV4cG9ydCBkZWZhdWx0IGdldFNhdmVkTGlzdDsiLCJpbXBvcnQgb3BlbkRvY3VtZW50IGZyb20gXCIuL29wZW5Eb2N1bWVudFwiO1xuaW1wb3J0IHJlbW92ZVNhdmVkIGZyb20gXCIuL3JlbW92ZVNhdmVkXCI7XG5pbXBvcnQgdXBsb2FkIGZyb20gXCIuL3VwbG9hZFwiO1xuaW1wb3J0IHNhdmUgZnJvbSBcIi4vc2F2ZVwiO1xuaW1wb3J0IGdldFNhdmVkTGlzdCBmcm9tIFwiLi9nZXRTYXZlZExpc3RcIjtcbmltcG9ydCBnZXRTYXZlZEluZm8gZnJvbSBcIi4vZ2V0U2F2ZWRJbmZvXCI7XG5pbXBvcnQgZ2V0SW5mbyBmcm9tIFwiLi9nZXRJbmZvXCI7XG5pbXBvcnQgZG93bmxvYWQgZnJvbSBcIi4vZG93bmxvYWRcIjtcbmV4cG9ydCB7IG9wZW5Eb2N1bWVudCwgcmVtb3ZlU2F2ZWQsIHVwbG9hZCwgc2F2ZSwgZ2V0U2F2ZWRMaXN0LCBnZXRTYXZlZEluZm8sIGdldEluZm8sIGRvd25sb2FkIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIG9wZW5Eb2N1bWVudDogb3BlbkRvY3VtZW50LFxuICByZW1vdmVTYXZlZDogcmVtb3ZlU2F2ZWQsXG4gIHVwbG9hZDogdXBsb2FkLFxuICBzYXZlOiBzYXZlLFxuICBnZXRTYXZlZExpc3Q6IGdldFNhdmVkTGlzdCxcbiAgZ2V0U2F2ZWRJbmZvOiBnZXRTYXZlZEluZm8sXG4gIGdldEluZm86IGdldEluZm8sXG4gIGRvd25sb2FkOiBkb3dubG9hZFxufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBvcGVuRG9jdW1lbnQgPSBub3JtYWxpemUub3BlbkRvY3VtZW50KGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBmaWxlUGF0aCA9IG9wdGlvbnMuZmlsZVBhdGgsXG4gICAgICBmaWxlVHlwZSA9IG9wdGlvbnMuZmlsZVR5cGUsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgdHQub3BlbkRvY3VtZW50KHtcbiAgICBmaWxlUGF0aDogZmlsZVBhdGgsXG4gICAgZmlsZVR5cGU6IGZpbGVUeXBlLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgb3BlbkRvY3VtZW50OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHJlbW92ZVNhdmVkID0gbm9ybWFsaXplLnJlbW92ZVNhdmVkKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBmaWxlUGF0aCA9IG9wdGlvbnMuZmlsZVBhdGgsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgdHQucmVtb3ZlU2F2ZWRGaWxlKHtcbiAgICBmaWxlUGF0aDogZmlsZVBhdGgsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCByZW1vdmVTYXZlZDsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzYXZlID0gbm9ybWFsaXplLnNhdmUoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHRlbXBGaWxlUGF0aCA9IG9wdGlvbnMudGVtcEZpbGVQYXRoLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHR0LnNhdmVGaWxlKHtcbiAgICB0ZW1wRmlsZVBhdGg6IHRlbXBGaWxlUGF0aCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5CWVRFKTtcbmV4cG9ydCBkZWZhdWx0IHNhdmU7IiwiaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgdXBsb2FkID0gbm9ybWFsaXplLnVwbG9hZChmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgdXJsID0gb3B0aW9ucy51cmwsXG4gICAgICBmaWxlUGF0aCA9IG9wdGlvbnMuZmlsZVBhdGgsXG4gICAgICBmaWxlTmFtZSA9IG9wdGlvbnMuZmlsZU5hbWUsXG4gICAgICBoaWRlTG9hZGluZyA9IG9wdGlvbnMuaGlkZUxvYWRpbmcsXG4gICAgICBoZWFkZXIgPSBvcHRpb25zLmhlYWRlcixcbiAgICAgIGZvcm1EYXRhID0gb3B0aW9ucy5mb3JtRGF0YSxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICByZXR1cm4gdHQudXBsb2FkRmlsZSh7XG4gICAgdXJsOiB1cmwsXG4gICAgZmlsZVBhdGg6IGZpbGVQYXRoLFxuICAgIG5hbWU6IGZpbGVOYW1lLFxuICAgIGhpZGVMb2FkaW5nOiBoaWRlTG9hZGluZyxcbiAgICBoZWFkZXI6IGhlYWRlcixcbiAgICBmb3JtRGF0YTogZm9ybURhdGEsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKHJlcyk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCB1cGxvYWQ7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSBcIi4vX3V0aWxzL3Byb21pc2lmeVwiO1xuaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcbmV4cG9ydCB2YXIgbm9ybWFsaXplID0ge1xuICB1cGxvYWQ6IGZ1bmN0aW9uIHVwbG9hZChhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHZhciBERUZBVUxUX1JFUVVFU1RfT1BUSU9OUyA9IHtcbiAgICAgICAgaGlkZUxvYWRpbmc6IGZhbHNlXG4gICAgICB9O1xuXG4gICAgICB2YXIgYWZ0ZXJPcHRpb25zID0gX2V4dGVuZHMoe30sIERFRkFVTFRfUkVRVUVTVF9PUFRJT05TLCBzdHlsZUluKG9wdGlvbnMsIGNvbnRhaW5lck5hbWUpKTtcblxuICAgICAgcmV0dXJuIGFwaShhZnRlck9wdGlvbnMpO1xuICAgIH07XG4gIH0sXG4gIGRvd25sb2FkOiBmdW5jdGlvbiBkb3dubG9hZChhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgICB2YXIgZm9ybWF0UmVzID0gZnVuY3Rpb24gZm9ybWF0UmVzKHJlcykge1xuICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXMsIHtcbiAgICAgICAgdGVtcEZpbGVQYXRoOiByZXMudGVtcEZpbGVQYXRoIHx8IHJlcy5hcEZpbGVQYXRoXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICB2YXIgX29wdGlvbnMgPSBzdHlsZUluKG9wdGlvbnMsIGNvbnRhaW5lck5hbWUpO1xuXG4gICAgICB2YXIgREVGQVVMVF9SRVFVRVNUX09QVElPTlMgPSB7XG4gICAgICAgIHVybDogJydcbiAgICAgIH07XG5cbiAgICAgIHZhciBhZnRlck9wdGlvbnMgPSBfZXh0ZW5kcyh7fSwgREVGQVVMVF9SRVFVRVNUX09QVElPTlMsIF9vcHRpb25zLCB7XG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgX29wdGlvbnMuc3VjY2VzcyAmJiBfb3B0aW9ucy5zdWNjZXNzKGZvcm1hdFJlcyhyZXMpKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIF9vcHRpb25zLmNvbXBsZXRlICYmIF9vcHRpb25zLmNvbXBsZXRlKHJlcy50ZW1wRmlsZVBhdGggPyBmb3JtYXRSZXMocmVzKSA6IHJlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gYXBpKGFmdGVyT3B0aW9ucyk7XG4gICAgfTtcbiAgfSxcbiAgZ2V0SW5mbzogZnVuY3Rpb24gZ2V0SW5mbyhhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgICB2YXIgZm9ybWF0UmVzID0gZnVuY3Rpb24gZm9ybWF0UmVzKHJlcykge1xuICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXMsIHtcbiAgICAgICAgc2l6ZTogcmVzLnNpemVcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHZhciBfb3B0aW9ucyA9IHN0eWxlSW4ob3B0aW9ucywgY29udGFpbmVyTmFtZSk7XG5cbiAgICAgIHZhciBERUZBVUxUX1JFUVVFU1RfT1BUSU9OUyA9IHtcbiAgICAgICAgZmlsZVBhdGg6ICcnLFxuICAgICAgICBkaWdlc3RBbGdvcml0aG06ICdtZDUnXG4gICAgICB9O1xuXG4gICAgICB2YXIgYWZ0ZXJPcHRpb25zID0gX2V4dGVuZHMoe30sIERFRkFVTFRfUkVRVUVTVF9PUFRJT05TLCBfb3B0aW9ucywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIF9vcHRpb25zLnN1Y2Nlc3MgJiYgX29wdGlvbnMuc3VjY2Vzcyhmb3JtYXRSZXMocmVzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBfb3B0aW9ucy5jb21wbGV0ZSAmJiBfb3B0aW9ucy5jb21wbGV0ZShyZXMuc2l6ZSA/IGZvcm1hdFJlcyhyZXMpIDogcmVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShhZnRlck9wdGlvbnMpLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgICAgICByZXR1cm4gZm9ybWF0UmVzKHJlcyk7XG4gICAgICB9KTtcbiAgICB9O1xuICB9LFxuICBnZXRTYXZlZEluZm86IGZ1bmN0aW9uIGdldFNhdmVkSW5mbyhhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHZhciBfb3B0aW9ucyA9IHN0eWxlSW4ob3B0aW9ucywgY29udGFpbmVyTmFtZSk7XG5cbiAgICAgIHZhciBERUZBVUxUX1JFUVVFU1RfT1BUSU9OUyA9IHtcbiAgICAgICAgZmlsZVBhdGg6ICcnXG4gICAgICB9O1xuXG4gICAgICB2YXIgYWZ0ZXJPcHRpb25zID0gX2V4dGVuZHMoe30sIERFRkFVTFRfUkVRVUVTVF9PUFRJT05TLCBfb3B0aW9ucywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIF9vcHRpb25zLnN1Y2Nlc3MgJiYgX29wdGlvbnMuc3VjY2VzcyhyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgX29wdGlvbnMuY29tcGxldGUgJiYgX29wdGlvbnMuY29tcGxldGUocmVzKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShhZnRlck9wdGlvbnMpO1xuICAgIH07XG4gIH0sXG4gIGdldFNhdmVkTGlzdDogZnVuY3Rpb24gZ2V0U2F2ZWRMaXN0KGFwaSwgY29udGFpbmVyTmFtZSkge1xuICAgIHZhciBmb3JtYXRSZXMgPSBmdW5jdGlvbiBmb3JtYXRSZXMocmVzKSB7XG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHJlcywge1xuICAgICAgICBmaWxlTGlzdDogcmVzLmZpbGVMaXN0Lm1hcChmdW5jdGlvbiAoaSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICBzaXplOiBpLnNpemUsXG4gICAgICAgICAgICBjcmVhdGVUaW1lOiBpLmNyZWF0ZVRpbWUsXG4gICAgICAgICAgICBmaWxlUGF0aDogaS5maWxlUGF0aCB8fCBpLmFwRmlsZVBhdGhcbiAgICAgICAgICB9O1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgfTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdmFyIF9vcHRpb25zID0gc3R5bGVJbihvcHRpb25zLCBjb250YWluZXJOYW1lKTtcblxuICAgICAgdmFyIGFmdGVyT3B0aW9ucyA9IF9leHRlbmRzKHt9LCBfb3B0aW9ucywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIF9vcHRpb25zLnN1Y2Nlc3MgJiYgX29wdGlvbnMuc3VjY2Vzcyhmb3JtYXRSZXMocmVzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBfb3B0aW9ucy5jb21wbGV0ZSAmJiBfb3B0aW9ucy5jb21wbGV0ZShyZXMuZmlsZUxpc3QgPyBmb3JtYXRSZXMocmVzKSA6IHJlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoYWZ0ZXJPcHRpb25zKS50aGVuKGZvcm1hdFJlcyk7XG4gICAgfTtcbiAgfSxcbiAgc2F2ZTogZnVuY3Rpb24gc2F2ZShhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgICB2YXIgZm9ybWF0UmVzID0gZnVuY3Rpb24gZm9ybWF0UmVzKHJlcykge1xuICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXMsIHtcbiAgICAgICAgc2F2ZWRGaWxlUGF0aDogcmVzLnNhdmVkRmlsZVBhdGggfHwgcmVzLmFwRmlsZVBhdGhcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICAgIHZhciBfb3B0aW9ucyA9IHN0eWxlSW4ob3B0aW9ucywgY29udGFpbmVyTmFtZSk7XG5cbiAgICAgIHZhciBERUZBVUxUX1JFUVVFU1RfT1BUSU9OUyA9IHtcbiAgICAgICAgdGVtcEZpbGVQYXRoOiAnJ1xuICAgICAgfTtcblxuICAgICAgdmFyIGFmdGVyT3B0aW9ucyA9IF9leHRlbmRzKHt9LCBERUZBVUxUX1JFUVVFU1RfT1BUSU9OUywgX29wdGlvbnMsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBfb3B0aW9ucy5zdWNjZXNzICYmIF9vcHRpb25zLnN1Y2Nlc3MoZm9ybWF0UmVzKHJlcykpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgX29wdGlvbnMuY29tcGxldGUgJiYgX29wdGlvbnMuY29tcGxldGUocmVzLnNpemUgPyBmb3JtYXRSZXMocmVzKSA6IHJlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuXG4gICAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoYWZ0ZXJPcHRpb25zKS50aGVuKGZvcm1hdFJlcyk7XG4gICAgfTtcbiAgfSxcbiAgcmVtb3ZlU2F2ZWQ6IGZ1bmN0aW9uIHJlbW92ZVNhdmVkKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgdmFyIF9vcHRpb25zID0gc3R5bGVJbihvcHRpb25zLCBjb250YWluZXJOYW1lKTtcblxuICAgICAgdmFyIERFRkFVTFRfUkVRVUVTVF9PUFRJT05TID0ge1xuICAgICAgICBmaWxlUGF0aDogJydcbiAgICAgIH07XG5cbiAgICAgIHZhciBhZnRlck9wdGlvbnMgPSBfZXh0ZW5kcyh7fSwgREVGQVVMVF9SRVFVRVNUX09QVElPTlMsIF9vcHRpb25zKTtcblxuICAgICAgcmV0dXJuIHByb21pc2lmeShhcGkpKGFmdGVyT3B0aW9ucyk7XG4gICAgfTtcbiAgfSxcbiAgb3BlbkRvY3VtZW50OiBmdW5jdGlvbiBvcGVuRG9jdW1lbnQoYXBpLCBjb250YWluZXJOYW1lKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICB2YXIgX29wdGlvbnMgPSBzdHlsZUluKG9wdGlvbnMsIGNvbnRhaW5lck5hbWUpO1xuXG4gICAgICB2YXIgREVGQVVMVF9SRVFVRVNUX09QVElPTlMgPSB7XG4gICAgICAgIGZpbGVQYXRoOiAnJyxcbiAgICAgICAgZmlsZVR5cGU6ICdwZGYnXG4gICAgICB9O1xuXG4gICAgICB2YXIgYWZ0ZXJPcHRpb25zID0gX2V4dGVuZHMoe30sIERFRkFVTFRfUkVRVUVTVF9PUFRJT05TLCBfb3B0aW9ucyk7XG5cbiAgICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShhZnRlck9wdGlvbnMpO1xuICAgIH07XG4gIH1cbn07IiwiaW1wb3J0IHsgaXNNaW5pQXBwLCBpc1dlQ2hhdE1pbmlQcm9ncmFtLCBpc1dlYiwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtLCBpc0JhaWR1U21hcnRQcm9ncmFtIH0gZnJvbSBcIkB1bmkvZW52XCI7XG5pbXBvcnQgKiBhcyBhbGlNaW5pQXBwTW9kdWxlIGZyb20gXCIuL2FsaS1taW5pYXBwL2luZGV4XCI7XG5pbXBvcnQgKiBhcyB3ZUNoYXRNb2R1bGUgZnJvbSBcIi4vd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgKiBhcyBieXRlZGFuY2VNb2R1bGUgZnJvbSBcIi4vYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4XCI7XG5pbXBvcnQgKiBhcyB3ZWJNb2R1bGUgZnJvbSBcIi4vd2ViL2luZGV4XCI7XG5pbXBvcnQgKiBhcyBrdWFpU2hvdU1vZHVsZSBmcm9tIFwiLi9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0ICogYXMgYmFpRHVNb2R1bGUgZnJvbSBcIi4vYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4XCI7XG5leHBvcnQgdmFyIHVwbG9hZCA9IGZ1bmN0aW9uIHVwbG9hZChvcHRpb25zKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUudXBsb2FkKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS51cGxvYWQob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUudXBsb2FkKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLnVwbG9hZChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS51cGxvYWQob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS51cGxvYWQob3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5p77yadXBsb2Fk5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGRvd25sb2FkID0gZnVuY3Rpb24gZG93bmxvYWQob3B0aW9ucykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLmRvd25sb2FkKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5kb3dubG9hZChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5kb3dubG9hZChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5kb3dubG9hZChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5kb3dubG9hZChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLmRvd25sb2FkKG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQHVuae+8mmRvd25sb2Fk5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGdldEluZm8gPSBmdW5jdGlvbiBnZXRJbmZvKG9wdGlvbnMpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5nZXRJbmZvKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5nZXRJbmZvKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmdldEluZm8ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuZ2V0SW5mbyhvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5nZXRJbmZvKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuZ2V0SW5mbyhvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0B1bmnvvJpnZXRJbmZv5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGdldFNhdmVkSW5mbyA9IGZ1bmN0aW9uIGdldFNhdmVkSW5mbyhvcHRpb25zKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuZ2V0U2F2ZWRJbmZvKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5nZXRTYXZlZEluZm8ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuZ2V0U2F2ZWRJbmZvKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmdldFNhdmVkSW5mbyhvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5nZXRTYXZlZEluZm8ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5nZXRTYXZlZEluZm8ob3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5p77yaZ2V0U2F2ZWRJbmZv5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGdldFNhdmVkTGlzdCA9IGZ1bmN0aW9uIGdldFNhdmVkTGlzdChvcHRpb25zKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuZ2V0U2F2ZWRMaXN0KG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5nZXRTYXZlZExpc3Qob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuZ2V0U2F2ZWRMaXN0KG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmdldFNhdmVkTGlzdChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5nZXRTYXZlZExpc3Qob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5nZXRTYXZlZExpc3Qob3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5p77yaZ2V0U2F2ZWRMaXN05pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIHNhdmUgPSBmdW5jdGlvbiBzYXZlKG9wdGlvbnMpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5zYXZlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5zYXZlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLnNhdmUob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuc2F2ZShvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5zYXZlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuc2F2ZShvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0B1bmnvvJpzYXZl5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIHJlbW92ZVNhdmVkID0gZnVuY3Rpb24gcmVtb3ZlU2F2ZWQob3B0aW9ucykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLnJlbW92ZVNhdmVkKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5yZW1vdmVTYXZlZChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5yZW1vdmVTYXZlZChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5yZW1vdmVTYXZlZChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5yZW1vdmVTYXZlZChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLnJlbW92ZVNhdmVkKG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignQHVuae+8mnJlbW92ZVNhdmVk5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIG9wZW5Eb2N1bWVudCA9IGZ1bmN0aW9uIG9wZW5Eb2N1bWVudChvcHRpb25zKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUub3BlbkRvY3VtZW50KG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5vcGVuRG9jdW1lbnQob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUub3BlbkRvY3VtZW50KG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLm9wZW5Eb2N1bWVudChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5vcGVuRG9jdW1lbnQob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5vcGVuRG9jdW1lbnQob3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5p77yab3BlbkRvY3VtZW505pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIG9wZW5Eb2N1bWVudDogb3BlbkRvY3VtZW50LFxuICByZW1vdmVTYXZlZDogcmVtb3ZlU2F2ZWQsXG4gIHVwbG9hZDogdXBsb2FkLFxuICBzYXZlOiBzYXZlLFxuICBnZXRTYXZlZExpc3Q6IGdldFNhdmVkTGlzdCxcbiAgZ2V0U2F2ZWRJbmZvOiBnZXRTYXZlZEluZm8sXG4gIGdldEluZm86IGdldEluZm8sXG4gIGRvd25sb2FkOiBkb3dubG9hZFxufTsiLCJ2YXIgX2V4Y2x1ZGVkID0gW1widXJsXCIsIFwiaGVhZGVyXCIsIFwic3VjY2Vzc1wiLCBcImZhaWxcIiwgXCJjb21wbGV0ZVwiXTtcblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBkb3dubG9hZEZpbGUgPSBub3JtYWxpemUuZG93bmxvYWQoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHVybCA9IG9wdGlvbnMudXJsLFxuICAgICAgaGVhZGVyID0gb3B0aW9ucy5oZWFkZXIsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZSxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShvcHRpb25zLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBrcy5kb3dubG9hZEZpbGUoX2V4dGVuZHMoe1xuICAgIHVybDogdXJsLFxuICAgIGhlYWRlcjogaGVhZGVyXG4gIH0sIHJlc3QsIHtcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3Moe1xuICAgICAgICB0ZW1wRmlsZVBhdGg6IHJlcy50ZW1wRmlsZVBhdGhcbiAgICAgIH0pO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcy50ZW1wRmlsZVBhdGggPyB7XG4gICAgICAgIHRlbXBGaWxlUGF0aDogcmVzLnRlbXBGaWxlUGF0aFxuICAgICAgfSA6IHJlcyk7XG4gICAgfVxuICB9KSk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbmV4cG9ydCBkZWZhdWx0IGRvd25sb2FkRmlsZTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRJbmZvID0gbm9ybWFsaXplLmdldEluZm8oZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIGZpbGVQYXRoID0gb3B0aW9ucy5maWxlUGF0aCxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICBrcy5nZXRGaWxlSW5mbyh7XG4gICAgZmlsZVBhdGg6IGZpbGVQYXRoLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcyhyZXMpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0SW5mbzsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRTYXZlZEluZm8gPSBub3JtYWxpemUuZ2V0U2F2ZWRJbmZvKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBmaWxlUGF0aCA9IG9wdGlvbnMuZmlsZVBhdGgsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAga3MuZ2V0RmlsZUluZm8oe1xuICAgIGZpbGVQYXRoOiBmaWxlUGF0aCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbmV4cG9ydCBkZWZhdWx0IGdldFNhdmVkSW5mbzsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRTYXZlZExpc3QgPSBub3JtYWxpemUuZ2V0U2F2ZWRMaXN0KGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAga3MuZ2V0U2F2ZWRGaWxlTGlzdCh7XG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKHJlcyk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBnZXRTYXZlZExpc3Q7IiwiaW1wb3J0IG9wZW5Eb2N1bWVudCBmcm9tIFwiLi9vcGVuRG9jdW1lbnRcIjtcbmltcG9ydCByZW1vdmVTYXZlZCBmcm9tIFwiLi9yZW1vdmVTYXZlZFwiO1xuaW1wb3J0IHVwbG9hZCBmcm9tIFwiLi91cGxvYWRcIjtcbmltcG9ydCBzYXZlIGZyb20gXCIuL3NhdmVcIjtcbmltcG9ydCBnZXRTYXZlZExpc3QgZnJvbSBcIi4vZ2V0U2F2ZWRMaXN0XCI7XG5pbXBvcnQgZ2V0U2F2ZWRJbmZvIGZyb20gXCIuL2dldFNhdmVkSW5mb1wiO1xuaW1wb3J0IGdldEluZm8gZnJvbSBcIi4vZ2V0SW5mb1wiO1xuaW1wb3J0IGRvd25sb2FkIGZyb20gXCIuL2Rvd25sb2FkXCI7XG5leHBvcnQgeyBvcGVuRG9jdW1lbnQsIHJlbW92ZVNhdmVkLCB1cGxvYWQsIHNhdmUsIGdldFNhdmVkTGlzdCwgZ2V0U2F2ZWRJbmZvLCBnZXRJbmZvLCBkb3dubG9hZCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBvcGVuRG9jdW1lbnQ6IG9wZW5Eb2N1bWVudCxcbiAgcmVtb3ZlU2F2ZWQ6IHJlbW92ZVNhdmVkLFxuICB1cGxvYWQ6IHVwbG9hZCxcbiAgc2F2ZTogc2F2ZSxcbiAgZ2V0U2F2ZWRMaXN0OiBnZXRTYXZlZExpc3QsXG4gIGdldFNhdmVkSW5mbzogZ2V0U2F2ZWRJbmZvLFxuICBnZXRJbmZvOiBnZXRJbmZvLFxuICBkb3dubG9hZDogZG93bmxvYWRcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgb3BlbkRvY3VtZW50ID0gbm9ybWFsaXplLm9wZW5Eb2N1bWVudChmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgZmlsZVBhdGggPSBvcHRpb25zLmZpbGVQYXRoLFxuICAgICAgZmlsZVR5cGUgPSBvcHRpb25zLmZpbGVUeXBlLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIGtzLm9wZW5Eb2N1bWVudCh7XG4gICAgZmlsZVBhdGg6IGZpbGVQYXRoLFxuICAgIGZpbGVUeXBlOiBmaWxlVHlwZSxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbmV4cG9ydCBkZWZhdWx0IG9wZW5Eb2N1bWVudDsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciByZW1vdmVTYXZlZCA9IG5vcm1hbGl6ZS5yZW1vdmVTYXZlZChmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgZmlsZVBhdGggPSBvcHRpb25zLmZpbGVQYXRoLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIGtzLnJlbW92ZVNhdmVkRmlsZSh7XG4gICAgZmlsZVBhdGg6IGZpbGVQYXRoLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgcmVtb3ZlU2F2ZWQ7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc2F2ZSA9IG5vcm1hbGl6ZS5zYXZlKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciB0ZW1wRmlsZVBhdGggPSBvcHRpb25zLnRlbXBGaWxlUGF0aCxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICBrcy5zYXZlRmlsZSh7XG4gICAgdGVtcEZpbGVQYXRoOiB0ZW1wRmlsZVBhdGgsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKHJlcyk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBzYXZlOyIsImltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIHVwbG9hZCA9IG5vcm1hbGl6ZS51cGxvYWQoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHVybCA9IG9wdGlvbnMudXJsLFxuICAgICAgZmlsZVBhdGggPSBvcHRpb25zLmZpbGVQYXRoLFxuICAgICAgZmlsZU5hbWUgPSBvcHRpb25zLmZpbGVOYW1lLFxuICAgICAgaGlkZUxvYWRpbmcgPSBvcHRpb25zLmhpZGVMb2FkaW5nLFxuICAgICAgaGVhZGVyID0gb3B0aW9ucy5oZWFkZXIsXG4gICAgICBmb3JtRGF0YSA9IG9wdGlvbnMuZm9ybURhdGEsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZSxcbiAgICAgIHRpbWVvdXQgPSBvcHRpb25zLnRpbWVvdXQ7XG4gIHJldHVybiBrcy51cGxvYWRGaWxlKHtcbiAgICB1cmw6IHVybCxcbiAgICBmaWxlUGF0aDogZmlsZVBhdGgsXG4gICAgbmFtZTogZmlsZU5hbWUsXG4gICAgaGlkZUxvYWRpbmc6IGhpZGVMb2FkaW5nLFxuICAgIGhlYWRlcjogaGVhZGVyLFxuICAgIHRpbWVvdXQ6IHRpbWVvdXQsXG4gICAgZm9ybURhdGE6IGZvcm1EYXRhLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcyhyZXMpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgdXBsb2FkOyIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZnVuKF8pIHtcbiAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignQHVuae+8mmZpbGUuZG93bmxvYWRGaWxl5pqC5LiN5pSv5oyBJykpO1xufSIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZnVuKF8pIHtcbiAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignQHVuae+8mmZpbGUuZ2V0RmlsZUluZm/mmoLkuI3mlK/mjIEnKSk7XG59IiwiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBmdW4oXykge1xuICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdAdW5p77yaZmlsZS5nZXRTYXZlZEZpbGVJbmZv5pqC5LiN5pSv5oyBJykpO1xufSIsIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFycyAqL1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gZnVuKF8pIHtcbiAgcmV0dXJuIFByb21pc2UucmVqZWN0KG5ldyBFcnJvcignQHVuae+8mmZpbGUuZ2V0U2F2ZWRGaWxlTGlzdOaaguS4jeaUr+aMgScpKTtcbn0iLCJpbXBvcnQgb3BlbkRvY3VtZW50IGZyb20gXCIuL29wZW5Eb2N1bWVudFwiO1xuaW1wb3J0IHJlbW92ZVNhdmVkIGZyb20gXCIuL3JlbW92ZVNhdmVkXCI7XG5pbXBvcnQgdXBsb2FkIGZyb20gXCIuL3VwbG9hZFwiO1xuaW1wb3J0IHNhdmUgZnJvbSBcIi4vc2F2ZVwiO1xuaW1wb3J0IGdldFNhdmVkTGlzdCBmcm9tIFwiLi9nZXRTYXZlZExpc3RcIjtcbmltcG9ydCBnZXRTYXZlZEluZm8gZnJvbSBcIi4vZ2V0U2F2ZWRJbmZvXCI7XG5pbXBvcnQgZ2V0SW5mbyBmcm9tIFwiLi9nZXRJbmZvXCI7XG5pbXBvcnQgZG93bmxvYWQgZnJvbSBcIi4vZG93bmxvYWRcIjtcbmV4cG9ydCB7IG9wZW5Eb2N1bWVudCwgcmVtb3ZlU2F2ZWQsIHVwbG9hZCwgc2F2ZSwgZ2V0U2F2ZWRMaXN0LCBnZXRTYXZlZEluZm8sIGdldEluZm8sIGRvd25sb2FkIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIG9wZW5Eb2N1bWVudDogb3BlbkRvY3VtZW50LFxuICByZW1vdmVTYXZlZDogcmVtb3ZlU2F2ZWQsXG4gIHVwbG9hZDogdXBsb2FkLFxuICBzYXZlOiBzYXZlLFxuICBnZXRTYXZlZExpc3Q6IGdldFNhdmVkTGlzdCxcbiAgZ2V0U2F2ZWRJbmZvOiBnZXRTYXZlZEluZm8sXG4gIGdldEluZm86IGdldEluZm8sXG4gIGRvd25sb2FkOiBkb3dubG9hZFxufTsiLCIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZ1bihfKSB7XG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0B1bmnvvJpmaWxlLm9wZW5Eb2N1bWVudOaaguS4jeaUr+aMgScpKTtcbn0iLCIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZ1bihfKSB7XG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0B1bmnvvJpmaWxlLnJlbW92ZVNhdmVkRmlsZeaaguS4jeaUr+aMgScpKTtcbn0iLCIvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdW51c2VkLXZhcnMgKi9cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGZ1bihfKSB7XG4gIHJldHVybiBQcm9taXNlLnJlamVjdChuZXcgRXJyb3IoJ0B1bmnvvJpmaWxlLnNhdmVGaWxl5pqC5LiN5pSv5oyBJykpO1xufSIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG5mdW5jdGlvbiBiYXNlNjR0b0ZpbGUoZGF0YVVybCwgZmlsZU5hbWUpIHtcbiAgaWYgKGZpbGVOYW1lID09PSB2b2lkIDApIHtcbiAgICBmaWxlTmFtZSA9ICcnO1xuICB9XG5cbiAgdmFyIGRhdGFVUkx0b0Jsb2IgPSBmdW5jdGlvbiBkYXRhVVJMdG9CbG9iKGJhc2U2NERhdGEpIHtcbiAgICB2YXIgYXJyID0gYmFzZTY0RGF0YS5zcGxpdCgnLCcpO1xuICAgIHZhciBtaW1lU3RyID0gJ2ltYWdlL3BuZyc7XG4gICAgdmFyIG1pbWUgPSBhcnJbMF0ubWF0Y2goLzooLio/KTsvKTtcblxuICAgIGlmIChtaW1lKSB7XG4gICAgICBtaW1lU3RyID0gbWltZVsxXTtcbiAgICB9XG5cbiAgICB2YXIgYnN0ciA9IGF0b2IoYXJyWzFdKTtcbiAgICB2YXIgbiA9IGJzdHIubGVuZ3RoO1xuICAgIHZhciB1OGFyciA9IG5ldyBVaW50OEFycmF5KG4pO1xuXG4gICAgd2hpbGUgKG4tLSkge1xuICAgICAgdThhcnJbbl0gPSBic3RyLmNoYXJDb2RlQXQobik7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5ldyBCbG9iKFt1OGFycl0sIHtcbiAgICAgIHR5cGU6IG1pbWVTdHJcbiAgICB9KTtcbiAgfTtcblxuICB2YXIgYmxvYlRvRmlsZSA9IGZ1bmN0aW9uIGJsb2JUb0ZpbGUodGhlQmxvYiwgZmlsZW5hbWUpIHtcbiAgICB0aGVCbG9iLmxhc3RNb2RpZmllZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAgIHRoZUJsb2IubmFtZSA9IGZpbGVuYW1lO1xuICAgIHJldHVybiB0aGVCbG9iO1xuICB9O1xuXG4gIHZhciBibG9iID0gZGF0YVVSTHRvQmxvYihkYXRhVXJsKTtcbiAgdmFyIGZpbGUgPSBibG9iVG9GaWxlKGJsb2IsIGZpbGVOYW1lKTtcbiAgcmV0dXJuIGZpbGU7XG59XG5cbmZ1bmN0aW9uIGdldEhlYWRlck1hcCh4aHIpIHtcbiAgdmFyIGhlYWRlcnMgPSB4aHIuZ2V0QWxsUmVzcG9uc2VIZWFkZXJzKCk7XG4gIHZhciBhcnIgPSBoZWFkZXJzLnRyaW0oKS5zcGxpdCgvW1xcclxcbl0rLyk7XG4gIHZhciBoZWFkZXJNYXAgPSB7fTtcbiAgYXJyLmZvckVhY2goZnVuY3Rpb24gKGxpbmUpIHtcbiAgICB2YXIgcGFydHMgPSBsaW5lLnNwbGl0KCc6ICcpO1xuXG4gICAgdmFyIF9oZWFkZXIgPSBwYXJ0cy5zaGlmdCgpO1xuXG4gICAgdmFyIHZhbHVlID0gcGFydHMuam9pbignOiAnKTtcbiAgICBoZWFkZXJNYXBbX2hlYWRlcl0gPSB2YWx1ZTtcbiAgfSk7XG4gIHJldHVybiBoZWFkZXJNYXA7XG59XG5cbmZ1bmN0aW9uIHVwbG9hZEZpbGUocGFyYW0pIHtcbiAgdmFyIGZpbGVQYXRoID0gcGFyYW0uZmlsZVBhdGgsXG4gICAgICBmb3JtRGF0YSA9IHBhcmFtLmZvcm1EYXRhLFxuICAgICAgc3VjY2VzcyA9IHBhcmFtLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gcGFyYW0uZmFpbCxcbiAgICAgIGNvbXBsZXRlID0gcGFyYW0uY29tcGxldGU7XG4gIHZhciBmaWxlID0gdHlwZW9mIGZpbGVQYXRoID09PSAnc3RyaW5nJyA/IGJhc2U2NHRvRmlsZShmaWxlUGF0aCkgOiBmaWxlUGF0aDtcbiAgdmFyIGJvZHkgPSBuZXcgRm9ybURhdGEoKTtcblxuICBpZiAoZm9ybURhdGEpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gZm9ybURhdGEpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZm9ybURhdGEsIGtleSkpIHtcbiAgICAgICAgYm9keS5hcHBlbmQoa2V5LCBmb3JtRGF0YVtrZXldKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBib2R5LmFwcGVuZChwYXJhbS5maWxlTmFtZSB8fCAnZmlsZScsIGZpbGUpO1xuXG4gIHZhciBoZWFkZXIgPSBfZXh0ZW5kcyh7XG4gICAgQWNjZXB0OiAnYXBwbGljYXRpb24vanNvbiwgdGV4dC9wbGFpbiwgKi8qJ1xuICB9LCBwYXJhbS5oZWFkZXIgfHwge30pOyAvLyBpbml0aWFsaXplIHhoclxuXG5cbiAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICB2YXIgaGVhZGVyc1JlY2VpdmVkQ2FsbGJhY2sgPSBbXTtcblxuICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgIC8vIGhlYWRlciByZWNlaXZlZFxuICAgIGlmICh4aHIgJiYgeGhyLnJlYWR5U3RhdGUgPT09IDIgJiYgaGVhZGVyc1JlY2VpdmVkQ2FsbGJhY2subGVuZ3RoID4gMCkge1xuICAgICAgdmFyIGhlYWRlcnMgPSBnZXRIZWFkZXJNYXAoeGhyKTtcbiAgICAgIGhlYWRlcnNSZWNlaXZlZENhbGxiYWNrLmZvckVhY2goZnVuY3Rpb24gKHgpIHtcbiAgICAgICAgcmV0dXJuIHgoaGVhZGVycyk7XG4gICAgICB9KTtcbiAgICB9XG4gIH07IC8vIFN1Y2Nlc3NcblxuXG4gIHhoci5vbmxvYWQgPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgIGRhdGE6IHhoci5yZXNwb25zZSxcbiAgICAgIHN0YXR1c0NvZGU6IHhoci5zdGF0dXMsXG4gICAgICBlcnJNc2c6ICd1cGxvYWRGaWxlOm9rJyxcbiAgICAgIGhlYWRlcjogZ2V0SGVhZGVyTWFwKHhocilcbiAgICB9O1xuICAgIHN1Y2Nlc3MgJiYgc3VjY2VzcyhyZXN1bHQpO1xuICAgIGNvbXBsZXRlICYmIGNvbXBsZXRlKHJlc3VsdCk7XG4gIH07IC8vIEVycm9yc1xuXG5cbiAgeGhyLm9uZXJyb3IgPSBmdW5jdGlvbiAoKSB7XG4gICAgZmFpbCAmJiBmYWlsKHtcbiAgICAgIGVyck1zZzogJ3VwbG9hZEZpbGU6ZmFpbCBlcnJvcidcbiAgICB9KTtcbiAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZSh7XG4gICAgICBlcnJNc2c6ICd1cGxvYWRGaWxlOmZhaWwgZXJyb3InXG4gICAgfSk7XG4gIH07XG5cbiAgeGhyLm9uYWJvcnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgZmFpbCAmJiBmYWlsKHtcbiAgICAgIGVyck1zZzogJ3VwbG9hZEZpbGU6ZmFpbCBhYm9ydCdcbiAgICB9KTtcbiAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZSh7XG4gICAgICBlcnJNc2c6ICd1cGxvYWRGaWxlOmZhaWwgYWJvcnQnXG4gICAgfSk7XG4gIH07IC8vIFByb2dyZXNzIGV2ZW50XG5cblxuICB2YXIgcHJvZ3Jlc3NDYWxsYmFjayA9IFtdO1xuXG4gIHhoci5vbnByb2dyZXNzID0gZnVuY3Rpb24gKGV2dCkge1xuICAgIGlmIChwcm9ncmVzc0NhbGxiYWNrLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB7XG4gICAgICBwcm9ncmVzczogMCxcbiAgICAgIHRvdGFsQnl0ZXNTZW50OiAwLFxuICAgICAgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kOiAwXG4gICAgfTtcblxuICAgIGlmIChldnQubGVuZ3RoQ29tcHV0YWJsZSkge1xuICAgICAgcmVzLnRvdGFsQnl0ZXNTZW50ID0gZXZ0LmxvYWRlZDtcbiAgICAgIHJlcy50b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmQgPSBldnQudG90YWw7XG4gICAgICByZXMucHJvZ3Jlc3MgPSBNYXRoLmZsb29yKDEwMCAqIGV2dC5sb2FkZWQgLyBldnQudG90YWwpO1xuICAgIH1cblxuICAgIHByb2dyZXNzQ2FsbGJhY2suZm9yRWFjaChmdW5jdGlvbiAoeCkge1xuICAgICAgcmV0dXJuIHgocmVzKTtcbiAgICB9KTtcbiAgfTsgLy8gY2hlY2sgaWYgbmVlZCBhZGQgd2l0aENyZWRlbnRpYWxzXG5cblxuICBpZiAodHlwZW9mIHBhcmFtLndpdGhDcmVkZW50aWFscyA9PT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAocGFyYW0udXJsLmluZGV4T2Yod2luZG93LmxvY2F0aW9uLmhvc3QpID09PSAtMSkge1xuICAgICAgeGhyLndpdGhDcmVkZW50aWFscyA9IHRydWU7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIHhoci53aXRoQ3JlZGVudGlhbHMgPSBwYXJhbS53aXRoQ3JlZGVudGlhbHM7XG4gIH1cblxuICB4aHIub3BlbignUE9TVCcsIHBhcmFtLnVybCwgdHJ1ZSk7XG5cbiAgZm9yICh2YXIgaGVhZGVyS2V5IGluIGhlYWRlcikge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoaGVhZGVyLCBoZWFkZXJLZXkpKSB7XG4gICAgICB4aHIuc2V0UmVxdWVzdEhlYWRlcihoZWFkZXJLZXksIFN0cmluZyhoZWFkZXJbaGVhZGVyS2V5XSkpO1xuICAgIH1cbiAgfSAvLyB0aW1lb3V0XG5cblxuICBpZiAocGFyYW0udGltZW91dCkge1xuICAgIHhoci50aW1lb3V0ID0gcGFyYW0udGltZW91dDtcblxuICAgIHhoci5vbnRpbWVvdXQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICBmYWlsICYmIGZhaWwoe1xuICAgICAgICBlcnJNc2c6ICd1cGxvYWRGaWxlOmZhaWwgdGltZW91dCdcbiAgICAgIH0pO1xuICAgICAgY29tcGxldGUgJiYgY29tcGxldGUoe1xuICAgICAgICBlcnJNc2c6ICd1cGxvYWRGaWxlOmZhaWwgdGltZW91dCdcbiAgICAgIH0pO1xuICAgIH07XG4gIH0gLy8gc2VuZCByZXF1ZXN0XG5cblxuICB4aHIuc2VuZChib2R5KTtcbiAgcmV0dXJuIHtcbiAgICBhYm9ydDogZnVuY3Rpb24gYWJvcnQoKSB7XG4gICAgICB4aHIuYWJvcnQoKTtcbiAgICB9LFxuICAgIG9uUHJvZ3Jlc3NVcGRhdGU6IGZ1bmN0aW9uIG9uUHJvZ3Jlc3NVcGRhdGUoY2IpIHtcbiAgICAgIHByb2dyZXNzQ2FsbGJhY2sucHVzaChjYik7XG4gICAgfSxcbiAgICBvZmZQcm9ncmVzc1VwZGF0ZTogZnVuY3Rpb24gb2ZmUHJvZ3Jlc3NVcGRhdGUoY2IpIHtcbiAgICAgIGlmIChwcm9ncmVzc0NhbGxiYWNrLmluZGV4T2YoY2IpICE9PSAtMSkge1xuICAgICAgICBwcm9ncmVzc0NhbGxiYWNrLnNwbGljZShwcm9ncmVzc0NhbGxiYWNrLmluZGV4T2YoY2IpLCAxKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIG9uSGVhZGVyc1JlY2VpdmVkOiBmdW5jdGlvbiBvbkhlYWRlcnNSZWNlaXZlZChjYikge1xuICAgICAgaGVhZGVyc1JlY2VpdmVkQ2FsbGJhY2sucHVzaChjYik7XG4gICAgfSxcbiAgICBvZmZIZWFkZXJzUmVjZWl2ZWQ6IGZ1bmN0aW9uIG9mZkhlYWRlcnNSZWNlaXZlZChjYikge1xuICAgICAgaWYgKGhlYWRlcnNSZWNlaXZlZENhbGxiYWNrLmluZGV4T2YoY2IpICE9PSAtMSkge1xuICAgICAgICBoZWFkZXJzUmVjZWl2ZWRDYWxsYmFjay5zcGxpY2UoaGVhZGVyc1JlY2VpdmVkQ2FsbGJhY2suaW5kZXhPZihjYiksIDEpO1xuICAgICAgfVxuICAgIH1cbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbm9ybWFsaXplLnVwbG9hZCh1cGxvYWRGaWxlLCBDT05UQUlORVJfTkFNRS5XRUIpOyIsInZhciBfZXhjbHVkZWQgPSBbXCJ1cmxcIiwgXCJoZWFkZXJcIiwgXCJzdWNjZXNzXCIsIFwiZmFpbFwiLCBcImNvbXBsZXRlXCJdO1xuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGRvd25sb2FkRmlsZSA9IG5vcm1hbGl6ZS5kb3dubG9hZChmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgdXJsID0gb3B0aW9ucy51cmwsXG4gICAgICBoZWFkZXIgPSBvcHRpb25zLmhlYWRlcixcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlLFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKG9wdGlvbnMsIF9leGNsdWRlZCk7XG5cbiAgcmV0dXJuIHd4LmRvd25sb2FkRmlsZShfZXh0ZW5kcyh7XG4gICAgdXJsOiB1cmwsXG4gICAgaGVhZGVyOiBoZWFkZXJcbiAgfSwgcmVzdCwge1xuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2Vzcyh7XG4gICAgICAgIHRlbXBGaWxlUGF0aDogcmVzLnRlbXBGaWxlUGF0aFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzLnRlbXBGaWxlUGF0aCA/IHtcbiAgICAgICAgdGVtcEZpbGVQYXRoOiByZXMudGVtcEZpbGVQYXRoXG4gICAgICB9IDogcmVzKTtcbiAgICB9XG4gIH0pKTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCBkb3dubG9hZEZpbGU7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ2V0SW5mbyA9IG5vcm1hbGl6ZS5nZXRJbmZvKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBmaWxlUGF0aCA9IG9wdGlvbnMuZmlsZVBhdGgsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgd3guZ2V0RmlsZUluZm8oe1xuICAgIGZpbGVQYXRoOiBmaWxlUGF0aCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0SW5mbzsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRTYXZlZEluZm8gPSBub3JtYWxpemUuZ2V0U2F2ZWRJbmZvKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBmaWxlUGF0aCA9IG9wdGlvbnMuZmlsZVBhdGgsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgd3guZ2V0RmlsZUluZm8oe1xuICAgIGZpbGVQYXRoOiBmaWxlUGF0aCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0U2F2ZWRJbmZvOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdldFNhdmVkTGlzdCA9IG5vcm1hbGl6ZS5nZXRTYXZlZExpc3QoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB3eC5nZXRTYXZlZEZpbGVMaXN0KHtcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0U2F2ZWRMaXN0OyIsImltcG9ydCBvcGVuRG9jdW1lbnQgZnJvbSBcIi4vb3BlbkRvY3VtZW50XCI7XG5pbXBvcnQgcmVtb3ZlU2F2ZWQgZnJvbSBcIi4vcmVtb3ZlU2F2ZWRcIjtcbmltcG9ydCB1cGxvYWQgZnJvbSBcIi4vdXBsb2FkXCI7XG5pbXBvcnQgc2F2ZSBmcm9tIFwiLi9zYXZlXCI7XG5pbXBvcnQgZ2V0U2F2ZWRMaXN0IGZyb20gXCIuL2dldFNhdmVkTGlzdFwiO1xuaW1wb3J0IGdldFNhdmVkSW5mbyBmcm9tIFwiLi9nZXRTYXZlZEluZm9cIjtcbmltcG9ydCBnZXRJbmZvIGZyb20gXCIuL2dldEluZm9cIjtcbmltcG9ydCBkb3dubG9hZCBmcm9tIFwiLi9kb3dubG9hZFwiO1xuZXhwb3J0IHsgb3BlbkRvY3VtZW50LCByZW1vdmVTYXZlZCwgdXBsb2FkLCBzYXZlLCBnZXRTYXZlZExpc3QsIGdldFNhdmVkSW5mbywgZ2V0SW5mbywgZG93bmxvYWQgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgb3BlbkRvY3VtZW50OiBvcGVuRG9jdW1lbnQsXG4gIHJlbW92ZVNhdmVkOiByZW1vdmVTYXZlZCxcbiAgdXBsb2FkOiB1cGxvYWQsXG4gIHNhdmU6IHNhdmUsXG4gIGdldFNhdmVkTGlzdDogZ2V0U2F2ZWRMaXN0LFxuICBnZXRTYXZlZEluZm86IGdldFNhdmVkSW5mbyxcbiAgZ2V0SW5mbzogZ2V0SW5mbyxcbiAgZG93bmxvYWQ6IGRvd25sb2FkXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIG9wZW5Eb2N1bWVudCA9IG5vcm1hbGl6ZS5vcGVuRG9jdW1lbnQoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIGZpbGVQYXRoID0gb3B0aW9ucy5maWxlUGF0aCxcbiAgICAgIGZpbGVUeXBlID0gb3B0aW9ucy5maWxlVHlwZSxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB3eC5vcGVuRG9jdW1lbnQoe1xuICAgIGZpbGVQYXRoOiBmaWxlUGF0aCxcbiAgICBmaWxlVHlwZTogZmlsZVR5cGUsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IG9wZW5Eb2N1bWVudDsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciByZW1vdmVTYXZlZCA9IG5vcm1hbGl6ZS5yZW1vdmVTYXZlZChmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgZmlsZVBhdGggPSBvcHRpb25zLmZpbGVQYXRoLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHd4LnJlbW92ZVNhdmVkRmlsZSh7XG4gICAgZmlsZVBhdGg6IGZpbGVQYXRoLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCByZW1vdmVTYXZlZDsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzYXZlID0gbm9ybWFsaXplLnNhdmUoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHRlbXBGaWxlUGF0aCA9IG9wdGlvbnMudGVtcEZpbGVQYXRoLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHd4LnNhdmVGaWxlKHtcbiAgICB0ZW1wRmlsZVBhdGg6IHRlbXBGaWxlUGF0aCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuZXhwb3J0IGRlZmF1bHQgc2F2ZTsiLCJpbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbnZhciB1cGxvYWQgPSBub3JtYWxpemUudXBsb2FkKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciB1cmwgPSBvcHRpb25zLnVybCxcbiAgICAgIGZpbGVQYXRoID0gb3B0aW9ucy5maWxlUGF0aCxcbiAgICAgIGZpbGVOYW1lID0gb3B0aW9ucy5maWxlTmFtZSxcbiAgICAgIGhpZGVMb2FkaW5nID0gb3B0aW9ucy5oaWRlTG9hZGluZyxcbiAgICAgIGhlYWRlciA9IG9wdGlvbnMuaGVhZGVyLFxuICAgICAgZm9ybURhdGEgPSBvcHRpb25zLmZvcm1EYXRhLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGUsXG4gICAgICB0aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0O1xuICByZXR1cm4gd3gudXBsb2FkRmlsZSh7XG4gICAgdXJsOiB1cmwsXG4gICAgZmlsZVBhdGg6IGZpbGVQYXRoLFxuICAgIG5hbWU6IGZpbGVOYW1lLFxuICAgIGhpZGVMb2FkaW5nOiBoaWRlTG9hZGluZyxcbiAgICBoZWFkZXI6IGhlYWRlcixcbiAgICB0aW1lb3V0OiB0aW1lb3V0LFxuICAgIGZvcm1EYXRhOiBmb3JtRGF0YSxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuZXhwb3J0IGRlZmF1bHQgdXBsb2FkOyIsImV4cG9ydCB2YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07IiwiZnVuY3Rpb24gaXNVbmRlZih0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSAndW5kZWZpbmVkJztcbn1cblxuZXhwb3J0IHZhciBpc0RpbmdkaW5nTWluaWFwcCA9ICFpc1VuZGVmKHR5cGVvZiBkZCkgJiYgZGQgIT09IG51bGwgJiYgIWlzVW5kZWYodHlwZW9mIGRkLmFsZXJ0KTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzaWZ5KGFwaSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcHJvbWlzaWZ5QXJnID0gYXJnO1xuICAgICAgYXBpKF9leHRlbmRzKHt9LCBwcm9taXNpZnlBcmcsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuc3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gb25TdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5mYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRmFpbDogZnVuY3Rpb24gb25GYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5jb21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbiBvbkNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25Db21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9O1xufSIsInZhciBfZXhjbHVkZWQgPSBbXCJfZXh0XCJdO1xuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCB2YXIgc3R5bGVPdXQgPSBmdW5jdGlvbiBzdHlsZU91dChvdXRwdXQsIG9yaWdpbmFsSW5wdXQsIG9yaWdpbmFsT3V0cHV0KSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0cHV0LCB7XG4gICAgX29yaWdpbmFsOiB7XG4gICAgICBpbnB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsSW5wdXQpLFxuICAgICAgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOWvueWFpeWPgui/m+ihjCBmb3JtYXQg5LmL5ZCO55qE57uT5p6cXG4gICAgICBvdXRwdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbE91dHB1dCkgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOi/lOWbnuWAvCBmb3JtYXQg5LmL5YmN55qE57uT5p6cXG5cbiAgICB9XG4gIH0pO1xufTtcbmV4cG9ydCB2YXIgc3R5bGVJbiA9IGZ1bmN0aW9uIHN0eWxlSW4ob3B0aW9ucywgYmFzZU5hbWUpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgX3JlZiRfZXh0ID0gX3JlZi5fZXh0LFxuICAgICAgX2V4dCA9IF9yZWYkX2V4dCA9PT0gdm9pZCAwID8ge30gOiBfcmVmJF9leHQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcblxuICByZXR1cm4gX2V4dGVuZHMoe30sIHJlc3QsIF9leHRbYmFzZU5hbWVdIHx8IHt9KTtcbn07IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIGNob29zZUltYWdlID0gbm9ybWFsaXplLmNob29zZUltYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLmNob29zZUltYWdlKGFyZ3MpIDogbXkuY2hvb3NlSW1hZ2UoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5BTElQQVkpO1xuZXhwb3J0IGRlZmF1bHQgY2hvb3NlSW1hZ2U7IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIGNvbXByZXNzSW1hZ2UgPSBub3JtYWxpemUuY29tcHJlc3NJbWFnZShmdW5jdGlvbiAoYXJncykge1xuICBpZiAoaXNEaW5nZGluZ01pbmlhcHApIHtcbiAgICBhcmdzLmZpbGVQYXRocyA9IFthcmdzLnNyY107XG4gIH0gZWxzZSB7XG4gICAgYXJncy5hcEZpbGVQYXRocyA9IFthcmdzLnNyY107XG4gIH1cblxuICBhcmdzICYmIHR5cGVvZiBhcmdzLnF1YWxpdHkgPT09ICdudW1iZXInICYmIChhcmdzLmNvbXByZXNzTGV2ZWwgPSBhcmdzLnF1YWxpdHkpO1xuICByZXR1cm4gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5jb21wcmVzc0ltYWdlKGFyZ3MpIDogbXkuY29tcHJlc3NJbWFnZShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCBjb21wcmVzc0ltYWdlOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbnZhciBnZXRJbWFnZUluZm8gPSBub3JtYWxpemUuZ2V0SW1hZ2VJbmZvKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLmdldEltYWdlSW5mbyhhcmdzKSA6IG15LmdldEltYWdlSW5mbyhhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCBnZXRJbWFnZUluZm87IiwiaW1wb3J0IGNob29zZUltYWdlIGZyb20gXCIuL2Nob29zZUltYWdlXCI7XG5pbXBvcnQgY29tcHJlc3NJbWFnZSBmcm9tIFwiLi9jb21wcmVzc0ltYWdlXCI7XG5pbXBvcnQgZ2V0SW1hZ2VJbmZvIGZyb20gXCIuL2dldEltYWdlSW5mb1wiO1xuaW1wb3J0IHByZXZpZXdJbWFnZSBmcm9tIFwiLi9wcmV2aWV3SW1hZ2VcIjtcbmltcG9ydCBzYXZlSW1hZ2UgZnJvbSBcIi4vc2F2ZUltYWdlXCI7XG5leHBvcnQgeyBjaG9vc2VJbWFnZSwgY29tcHJlc3NJbWFnZSwgZ2V0SW1hZ2VJbmZvLCBwcmV2aWV3SW1hZ2UsIHNhdmVJbWFnZSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjaG9vc2VJbWFnZTogY2hvb3NlSW1hZ2UsXG4gIGNvbXByZXNzSW1hZ2U6IGNvbXByZXNzSW1hZ2UsXG4gIGdldEltYWdlSW5mbzogZ2V0SW1hZ2VJbmZvLFxuICBwcmV2aWV3SW1hZ2U6IHByZXZpZXdJbWFnZSxcbiAgc2F2ZUltYWdlOiBzYXZlSW1hZ2Vcbn07IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIHByZXZpZXdJbWFnZSA9IG5vcm1hbGl6ZS5wcmV2aWV3SW1hZ2UoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGlzRGluZ2RpbmdNaW5pYXBwID8gZGQucHJldmlld0ltYWdlKGFyZ3MpIDogbXkucHJldmlld0ltYWdlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IHByZXZpZXdJbWFnZTsiLCJpbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgc2F2ZUltYWdlID0gbm9ybWFsaXplLnNhdmVJbWFnZShmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5zYXZlSW1hZ2UoYXJncykgOiBteS5zYXZlSW1hZ2UoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5BTElQQVkpO1xuZXhwb3J0IGRlZmF1bHQgc2F2ZUltYWdlOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGNob29zZUltYWdlID0gbm9ybWFsaXplLmNob29zZUltYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBzd2FuLmNob29zZUltYWdlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgY2hvb3NlSW1hZ2U7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgY29tcHJlc3NJbWFnZSA9IG5vcm1hbGl6ZS5jb21wcmVzc0ltYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIGFyZ3MgJiYgdHlwZW9mIGFyZ3MucXVhbGl0eSA9PT0gJ251bWJlcicgJiYgKGFyZ3MucXVhbGl0eSAqPSAzMyk7XG4gIHJldHVybiBzd2FuLmNvbXByZXNzSW1hZ2UoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCBjb21wcmVzc0ltYWdlOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdldEltYWdlSW5mbyA9IG5vcm1hbGl6ZS5nZXRJbWFnZUluZm8oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHN3YW4uZ2V0SW1hZ2VJbmZvKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0SW1hZ2VJbmZvOyIsImltcG9ydCBjaG9vc2VJbWFnZSBmcm9tIFwiLi9jaG9vc2VJbWFnZVwiO1xuaW1wb3J0IGNvbXByZXNzSW1hZ2UgZnJvbSBcIi4vY29tcHJlc3NJbWFnZVwiO1xuaW1wb3J0IGdldEltYWdlSW5mbyBmcm9tIFwiLi9nZXRJbWFnZUluZm9cIjtcbmltcG9ydCBwcmV2aWV3SW1hZ2UgZnJvbSBcIi4vcHJldmlld0ltYWdlXCI7XG5pbXBvcnQgc2F2ZUltYWdlIGZyb20gXCIuL3NhdmVJbWFnZVwiO1xuZXhwb3J0IHsgY2hvb3NlSW1hZ2UsIGNvbXByZXNzSW1hZ2UsIGdldEltYWdlSW5mbywgcHJldmlld0ltYWdlLCBzYXZlSW1hZ2UgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY2hvb3NlSW1hZ2U6IGNob29zZUltYWdlLFxuICBjb21wcmVzc0ltYWdlOiBjb21wcmVzc0ltYWdlLFxuICBnZXRJbWFnZUluZm86IGdldEltYWdlSW5mbyxcbiAgcHJldmlld0ltYWdlOiBwcmV2aWV3SW1hZ2UsXG4gIHNhdmVJbWFnZTogc2F2ZUltYWdlXG59OyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHByZXZpZXdJbWFnZSA9IG5vcm1hbGl6ZS5wcmV2aWV3SW1hZ2UoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgc3dhbi5wcmV2aWV3SW1hZ2UoX2V4dGVuZHMoe30sIGFyZ3MsIHtcbiAgICBjdXJyZW50OiB0eXBlb2YgYXJncy5jdXJyZW50ID09PSAnbnVtYmVyJyA/IGFyZ3MudXJsc1thcmdzLmN1cnJlbnRdIDogYXJncy51cmxzWzBdXG4gIH0pKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IHByZXZpZXdJbWFnZTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzYXZlSW1hZ2UgPSBub3JtYWxpemUuc2F2ZUltYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHN3YW4uc2F2ZUltYWdlVG9QaG90b3NBbGJ1bShfZXh0ZW5kcyh7fSwgYXJncywge1xuICAgIGZpbGVQYXRoOiBhcmdzLnVybFxuICB9KSk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCBzYXZlSW1hZ2U7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgY2hvb3NlSW1hZ2UgPSBub3JtYWxpemUuY2hvb3NlSW1hZ2UoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHR0LmNob29zZUltYWdlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCBjaG9vc2VJbWFnZTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBjb21wcmVzc0ltYWdlID0gbm9ybWFsaXplLmNvbXByZXNzSW1hZ2UoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgYXJncyAmJiB0eXBlb2YgYXJncy5xdWFsaXR5ID09PSAnbnVtYmVyJyAmJiAoYXJncy5xdWFsaXR5ID0gYXJncy5xdWFsaXR5ICogMzMpO1xuICByZXR1cm4gdHQuY29tcHJlc3NJbWFnZShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgY29tcHJlc3NJbWFnZTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRJbWFnZUluZm8gPSBub3JtYWxpemUuZ2V0SW1hZ2VJbmZvKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiB0dC5nZXRJbWFnZUluZm8oYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CWVRFKTtcbmV4cG9ydCBkZWZhdWx0IGdldEltYWdlSW5mbzsiLCJpbXBvcnQgY2hvb3NlSW1hZ2UgZnJvbSBcIi4vY2hvb3NlSW1hZ2VcIjtcbmltcG9ydCBjb21wcmVzc0ltYWdlIGZyb20gXCIuL2NvbXByZXNzSW1hZ2VcIjtcbmltcG9ydCBnZXRJbWFnZUluZm8gZnJvbSBcIi4vZ2V0SW1hZ2VJbmZvXCI7XG5pbXBvcnQgcHJldmlld0ltYWdlIGZyb20gXCIuL3ByZXZpZXdJbWFnZVwiO1xuaW1wb3J0IHNhdmVJbWFnZSBmcm9tIFwiLi9zYXZlSW1hZ2VcIjtcbmV4cG9ydCB7IGNob29zZUltYWdlLCBjb21wcmVzc0ltYWdlLCBnZXRJbWFnZUluZm8sIHByZXZpZXdJbWFnZSwgc2F2ZUltYWdlIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGNob29zZUltYWdlOiBjaG9vc2VJbWFnZSxcbiAgY29tcHJlc3NJbWFnZTogY29tcHJlc3NJbWFnZSxcbiAgZ2V0SW1hZ2VJbmZvOiBnZXRJbWFnZUluZm8sXG4gIHByZXZpZXdJbWFnZTogcHJldmlld0ltYWdlLFxuICBzYXZlSW1hZ2U6IHNhdmVJbWFnZVxufTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBwcmV2aWV3SW1hZ2UgPSBub3JtYWxpemUucHJldmlld0ltYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHR0LnByZXZpZXdJbWFnZShfZXh0ZW5kcyh7fSwgYXJncywge1xuICAgIGN1cnJlbnQ6IHR5cGVvZiBhcmdzLmN1cnJlbnQgPT09ICdudW1iZXInID8gYXJncy51cmxzW2FyZ3MuY3VycmVudF0gOiBhcmdzLnVybHNbMF1cbiAgfSkpO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCBwcmV2aWV3SW1hZ2U7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc2F2ZUltYWdlID0gbm9ybWFsaXplLnNhdmVJbWFnZShmdW5jdGlvbiAoYXJncykge1xuICB0dC5zYXZlSW1hZ2VUb1Bob3Rvc0FsYnVtKF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgZmlsZVBhdGg6IGFyZ3MudXJsXG4gIH0pKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgc2F2ZUltYWdlOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gXCIuL191dGlscy9wcm9taXNpZnlcIjtcbmltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5leHBvcnQgdmFyIG5vcm1hbGl6ZSA9IHtcbiAgY2hvb3NlSW1hZ2U6IGZ1bmN0aW9uIGNob29zZUltYWdlKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICAgIHZhciBmb3JtYXRSZXNwb25zZSA9IGZ1bmN0aW9uIGZvcm1hdFJlc3BvbnNlKHJlcykge1xuICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXMsIHtcbiAgICAgICAgdGVtcEZpbGVzOiByZXMudGVtcEZpbGVzIHx8IHJlcy5maWxlcyxcbiAgICAgICAgdGVtcEZpbGVQYXRoczogcmVzLnRlbXBGaWxlUGF0aHNcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIGFyZ3MgPSBzdHlsZUluKGFyZ3MsIGNvbnRhaW5lck5hbWUpO1xuICAgICAgcmV0dXJuIHByb21pc2lmeShhcGkpKF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgICAgIGNvdW50OiBhcmdzLmNvdW50IHx8IDEsXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgYXJncy5zdWNjZXNzICYmIGFyZ3Muc3VjY2Vzcyhmb3JtYXRSZXNwb25zZShyZXMpKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGFyZ3MuY29tcGxldGUgJiYgYXJncy5jb21wbGV0ZShyZXMpO1xuICAgICAgICB9XG4gICAgICB9KSkudGhlbihmb3JtYXRSZXNwb25zZSk7XG4gICAgfTtcbiAgfSxcbiAgY29tcHJlc3NJbWFnZTogZnVuY3Rpb24gY29tcHJlc3NJbWFnZShhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgICB2YXIgZm9ybWF0UmVzcG9uc2UgPSBmdW5jdGlvbiBmb3JtYXRSZXNwb25zZShyZXMpIHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHRlbXBGaWxlUGF0aDogcmVzLnRlbXBGaWxlUGF0aCB8fCAocmVzLmZpbGVQYXRocyB8fCBbXSlbMF0gfHwgKHJlcy5hcEZpbGVQYXRocyB8fCBbXSlbMF0gfHwgJydcbiAgICAgIH07XG4gICAgfTtcblxuICAgIHJldHVybiBmdW5jdGlvbiAoYXJncykge1xuICAgICAgYXJncyA9IHN0eWxlSW4oYXJncywgY29udGFpbmVyTmFtZSk7XG4gICAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoX2V4dGVuZHMoe30sIGFyZ3MsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBhcmdzLnN1Y2Nlc3MgJiYgYXJncy5zdWNjZXNzKGZvcm1hdFJlc3BvbnNlKHJlcykpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgYXJncy5jb21wbGV0ZSAmJiBhcmdzLmNvbXBsZXRlKHJlcyk7XG4gICAgICAgIH1cbiAgICAgIH0pKS50aGVuKGZvcm1hdFJlc3BvbnNlKTtcbiAgICB9O1xuICB9LFxuICBnZXRJbWFnZUluZm86IGZ1bmN0aW9uIGdldEltYWdlSW5mbyhhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShzdHlsZUluKGFyZ3MsIGNvbnRhaW5lck5hbWUpKTtcbiAgICB9O1xuICB9LFxuICBwcmV2aWV3SW1hZ2U6IGZ1bmN0aW9uIHByZXZpZXdJbWFnZShhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShzdHlsZUluKGFyZ3MsIGNvbnRhaW5lck5hbWUpKTtcbiAgICB9O1xuICB9LFxuICBzYXZlSW1hZ2U6IGZ1bmN0aW9uIHNhdmVJbWFnZShhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShzdHlsZUluKGFyZ3MsIGNvbnRhaW5lck5hbWUpKTtcbiAgICB9O1xuICB9XG59OyIsImltcG9ydCB7IGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNXZWIsIGlzQnl0ZURhbmNlTWljcm9BcHAsIGlzQmFpZHVTbWFydFByb2dyYW0sIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSB9IGZyb20gXCJAdW5pL2VudlwiO1xuaW1wb3J0IGFsaU1pbmlBcHBNb2R1bGUgZnJvbSBcIi4vYWxpLW1pbmlhcHAvaW5kZXhcIjtcbmltcG9ydCB3ZWJNb2R1bGUgZnJvbSBcIi4vd2ViL2luZGV4XCI7XG5pbXBvcnQgd2VDaGF0TW9kdWxlIGZyb20gXCIuL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCBrdWFpU2hvdU1vZHVsZSBmcm9tIFwiLi9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJhaUR1TW9kdWxlIGZyb20gXCIuL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleFwiO1xuZXhwb3J0IHZhciBjaG9vc2VJbWFnZSA9IGZ1bmN0aW9uIGNob29zZUltYWdlKGFyZ3MpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5jaG9vc2VJbWFnZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUuY2hvb3NlSW1hZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuY2hvb3NlSW1hZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuY2hvb3NlSW1hZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUuY2hvb3NlSW1hZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5jaG9vc2VJbWFnZShhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpjaG9vc2VJbWFnZeaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBjb21wcmVzc0ltYWdlID0gZnVuY3Rpb24gY29tcHJlc3NJbWFnZShhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuY29tcHJlc3NJbWFnZSgpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5jb21wcmVzc0ltYWdlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmNvbXByZXNzSW1hZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuY29tcHJlc3NJbWFnZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5jb21wcmVzc0ltYWdlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuY29tcHJlc3NJbWFnZShhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpjb21wcmVzc0ltYWdl5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGdldEltYWdlSW5mbyA9IGZ1bmN0aW9uIGdldEltYWdlSW5mbyhhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuZ2V0SW1hZ2VJbmZvKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5nZXRJbWFnZUluZm8oYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuZ2V0SW1hZ2VJbmZvKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmdldEltYWdlSW5mbyhhcmdzKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5nZXRJbWFnZUluZm8oYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5nZXRJbWFnZUluZm8oYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yaZ2V0SW1hZ2VJbmZv5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIHByZXZpZXdJbWFnZSA9IGZ1bmN0aW9uIHByZXZpZXdJbWFnZShhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUucHJldmlld0ltYWdlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5wcmV2aWV3SW1hZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUucHJldmlld0ltYWdlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLnByZXZpZXdJbWFnZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5wcmV2aWV3SW1hZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5wcmV2aWV3SW1hZ2UoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yacHJldmlld0ltYWdl5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIHNhdmVJbWFnZSA9IGZ1bmN0aW9uIHNhdmVJbWFnZShhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuc2F2ZUltYWdlKCk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLnNhdmVJbWFnZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5zYXZlSW1hZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuc2F2ZUltYWdlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLnNhdmVJbWFnZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLnNhdmVJbWFnZShhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpzYXZlSW1hZ2XmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY2hvb3NlSW1hZ2U6IGNob29zZUltYWdlLFxuICBjb21wcmVzc0ltYWdlOiBjb21wcmVzc0ltYWdlLFxuICBnZXRJbWFnZUluZm86IGdldEltYWdlSW5mbyxcbiAgcHJldmlld0ltYWdlOiBwcmV2aWV3SW1hZ2UsXG4gIHNhdmVJbWFnZTogc2F2ZUltYWdlXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGNob29zZUltYWdlID0gbm9ybWFsaXplLmNob29zZUltYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBrcy5jaG9vc2VJbWFnZShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgY2hvb3NlSW1hZ2U7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgY29tcHJlc3NJbWFnZSA9IG5vcm1hbGl6ZS5jb21wcmVzc0ltYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIGFyZ3MgJiYgdHlwZW9mIGFyZ3MucXVhbGl0eSA9PT0gJ251bWJlcicgJiYgKGFyZ3MucXVhbGl0eSAqPSAzMyk7XG4gIHJldHVybiBrcy5jb21wcmVzc0ltYWdlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBjb21wcmVzc0ltYWdlOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdldEltYWdlSW5mbyA9IG5vcm1hbGl6ZS5nZXRJbWFnZUluZm8oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGtzLmdldEltYWdlSW5mbyhhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0SW1hZ2VJbmZvOyIsImltcG9ydCBjaG9vc2VJbWFnZSBmcm9tIFwiLi9jaG9vc2VJbWFnZVwiO1xuaW1wb3J0IGNvbXByZXNzSW1hZ2UgZnJvbSBcIi4vY29tcHJlc3NJbWFnZVwiO1xuaW1wb3J0IGdldEltYWdlSW5mbyBmcm9tIFwiLi9nZXRJbWFnZUluZm9cIjtcbmltcG9ydCBwcmV2aWV3SW1hZ2UgZnJvbSBcIi4vcHJldmlld0ltYWdlXCI7XG5pbXBvcnQgc2F2ZUltYWdlIGZyb20gXCIuL3NhdmVJbWFnZVwiO1xuZXhwb3J0IHsgY2hvb3NlSW1hZ2UsIGNvbXByZXNzSW1hZ2UsIGdldEltYWdlSW5mbywgcHJldmlld0ltYWdlLCBzYXZlSW1hZ2UgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY2hvb3NlSW1hZ2U6IGNob29zZUltYWdlLFxuICBjb21wcmVzc0ltYWdlOiBjb21wcmVzc0ltYWdlLFxuICBnZXRJbWFnZUluZm86IGdldEltYWdlSW5mbyxcbiAgcHJldmlld0ltYWdlOiBwcmV2aWV3SW1hZ2UsXG4gIHNhdmVJbWFnZTogc2F2ZUltYWdlXG59OyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHByZXZpZXdJbWFnZSA9IG5vcm1hbGl6ZS5wcmV2aWV3SW1hZ2UoZnVuY3Rpb24gKGFyZ3MpIHtcbiAga3MucHJldmlld0ltYWdlKF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgY3VycmVudDogdHlwZW9mIGFyZ3MuY3VycmVudCA9PT0gJ251bWJlcicgPyBhcmdzLnVybHNbYXJncy5jdXJyZW50XSA6IGFyZ3MudXJsc1swXVxuICB9KSk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbmV4cG9ydCBkZWZhdWx0IHByZXZpZXdJbWFnZTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzYXZlSW1hZ2UgPSBub3JtYWxpemUuc2F2ZUltYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIGtzLnNhdmVJbWFnZVRvUGhvdG9zQWxidW0oX2V4dGVuZHMoe30sIGFyZ3MsIHtcbiAgICBmaWxlUGF0aDogYXJncy51cmxcbiAgfSkpO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBzYXZlSW1hZ2U7IiwiaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgY2hvb3NlTWVkaWEgZnJvbSBcIkB1bmkvdmlkZW8vbGliL3dlYi9jaG9vc2VNZWRpYS5qc1wiO1xudmFyIGNob29zZUltYWdlID0gbm9ybWFsaXplLmNob29zZUltYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIGlmIChhcmdzID09PSB2b2lkIDApIHtcbiAgICBhcmdzID0ge307XG4gIH1cblxuICB2YXIgX2FyZ3MgPSBhcmdzLFxuICAgICAgX2FyZ3MkY291bnQgPSBfYXJncy5jb3VudCxcbiAgICAgIGNvdW50ID0gX2FyZ3MkY291bnQgPT09IHZvaWQgMCA/IDEgOiBfYXJncyRjb3VudCxcbiAgICAgIF9hcmdzJHN1Y2Nlc3MgPSBfYXJncy5zdWNjZXNzLFxuICAgICAgc3VjY2VzcyA9IF9hcmdzJHN1Y2Nlc3MgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX2FyZ3Mkc3VjY2VzcyxcbiAgICAgIF9hcmdzJGZhaWwgPSBfYXJncy5mYWlsLFxuICAgICAgZmFpbCA9IF9hcmdzJGZhaWwgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX2FyZ3MkZmFpbCxcbiAgICAgIF9hcmdzJGNvbXBsZXRlID0gX2FyZ3MuY29tcGxldGUsXG4gICAgICBjb21wbGV0ZSA9IF9hcmdzJGNvbXBsZXRlID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9hcmdzJGNvbXBsZXRlO1xuICBjaG9vc2VNZWRpYSh7XG4gICAgY291bnQ6IGNvdW50LFxuICAgIGFjY2VwdDogJ2ltYWdlLyonXG4gIH0pLnRoZW4oZnVuY3Rpb24gKHJlcykge1xuICAgIHZhciByZXN1bHQgPSB7XG4gICAgICB0ZW1wRmlsZVBhdGhzOiByZXMudGVtcEZpbGVzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbS50ZW1wRmlsZVBhdGg7XG4gICAgICB9KSxcbiAgICAgIHRlbXBGaWxlczogcmVzLnRlbXBGaWxlcy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXRoOiBpdGVtLnRlbXBGaWxlUGF0aCxcbiAgICAgICAgICBzaXplOiBpdGVtLnNpemVcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgICAgZmlsZXM6IHJlcy5maWxlc1xuICAgIH07XG4gICAgc3VjY2VzcyhyZXN1bHQpO1xuICAgIGNvbXBsZXRlKHJlc3VsdCk7XG4gIH0pLmNhdGNoKGZ1bmN0aW9uIChlKSB7XG4gICAgZmFpbChlKTtcbiAgICBjb21wbGV0ZShlKTtcbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5XRUIpO1xuZXhwb3J0IGRlZmF1bHQgY2hvb3NlSW1hZ2U7IiwidmFyIGNvbXByZXNzSW1hZ2UgPSBmdW5jdGlvbiBjb21wcmVzc0ltYWdlKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEk6IGNvbXByZXNzSW1hZ2XkuI3mlK/mjIEnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNvbXByZXNzSW1hZ2U7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ2V0SW1hZ2VJbmZvID0gbm9ybWFsaXplLmdldEltYWdlSW5mbyhmdW5jdGlvbiAoYXJncykge1xuICB2YXIgaW1hZ2UgPSBuZXcgSW1hZ2UoKTtcbiAgaW1hZ2Uuc3JjID0gYXJncy5zcmM7XG5cbiAgaWYgKGltYWdlLm5hdHVyYWxXaWR0aCkge1xuICAgIHZhciByZXMgPSB7XG4gICAgICB3aWR0aDogaW1hZ2UubmF0dXJhbFdpZHRoLFxuICAgICAgaGVpZ2h0OiBpbWFnZS5uYXR1cmFsSGVpZ2h0LFxuICAgICAgcGF0aDogYXJncy5zcmNcbiAgICB9O1xuICAgIGFyZ3Muc3VjY2VzcyhyZXMpO1xuICAgIGFyZ3MuY29tcGxldGUocmVzKTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgc2V0SW1hZ2VJbmZvID0gZnVuY3Rpb24gc2V0SW1hZ2VJbmZvKCkge1xuICAgICAgdmFyIHJlcyA9IHtcbiAgICAgICAgd2lkdGg6IGltYWdlLndpZHRoLFxuICAgICAgICBoZWlnaHQ6IGltYWdlLmhlaWdodCxcbiAgICAgICAgcGF0aDogYXJncy5zcmNcbiAgICAgIH07XG4gICAgICBhcmdzLnN1Y2Nlc3MocmVzKTtcbiAgICAgIGFyZ3MuY29tcGxldGUocmVzKTtcbiAgICB9O1xuXG4gICAgaWYgKGltYWdlLmNvbXBsZXRlKSB7XG4gICAgICBzZXRJbWFnZUluZm8oKTtcbiAgICB9IGVsc2Uge1xuICAgICAgdmFyIGNoZWNrVGltZXIgPSBudWxsO1xuXG4gICAgICB2YXIgY2xlYXIgPSBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICAgICAgY2hlY2tUaW1lciA9IG51bGw7XG4gICAgICAgIGNsZWFySW50ZXJ2YWwoY2hlY2tUaW1lcik7XG4gICAgICB9O1xuXG4gICAgICBjaGVja1RpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoaW1hZ2Uud2lkdGggPiAwIHx8IGltYWdlLmhlaWdodCA+IDApIHtcbiAgICAgICAgICBzZXRJbWFnZUluZm8oKTtcbiAgICAgICAgICBjbGVhcigpO1xuICAgICAgICB9XG4gICAgICB9LCA0MCk7XG5cbiAgICAgIGltYWdlLm9ubG9hZCA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgaWYgKGNoZWNrVGltZXIpIHtcbiAgICAgICAgICBzZXRJbWFnZUluZm8oKTtcbiAgICAgICAgICBjbGVhcigpO1xuICAgICAgICB9XG4gICAgICB9OyAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tbXVsdGktYXNzaWduXG5cblxuICAgICAgaW1hZ2Uub25hYm9ydCA9IGltYWdlLm9uZXJyb3IgPSBmdW5jdGlvbiAoZSkge1xuICAgICAgICBhcmdzLmZhaWwoZSk7XG4gICAgICAgIGFyZ3MuY29tcGxldGUoZSk7XG4gICAgICAgIGNsZWFyKCk7XG4gICAgICB9O1xuICAgIH1cbiAgfVxufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IGdldEltYWdlSW5mbzsiLCJpbXBvcnQgY2hvb3NlSW1hZ2UgZnJvbSBcIi4vY2hvb3NlSW1hZ2VcIjtcbmltcG9ydCBjb21wcmVzc0ltYWdlIGZyb20gXCIuL2NvbXByZXNzSW1hZ2VcIjtcbmltcG9ydCBnZXRJbWFnZUluZm8gZnJvbSBcIi4vZ2V0SW1hZ2VJbmZvXCI7XG5pbXBvcnQgcHJldmlld0ltYWdlIGZyb20gXCIuL3ByZXZpZXdJbWFnZVwiO1xuaW1wb3J0IHNhdmVJbWFnZSBmcm9tIFwiLi9zYXZlSW1hZ2VcIjtcbmV4cG9ydCB7IGNob29zZUltYWdlLCBjb21wcmVzc0ltYWdlLCBnZXRJbWFnZUluZm8sIHByZXZpZXdJbWFnZSwgc2F2ZUltYWdlIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGNob29zZUltYWdlOiBjaG9vc2VJbWFnZSxcbiAgY29tcHJlc3NJbWFnZTogY29tcHJlc3NJbWFnZSxcbiAgZ2V0SW1hZ2VJbmZvOiBnZXRJbWFnZUluZm8sXG4gIHByZXZpZXdJbWFnZTogcHJldmlld0ltYWdlLFxuICBzYXZlSW1hZ2U6IHNhdmVJbWFnZVxufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBjbHNQcmVmaXggPSAnX191bml2ZXJzYWxfcHJldmlld19pbWFnZSc7XG52YXIgc3R5bGVzID0gKFwiLlwiICsgY2xzUHJlZml4ICsgXCIge1xcbiAgcG9zaXRpb246IGZpeGVkO1xcbiAgdG9wOiAwO1xcbiAgbGVmdDogMDtcXG4gIHJpZ2h0OiAwO1xcbiAgYm90dG9tOiAwO1xcbiAgei1pbmRleDogOTk5OTtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIGJhY2tncm91bmQ6ICMwMDA7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgb3V0bGluZTogbm9uZTtcXG4gIG92ZXJmbG93OiBoaWRkZW47XFxuICBhbmltYXRpb24tZHVyYXRpb246IC4zcztcXG4gIGFuaW1hdGlvbi1maWxsLW1vZGU6IGJvdGg7XFxufVxcbi5cIiArIGNsc1ByZWZpeCArIFwiX3BhZ2VpbmRleCB7XFxuICBwb3NpdGlvbjogYWJzb2x1dGU7XFxuICB0b3A6IDEycHg7XFxuICBsZWZ0OiAwO1xcbiAgcmlnaHQ6IDA7XFxuICB0ZXh0LWFsaWduOiBjZW50ZXI7XFxuICBjb2xvcjogI2ZmZjtcXG4gIGZvbnQtc2l6ZTogMTZweDtcXG4gIHotaW5kZXg6IDI7XFxufVxcbi5cIiArIGNsc1ByZWZpeCArIFwiX3N3aXBlciB7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHotaW5kZXg6IDE7XFxuICBkaXNwbGF5OiBmbGV4O1xcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcXG4gIHRyYW5zaXRpb24tcHJvcGVydHk6IHRyYW5zZm9ybTtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbn1cXG4uXCIgKyBjbHNQcmVmaXggKyBcIl9pdGVtIHtcXG4gIG1heC1oZWlnaHQ6IDcwJTtcXG4gIGRpc3BsYXk6IGZsZXg7XFxuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcXG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XFxuICBmbGV4LXNocmluazogMDtcXG4gIHdpZHRoOiAxMDAlO1xcbiAgcG9zaXRpb246IHJlbGF0aXZlO1xcbiAgdHJhbnNpdGlvbi1wcm9wZXJ0eTogdHJhbnNmb3JtO1xcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcXG59XFxuLlwiICsgY2xzUHJlZml4ICsgXCJfaW1nIHtcXG4gIHdpZHRoOiAxMDAlO1xcbn1cXG5Aa2V5ZnJhbWVzIFwiICsgY2xzUHJlZml4ICsgXCJfZmFkZUluIHtcXG4gIDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICBvcGFjaXR5OiAxO1xcbiAgfVxcbn1cXG5Aa2V5ZnJhbWVzIFwiICsgY2xzUHJlZml4ICsgXCJfZmFkZU91dCB7XFxuICAwJSB7XFxuICAgIG9wYWNpdHk6IDE7XFxuICB9XFxuICAxMDAlIHtcXG4gICAgb3BhY2l0eTogMDtcXG4gIH1cXG59XCIpLnJlcGxhY2UoL1xcbi9nLCAnJyk7XG52YXIgc3R5bGVFbGVtZW50ID0gbnVsbDtcbnZhciBwcmV2aWV3SW1hZ2UgPSBub3JtYWxpemUucHJldmlld0ltYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHZhciBfcmVmID0gYXJncyB8fCB7fSxcbiAgICAgIF9yZWYkdXJscyA9IF9yZWYudXJscyxcbiAgICAgIHVybHMgPSBfcmVmJHVybHMgPT09IHZvaWQgMCA/IFtdIDogX3JlZiR1cmxzO1xuXG4gIHZhciBfcmVmMiA9IGFyZ3MgfHwge30sXG4gICAgICBfcmVmMiRjdXJyZW50ID0gX3JlZjIuY3VycmVudCxcbiAgICAgIGN1cnJlbnQgPSBfcmVmMiRjdXJyZW50ID09PSB2b2lkIDAgPyAwIDogX3JlZjIkY3VycmVudDtcblxuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKHVybHMpICE9PSAnW29iamVjdCBBcnJheV0nKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgYXJndW1lbnRzIG11c3QgY29udGFpbiB1cmxzIHRoYXQgdHlwZSBpcyBhIEFycmF5Jyk7XG4gIH1cblxuICBpZiAodXJscy5sZW5ndGggPD0gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcigndGhlIHVybHNgcyBsZW5ndGggaXMgYXQgbGVhc3QgMScpO1xuICB9XG5cbiAgaWYgKCFOdW1iZXIuaXNTYWZlSW50ZWdlcihjdXJyZW50KSkge1xuICAgIHRocm93IG5ldyBFcnJvcigndGhlIGN1cnJlbnQgbXVzdCBiZSBhIHNhZmUgaW50ZWdlcicpO1xuICB9XG5cbiAgY3VycmVudCA9IE1hdGgubWluKE1hdGgubWF4KGN1cnJlbnQsIDApLCB1cmxzLmxlbmd0aCAtIDEpO1xuXG4gIGlmICghc3R5bGVFbGVtZW50KSB7XG4gICAgLy8gY3JlYXRlIGEgc3R5bGUgdGFnIGZvciBrZXlmcmFtZXNcbiAgICBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgIHN0eWxlRWxlbWVudC5pbm5lckhUTUwgPSBzdHlsZXM7XG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQpO1xuICB9XG5cbiAgdmFyIGNvbnRhaW5lckVsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICBjb250YWluZXJFbGUuY2xhc3NOYW1lID0gY2xzUHJlZml4O1xuICBjb250YWluZXJFbGUuc3R5bGUuYW5pbWF0aW9uTmFtZSA9IGNsc1ByZWZpeCArIFwiX2ZhZGVJblwiO1xuICBjb250YWluZXJFbGUuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbiAoKSB7XG4gICAgY29udGFpbmVyRWxlLnN0eWxlLmFuaW1hdGlvbk5hbWUgPSBjbHNQcmVmaXggKyBcIl9mYWRlT3V0XCI7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKGNvbnRhaW5lckVsZSk7XG4gICAgICBjb250YWluZXJFbGUgPSBudWxsO1xuICAgIH0sIDMwMCk7XG4gIH0pO1xuICB2YXIgcGFnZUluZGV4RWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gIHBhZ2VJbmRleEVsZS5jbGFzc05hbWUgPSBjbHNQcmVmaXggKyBcIl9wYWdlaW5kZXhcIjtcbiAgcGFnZUluZGV4RWxlLmlubmVyVGV4dCA9IGN1cnJlbnQgKyAxICsgXCIvXCIgKyB1cmxzLmxlbmd0aDtcbiAgY29udGFpbmVyRWxlLmFwcGVuZENoaWxkKHBhZ2VJbmRleEVsZSk7XG4gIHZhciBzd2lwZXJFbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgc3dpcGVyRWxlLmNsYXNzTmFtZSA9IGNsc1ByZWZpeCArIFwiX3N3aXBlclwiO1xuICB2YXIgZGFtcCA9IDE7XG4gIHZhciBjbGllbnRXaWR0aCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRXaWR0aDtcbiAgdmFyIHN0YXJ0WCA9IDA7XG4gIHN3aXBlckVsZS5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoZS50b3VjaGVzLmxlbmd0aCA+IDEpIHtcbiAgICAgIGUuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgfVxuXG4gICAgc3RhcnRYID0gZS50YXJnZXRUb3VjaGVzWzBdLnBhZ2VYO1xuICB9KTtcbiAgc3dpcGVyRWxlLmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIGZ1bmN0aW9uIChlKSB7XG4gICAgaWYgKGUudG91Y2hlcy5sZW5ndGggPiAxKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgZS5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIH1cblxuICAgIHZhciBtb3ZlWCA9IGUudGFyZ2V0VG91Y2hlc1swXS5wYWdlWCAtIHN0YXJ0WDtcbiAgICBzd2lwZXJFbGUuc3R5bGUudHJhbnNmb3JtID0gXCJ0cmFuc2xhdGVYKFwiICsgKC1jbGllbnRXaWR0aCAqIGN1cnJlbnQgKyBtb3ZlWCAqIGRhbXApICsgXCJweClcIjtcbiAgfSk7XG4gIHN3aXBlckVsZS5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIGZ1bmN0aW9uIChlKSB7XG4gICAgdmFyIGVuZFggPSBlLmNoYW5nZWRUb3VjaGVzWzBdLnBhZ2VYIC0gc3RhcnRYO1xuXG4gICAgaWYgKE1hdGguYWJzKGVuZFggKiBkYW1wKSA+IGNsaWVudFdpZHRoIC8gMikge1xuICAgICAgY3VycmVudCA9IGVuZFggPCAwID8gTWF0aC5taW4oY3VycmVudCArIDEsIHVybHMubGVuZ3RoIC0gMSkgOiBNYXRoLm1heChjdXJyZW50IC0gMSwgMCk7XG4gICAgfVxuXG4gICAgcGFnZUluZGV4RWxlLmlubmVyVGV4dCA9IGN1cnJlbnQgKyAxICsgXCIvXCIgKyB1cmxzLmxlbmd0aDtcbiAgICB2YXIgdHJhbnNpdGlvbkR1cmF0aW9uID0gMzAwO1xuICAgIHN3aXBlckVsZS5zdHlsZS50cmFuc2l0aW9uRHVyYXRpb24gPSB0cmFuc2l0aW9uRHVyYXRpb24gKyBcIm1zXCI7XG4gICAgc3dpcGVyRWxlLnN0eWxlLnRyYW5zZm9ybSA9IFwidHJhbnNsYXRlWChcIiArIC1jbGllbnRXaWR0aCAqIGN1cnJlbnQgKyBcInB4KVwiO1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgc3dpcGVyRWxlLnN0eWxlLnRyYW5zaXRpb25EdXJhdGlvbiA9ICcwbXMnO1xuICAgIH0sIHRyYW5zaXRpb25EdXJhdGlvbik7XG4gIH0pO1xuICBzd2lwZXJFbGUuc3R5bGUudHJhbnNmb3JtID0gXCJ0cmFuc2xhdGVYKFwiICsgLWNsaWVudFdpZHRoICogY3VycmVudCArIFwicHgpXCI7XG4gIGNvbnRhaW5lckVsZS5hcHBlbmRDaGlsZChzd2lwZXJFbGUpO1xuICB1cmxzLmZvckVhY2goZnVuY3Rpb24gKHVybCkge1xuICAgIHZhciBzd2lwZXJJdGVtRWxlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgc3dpcGVySXRlbUVsZS5jbGFzc05hbWUgPSBjbHNQcmVmaXggKyBcIl9pdGVtXCI7XG4gICAgc3dpcGVySXRlbUVsZS5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uIChlKSB7XG4gICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH0pO1xuICAgIHN3aXBlckVsZS5hcHBlbmRDaGlsZChzd2lwZXJJdGVtRWxlKTtcbiAgICB2YXIgaW1hZ2VFbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdpbWcnKTtcbiAgICBpbWFnZUVsZS5jbGFzc05hbWUgPSBjbHNQcmVmaXggKyBcIl9pbWdcIjtcbiAgICBpbWFnZUVsZS5zcmMgPSB1cmw7XG4gICAgc3dpcGVySXRlbUVsZS5hcHBlbmRDaGlsZChpbWFnZUVsZSk7XG4gICAgc3dpcGVySXRlbUVsZS5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID4gMSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHZhciBwb2ludDEgPSBlLnRvdWNoZXNbMF07XG4gICAgICAgIHZhciBwb2ludDIgPSBlLnRvdWNoZXNbMV07XG4gICAgICAgIHZhciB4TGVuID0gTWF0aC5hYnMocG9pbnQyLnBhZ2VYIC0gcG9pbnQxLnBhZ2VYKTtcbiAgICAgICAgdmFyIHlMZW4gPSBNYXRoLmFicyhwb2ludDIucGFnZVkgLSBwb2ludDEucGFnZVkpO1xuICAgICAgICBzd2lwZXJJdGVtRWxlLnRvdWNoRGlzdGFuY2UgPSBNYXRoLnNxcnQoeExlbiAqIHhMZW4gKyB5TGVuICogeUxlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzd2lwZXJJdGVtRWxlLnRvdWNoZWQgPSB7XG4gICAgICAgICAgeDogZS50b3VjaGVzWzBdLnBhZ2VYLFxuICAgICAgICAgIHk6IGUudG91Y2hlc1swXS5wYWdlWVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH0pO1xuICAgIHN3aXBlckl0ZW1FbGUuYWRkRXZlbnRMaXN0ZW5lcigndG91Y2htb3ZlJywgZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChlLnRvdWNoZXMubGVuZ3RoID4gMSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICBlLnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgIHZhciB4TGVuID0gTWF0aC5hYnMoZS50b3VjaGVzWzBdLnBhZ2VYIC0gZS50b3VjaGVzWzFdLnBhZ2VYKTtcbiAgICAgICAgdmFyIHlMZW4gPSBNYXRoLmFicyhlLnRvdWNoZXNbMV0ucGFnZVkgLSBlLnRvdWNoZXNbMV0ucGFnZVkpO1xuICAgICAgICB2YXIgdG91Y2hEaXN0YW5jZSA9IE1hdGguc3FydCh4TGVuICogeExlbiArIHlMZW4gKiB5TGVuKTtcblxuICAgICAgICBpZiAoc3dpcGVySXRlbUVsZS50b3VjaERpc3RhbmNlKSB7XG4gICAgICAgICAgdmFyIHBpbmNoU2NhbGUgPSAoc3dpcGVySXRlbUVsZS5wcmV2aW91c1BpbmNoU2NhbGUgfHwgMSkgKyAodG91Y2hEaXN0YW5jZSAtIHN3aXBlckl0ZW1FbGUudG91Y2hEaXN0YW5jZSkgLyBzd2lwZXJJdGVtRWxlLnRvdWNoRGlzdGFuY2U7XG4gICAgICAgICAgdmFyIGltYWdlU2NhbGUgPSBNYXRoLm1heCgxLCBwaW5jaFNjYWxlKTtcbiAgICAgICAgICBpbWFnZUVsZS5zdHlsZS50cmFuc2Zvcm0gPSBcInNjYWxlKFwiICsgaW1hZ2VTY2FsZSArIFwiKVwiO1xuICAgICAgICAgIHN3aXBlckl0ZW1FbGUucHJldmlvdXNQaW5jaFNjYWxlID0gaW1hZ2VTY2FsZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHN3aXBlckl0ZW1FbGUudG91Y2hEaXN0YW5jZSA9IHRvdWNoRGlzdGFuY2U7XG4gICAgICB9IGVsc2UgaWYgKHN3aXBlckl0ZW1FbGUucHJldmlvdXNQaW5jaFNjYWxlID4gMSkge1xuICAgICAgICBlLnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICB2YXIgeCA9IChzd2lwZXJJdGVtRWxlLnByZVggfHwgMCkgKyAoZS50b3VjaGVzWzBdLnBhZ2VYIC0gc3dpcGVySXRlbUVsZS50b3VjaGVkLngpO1xuICAgICAgICB2YXIgeSA9IChzd2lwZXJJdGVtRWxlLnByZVkgfHwgMCkgKyAoZS50b3VjaGVzWzBdLnBhZ2VZIC0gc3dpcGVySXRlbUVsZS50b3VjaGVkLnkpO1xuICAgICAgICBpbWFnZUVsZS5zdHlsZS50cmFuc2Zvcm0gPSBcInNjYWxlKFwiICsgc3dpcGVySXRlbUVsZS5wcmV2aW91c1BpbmNoU2NhbGUgKyBcIikgdHJhbnNsYXRlKFwiICsgeCArIFwicHgsIFwiICsgeSArIFwicHgpXCI7XG4gICAgICAgIHN3aXBlckl0ZW1FbGUucHJlWCA9IHg7XG4gICAgICAgIHN3aXBlckl0ZW1FbGUucHJlWSA9IHk7XG4gICAgICAgIHN3aXBlckl0ZW1FbGUudG91Y2hlZCA9IHtcbiAgICAgICAgICB4OiBlLnRvdWNoZXNbMF0ucGFnZVgsXG4gICAgICAgICAgeTogZS50b3VjaGVzWzBdLnBhZ2VZXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSk7XG4gIH0pO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGNvbnRhaW5lckVsZSk7XG59LCBDT05UQUlORVJfTkFNRS5XRUIpO1xuZXhwb3J0IGRlZmF1bHQgcHJldmlld0ltYWdlOyIsInZhciBzYXZlSW1hZ2UgPSBmdW5jdGlvbiBzYXZlSW1hZ2UoKSB7XG4gIHRocm93IG5ldyBFcnJvcignVW5pIEFQSTogc2F2ZUltYWdl5LiN5pSv5oyBJyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBzYXZlSW1hZ2U7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgY2hvb3NlSW1hZ2UgPSBub3JtYWxpemUuY2hvb3NlSW1hZ2UoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHd4LmNob29zZUltYWdlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IGNob29zZUltYWdlOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGNvbXByZXNzSW1hZ2UgPSBub3JtYWxpemUuY29tcHJlc3NJbWFnZShmdW5jdGlvbiAoYXJncykge1xuICBhcmdzICYmIHR5cGVvZiBhcmdzLnF1YWxpdHkgPT09ICdudW1iZXInICYmIChhcmdzLnF1YWxpdHkgPSBhcmdzLnF1YWxpdHkgKiAzMyk7XG4gIHJldHVybiB3eC5jb21wcmVzc0ltYWdlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IGNvbXByZXNzSW1hZ2U7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ2V0SW1hZ2VJbmZvID0gbm9ybWFsaXplLmdldEltYWdlSW5mbyhmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gd3guZ2V0SW1hZ2VJbmZvKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IGdldEltYWdlSW5mbzsiLCJpbXBvcnQgY2hvb3NlSW1hZ2UgZnJvbSBcIi4vY2hvb3NlSW1hZ2VcIjtcbmltcG9ydCBjb21wcmVzc0ltYWdlIGZyb20gXCIuL2NvbXByZXNzSW1hZ2VcIjtcbmltcG9ydCBnZXRJbWFnZUluZm8gZnJvbSBcIi4vZ2V0SW1hZ2VJbmZvXCI7XG5pbXBvcnQgcHJldmlld0ltYWdlIGZyb20gXCIuL3ByZXZpZXdJbWFnZVwiO1xuaW1wb3J0IHNhdmVJbWFnZSBmcm9tIFwiLi9zYXZlSW1hZ2VcIjtcbmV4cG9ydCB7IGNob29zZUltYWdlLCBjb21wcmVzc0ltYWdlLCBnZXRJbWFnZUluZm8sIHByZXZpZXdJbWFnZSwgc2F2ZUltYWdlIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGNob29zZUltYWdlOiBjaG9vc2VJbWFnZSxcbiAgY29tcHJlc3NJbWFnZTogY29tcHJlc3NJbWFnZSxcbiAgZ2V0SW1hZ2VJbmZvOiBnZXRJbWFnZUluZm8sXG4gIHByZXZpZXdJbWFnZTogcHJldmlld0ltYWdlLFxuICBzYXZlSW1hZ2U6IHNhdmVJbWFnZVxufTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBwcmV2aWV3SW1hZ2UgPSBub3JtYWxpemUucHJldmlld0ltYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHd4LnByZXZpZXdJbWFnZShfZXh0ZW5kcyh7fSwgYXJncywge1xuICAgIGN1cnJlbnQ6IHR5cGVvZiBhcmdzLmN1cnJlbnQgPT09ICdudW1iZXInID8gYXJncy51cmxzW2FyZ3MuY3VycmVudF0gOiBhcmdzLnVybHNbMF1cbiAgfSkpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IHByZXZpZXdJbWFnZTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzYXZlSW1hZ2UgPSBub3JtYWxpemUuc2F2ZUltYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHd4LnNhdmVJbWFnZVRvUGhvdG9zQWxidW0oX2V4dGVuZHMoe30sIGFyZ3MsIHtcbiAgICBmaWxlUGF0aDogYXJncy51cmxcbiAgfSkpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IHNhdmVJbWFnZTsiLCJmdW5jdGlvbiBpc1VuZGVmKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgdmFyIGlzRGluZ2RpbmdNaW5pYXBwID0gIWlzVW5kZWYodHlwZW9mIGRkKSAmJiBkZCAhPT0gbnVsbCAmJiAhaXNVbmRlZih0eXBlb2YgZGQuYWxlcnQpOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICB2YXIgX2RkLCBfbXk7XG5cbiAgcmV0dXJuIGlzRGluZ2RpbmdNaW5pYXBwID8gKF9kZCA9IGRkKS5jcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlci5hcHBseShfZGQsIGFyZ3VtZW50cykgOiAoX215ID0gbXkpLmNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyLmFwcGx5KF9teSwgYXJndW1lbnRzKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAob3B0aW9ucywgY29udGV4dCkge1xuICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgY29udGV4dCA9IHN3YW47XG4gIH1cblxuICAvLyDpmLLmraLkvKDlhaXoh6rlrprkuYnnu4Tku7bnmoR0aGlz5rKh5pyJY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcbiAgcmV0dXJuIGNvbnRleHQgPT09IHN3YW4gfHwgIWNvbnRleHQuY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPyBjb250ZXh0LmNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyKG51bGwsIG9wdGlvbnMpIDogY29udGV4dC5jcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlcihvcHRpb25zKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAob3B0aW9ucywgY29udGV4dCkge1xuICBpZiAoY29udGV4dCA9PT0gdm9pZCAwKSB7XG4gICAgY29udGV4dCA9IHR0O1xuICB9XG5cbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5zZWxlY3RBbGwgIT0gdW5kZWZpbmVkKSB7XG4gICAgb3B0aW9ucy5vYnNlcnZlQWxsID0gb3B0aW9ucy5zZWxlY3RBbGw7XG4gIH0gLy8g6Ziy5q2i5Lyg5YWl6Ieq5a6a5LmJ57uE5Lu255qEdGhpc+ayoeaciWNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyXG5cblxuICByZXR1cm4gY29udGV4dCA9PT0gdHQgfHwgIWNvbnRleHQuY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPyBjb250ZXh0LmNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyKG51bGwsIG9wdGlvbnMpIDogY29udGV4dC5jcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlcihvcHRpb25zKTtcbn0pOyIsImltcG9ydCB7IGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNXZWIsIGlzQnl0ZURhbmNlTWljcm9BcHAsIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSwgaXNCYWlkdVNtYXJ0UHJvZ3JhbSB9IGZyb20gXCJAdW5pL2VudlwiO1xuaW1wb3J0IGFsaU1pbmlBcHBNb2R1bGUgZnJvbSBcIi4vYWxpLW1pbmlhcHAvaW5kZXhcIjtcbmltcG9ydCB3ZWJNb2R1bGUgZnJvbSBcIi4vd2ViL2luZGV4XCI7XG5pbXBvcnQgd2VDaGF0TW9kdWxlIGZyb20gXCIuL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCBiYWlEdU1vZHVsZSBmcm9tIFwiLi9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXhcIjtcblxudmFyIGNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyID0gZnVuY3Rpb24gY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIoKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mkludGVyc2VjdGlvbk9ic2VydmVy5pqC5LiN5pSv5oyBJyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuYXBwbHkodm9pZCAwLCBhcmd1bWVudHMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yaSW50ZXJzZWN0aW9uT2JzZXJ2ZXLmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7IiwiZnVuY3Rpb24gYnVpbGRNYXJnaW5TdHIobWFyZ2lucykge1xuICByZXR1cm4gKE51bWJlcihtYXJnaW5zLnRvcCkgfHwgMCkgKyBcInB4IFwiICsgKE51bWJlcihtYXJnaW5zLnJpZ2h0KSB8fCAwKSArIFwicHggXCIgKyAoTnVtYmVyKG1hcmdpbnMuYm90dG9tKSB8fCAwKSArIFwicHggXCIgKyAoTnVtYmVyKG1hcmdpbnMubGVmdCkgfHwgMCkgKyBcInB4XCI7XG59XG5cbmZ1bmN0aW9uIEludGVyc2VjdGlvbk9ic2VydmVycyhvcHRpb25zKSB7XG4gIHRoaXMudGhyZXNob2xkcyA9IG9wdGlvbnMgJiYgb3B0aW9ucy50aHJlc2hvbGRzID8gb3B0aW9ucy50aHJlc2hvbGRzIDogWzBdO1xuICB0aGlzLmluaXRpYWxSYXRpbyA9IG9wdGlvbnMgJiYgb3B0aW9ucy5pbml0aWFsUmF0aW8gPyBvcHRpb25zLmluaXRpYWxSYXRpbyA6IDA7XG4gIHRoaXMuc2VsZWN0QWxsID0gb3B0aW9ucyAmJiBvcHRpb25zLnNlbGVjdEFsbCA/IG9wdGlvbnMuc2VsZWN0QWxsIDogZmFsc2U7XG5cbiAgdGhpcy5jYWxsQmFjayA9IGZ1bmN0aW9uICgpIHt9O1xuXG4gIHRoaXMub2JzZXJ2ZXJzID0gW107XG59XG5cbmZ1bmN0aW9uIHJlbGF0aXZlKHJvb3QsIHNlbGYsIG1hcmdpbnMpIHtcbiAgdmFyIG9wdGlvbnMgPSB7XG4gICAgcm9vdDogcm9vdCxcbiAgICByb290TWFyZ2luOiBtYXJnaW5zID8gYnVpbGRNYXJnaW5TdHIobWFyZ2lucykgOiAnMHB4JyxcbiAgICB0aHJlc2hvbGQ6IHNlbGYudGhyZXNob2xkc1xuICB9O1xuICBzZWxmLm9ic2VydmVycy5wdXNoKG5ldyBJbnRlcnNlY3Rpb25PYnNlcnZlcihmdW5jdGlvbiAoKSB7XG4gICAgc2VsZi5jYWxsQmFjay5hcHBseShzZWxmLCBhcmd1bWVudHMpO1xuICB9LCBvcHRpb25zKSk7XG59XG5cbkludGVyc2VjdGlvbk9ic2VydmVycy5wcm90b3R5cGUucmVsYXRpdmVUbyA9IGZ1bmN0aW9uIChzZWxlY3RvciwgbWFyZ2lucykge1xuICByZWxhdGl2ZShkb2N1bWVudC5xdWVyeVNlbGVjdG9yKHNlbGVjdG9yKSwgdGhpcywgbWFyZ2lucyk7XG4gIHJldHVybiB0aGlzO1xufTtcblxuSW50ZXJzZWN0aW9uT2JzZXJ2ZXJzLnByb3RvdHlwZS5yZWxhdGl2ZVRvVmlld3BvcnQgPSBmdW5jdGlvbiAobWFyZ2lucykge1xuICByZWxhdGl2ZShudWxsLCB0aGlzLCBtYXJnaW5zKTtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5JbnRlcnNlY3Rpb25PYnNlcnZlcnMucHJvdG90eXBlLm9ic2VydmUgPSBmdW5jdGlvbiAodGFyZ2V0U2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKHRoaXMuc2VsZWN0QWxsKSB7XG4gICAgdmFyIHRhcmdldHMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKHRhcmdldFNlbGVjdG9yKTtcbiAgICB0YXJnZXRzLmZvckVhY2goZnVuY3Rpb24gKHRhcmdldCkge1xuICAgICAgcmV0dXJuIF90aGlzLm9ic2VydmVycy5mb3JFYWNoKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgICAgICByZXR1cm4gb2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQpO1xuICAgICAgfSk7XG4gICAgfSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIHRhcmdldCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IodGFyZ2V0U2VsZWN0b3IpO1xuICAgIHRoaXMub2JzZXJ2ZXJzLmZvckVhY2goZnVuY3Rpb24gKG9ic2VydmVyKSB7XG4gICAgICByZXR1cm4gb2JzZXJ2ZXIub2JzZXJ2ZSh0YXJnZXQpO1xuICAgIH0pO1xuICB9XG5cbiAgdGhpcy5jYWxsQmFjayA9IGZ1bmN0aW9uIChlbnRyaWVzLCBvYnNlcnZlcikge1xuICAgIGVudHJpZXMuZm9yRWFjaChmdW5jdGlvbiAoZW50cnkpIHtcbiAgICAgIGNhbGxiYWNrICYmIHR5cGVvZiBjYWxsYmFjayA9PT0gJ2Z1bmN0aW9uJyAmJiBjYWxsYmFjayh7XG4gICAgICAgIGJvdW5kaW5nQ2xpZW50UmVjdDogZW50cnkuYm91bmRpbmdDbGllbnRSZWN0LFxuICAgICAgICBpbnRlcnNlY3Rpb25SYXRpbzogZW50cnkuaW50ZXJzZWN0aW9uUmF0aW8sXG4gICAgICAgIGludGVyc2VjdGlvblJlY3Q6IGVudHJ5LmludGVyc2VjdGlvblJlY3QsXG4gICAgICAgIHJlbGF0aXZlUmVjdDogZW50cnkucm9vdEJvdW5kcyxcbiAgICAgICAgdGltZTogZW50cnkudGltZVxuICAgICAgfSk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5JbnRlcnNlY3Rpb25PYnNlcnZlcnMucHJvdG90eXBlLmRpc2Nvbm5lY3QgPSBmdW5jdGlvbiAodGFyZ2V0U2VsZWN0b3IsIGNhbGxiYWNrKSB7XG4gIHRoaXMuY2FsbEJhY2sgPSBmdW5jdGlvbiAoKSB7fTtcblxuICB0aGlzLm9ic2VydmVycyA9IFtdO1xuICB0aGlzLm9ic2VydmVycy5mb3JFYWNoKGZ1bmN0aW9uIChvYnNlcnZlcikge1xuICAgIG9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgfSk7XG4gIHJldHVybiB0aGlzO1xufTtcblxudmFyIGNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyID0gZnVuY3Rpb24gY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIob3B0aW9ucywgY29tcG9uZW50KSB7XG4gIHJldHVybiBuZXcgSW50ZXJzZWN0aW9uT2JzZXJ2ZXJzKG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXI7IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChvcHRpb25zLCBjb250ZXh0KSB7XG4gIGlmIChjb250ZXh0ID09PSB2b2lkIDApIHtcbiAgICBjb250ZXh0ID0gd3g7XG4gIH1cblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnNlbGVjdEFsbCAhPSB1bmRlZmluZWQpIHtcbiAgICBvcHRpb25zLm9ic2VydmVBbGwgPSBvcHRpb25zLnNlbGVjdEFsbDtcbiAgfSAvLyDpmLLmraLkvKDlhaXoh6rlrprkuYnnu4Tku7bnmoR0aGlz5rKh5pyJY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXJcblxuXG4gIHJldHVybiBjb250ZXh0ID09PSB3eCB8fCAhY29udGV4dC5jcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlciA/IGNvbnRleHQuY3JlYXRlSW50ZXJzZWN0aW9uT2JzZXJ2ZXIobnVsbCwgb3B0aW9ucykgOiBjb250ZXh0LmNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyKG9wdGlvbnMpO1xufSk7IiwiZXhwb3J0IHZhciBDT05UQUlORVJfTkFNRSA9IHtcbiAgV0VDSEFUOiAnd2VjaGF0TWluaVByb2dyYW0nLFxuICBBTElQQVk6ICdhbGlNaW5pQXBwJyxcbiAgQllURTogJ2J5dGVkYW5jZU1pY3JvQXBwJyxcbiAgV0VCOiAnd2ViJyxcbiAgQkFJRFU6ICdiYWlkdVNtYXJ0UHJvZ3JhbScsXG4gIEtXQUk6ICdrdWFpc2hvdU1pbmlQcm9ncmFtJ1xufTsiLCJmdW5jdGlvbiBpc1VuZGVmKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgdmFyIGlzRGluZ2RpbmdNaW5pYXBwID0gIWlzVW5kZWYodHlwZW9mIGRkKSAmJiBkZCAhPT0gbnVsbCAmJiAhaXNVbmRlZih0eXBlb2YgZGQuYWxlcnQpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNpZnkoYXBpKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBwcm9taXNpZnlBcmcgPSBhcmc7XG4gICAgICBhcGkoX2V4dGVuZHMoe30sIHByb21pc2lmeUFyZywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5zdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuc3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiBvblN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuZmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25GYWlsOiBmdW5jdGlvbiBvbkZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uRmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uRmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuY29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uIG9uQ29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH07XG59IiwidmFyIF9leGNsdWRlZCA9IFtcIl9leHRcIl07XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IHZhciBzdHlsZU91dCA9IGZ1bmN0aW9uIHN0eWxlT3V0KG91dHB1dCwgb3JpZ2luYWxJbnB1dCwgb3JpZ2luYWxPdXRwdXQpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRwdXQsIHtcbiAgICBfb3JpZ2luYWw6IHtcbiAgICAgIGlucHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxJbnB1dCksXG4gICAgICAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g5a+55YWl5Y+C6L+b6KGMIGZvcm1hdCDkuYvlkI7nmoTnu5PmnpxcbiAgICAgIG91dHB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsT3V0cHV0KSAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g6L+U5Zue5YC8IGZvcm1hdCDkuYvliY3nmoTnu5PmnpxcblxuICAgIH1cbiAgfSk7XG59O1xuZXhwb3J0IHZhciBzdHlsZUluID0gZnVuY3Rpb24gc3R5bGVJbihvcHRpb25zLCBiYXNlTmFtZSkge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfcmVmJF9leHQgPSBfcmVmLl9leHQsXG4gICAgICBfZXh0ID0gX3JlZiRfZXh0ID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkX2V4dCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgX2V4dFtiYXNlTmFtZV0gfHwge30pO1xufTsiLCJpbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplSGlkZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBoaWRlTG9hZGluZyA9IG5vcm1hbGl6ZUhpZGUoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGlzRGluZ2RpbmdNaW5pYXBwID8gZGQuaGlkZUxvYWRpbmcoYXJncykgOiBteS5oaWRlTG9hZGluZyhhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCBoaWRlTG9hZGluZzsiLCJpbXBvcnQgc2hvd0xvYWRpbmcgZnJvbSBcIi4vc2hvd0xvYWRpbmdcIjtcbmltcG9ydCBoaWRlTG9hZGluZyBmcm9tIFwiLi9oaWRlTG9hZGluZ1wiO1xuZXhwb3J0IHsgc2hvd0xvYWRpbmcsIGhpZGVMb2FkaW5nIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHNob3dMb2FkaW5nOiBzaG93TG9hZGluZyxcbiAgaGlkZUxvYWRpbmc6IGhpZGVMb2FkaW5nXG59OyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBub3JtYWxpemVTaG93IH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgdmFyIHNob3dMb2FkaW5nID0gbm9ybWFsaXplU2hvdyhmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5zaG93TG9hZGluZyhhcmdzKSA6IG15LnNob3dMb2FkaW5nKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IHNob3dMb2FkaW5nOyIsImltcG9ydCB7IG5vcm1hbGl6ZUhpZGUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCB2YXIgaGlkZUxvYWRpbmcgPSBub3JtYWxpemVIaWRlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBzd2FuLmhpZGVMb2FkaW5nKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgaGlkZUxvYWRpbmc7IiwiaW1wb3J0IHNob3dMb2FkaW5nIGZyb20gXCIuL3Nob3dMb2FkaW5nXCI7XG5pbXBvcnQgaGlkZUxvYWRpbmcgZnJvbSBcIi4vaGlkZUxvYWRpbmdcIjtcbmV4cG9ydCB7IHNob3dMb2FkaW5nLCBoaWRlTG9hZGluZyB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzaG93TG9hZGluZzogc2hvd0xvYWRpbmcsXG4gIGhpZGVMb2FkaW5nOiBoaWRlTG9hZGluZ1xufTsiLCJpbXBvcnQgeyBub3JtYWxpemVTaG93IH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgdmFyIHNob3dMb2FkaW5nID0gbm9ybWFsaXplU2hvdyhmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gc3dhbi5zaG93TG9hZGluZyhhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IHNob3dMb2FkaW5nOyIsImltcG9ydCB7IG5vcm1hbGl6ZUhpZGUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCB2YXIgaGlkZUxvYWRpbmcgPSBub3JtYWxpemVIaWRlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiB0dC5oaWRlTG9hZGluZyhhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgaGlkZUxvYWRpbmc7IiwiaW1wb3J0IHNob3dMb2FkaW5nIGZyb20gXCIuL3Nob3dMb2FkaW5nXCI7XG5pbXBvcnQgaGlkZUxvYWRpbmcgZnJvbSBcIi4vaGlkZUxvYWRpbmdcIjtcbmV4cG9ydCB7IHNob3dMb2FkaW5nLCBoaWRlTG9hZGluZyB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzaG93TG9hZGluZzogc2hvd0xvYWRpbmcsXG4gIGhpZGVMb2FkaW5nOiBoaWRlTG9hZGluZ1xufTsiLCJpbXBvcnQgeyBub3JtYWxpemVTaG93IH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgdmFyIHNob3dMb2FkaW5nID0gbm9ybWFsaXplU2hvdyhmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gdHQuc2hvd0xvYWRpbmcoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CWVRFKTtcbmV4cG9ydCBkZWZhdWx0IHNob3dMb2FkaW5nOyIsImltcG9ydCB7IGlzV2VDaGF0TWluaVByb2dyYW0sIGlzQnl0ZURhbmNlTWljcm9BcHAsIGlzQmFpZHVTbWFydFByb2dyYW0sIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSB9IGZyb20gXCJAdW5pL2VudlwiO1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSBcIi4vX3V0aWxzL3Byb21pc2lmeVwiO1xuaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcblxuZnVuY3Rpb24gc3R5bGVPcHRpb25zKG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG5cbiAgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0gfHwgaXNCeXRlRGFuY2VNaWNyb0FwcCB8fCBpc0JhaWR1U21hcnRQcm9ncmFtIHx8IGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIC8vIOWcqOW+ruS/oeOAgeeZvuW6puWSjOWtl+iKguWwj+eoi+W6j+S4rXRpdGxl5piv5b+F6YCJ6aG577yM5L2G5piv5Y+v5Lul5Lyg56m65a2X56ym5Liy77yM5b+r5omL5piv6YCJ5aGr6aG577yM5b6u5L+h5Y+v6IO95a2Y5ZyobWFza+aYvuekuumAj+aYjuiSmeWxgu+8jOmYsuatouinpuaRuOepv+mAj+eahOmXrumimO+8jOa1i+ivleeahOaXtuWAmeeci+S4i1xuICAgIG9wdGlvbnMudGl0bGUgPSBvcHRpb25zLmNvbnRlbnQgfHwgJyc7XG4gICAgZGVsZXRlIG9wdGlvbnMuY29udGVudDtcbiAgfVxuXG4gIHJldHVybiBvcHRpb25zO1xufVxuLyoqXG4gKiBzaG93TG9hZGluZ1xuICogQHBhcmFtIGFwaVxuICovXG5cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNob3coYXBpLCBjb250YWluZXJOYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJncykge1xuICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShzdHlsZU9wdGlvbnMoc3R5bGVJbihhcmdzLCBjb250YWluZXJOYW1lKSkpO1xuICB9O1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUhpZGUoYXBpLCBjb250YWluZXJOYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJncykge1xuICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShzdHlsZUluKGFyZ3MsIGNvbnRhaW5lck5hbWUpKTtcbiAgfTtcbn0iLCJpbXBvcnQgeyBpc01pbmlBcHAsIGlzV2VDaGF0TWluaVByb2dyYW0sIGlzV2ViLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0t1YWlTaG91TWluaVByb2dyYW0sIGlzQmFpZHVTbWFydFByb2dyYW0gfSBmcm9tIFwiQHVuaS9lbnZcIjtcbmltcG9ydCBhbGlNaW5pQXBwTW9kdWxlIGZyb20gXCIuL2FsaS1taW5pYXBwL2luZGV4XCI7XG5pbXBvcnQgd2ViTW9kdWxlIGZyb20gXCIuL3dlYi9pbmRleFwiO1xuaW1wb3J0IHdlQ2hhdE1vZHVsZSBmcm9tIFwiLi93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBieXRlZGFuY2VNb2R1bGUgZnJvbSBcIi4vYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4XCI7XG5pbXBvcnQga3VhaVNob3VNb2R1bGUgZnJvbSBcIi4va3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBiYWlEdU1vZHVsZSBmcm9tIFwiLi9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXhcIjtcbmV4cG9ydCB2YXIgc2hvd0xvYWRpbmcgPSBmdW5jdGlvbiBzaG93TG9hZGluZyhhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuc2hvd0xvYWRpbmcoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLnNob3dMb2FkaW5nKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLnNob3dMb2FkaW5nKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLnNob3dMb2FkaW5nKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLnNob3dMb2FkaW5nKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuc2hvd0xvYWRpbmcoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yac2hvd0xvYWRpbmfmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgaGlkZUxvYWRpbmcgPSBmdW5jdGlvbiBoaWRlTG9hZGluZyhhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuaGlkZUxvYWRpbmcoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmhpZGVMb2FkaW5nKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmhpZGVMb2FkaW5nKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmhpZGVMb2FkaW5nKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLmhpZGVMb2FkaW5nKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuaGlkZUxvYWRpbmcoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yaaGlkZUxvYWRpbmfmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2hvd0xvYWRpbmc6IHNob3dMb2FkaW5nLFxuICBoaWRlTG9hZGluZzogaGlkZUxvYWRpbmdcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplSGlkZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBoaWRlTG9hZGluZyA9IG5vcm1hbGl6ZUhpZGUoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGtzLmhpZGVMb2FkaW5nKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBoaWRlTG9hZGluZzsiLCJpbXBvcnQgc2hvd0xvYWRpbmcgZnJvbSBcIi4vc2hvd0xvYWRpbmdcIjtcbmltcG9ydCBoaWRlTG9hZGluZyBmcm9tIFwiLi9oaWRlTG9hZGluZ1wiO1xuZXhwb3J0IHsgc2hvd0xvYWRpbmcsIGhpZGVMb2FkaW5nIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHNob3dMb2FkaW5nOiBzaG93TG9hZGluZyxcbiAgaGlkZUxvYWRpbmc6IGhpZGVMb2FkaW5nXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZVNob3cgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCB2YXIgc2hvd0xvYWRpbmcgPSBub3JtYWxpemVTaG93KGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBrcy5zaG93TG9hZGluZyhhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgc2hvd0xvYWRpbmc7IiwiaW1wb3J0IHsgbm9ybWFsaXplSGlkZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBoaWRlTG9hZGluZyA9IG5vcm1hbGl6ZUhpZGUoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIF9yZWYkc3VjY2VzcyA9IF9yZWYuc3VjY2VzcyxcbiAgICAgIHN1Y2Nlc3MgPSBfcmVmJHN1Y2Nlc3MgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX3JlZiRzdWNjZXNzLFxuICAgICAgX3JlZiRmYWlsID0gX3JlZi5mYWlsLFxuICAgICAgZmFpbCA9IF9yZWYkZmFpbCA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfcmVmJGZhaWwsXG4gICAgICBfcmVmJGNvbXBsZXRlID0gX3JlZi5jb21wbGV0ZSxcbiAgICAgIGNvbXBsZXRlID0gX3JlZiRjb21wbGV0ZSA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfcmVmJGNvbXBsZXRlO1xuXG4gIHRyeSB7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAod2luZG93Ll9fdW5pX2xvYWRpbmdXaW4gJiYgd2luZG93Ll9fdW5pX2xvYWRpbmdXaW4ucGFyZW50Tm9kZSkge1xuICAgICAgICB3aW5kb3cuX191bmlfbG9hZGluZ1dpbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHdpbmRvdy5fX3VuaV9sb2FkaW5nV2luKTtcbiAgICAgIH1cblxuICAgICAgd2luZG93Ll9fdW5pX2xvYWRpbmdXaW4gPSBudWxsO1xuICAgICAgc3VjY2VzcygpO1xuICAgICAgY29tcGxldGUoKTtcbiAgICB9LCAwKTtcbiAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICBmYWlsKCk7XG4gICAgY29tcGxldGUoKTtcbiAgfVxufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IGhpZGVMb2FkaW5nOyIsImltcG9ydCBzaG93TG9hZGluZyBmcm9tIFwiLi9zaG93TG9hZGluZ1wiO1xuaW1wb3J0IGhpZGVMb2FkaW5nIGZyb20gXCIuL2hpZGVMb2FkaW5nXCI7XG5leHBvcnQgeyBzaG93TG9hZGluZywgaGlkZUxvYWRpbmcgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2hvd0xvYWRpbmc6IHNob3dMb2FkaW5nLFxuICBoaWRlTG9hZGluZzogaGlkZUxvYWRpbmdcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplU2hvdyB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuLy8gd2luZG93Ll9fdW5pX2xvYWRpbmdXaW4gPSBudWxsO1xudmFyIGNsc1ByZWZpeCA9ICdfX3VuaXZlcnNhbF9sb2FkaW5nJztcbnZhciBzdHlsZXMgPSAoXCIuXCIgKyBjbHNQcmVmaXggKyBcIiB7XFxuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNik7XFxuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xcbiAgbWF4LXdpZHRoOiA4MCU7XFxuICBjb2xvcjogI2ZmZmZmZjtcXG4gIHBhZGRpbmc6IDE1cHg7XFxuICBwb3NpdGlvbjogZml4ZWQ7XFxuICBsZWZ0OiA1MCU7XFxuICBib3R0b206IDUwJTtcXG4gIGJvcmRlci1yYWRpdXM6IDRweDtcXG4gIHRleHQtYWxpZ246IGNlbnRlcjtcXG4gIHRyYW5zZm9ybTogdHJhbnNsYXRlWCgtNTAlKTtcXG4gIC13ZWJraXQtdHJhbnNmb3JtOiB0cmFuc2xhdGVYKC01MCUpO1xcbiAgei1pbmRleDogOTk5OTtcXG4gIG91dGxpbmU6IG5vbmU7XFxufVxcbi5cIiArIGNsc1ByZWZpeCArIFwiX2NpcmNsZSB7XFxuICBib3JkZXI6IDJweCBzb2xpZCByZ2JhKDIwMCwgMjAwLCAyMDAsIDAuNSk7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICBwb3NpdGlvbjogcmVsYXRpdmU7XFxuICBoZWlnaHQ6IDQwcHg7XFxuICB3aWR0aDogNDBweDtcXG4gIG1hcmdpbjogYXV0bztcXG59XFxuLlwiICsgY2xzUHJlZml4ICsgXCJfY2lyY2xlOmFmdGVyIHtcXG4gIGNvbnRlbnQ6IFxcXCJcXFwiO1xcbiAgZGlzcGxheTogYmxvY2s7XFxuICBib3JkZXItcmFkaXVzOiA1MCU7XFxuICB3aWR0aDogMTAwJTtcXG4gIGhlaWdodDogMTAwJTtcXG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcXG4gIHRvcDogLTJweDtcXG4gIGxlZnQ6IC0ycHg7XFxuICBib3JkZXI6IDJweCBzb2xpZDtcXG4gIGJvcmRlci1jb2xvcjogdHJhbnNwYXJlbnQ7XFxuICBib3JkZXItbGVmdC1jb2xvcjogI2ZmZjtcXG4gIGJveC1zaXppbmc6IGNvbnRlbnQtYm94O1xcbiAgYW5pbWF0aW9uOiBcIiArIGNsc1ByZWZpeCArIFwiX3JvbGxlciAxcyBpbmZpbml0ZSBsaW5lYXI7XFxufVxcbi5cIiArIGNsc1ByZWZpeCArIFwiX3RleHQge1xcbiAgbWFyZ2luLXRvcDogNnB4O1xcbiAgY29sb3I6ICNmZmY7XFxuICBsaW5lLWhlaWdodDogMS41O1xcbiAgZm9udC1zaXplOiAxNHB4O1xcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xcbiAgZm9udC13ZWlnaHQ6IG5vcm1hbDtcXG59XFxuQGtleWZyYW1lcyBcIiArIGNsc1ByZWZpeCArIFwiX3JvbGxlciB7XFxuICAwJSB7XFxuICAgIHRyYW5zZm9ybTogcm90YXRlWigwKTtcXG4gIH1cXG4gIDEwMCUge1xcbiAgICB0cmFuc2Zvcm06IHJvdGF0ZVooMzYwZGVnKTtcXG4gIH1cXG59XCIpLnJlcGxhY2UoL1xcbi9nLCAnJyk7XG4vKlxuICogQHBhcmFtIG1lc3NhZ2Uge1N0cmluZ31cbiAqL1xuXG52YXIgc3R5bGVFbGVtZW50ID0gbnVsbDtcbmV4cG9ydCB2YXIgc2hvd0xvYWRpbmcgPSBub3JtYWxpemVTaG93KGZ1bmN0aW9uIChfcmVmKSB7XG4gIHZhciBfcmVmJGNvbnRlbnQgPSBfcmVmLmNvbnRlbnQsXG4gICAgICBjb250ZW50ID0gX3JlZiRjb250ZW50ID09PSB2b2lkIDAgPyAnJyA6IF9yZWYkY29udGVudCxcbiAgICAgIF9yZWYkc3VjY2VzcyA9IF9yZWYuc3VjY2VzcyxcbiAgICAgIHN1Y2Nlc3MgPSBfcmVmJHN1Y2Nlc3MgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX3JlZiRzdWNjZXNzLFxuICAgICAgX3JlZiRmYWlsID0gX3JlZi5mYWlsLFxuICAgICAgZmFpbCA9IF9yZWYkZmFpbCA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfcmVmJGZhaWwsXG4gICAgICBfcmVmJGNvbXBsZXRlID0gX3JlZi5jb21wbGV0ZSxcbiAgICAgIGNvbXBsZXRlID0gX3JlZiRjb21wbGV0ZSA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfcmVmJGNvbXBsZXRlO1xuXG4gIHRyeSB7XG4gICAgaWYgKCFzdHlsZUVsZW1lbnQpIHtcbiAgICAgIC8vIGNyZWF0ZSBhIHN0eWxlIHRhZyBmb3Iga2V5ZnJhbWVzXG4gICAgICBzdHlsZUVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgc3R5bGVFbGVtZW50LmlubmVySFRNTCA9IHN0eWxlcztcbiAgICAgIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50KTtcbiAgICB9XG5cbiAgICBpZiAoIXdpbmRvdy5fX3VuaV9sb2FkaW5nV2luKSB7XG4gICAgICAvLyBjcmVhdGUgbG9hZGluZyB3aW5cbiAgICAgIHdpbmRvdy5fX3VuaV9sb2FkaW5nV2luID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICB3aW5kb3cuX191bmlfbG9hZGluZ1dpbi5jbGFzc05hbWUgPSBjbHNQcmVmaXg7XG5cbiAgICAgIHdpbmRvdy5fX3VuaV9sb2FkaW5nV2luLnNldEF0dHJpYnV0ZSgncm9sZScsICdhbGVydCcpOyAvLyBzdXBwb3J0IGZvciBBUklBLCBhZGQgdGFiaW5kZXggZm9yIGZvY3VzXG4gICAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RhYmluZGV4XG5cblxuICAgICAgd2luZG93Ll9fdW5pX2xvYWRpbmdXaW4uc2V0QXR0cmlidXRlKCd0YWJpbmRleCcsICctMScpOyAvLyBhZGQgYSBjaXJjbGUgZWxlbWVudFxuXG5cbiAgICAgIHZhciBjaXJjbGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgIGNpcmNsZS5jbGFzc05hbWUgPSBjbHNQcmVmaXggKyBcIl9jaXJjbGVcIjtcblxuICAgICAgd2luZG93Ll9fdW5pX2xvYWRpbmdXaW4uYXBwZW5kQ2hpbGQoY2lyY2xlKTsgLy8gYWRkIHRleHQgZWxlbWVudFxuXG5cbiAgICAgIHZhciBfdGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgICBfdGV4dC5jbGFzc05hbWUgPSBjbHNQcmVmaXggKyBcIl90ZXh0XCI7XG5cbiAgICAgIHdpbmRvdy5fX3VuaV9sb2FkaW5nV2luLmFwcGVuZENoaWxkKF90ZXh0KTtcblxuICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh3aW5kb3cuX191bmlfbG9hZGluZ1dpbik7XG4gICAgfVxuXG4gICAgdmFyIHRleHQgPSB3aW5kb3cuX191bmlfbG9hZGluZ1dpbi5xdWVyeVNlbGVjdG9yKFwiLlwiICsgY2xzUHJlZml4ICsgXCJfdGV4dFwiKTtcblxuICAgIGlmIChjb250ZW50KSB7XG4gICAgICB0ZXh0LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snO1xuICAgICAgdGV4dC5pbm5lclRleHQgPSBjb250ZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICB0ZXh0LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gICAgICB0ZXh0LmlubmVyVGV4dCA9ICcnO1xuICAgIH1cblxuICAgIHN1Y2Nlc3MoKTtcbiAgICBjb21wbGV0ZSgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGZhaWwoKTtcbiAgICBjb21wbGV0ZSgpO1xuICB9XG59LCBDT05UQUlORVJfTkFNRS5XRUIpO1xuZXhwb3J0IGRlZmF1bHQgc2hvd0xvYWRpbmc7IiwiaW1wb3J0IHsgbm9ybWFsaXplSGlkZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBoaWRlTG9hZGluZyA9IG5vcm1hbGl6ZUhpZGUoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHd4LmhpZGVMb2FkaW5nKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IGhpZGVMb2FkaW5nOyIsImltcG9ydCBzaG93TG9hZGluZyBmcm9tIFwiLi9zaG93TG9hZGluZ1wiO1xuaW1wb3J0IGhpZGVMb2FkaW5nIGZyb20gXCIuL2hpZGVMb2FkaW5nXCI7XG5leHBvcnQgeyBzaG93TG9hZGluZywgaGlkZUxvYWRpbmcgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2hvd0xvYWRpbmc6IHNob3dMb2FkaW5nLFxuICBoaWRlTG9hZGluZzogaGlkZUxvYWRpbmdcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplU2hvdyB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBzaG93TG9hZGluZyA9IG5vcm1hbGl6ZVNob3coZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHd4LnNob3dMb2FkaW5nKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IHNob3dMb2FkaW5nOyIsImV4cG9ydCB2YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07IiwiZnVuY3Rpb24gaXNVbmRlZih0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSAndW5kZWZpbmVkJztcbn1cblxuZXhwb3J0IHZhciBpc0RpbmdkaW5nTWluaWFwcCA9ICFpc1VuZGVmKHR5cGVvZiBkZCkgJiYgZGQgIT09IG51bGwgJiYgIWlzVW5kZWYodHlwZW9mIGRkLmFsZXJ0KTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzaWZ5KGFwaSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcHJvbWlzaWZ5QXJnID0gYXJnO1xuICAgICAgYXBpKF9leHRlbmRzKHt9LCBwcm9taXNpZnlBcmcsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuc3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gb25TdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5mYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRmFpbDogZnVuY3Rpb24gb25GYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5jb21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbiBvbkNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25Db21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9O1xufSIsInZhciBfZXhjbHVkZWQgPSBbXCJfZXh0XCJdO1xuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCB2YXIgc3R5bGVPdXQgPSBmdW5jdGlvbiBzdHlsZU91dChvdXRwdXQsIG9yaWdpbmFsSW5wdXQsIG9yaWdpbmFsT3V0cHV0KSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0cHV0LCB7XG4gICAgX29yaWdpbmFsOiB7XG4gICAgICBpbnB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsSW5wdXQpLFxuICAgICAgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOWvueWFpeWPgui/m+ihjCBmb3JtYXQg5LmL5ZCO55qE57uT5p6cXG4gICAgICBvdXRwdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbE91dHB1dCkgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOi/lOWbnuWAvCBmb3JtYXQg5LmL5YmN55qE57uT5p6cXG5cbiAgICB9XG4gIH0pO1xufTtcbmV4cG9ydCB2YXIgc3R5bGVJbiA9IGZ1bmN0aW9uIHN0eWxlSW4ob3B0aW9ucywgYmFzZU5hbWUpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgX3JlZiRfZXh0ID0gX3JlZi5fZXh0LFxuICAgICAgX2V4dCA9IF9yZWYkX2V4dCA9PT0gdm9pZCAwID8ge30gOiBfcmVmJF9leHQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcblxuICByZXR1cm4gX2V4dGVuZHMoe30sIHJlc3QsIF9leHRbYmFzZU5hbWVdIHx8IHt9KTtcbn07IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplQ2hvb3NlTG9jYXRpb24gfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgY2hvb3NlTG9jYXRpb24gPSBub3JtYWxpemVDaG9vc2VMb2NhdGlvbihmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5jaG9vc2VMb2NhdGlvbihhcmdzKSA6IG15LmNob29zZUxvY2F0aW9uKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IGNob29zZUxvY2F0aW9uOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUdldExvY2F0aW9uIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIGdldExvY2F0aW9uID0gbm9ybWFsaXplR2V0TG9jYXRpb24oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgYXJncy5yZXN1bHRUeXBlID0gYXJncy5yZXN1bHRUeXBlIHx8IDA7XG5cbiAgaWYgKGFyZ3MgIT0gbnVsbCAmJiBhcmdzLnR5cGUgJiYgdHlwZW9mIGFyZ3MudHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICBhcmdzLnR5cGUgPSAwO1xuICB9XG5cbiAgaWYgKGFyZ3MgIT0gbnVsbCAmJiBhcmdzLnJlc3VsdFR5cGUgJiYgdHlwZW9mIGFyZ3MucmVzdWx0VHlwZSA9PT0gJ251bWJlcicgJiYgIWlzTmFOKGFyZ3MucmVzdWx0VHlwZSkpIHtcbiAgICBhcmdzLnR5cGUgPSBcIlwiICsgYXJncy5yZXN1bHRUeXBlO1xuICB9XG5cbiAgcmV0dXJuIGlzRGluZ2RpbmdNaW5pYXBwID8gZGQuZ2V0TG9jYXRpb24oYXJncykgOiBteS5nZXRMb2NhdGlvbihhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCBnZXRMb2NhdGlvbjsiLCJpbXBvcnQgZ2V0TG9jYXRpb24gZnJvbSBcIi4vZ2V0TG9jYXRpb25cIjtcbmltcG9ydCBvcGVuTG9jYXRpb24gZnJvbSBcIi4vb3BlbkxvY2F0aW9uXCI7XG5pbXBvcnQgY2hvb3NlTG9jYXRpb24gZnJvbSBcIi4vY2hvb3NlTG9jYXRpb25cIjtcbmV4cG9ydCB7IGdldExvY2F0aW9uLCBvcGVuTG9jYXRpb24sIGNob29zZUxvY2F0aW9uIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldExvY2F0aW9uOiBnZXRMb2NhdGlvbixcbiAgb3BlbkxvY2F0aW9uOiBvcGVuTG9jYXRpb24sXG4gIGNob29zZUxvY2F0aW9uOiBjaG9vc2VMb2NhdGlvblxufTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5pbXBvcnQgeyBub3JtYWxpemVPcGVuTG9jYXRpb24gfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgb3BlbkxvY2F0aW9uID0gbm9ybWFsaXplT3BlbkxvY2F0aW9uKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHZhciBwYXJhbXMgPSBfZXh0ZW5kcyh7fSwgYXJncywge1xuICAgIGxhdGl0dWRlOiBTdHJpbmcoYXJncy5sYXRpdHVkZSksXG4gICAgbG9uZ2l0dWRlOiBTdHJpbmcoYXJncy5sb25naXR1ZGUpXG4gIH0pO1xuXG4gIGlzRGluZ2RpbmdNaW5pYXBwID8gZGQub3BlbkxvY2F0aW9uKHBhcmFtcykgOiBteS5vcGVuTG9jYXRpb24ocGFyYW1zKTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCBvcGVuTG9jYXRpb247IiwiaW1wb3J0IHsgbm9ybWFsaXplQ2hvb3NlTG9jYXRpb24gfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBjaG9vc2VMb2NhdGlvbiA9IG5vcm1hbGl6ZUNob29zZUxvY2F0aW9uKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBzd2FuLmNob29zZUxvY2F0aW9uKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgY2hvb3NlTG9jYXRpb247IiwiaW1wb3J0IHsgbm9ybWFsaXplR2V0TG9jYXRpb24gfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRMb2NhdGlvbiA9IG5vcm1hbGl6ZUdldExvY2F0aW9uKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBzd2FuLmdldExvY2F0aW9uKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0TG9jYXRpb247IiwiaW1wb3J0IGdldExvY2F0aW9uIGZyb20gXCIuL2dldExvY2F0aW9uXCI7XG5pbXBvcnQgb3BlbkxvY2F0aW9uIGZyb20gXCIuL29wZW5Mb2NhdGlvblwiO1xuaW1wb3J0IGNob29zZUxvY2F0aW9uIGZyb20gXCIuL2Nob29zZUxvY2F0aW9uXCI7XG5leHBvcnQgeyBnZXRMb2NhdGlvbiwgb3BlbkxvY2F0aW9uLCBjaG9vc2VMb2NhdGlvbiB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRMb2NhdGlvbjogZ2V0TG9jYXRpb24sXG4gIG9wZW5Mb2NhdGlvbjogb3BlbkxvY2F0aW9uLFxuICBjaG9vc2VMb2NhdGlvbjogY2hvb3NlTG9jYXRpb25cbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgbm9ybWFsaXplT3BlbkxvY2F0aW9uIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgb3BlbkxvY2F0aW9uID0gbm9ybWFsaXplT3BlbkxvY2F0aW9uKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBzd2FuLm9wZW5Mb2NhdGlvbihfZXh0ZW5kcyh7fSwgYXJncywge1xuICAgIGxhdGl0dWRlOiBOdW1iZXIoYXJncy5sYXRpdHVkZSksXG4gICAgbG9uZ2l0dWRlOiBOdW1iZXIoYXJncy5sb25naXR1ZGUpXG4gIH0pKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IG9wZW5Mb2NhdGlvbjsiLCJpbXBvcnQgeyBub3JtYWxpemVDaG9vc2VMb2NhdGlvbiB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGNob29zZUxvY2F0aW9uID0gbm9ybWFsaXplQ2hvb3NlTG9jYXRpb24oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHR0LmNob29zZUxvY2F0aW9uKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCBjaG9vc2VMb2NhdGlvbjsiLCJpbXBvcnQgeyBub3JtYWxpemVHZXRMb2NhdGlvbiB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdldExvY2F0aW9uID0gbm9ybWFsaXplR2V0TG9jYXRpb24oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHR0LmdldExvY2F0aW9uKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCBnZXRMb2NhdGlvbjsiLCJpbXBvcnQgZ2V0TG9jYXRpb24gZnJvbSBcIi4vZ2V0TG9jYXRpb25cIjtcbmltcG9ydCBvcGVuTG9jYXRpb24gZnJvbSBcIi4vb3BlbkxvY2F0aW9uXCI7XG5pbXBvcnQgY2hvb3NlTG9jYXRpb24gZnJvbSBcIi4vY2hvb3NlTG9jYXRpb25cIjtcbmV4cG9ydCB7IGdldExvY2F0aW9uLCBvcGVuTG9jYXRpb24sIGNob29zZUxvY2F0aW9uIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldExvY2F0aW9uOiBnZXRMb2NhdGlvbixcbiAgb3BlbkxvY2F0aW9uOiBvcGVuTG9jYXRpb24sXG4gIGNob29zZUxvY2F0aW9uOiBjaG9vc2VMb2NhdGlvblxufTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemVPcGVuTG9jYXRpb24gfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBvcGVuTG9jYXRpb24gPSBub3JtYWxpemVPcGVuTG9jYXRpb24oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHR0Lm9wZW5Mb2NhdGlvbihfZXh0ZW5kcyh7fSwgYXJncywge1xuICAgIGxhdGl0dWRlOiBOdW1iZXIoYXJncy5sYXRpdHVkZSksXG4gICAgbG9uZ2l0dWRlOiBOdW1iZXIoYXJncy5sb25naXR1ZGUpXG4gIH0pKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgb3BlbkxvY2F0aW9uOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gXCIuL191dGlscy9wcm9taXNpZnlcIjtcbmltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5cbi8qKlxuICogZ2V0TG9jYXRpb27ov5Tlm57lgLzmoLzlvI/ljJZcbiAqIEBwYXJhbSByZXNcbiAqL1xudmFyIGZvcm1hdFJlc3BvbnNlID0gZnVuY3Rpb24gZm9ybWF0UmVzcG9uc2UocmVzKSB7XG4gIHZhciByZXN1bHQgPSBfZXh0ZW5kcyh7fSwgcmVzLCB7XG4gICAgbGF0aXR1ZGU6IFN0cmluZyhyZXMubGF0aXR1ZGUpLFxuICAgIGxvbmdpdHVkZTogU3RyaW5nKHJlcy5sb25naXR1ZGUpLFxuICAgIGFjY3VyYWN5OiBTdHJpbmcocmVzLmFjY3VyYWN5KSxcbiAgICBob3Jpem9udGFsQWNjdXJhY3k6IFN0cmluZyhyZXMuaG9yaXpvbnRhbEFjY3VyYWN5KVxuICB9KTtcblxuICByZXR1cm4gcmVzdWx0O1xufTtcblxuZnVuY3Rpb24gc3R5bGVPcHRpb25zKG9wdGlvbnMpIHtcbiAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkge1xuICAgIG9wdGlvbnMgPSB7fTtcbiAgfVxuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3B0aW9ucywge1xuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBvcHRpb25zLnN1Y2Nlc3MgJiYgb3B0aW9ucy5zdWNjZXNzKGZvcm1hdFJlc3BvbnNlKHJlcykpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgb3B0aW9ucy5jb21wbGV0ZSAmJiBvcHRpb25zLmNvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUdldExvY2F0aW9uKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoc3R5bGVPcHRpb25zKHN0eWxlSW4oYXJncywgY29udGFpbmVyTmFtZSkpKS50aGVuKGZvcm1hdFJlc3BvbnNlKTtcbiAgfTtcbn1cbi8qKlxuICogb3BlbkxvY2F0aW9uXG4gKiBAcGFyYW0gYXBpXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZU9wZW5Mb2NhdGlvbihhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4oYXJncywgY29udGFpbmVyTmFtZSkpO1xuICB9O1xufVxuLyoqXG4gKiBjaG9vc2VMb2NhdGlvblxuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVDaG9vc2VMb2NhdGlvbihhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4oYXJncywgY29udGFpbmVyTmFtZSkpO1xuICB9O1xufSIsImltcG9ydCB7IGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNXZWIsIGlzQnl0ZURhbmNlTWljcm9BcHAsIGlzQmFpZHVTbWFydFByb2dyYW0sIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSB9IGZyb20gXCJAdW5pL2VudlwiO1xuaW1wb3J0IGFsaU1pbmlBcHBNb2R1bGUgZnJvbSBcIi4vYWxpLW1pbmlhcHAvaW5kZXhcIjtcbmltcG9ydCB3ZWJNb2R1bGUgZnJvbSBcIi4vd2ViL2luZGV4XCI7XG5pbXBvcnQgd2VDaGF0TW9kdWxlIGZyb20gXCIuL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCBiYWlEdU1vZHVsZSBmcm9tIFwiLi9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBrdWFpU2hvdU1vZHVsZSBmcm9tIFwiLi9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleFwiO1xuZXhwb3J0IHZhciBnZXRMb2NhdGlvbiA9IGZ1bmN0aW9uIGdldExvY2F0aW9uKGFyZ3MpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5nZXRMb2NhdGlvbihhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUuZ2V0TG9jYXRpb24oYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuZ2V0TG9jYXRpb24oYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuZ2V0TG9jYXRpb24oYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUuZ2V0TG9jYXRpb24oYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5nZXRMb2NhdGlvbihhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpnZXRMb2NhdGlvbuaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBvcGVuTG9jYXRpb24gPSBmdW5jdGlvbiBvcGVuTG9jYXRpb24oYXJncykge1xuICBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLm9wZW5Mb2NhdGlvbihhcmdzKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5vcGVuTG9jYXRpb24oYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUub3BlbkxvY2F0aW9uKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLm9wZW5Mb2NhdGlvbihhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLm9wZW5Mb2NhdGlvbihhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpvcGVuTG9jYXRpb27mmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgY2hvb3NlTG9jYXRpb24gPSBmdW5jdGlvbiBjaG9vc2VMb2NhdGlvbihhcmdzKSB7XG4gIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUuY2hvb3NlTG9jYXRpb24oYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuY2hvb3NlTG9jYXRpb24oYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuY2hvb3NlTG9jYXRpb24oYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUuY2hvb3NlTG9jYXRpb24oYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5jaG9vc2VMb2NhdGlvbihhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0B1bmkvYXBpc++8mmNob29zZUxvY2F0aW9u5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldExvY2F0aW9uOiBnZXRMb2NhdGlvbixcbiAgb3BlbkxvY2F0aW9uOiBvcGVuTG9jYXRpb24sXG4gIGNob29zZUxvY2F0aW9uOiBjaG9vc2VMb2NhdGlvblxufTsiLCJpbXBvcnQgeyBub3JtYWxpemVDaG9vc2VMb2NhdGlvbiB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGNob29zZUxvY2F0aW9uID0gbm9ybWFsaXplQ2hvb3NlTG9jYXRpb24oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGtzLmNob29zZUxvY2F0aW9uKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBjaG9vc2VMb2NhdGlvbjsiLCJpbXBvcnQgeyBub3JtYWxpemVHZXRMb2NhdGlvbiB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdldExvY2F0aW9uID0gbm9ybWFsaXplR2V0TG9jYXRpb24oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGtzLmdldExvY2F0aW9uKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBnZXRMb2NhdGlvbjsiLCJpbXBvcnQgZ2V0TG9jYXRpb24gZnJvbSBcIi4vZ2V0TG9jYXRpb25cIjtcbmltcG9ydCBvcGVuTG9jYXRpb24gZnJvbSBcIi4vb3BlbkxvY2F0aW9uXCI7XG5pbXBvcnQgY2hvb3NlTG9jYXRpb24gZnJvbSBcIi4vY2hvb3NlTG9jYXRpb25cIjtcbmV4cG9ydCB7IGdldExvY2F0aW9uLCBvcGVuTG9jYXRpb24sIGNob29zZUxvY2F0aW9uIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldExvY2F0aW9uOiBnZXRMb2NhdGlvbixcbiAgb3BlbkxvY2F0aW9uOiBvcGVuTG9jYXRpb24sXG4gIGNob29zZUxvY2F0aW9uOiBjaG9vc2VMb2NhdGlvblxufTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBub3JtYWxpemVPcGVuTG9jYXRpb24gfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBvcGVuTG9jYXRpb24gPSBub3JtYWxpemVPcGVuTG9jYXRpb24oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGtzLm9wZW5Mb2NhdGlvbihfZXh0ZW5kcyh7fSwgYXJncywge1xuICAgIGxhdGl0dWRlOiBOdW1iZXIoYXJncy5sYXRpdHVkZSksXG4gICAgbG9uZ2l0dWRlOiBOdW1iZXIoYXJncy5sb25naXR1ZGUpXG4gIH0pKTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgb3BlbkxvY2F0aW9uOyIsImltcG9ydCB7IG5vcm1hbGl6ZUNob29zZUxvY2F0aW9uIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgY2hvb3NlTG9jYXRpb24gPSBub3JtYWxpemVDaG9vc2VMb2NhdGlvbihmdW5jdGlvbiAoKSB7XG4gIHRocm93IG5ldyBFcnJvcignQHVuaS9hcGlzOiBjaG9vc2VMb2NhdGlvbuS4jeaUr+aMgScpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IGNob29zZUxvY2F0aW9uOyIsImltcG9ydCB7IG5vcm1hbGl6ZUdldExvY2F0aW9uIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ2V0TG9jYXRpb24gPSBub3JtYWxpemVHZXRMb2NhdGlvbihmdW5jdGlvbiAoYXJncykge1xuICB2YXIgX2FyZ3Mkc3VjY2VzcyA9IGFyZ3Muc3VjY2VzcyxcbiAgICAgIHN1Y2Nlc3MgPSBfYXJncyRzdWNjZXNzID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9hcmdzJHN1Y2Nlc3MsXG4gICAgICBfYXJncyRmYWlsID0gYXJncy5mYWlsLFxuICAgICAgZmFpbCA9IF9hcmdzJGZhaWwgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX2FyZ3MkZmFpbCxcbiAgICAgIF9hcmdzJGNvbXBsZXRlID0gYXJncy5jb21wbGV0ZSxcbiAgICAgIGNvbXBsZXRlID0gX2FyZ3MkY29tcGxldGUgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX2FyZ3MkY29tcGxldGU7XG5cbiAgaWYgKCdnZW9sb2NhdGlvbicgaW4gbmF2aWdhdG9yKSB7XG4gICAgLyog5Zyw55CG5L2N572u5pyN5Yqh5Y+v55SoICovXG4gICAgbmF2aWdhdG9yLmdlb2xvY2F0aW9uLmdldEN1cnJlbnRQb3NpdGlvbihmdW5jdGlvbiAocG9zaXRpb24pIHtcbiAgICAgIHN1Y2Nlc3MocG9zaXRpb24uY29vcmRzKTtcbiAgICAgIGNvbXBsZXRlKHBvc2l0aW9uLmNvb3Jkcyk7XG4gICAgfSwgZnVuY3Rpb24gKGVycikge1xuICAgICAgZmFpbChlcnIpO1xuICAgICAgY29tcGxldGUoZXJyKTtcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICAvKiDlnLDnkIbkvY3nva7mnI3liqHkuI3lj6/nlKggKi9cbiAgICB2YXIgZXJyID0ge1xuICAgICAgY29kZTogLTEsXG4gICAgICBtZXNzYWdlOiAn5Zyw55CG5L2N572u5pyN5Yqh5LiN5Y+v55SoJ1xuICAgIH07XG4gICAgZmFpbChlcnIpO1xuICAgIGNvbXBsZXRlKGVycik7XG4gIH1cbn0sIENPTlRBSU5FUl9OQU1FLldFQik7XG5leHBvcnQgZGVmYXVsdCBnZXRMb2NhdGlvbjsiLCJpbXBvcnQgZ2V0TG9jYXRpb24gZnJvbSBcIi4vZ2V0TG9jYXRpb25cIjtcbmltcG9ydCBvcGVuTG9jYXRpb24gZnJvbSBcIi4vb3BlbkxvY2F0aW9uXCI7XG5pbXBvcnQgY2hvb3NlTG9jYXRpb24gZnJvbSBcIi4vY2hvb3NlTG9jYXRpb25cIjtcbmV4cG9ydCB7IGdldExvY2F0aW9uLCBvcGVuTG9jYXRpb24sIGNob29zZUxvY2F0aW9uIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldExvY2F0aW9uOiBnZXRMb2NhdGlvbixcbiAgb3BlbkxvY2F0aW9uOiBvcGVuTG9jYXRpb24sXG4gIGNob29zZUxvY2F0aW9uOiBjaG9vc2VMb2NhdGlvblxufTsiLCJpbXBvcnQgeyBub3JtYWxpemVPcGVuTG9jYXRpb24gfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBvcGVuTG9jYXRpb24gPSBub3JtYWxpemVPcGVuTG9jYXRpb24oZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEk6IG9wZW5Mb2NhdGlvbuS4jeaUr+aMgScpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IG9wZW5Mb2NhdGlvbjsiLCJpbXBvcnQgeyBub3JtYWxpemVDaG9vc2VMb2NhdGlvbiB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGNob29zZUxvY2F0aW9uID0gbm9ybWFsaXplQ2hvb3NlTG9jYXRpb24oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHd4LmNob29zZUxvY2F0aW9uKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IGNob29zZUxvY2F0aW9uOyIsImltcG9ydCB7IG5vcm1hbGl6ZUdldExvY2F0aW9uIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ2V0TG9jYXRpb24gPSBub3JtYWxpemVHZXRMb2NhdGlvbihmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gd3guZ2V0TG9jYXRpb24oYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0TG9jYXRpb247IiwiaW1wb3J0IGdldExvY2F0aW9uIGZyb20gXCIuL2dldExvY2F0aW9uXCI7XG5pbXBvcnQgb3BlbkxvY2F0aW9uIGZyb20gXCIuL29wZW5Mb2NhdGlvblwiO1xuaW1wb3J0IGNob29zZUxvY2F0aW9uIGZyb20gXCIuL2Nob29zZUxvY2F0aW9uXCI7XG5leHBvcnQgeyBnZXRMb2NhdGlvbiwgb3BlbkxvY2F0aW9uLCBjaG9vc2VMb2NhdGlvbiB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRMb2NhdGlvbjogZ2V0TG9jYXRpb24sXG4gIG9wZW5Mb2NhdGlvbjogb3BlbkxvY2F0aW9uLFxuICBjaG9vc2VMb2NhdGlvbjogY2hvb3NlTG9jYXRpb25cbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgbm9ybWFsaXplT3BlbkxvY2F0aW9uIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgb3BlbkxvY2F0aW9uID0gbm9ybWFsaXplT3BlbkxvY2F0aW9uKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiB3eC5vcGVuTG9jYXRpb24oX2V4dGVuZHMoe30sIGFyZ3MsIHtcbiAgICBsYXRpdHVkZTogTnVtYmVyKGFyZ3MubGF0aXR1ZGUpLFxuICAgIGxvbmdpdHVkZTogTnVtYmVyKGFyZ3MubG9uZ2l0dWRlKVxuICB9KSk7XG59LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuZXhwb3J0IGRlZmF1bHQgb3BlbkxvY2F0aW9uOyIsImV4cG9ydCB2YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07IiwiZnVuY3Rpb24gaXNVbmRlZih0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSAndW5kZWZpbmVkJztcbn1cblxuZXhwb3J0IHZhciBpc0RpbmdkaW5nTWluaWFwcCA9ICFpc1VuZGVmKHR5cGVvZiBkZCkgJiYgZGQgIT09IG51bGwgJiYgIWlzVW5kZWYodHlwZW9mIGRkLmFsZXJ0KTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzaWZ5KGFwaSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcHJvbWlzaWZ5QXJnID0gYXJnO1xuICAgICAgYXBpKF9leHRlbmRzKHt9LCBwcm9taXNpZnlBcmcsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuc3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gb25TdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5mYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRmFpbDogZnVuY3Rpb24gb25GYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5jb21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbiBvbkNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25Db21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9O1xufSIsInZhciBfZXhjbHVkZWQgPSBbXCJfZXh0XCJdO1xuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCB2YXIgc3R5bGVPdXQgPSBmdW5jdGlvbiBzdHlsZU91dChvdXRwdXQsIG9yaWdpbmFsSW5wdXQsIG9yaWdpbmFsT3V0cHV0KSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0cHV0LCB7XG4gICAgX29yaWdpbmFsOiB7XG4gICAgICBpbnB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsSW5wdXQpLFxuICAgICAgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOWvueWFpeWPgui/m+ihjCBmb3JtYXQg5LmL5ZCO55qE57uT5p6cXG4gICAgICBvdXRwdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbE91dHB1dCkgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOi/lOWbnuWAvCBmb3JtYXQg5LmL5YmN55qE57uT5p6cXG5cbiAgICB9XG4gIH0pO1xufTtcbmV4cG9ydCB2YXIgc3R5bGVJbiA9IGZ1bmN0aW9uIHN0eWxlSW4ob3B0aW9ucywgYmFzZU5hbWUpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgX3JlZiRfZXh0ID0gX3JlZi5fZXh0LFxuICAgICAgX2V4dCA9IF9yZWYkX2V4dCA9PT0gdm9pZCAwID8ge30gOiBfcmVmJF9leHQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcblxuICByZXR1cm4gX2V4dGVuZHMoe30sIHJlc3QsIF9leHRbYmFzZU5hbWVdIHx8IHt9KTtcbn07IiwidmFyIF9leGNsdWRlZCA9IFtcInBob25lTnVtYmVyXCJdO1xuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcblxudmFyIG1ha2VQaG9uZUNhbGwgPSBmdW5jdGlvbiBtYWtlUGhvbmVDYWxsKG9wdGlvbnMpIHtcbiAgaWYgKGlzRGluZ2RpbmdNaW5pYXBwKSB7XG4gICAgZGQuc2hvd0NhbGxNZW51KG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHZhciBwaG9uZU51bWJlciA9IG9wdGlvbnMucGhvbmVOdW1iZXIsXG4gICAgICAgIGV4dCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKG9wdGlvbnMsIF9leGNsdWRlZCk7XG5cbiAgICBteS5tYWtlUGhvbmVDYWxsKF9leHRlbmRzKHt9LCBleHQsIHtcbiAgICAgIG51bWJlcjogcGhvbmVOdW1iZXJcbiAgICB9KSk7XG4gIH1cbn07XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShtYWtlUGhvbmVDYWxsLCBDT05UQUlORVJfTkFNRS5BTElQQVkpOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG52YXIgbWFrZVBob25lQ2FsbCA9IGZ1bmN0aW9uIG1ha2VQaG9uZUNhbGwob3B0aW9ucykge1xuICBzd2FuLm1ha2VQaG9uZUNhbGwob3B0aW9ucyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUobWFrZVBob25lQ2FsbCwgQ09OVEFJTkVSX05BTUUuQkFJRFUpOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG52YXIgbWFrZVBob25lQ2FsbCA9IGZ1bmN0aW9uIG1ha2VQaG9uZUNhbGwob3B0aW9ucykge1xuICB0dC5tYWtlUGhvbmVDYWxsKG9wdGlvbnMpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgbm9ybWFsaXplKG1ha2VQaG9uZUNhbGwsIENPTlRBSU5FUl9OQU1FLkJZVEUpOyIsImltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gXCIuL191dGlscy9wcm9taXNpZnlcIjtcbmltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoc3R5bGVJbihhcmdzLCBjb250YWluZXJOYW1lKSk7XG4gIH07XG59IiwiaW1wb3J0IHsgaXNNaW5pQXBwLCBpc1dlQ2hhdE1pbmlQcm9ncmFtLCBpc1dlYiwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtLCBpc0JhaWR1U21hcnRQcm9ncmFtIH0gZnJvbSBcIkB1bmkvZW52XCI7XG5pbXBvcnQgYWxpTWluaUFwcE1vZHVsZSBmcm9tIFwiLi9hbGktbWluaWFwcC9pbmRleFwiO1xuaW1wb3J0IHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmltcG9ydCB3ZUNoYXRNb2R1bGUgZnJvbSBcIi4vd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYnl0ZWRhbmNlTW9kdWxlIGZyb20gXCIuL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleFwiO1xuaW1wb3J0IGt1YWlTaG91TW9kdWxlIGZyb20gXCIuL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYmFpRHVNb2R1bGUgZnJvbSBcIi4vYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4XCI7XG5cbi8qKlxuICogY2FsbCBwaG9uZVxuICogQHBhcmFtIG9wdGlvbnNcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1ha2VQaG9uZUNhbGwob3B0aW9ucykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZShvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZShvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZShvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZShvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mm1ha2VQaG9uZUNhbGwg5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn1cbmV4cG9ydCBkZWZhdWx0IG1ha2VQaG9uZUNhbGw7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbnZhciBtYWtlUGhvbmVDYWxsID0gZnVuY3Rpb24gbWFrZVBob25lQ2FsbChvcHRpb25zKSB7XG4gIGtzLm1ha2VQaG9uZUNhbGwob3B0aW9ucyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUobWFrZVBob25lQ2FsbCwgQ09OVEFJTkVSX05BTUUuS1dBSSk7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbnZhciBtYWtlUGhvbmVDYWxsID0gZnVuY3Rpb24gbWFrZVBob25lQ2FsbChvcHRpb25zKSB7XG4gIHZhciBwaG9uZU51bWJlciA9IG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMucGhvbmVOdW1iZXI7XG4gIHZhciBhID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpO1xuICBhLmhyZWYgPSBcInRlbDpcIiArIHBob25lTnVtYmVyO1xuICBhLmlubmVySFRNTCA9IFwidGVsOlwiICsgcGhvbmVOdW1iZXI7XG4gIGEuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChhKTtcbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgYS5jbGljaygpOyAvLyByZW1vdmVcblxuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgdHJ5IHtcbiAgICAgICAgZG9jdW1lbnQuYm9keS5yZW1vdmVDaGlsZChhKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHsvLyBpZ25vcmVcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIG9wdGlvbnMgPT0gbnVsbCA/IHZvaWQgMCA6IG9wdGlvbnMuc3VjY2VzcygpOyAvLyBzZXQgcmVzb2x2ZWRcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfSwgMCk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUobWFrZVBob25lQ2FsbCwgQ09OVEFJTkVSX05BTUUuV0VCKTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxudmFyIG1ha2VQaG9uZUNhbGwgPSBmdW5jdGlvbiBtYWtlUGhvbmVDYWxsKG9wdGlvbnMpIHtcbiAgd3gubWFrZVBob25lQ2FsbChvcHRpb25zKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShtYWtlUGhvbmVDYWxsLCBDT05UQUlORVJfTkFNRS5XRUNIQVQpOyIsImV4cG9ydCB2YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2lmeShhcGkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHByb21pc2lmeUFyZyA9IGFyZztcbiAgICAgIGFwaShfZXh0ZW5kcyh7fSwgcHJvbWlzaWZ5QXJnLCB7XG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5zdWNjZXNzKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBvblN1Y2Nlc3M6IGZ1bmN0aW9uIG9uU3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25TdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25TdWNjZXNzKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5mYWlsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuZmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBvbkZhaWw6IGZ1bmN0aW9uIG9uRmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25GYWlsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25GYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuY29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5jb21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24gb25Db21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25Db21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfTtcbn0iLCJ2YXIgX2V4Y2x1ZGVkID0gW1wiX2V4dFwiXTtcblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgdmFyIHN0eWxlT3V0ID0gZnVuY3Rpb24gc3R5bGVPdXQob3V0cHV0LCBvcmlnaW5hbElucHV0LCBvcmlnaW5hbE91dHB1dCkge1xuICByZXR1cm4gX2V4dGVuZHMoe30sIG91dHB1dCwge1xuICAgIF9vcmlnaW5hbDoge1xuICAgICAgaW5wdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbElucHV0KSxcbiAgICAgIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDlr7nlhaXlj4Lov5vooYwgZm9ybWF0IOS5i+WQjueahOe7k+aenFxuICAgICAgb3V0cHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxPdXRwdXQpIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDov5Tlm57lgLwgZm9ybWF0IOS5i+WJjeeahOe7k+aenFxuXG4gICAgfVxuICB9KTtcbn07XG5leHBvcnQgdmFyIHN0eWxlSW4gPSBmdW5jdGlvbiBzdHlsZUluKG9wdGlvbnMsIGJhc2VOYW1lKSB7XG4gIHZhciBfcmVmID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIF9yZWYkX2V4dCA9IF9yZWYuX2V4dCxcbiAgICAgIF9leHQgPSBfcmVmJF9leHQgPT09IHZvaWQgMCA/IHt9IDogX3JlZiRfZXh0LFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXN0LCBfZXh0W2Jhc2VOYW1lXSB8fCB7fSk7XG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGJhY2sgPSBub3JtYWxpemUuYmFjayhmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfc3VjY2VzcyA9IF9yZWYuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gX3JlZi5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gX3JlZi5jb21wbGV0ZTtcblxuICBteS5uYXZpZ2F0ZUJhY2soe1xuICAgIGRlbHRhOiAxLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCBiYWNrOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdvID0gbm9ybWFsaXplLmdvKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBzdGVwID0gb3B0aW9ucy5zdGVwLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG5cbiAgaWYgKHN0ZXAgPCAwKSB7XG4gICAgbXkubmF2aWdhdGVCYWNrKHtcbiAgICAgIGRlbHRhOiBNYXRoLmFicyhzdGVwKSxcbiAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgICB9LFxuICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBfZmFpbCAmJiBfZmFpbCh7XG4gICAgICBlcnJNc2c6ICdzdGVw5LiN6IO95aSn5LqO5oiW562J5LqOMCdcbiAgICB9KTtcbiAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHtcbiAgICAgIGVyck1zZzogJ3N0ZXDkuI3og73lpKfkuo7miJbnrYnkuo4wJ1xuICAgIH0pO1xuICB9XG59LCBDT05UQUlORVJfTkFNRS5BTElQQVkpO1xuZXhwb3J0IGRlZmF1bHQgZ287IiwiaW1wb3J0IGdvIGZyb20gXCIuL2dvXCI7XG5pbXBvcnQgYmFjayBmcm9tIFwiLi9iYWNrXCI7XG5pbXBvcnQgcmVMYXVuY2ggZnJvbSBcIi4vcmVMYXVuY2hcIjtcbmltcG9ydCByZXBsYWNlIGZyb20gXCIuL3JlcGxhY2VcIjtcbmltcG9ydCBwdXNoIGZyb20gXCIuL3B1c2hcIjtcbmltcG9ydCBzd2l0Y2hUYWIgZnJvbSBcIi4vc3dpdGNoVGFiXCI7XG5leHBvcnQgeyBnbywgcHVzaCwgcmVMYXVuY2gsIHN3aXRjaFRhYiwgcmVwbGFjZSwgYmFjayB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBwdXNoOiBwdXNoLFxuICBiYWNrOiBiYWNrLFxuICByZUxhdW5jaDogcmVMYXVuY2gsXG4gIHN3aXRjaFRhYjogc3dpdGNoVGFiLFxuICByZXBsYWNlOiByZXBsYWNlLFxuICBnbzogZ29cbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgcHVzaCA9IG5vcm1hbGl6ZS5wdXNoKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciB1cmwgPSBvcHRpb25zLnVybCxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICBteS5uYXZpZ2F0ZVRvKHtcbiAgICB1cmw6IHVybCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5BTElQQVkpO1xuZXhwb3J0IGRlZmF1bHQgcHVzaDsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCB2YXIgcmVMYXVuY2ggPSBub3JtYWxpemUucmVMYXVuY2goZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHVybCA9IG9wdGlvbnMudXJsLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIG15LnJlTGF1bmNoKHtcbiAgICB1cmw6IHVybCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5BTElQQVkpO1xuZXhwb3J0IGRlZmF1bHQgcmVMYXVuY2g7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgdmFyIHJlcGxhY2UgPSBub3JtYWxpemUucmVwbGFjZShmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICB1cmwgPSBfcmVmLnVybCxcbiAgICAgIF9zdWNjZXNzID0gX3JlZi5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlO1xuXG4gIG15LnJlZGlyZWN0VG8oe1xuICAgIHVybDogdXJsLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCByZXBsYWNlOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBzd2l0Y2hUYWIgPSBub3JtYWxpemUuc3dpdGNoVGFiKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIG15LnN3aXRjaFRhYihvcHRpb25zKTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCBzd2l0Y2hUYWI7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgYmFjayA9IG5vcm1hbGl6ZS5iYWNrKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBfcmVmID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIF9zdWNjZXNzID0gX3JlZi5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlO1xuXG4gIHN3YW4ubmF2aWdhdGVCYWNrKHtcbiAgICBkZWx0YTogMSxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCBiYWNrOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdvID0gbm9ybWFsaXplLmdvKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBzdGVwID0gb3B0aW9ucy5zdGVwLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG5cbiAgaWYgKHN0ZXAgPCAwKSB7XG4gICAgc3dhbi5uYXZpZ2F0ZUJhY2soe1xuICAgICAgZGVsdGE6IE1hdGguYWJzKHN0ZXApLFxuICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICAgIH0sXG4gICAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgICAgfSxcbiAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIF9mYWlsICYmIF9mYWlsKHtcbiAgICAgIGVyck1zZzogJ3N0ZXDkuI3og73lpKfkuo7miJbnrYnkuo4wJ1xuICAgIH0pO1xuICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUoe1xuICAgICAgZXJyTXNnOiAnc3RlcOS4jeiDveWkp+S6juaIluetieS6jjAnXG4gICAgfSk7XG4gIH1cbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IGdvOyIsImltcG9ydCBnbyBmcm9tIFwiLi9nb1wiO1xuaW1wb3J0IGJhY2sgZnJvbSBcIi4vYmFja1wiO1xuaW1wb3J0IHJlTGF1bmNoIGZyb20gXCIuL3JlTGF1bmNoXCI7XG5pbXBvcnQgcmVwbGFjZSBmcm9tIFwiLi9yZXBsYWNlXCI7XG5pbXBvcnQgcHVzaCBmcm9tIFwiLi9wdXNoXCI7XG5pbXBvcnQgc3dpdGNoVGFiIGZyb20gXCIuL3N3aXRjaFRhYlwiO1xuZXhwb3J0IHsgZ28sIHB1c2gsIHJlTGF1bmNoLCBzd2l0Y2hUYWIsIHJlcGxhY2UsIGJhY2sgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHVzaDogcHVzaCxcbiAgYmFjazogYmFjayxcbiAgcmVMYXVuY2g6IHJlTGF1bmNoLFxuICBzd2l0Y2hUYWI6IHN3aXRjaFRhYixcbiAgcmVwbGFjZTogcmVwbGFjZSxcbiAgZ286IGdvXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBwdXNoID0gbm9ybWFsaXplLnB1c2goZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHVybCA9IG9wdGlvbnMudXJsLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHN3YW4ubmF2aWdhdGVUbyh7XG4gICAgdXJsOiB1cmwsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgcHVzaDsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCB2YXIgcmVMYXVuY2ggPSBub3JtYWxpemUucmVMYXVuY2goZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHVybCA9IG9wdGlvbnMudXJsLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHN3YW4ucmVMYXVuY2goe1xuICAgIHVybDogdXJsLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IHJlTGF1bmNoOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciByZXBsYWNlID0gbm9ybWFsaXplLnJlcGxhY2UoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgdXJsID0gX3JlZi51cmwsXG4gICAgICBfc3VjY2VzcyA9IF9yZWYuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gX3JlZi5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gX3JlZi5jb21wbGV0ZTtcblxuICBzd2FuLnJlZGlyZWN0VG8oe1xuICAgIHVybDogdXJsLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IHJlcGxhY2U7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgdmFyIHN3aXRjaFRhYiA9IG5vcm1hbGl6ZS5zd2l0Y2hUYWIoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgc3dhbi5zd2l0Y2hUYWIob3B0aW9ucyk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCBzd2l0Y2hUYWI7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgYmFjayA9IG5vcm1hbGl6ZS5iYWNrKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBfcmVmID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIF9zdWNjZXNzID0gX3JlZi5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlO1xuXG4gIHR0Lm5hdmlnYXRlQmFjayh7XG4gICAgZGVsdGE6IDEsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCBiYWNrOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdvID0gbm9ybWFsaXplLmdvKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBzdGVwID0gb3B0aW9ucy5zdGVwLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG5cbiAgaWYgKHN0ZXAgPCAwKSB7XG4gICAgdHQubmF2aWdhdGVCYWNrKHtcbiAgICAgIGRlbHRhOiBNYXRoLmFicyhzdGVwKSxcbiAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgICB9LFxuICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBfZmFpbCAmJiBfZmFpbCh7XG4gICAgICBlcnJNc2c6ICdzdGVw5LiN6IO95aSn5LqO5oiW562J5LqOMCdcbiAgICB9KTtcbiAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHtcbiAgICAgIGVyck1zZzogJ3N0ZXDkuI3og73lpKfkuo7miJbnrYnkuo4wJ1xuICAgIH0pO1xuICB9XG59LCBDT05UQUlORVJfTkFNRS5CWVRFKTtcbmV4cG9ydCBkZWZhdWx0IGdvOyIsImltcG9ydCBnbyBmcm9tIFwiLi9nb1wiO1xuaW1wb3J0IGJhY2sgZnJvbSBcIi4vYmFja1wiO1xuaW1wb3J0IHJlTGF1bmNoIGZyb20gXCIuL3JlTGF1bmNoXCI7XG5pbXBvcnQgcmVwbGFjZSBmcm9tIFwiLi9yZXBsYWNlXCI7XG5pbXBvcnQgcHVzaCBmcm9tIFwiLi9wdXNoXCI7XG5pbXBvcnQgc3dpdGNoVGFiIGZyb20gXCIuL3N3aXRjaFRhYlwiO1xuZXhwb3J0IHsgZ28sIHB1c2gsIHJlTGF1bmNoLCBzd2l0Y2hUYWIsIHJlcGxhY2UsIGJhY2sgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHVzaDogcHVzaCxcbiAgYmFjazogYmFjayxcbiAgcmVMYXVuY2g6IHJlTGF1bmNoLFxuICBzd2l0Y2hUYWI6IHN3aXRjaFRhYixcbiAgcmVwbGFjZTogcmVwbGFjZSxcbiAgZ286IGdvXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBwdXNoID0gbm9ybWFsaXplLnB1c2goZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHVybCA9IG9wdGlvbnMudXJsLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHR0Lm5hdmlnYXRlVG8oe1xuICAgIHVybDogdXJsLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgcHVzaDsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCB2YXIgcmVMYXVuY2ggPSBub3JtYWxpemUucmVMYXVuY2goZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHVybCA9IG9wdGlvbnMudXJsLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHR0LnJlTGF1bmNoKHtcbiAgICB1cmw6IHVybCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5CWVRFKTtcbmV4cG9ydCBkZWZhdWx0IHJlTGF1bmNoOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciByZXBsYWNlID0gbm9ybWFsaXplLnJlcGxhY2UoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgdXJsID0gX3JlZi51cmwsXG4gICAgICBfc3VjY2VzcyA9IF9yZWYuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gX3JlZi5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gX3JlZi5jb21wbGV0ZTtcblxuICB0dC5yZWRpcmVjdFRvKHtcbiAgICB1cmw6IHVybCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5CWVRFKTtcbmV4cG9ydCBkZWZhdWx0IHJlcGxhY2U7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgdmFyIHN3aXRjaFRhYiA9IG5vcm1hbGl6ZS5zd2l0Y2hUYWIoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdHQuc3dpdGNoVGFiKG9wdGlvbnMpO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCBzd2l0Y2hUYWI7IiwiaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSBcIi4vX3V0aWxzL3Byb21pc2lmeVwiO1xuaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcbmV4cG9ydCB2YXIgbm9ybWFsaXplID0ge1xuICBwdXNoOiBmdW5jdGlvbiBwdXNoKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4ob3B0aW9ucywgY29udGFpbmVyTmFtZSkpO1xuICAgIH07XG4gIH0sXG4gIGJhY2s6IGZ1bmN0aW9uIGJhY2soYXBpLCBjb250YWluZXJOYW1lKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoc3R5bGVJbihvcHRpb25zLCBjb250YWluZXJOYW1lKSk7XG4gICAgfTtcbiAgfSxcbiAgZ286IGZ1bmN0aW9uIGdvKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4ob3B0aW9ucywgY29udGFpbmVyTmFtZSkpO1xuICAgIH07XG4gIH0sXG4gIHJlcGxhY2U6IGZ1bmN0aW9uIHJlcGxhY2UoYXBpLCBjb250YWluZXJOYW1lKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoc3R5bGVJbihvcHRpb25zLCBjb250YWluZXJOYW1lKSk7XG4gICAgfTtcbiAgfSxcbiAgcmVMYXVuY2g6IGZ1bmN0aW9uIHJlTGF1bmNoKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4ob3B0aW9ucywgY29udGFpbmVyTmFtZSkpO1xuICAgIH07XG4gIH0sXG4gIHN3aXRjaFRhYjogZnVuY3Rpb24gc3dpdGNoVGFiKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4ob3B0aW9ucywgY29udGFpbmVyTmFtZSkpO1xuICAgIH07XG4gIH1cbn07IiwiaW1wb3J0IHsgaXNNaW5pQXBwLCBpc1dlQ2hhdE1pbmlQcm9ncmFtLCBpc1dlYiwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtLCBpc0JhaWR1U21hcnRQcm9ncmFtIH0gZnJvbSBcIkB1bmkvZW52XCI7XG5pbXBvcnQgYWxpTWluaUFwcE1vZHVsZSBmcm9tIFwiLi9hbGktbWluaWFwcC9pbmRleFwiO1xuaW1wb3J0IHdlQ2hhdE1vZHVsZSBmcm9tIFwiLi93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBieXRlZGFuY2VNb2R1bGUgZnJvbSBcIi4vYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4XCI7XG5pbXBvcnQgd2ViTW9kdWxlIGZyb20gXCIuL3dlYi9pbmRleFwiO1xuaW1wb3J0IGt1YWlTaG91TW9kdWxlIGZyb20gXCIuL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYmFpRHVNb2R1bGUgZnJvbSBcIi4vYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4XCI7XG5leHBvcnQgdmFyIHB1c2ggPSBmdW5jdGlvbiBwdXNoKG9wdGlvbnMpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5wdXNoKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5wdXNoKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLnB1c2gob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUucHVzaChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5wdXNoKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUucHVzaChvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpuYXZpZ2F0ZS5wdXNoIOaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBnbyA9IGZ1bmN0aW9uIGdvKG9wdGlvbnMpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5nbyhvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUuZ28ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuZ28ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuZ28ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUuZ28ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5nbyhvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpuYXZpZ2F0ZS5nbyDmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgYmFjayA9IGZ1bmN0aW9uIGJhY2sob3B0aW9ucykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLmJhY2sob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmJhY2sob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuYmFjayhvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5iYWNrKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLmJhY2sob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5iYWNrKG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mm5hdmlnYXRlLmJhY2sg5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIHJlcGxhY2UgPSBmdW5jdGlvbiByZXBsYWNlKG9wdGlvbnMpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5yZXBsYWNlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5yZXBsYWNlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLnJlcGxhY2Uob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUucmVwbGFjZShvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5yZXBsYWNlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUucmVwbGFjZShvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpuYXZpZ2F0ZS5yZXBsYWNlIOaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciByZUxhdW5jaCA9IGZ1bmN0aW9uIHJlTGF1bmNoKG9wdGlvbnMpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5yZUxhdW5jaChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUucmVMYXVuY2gob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUucmVMYXVuY2gob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUucmVMYXVuY2gob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUucmVMYXVuY2gob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5yZUxhdW5jaChvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpuYXZpZ2F0ZS5yZUxhdW5jaCDmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgc3dpdGNoVGFiID0gZnVuY3Rpb24gc3dpdGNoVGFiKG9wdGlvbnMpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5zd2l0Y2hUYWIob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLnN3aXRjaFRhYihvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5zd2l0Y2hUYWIob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuc3dpdGNoVGFiKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLnN3aXRjaFRhYihvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLnN3aXRjaFRhYihvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpuYXZpZ2F0ZS5zd2l0Y2hUYWIg5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHB1c2g6IHB1c2gsXG4gIGJhY2s6IGJhY2ssXG4gIHJlTGF1bmNoOiByZUxhdW5jaCxcbiAgc3dpdGNoVGFiOiBzd2l0Y2hUYWIsXG4gIHJlcGxhY2U6IHJlcGxhY2UsXG4gIGdvOiBnb1xufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBiYWNrID0gbm9ybWFsaXplLmJhY2soZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgX3N1Y2Nlc3MgPSBfcmVmLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IF9yZWYuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IF9yZWYuY29tcGxldGU7XG5cbiAga3MubmF2aWdhdGVCYWNrKHtcbiAgICBkZWx0YTogMSxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbmV4cG9ydCBkZWZhdWx0IGJhY2s7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ28gPSBub3JtYWxpemUuZ28oZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHN0ZXAgPSBvcHRpb25zLnN0ZXAsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcblxuICBpZiAoc3RlcCA8IDApIHtcbiAgICBrcy5uYXZpZ2F0ZUJhY2soe1xuICAgICAgZGVsdGE6IE1hdGguYWJzKHN0ZXApLFxuICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICAgIH0sXG4gICAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgICAgfSxcbiAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIF9mYWlsICYmIF9mYWlsKHtcbiAgICAgIGVyck1zZzogJ3N0ZXDkuI3og73lpKfkuo7miJbnrYnkuo4wJ1xuICAgIH0pO1xuICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUoe1xuICAgICAgZXJyTXNnOiAnc3RlcOS4jeiDveWkp+S6juaIluetieS6jjAnXG4gICAgfSk7XG4gIH1cbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgZ287IiwiaW1wb3J0IGdvIGZyb20gXCIuL2dvXCI7XG5pbXBvcnQgYmFjayBmcm9tIFwiLi9iYWNrXCI7XG5pbXBvcnQgcmVMYXVuY2ggZnJvbSBcIi4vcmVMYXVuY2hcIjtcbmltcG9ydCByZXBsYWNlIGZyb20gXCIuL3JlcGxhY2VcIjtcbmltcG9ydCBwdXNoIGZyb20gXCIuL3B1c2hcIjtcbmltcG9ydCBzd2l0Y2hUYWIgZnJvbSBcIi4vc3dpdGNoVGFiXCI7XG5leHBvcnQgeyBnbywgcHVzaCwgcmVMYXVuY2gsIHN3aXRjaFRhYiwgcmVwbGFjZSwgYmFjayB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBwdXNoOiBwdXNoLFxuICBiYWNrOiBiYWNrLFxuICByZUxhdW5jaDogcmVMYXVuY2gsXG4gIHN3aXRjaFRhYjogc3dpdGNoVGFiLFxuICByZXBsYWNlOiByZXBsYWNlLFxuICBnbzogZ29cbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgdmFyIHB1c2ggPSBub3JtYWxpemUucHVzaChmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgdXJsID0gb3B0aW9ucy51cmwsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAga3MubmF2aWdhdGVUbyh7XG4gICAgdXJsOiB1cmwsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBwdXNoOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciByZUxhdW5jaCA9IG5vcm1hbGl6ZS5yZUxhdW5jaChmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgdXJsID0gb3B0aW9ucy51cmwsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAga3MucmVMYXVuY2goe1xuICAgIHVybDogdXJsLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgcmVMYXVuY2g7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgdmFyIHJlcGxhY2UgPSBub3JtYWxpemUucmVwbGFjZShmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICB1cmwgPSBfcmVmLnVybCxcbiAgICAgIF9zdWNjZXNzID0gX3JlZi5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlO1xuXG4gIGtzLnJlZGlyZWN0VG8oe1xuICAgIHVybDogdXJsLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgcmVwbGFjZTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCB2YXIgc3dpdGNoVGFiID0gbm9ybWFsaXplLnN3aXRjaFRhYihmdW5jdGlvbiAob3B0aW9ucykge1xuICBrcy5zd2l0Y2hUYWIob3B0aW9ucyk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbmV4cG9ydCBkZWZhdWx0IHN3aXRjaFRhYjsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBiYWNrID0gbm9ybWFsaXplLmJhY2soZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgc3VjY2VzcyA9IF9yZWYuc3VjY2VzcyxcbiAgICAgIGZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBjb21wbGV0ZSA9IF9yZWYuY29tcGxldGU7XG5cbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGhpc3RvcnkuZ28oLTEpO1xuICAgICAgc3VjY2VzcyAmJiBzdWNjZXNzKCk7XG4gICAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGZhaWwgJiYgZmFpbChlKTtcbiAgICAgIGNvbXBsZXRlICYmIGNvbXBsZXRlKGUpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5XRUIpO1xuZXhwb3J0IGRlZmF1bHQgYmFjazsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnbyA9IG5vcm1hbGl6ZS5nbyhmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgc3RlcCA9IG9wdGlvbnMuc3RlcCxcbiAgICAgIHN1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuXG4gIGlmIChzdGVwIDwgMCkge1xuICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgaGlzdG9yeS5nbyhvcHRpb25zLnN0ZXApO1xuICAgICAgc3VjY2VzcyAmJiBzdWNjZXNzKCk7XG4gICAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZSgpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGZhaWwgJiYgZmFpbCh7XG4gICAgICBlcnJNc2c6ICdzdGVw5LiN6IO95aSn5LqO5oiW562J5LqOMCdcbiAgICB9KTtcbiAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZSh7XG4gICAgICBlcnJNc2c6ICdzdGVw5LiN6IO95aSn5LqO5oiW562J5LqOMCdcbiAgICB9KTtcbiAgfVxufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IGdvOyIsImltcG9ydCBnbyBmcm9tIFwiLi9nb1wiO1xuaW1wb3J0IGJhY2sgZnJvbSBcIi4vYmFja1wiO1xuaW1wb3J0IHJlTGF1bmNoIGZyb20gXCIuL3JlTGF1bmNoXCI7XG5pbXBvcnQgcmVwbGFjZSBmcm9tIFwiLi9yZXBsYWNlXCI7XG5pbXBvcnQgcHVzaCBmcm9tIFwiLi9wdXNoXCI7XG5pbXBvcnQgc3dpdGNoVGFiIGZyb20gXCIuL3N3aXRjaFRhYlwiO1xuZXhwb3J0IHsgZ28sIHB1c2gsIHJlTGF1bmNoLCBzd2l0Y2hUYWIsIHJlcGxhY2UsIGJhY2sgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgcHVzaDogcHVzaCxcbiAgYmFjazogYmFjayxcbiAgcmVMYXVuY2g6IHJlTGF1bmNoLFxuICBzd2l0Y2hUYWI6IHN3aXRjaFRhYixcbiAgcmVwbGFjZTogcmVwbGFjZSxcbiAgZ286IGdvXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBwdXNoID0gbm9ybWFsaXplLnB1c2goZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHVybCA9IG9wdGlvbnMudXJsLFxuICAgICAgX29wdGlvbnMkaXNIYXNoID0gb3B0aW9ucy5pc0hhc2gsXG4gICAgICBpc0hhc2ggPSBfb3B0aW9ucyRpc0hhc2ggPT09IHZvaWQgMCA/IGZhbHNlIDogX29wdGlvbnMkaXNIYXNoLFxuICAgICAgX29wdGlvbnMkcmVmcmVzaCA9IG9wdGlvbnMucmVmcmVzaCxcbiAgICAgIHJlZnJlc2ggPSBfb3B0aW9ucyRyZWZyZXNoID09PSB2b2lkIDAgPyB0cnVlIDogX29wdGlvbnMkcmVmcmVzaCxcbiAgICAgIHN1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgaWYgKGlzSGFzaCkge1xuICAgICAgICBsb2NhdGlvbi5oYXNoID0gXCIjXCIgKyB1cmw7XG4gICAgICB9IGVsc2UgaWYgKHJlZnJlc2gpIHtcbiAgICAgICAgbG9jYXRpb24uaHJlZiA9IHVybDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IHtcbiAgICAgICAgICBwYWdlX2lkOiAxXG4gICAgICAgIH07XG4gICAgICAgIHZhciB0aXRsZSA9ICcnO1xuICAgICAgICBoaXN0b3J5LnB1c2hTdGF0ZShzdGF0ZSwgdGl0bGUsIHVybCk7XG4gICAgICB9XG5cbiAgICAgIHN1Y2Nlc3MgJiYgc3VjY2VzcygpO1xuICAgICAgY29tcGxldGUgJiYgY29tcGxldGUoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBmYWlsICYmIGZhaWwoZSk7XG4gICAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZShlKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IHB1c2g7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgdmFyIHJlTGF1bmNoID0gbm9ybWFsaXplLnJlTGF1bmNoKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciB1cmwgPSBvcHRpb25zLnVybCxcbiAgICAgIF9vcHRpb25zJGlzSGFzaCA9IG9wdGlvbnMuaXNIYXNoLFxuICAgICAgaXNIYXNoID0gX29wdGlvbnMkaXNIYXNoID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJGlzSGFzaCxcbiAgICAgIF9vcHRpb25zJHJlZnJlc2ggPSBvcHRpb25zLnJlZnJlc2gsXG4gICAgICByZWZyZXNoID0gX29wdGlvbnMkcmVmcmVzaCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9vcHRpb25zJHJlZnJlc2gsXG4gICAgICBzdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIGNvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcblxuICB2YXIgX3VybCA9IGlzSGFzaCA/IFwiLyNcIiArIHVybCA6IHVybDtcblxuICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgaGlzdG9yeS5nbygtKGhpc3RvcnkubGVuZ3RoIC0gMSkpO1xuICAgICAgaGlzdG9yeS5yZXBsYWNlU3RhdGUoJycsICcnLCBfdXJsKTtcbiAgICAgIHJlZnJlc2ggJiYgaGlzdG9yeS5nbygwKTtcbiAgICAgIHN1Y2Nlc3MgJiYgc3VjY2VzcygpO1xuICAgICAgY29tcGxldGUgJiYgY29tcGxldGUoKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBmYWlsICYmIGZhaWwoZSk7XG4gICAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZShlKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IHJlTGF1bmNoOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciByZXBsYWNlID0gbm9ybWFsaXplLnJlcGxhY2UoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgdXJsID0gX3JlZi51cmwsXG4gICAgICBfcmVmJGlzSGFzaCA9IF9yZWYuaXNIYXNoLFxuICAgICAgaXNIYXNoID0gX3JlZiRpc0hhc2ggPT09IHZvaWQgMCA/IGZhbHNlIDogX3JlZiRpc0hhc2gsXG4gICAgICBfcmVmJHJlZnJlc2ggPSBfcmVmLnJlZnJlc2gsXG4gICAgICByZWZyZXNoID0gX3JlZiRyZWZyZXNoID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZiRyZWZyZXNoLFxuICAgICAgc3VjY2VzcyA9IF9yZWYuc3VjY2VzcyxcbiAgICAgIGZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBjb21wbGV0ZSA9IF9yZWYuY29tcGxldGU7XG5cbiAgdmFyIF91cmwgPSBpc0hhc2ggPyBcIi8jXCIgKyB1cmwgOiB1cmw7XG5cbiAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGhpc3RvcnkucmVwbGFjZVN0YXRlKCcnLCAnJywgX3VybCk7XG4gICAgICByZWZyZXNoICYmIGhpc3RvcnkuZ28oMCk7XG4gICAgICBzdWNjZXNzICYmIHN1Y2Nlc3MoKTtcbiAgICAgIGNvbXBsZXRlICYmIGNvbXBsZXRlKCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZmFpbCAmJiBmYWlsKGUpO1xuICAgICAgY29tcGxldGUgJiYgY29tcGxldGUoZSk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQik7XG5leHBvcnQgZGVmYXVsdCByZXBsYWNlOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBzd2l0Y2hUYWIgPSBub3JtYWxpemUuc3dpdGNoVGFiKGZ1bmN0aW9uICgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdAdW5pL2FwaXM6IHN3aXRjaFRhYiDkuI3mlK/mjIEnKTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQik7XG5leHBvcnQgZGVmYXVsdCBzd2l0Y2hUYWI7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgYmFjayA9IG5vcm1hbGl6ZS5iYWNrKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBfcmVmID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIF9zdWNjZXNzID0gX3JlZi5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlO1xuXG4gIHd4Lm5hdmlnYXRlQmFjayh7XG4gICAgZGVsdGE6IDEsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IGJhY2s7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ28gPSBub3JtYWxpemUuZ28oZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHN0ZXAgPSBvcHRpb25zLnN0ZXAsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcblxuICBpZiAoc3RlcCA8IDApIHtcbiAgICB3eC5uYXZpZ2F0ZUJhY2soe1xuICAgICAgZGVsdGE6IE1hdGguYWJzKHN0ZXApLFxuICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICAgIH0sXG4gICAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgICAgfSxcbiAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIF9mYWlsICYmIF9mYWlsKHtcbiAgICAgIGVyck1zZzogJ3N0ZXDkuI3og73lpKfkuo7miJbnrYnkuo4wJ1xuICAgIH0pO1xuICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUoe1xuICAgICAgZXJyTXNnOiAnc3RlcOS4jeiDveWkp+S6juaIluetieS6jjAnXG4gICAgfSk7XG4gIH1cbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCBnbzsiLCJpbXBvcnQgZ28gZnJvbSBcIi4vZ29cIjtcbmltcG9ydCBiYWNrIGZyb20gXCIuL2JhY2tcIjtcbmltcG9ydCByZUxhdW5jaCBmcm9tIFwiLi9yZUxhdW5jaFwiO1xuaW1wb3J0IHJlcGxhY2UgZnJvbSBcIi4vcmVwbGFjZVwiO1xuaW1wb3J0IHB1c2ggZnJvbSBcIi4vcHVzaFwiO1xuaW1wb3J0IHN3aXRjaFRhYiBmcm9tIFwiLi9zd2l0Y2hUYWJcIjtcbmV4cG9ydCB7IGdvLCBwdXNoLCByZUxhdW5jaCwgc3dpdGNoVGFiLCByZXBsYWNlLCBiYWNrIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHB1c2g6IHB1c2gsXG4gIGJhY2s6IGJhY2ssXG4gIHJlTGF1bmNoOiByZUxhdW5jaCxcbiAgc3dpdGNoVGFiOiBzd2l0Y2hUYWIsXG4gIHJlcGxhY2U6IHJlcGxhY2UsXG4gIGdvOiBnb1xufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCB2YXIgcHVzaCA9IG5vcm1hbGl6ZS5wdXNoKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciB1cmwgPSBvcHRpb25zLnVybCxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB3eC5uYXZpZ2F0ZVRvKHtcbiAgICB1cmw6IHVybCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuZXhwb3J0IGRlZmF1bHQgcHVzaDsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCB2YXIgcmVMYXVuY2ggPSBub3JtYWxpemUucmVMYXVuY2goZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHVybCA9IG9wdGlvbnMudXJsLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHd4LnJlTGF1bmNoKHtcbiAgICB1cmw6IHVybCxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuZXhwb3J0IGRlZmF1bHQgcmVMYXVuY2g7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgdmFyIHJlcGxhY2UgPSBub3JtYWxpemUucmVwbGFjZShmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICB1cmwgPSBfcmVmLnVybCxcbiAgICAgIF9zdWNjZXNzID0gX3JlZi5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlO1xuXG4gIHd4LnJlZGlyZWN0VG8oe1xuICAgIHVybDogdXJsLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCByZXBsYWNlOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IHZhciBzd2l0Y2hUYWIgPSBub3JtYWxpemUuc3dpdGNoVGFiKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHd4LnN3aXRjaFRhYihvcHRpb25zKTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCBzd2l0Y2hUYWI7IiwiZXhwb3J0IHZhciBDT05UQUlORVJfTkFNRSA9IHtcbiAgV0VDSEFUOiAnd2VjaGF0TWluaVByb2dyYW0nLFxuICBBTElQQVk6ICdhbGlNaW5pQXBwJyxcbiAgQllURTogJ2J5dGVkYW5jZU1pY3JvQXBwJyxcbiAgV0VCOiAnd2ViJyxcbiAgQkFJRFU6ICdiYWlkdVNtYXJ0UHJvZ3JhbScsXG4gIEtXQUk6ICdrdWFpc2hvdU1pbmlQcm9ncmFtJ1xufTsiLCJmdW5jdGlvbiBpc1VuZGVmKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgdmFyIGlzRGluZ2RpbmdNaW5pYXBwID0gIWlzVW5kZWYodHlwZW9mIGRkKSAmJiBkZCAhPT0gbnVsbCAmJiAhaXNVbmRlZih0eXBlb2YgZGQuYWxlcnQpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNpZnkoYXBpKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBwcm9taXNpZnlBcmcgPSBhcmc7XG4gICAgICBhcGkoX2V4dGVuZHMoe30sIHByb21pc2lmeUFyZywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5zdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuc3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiBvblN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuZmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25GYWlsOiBmdW5jdGlvbiBvbkZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uRmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uRmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuY29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uIG9uQ29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH07XG59IiwidmFyIF9leGNsdWRlZCA9IFtcIl9leHRcIl07XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IHZhciBzdHlsZU91dCA9IGZ1bmN0aW9uIHN0eWxlT3V0KG91dHB1dCwgb3JpZ2luYWxJbnB1dCwgb3JpZ2luYWxPdXRwdXQpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRwdXQsIHtcbiAgICBfb3JpZ2luYWw6IHtcbiAgICAgIGlucHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxJbnB1dCksXG4gICAgICAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g5a+55YWl5Y+C6L+b6KGMIGZvcm1hdCDkuYvlkI7nmoTnu5PmnpxcbiAgICAgIG91dHB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsT3V0cHV0KSAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g6L+U5Zue5YC8IGZvcm1hdCDkuYvliY3nmoTnu5PmnpxcblxuICAgIH1cbiAgfSk7XG59O1xuZXhwb3J0IHZhciBzdHlsZUluID0gZnVuY3Rpb24gc3R5bGVJbihvcHRpb25zLCBiYXNlTmFtZSkge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfcmVmJF9leHQgPSBfcmVmLl9leHQsXG4gICAgICBfZXh0ID0gX3JlZiRfZXh0ID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkX2V4dCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgX2V4dFtiYXNlTmFtZV0gfHwge30pO1xufTsiLCJpbXBvcnQgc2V0TmF2aWdhdGlvbkJhckNvbG9yIGZyb20gXCIuL3NldE5hdmlnYXRpb25CYXJDb2xvclwiO1xuaW1wb3J0IHNldE5hdmlnYXRpb25CYXJUaXRsZSBmcm9tIFwiLi9zZXROYXZpZ2F0aW9uQmFyVGl0bGVcIjtcbmV4cG9ydCB7IHNldE5hdmlnYXRpb25CYXJDb2xvciwgc2V0TmF2aWdhdGlvbkJhclRpdGxlIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldE5hdmlnYXRpb25CYXJDb2xvcjogc2V0TmF2aWdhdGlvbkJhckNvbG9yLFxuICBzZXROYXZpZ2F0aW9uQmFyVGl0bGU6IHNldE5hdmlnYXRpb25CYXJUaXRsZVxufTsiLCJpbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhckNvbG9yIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc2V0TmF2aWdhdGlvbkJhckNvbG9yID0gbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhckNvbG9yKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLnNldE5hdmlnYXRpb25CYXIoYXJncykgOiBteS5zZXROYXZpZ2F0aW9uQmFyKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IHNldE5hdmlnYXRpb25CYXJDb2xvcjsiLCJpbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhclRpdGxlIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc2V0TmF2aWdhdGlvbkJhclRpdGxlID0gbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhclRpdGxlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLnNldE5hdmlnYXRpb25CYXIoYXJncykgOiBteS5zZXROYXZpZ2F0aW9uQmFyKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IHNldE5hdmlnYXRpb25CYXJUaXRsZTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gc3dhbi5nZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0KCk7XG59KTsiLCJpbXBvcnQgc2V0TmF2aWdhdGlvbkJhckNvbG9yIGZyb20gXCIuL3NldE5hdmlnYXRpb25CYXJDb2xvclwiO1xuaW1wb3J0IHNldE5hdmlnYXRpb25CYXJUaXRsZSBmcm9tIFwiLi9zZXROYXZpZ2F0aW9uQmFyVGl0bGVcIjtcbmltcG9ydCBnZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3RcIjtcbmV4cG9ydCB7IHNldE5hdmlnYXRpb25CYXJDb2xvciwgc2V0TmF2aWdhdGlvbkJhclRpdGxlLCBnZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0IH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldE5hdmlnYXRpb25CYXJDb2xvcjogc2V0TmF2aWdhdGlvbkJhckNvbG9yLFxuICBzZXROYXZpZ2F0aW9uQmFyVGl0bGU6IHNldE5hdmlnYXRpb25CYXJUaXRsZSxcbiAgZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdDogZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdFxufTsiLCJpbXBvcnQgeyBub3JtYWxpemVTZXROYXZpZ2F0aW9uQmFyQ29sb3IgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzZXROYXZpZ2F0aW9uQmFyQ29sb3IgPSBub3JtYWxpemVTZXROYXZpZ2F0aW9uQmFyQ29sb3IoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgc3dhbi5zZXROYXZpZ2F0aW9uQmFyQ29sb3IoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCBzZXROYXZpZ2F0aW9uQmFyQ29sb3I7IiwiaW1wb3J0IHsgbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhclRpdGxlIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc2V0TmF2aWdhdGlvbkJhclRpdGxlID0gbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhclRpdGxlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBzd2FuLnNldE5hdmlnYXRpb25CYXJUaXRsZShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IHNldE5hdmlnYXRpb25CYXJUaXRsZTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdHQuZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdCgpO1xufSk7IiwiaW1wb3J0IHNldE5hdmlnYXRpb25CYXJDb2xvciBmcm9tIFwiLi9zZXROYXZpZ2F0aW9uQmFyQ29sb3JcIjtcbmltcG9ydCBzZXROYXZpZ2F0aW9uQmFyVGl0bGUgZnJvbSBcIi4vc2V0TmF2aWdhdGlvbkJhclRpdGxlXCI7XG5pbXBvcnQgZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0XCI7XG5leHBvcnQgeyBzZXROYXZpZ2F0aW9uQmFyQ29sb3IsIHNldE5hdmlnYXRpb25CYXJUaXRsZSwgZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzZXROYXZpZ2F0aW9uQmFyQ29sb3I6IHNldE5hdmlnYXRpb25CYXJDb2xvcixcbiAgc2V0TmF2aWdhdGlvbkJhclRpdGxlOiBzZXROYXZpZ2F0aW9uQmFyVGl0bGUsXG4gIGdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3Q6IGdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3Rcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhckNvbG9yIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc2V0TmF2aWdhdGlvbkJhckNvbG9yID0gbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhckNvbG9yKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHR0LnNldE5hdmlnYXRpb25CYXJDb2xvcihhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgc2V0TmF2aWdhdGlvbkJhckNvbG9yOyIsImltcG9ydCB7IG5vcm1hbGl6ZVNldE5hdmlnYXRpb25CYXJUaXRsZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHNldE5hdmlnYXRpb25CYXJUaXRsZSA9IG5vcm1hbGl6ZVNldE5hdmlnYXRpb25CYXJUaXRsZShmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gdHQuc2V0TmF2aWdhdGlvbkJhclRpdGxlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCBzZXROYXZpZ2F0aW9uQmFyVGl0bGU7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSBcIi4vX3V0aWxzL3Byb21pc2lmeVwiO1xuaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcblxudmFyIHN0eWxlT3B0aW9ucyA9IGZ1bmN0aW9uIHN0eWxlT3B0aW9ucyhvcHRpb25zLCBjb250YWluZXJOYW1lKSB7XG4gIHZhciBhZnRlck9wdGlvbnMgPSBfZXh0ZW5kcyh7fSwgb3B0aW9ucyk7XG5cbiAgaWYgKCFhZnRlck9wdGlvbnMuZnJvbnRDb2xvcikge1xuICAgIGFmdGVyT3B0aW9ucy5mcm9udENvbG9yID0gJyMwMDAwMDAnO1xuICB9XG5cbiAgcmV0dXJuIGFmdGVyT3B0aW9ucztcbn07XG4vKipcbiAqIHNldE5hdmlnYXRpb25CYXJUaXRsZSBhcGlcbiAqIEBwYXJhbSBhcGlcbiAqIEBwYXJhbSBjb250YWluZXJOYW1lXG4gKiBAcmV0dXJuc1xuICovXG5cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNldE5hdmlnYXRpb25CYXJUaXRsZShhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4oYXJncywgY29udGFpbmVyTmFtZSkpO1xuICB9O1xufVxuLyoqXG4gKiBzZXROYXZpZ2F0aW9uQmFyQ29sb3IgYXBpXG4gKiBAcGFyYW0gYXBpXG4gKiBAcGFyYW0gY29udGFpbmVyTmFtZVxuICogQHJldHVybnNcbiAqL1xuXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhckNvbG9yKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoc3R5bGVPcHRpb25zKHN0eWxlSW4oYXJncywgY29udGFpbmVyTmFtZSksIGNvbnRhaW5lck5hbWUpKTtcbiAgfTtcbn0gLy8gZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3QoYXBpOiAoYXJncykgPT4gYW55LCBjb250YWluZXJOYW1lOiBzdHJpbmcpIHtcbi8vICAgcmV0dXJuIChhcmdzPykgPT4ge1xuLy8gICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShhcmdzKTtcbi8vICAgfTtcbi8vIH0iLCJpbXBvcnQgeyBpc01pbmlBcHAsIGlzV2VDaGF0TWluaVByb2dyYW0sIGlzV2ViLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0t1YWlTaG91TWluaVByb2dyYW0sIGlzQmFpZHVTbWFydFByb2dyYW0gfSBmcm9tIFwiQHVuaS9lbnZcIjtcbmltcG9ydCBhbGlNaW5pQXBwTW9kdWxlIGZyb20gXCIuL2FsaS1taW5pYXBwL2luZGV4XCI7XG5pbXBvcnQgd2ViTW9kdWxlIGZyb20gXCIuL3dlYi9pbmRleFwiO1xuaW1wb3J0IHdlQ2hhdE1vZHVsZSBmcm9tIFwiLi93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBieXRlZGFuY2VNb2R1bGUgZnJvbSBcIi4vYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4XCI7XG5pbXBvcnQga3VhaVNob3VNb2R1bGUgZnJvbSBcIi4va3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBiYWlEdU1vZHVsZSBmcm9tIFwiLi9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXhcIjtcbmV4cG9ydCB2YXIgc2V0TmF2aWdhdGlvbkJhckNvbG9yID0gZnVuY3Rpb24gc2V0TmF2aWdhdGlvbkJhckNvbG9yKGFyZ3MpIHtcbiAgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5zZXROYXZpZ2F0aW9uQmFyQ29sb3IoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuc2V0TmF2aWdhdGlvbkJhckNvbG9yKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLnNldE5hdmlnYXRpb25CYXJDb2xvcihhcmdzKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5zZXROYXZpZ2F0aW9uQmFyQ29sb3IoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5zZXROYXZpZ2F0aW9uQmFyQ29sb3IoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yac2V0TmF2aWdhdGlvbkJhckNvbG9y5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIHNldE5hdmlnYXRpb25CYXJUaXRsZSA9IGZ1bmN0aW9uIHNldE5hdmlnYXRpb25CYXJUaXRsZShhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuc2V0TmF2aWdhdGlvbkJhclRpdGxlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuc2V0TmF2aWdhdGlvbkJhclRpdGxlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLnNldE5hdmlnYXRpb25CYXJUaXRsZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yac2V0TmF2aWdhdGlvbkJhclRpdGxl5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3QgPSBmdW5jdGlvbiBnZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0KCkge1xuICBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5nZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0KCk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdCgpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mmdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3TmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2V0TmF2aWdhdGlvbkJhckNvbG9yOiBzZXROYXZpZ2F0aW9uQmFyQ29sb3IsXG4gIHNldE5hdmlnYXRpb25CYXJUaXRsZTogc2V0TmF2aWdhdGlvbkJhclRpdGxlLFxuICBnZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0OiBnZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0XG59OyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBrcy5nZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0KCk7XG59KTsiLCJpbXBvcnQgc2V0TmF2aWdhdGlvbkJhckNvbG9yIGZyb20gXCIuL3NldE5hdmlnYXRpb25CYXJDb2xvclwiO1xuaW1wb3J0IHNldE5hdmlnYXRpb25CYXJUaXRsZSBmcm9tIFwiLi9zZXROYXZpZ2F0aW9uQmFyVGl0bGVcIjtcbmltcG9ydCBnZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0IGZyb20gXCIuL2dldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3RcIjtcbmV4cG9ydCB7IHNldE5hdmlnYXRpb25CYXJDb2xvciwgc2V0TmF2aWdhdGlvbkJhclRpdGxlLCBnZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0IH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldE5hdmlnYXRpb25CYXJDb2xvcjogc2V0TmF2aWdhdGlvbkJhckNvbG9yLFxuICBzZXROYXZpZ2F0aW9uQmFyVGl0bGU6IHNldE5hdmlnYXRpb25CYXJUaXRsZSxcbiAgZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdDogZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdFxufTsiLCJpbXBvcnQgeyBub3JtYWxpemVTZXROYXZpZ2F0aW9uQmFyQ29sb3IgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzZXROYXZpZ2F0aW9uQmFyQ29sb3IgPSBub3JtYWxpemVTZXROYXZpZ2F0aW9uQmFyQ29sb3IoZnVuY3Rpb24gKGFyZ3MpIHtcbiAga3Muc2V0TmF2aWdhdGlvbkJhckNvbG9yKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBzZXROYXZpZ2F0aW9uQmFyQ29sb3I7IiwiaW1wb3J0IHsgbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhclRpdGxlIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc2V0TmF2aWdhdGlvbkJhclRpdGxlID0gbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhclRpdGxlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBrcy5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbmV4cG9ydCBkZWZhdWx0IHNldE5hdmlnYXRpb25CYXJUaXRsZTsiLCJpbXBvcnQgc2V0TmF2aWdhdGlvbkJhclRpdGxlIGZyb20gXCIuL3NldE5hdmlnYXRpb25CYXJUaXRsZVwiO1xuZXhwb3J0IHsgc2V0TmF2aWdhdGlvbkJhclRpdGxlIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHNldE5hdmlnYXRpb25CYXJUaXRsZTogc2V0TmF2aWdhdGlvbkJhclRpdGxlXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZVNldE5hdmlnYXRpb25CYXJUaXRsZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuLyoqXG4gKiDliqjmgIHorr7nva7lvZPliY3pobXpnaLnmoTmoIfpophcbiAqL1xuXG52YXIgc2V0TmF2aWdhdGlvbkJhclRpdGxlID0gbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhclRpdGxlKGZ1bmN0aW9uIChfcmVmKSB7XG4gIHZhciB0aXRsZSA9IF9yZWYudGl0bGUsXG4gICAgICBfcmVmJHN1Y2Nlc3MgPSBfcmVmLnN1Y2Nlc3MsXG4gICAgICBzdWNjZXNzID0gX3JlZiRzdWNjZXNzID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9yZWYkc3VjY2VzcyxcbiAgICAgIF9yZWYkZmFpbCA9IF9yZWYuZmFpbCxcbiAgICAgIGZhaWwgPSBfcmVmJGZhaWwgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX3JlZiRmYWlsLFxuICAgICAgX3JlZiRjb21wbGV0ZSA9IF9yZWYuY29tcGxldGUsXG4gICAgICBjb21wbGV0ZSA9IF9yZWYkY29tcGxldGUgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX3JlZiRjb21wbGV0ZTtcblxuICB0cnkge1xuICAgIGRvY3VtZW50LnRpdGxlID0gdGl0bGU7XG4gICAgc3VjY2VzcygpO1xuICAgIGNvbXBsZXRlKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZmFpbCgpO1xuICAgIGNvbXBsZXRlKCk7XG4gIH1cbn0sIENPTlRBSU5FUl9OQU1FLldFQik7XG5leHBvcnQgZGVmYXVsdCBzZXROYXZpZ2F0aW9uQmFyVGl0bGU7IiwiLy8gaW1wb3J0IHsgbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhckNvbG9yIH0gZnJvbSAnLi4vY29tbW9uJztcbi8vIGltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSAnQHV0aWxzL2NvbnN0YW50Jztcbi8vIGNvbnN0IGdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3QgPSBub3JtYWxpemVTZXROYXZpZ2F0aW9uQmFyQ29sb3IoKGFyZ3MpID0+IHtcbi8vICAgd3guc2V0TmF2aWdhdGlvbkJhckNvbG9yKGFyZ3MpO1xuLy8gfSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbi8vIGV4cG9ydCBkZWZhdWx0IGdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3Q7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gd3guZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdCgpO1xufSk7IiwiaW1wb3J0IHNldE5hdmlnYXRpb25CYXJDb2xvciBmcm9tIFwiLi9zZXROYXZpZ2F0aW9uQmFyQ29sb3JcIjtcbmltcG9ydCBzZXROYXZpZ2F0aW9uQmFyVGl0bGUgZnJvbSBcIi4vc2V0TmF2aWdhdGlvbkJhclRpdGxlXCI7XG5pbXBvcnQgZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdCBmcm9tIFwiLi9nZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0XCI7XG5leHBvcnQgeyBzZXROYXZpZ2F0aW9uQmFyQ29sb3IsIHNldE5hdmlnYXRpb25CYXJUaXRsZSwgZ2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzZXROYXZpZ2F0aW9uQmFyQ29sb3I6IHNldE5hdmlnYXRpb25CYXJDb2xvcixcbiAgc2V0TmF2aWdhdGlvbkJhclRpdGxlOiBzZXROYXZpZ2F0aW9uQmFyVGl0bGUsXG4gIGdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3Q6IGdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3Rcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhckNvbG9yIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc2V0TmF2aWdhdGlvbkJhckNvbG9yID0gbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhckNvbG9yKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHd4LnNldE5hdmlnYXRpb25CYXJDb2xvcihhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCBzZXROYXZpZ2F0aW9uQmFyQ29sb3I7IiwiaW1wb3J0IHsgbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhclRpdGxlIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc2V0TmF2aWdhdGlvbkJhclRpdGxlID0gbm9ybWFsaXplU2V0TmF2aWdhdGlvbkJhclRpdGxlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiB3eC5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuZXhwb3J0IGRlZmF1bHQgc2V0TmF2aWdhdGlvbkJhclRpdGxlOyIsImV4cG9ydCB2YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2lmeShhcGkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHByb21pc2lmeUFyZyA9IGFyZztcbiAgICAgIGFwaShfZXh0ZW5kcyh7fSwgcHJvbWlzaWZ5QXJnLCB7XG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5zdWNjZXNzKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBvblN1Y2Nlc3M6IGZ1bmN0aW9uIG9uU3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25TdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25TdWNjZXNzKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5mYWlsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuZmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBvbkZhaWw6IGZ1bmN0aW9uIG9uRmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25GYWlsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25GYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuY29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5jb21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24gb25Db21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25Db21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfTtcbn0iLCJ2YXIgX2V4Y2x1ZGVkID0gW1wiX2V4dFwiXTtcblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgdmFyIHN0eWxlT3V0ID0gZnVuY3Rpb24gc3R5bGVPdXQob3V0cHV0LCBvcmlnaW5hbElucHV0LCBvcmlnaW5hbE91dHB1dCkge1xuICByZXR1cm4gX2V4dGVuZHMoe30sIG91dHB1dCwge1xuICAgIF9vcmlnaW5hbDoge1xuICAgICAgaW5wdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbElucHV0KSxcbiAgICAgIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDlr7nlhaXlj4Lov5vooYwgZm9ybWF0IOS5i+WQjueahOe7k+aenFxuICAgICAgb3V0cHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxPdXRwdXQpIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDov5Tlm57lgLwgZm9ybWF0IOS5i+WJjeeahOe7k+aenFxuXG4gICAgfVxuICB9KTtcbn07XG5leHBvcnQgdmFyIHN0eWxlSW4gPSBmdW5jdGlvbiBzdHlsZUluKG9wdGlvbnMsIGJhc2VOYW1lKSB7XG4gIHZhciBfcmVmID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIF9yZWYkX2V4dCA9IF9yZWYuX2V4dCxcbiAgICAgIF9leHQgPSBfcmVmJF9leHQgPT09IHZvaWQgMCA/IHt9IDogX3JlZiRfZXh0LFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXN0LCBfZXh0W2Jhc2VOYW1lXSB8fCB7fSk7XG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IGRlZmF1bHQgbm9ybWFsaXplKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIG15LnBhZ2VTY3JvbGxUbyhvcHRpb25zKTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgc3dhbi5wYWdlU2Nyb2xsVG8ob3B0aW9ucyk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdHQucGFnZVNjcm9sbFRvKG9wdGlvbnMpO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSBcIi4vX3V0aWxzL3Byb21pc2lmeVwiO1xuaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoYXBpLCBjb250YWluZXJOYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHZhciBtZXJnZWRPcHRpb25zID0gX2V4dGVuZHMoe1xuICAgICAgZHVyYXRpb246IDMwMFxuICAgIH0sIG9wdGlvbnMpOyAvLyB0aGUgYHNjcm9sbFRvcGAgaGFzIGhpZ2hlciBwcmlvcml0eVxuXG5cbiAgICBpZiAobWVyZ2VkT3B0aW9ucy5zY3JvbGxUb3AgIT0gbnVsbCkge1xuICAgICAgbWVyZ2VkT3B0aW9ucy5zZWxlY3RvciA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoIU51bWJlcihtZXJnZWRPcHRpb25zLmR1cmF0aW9uKSB8fCBtZXJnZWRPcHRpb25zLmR1cmF0aW9uIDwgMCkge1xuICAgICAgbWVyZ2VkT3B0aW9ucy5kdXJhdGlvbiA9IDA7XG4gICAgfVxuXG4gICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4obWVyZ2VkT3B0aW9ucywgY29udGFpbmVyTmFtZSkpO1xuICB9O1xufSIsImltcG9ydCB7IGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNXZWIsIGlzQnl0ZURhbmNlTWljcm9BcHAsIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSwgaXNCYWlkdVNtYXJ0UHJvZ3JhbSB9IGZyb20gXCJAdW5pL2VudlwiO1xuaW1wb3J0IGFsaU1pbmlBcHBNb2R1bGUgZnJvbSBcIi4vYWxpLW1pbmlhcHAvaW5kZXhcIjtcbmltcG9ydCB3ZWJNb2R1bGUgZnJvbSBcIi4vd2ViL2luZGV4XCI7XG5pbXBvcnQgd2VDaGF0TW9kdWxlIGZyb20gXCIuL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCBrdWFpU2hvdU1vZHVsZSBmcm9tIFwiLi9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJhaUR1TW9kdWxlIGZyb20gXCIuL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleFwiO1xuZXhwb3J0IGZ1bmN0aW9uIHBhZ2VTY3JvbGxUbyhvcHRpb25zKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUob3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yacGFnZVNjcm9sbFRvIOaaguS4jeaUr+aMgScpO1xuICB9XG59XG5leHBvcnQgZGVmYXVsdCBwYWdlU2Nyb2xsVG87IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAga3MucGFnZVNjcm9sbFRvKG9wdGlvbnMpO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHNlbGVjdG9yID0gb3B0aW9ucy5zZWxlY3RvcixcbiAgICAgIGR1cmF0aW9uID0gb3B0aW9ucy5kdXJhdGlvbixcbiAgICAgIHN1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB2YXIgc2Nyb2xsVG9wID0gb3B0aW9ucy5zY3JvbGxUb3A7XG4gIHZhciByb290RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudDtcbiAgdmFyIHRvcCA9IHJvb3RFbGVtZW50LnNjcm9sbFRvcDtcblxuICBpZiAoc2Nyb2xsVG9wID09IG51bGwpIHtcbiAgICBpZiAoIXNlbGVjdG9yKSB7XG4gICAgICB2YXIgbXNnID0gJ2BzY3JvbGxUb3BgIG9yIGBzZWxlY3RvcmAgaXMgcmVxdWlyZWQnO1xuICAgICAgZmFpbChtc2cpO1xuICAgICAgY29tcGxldGUobXNnKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgZWxlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcihzZWxlY3Rvcik7XG5cbiAgICBpZiAoIWVsZSkge1xuICAgICAgdmFyIF9tc2cgPSBcIlRoZSBlbGVtZW50IGNhbm5vdCBiZSBmb3VuZCBieSB0aGUgc2VsZWN0b3IgYFwiICsgc2VsZWN0b3IgKyBcImBcIjtcblxuICAgICAgZmFpbChfbXNnKTtcbiAgICAgIGNvbXBsZXRlKF9tc2cpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNjcm9sbFRvcCA9IHRvcCArIGVsZS5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKS50b3A7XG4gIH0gLy8gQWxyZWFkeSBhdCB0aGUgdGFyZ2V0IHBvc2l0aW9uXG5cblxuICBpZiAodG9wID09PSBzY3JvbGxUb3ApIHtcbiAgICBzdWNjZXNzKCdPSycpO1xuICAgIGNvbXBsZXRlKCdPSycpO1xuICAgIHJldHVybjtcbiAgfSAvLyBTY3JvbGwgaW1tZWRpYXRlbHlcblxuXG4gIGlmIChOdW1iZXIoZHVyYXRpb24pID09PSAwKSB7XG4gICAgcm9vdEVsZW1lbnQuc2Nyb2xsVG9wID0gc2Nyb2xsVG9wO1xuICAgIHN1Y2Nlc3MoJ09LJyk7XG4gICAgY29tcGxldGUoJ09LJyk7XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgdmFyIG1heFNjcm9sbFRvcCA9IHJvb3RFbGVtZW50LnNjcm9sbEhlaWdodCAtIHJvb3RFbGVtZW50LmNsaWVudEhlaWdodDtcblxuICBpZiAoc2Nyb2xsVG9wIDwgMCkge1xuICAgIHNjcm9sbFRvcCA9IDA7XG4gIH0gZWxzZSBpZiAoc2Nyb2xsVG9wID4gbWF4U2Nyb2xsVG9wKSB7XG4gICAgc2Nyb2xsVG9wID0gbWF4U2Nyb2xsVG9wO1xuICB9IC8vIFNjcm9sbCBkaXN0YW5jZSBwZXIgMW1zXG5cblxuICB2YXIgc3BlZWQgPSAoc2Nyb2xsVG9wIC0gdG9wKSAvIGR1cmF0aW9uO1xuXG4gIHZhciBoYW5kbGVTY3JvbGwgPSBmdW5jdGlvbiBoYW5kbGVTY3JvbGwoc3RhcnRUaW1lKSB7XG4gICAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBjb3N0ID0gRGF0ZS5ub3coKSAtIHN0YXJ0VGltZTtcblxuICAgICAgaWYgKGNvc3QgPCA1KSB7XG4gICAgICAgIC8vIHRocm90dGxlXG4gICAgICAgIGhhbmRsZVNjcm9sbChzdGFydFRpbWUpO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRvcCA9IHJvb3RFbGVtZW50LnNjcm9sbFRvcDtcbiAgICAgIHZhciBuZXh0VG9wID0gdG9wICsgY29zdCAqIHNwZWVkO1xuXG4gICAgICBpZiAoc3BlZWQgPiAwICYmIG5leHRUb3AgPiBzY3JvbGxUb3AgfHwgc3BlZWQgPCAwICYmIG5leHRUb3AgPCBzY3JvbGxUb3ApIHtcbiAgICAgICAgbmV4dFRvcCA9IHNjcm9sbFRvcDtcbiAgICAgIH1cblxuICAgICAgcm9vdEVsZW1lbnQuc2Nyb2xsVG9wID0gbmV4dFRvcDtcblxuICAgICAgaWYgKG5leHRUb3AgPT09IHNjcm9sbFRvcCkge1xuICAgICAgICBzdWNjZXNzKCdPSycpO1xuICAgICAgICBjb21wbGV0ZSgnT0snKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGhhbmRsZVNjcm9sbChEYXRlLm5vdygpKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTsgLy8gc3RhcnQgc2Nyb2xsaW5nXG5cblxuICBoYW5kbGVTY3JvbGwoRGF0ZS5ub3coKSk7XG59LCBDT05UQUlORVJfTkFNRS5XRUIpOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuZXhwb3J0IGRlZmF1bHQgbm9ybWFsaXplKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHd4LnBhZ2VTY3JvbGxUbyhvcHRpb25zKTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7IiwiZXhwb3J0IHZhciBDT05UQUlORVJfTkFNRSA9IHtcbiAgV0VDSEFUOiAnd2VjaGF0TWluaVByb2dyYW0nLFxuICBBTElQQVk6ICdhbGlNaW5pQXBwJyxcbiAgQllURTogJ2J5dGVkYW5jZU1pY3JvQXBwJyxcbiAgV0VCOiAnd2ViJyxcbiAgQkFJRFU6ICdiYWlkdVNtYXJ0UHJvZ3JhbScsXG4gIEtXQUk6ICdrdWFpc2hvdU1pbmlQcm9ncmFtJ1xufTsiLCJmdW5jdGlvbiBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIGtleSwgYXJnKSB7IHRyeSB7IHZhciBpbmZvID0gZ2VuW2tleV0oYXJnKTsgdmFyIHZhbHVlID0gaW5mby52YWx1ZTsgfSBjYXRjaCAoZXJyb3IpIHsgcmVqZWN0KGVycm9yKTsgcmV0dXJuOyB9IGlmIChpbmZvLmRvbmUpIHsgcmVzb2x2ZSh2YWx1ZSk7IH0gZWxzZSB7IFByb21pc2UucmVzb2x2ZSh2YWx1ZSkudGhlbihfbmV4dCwgX3Rocm93KTsgfSB9XG5cbmZ1bmN0aW9uIF9hc3luY1RvR2VuZXJhdG9yKGZuKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHZhciBzZWxmID0gdGhpcywgYXJncyA9IGFyZ3VtZW50czsgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHsgdmFyIGdlbiA9IGZuLmFwcGx5KHNlbGYsIGFyZ3MpOyBmdW5jdGlvbiBfbmV4dCh2YWx1ZSkgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwibmV4dFwiLCB2YWx1ZSk7IH0gZnVuY3Rpb24gX3Rocm93KGVycikgeyBhc3luY0dlbmVyYXRvclN0ZXAoZ2VuLCByZXNvbHZlLCByZWplY3QsIF9uZXh0LCBfdGhyb3csIFwidGhyb3dcIiwgZXJyKTsgfSBfbmV4dCh1bmRlZmluZWQpOyB9KTsgfTsgfVxuXG52YXIgRXZlbnRzID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gRXZlbnRzKCkge1xuICAgIHRoaXMuZXZlbnRzID0gdm9pZCAwO1xuICAgIHRoaXMuZXZlbnRzID0ge307XG4gIH1cblxuICB2YXIgX3Byb3RvID0gRXZlbnRzLnByb3RvdHlwZTtcblxuICBfcHJvdG8uZW1pdCA9IGZ1bmN0aW9uIGVtaXQoa2V5LCBwYXJhbXMpIHtcbiAgICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gICAgaWYgKHRoaXMuZXZlbnRzW2tleV0gJiYgdGhpcy5ldmVudHNba2V5XS5zaXplID4gMCkge1xuICAgICAgdmFyIF9xdWV1ZSA9IG5ldyBTZXQoQXJyYXkuZnJvbSh0aGlzLmV2ZW50c1trZXldKSk7XG5cbiAgICAgIF9xdWV1ZS5mb3JFYWNoKCAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgX3JlZiA9IF9hc3luY1RvR2VuZXJhdG9yKCAvKiNfX1BVUkVfXyovcmVnZW5lcmF0b3JSdW50aW1lLm1hcmsoZnVuY3Rpb24gX2NhbGxlZShpdGVtKSB7XG4gICAgICAgICAgcmV0dXJuIHJlZ2VuZXJhdG9yUnVudGltZS53cmFwKGZ1bmN0aW9uIF9jYWxsZWUkKF9jb250ZXh0KSB7XG4gICAgICAgICAgICB3aGlsZSAoMSkge1xuICAgICAgICAgICAgICBzd2l0Y2ggKF9jb250ZXh0LnByZXYgPSBfY29udGV4dC5uZXh0KSB7XG4gICAgICAgICAgICAgICAgY2FzZSAwOlxuICAgICAgICAgICAgICAgICAgaXRlbS5oYW5kbGVyKHBhcmFtcyk7XG5cbiAgICAgICAgICAgICAgICAgIGlmIChpdGVtLm9uY2UpIHtcbiAgICAgICAgICAgICAgICAgICAgX3RoaXMuZXZlbnRzW2tleV0uZGVsZXRlKGl0ZW0pO1xuICAgICAgICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICAgICAgY2FzZSAyOlxuICAgICAgICAgICAgICAgIGNhc2UgXCJlbmRcIjpcbiAgICAgICAgICAgICAgICAgIHJldHVybiBfY29udGV4dC5zdG9wKCk7XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9LCBfY2FsbGVlKTtcbiAgICAgICAgfSkpO1xuXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoX3gpIHtcbiAgICAgICAgICByZXR1cm4gX3JlZi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgICB9O1xuICAgICAgfSgpKTtcbiAgICB9XG4gIH0gLy8gYXN5bmMgX2VtaXQoa2V5OiBzdHJpbmcsIHBhcmFtczogYW55KSB7XG4gIC8vICAgaWYgKHRoaXMuZXZlbnRzW2tleV0gJiYgdGhpcy5ldmVudHNba2V5XS5sZW5ndGggPiAwKSB7XG4gIC8vICAgICBjb25zdCBpdGVtID0gdGhpcy5ldmVudHNba2V5XS5zaGlmdCgpO1xuICAvLyAgICAgaWYgKGlzQXN5bmMoaXRlbSkpIHtcbiAgLy8gICAgICAgYXdhaXQgaXRlbShwYXJhbXMpO1xuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgaXRlbShwYXJhbXMpO1xuICAvLyAgICAgfVxuICAvLyAgICAgdGhpcy5lbWl0KGtleSwgcGFyYW1zKTtcbiAgLy8gICB9XG4gIC8vIH1cbiAgO1xuXG4gIF9wcm90by5vbmNlID0gZnVuY3Rpb24gb25jZShrZXksIGNiKSB7XG4gICAgdmFyIGl0ZW0gPSB7XG4gICAgICBvbmNlOiB0cnVlLFxuICAgICAgaGFuZGxlcjogY2JcbiAgICB9O1xuICAgIHRoaXMuZXZlbnRzW2tleV0gPyB0aGlzLmV2ZW50c1trZXldLmFkZChpdGVtKSA6IHRoaXMuZXZlbnRzW2tleV0gPSBuZXcgU2V0KFtpdGVtXSk7IC8vIHJldHVybiAoKSA9PiB7XG4gICAgLy8gICB0aGlzLmV2ZW50c1trZXldLmRlbGV0ZShpdGVtKTtcbiAgICAvLyB9O1xuICB9O1xuXG4gIF9wcm90by5yZWdpc3RlciA9IGZ1bmN0aW9uIHJlZ2lzdGVyKGtleSwgY2IpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHZhciBpdGVtID0ge1xuICAgICAgb25jZTogZmFsc2UsXG4gICAgICBoYW5kbGVyOiBjYlxuICAgIH07XG4gICAgdGhpcy5ldmVudHNba2V5XSA/IHRoaXMuZXZlbnRzW2tleV0uYWRkKGl0ZW0pIDogdGhpcy5ldmVudHNba2V5XSA9IG5ldyBTZXQoW2l0ZW1dKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgX3RoaXMyLmV2ZW50c1trZXldLmRlbGV0ZShpdGVtKTtcbiAgICB9O1xuICB9O1xuXG4gIHJldHVybiBFdmVudHM7XG59KCk7XG5cbmV4cG9ydCB7IEV2ZW50cyBhcyBkZWZhdWx0IH07IiwiZnVuY3Rpb24gaXNVbmRlZih0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSAndW5kZWZpbmVkJztcbn1cblxuZXhwb3J0IHZhciBpc0RpbmdkaW5nTWluaWFwcCA9ICFpc1VuZGVmKHR5cGVvZiBkZCkgJiYgZGQgIT09IG51bGwgJiYgIWlzVW5kZWYodHlwZW9mIGRkLmFsZXJ0KTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzaWZ5KGFwaSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcHJvbWlzaWZ5QXJnID0gYXJnO1xuICAgICAgYXBpKF9leHRlbmRzKHt9LCBwcm9taXNpZnlBcmcsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuc3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gb25TdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5mYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRmFpbDogZnVuY3Rpb24gb25GYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5jb21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbiBvbkNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25Db21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9O1xufSIsInZhciBfZXhjbHVkZWQgPSBbXCJfZXh0XCJdO1xuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCB2YXIgc3R5bGVPdXQgPSBmdW5jdGlvbiBzdHlsZU91dChvdXRwdXQsIG9yaWdpbmFsSW5wdXQsIG9yaWdpbmFsT3V0cHV0KSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0cHV0LCB7XG4gICAgX29yaWdpbmFsOiB7XG4gICAgICBpbnB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsSW5wdXQpLFxuICAgICAgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOWvueWFpeWPgui/m+ihjCBmb3JtYXQg5LmL5ZCO55qE57uT5p6cXG4gICAgICBvdXRwdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbE91dHB1dCkgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOi/lOWbnuWAvCBmb3JtYXQg5LmL5YmN55qE57uT5p6cXG5cbiAgICB9XG4gIH0pO1xufTtcbmV4cG9ydCB2YXIgc3R5bGVJbiA9IGZ1bmN0aW9uIHN0eWxlSW4ob3B0aW9ucywgYmFzZU5hbWUpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgX3JlZiRfZXh0ID0gX3JlZi5fZXh0LFxuICAgICAgX2V4dCA9IF9yZWYkX2V4dCA9PT0gdm9pZCAwID8ge30gOiBfcmVmJF9leHQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcblxuICByZXR1cm4gX2V4dGVuZHMoe30sIHJlc3QsIF9leHRbYmFzZU5hbWVdIHx8IHt9KTtcbn07IiwiaW1wb3J0IHN0YXJ0UHVsbERvd25SZWZyZXNoIGZyb20gXCIuL3N0YXJ0UHVsbERvd25SZWZyZXNoXCI7XG5pbXBvcnQgc3RvcFB1bGxEb3duUmVmcmVzaCBmcm9tIFwiLi9zdG9wUHVsbERvd25SZWZyZXNoXCI7XG5leHBvcnQgeyBzdGFydFB1bGxEb3duUmVmcmVzaCwgc3RvcFB1bGxEb3duUmVmcmVzaCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzdGFydFB1bGxEb3duUmVmcmVzaDogc3RhcnRQdWxsRG93blJlZnJlc2gsXG4gIHN0b3BQdWxsRG93blJlZnJlc2g6IHN0b3BQdWxsRG93blJlZnJlc2hcbn07IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZVN0YXJ0IH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc3RhcnRQdWxsRG93blJlZnJlc2ggPSBub3JtYWxpemVTdGFydChmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gaXNEaW5nZGluZ01pbmlhcHAgPyBjb25zb2xlLndhcm4oJ0B1bmkvYXBpc++8mmRkLnN0YXJ0UHVsbERvd25SZWZyZXNo5pqC5LiN5pSv5oyBJykgOiBteS5zdGFydFB1bGxEb3duUmVmcmVzaChhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCBzdGFydFB1bGxEb3duUmVmcmVzaDsiLCJpbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplU3RvcCB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHN0b3BQdWxsRG93blJlZnJlc2ggPSBub3JtYWxpemVTdG9wKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLnN0b3BQdWxsRG93blJlZnJlc2goYXJncykgOiBteS5zdG9wUHVsbERvd25SZWZyZXNoKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IHN0b3BQdWxsRG93blJlZnJlc2g7IiwiaW1wb3J0IHN0YXJ0UHVsbERvd25SZWZyZXNoIGZyb20gXCIuL3N0YXJ0UHVsbERvd25SZWZyZXNoXCI7XG5pbXBvcnQgc3RvcFB1bGxEb3duUmVmcmVzaCBmcm9tIFwiLi9zdG9wUHVsbERvd25SZWZyZXNoXCI7XG5leHBvcnQgeyBzdGFydFB1bGxEb3duUmVmcmVzaCwgc3RvcFB1bGxEb3duUmVmcmVzaCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzdGFydFB1bGxEb3duUmVmcmVzaDogc3RhcnRQdWxsRG93blJlZnJlc2gsXG4gIHN0b3BQdWxsRG93blJlZnJlc2g6IHN0b3BQdWxsRG93blJlZnJlc2hcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplU3RhcnQgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzdGFydFB1bGxEb3duUmVmcmVzaCA9IG5vcm1hbGl6ZVN0YXJ0KGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBzd2FuLnN0YXJ0UHVsbERvd25SZWZyZXNoKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgc3RhcnRQdWxsRG93blJlZnJlc2g7IiwiaW1wb3J0IHsgbm9ybWFsaXplU3RvcCB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHN0b3BQdWxsRG93blJlZnJlc2ggPSBub3JtYWxpemVTdG9wKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBzd2FuLnN0b3BQdWxsRG93blJlZnJlc2goYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCBzdG9wUHVsbERvd25SZWZyZXNoOyIsImltcG9ydCBzdGFydFB1bGxEb3duUmVmcmVzaCBmcm9tIFwiLi9zdGFydFB1bGxEb3duUmVmcmVzaFwiO1xuaW1wb3J0IHN0b3BQdWxsRG93blJlZnJlc2ggZnJvbSBcIi4vc3RvcFB1bGxEb3duUmVmcmVzaFwiO1xuZXhwb3J0IHsgc3RhcnRQdWxsRG93blJlZnJlc2gsIHN0b3BQdWxsRG93blJlZnJlc2ggfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc3RhcnRQdWxsRG93blJlZnJlc2g6IHN0YXJ0UHVsbERvd25SZWZyZXNoLFxuICBzdG9wUHVsbERvd25SZWZyZXNoOiBzdG9wUHVsbERvd25SZWZyZXNoXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZVN0YXJ0IH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc3RhcnRQdWxsRG93blJlZnJlc2ggPSBub3JtYWxpemVTdGFydChmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gdHQuc3RhcnRQdWxsRG93blJlZnJlc2goYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CWVRFKTtcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0UHVsbERvd25SZWZyZXNoOyIsImltcG9ydCB7IG5vcm1hbGl6ZVN0b3AgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzdG9wUHVsbERvd25SZWZyZXNoID0gbm9ybWFsaXplU3RvcChmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gdHQuc3RvcFB1bGxEb3duUmVmcmVzaChhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgc3RvcFB1bGxEb3duUmVmcmVzaDsiLCJpbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tIFwiLi9fdXRpbHMvcHJvbWlzaWZ5XCI7XG5pbXBvcnQgeyBzdHlsZUluIH0gZnJvbSBcIi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiO1xuLyoqXG4gKiBzdGFydFB1bGxEb3duUmVmcmVzaCBhcGlcbiAqIEBwYXJhbSBhcGlcbiAqIEBwYXJhbSBjb250YWluZXJOYW1lXG4gKiBAcmV0dXJuc1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTdGFydChhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4oYXJncywgY29udGFpbmVyTmFtZSkpO1xuICB9O1xufVxuLyoqXG4gKiBzdG9wUHVsbERvd25SZWZyZXNoIGFwaVxuICogQHBhcmFtIGFwaVxuICogQHBhcmFtIGNvbnRhaW5lck5hbWVcbiAqIEByZXR1cm5zXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVN0b3AoYXBpLCBjb250YWluZXJOYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJncykge1xuICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShzdHlsZUluKGFyZ3MsIGNvbnRhaW5lck5hbWUpKTtcbiAgfTtcbn1cbi8qKlxuICogd2ViIOerr+aJi+WKqOWIt+aWsOW8gOWFs+aOpeWPo29uUHVsbERvd25SZWZyZXNoIGFwaVxuICogQHBhcmFtIGFwaVxuICogQHBhcmFtIGNvbnRhaW5lck5hbWVcbiAqIEByZXR1cm5zXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVN3aXRjaChhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4oYXJncywgY29udGFpbmVyTmFtZSkpO1xuICB9O1xufSIsImltcG9ydCB7IGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNXZWIsIGlzQnl0ZURhbmNlTWljcm9BcHAsIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSwgaXNCYWlkdVNtYXJ0UHJvZ3JhbSB9IGZyb20gXCJAdW5pL2VudlwiO1xuaW1wb3J0IGFsaU1pbmlBcHBNb2R1bGUgZnJvbSBcIi4vYWxpLW1pbmlhcHAvaW5kZXhcIjtcbmltcG9ydCB3ZWJNb2R1bGUgZnJvbSBcIi4vd2ViL2luZGV4XCI7XG5pbXBvcnQgd2VDaGF0TW9kdWxlIGZyb20gXCIuL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCBrdWFpU2hvdU1vZHVsZSBmcm9tIFwiLi9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJhaUR1TW9kdWxlIGZyb20gXCIuL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleFwiO1xuZXhwb3J0IHZhciBzdGFydFB1bGxEb3duUmVmcmVzaCA9IGZ1bmN0aW9uIHN0YXJ0UHVsbERvd25SZWZyZXNoKGFyZ3MpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5zdGFydFB1bGxEb3duUmVmcmVzaChhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUuc3RhcnRQdWxsRG93blJlZnJlc2goYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuc3RhcnRQdWxsRG93blJlZnJlc2goYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuc3RhcnRQdWxsRG93blJlZnJlc2goYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUuc3RhcnRQdWxsRG93blJlZnJlc2goYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5zdGFydFB1bGxEb3duUmVmcmVzaChhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpzdGFydFB1bGxEb3duUmVmcmVzaOaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBzdG9wUHVsbERvd25SZWZyZXNoID0gZnVuY3Rpb24gc3RvcFB1bGxEb3duUmVmcmVzaChhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuc3RvcFB1bGxEb3duUmVmcmVzaChhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUuc3RvcFB1bGxEb3duUmVmcmVzaChhcmdzKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5zdG9wUHVsbERvd25SZWZyZXNoKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLnN0b3BQdWxsRG93blJlZnJlc2goYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUuc3RvcFB1bGxEb3duUmVmcmVzaChhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLnN0b3BQdWxsRG93blJlZnJlc2goYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yac3RvcFB1bGxEb3duUmVmcmVzaOaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBvblB1bGxEb3duUmVmcmVzaCA9IGZ1bmN0aW9uIG9uUHVsbERvd25SZWZyZXNoKGFyZ3MpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5vblB1bGxEb3duUmVmcmVzaChhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICBjb25zb2xlLndhcm4oJ1VuaSBBUEnvvJpvblB1bGxEb3duUmVmcmVzaOaaguS4jeaUr+aMgSzlj6rmlK/mjIF3ZWLnq69oNemhtemdoicpO1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICBvblB1bGxEb3duUmVmcmVzaDogb25QdWxsRG93blJlZnJlc2gsXG4gIHN0YXJ0UHVsbERvd25SZWZyZXNoOiBzdGFydFB1bGxEb3duUmVmcmVzaCxcbiAgc3RvcFB1bGxEb3duUmVmcmVzaDogc3RvcFB1bGxEb3duUmVmcmVzaFxufTsiLCJpbXBvcnQgc3RhcnRQdWxsRG93blJlZnJlc2ggZnJvbSBcIi4vc3RhcnRQdWxsRG93blJlZnJlc2hcIjtcbmltcG9ydCBzdG9wUHVsbERvd25SZWZyZXNoIGZyb20gXCIuL3N0b3BQdWxsRG93blJlZnJlc2hcIjtcbmV4cG9ydCB7IHN0YXJ0UHVsbERvd25SZWZyZXNoLCBzdG9wUHVsbERvd25SZWZyZXNoIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHN0YXJ0UHVsbERvd25SZWZyZXNoOiBzdGFydFB1bGxEb3duUmVmcmVzaCxcbiAgc3RvcFB1bGxEb3duUmVmcmVzaDogc3RvcFB1bGxEb3duUmVmcmVzaFxufTsiLCJpbXBvcnQgeyBub3JtYWxpemVTdGFydCB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHN0YXJ0UHVsbERvd25SZWZyZXNoID0gbm9ybWFsaXplU3RhcnQoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGtzLnN0YXJ0UHVsbERvd25SZWZyZXNoKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBzdGFydFB1bGxEb3duUmVmcmVzaDsiLCJpbXBvcnQgeyBub3JtYWxpemVTdG9wIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgc3RvcFB1bGxEb3duUmVmcmVzaCA9IG5vcm1hbGl6ZVN0b3AoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGtzLnN0b3BQdWxsRG93blJlZnJlc2goYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbmV4cG9ydCBkZWZhdWx0IHN0b3BQdWxsRG93blJlZnJlc2g7IiwiaW1wb3J0IHN0YXJ0UHVsbERvd25SZWZyZXNoIGZyb20gXCIuL3N0YXJ0UHVsbERvd25SZWZyZXNoXCI7XG5pbXBvcnQgc3RvcFB1bGxEb3duUmVmcmVzaCBmcm9tIFwiLi9zdG9wUHVsbERvd25SZWZyZXNoXCI7XG5pbXBvcnQgb25QdWxsRG93blJlZnJlc2ggZnJvbSBcIi4vb25QdWxsRG93blJlZnJlc2hcIjtcbmV4cG9ydCB7IG9uUHVsbERvd25SZWZyZXNoLCBzdGFydFB1bGxEb3duUmVmcmVzaCwgc3RvcFB1bGxEb3duUmVmcmVzaCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBvblB1bGxEb3duUmVmcmVzaDogb25QdWxsRG93blJlZnJlc2gsXG4gIHN0YXJ0UHVsbERvd25SZWZyZXNoOiBzdGFydFB1bGxEb3duUmVmcmVzaCxcbiAgc3RvcFB1bGxEb3duUmVmcmVzaDogc3RvcFB1bGxEb3duUmVmcmVzaFxufTsiLCJpbXBvcnQgeyBub3JtYWxpemVTd2l0Y2ggfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCBFdmVudHMgZnJvbSBcIi4uL191dGlscy9ldmVudFwiO1xuXG52YXIgUHVsbERvd25SZWZyZXNoID0gZnVuY3Rpb24gUHVsbERvd25SZWZyZXNoKCkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHRoaXMuZW5hYmxlUHVsbERvd25SZWZyZXNoID0gdm9pZCAwO1xuICB0aGlzLmRpc2FibGVQdWxsRG93blJlZnJlc2ggPSB2b2lkIDA7XG4gIHRoaXMuY2IxID0gdm9pZCAwO1xuICB0aGlzLmNiMiA9IHZvaWQgMDtcbiAgdGhpcy5jYjMgPSB2b2lkIDA7XG4gIHZhciBjbHNQcmVmaXggPSAnX191bml2ZXJzYWxfcHVsbGRvd25yZWZyZXNoJztcbiAgdmFyIHN0eWxlcyA9IHtcbiAgICByZWZyZXNoOiB7XG4gICAgICBwb3NpdGlvbjogJ3JlbGF0aXZlJyxcbiAgICAgIHdpZHRoOiAnMTAwJScsXG4gICAgICBoZWlnaHQ6ICc1MHB4JyxcbiAgICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgICBkaXNwbGF5OiAnZmxleCcsXG4gICAgICBmbGV4V3JhcDogJ3JvdycsXG4gICAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICAgIGp1c3RpZnlDb250ZW50OiAnY2VudGVyJyxcbiAgICAgIHpJbmRleDogOTk5OVxuICAgIH0sXG4gICAgcmVmcmVzaExvYWRpbmdTdHlsZToge1xuICAgICAgaGVpZ2h0OiAnMTZweCcsXG4gICAgICB3aWR0aDogJzE2cHgnLFxuICAgICAgbWFyZ2luUmlnaHQ6ICcxMHB4JyxcbiAgICAgIGNvbG9yOiAnIzk5OSdcbiAgICB9LFxuICAgIHJlZnJlc2hUZXh0OiB7XG4gICAgICBmb250U2l6ZTogJzE0cHgnLFxuICAgICAgY29sb3I6ICcjOTk5J1xuICAgIH1cbiAgfTtcbiAgdmFyIHJlZnJlc2ggPSBudWxsO1xuICB2YXIgcmVmcmVzaFRleHQgPSBudWxsO1xuICB2YXIgcmVmcmVzaExvYWRpbmdJbWcgPSBudWxsO1xuICAvKipcbiAgICog6I635Y+W5Yi35pawRG9tXG4gICAqIEBwYXJhbSBzdGF0dXMge251bWJlcn0gMTrkuIvmi4nliLfmlrDnirbmgIEgMjrmraPlnKjliLfmlrDnirbmgIFcbiAgICogQHJldHVybnNcbiAgICovXG5cbiAgdmFyIF9nZXRSZWZyZXNoID0gZnVuY3Rpb24gX2dldFJlZnJlc2goc3RhdHVzKSB7XG4gICAgcmVmcmVzaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNsc1ByZWZpeCArIFwiX3JlZnJlc2hcIik7XG4gICAgcmVmcmVzaFRleHQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChjbHNQcmVmaXggKyBcIl9yZWZyZXNoVGV4dFwiKTtcbiAgICByZWZyZXNoTG9hZGluZ0ltZyA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNsc1ByZWZpeCArIFwiX3JlZnJlc2hMb2FkaW5nSW1nXCIpO1xuXG4gICAgaWYgKCFyZWZyZXNoKSB7XG4gICAgICByZWZyZXNoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG4gICAgICByZWZyZXNoLmlkID0gY2xzUHJlZml4ICsgXCJfcmVmcmVzaFwiO1xuXG4gICAgICBmb3IgKHZhciBrZXkgaW4gc3R5bGVzLnJlZnJlc2gpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHlsZXMucmVmcmVzaCwga2V5KSkge1xuICAgICAgICAgIHJlZnJlc2guc3R5bGVba2V5XSA9IHN0eWxlcy5yZWZyZXNoW2tleV07XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoIXJlZnJlc2hUZXh0KSB7XG4gICAgICByZWZyZXNoVGV4dCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgICAgcmVmcmVzaFRleHQuaWQgPSBjbHNQcmVmaXggKyBcIl9yZWZyZXNoVGV4dFwiO1xuXG4gICAgICBmb3IgKHZhciBfa2V5IGluIHN0eWxlcy5yZWZyZXNoVGV4dCkge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0eWxlcy5yZWZyZXNoVGV4dCwgX2tleSkpIHtcbiAgICAgICAgICByZWZyZXNoVGV4dC5zdHlsZVtfa2V5XSA9IHN0eWxlcy5yZWZyZXNoVGV4dFtfa2V5XTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmICghcmVmcmVzaExvYWRpbmdJbWcpIHtcbiAgICAgIHJlZnJlc2hMb2FkaW5nSW1nID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG4gICAgICByZWZyZXNoTG9hZGluZ0ltZy5pZCA9IGNsc1ByZWZpeCArIFwiX3JlZnJlc2hMb2FkaW5nSW1nXCI7XG5cbiAgICAgIGZvciAodmFyIF9rZXkyIGluIHN0eWxlcy5yZWZyZXNoTG9hZGluZ1N0eWxlKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3R5bGVzLnJlZnJlc2hMb2FkaW5nU3R5bGUsIF9rZXkyKSkge1xuICAgICAgICAgIHJlZnJlc2hMb2FkaW5nSW1nLnN0eWxlW19rZXkyXSA9IHN0eWxlcy5yZWZyZXNoTG9hZGluZ1N0eWxlW19rZXkyXTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICByZWZyZXNoTG9hZGluZ0ltZy5zZXRBdHRyaWJ1dGUoJ3NyYycsICdodHRwczovL2d3LmFsaWNkbi5jb20vaW1nZXh0cmEvaTQvTzFDTjAxWDVBZG9iMUowVEdrNzlITm5fISE2MDAwMDAwMDAwOTY2LTEtdHBzLTQwMC00MDAuZ2lmJyk7XG4gICAgfVxuXG4gICAgcmVmcmVzaC5hcHBlbmRDaGlsZChyZWZyZXNoVGV4dCk7XG5cbiAgICBzd2l0Y2ggKHN0YXR1cykge1xuICAgICAgY2FzZSAxOlxuICAgICAgICBpZiAocmVmcmVzaCAhPT0gZG9jdW1lbnQuYm9keS5maXJzdEVsZW1lbnRDaGlsZCkge1xuICAgICAgICAgIGRvY3VtZW50LmJvZHkuaW5zZXJ0QmVmb3JlKHJlZnJlc2gsIGRvY3VtZW50LmJvZHkuZmlyc3RFbGVtZW50Q2hpbGQpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHJlZnJlc2hMb2FkaW5nSW1nID09PSByZWZyZXNoLmZpcnN0RWxlbWVudENoaWxkKSB7XG4gICAgICAgICAgcmVmcmVzaC5yZW1vdmVDaGlsZChyZWZyZXNoTG9hZGluZ0ltZyk7XG4gICAgICAgIH1cblxuICAgICAgICByZWZyZXNoVGV4dC5pbm5lclRleHQgPSAn5LiL5ouJ5Yi35pawJztcbiAgICAgICAgYnJlYWs7XG5cbiAgICAgIGNhc2UgMjpcbiAgICAgICAgaWYgKHJlZnJlc2hMb2FkaW5nSW1nICE9PSByZWZyZXNoLmZpcnN0RWxlbWVudENoaWxkKSB7XG4gICAgICAgICAgcmVmcmVzaC5pbnNlcnRCZWZvcmUocmVmcmVzaExvYWRpbmdJbWcsIHJlZnJlc2guZmlyc3RFbGVtZW50Q2hpbGQpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmVmcmVzaFRleHQuaW5uZXJUZXh0ID0gJ+abtOaWsOS4rS4uLic7XG4gICAgICAgIGJyZWFrO1xuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBicmVhaztcbiAgICB9XG5cbiAgICByZXR1cm4gcmVmcmVzaDtcbiAgfTsgLy8gbGV0IGNiMTogKHBhcmFtcykgPT4gdm9pZDsgbGV0IGNiMjogKHBhcmFtcykgPT4gdm9pZDsgbGV0XG4gIC8vICAgY2IzOiAocGFyYW1zKSA9PiB2b2lkO1xuXG4gIC8qKlxuICAgKiDlvIDlkK/miYvliqjkuIvmi4lcbiAgICogQHBhcmFtIHRyaWdnZXJEaXN0YW5jZSDop6blj5EncHVsbGRvd25yZWZyZXNoJ+aJgOmcgOeahOi3neemu1xuICAgKi9cblxuXG4gIHZhciBlbmFibGVQdWxsRG93blJlZnJlc2ggPSBmdW5jdGlvbiBlbmFibGVQdWxsRG93blJlZnJlc2godHJpZ2dlckRpc3RhbmNlKSB7XG4gICAgdmFyIF9lbGVtZW50ID0gZG9jdW1lbnQuYm9keTtcbiAgICB2YXIgX3N0YXJ0UG9zID0gMDtcbiAgICB2YXIgX3RyYW5zaXRpb25IZWlnaHQgPSAwO1xuXG4gICAgaWYgKCFfdGhpcy5jYjEpIHtcbiAgICAgIF90aGlzLmNiMSA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIC8vIGNvbnNvbGUubG9nKCfliJ3lp4vkvY3nva7vvJonLCBlLnRvdWNoZXNbMF0ucGFnZVkpO1xuICAgICAgICBfc3RhcnRQb3MgPSBlLnRvdWNoZXNbMF0ucGFnZVk7XG4gICAgICB9O1xuXG4gICAgICBfZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgX3RoaXMuY2IxLCB0cnVlKTtcbiAgICB9XG5cbiAgICBpZiAoIV90aGlzLmNiMikge1xuICAgICAgX3RoaXMuY2IyID0gZnVuY3Rpb24gKGUpIHtcbiAgICAgICAgLy8gY29uc29sZS5sb2coJ+W9k+WJjeS9jee9ru+8micsIGUudG91Y2hlc1swXS5wYWdlWSk7XG4gICAgICAgIF90cmFuc2l0aW9uSGVpZ2h0ID0gZS50b3VjaGVzWzBdLnBhZ2VZIC0gX3N0YXJ0UG9zOyAvLyBjb25zb2xlLmxvZyhfdHJhbnNpdGlvbkhlaWdodClcblxuICAgICAgICBpZiAoX3RyYW5zaXRpb25IZWlnaHQgPiAwICYmIF90cmFuc2l0aW9uSGVpZ2h0IDwgdHJpZ2dlckRpc3RhbmNlKSB7XG4gICAgICAgICAgX2dldFJlZnJlc2goMSk7XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIF9lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIF90aGlzLmNiMiwgdHJ1ZSk7XG4gICAgfVxuXG4gICAgaWYgKCFfdGhpcy5jYjMpIHtcbiAgICAgIF90aGlzLmNiMyA9IGZ1bmN0aW9uIChlKSB7XG4gICAgICAgIGlmIChfdHJhbnNpdGlvbkhlaWdodCA+IHRyaWdnZXJEaXN0YW5jZSkge1xuICAgICAgICAgIF9nZXRSZWZyZXNoKDIpOyAvLyBjb25zb2xlLmxvZyhcIuinpuWPkeabtOaWsFwiLCAnb24nKTtcblxuXG4gICAgICAgICAgd2luZG93LmV2ZW50cy5lbWl0KCdwdWxsZG93bnJlZnJlc2gnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgICAgICAgIF9zdGFydFBvcyA9IDA7XG4gICAgICAgICAgX3RyYW5zaXRpb25IZWlnaHQgPSAwO1xuICAgICAgICB9LCAyMCk7XG4gICAgICB9O1xuXG4gICAgICBfZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIF90aGlzLmNiMywgdHJ1ZSk7XG4gICAgfVxuICB9O1xuICAvKipcbiAgICog5YWz6Zet5omL5Yqo5LiL5ouJXG4gICAqL1xuXG5cbiAgdmFyIGRpc2FibGVQdWxsRG93blJlZnJlc2ggPSBmdW5jdGlvbiBkaXNhYmxlUHVsbERvd25SZWZyZXNoKCkge1xuICAgIHZhciBfZWxlbWVudCA9IGRvY3VtZW50LmJvZHk7XG5cbiAgICBpZiAoX3RoaXMuY2IxKSB7XG4gICAgICBfZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaHN0YXJ0JywgX3RoaXMuY2IxKTtcblxuICAgICAgX3RoaXMuY2IxID0gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmIChfdGhpcy5jYjIpIHtcbiAgICAgIF9lbGVtZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3RvdWNobW92ZScsIF90aGlzLmNiMik7XG5cbiAgICAgIF90aGlzLmNiMiA9IHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICBpZiAoX3RoaXMuY2IzKSB7XG4gICAgICBfZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCd0b3VjaGVuZCcsIF90aGlzLmNiMyk7XG5cbiAgICAgIF90aGlzLmNiMyA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH07XG5cbiAgdGhpcy5lbmFibGVQdWxsRG93blJlZnJlc2ggPSBlbmFibGVQdWxsRG93blJlZnJlc2g7XG4gIHRoaXMuZGlzYWJsZVB1bGxEb3duUmVmcmVzaCA9IGRpc2FibGVQdWxsRG93blJlZnJlc2g7XG59O1xuLyoqXG4gKiDlvIDlkK/miYvliqjkuIvmi4nliLfmlrBcbiAqL1xuXG5cbnZhciBvblB1bGxEb3duUmVmcmVzaCA9IG5vcm1hbGl6ZVN3aXRjaChmdW5jdGlvbiAoX3JlZikge1xuICB2YXIgX3JlZiRwdWxsUmVmcmVzaCA9IF9yZWYucHVsbFJlZnJlc2gsXG4gICAgICBwdWxsUmVmcmVzaCA9IF9yZWYkcHVsbFJlZnJlc2ggPT09IHZvaWQgMCA/IHRydWUgOiBfcmVmJHB1bGxSZWZyZXNoLFxuICAgICAgX3JlZiR0cmlnZ2VyRGlzdGFuY2UgPSBfcmVmLnRyaWdnZXJEaXN0YW5jZSxcbiAgICAgIHRyaWdnZXJEaXN0YW5jZSA9IF9yZWYkdHJpZ2dlckRpc3RhbmNlID09PSB2b2lkIDAgPyA5MCA6IF9yZWYkdHJpZ2dlckRpc3RhbmNlLFxuICAgICAgX3JlZiRldmVudENhbGxiYWNrID0gX3JlZi5ldmVudENhbGxiYWNrLFxuICAgICAgZXZlbnRDYWxsYmFjayA9IF9yZWYkZXZlbnRDYWxsYmFjayA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfcmVmJGV2ZW50Q2FsbGJhY2ssXG4gICAgICBfcmVmJHN1Y2Nlc3MgPSBfcmVmLnN1Y2Nlc3MsXG4gICAgICBzdWNjZXNzID0gX3JlZiRzdWNjZXNzID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9yZWYkc3VjY2VzcyxcbiAgICAgIF9yZWYkZmFpbCA9IF9yZWYuZmFpbCxcbiAgICAgIGZhaWwgPSBfcmVmJGZhaWwgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX3JlZiRmYWlsLFxuICAgICAgX3JlZiRjb21wbGV0ZSA9IF9yZWYuY29tcGxldGUsXG4gICAgICBjb21wbGV0ZSA9IF9yZWYkY29tcGxldGUgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX3JlZiRjb21wbGV0ZTtcblxuICB0cnkge1xuICAgIGlmICghd2luZG93LmV2ZW50cykge1xuICAgICAgd2luZG93LmV2ZW50cyA9IG5ldyBFdmVudHMoKTtcbiAgICB9XG5cbiAgICB3aW5kb3cuZXZlbnRzLnJlZ2lzdGVyKCdwdWxsZG93bnJlZnJlc2gnLCBldmVudENhbGxiYWNrKTtcbiAgICB2YXIgcHVsbERvd25SZWZyZXNoID0gbmV3IFB1bGxEb3duUmVmcmVzaCgpO1xuXG4gICAgaWYgKHB1bGxSZWZyZXNoKSB7XG4gICAgICBwdWxsRG93blJlZnJlc2guZW5hYmxlUHVsbERvd25SZWZyZXNoKHRyaWdnZXJEaXN0YW5jZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHB1bGxEb3duUmVmcmVzaC5kaXNhYmxlUHVsbERvd25SZWZyZXNoKCk7XG4gICAgfVxuXG4gICAgc3VjY2VzcygpO1xuICAgIGNvbXBsZXRlKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZmFpbCgpO1xuICAgIGNvbXBsZXRlKCk7XG4gIH1cbn0sIENPTlRBSU5FUl9OQU1FLldFQik7XG5leHBvcnQgZGVmYXVsdCBvblB1bGxEb3duUmVmcmVzaDsiLCJpbXBvcnQgeyBub3JtYWxpemVTdGFydCB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IEV2ZW50cyBmcm9tIFwiLi4vX3V0aWxzL2V2ZW50XCI7XG5cbnZhciBfc3RhcnRQdWxsRG93blJlZnJlc2ggPSBmdW5jdGlvbiBfc3RhcnRQdWxsRG93blJlZnJlc2goKSB7XG4gIGlmICghd2luZG93LmV2ZW50cykge1xuICAgIHdpbmRvdy5ldmVudHMgPSBuZXcgRXZlbnRzKCk7XG4gIH1cblxuICB2YXIgY2xzUHJlZml4ID0gJ19fdW5pdmVyc2FsX3B1bGxkb3ducmVmcmVzaCc7XG4gIHZhciBzdHlsZXMgPSB7XG4gICAgcmVmcmVzaDoge1xuICAgICAgcG9zaXRpb246ICdyZWxhdGl2ZScsXG4gICAgICB3aWR0aDogJzEwMCUnLFxuICAgICAgaGVpZ2h0OiAnNTBweCcsXG4gICAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgICAgZGlzcGxheTogJ2ZsZXgnLFxuICAgICAgZmxleFdyYXA6ICdyb3cnLFxuICAgICAgYWxpZ25JdGVtczogJ2NlbnRlcicsXG4gICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgICB6SW5kZXg6IDk5OTlcbiAgICB9LFxuICAgIHJlZnJlc2hMb2FkaW5nU3R5bGU6IHtcbiAgICAgIGhlaWdodDogJzE2cHgnLFxuICAgICAgd2lkdGg6ICcxNnB4JyxcbiAgICAgIG1hcmdpblJpZ2h0OiAnMTBweCcsXG4gICAgICBjb2xvcjogJyM5OTknXG4gICAgfSxcbiAgICByZWZyZXNoVGV4dDoge1xuICAgICAgZm9udFNpemU6ICcxNHB4JyxcbiAgICAgIGNvbG9yOiAnIzk5OSdcbiAgICB9XG4gIH07XG4gIHZhciByZWZyZXNoID0gbnVsbDtcbiAgdmFyIHJlZnJlc2hUZXh0ID0gbnVsbDtcbiAgdmFyIHJlZnJlc2hMb2FkaW5nSW1nID0gbnVsbDsgLy8gY29uc29sZS5sb2coXCJfc3RhcnRQdWxsRG93blJlZnJlc2ggc3RhcnRcIik7XG5cbiAgcmVmcmVzaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNsc1ByZWZpeCArIFwiX3JlZnJlc2hcIik7XG4gIHJlZnJlc2hUZXh0ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2xzUHJlZml4ICsgXCJfcmVmcmVzaFRleHRcIik7XG4gIHJlZnJlc2hMb2FkaW5nSW1nID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoY2xzUHJlZml4ICsgXCJfcmVmcmVzaExvYWRpbmdJbWdcIik7XG5cbiAgaWYgKCFyZWZyZXNoKSB7XG4gICAgcmVmcmVzaCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuICAgIHJlZnJlc2guaWQgPSBjbHNQcmVmaXggKyBcIl9yZWZyZXNoXCI7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gc3R5bGVzLnJlZnJlc2gpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc3R5bGVzLnJlZnJlc2gsIGtleSkpIHtcbiAgICAgICAgcmVmcmVzaC5zdHlsZVtrZXldID0gc3R5bGVzLnJlZnJlc2hba2V5XTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBpZiAoIXJlZnJlc2hUZXh0KSB7XG4gICAgcmVmcmVzaFRleHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICByZWZyZXNoVGV4dC5pZCA9IGNsc1ByZWZpeCArIFwiX3JlZnJlc2hUZXh0XCI7XG5cbiAgICBmb3IgKHZhciBfa2V5IGluIHN0eWxlcy5yZWZyZXNoVGV4dCkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzdHlsZXMucmVmcmVzaFRleHQsIF9rZXkpKSB7XG4gICAgICAgIHJlZnJlc2hUZXh0LnN0eWxlW19rZXldID0gc3R5bGVzLnJlZnJlc2hUZXh0W19rZXldO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICghcmVmcmVzaExvYWRpbmdJbWcpIHtcbiAgICByZWZyZXNoTG9hZGluZ0ltZyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2ltZycpO1xuICAgIHJlZnJlc2hMb2FkaW5nSW1nLmlkID0gY2xzUHJlZml4ICsgXCJfcmVmcmVzaExvYWRpbmdJbWdcIjtcblxuICAgIGZvciAodmFyIF9rZXkyIGluIHN0eWxlcy5yZWZyZXNoTG9hZGluZ1N0eWxlKSB7XG4gICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHN0eWxlcy5yZWZyZXNoTG9hZGluZ1N0eWxlLCBfa2V5MikpIHtcbiAgICAgICAgcmVmcmVzaExvYWRpbmdJbWcuc3R5bGVbX2tleTJdID0gc3R5bGVzLnJlZnJlc2hMb2FkaW5nU3R5bGVbX2tleTJdO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJlZnJlc2hMb2FkaW5nSW1nLnNldEF0dHJpYnV0ZSgnc3JjJywgJ2h0dHBzOi8vZ3cuYWxpY2RuLmNvbS9pbWdleHRyYS9pNC9PMUNOMDFYNUFkb2IxSjBUR2s3OUhObl8hITYwMDAwMDAwMDA5NjYtMS10cHMtNDAwLTQwMC5naWYnKTtcbiAgfVxuXG4gIGlmIChyZWZyZXNoICE9PSBkb2N1bWVudC5ib2R5LmZpcnN0RWxlbWVudENoaWxkKSB7XG4gICAgZG9jdW1lbnQuYm9keS5pbnNlcnRCZWZvcmUocmVmcmVzaCwgZG9jdW1lbnQuYm9keS5maXJzdEVsZW1lbnRDaGlsZCk7XG4gIH1cblxuICByZWZyZXNoLmFwcGVuZENoaWxkKHJlZnJlc2hUZXh0KTtcblxuICBpZiAocmVmcmVzaExvYWRpbmdJbWcgIT09IHJlZnJlc2guZmlyc3RFbGVtZW50Q2hpbGQpIHtcbiAgICByZWZyZXNoLmluc2VydEJlZm9yZShyZWZyZXNoTG9hZGluZ0ltZywgcmVmcmVzaC5maXJzdEVsZW1lbnRDaGlsZCk7XG4gIH1cblxuICByZWZyZXNoVGV4dC5pbm5lclRleHQgPSAn5pu05paw5LitLi4uJzsgLy8gY29uc29sZS5sb2coXCLop6blj5Hmm7TmlrBcIik7XG59O1xuXG52YXIgc3RhcnRQdWxsRG93blJlZnJlc2ggPSBub3JtYWxpemVTdGFydChmdW5jdGlvbiAoX3JlZikge1xuICB2YXIgX3JlZiRzdWNjZXNzID0gX3JlZi5zdWNjZXNzLFxuICAgICAgc3VjY2VzcyA9IF9yZWYkc3VjY2VzcyA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfcmVmJHN1Y2Nlc3MsXG4gICAgICBfcmVmJGZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBmYWlsID0gX3JlZiRmYWlsID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9yZWYkZmFpbCxcbiAgICAgIF9yZWYkY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlLFxuICAgICAgY29tcGxldGUgPSBfcmVmJGNvbXBsZXRlID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9yZWYkY29tcGxldGU7XG5cbiAgdHJ5IHtcbiAgICBfc3RhcnRQdWxsRG93blJlZnJlc2goKTtcblxuICAgIHdpbmRvdy5ldmVudHMuZW1pdCgncHVsbGRvd25yZWZyZXNoJyk7XG4gICAgc3VjY2VzcygpO1xuICAgIGNvbXBsZXRlKCk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgZmFpbCgpO1xuICAgIGNvbXBsZXRlKCk7XG4gIH1cbn0sIENPTlRBSU5FUl9OQU1FLldFQik7XG5leHBvcnQgZGVmYXVsdCBzdGFydFB1bGxEb3duUmVmcmVzaDsiLCJpbXBvcnQgeyBub3JtYWxpemVTdG9wIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbnZhciBfc3RvcFB1bGxEb3duUmVmcmVzaCA9IGZ1bmN0aW9uIF9zdG9wUHVsbERvd25SZWZyZXNoKCkge1xuICAvLyBjb25zb2xlLmxvZyhcIl9zdG9wUHVsbERvd25SZWZyZXNoICBzdGFydFwiKTtcbiAgdmFyIGNsc1ByZWZpeCA9ICdfX3VuaXZlcnNhbF9wdWxsZG93bnJlZnJlc2gnO1xuICB2YXIgcmVmcmVzaCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGNsc1ByZWZpeCArIFwiX3JlZnJlc2hcIik7XG5cbiAgaWYgKHJlZnJlc2gpIHtcbiAgICBkb2N1bWVudC5ib2R5LnJlbW92ZUNoaWxkKHJlZnJlc2gpO1xuICB9XG59O1xuXG52YXIgc3RvcFB1bGxEb3duUmVmcmVzaCA9IG5vcm1hbGl6ZVN0b3AoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIF9yZWYkc3VjY2VzcyA9IF9yZWYuc3VjY2VzcyxcbiAgICAgIHN1Y2Nlc3MgPSBfcmVmJHN1Y2Nlc3MgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX3JlZiRzdWNjZXNzLFxuICAgICAgX3JlZiRmYWlsID0gX3JlZi5mYWlsLFxuICAgICAgZmFpbCA9IF9yZWYkZmFpbCA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfcmVmJGZhaWwsXG4gICAgICBfcmVmJGNvbXBsZXRlID0gX3JlZi5jb21wbGV0ZSxcbiAgICAgIGNvbXBsZXRlID0gX3JlZiRjb21wbGV0ZSA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfcmVmJGNvbXBsZXRlO1xuXG4gIHRyeSB7XG4gICAgX3N0b3BQdWxsRG93blJlZnJlc2goKTtcblxuICAgIHN1Y2Nlc3MoKTtcbiAgICBjb21wbGV0ZSgpO1xuICB9IGNhdGNoIChlcnJvcikge1xuICAgIGZhaWwoKTtcbiAgICBjb21wbGV0ZSgpO1xuICB9XG59LCBDT05UQUlORVJfTkFNRS5XRUIpO1xuZXhwb3J0IGRlZmF1bHQgc3RvcFB1bGxEb3duUmVmcmVzaDsiLCJpbXBvcnQgc3RhcnRQdWxsRG93blJlZnJlc2ggZnJvbSBcIi4vc3RhcnRQdWxsRG93blJlZnJlc2hcIjtcbmltcG9ydCBzdG9wUHVsbERvd25SZWZyZXNoIGZyb20gXCIuL3N0b3BQdWxsRG93blJlZnJlc2hcIjtcbmV4cG9ydCB7IHN0YXJ0UHVsbERvd25SZWZyZXNoLCBzdG9wUHVsbERvd25SZWZyZXNoIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHN0YXJ0UHVsbERvd25SZWZyZXNoOiBzdGFydFB1bGxEb3duUmVmcmVzaCxcbiAgc3RvcFB1bGxEb3duUmVmcmVzaDogc3RvcFB1bGxEb3duUmVmcmVzaFxufTsiLCJpbXBvcnQgeyBub3JtYWxpemVTdGFydCB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHN0YXJ0UHVsbERvd25SZWZyZXNoID0gbm9ybWFsaXplU3RhcnQoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHd4LnN0YXJ0UHVsbERvd25SZWZyZXNoKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IHN0YXJ0UHVsbERvd25SZWZyZXNoOyIsImltcG9ydCB7IG5vcm1hbGl6ZVN0b3AgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzdG9wUHVsbERvd25SZWZyZXNoID0gbm9ybWFsaXplU3RvcChmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gd3guc3RvcFB1bGxEb3duUmVmcmVzaChhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCBzdG9wUHVsbERvd25SZWZyZXNoOyIsImZ1bmN0aW9uIGlzVW5kZWYodHlwZSkge1xuICByZXR1cm4gdHlwZSA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbmV4cG9ydCB2YXIgaXNEaW5nZGluZ01pbmlhcHAgPSAhaXNVbmRlZih0eXBlb2YgZGQpICYmIGRkICE9PSBudWxsICYmICFpc1VuZGVmKHR5cGVvZiBkZC5hbGVydCk7IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcblxudmFyIGdldFJlY29yZGVyTWFuYWdlciA9IGZ1bmN0aW9uIGdldFJlY29yZGVyTWFuYWdlcigpIHtcbiAgcmV0dXJuIGlzRGluZ2RpbmdNaW5pYXBwID8gZGQuZ2V0UmVjb3JkZXJNYW5hZ2VyKCkgOiBteS5nZXRSZWNvcmRlck1hbmFnZXIoKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGdldFJlY29yZGVyTWFuYWdlcjsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICByZXR1cm4gc3dhbi5nZXRSZWNvcmRlck1hbmFnZXIoKTtcbn0pOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB0dC5nZXRSZWNvcmRlck1hbmFnZXIoKTtcbn0pOyIsImltcG9ydCB7IGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNXZWIsIGlzQnl0ZURhbmNlTWljcm9BcHAsIGlzQmFpZHVTbWFydFByb2dyYW0sIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSB9IGZyb20gXCJAdW5pL2VudlwiO1xuaW1wb3J0IGFsaU1pbmlBcHBNb2R1bGUgZnJvbSBcIi4vYWxpLW1pbmlhcHAvaW5kZXhcIjtcbmltcG9ydCB3ZWJNb2R1bGUgZnJvbSBcIi4vd2ViL2luZGV4XCI7XG5pbXBvcnQgd2VDaGF0TW9kdWxlIGZyb20gXCIuL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCBiYWlEdU1vZHVsZSBmcm9tIFwiLi9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXhcIjtcbmV4cG9ydCB2YXIgZ2V0UmVjb3JkZXJNYW5hZ2VyID0gZnVuY3Rpb24gZ2V0UmVjb3JkZXJNYW5hZ2VyKCkge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlKCk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5pL2FwaXPvvJpnZXRSZWNvcmRlck1hbmFnZXLmmoLkuI3mlK/mjIEnKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZSgpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlKCk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUoKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlKCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5pL2FwaXPvvJpnZXRSZWNvcmRlck1hbmFnZXLmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGdldFJlY29yZGVyTWFuYWdlcjsiLCIvKiBlc2xpbnQtZGlzYWJsZSAgKi9cbnZhciBnZXRVc2VyTWVkaWEgPSBmdW5jdGlvbiBnZXRVc2VyTWVkaWEoY29uc3RyYWludHMpIHtcbiAgdmFyIG5hdmlnYXRlID0gbmF2aWdhdG9yO1xuICB2YXIgcmF3R2V0VXNlck1lZGlhID0gbmF2aWdhdG9yLm1lZGlhRGV2aWNlcyAmJiBuYXZpZ2F0b3IubWVkaWFEZXZpY2VzLmdldFVzZXJNZWRpYSB8fCBuYXZpZ2F0b3IuZ2V0VXNlck1lZGlhIHx8IG5hdmlnYXRlLndlYmtpdEdldFVzZXJNZWRpYSB8fCBuYXZpZ2F0ZS5tb3pHZXRVc2VyTWVkaWE7XG5cbiAgaWYgKCFyYXdHZXRVc2VyTWVkaWEpIHtcbiAgICByZXR1cm4gUHJvbWlzZS5yZWplY3QobmV3IEVycm9yKCdnZXRVc2VyTWVkaWEgaXMgbm90IGltcGxlbWVudGVkIGluIHRoaXMgYnJvd3NlcicpKTtcbiAgfVxuXG4gIHJldHVybiByYXdHZXRVc2VyTWVkaWEuY2FsbChuYXZpZ2F0b3IubWVkaWFEZXZpY2VzIHx8IG5hdmlnYXRvciwgY29uc3RyYWludHMpO1xufTtcblxudmFyIGdldEF1ZGlvTWVkaWEgPSBmdW5jdGlvbiBnZXRBdWRpb01lZGlhKCkge1xuICByZXR1cm4gZ2V0VXNlck1lZGlhKHtcbiAgICBhdWRpbzogdHJ1ZVxuICB9KTtcbn07XG5cbmZ1bmN0aW9uIHJlY29yZGVyTWFuZ2VyKCkge1xuICB0aGlzLmR1cmF0aW9uID0gNjAwMDA7XG4gIHRoaXMuc2FtcGxlUmF0ZSA9IDgwMDA7XG4gIHRoaXMubnVtYmVyT2ZDaGFubmVscyA9IDI7XG4gIHRoaXMuZW5jb2RlQml0UmF0ZSA9IDQ4MDAwO1xuICB0aGlzLmZvcm1hdCA9ICdhYWMnO1xuICB0aGlzLmZyYW1lU2l6ZSA9IC0xO1xuICB0aGlzLm1lZGlhUmVjb3JkZXIgPSBudWxsO1xuICB0aGlzLmNodW5rcyA9IFtdO1xuICB0aGlzLmN1ckR1cmF0aW9uID0gMDtcbiAgdGhpcy50aW1lciA9IG51bGw7XG4gIHRoaXMuZXZlbnRzID0ge307XG59XG5cbnJlY29yZGVyTWFuZ2VyLnByb3RvdHlwZS5zdGFydCA9IGZ1bmN0aW9uIChhcmdzKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKGFyZ3MgJiYgdHlwZW9mIGFyZ3MgPT09ICdvYmplY3QnKSB7XG4gICAgZm9yICh2YXIga2V5IGluIGFyZ3MpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYXJncywga2V5KSkge1xuICAgICAgICB0aGlzW2tleV0gPSBhcmdzW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgZ2V0QXVkaW9NZWRpYSgpLnRoZW4oZnVuY3Rpb24gKHN0cmVhbSkge1xuICAgIF90aGlzLm1lZGlhUmVjb3JkZXIgPSBuZXcgTWVkaWFSZWNvcmRlcihzdHJlYW0pO1xuICAgIF90aGlzLm1lZGlhUmVjb3JkZXIub25zdGFydCA9IF90aGlzLmV2ZW50cy5vbnN0YXJ0O1xuICAgIF90aGlzLm1lZGlhUmVjb3JkZXIub25wYXVzZSA9IF90aGlzLmV2ZW50cy5vbnBhdXNlO1xuICAgIF90aGlzLm1lZGlhUmVjb3JkZXIub25yZXN1bWUgPSBfdGhpcy5ldmVudHMub25yZXN1bWU7XG4gICAgX3RoaXMubWVkaWFSZWNvcmRlci5vbnN0b3AgPSBfdGhpcy5ldmVudHMub25zdG9wO1xuICAgIF90aGlzLm1lZGlhUmVjb3JkZXIub25kYXRhYXZhaWxhYmxlID0gX3RoaXMuZXZlbnRzLm9uZGF0YWF2YWlsYWJsZTtcbiAgICBfdGhpcy5tZWRpYVJlY29yZGVyLm9uZXJyb3IgPSBfdGhpcy5ldmVudHMub25lcnJvcjtcblxuICAgIGlmIChfdGhpcy5mcmFtZVNpemUgPiAwKSB7XG4gICAgICBfdGhpcy5tZWRpYVJlY29yZGVyLnN0YXJ0KF90aGlzLmZyYW1lU2l6ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIF90aGlzLm1lZGlhUmVjb3JkZXIuc3RhcnQoKTtcbiAgICB9XG4gIH0pLmNhdGNoKGZ1bmN0aW9uICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ0B1bmkvYXBpczogZ2V0UmVjb3JkZXJNYW5hZ2Vy5LiN5pSv5oyBJyk7XG4gIH0pO1xufTtcblxucmVjb3JkZXJNYW5nZXIucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLm1lZGlhUmVjb3JkZXIgJiYgdGhpcy5tZWRpYVJlY29yZGVyLnN0YXRlID09PSAncmVjb3JkaW5nJyAmJiB0aGlzLm1lZGlhUmVjb3JkZXIucGF1c2UoKTtcbn07XG5cbnJlY29yZGVyTWFuZ2VyLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMubWVkaWFSZWNvcmRlciAmJiB0aGlzLm1lZGlhUmVjb3JkZXIuc3RhdGUgPT09ICdwYXVzZWQnICYmIHRoaXMubWVkaWFSZWNvcmRlci5yZXN1bWUoKTtcbn07XG5cbnJlY29yZGVyTWFuZ2VyLnByb3RvdHlwZS5zdG9wID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLm1lZGlhUmVjb3JkZXIgJiYgdGhpcy5tZWRpYVJlY29yZGVyLnN0YXRlID09PSAncmVjb3JkaW5nJyAmJiB0aGlzLm1lZGlhUmVjb3JkZXIuc3RvcCgpO1xufTtcblxucmVjb3JkZXJNYW5nZXIucHJvdG90eXBlLm9uU3RhcnQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgaWYgKGNhbGxiYWNrID09PSB2b2lkIDApIHtcbiAgICBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKCkge307XG4gIH1cblxuICB0aGlzLmV2ZW50cy5vbnN0YXJ0ID0gZnVuY3Rpb24gKCkge1xuICAgIF90aGlzMi5jbGVhcigpO1xuXG4gICAgX3RoaXMyLnRpbWVyID0gc2V0SW50ZXJ2YWwoZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKF90aGlzMi5tZWRpYVJlY29yZGVyICYmIF90aGlzMi5tZWRpYVJlY29yZGVyLnN0YXRlID09PSAncmVjb3JkaW5nJykge1xuICAgICAgICBfdGhpczIuY3VyRHVyYXRpb24gKz0gNTAwO1xuXG4gICAgICAgIGlmIChfdGhpczIuY3VyRHVyYXRpb24gPj0gX3RoaXMyLmR1cmF0aW9uKSB7XG4gICAgICAgICAgX3RoaXMyLmN1ckR1cmF0aW9uIC09IDUwMDtcblxuICAgICAgICAgIF90aGlzMi5zdG9wKCk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LCA1MDApO1xuICAgIGNhbGxiYWNrKCk7XG4gIH07XG59O1xuXG5yZWNvcmRlck1hbmdlci5wcm90b3R5cGUub25QYXVzZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2sgPT09IHZvaWQgMCkge1xuICAgIGNhbGxiYWNrID0gZnVuY3Rpb24gY2FsbGJhY2soKSB7fTtcbiAgfVxuXG4gIHRoaXMuZXZlbnRzLm9ucGF1c2UgPSBjYWxsYmFjaztcbn07XG5cbnJlY29yZGVyTWFuZ2VyLnByb3RvdHlwZS5vblJlc3VtZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICBpZiAoY2FsbGJhY2sgPT09IHZvaWQgMCkge1xuICAgIGNhbGxiYWNrID0gZnVuY3Rpb24gY2FsbGJhY2soKSB7fTtcbiAgfVxuXG4gIHRoaXMuZXZlbnRzLm9ucmVzdW1lID0gY2FsbGJhY2s7XG59O1xuXG5yZWNvcmRlck1hbmdlci5wcm90b3R5cGUub25TdG9wID0gZnVuY3Rpb24gKGNhbGxiYWNrKSB7XG4gIHZhciBfdGhpczMgPSB0aGlzO1xuXG4gIGlmIChjYWxsYmFjayA9PT0gdm9pZCAwKSB7XG4gICAgY2FsbGJhY2sgPSBmdW5jdGlvbiBjYWxsYmFjayhyZXMpIHt9O1xuICB9XG5cbiAgdGhpcy5ldmVudHMub25zdG9wID0gZnVuY3Rpb24gKCkge1xuICAgIHZhciBibG9iID0gbmV3IEJsb2IoX3RoaXMzLmNodW5rcywge1xuICAgICAgJ3R5cGUnOiAnYXVkaW8vb2dnOyBjb2RlY3M9b3B1cydcbiAgICB9KTtcbiAgICB2YXIgdGVtcEZpbGVQYXRoID0gd2luZG93LlVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7XG4gICAgdmFyIGZpbGVTaXplID0gYmxvYi5zaXplO1xuICAgIHZhciBkdXJhdGlvbiA9IF90aGlzMy5jdXJEdXJhdGlvbiArIDUwMDtcblxuICAgIF90aGlzMy5jbGVhcigpO1xuXG4gICAgY2FsbGJhY2soe1xuICAgICAgdGVtcEZpbGVQYXRoOiB0ZW1wRmlsZVBhdGgsXG4gICAgICBmaWxlU2l6ZTogZmlsZVNpemUsXG4gICAgICBkdXJhdGlvbjogZHVyYXRpb25cbiAgICB9KTtcbiAgfTtcbn07XG5cbnJlY29yZGVyTWFuZ2VyLnByb3RvdHlwZS5vbkZyYW1lUmVjb3JkZWQgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgdmFyIF90aGlzNCA9IHRoaXM7XG5cbiAgaWYgKGNhbGxiYWNrID09PSB2b2lkIDApIHtcbiAgICBjYWxsYmFjayA9IGZ1bmN0aW9uIGNhbGxiYWNrKGRhdGEpIHt9O1xuICB9XG5cbiAgdGhpcy5ldmVudHMub25kYXRhYXZhaWxhYmxlID0gZnVuY3Rpb24gKGUpIHtcbiAgICBfdGhpczQuY2h1bmtzLnB1c2goZS5kYXRhKTtcblxuICAgIGNhbGxiYWNrKGUuZGF0YSk7XG4gIH07XG59O1xuXG5yZWNvcmRlck1hbmdlci5wcm90b3R5cGUub25FcnJvciA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICB2YXIgX3RoaXM1ID0gdGhpcztcblxuICBpZiAoY2FsbGJhY2sgPT09IHZvaWQgMCkge1xuICAgIGNhbGxiYWNrID0gZnVuY3Rpb24gY2FsbGJhY2soZSkge307XG4gIH1cblxuICB0aGlzLmV2ZW50cy5vbmVycm9yID0gZnVuY3Rpb24gKGUpIHtcbiAgICBfdGhpczUuY2xlYXIoKTtcblxuICAgIGNhbGxiYWNrKGUpO1xuICB9O1xufTtcblxucmVjb3JkZXJNYW5nZXIucHJvdG90eXBlLmNsZWFyID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmNodW5rcyA9IFtdO1xuICBjbGVhckludGVydmFsKHRoaXMudGltZXIpO1xuICB0aGlzLnRpbWVyID0gbnVsbDtcbiAgdGhpcy5jdXJEdXJhdGlvbiA9IDA7XG59O1xuXG52YXIgc2luZ2xlUmVjb3JkZXJNYW5hZ2VyID0gbmV3IHJlY29yZGVyTWFuZ2VyKCk7IC8vIOS9v+eUqOWNleS+i+i/lOWbnuWFqOWxgOWUr+S4gOeahOW9lemfs+euoeeQhuWZqFxuXG52YXIgZ2V0UmVjb3JkZXJNYW5hZ2VyID0gZnVuY3Rpb24gZ2V0UmVjb3JkZXJNYW5hZ2VyKCkge1xuICByZXR1cm4gc2luZ2xlUmVjb3JkZXJNYW5hZ2VyO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0UmVjb3JkZXJNYW5hZ2VyOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoKSB7XG4gIHJldHVybiB3eC5nZXRSZWNvcmRlck1hbmFnZXIoKTtcbn0pOyIsImV4cG9ydCB2YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07IiwiZnVuY3Rpb24gaXNVbmRlZih0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSAndW5kZWZpbmVkJztcbn1cblxuZXhwb3J0IHZhciBpc0RpbmdkaW5nTWluaWFwcCA9ICFpc1VuZGVmKHR5cGVvZiBkZCkgJiYgZGQgIT09IG51bGwgJiYgIWlzVW5kZWYodHlwZW9mIGRkLmFsZXJ0KTsiLCJ2YXIgX2V4Y2x1ZGVkID0gW1wiX2V4dFwiXTtcblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgdmFyIHN0eWxlT3V0ID0gZnVuY3Rpb24gc3R5bGVPdXQob3V0cHV0LCBvcmlnaW5hbElucHV0LCBvcmlnaW5hbE91dHB1dCkge1xuICByZXR1cm4gX2V4dGVuZHMoe30sIG91dHB1dCwge1xuICAgIF9vcmlnaW5hbDoge1xuICAgICAgaW5wdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbElucHV0KSxcbiAgICAgIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDlr7nlhaXlj4Lov5vooYwgZm9ybWF0IOS5i+WQjueahOe7k+aenFxuICAgICAgb3V0cHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxPdXRwdXQpIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDov5Tlm57lgLwgZm9ybWF0IOS5i+WJjeeahOe7k+aenFxuXG4gICAgfVxuICB9KTtcbn07XG5leHBvcnQgdmFyIHN0eWxlSW4gPSBmdW5jdGlvbiBzdHlsZUluKG9wdGlvbnMsIGJhc2VOYW1lKSB7XG4gIHZhciBfcmVmID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIF9yZWYkX2V4dCA9IF9yZWYuX2V4dCxcbiAgICAgIF9leHQgPSBfcmVmJF9leHQgPT09IHZvaWQgMCA/IHt9IDogX3JlZiRfZXh0LFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXN0LCBfZXh0W2Jhc2VOYW1lXSB8fCB7fSk7XG59OyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxuZnVuY3Rpb24gcmVxdWVzdChvcHRpb25zKSB7XG4gIHZhciB1cmwgPSBvcHRpb25zLnVybCxcbiAgICAgIG1ldGhvZCA9IG9wdGlvbnMubWV0aG9kLFxuICAgICAgZGF0YSA9IG9wdGlvbnMuZGF0YSxcbiAgICAgIGRhdGFUeXBlID0gb3B0aW9ucy5kYXRhVHlwZSxcbiAgICAgIGhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMsXG4gICAgICB0aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0LFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHZhciBodHRwUmVxdWVzdCA9IGlzRGluZ2RpbmdNaW5pYXBwID8gZGQuaHR0cFJlcXVlc3QgOiBteS5yZXF1ZXN0O1xuICByZXR1cm4gaHR0cFJlcXVlc3Qoe1xuICAgIHVybDogdXJsLFxuICAgIGhlYWRlcnM6IGhlYWRlcnMsXG4gICAgbWV0aG9kOiBtZXRob2QsXG4gICAgZGF0YTogZGF0YSxcbiAgICB0aW1lb3V0OiB0aW1lb3V0LFxuICAgIGRhdGFUeXBlOiBkYXRhVHlwZSxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShyZXF1ZXN0LCBDT05UQUlORVJfTkFNRS5BTElQQVkpOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG5mdW5jdGlvbiByZXF1ZXN0KG9wdGlvbnMpIHtcbiAgdmFyIHVybCA9IG9wdGlvbnMudXJsLFxuICAgICAgbWV0aG9kID0gb3B0aW9ucy5tZXRob2QsXG4gICAgICBkYXRhID0gb3B0aW9ucy5kYXRhLFxuICAgICAgZGF0YVR5cGUgPSBvcHRpb25zLmRhdGFUeXBlLFxuICAgICAgaGVhZGVycyA9IG9wdGlvbnMuaGVhZGVycyxcbiAgICAgIHRpbWVvdXQgPSBvcHRpb25zLnRpbWVvdXQsXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgcmV0dXJuIHN3YW4ucmVxdWVzdCh7XG4gICAgdXJsOiB1cmwsXG4gICAgaGVhZGVyOiBoZWFkZXJzLFxuICAgIG1ldGhvZDogbWV0aG9kLFxuICAgIGRhdGE6IGRhdGEsXG4gICAgdGltZW91dDogdGltZW91dCxcbiAgICBkYXRhVHlwZTogZGF0YVR5cGUsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKHJlcyk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUocmVxdWVzdCwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxuZnVuY3Rpb24gcmVxdWVzdChvcHRpb25zKSB7XG4gIHZhciB1cmwgPSBvcHRpb25zLnVybCxcbiAgICAgIG1ldGhvZCA9IG9wdGlvbnMubWV0aG9kLFxuICAgICAgZGF0YSA9IG9wdGlvbnMuZGF0YSxcbiAgICAgIGRhdGFUeXBlID0gb3B0aW9ucy5kYXRhVHlwZSxcbiAgICAgIGhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMsXG4gICAgICB0aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0LFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHJldHVybiB0dC5yZXF1ZXN0KHtcbiAgICB1cmw6IHVybCxcbiAgICBoZWFkZXI6IGhlYWRlcnMsXG4gICAgbWV0aG9kOiBtZXRob2QsXG4gICAgZGF0YTogZGF0YSxcbiAgICB0aW1lb3V0OiB0aW1lb3V0LFxuICAgIGRhdGFUeXBlOiBkYXRhVHlwZSxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShyZXF1ZXN0LCBDT05UQUlORVJfTkFNRS5CWVRFKTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbnZhbGlkLXZvaWQtdHlwZSAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eSAqL1xuaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YVdpdGhUeXBlKGRhdGEsIHR5cGUpIHtcbiAgaWYgKHR5cGUgPT09ICdqc29uJykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5wYXJzZShkYXRhKTtcbiAgICB9IGNhdGNoIChlKSB7fVxuICB9XG5cbiAgaWYgKHR5cGUgPT09ICd0ZXh0Jykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gSlNPTi5zdHJpbmdpZnkoZGF0YSk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfVxuXG4gIHJldHVybiBkYXRhO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHN0cmluZ2lmeVFTKHFzKSB7XG4gIGlmICghcXMpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cblxuICB2YXIgc3RyID0gW107XG5cbiAgZm9yICh2YXIga2V5IGluIHFzKSB7XG4gICAgaWYgKHFzW2tleV0pIHtcbiAgICAgIHN0ci5wdXNoKGtleSArIFwiPVwiICsgZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyhxc1trZXldKSkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzdHIuam9pbignJicpO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGFyYW1Ub1VSTChwYXJhbSwgdXJsKSB7XG4gIGlmICghcGFyYW0pIHtcbiAgICByZXR1cm4gdXJsO1xuICB9XG5cbiAgcmV0dXJuIFwiXCIgKyB1cmwgKyAodXJsLmluZGV4T2YoJz8nKSA9PT0gLTEgPyAnPycgOiAnJicpICsgc3RyaW5naWZ5UVMocGFyYW0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG9iamVjdDJqc29uKG9iaikge1xuICB0cnkge1xuICAgIHJldHVybiBKU09OLnN0cmluZ2lmeShvYmopO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmV0dXJuIG9iaiB8fCAnJztcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIGlzT2JqZWN0KG9iaikge1xuICByZXR1cm4gdHlwZW9mIG9iaiA9PT0gJ29iamVjdCcgJiYgb2JqICE9PSBudWxsO1xufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUhlYWRlcnMob2JqKSB7XG4gIGlmICghaXNPYmplY3Qob2JqKSkge1xuICAgIHJldHVybiBvYmo7XG4gIH1cblxuICB2YXIga2V5TGlzdCA9IFsnQWNjZXB0JywgJ0NvbnRlbnQtVHlwZSddO1xuICBrZXlMaXN0LmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgIGZvciAodmFyIGhlYWRlcktleSBpbiBvYmopIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqLCBoZWFkZXJLZXkpKSB7XG4gICAgICAgIGlmIChoZWFkZXJLZXkudG9VcHBlckNhc2UoKSA9PT0ga2V5LnRvVXBwZXJDYXNlKCkgJiYgaGVhZGVyS2V5ICE9PSBrZXkpIHtcbiAgICAgICAgICBvYmpba2V5XSA9IG9ialtoZWFkZXJLZXldO1xuICAgICAgICAgIGRlbGV0ZSBvYmpbaGVhZGVyS2V5XTtcbiAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBmYWxzZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICByZXR1cm4gb2JqO1xufVxuZXhwb3J0IHZhciB2YWxpZGF0ZVN0YXR1cyA9IGZ1bmN0aW9uIHZhbGlkYXRlU3RhdHVzKHN0YXR1cykge1xuICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQ7XG59O1xuZXhwb3J0IGZ1bmN0aW9uIGNoZWNrSXNBcHBseURhdGFUb1VSTChoZWFkZXJzKSB7XG4gIGlmICghaGVhZGVycyB8fCAhaGVhZGVyc1snQ29udGVudC1UeXBlJ10pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cblxuICByZXR1cm4gU3RyaW5nKGhlYWRlcnNbJ0NvbnRlbnQtVHlwZSddKS50b0xvd2VyQ2FzZSgpLmluZGV4T2YoJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCcpID4gLTE7XG59XG52YXIgRU1QVFlfT0JKRUNUID0ge307XG5leHBvcnQgZnVuY3Rpb24gaXNQbGFpbk9iamVjdChvYmopIHtcbiAgcmV0dXJuIEVNUFRZX09CSkVDVC50b1N0cmluZy5jYWxsKG9iaikgPT09ICdbb2JqZWN0IE9iamVjdF0nO1xufVxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlT3B0aW9ucyhvcHRpb25zLCBjb250YWluZXJOYW1lKSB7XG4gIHZhciBfb3B0aW9ucyRtZXRob2Q7XG5cbiAgdmFyIERFRkFVTFRfVElNRU9VVCA9IDIwMDAwO1xuICB2YXIgREVGQVVMVF9SRVFVRVNUX09QVElPTlMgPSB7XG4gICAgdXJsOiAnJyxcbiAgICBoZWFkZXJzOiB7XG4gICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG4gICAgfSxcbiAgICBtZXRob2Q6ICdHRVQnLFxuICAgIGpzb25wQ2FsbGJhY2tQcm9wOiAnY2FsbGJhY2snLFxuICAgIGpzb25wQ2FsbGJhY2s6ICdfX3VuaV9qc29ucF9oYW5kbGVyJyxcbiAgICB0aW1lb3V0OiBERUZBVUxUX1RJTUVPVVQsXG4gICAgZGF0YVR5cGU6ICdqc29uJ1xuICB9O1xuICB2YXIgaXNKc29ucCA9IChvcHRpb25zID09IG51bGwgPyB2b2lkIDAgOiAoX29wdGlvbnMkbWV0aG9kID0gb3B0aW9ucy5tZXRob2QpID09IG51bGwgPyB2b2lkIDAgOiBfb3B0aW9ucyRtZXRob2QudG9VcHBlckNhc2UoKSkgPT09ICdKU09OUCc7XG4gIHZhciBqc29ucENhbGxiYWNrID0gb3B0aW9ucy5qc29ucENhbGxiYWNrIHx8IERFRkFVTFRfUkVRVUVTVF9PUFRJT05TLmpzb25wQ2FsbGJhY2s7XG5cbiAgdmFyIGFkYXB0ZXJSZXNwb25zZSA9IGZ1bmN0aW9uIGFkYXB0ZXJSZXNwb25zZShyZXMpIHtcbiAgICB2YXIgX3JlcyRlcnJNc2c7XG5cbiAgICBpZiAocmVzLmVyck1zZyAmJiAocmVzID09IG51bGwgPyB2b2lkIDAgOiAoX3JlcyRlcnJNc2cgPSByZXMuZXJyTXNnKSA9PSBudWxsID8gdm9pZCAwIDogX3JlcyRlcnJNc2cuaW5kZXhPZigncmVxdWVzdDpmYWlsJykpICE9PSAtMSB8fCByZXMuZXJyb3IpIHtcbiAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzLCB7XG4gICAgICAgIGVycm9yOiByZXMuZXJyb3IgfHwgcmVzLnN0YXR1cyB8fCByZXMuc3RhdHVzQ29kZSxcbiAgICAgICAgZXJyb3JNZXNzYWdlOiByZXMuZXJyb3JNZXNzYWdlIHx8IHJlcy5lcnJNc2cgfHwgJycsXG4gICAgICAgIHN0YXR1czogcmVzLnN0YXR1c0NvZGUgfHwgcmVzLnN0YXR1cyxcbiAgICAgICAgaGVhZGVyczogcmVzLmhlYWRlciB8fCByZXMuaGVhZGVycyB8fCB7fVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmFyIGFmdGVyUmVzID0gX2V4dGVuZHMoe30sIHJlcywge1xuICAgICAgZXJyb3JNZXNzYWdlOiByZXMuZXJyb3JNZXNzYWdlIHx8IHJlcy5lcnJNc2cgfHwgJycsXG4gICAgICBzdGF0dXM6IHJlcy5zdGF0dXNDb2RlIHx8IHJlcy5zdGF0dXMsXG4gICAgICBoZWFkZXJzOiByZXMuaGVhZGVyIHx8IHJlcy5oZWFkZXJzIHx8IHt9XG4gICAgfSk7XG5cbiAgICBpZiAoaXNKc29ucCAmJiBjb250YWluZXJOYW1lICE9PSBDT05UQUlORVJfTkFNRS5XRUIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHZhciBfcmVzJGRhdGE7XG5cbiAgICAgICAgdmFyIGNvbnRlbnQgPSByZXMgPT0gbnVsbCA/IHZvaWQgMCA6IChfcmVzJGRhdGEgPSByZXMuZGF0YSkgPT0gbnVsbCA/IHZvaWQgMCA6IF9yZXMkZGF0YS5yZXBsYWNlKGpzb25wQ2FsbGJhY2sgKyBcIihcIiwgJycpLnJlcGxhY2UoJyknLCAnJyk7XG4gICAgICAgIHZhciBkYXRhID0gY29udGVudCA/IEpTT04ucGFyc2UoY29udGVudCkgOiAnJztcbiAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBhZnRlclJlcywge1xuICAgICAgICAgIGRhdGE6IGRhdGFcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgZXJyb3I6IDE0LFxuICAgICAgICAgIGRhdGE6IHJlcyxcbiAgICAgICAgICBlcnJvck1lc3NhZ2U6ICdKU09OUCDop6PnoIHlpLHotKUnXG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGFmdGVyUmVzO1xuICB9O1xuXG4gIHZhciBhZnRlck9wdGlvbnMgPSBfZXh0ZW5kcyh7fSwgREVGQVVMVF9SRVFVRVNUX09QVElPTlMsIG9wdGlvbnMsIHtcbiAgICBtZXRob2Q6IChvcHRpb25zLm1ldGhvZCB8fCAnR0VUJykudG9VcHBlckNhc2UoKSxcbiAgICBoZWFkZXJzOiBub3JtYWxpemVIZWFkZXJzKG9wdGlvbnMuaGVhZGVycyB8fCB7fSksXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIHZhciBfdmFsaWRhdGVTdGF0dXMgPSBvcHRpb25zLnZhbGlkYXRlU3RhdHVzIHx8IHZhbGlkYXRlU3RhdHVzO1xuXG4gICAgICB2YXIgX3JlcyA9IGFkYXB0ZXJSZXNwb25zZShyZXMpO1xuXG4gICAgICBpZiAoIV92YWxpZGF0ZVN0YXR1cyhfcmVzLnN0YXR1cykpIHtcbiAgICAgICAgb3B0aW9ucy5mYWlsICYmIG9wdGlvbnMuZmFpbChfcmVzKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG9wdGlvbnMuc3VjY2VzcyAmJiBvcHRpb25zLnN1Y2Nlc3MoX3Jlcyk7XG4gICAgICB9XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgb3B0aW9ucy5mYWlsICYmIG9wdGlvbnMuZmFpbChhZGFwdGVyUmVzcG9uc2UocmVzKSk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBvcHRpb25zLmNvbXBsZXRlICYmIG9wdGlvbnMuY29tcGxldGUoYWRhcHRlclJlc3BvbnNlKHJlcykpO1xuICAgIH1cbiAgfSk7XG5cbiAgaWYgKGlzSnNvbnApIHtcbiAgICB2YXIgX2V4dGVuZHMyO1xuXG4gICAgYWZ0ZXJPcHRpb25zID0gX2V4dGVuZHMoe30sIGFmdGVyT3B0aW9ucywge1xuICAgICAgbWV0aG9kOiAnR0VUJyxcbiAgICAgIGlzSnNvbnA6IGlzSnNvbnAsXG4gICAgICBkYXRhVHlwZTogJ3RleHQnLFxuICAgICAgZGF0YTogX2V4dGVuZHMoe30sIG9wdGlvbnMuZGF0YSwgKF9leHRlbmRzMiA9IHt9LCBfZXh0ZW5kczJbb3B0aW9ucy5qc29ucENhbGxiYWNrUHJvcCB8fCBERUZBVUxUX1JFUVVFU1RfT1BUSU9OUy5qc29ucENhbGxiYWNrUHJvcF0gPSBqc29ucENhbGxiYWNrLCBfZXh0ZW5kczIpKVxuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIGFmdGVyT3B0aW9ucztcbn1cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemUoYXBpLCBjb250YWluZXJOYW1lKSB7XG4gIHJldHVybiBmdW5jdGlvbiAob3B0aW9ucykge1xuICAgIHZhciBhZnRlck9wdGlvbnMgPSBzdHlsZU9wdGlvbnMoc3R5bGVJbihvcHRpb25zLCBjb250YWluZXJOYW1lKSwgY29udGFpbmVyTmFtZSk7XG4gICAgcmV0dXJuIGFwaShhZnRlck9wdGlvbnMpO1xuICB9O1xufSIsImltcG9ydCB7IGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNXZWIsIGlzQnl0ZURhbmNlTWljcm9BcHAsIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSwgaXNCYWlkdVNtYXJ0UHJvZ3JhbSB9IGZyb20gXCJAdW5pL2VudlwiO1xuaW1wb3J0IHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmltcG9ydCBhbGlNaW5pQXBwTW9kdWxlIGZyb20gXCIuL2FsaS1taW5pYXBwL2luZGV4XCI7XG5pbXBvcnQgd2VDaGF0TW9kdWxlIGZyb20gXCIuL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCBiYWlEdU1vZHVsZSBmcm9tIFwiLi9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBrdWFpU2hvdU1vZHVsZSBmcm9tIFwiLi9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleFwiO1xuZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUob3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yacmVxdWVzdOaaguS4jeaUr+aMgScpO1xuICB9XG59KTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxuZnVuY3Rpb24gcmVxdWVzdChvcHRpb25zKSB7XG4gIHZhciB1cmwgPSBvcHRpb25zLnVybCxcbiAgICAgIG1ldGhvZCA9IG9wdGlvbnMubWV0aG9kLFxuICAgICAgZGF0YSA9IG9wdGlvbnMuZGF0YSxcbiAgICAgIGRhdGFUeXBlID0gb3B0aW9ucy5kYXRhVHlwZSxcbiAgICAgIGhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMsXG4gICAgICB0aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0LFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHJldHVybiBrcy5yZXF1ZXN0KHtcbiAgICB1cmw6IHVybCxcbiAgICBoZWFkZXI6IGhlYWRlcnMsXG4gICAgbWV0aG9kOiBtZXRob2QsXG4gICAgZGF0YTogZGF0YSxcbiAgICB0aW1lb3V0OiB0aW1lb3V0LFxuICAgIGRhdGFUeXBlOiBkYXRhVHlwZSxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShyZXF1ZXN0LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpOyIsIi8qKlxuICogIENvbW1vblxuICovXG5leHBvcnQgdmFyIERFRkFVTFRfVElNRU9VVCA9IDIwMDAwO1xuZXhwb3J0IHZhciBERUZBVUxUX0pTT05fQ0FMTEJBQ0sgPSAnY2FsbGJhY2snO1xuZXhwb3J0IHZhciBERUZBVUxUX0pTT05QX09QVElPTlMgPSB7XG4gIHRpbWVvdXQ6IERFRkFVTFRfVElNRU9VVCxcbiAganNvbnBDYWxsYmFjazogREVGQVVMVF9KU09OX0NBTExCQUNLLFxuICBkYXRhVHlwZTogJ2pzb24nXG59O1xuZXhwb3J0IHZhciBFUlJPUl9SRVFVRVNUX0FCT1JUID0ge1xuICBjb2RlOiAwLFxuICBtZXNzYWdlOiAnUmVxdWVzdCBBYm9ydCdcbn07XG5leHBvcnQgdmFyIEVSUk9SX1JFUVVFU1RfVElNRU9VVCA9IHtcbiAgY29kZTogMSxcbiAgbWVzc2FnZTogJ1JlcXVlc3QgdGltZW91dCdcbn07XG5leHBvcnQgdmFyIEVSUk9SX1JFUVVFU1RfTk9UX1NVUFBPUlQgPSB7XG4gIGNvZGU6IDIsXG4gIG1lc3NhZ2U6ICdSZXF1ZXN0IG5vdCBzdXBwb3J0IHRoaXMgcGxhdGZvcm0nXG59OyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbi8qIGVzbGludC1kaXNhYmxlIG5vLW1peGVkLW9wZXJhdG9ycyAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG5pbXBvcnQgeyBFUlJPUl9SRVFVRVNUX1RJTUVPVVQsIEVSUk9SX1JFUVVFU1RfQUJPUlQgfSBmcm9tIFwiLi4vdHlwZXNcIjtcbmltcG9ydCB7IGFwcGx5UGFyYW1Ub1VSTCwgb2JqZWN0Mmpzb24sIGNoZWNrSXNBcHBseURhdGFUb1VSTCwgaXNPYmplY3QsIGlzUGxhaW5PYmplY3QsIG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG5mdW5jdGlvbiByZXF1ZXN0WEhSKG9wdGlvbnMpIHtcbiAgb3B0aW9ucy5oZWFkZXJzID0gX2V4dGVuZHMoe1xuICAgIEFjY2VwdDogJ2FwcGxpY2F0aW9uL2pzb24sIHRleHQvcGxhaW4sICovKidcbiAgfSwgb3B0aW9ucy5oZWFkZXJzKTtcblxuICB2YXIgX2pzb25wQ2FsbGJhY2tQcm9wJGpzID0gX2V4dGVuZHMoe1xuICAgIGpzb25wQ2FsbGJhY2tQcm9wOiAnY2FsbGJhY2snLFxuICAgIGpzb25wQ2FsbGJhY2s6ICdfX3VuaV9qc29ucF9oYW5kbGVyJyxcbiAgICB3aXRoQ3JlZGVudGlhbHM6IHRydWUsXG4gICAgbWV0aG9kOiAnR0VUJyxcbiAgICB2YWxpZGF0ZVN0YXR1czogZnVuY3Rpb24gdmFsaWRhdGVTdGF0dXMoc3RhdHVzKSB7XG4gICAgICByZXR1cm4gc3RhdHVzID49IDIwMCAmJiBzdGF0dXMgPCAzMDAgfHwgc3RhdHVzID09PSAzMDQ7XG4gICAgfVxuICB9LCBvcHRpb25zKSxcbiAgICAgIHZhbGlkYXRlU3RhdHVzID0gX2pzb25wQ2FsbGJhY2tQcm9wJGpzLnZhbGlkYXRlU3RhdHVzLFxuICAgICAgdXJsID0gX2pzb25wQ2FsbGJhY2tQcm9wJGpzLnVybCxcbiAgICAgIG1ldGhvZCA9IF9qc29ucENhbGxiYWNrUHJvcCRqcy5tZXRob2QsXG4gICAgICBpc0pzb25wID0gX2pzb25wQ2FsbGJhY2tQcm9wJGpzLmlzSnNvbnAsXG4gICAgICB3aXRoQ3JlZGVudGlhbHMgPSBfanNvbnBDYWxsYmFja1Byb3AkanMud2l0aENyZWRlbnRpYWxzLFxuICAgICAgaGVhZGVycyA9IF9qc29ucENhbGxiYWNrUHJvcCRqcy5oZWFkZXJzLFxuICAgICAgZGF0YSA9IF9qc29ucENhbGxiYWNrUHJvcCRqcy5kYXRhLFxuICAgICAgdGltZW91dCA9IF9qc29ucENhbGxiYWNrUHJvcCRqcy50aW1lb3V0LFxuICAgICAganNvbnBDYWxsYmFjayA9IF9qc29ucENhbGxiYWNrUHJvcCRqcy5qc29ucENhbGxiYWNrLFxuICAgICAgZGF0YVR5cGUgPSBfanNvbnBDYWxsYmFja1Byb3AkanMuZGF0YVR5cGUsXG4gICAgICBzdWNjZXNzID0gX2pzb25wQ2FsbGJhY2tQcm9wJGpzLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gX2pzb25wQ2FsbGJhY2tQcm9wJGpzLmZhaWwsXG4gICAgICBjb21wbGV0ZSA9IF9qc29ucENhbGxiYWNrUHJvcCRqcy5jb21wbGV0ZTtcblxuICBpZiAoaXNKc29ucCkge1xuICAgIHRyeSB7XG4gICAgICB3aW5kb3dbanNvbnBDYWxsYmFja10gPSBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICBzdWNjZXNzICYmIHN1Y2Nlc3Moe1xuICAgICAgICAgIGRhdGE6IGRhdGEsXG4gICAgICAgICAgc3RhdHVzOiAyMDAsXG4gICAgICAgICAgaGVhZGVyczoge31cbiAgICAgICAgfSk7XG4gICAgICAgIGNvbXBsZXRlICYmIGNvbXBsZXRlKHtcbiAgICAgICAgICBkYXRhOiBkYXRhLFxuICAgICAgICAgIHN0YXR1czogMjAwLFxuICAgICAgICAgIGhlYWRlcnM6IHt9XG4gICAgICAgIH0pO1xuICAgICAgfTtcblxuICAgICAgdmFyIHNjcmlwdFVybCA9IFwiXCIgKyBhcHBseVBhcmFtVG9VUkwoZGF0YSwgdXJsKTtcbiAgICAgIHZhciBzY3JpcHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzY3JpcHQnKTtcbiAgICAgIHNjcmlwdC5zZXRBdHRyaWJ1dGUoJ3NyYycsIHNjcmlwdFVybCk7XG4gICAgICBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgnaGVhZCcpWzBdLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgZmFpbCAmJiBmYWlsKEVSUk9SX1JFUVVFU1RfVElNRU9VVCk7XG4gICAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZShFUlJPUl9SRVFVRVNUX1RJTUVPVVQpO1xuICAgIH1cblxuICAgIHJldHVybiB7XG4gICAgICBhYm9ydDogZnVuY3Rpb24gYWJvcnQoKSB7fVxuICAgIH07XG4gIH1cblxuICB2YXIgdGltZXI7XG4gIHZhciByZXF1ZXN0RGF0YTtcbiAgdmFyIHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuXG4gIHZhciBjbGVhbiA9IGZ1bmN0aW9uIGNsZWFuKCkge1xuICAgIGNsZWFyVGltZW91dCh0aW1lcik7XG4gIH07XG5cbiAgdGltZXIgPSB3aW5kb3cuc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgY2xlYW4oKTtcbiAgICBmYWlsICYmIGZhaWwoRVJST1JfUkVRVUVTVF9USU1FT1VUKTtcbiAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZShFUlJPUl9SRVFVRVNUX1RJTUVPVVQpOyAvLyByZWplY3QoRVJST1JfUkVRVUVTVF9USU1FT1VUKTtcblxuICAgIHhoci5hYm9ydCgpO1xuICB9LCB0aW1lb3V0KTtcblxuICB4aHIub25yZWFkeXN0YXRlY2hhbmdlID0gZnVuY3Rpb24gKCkge1xuICAgIGlmICgheGhyIHx8IHhoci5yZWFkeVN0YXRlICE9PSA0KSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY2xlYW4oKTtcblxuICAgIGlmICghdmFsaWRhdGVTdGF0dXMoeGhyLnN0YXR1cykpIHtcbiAgICAgIC8vIFRPRE8gRGV0YWlsZWQgZXJyb3IgbWVzc2FnZVxuICAgICAgZmFpbCAmJiBmYWlsKHtcbiAgICAgICAgY29kZTogRVJST1JfUkVRVUVTVF9BQk9SVC5jb2RlLFxuICAgICAgICBtZXNzYWdlOiBcIlwiICsgSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgIHN0YXR1czogeGhyLnN0YXR1c1xuICAgICAgICB9KVxuICAgICAgfSk7XG4gICAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZSh7XG4gICAgICAgIGNvZGU6IEVSUk9SX1JFUVVFU1RfQUJPUlQuY29kZSxcbiAgICAgICAgbWVzc2FnZTogXCJcIiArIEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICBzdGF0dXM6IHhoci5zdGF0dXNcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBoZWFkZXJzID0geGhyLmdldEFsbFJlc3BvbnNlSGVhZGVycygpO1xuICAgIHZhciBhcnIgPSBoZWFkZXJzLnRyaW0oKS5zcGxpdCgvW1xcclxcbl0rLyk7XG4gICAgdmFyIGhlYWRlck1hcCA9IHt9O1xuICAgIGFyci5mb3JFYWNoKGZ1bmN0aW9uIChsaW5lKSB7XG4gICAgICB2YXIgcGFydHMgPSBsaW5lLnNwbGl0KCc6ICcpO1xuICAgICAgdmFyIGhlYWRlciA9IHBhcnRzLnNoaWZ0KCk7XG4gICAgICB2YXIgdmFsdWUgPSBwYXJ0cy5qb2luKCc6ICcpO1xuICAgICAgaGVhZGVyTWFwW2hlYWRlcl0gPSB2YWx1ZTtcbiAgICB9KTtcbiAgICBzdWNjZXNzICYmIHN1Y2Nlc3Moe1xuICAgICAgZGF0YTogeGhyLnJlc3BvbnNlLFxuICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzLFxuICAgICAgaGVhZGVyczogaGVhZGVyTWFwXG4gICAgfSk7XG4gICAgY29tcGxldGUgJiYgY29tcGxldGUoe1xuICAgICAgZGF0YTogeGhyLnJlc3BvbnNlLFxuICAgICAgc3RhdHVzOiB4aHIuc3RhdHVzLFxuICAgICAgaGVhZGVyczogaGVhZGVyTWFwXG4gICAgfSk7XG4gIH07XG5cbiAgeGhyLnJlc3BvbnNlVHlwZSA9IGRhdGFUeXBlIHx8ICcnO1xuXG4gIGlmIChtZXRob2QgPT09ICdHRVQnIHx8IGNoZWNrSXNBcHBseURhdGFUb1VSTChoZWFkZXJzKSkge1xuICAgIHhoci5vcGVuKG1ldGhvZCwgYXBwbHlQYXJhbVRvVVJMKGRhdGEsIHVybCksIHRydWUpO1xuICB9IGVsc2Uge1xuICAgIHhoci5vcGVuKG1ldGhvZCwgdXJsLCB0cnVlKTtcbiAgfVxuXG4gIHhoci53aXRoQ3JlZGVudGlhbHMgPSB3aXRoQ3JlZGVudGlhbHM7XG5cbiAgaWYgKGhlYWRlcnMpIHtcbiAgICBmb3IgKHZhciBrZXkgaW4gaGVhZGVycyB8fCBbXSkge1xuICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChoZWFkZXJzLCBrZXkpKSB7XG4gICAgICAgIHhoci5zZXRSZXF1ZXN0SGVhZGVyKGtleSwgU3RyaW5nKGhlYWRlcnNba2V5XSkpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmIChtZXRob2QgPT09ICdHRVQnKSB7XG4gICAgcmVxdWVzdERhdGEgPSBudWxsO1xuICB9IGVsc2Uge1xuICAgIHJlcXVlc3REYXRhID0gZGF0YTtcbiAgfVxuXG4gIGlmIChpc09iamVjdChyZXF1ZXN0RGF0YSkgJiYgaXNQbGFpbk9iamVjdChyZXF1ZXN0RGF0YSkpIHtcbiAgICByZXF1ZXN0RGF0YSA9IG9iamVjdDJqc29uKHJlcXVlc3REYXRhKTtcbiAgfVxuXG4gIHhoci5zZW5kKHJlcXVlc3REYXRhKTtcbiAgcmV0dXJuIHtcbiAgICBhYm9ydDogZnVuY3Rpb24gYWJvcnQoKSB7fVxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUocmVxdWVzdFhIUiwgQ09OVEFJTkVSX05BTUUuV0VCKTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxuZnVuY3Rpb24gcmVxdWVzdChvcHRpb25zKSB7XG4gIHZhciB1cmwgPSBvcHRpb25zLnVybCxcbiAgICAgIG1ldGhvZCA9IG9wdGlvbnMubWV0aG9kLFxuICAgICAgZGF0YSA9IG9wdGlvbnMuZGF0YSxcbiAgICAgIGRhdGFUeXBlID0gb3B0aW9ucy5kYXRhVHlwZSxcbiAgICAgIGhlYWRlcnMgPSBvcHRpb25zLmhlYWRlcnMsXG4gICAgICB0aW1lb3V0ID0gb3B0aW9ucy50aW1lb3V0LFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHJldHVybiB3eC5yZXF1ZXN0KHtcbiAgICB1cmw6IHVybCxcbiAgICBoZWFkZXI6IGhlYWRlcnMsXG4gICAgbWV0aG9kOiBtZXRob2QsXG4gICAgZGF0YTogZGF0YSxcbiAgICB0aW1lb3V0OiB0aW1lb3V0LFxuICAgIGRhdGFUeXBlOiBkYXRhVHlwZSxcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShyZXF1ZXN0LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpOyIsImV4cG9ydCB2YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2lmeShhcGkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHByb21pc2lmeUFyZyA9IGFyZztcbiAgICAgIGFwaShfZXh0ZW5kcyh7fSwgcHJvbWlzaWZ5QXJnLCB7XG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5zdWNjZXNzKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBvblN1Y2Nlc3M6IGZ1bmN0aW9uIG9uU3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25TdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25TdWNjZXNzKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5mYWlsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuZmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBvbkZhaWw6IGZ1bmN0aW9uIG9uRmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25GYWlsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25GYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuY29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5jb21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24gb25Db21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25Db21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfTtcbn0iLCJ2YXIgX2V4Y2x1ZGVkID0gW1wiX2V4dFwiXTtcblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgdmFyIHN0eWxlT3V0ID0gZnVuY3Rpb24gc3R5bGVPdXQob3V0cHV0LCBvcmlnaW5hbElucHV0LCBvcmlnaW5hbE91dHB1dCkge1xuICByZXR1cm4gX2V4dGVuZHMoe30sIG91dHB1dCwge1xuICAgIF9vcmlnaW5hbDoge1xuICAgICAgaW5wdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbElucHV0KSxcbiAgICAgIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDlr7nlhaXlj4Lov5vooYwgZm9ybWF0IOS5i+WQjueahOe7k+aenFxuICAgICAgb3V0cHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxPdXRwdXQpIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDov5Tlm57lgLwgZm9ybWF0IOS5i+WJjeeahOe7k+aenFxuXG4gICAgfVxuICB9KTtcbn07XG5leHBvcnQgdmFyIHN0eWxlSW4gPSBmdW5jdGlvbiBzdHlsZUluKG9wdGlvbnMsIGJhc2VOYW1lKSB7XG4gIHZhciBfcmVmID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIF9yZWYkX2V4dCA9IF9yZWYuX2V4dCxcbiAgICAgIF9leHQgPSBfcmVmJF9leHQgPT09IHZvaWQgMCA/IHt9IDogX3JlZiRfZXh0LFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXN0LCBfZXh0W2Jhc2VOYW1lXSB8fCB7fSk7XG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZWQgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZWQoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIGhpZGVBbGJ1bSA9IG9wdGlvbnMuaGlkZUFsYnVtLFxuICAgICAgc2NhblR5cGUgPSBvcHRpb25zLnNjYW5UeXBlLFxuICAgICAgc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIGZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBjb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIG15LnNjYW4oe1xuICAgIGhpZGVBbGJ1bTogaGlkZUFsYnVtLFxuICAgIHNjYW5UeXBlOiBzY2FuVHlwZSxcbiAgICBzdWNjZXNzOiBzdWNjZXNzLFxuICAgIGZhaWw6IGZhaWwsXG4gICAgY29tcGxldGU6IGNvbXBsZXRlXG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTsiLCJpbXBvcnQgeyBub3JtYWxpemVkIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemVkKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBzdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIGNvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgc3dhbi5zY2FuQ29kZSh7XG4gICAgc3VjY2Vzczogc3VjY2VzcyxcbiAgICBmYWlsOiBmYWlsLFxuICAgIGNvbXBsZXRlOiBjb21wbGV0ZVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTsiLCJpbXBvcnQgeyBub3JtYWxpemVkIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemVkKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBoaWRlQWxidW0gPSBvcHRpb25zLmhpZGVBbGJ1bSxcbiAgICAgIHNjYW5UeXBlID0gb3B0aW9ucy5zY2FuVHlwZSxcbiAgICAgIHN1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB0dC5zY2FuQ29kZSh7XG4gICAgb25seUZyb21DYW1lcmE6IGhpZGVBbGJ1bSxcbiAgICBzY2FuVHlwZTogc2NhblR5cGUsXG4gICAgc3VjY2Vzczogc3VjY2VzcyxcbiAgICBmYWlsOiBmYWlsLFxuICAgIGNvbXBsZXRlOiBjb21wbGV0ZVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gXCIuL191dGlscy9wcm9taXNpZnlcIjtcbmltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5leHBvcnQgdmFyIG5vcm1hbGl6ZWQgPSBmdW5jdGlvbiBub3JtYWxpemVkKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuXG4gICAgdmFyIF9vcHRpb25zID0gc3R5bGVJbihvcHRpb25zLCBjb250YWluZXJOYW1lKTtcblxuICAgIHZhciBhZnRlck9wdGlvbnMgPSBfZXh0ZW5kcyh7XG4gICAgICBoaWRlQWxidW06IGZhbHNlLFxuICAgICAgc2NhblR5cGU6IFsnYmFyQ29kZScsICdxckNvZGUnXVxuICAgIH0sIF9vcHRpb25zLCB7XG4gICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICBfb3B0aW9ucy5zdWNjZXNzICYmIF9vcHRpb25zLnN1Y2Nlc3MocmVzKTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgIF9vcHRpb25zLmNvbXBsZXRlICYmIF9vcHRpb25zLmNvbXBsZXRlKHJlcyk7XG4gICAgICB9XG4gICAgfSk7XG5cbiAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoYWZ0ZXJPcHRpb25zKTtcbiAgfTtcbn07IiwiaW1wb3J0IHsgaXNNaW5pQXBwLCBpc1dlQ2hhdE1pbmlQcm9ncmFtLCBpc1dlYiwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtLCBpc0JhaWR1U21hcnRQcm9ncmFtIH0gZnJvbSBcIkB1bmkvZW52XCI7XG5pbXBvcnQgYWxpTWluaUFwcE1vZHVsZSBmcm9tIFwiLi9hbGktbWluaWFwcC9pbmRleFwiO1xuaW1wb3J0IHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmltcG9ydCB3ZUNoYXRNb2R1bGUgZnJvbSBcIi4vd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYnl0ZWRhbmNlTW9kdWxlIGZyb20gXCIuL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleFwiO1xuaW1wb3J0IGJhaUR1TW9kdWxlIGZyb20gXCIuL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGt1YWlTaG91TW9kdWxlIGZyb20gXCIuL2t1YWlzaG91LW1pbmlwcm9ncmFtXCI7XG5leHBvcnQgdmFyIHNjYW5Db2RlID0gZnVuY3Rpb24gc2NhbkNvZGUoYXJncykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlKCk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yac2NhbkNvZGXmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IHNjYW5Db2RlOyIsImltcG9ydCB7IG5vcm1hbGl6ZWQgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBTQ0FOVFlQRU1BUCA9IHtcbiAgYmFyQ29kZTogJ2JhckNvZGUnLFxuICBxckNvZGU6ICdxckNvZGUnLFxuICBkbUNvZGU6ICdkYXRhbWF0cml4JyxcbiAgcGRmNDE3Q29kZTogJ3BkZjQxNydcbn07XG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemVkKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBoaWRlQWxidW0gPSBvcHRpb25zLmhpZGVBbGJ1bSxcbiAgICAgIHNjYW5UeXBlID0gb3B0aW9ucy5zY2FuVHlwZSxcbiAgICAgIHN1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICBrcy5zY2FuQ29kZSh7XG4gICAgb25seUZyb21DYW1lcmE6IGhpZGVBbGJ1bSxcbiAgICBzY2FuVHlwZTogU0NBTlRZUEVNQVBbc2NhblR5cGVdLFxuICAgIHN1Y2Nlc3M6IHN1Y2Nlc3MsXG4gICAgZmFpbDogZmFpbCxcbiAgICBjb21wbGV0ZTogY29tcGxldGVcbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEk6IHNjYW5Db2Rl5LiN5pSv5oyBJyk7XG59KTsiLCJpbXBvcnQgeyBub3JtYWxpemVkIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgU0NBTlRZUEVNQVAgPSB7XG4gIGJhckNvZGU6ICdiYXJDb2RlJyxcbiAgcXJDb2RlOiAncXJDb2RlJyxcbiAgZG1Db2RlOiAnZGF0YW1hdHJpeCcsXG4gIHBkZjQxN0NvZGU6ICdwZGY0MTcnXG59O1xuZXhwb3J0IGRlZmF1bHQgbm9ybWFsaXplZChmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgaGlkZUFsYnVtID0gb3B0aW9ucy5oaWRlQWxidW0sXG4gICAgICBzY2FuVHlwZSA9IG9wdGlvbnMuc2NhblR5cGUsXG4gICAgICBzdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIGNvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgd3guc2NhbkNvZGUoe1xuICAgIG9ubHlGcm9tQ2FtZXJhOiBoaWRlQWxidW0sXG4gICAgc2NhblR5cGU6IFNDQU5UWVBFTUFQW3NjYW5UeXBlXSxcbiAgICBzdWNjZXNzOiBzdWNjZXNzLFxuICAgIGZhaWw6IGZhaWwsXG4gICAgY29tcGxldGU6IGNvbXBsZXRlXG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTsiLCJleHBvcnQgdmFyIENPTlRBSU5FUl9OQU1FID0ge1xuICBXRUNIQVQ6ICd3ZWNoYXRNaW5pUHJvZ3JhbScsXG4gIEFMSVBBWTogJ2FsaU1pbmlBcHAnLFxuICBCWVRFOiAnYnl0ZWRhbmNlTWljcm9BcHAnLFxuICBXRUI6ICd3ZWInLFxuICBCQUlEVTogJ2JhaWR1U21hcnRQcm9ncmFtJyxcbiAgS1dBSTogJ2t1YWlzaG91TWluaVByb2dyYW0nXG59OyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNpZnkoYXBpKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBwcm9taXNpZnlBcmcgPSBhcmc7XG4gICAgICBhcGkoX2V4dGVuZHMoe30sIHByb21pc2lmeUFyZywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5zdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuc3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiBvblN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuZmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25GYWlsOiBmdW5jdGlvbiBvbkZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uRmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uRmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuY29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uIG9uQ29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH07XG59IiwidmFyIF9leGNsdWRlZCA9IFtcIl9leHRcIl07XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IHZhciBzdHlsZU91dCA9IGZ1bmN0aW9uIHN0eWxlT3V0KG91dHB1dCwgb3JpZ2luYWxJbnB1dCwgb3JpZ2luYWxPdXRwdXQpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRwdXQsIHtcbiAgICBfb3JpZ2luYWw6IHtcbiAgICAgIGlucHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxJbnB1dCksXG4gICAgICAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g5a+55YWl5Y+C6L+b6KGMIGZvcm1hdCDkuYvlkI7nmoTnu5PmnpxcbiAgICAgIG91dHB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsT3V0cHV0KSAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g6L+U5Zue5YC8IGZvcm1hdCDkuYvliY3nmoTnu5PmnpxcblxuICAgIH1cbiAgfSk7XG59O1xuZXhwb3J0IHZhciBzdHlsZUluID0gZnVuY3Rpb24gc3R5bGVJbihvcHRpb25zLCBiYXNlTmFtZSkge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfcmVmJF9leHQgPSBfcmVmLl9leHQsXG4gICAgICBfZXh0ID0gX3JlZiRfZXh0ID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkX2V4dCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgX2V4dFtiYXNlTmFtZV0gfHwge30pO1xufTsiLCJmdW5jdGlvbiBoaWRlU2hhcmVNZW51KCkge1xuICByZXR1cm4gbXkuaGlkZVNoYXJlTWVudSgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBoaWRlU2hhcmVNZW51OyIsImltcG9ydCBzaG93U2hhcmVNZW51IGZyb20gXCIuL3Nob3dTaGFyZU1lbnVcIjtcbmltcG9ydCBoaWRlU2hhcmVNZW51IGZyb20gXCIuL2hpZGVTaGFyZU1lbnVcIjtcbmV4cG9ydCB7IHNob3dTaGFyZU1lbnUsIGhpZGVTaGFyZU1lbnUgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2hvd1NoYXJlTWVudTogc2hvd1NoYXJlTWVudSxcbiAgaGlkZVNoYXJlTWVudTogaGlkZVNoYXJlTWVudVxufTsiLCJmdW5jdGlvbiBzaG93U2hhcmVNZW51KCkge1xuICByZXR1cm4gbXkuc2hvd1NoYXJlTWVudSgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzaG93U2hhcmVNZW51OyIsImZ1bmN0aW9uIGhpZGVTaGFyZU1lbnUoKSB7XG4gIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mmhpZGVTaGFyZU1lbnUgd2ViIOaaguS4jeaUr+aMgScpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBoaWRlU2hhcmVNZW51OyIsImltcG9ydCBzaG93U2hhcmVNZW51IGZyb20gXCIuL3Nob3dTaGFyZU1lbnVcIjtcbmltcG9ydCBoaWRlU2hhcmVNZW51IGZyb20gXCIuL2hpZGVTaGFyZU1lbnVcIjtcbmV4cG9ydCB7IHNob3dTaGFyZU1lbnUsIGhpZGVTaGFyZU1lbnUgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2hvd1NoYXJlTWVudTogc2hvd1NoYXJlTWVudSxcbiAgaGlkZVNoYXJlTWVudTogaGlkZVNoYXJlTWVudVxufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxuZnVuY3Rpb24gb3BlblNoYXJlKG9wdGlvbnMpIHtcbiAgdmFyIHRpdGxlID0gb3B0aW9ucy50aXRsZSxcbiAgICAgIGNvbnRlbnQgPSBvcHRpb25zLmNvbnRlbnQsXG4gICAgICBpbWFnZVVybCA9IG9wdGlvbnMuaW1hZ2VVcmwsXG4gICAgICBwYXRoID0gb3B0aW9ucy5wYXRoLFxuICAgICAgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHJldHVybiBzd2FuLm9wZW5TaGFyZSh7XG4gICAgdGl0bGU6IHRpdGxlLFxuICAgIGNvbnRlbnQ6IGNvbnRlbnQsXG4gICAgaW1hZ2VVcmw6IGltYWdlVXJsLFxuICAgIHBhdGg6IHBhdGgsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKHJlcyk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUob3BlblNoYXJlLCBDT05UQUlORVJfTkFNRS5CQUlEVSk7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbmZ1bmN0aW9uIGhpZGVTaGFyZU1lbnUob3B0aW9ucykge1xuICB2YXIgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHJldHVybiB0dC5oaWRlU2hhcmVNZW51KHtcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShoaWRlU2hhcmVNZW51LCBDT05UQUlORVJfTkFNRS5CWVRFKTsiLCJpbXBvcnQgc2hvd1NoYXJlTWVudSBmcm9tIFwiLi9zaG93U2hhcmVNZW51XCI7XG5pbXBvcnQgaGlkZVNoYXJlTWVudSBmcm9tIFwiLi9oaWRlU2hhcmVNZW51XCI7XG5leHBvcnQgeyBzaG93U2hhcmVNZW51LCBoaWRlU2hhcmVNZW51IH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHNob3dTaGFyZU1lbnU6IHNob3dTaGFyZU1lbnUsXG4gIGhpZGVTaGFyZU1lbnU6IGhpZGVTaGFyZU1lbnVcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbmZ1bmN0aW9uIHNob3dTaGFyZU1lbnUob3B0aW9ucykge1xuICB2YXIgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHJldHVybiB0dC5zaG93U2hhcmVNZW51KHtcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MocmVzKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5vcm1hbGl6ZShzaG93U2hhcmVNZW51LCBDT05UQUlORVJfTkFNRS5CWVRFKTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG4vKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tc2hhZG93ICovXG5cbi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1pbnZhbGlkLXZvaWQtdHlwZSAqL1xuXG4vKiBlc2xpbnQtZGlzYWJsZSBuby1lbXB0eSAqL1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSBcIi4vX3V0aWxzL3Byb21pc2lmeVwiO1xuaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcbmV4cG9ydCBmdW5jdGlvbiBzdHlsZU9wdGlvbnMob3B0aW9ucykge1xuICB2YXIgYWZ0ZXJPcHRpb25zID0gX2V4dGVuZHMoe30sIG9wdGlvbnMpO1xuXG4gIHJldHVybiBhZnRlck9wdGlvbnM7XG59XG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICB2YXIgYWZ0ZXJPcHRpb25zID0gc3R5bGVPcHRpb25zKHN0eWxlSW4ob3B0aW9ucywgY29udGFpbmVyTmFtZSkpO1xuICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShhZnRlck9wdGlvbnMpO1xuICB9O1xufSIsImltcG9ydCB7IGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNXZWIsIGlzQnl0ZURhbmNlTWljcm9BcHAsIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSwgaXNCYWlkdVNtYXJ0UHJvZ3JhbSB9IGZyb20gXCJAdW5pL2VudlwiO1xuaW1wb3J0IGFsaU1pbmlBcHBNb2R1bGUgZnJvbSBcIi4vYWxpLW1pbmlhcHAvaW5kZXhcIjtcbmltcG9ydCB3ZUNoYXRNb2R1bGUgZnJvbSBcIi4vd2VjaGF0LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgYnl0ZWRhbmNlTW9kdWxlIGZyb20gXCIuL2J5dGVkYW5jZS1taWNyb2FwcC9pbmRleFwiO1xuaW1wb3J0IHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmltcG9ydCBrdWFpU2hvdU1vZHVsZSBmcm9tIFwiLi9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJhaUR1TW9kdWxlIGZyb20gXCIuL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleFwiO1xuZXhwb3J0IHZhciBzaG93U2hhcmVNZW51ID0gZnVuY3Rpb24gc2hvd1NoYXJlTWVudShvcHRpb25zKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuc2hvd1NoYXJlTWVudSgpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5zaG93U2hhcmVNZW51KG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLnNob3dTaGFyZU1lbnUob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuc2hvd1NoYXJlTWVudShvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5zaG93U2hhcmVNZW51KCk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5zaG93U2hhcmVNZW51KG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mnNob3dTaGFyZU1lbnUg5pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGhpZGVTaGFyZU1lbnUgPSBmdW5jdGlvbiBoaWRlU2hhcmVNZW51KG9wdGlvbnMpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5oaWRlU2hhcmVNZW51KCk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmhpZGVTaGFyZU1lbnUob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuaGlkZVNoYXJlTWVudShvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5oaWRlU2hhcmVNZW51KG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLmhpZGVTaGFyZU1lbnUoKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLmhpZGVTaGFyZU1lbnUoKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpoaWRlU2hhcmVNZW51IOaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzaG93U2hhcmVNZW51OiBzaG93U2hhcmVNZW51LFxuICBoaWRlU2hhcmVNZW51OiBoaWRlU2hhcmVNZW51XG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG5mdW5jdGlvbiBoaWRlU2hhcmVNZW51KG9wdGlvbnMpIHtcbiAgdmFyIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICByZXR1cm4ga3MuaGlkZVNoYXJlTWVudSh7XG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKHJlcyk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoaGlkZVNoYXJlTWVudSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7IiwiaW1wb3J0IHNob3dTaGFyZU1lbnUgZnJvbSBcIi4vc2hvd1NoYXJlTWVudVwiO1xuaW1wb3J0IGhpZGVTaGFyZU1lbnUgZnJvbSBcIi4vaGlkZVNoYXJlTWVudVwiO1xuZXhwb3J0IHsgc2hvd1NoYXJlTWVudSwgaGlkZVNoYXJlTWVudSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzaG93U2hhcmVNZW51OiBzaG93U2hhcmVNZW51LFxuICBoaWRlU2hhcmVNZW51OiBoaWRlU2hhcmVNZW51XG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG5mdW5jdGlvbiBzaG93U2hhcmVNZW51KG9wdGlvbnMpIHtcbiAgdmFyIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICByZXR1cm4ga3Muc2hvd1NoYXJlTWVudSh7XG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKHJlcyk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCBub3JtYWxpemUoc2hvd1NoYXJlTWVudSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7IiwiZnVuY3Rpb24gaGlkZVNoYXJlTWVudSgpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yaaGlkZVNoYXJlTWVudSB3ZWIg5pqC5LiN5pSv5oyBJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGhpZGVTaGFyZU1lbnU7IiwiaW1wb3J0IHNob3dTaGFyZU1lbnUgZnJvbSBcIi4vc2hvd1NoYXJlTWVudVwiO1xuaW1wb3J0IGhpZGVTaGFyZU1lbnUgZnJvbSBcIi4vaGlkZVNoYXJlTWVudVwiO1xuZXhwb3J0IHsgc2hvd1NoYXJlTWVudSwgaGlkZVNoYXJlTWVudSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzaG93U2hhcmVNZW51OiBzaG93U2hhcmVNZW51LFxuICBoaWRlU2hhcmVNZW51OiBoaWRlU2hhcmVNZW51XG59OyIsImZ1bmN0aW9uIHNob3dTaGFyZU1lbnUoKSB7XG4gIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mnNob3dTaGFyZU1lbnUgd2ViIOaaguS4jeaUr+aMgScpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBzaG93U2hhcmVNZW51OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG5mdW5jdGlvbiBoaWRlU2hhcmVNZW51KG9wdGlvbnMpIHtcbiAgdmFyIG1lbnVzID0gb3B0aW9ucy5tZW51cyxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICByZXR1cm4gd3guaGlkZVNoYXJlTWVudSh7XG4gICAgbWVudXM6IG1lbnVzLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcyhyZXMpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbm9ybWFsaXplKGhpZGVTaGFyZU1lbnUsIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7IiwiaW1wb3J0IHNob3dTaGFyZU1lbnUgZnJvbSBcIi4vc2hvd1NoYXJlTWVudVwiO1xuaW1wb3J0IGhpZGVTaGFyZU1lbnUgZnJvbSBcIi4vaGlkZVNoYXJlTWVudVwiO1xuZXhwb3J0IHsgc2hvd1NoYXJlTWVudSwgaGlkZVNoYXJlTWVudSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzaG93U2hhcmVNZW51OiBzaG93U2hhcmVNZW51LFxuICBoaWRlU2hhcmVNZW51OiBoaWRlU2hhcmVNZW51XG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG5mdW5jdGlvbiBzaG93U2hhcmVNZW51KG9wdGlvbnMpIHtcbiAgdmFyIF9vcHRpb25zJHdpdGhTaGFyZVRpYyA9IG9wdGlvbnMud2l0aFNoYXJlVGlja2V0LFxuICAgICAgd2l0aFNoYXJlVGlja2V0ID0gX29wdGlvbnMkd2l0aFNoYXJlVGljID09PSB2b2lkIDAgPyBmYWxzZSA6IF9vcHRpb25zJHdpdGhTaGFyZVRpYyxcbiAgICAgIG1lbnVzID0gb3B0aW9ucy5tZW51cyxcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICByZXR1cm4gd3guc2hvd1NoYXJlTWVudSh7XG4gICAgd2l0aFNoYXJlVGlja2V0OiB3aXRoU2hhcmVUaWNrZXQsXG4gICAgbWVudXM6IG1lbnVzLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcyhyZXMpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgbm9ybWFsaXplKHNob3dTaGFyZU1lbnUsIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7IiwiZXhwb3J0IHZhciBDT05UQUlORVJfTkFNRSA9IHtcbiAgV0VDSEFUOiAnd2VjaGF0TWluaVByb2dyYW0nLFxuICBBTElQQVk6ICdhbGlNaW5pQXBwJyxcbiAgQllURTogJ2J5dGVkYW5jZU1pY3JvQXBwJyxcbiAgV0VCOiAnd2ViJyxcbiAgQkFJRFU6ICdiYWlkdVNtYXJ0UHJvZ3JhbScsXG4gIEtXQUk6ICdrdWFpc2hvdU1pbmlQcm9ncmFtJ1xufTsiLCJmdW5jdGlvbiBpc1VuZGVmKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgdmFyIGlzRGluZ2RpbmdNaW5pYXBwID0gIWlzVW5kZWYodHlwZW9mIGRkKSAmJiBkZCAhPT0gbnVsbCAmJiAhaXNVbmRlZih0eXBlb2YgZGQuYWxlcnQpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNpZnkoYXBpKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBwcm9taXNpZnlBcmcgPSBhcmc7XG4gICAgICBhcGkoX2V4dGVuZHMoe30sIHByb21pc2lmeUFyZywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5zdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuc3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiBvblN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuZmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25GYWlsOiBmdW5jdGlvbiBvbkZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uRmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uRmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuY29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uIG9uQ29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH07XG59IiwidmFyIF9leGNsdWRlZCA9IFtcIl9leHRcIl07XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IHZhciBzdHlsZU91dCA9IGZ1bmN0aW9uIHN0eWxlT3V0KG91dHB1dCwgb3JpZ2luYWxJbnB1dCwgb3JpZ2luYWxPdXRwdXQpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRwdXQsIHtcbiAgICBfb3JpZ2luYWw6IHtcbiAgICAgIGlucHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxJbnB1dCksXG4gICAgICAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g5a+55YWl5Y+C6L+b6KGMIGZvcm1hdCDkuYvlkI7nmoTnu5PmnpxcbiAgICAgIG91dHB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsT3V0cHV0KSAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g6L+U5Zue5YC8IGZvcm1hdCDkuYvliY3nmoTnu5PmnpxcblxuICAgIH1cbiAgfSk7XG59O1xuZXhwb3J0IHZhciBzdHlsZUluID0gZnVuY3Rpb24gc3R5bGVJbihvcHRpb25zLCBiYXNlTmFtZSkge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfcmVmJF9leHQgPSBfcmVmLl9leHQsXG4gICAgICBfZXh0ID0gX3JlZiRfZXh0ID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkX2V4dCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgX2V4dFtiYXNlTmFtZV0gfHwge30pO1xufTsiLCJpbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgZ2V0U3RvcmFnZSA9IG5vcm1hbGl6ZS5nZXRTdG9yYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLmdldFN0b3JhZ2UoYXJncykgOiBteS5nZXRTdG9yYWdlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IGdldFN0b3JhZ2U7IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbnZhciBnZXRTdG9yYWdlU3luYyA9IGZ1bmN0aW9uIGdldFN0b3JhZ2VTeW5jKGFyZ3MpIHtcbiAgcmV0dXJuIGlzRGluZ2RpbmdNaW5pYXBwID8gZGQuZ2V0U3RvcmFnZVN5bmMoc3R5bGVJbihhcmdzLCBDT05UQUlORVJfTkFNRS5BTElQQVkpKSA6IG15LmdldFN0b3JhZ2VTeW5jKHN0eWxlSW4oYXJncywgQ09OVEFJTkVSX05BTUUuQUxJUEFZKSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRTdG9yYWdlU3luYzsiLCJpbXBvcnQgZ2V0U3RvcmFnZSBmcm9tIFwiLi9nZXRTdG9yYWdlXCI7XG5pbXBvcnQgZ2V0U3RvcmFnZVN5bmMgZnJvbSBcIi4vZ2V0U3RvcmFnZVN5bmNcIjtcbmltcG9ydCBzZXRTdG9yYWdlIGZyb20gXCIuL3NldFN0b3JhZ2VcIjtcbmltcG9ydCBzZXRTdG9yYWdlU3luYyBmcm9tIFwiLi9zZXRTdG9yYWdlU3luY1wiO1xuaW1wb3J0IHJlbW92ZVN0b3JhZ2UgZnJvbSBcIi4vcmVtb3ZlU3RvcmFnZVwiO1xuaW1wb3J0IHJlbW92ZVN0b3JhZ2VTeW5jIGZyb20gXCIuL3JlbW92ZVN0b3JhZ2VTeW5jXCI7XG5leHBvcnQgeyBnZXRTdG9yYWdlLCBnZXRTdG9yYWdlU3luYywgc2V0U3RvcmFnZSwgc2V0U3RvcmFnZVN5bmMsIHJlbW92ZVN0b3JhZ2UsIHJlbW92ZVN0b3JhZ2VTeW5jIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldFN0b3JhZ2U6IGdldFN0b3JhZ2UsXG4gIGdldFN0b3JhZ2VTeW5jOiBnZXRTdG9yYWdlU3luYyxcbiAgc2V0U3RvcmFnZTogc2V0U3RvcmFnZSxcbiAgc2V0U3RvcmFnZVN5bmM6IHNldFN0b3JhZ2VTeW5jLFxuICByZW1vdmVTdG9yYWdlOiByZW1vdmVTdG9yYWdlLFxuICByZW1vdmVTdG9yYWdlU3luYzogcmVtb3ZlU3RvcmFnZVN5bmNcbn07IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIHJlbW92ZVN0b3JhZ2UgPSBub3JtYWxpemUucmVtb3ZlU3RvcmFnZShmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5yZW1vdmVTdG9yYWdlKGFyZ3MpIDogbXkucmVtb3ZlU3RvcmFnZShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCByZW1vdmVTdG9yYWdlOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBzdHlsZUluIH0gZnJvbSBcIi4uL191dGlscy9zdHlsZU9wdGlvbnNcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG52YXIgcmVtb3ZlU3RvcmFnZVN5bmMgPSBmdW5jdGlvbiByZW1vdmVTdG9yYWdlU3luYyhhcmdzKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLnJlbW92ZVN0b3JhZ2VTeW5jKHN0eWxlSW4oYXJncywgQ09OVEFJTkVSX05BTUUuQUxJUEFZKSkgOiBteS5yZW1vdmVTdG9yYWdlU3luYyhzdHlsZUluKGFyZ3MsIENPTlRBSU5FUl9OQU1FLkFMSVBBWSkpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgcmVtb3ZlU3RvcmFnZVN5bmM7IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIHNldFN0b3JhZ2UgPSBub3JtYWxpemUuc2V0U3RvcmFnZShmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5zZXRTdG9yYWdlKGFyZ3MpIDogbXkuc2V0U3RvcmFnZShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCBzZXRTdG9yYWdlOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBzdHlsZUluIH0gZnJvbSBcIi4uL191dGlscy9zdHlsZU9wdGlvbnNcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG52YXIgc2V0U3RvcmFnZVN5bmMgPSBmdW5jdGlvbiBzZXRTdG9yYWdlU3luYyhhcmdzKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLnNldFN0b3JhZ2VTeW5jKHN0eWxlSW4oYXJncywgQ09OVEFJTkVSX05BTUUuQUxJUEFZKSkgOiBteS5zZXRTdG9yYWdlU3luYyhzdHlsZUluKGFyZ3MsIENPTlRBSU5FUl9OQU1FLkFMSVBBWSkpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgc2V0U3RvcmFnZVN5bmM7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ2V0U3RvcmFnZSA9IG5vcm1hbGl6ZS5nZXRTdG9yYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBzd2FuLmdldFN0b3JhZ2UoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCBnZXRTdG9yYWdlOyIsImltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbnZhciBnZXRTdG9yYWdlU3luYyA9IGZ1bmN0aW9uIGdldFN0b3JhZ2VTeW5jKGFyZ3MpIHtcbiAgYXJncyA9IHN0eWxlSW4oYXJncywgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuICByZXR1cm4ge1xuICAgIGRhdGE6IHN3YW4uZ2V0U3RvcmFnZVN5bmMoYXJncy5rZXkpXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRTdG9yYWdlU3luYzsiLCJpbXBvcnQgZ2V0U3RvcmFnZSBmcm9tIFwiLi9nZXRTdG9yYWdlXCI7XG5pbXBvcnQgZ2V0U3RvcmFnZVN5bmMgZnJvbSBcIi4vZ2V0U3RvcmFnZVN5bmNcIjtcbmltcG9ydCBzZXRTdG9yYWdlIGZyb20gXCIuL3NldFN0b3JhZ2VcIjtcbmltcG9ydCBzZXRTdG9yYWdlU3luYyBmcm9tIFwiLi9zZXRTdG9yYWdlU3luY1wiO1xuaW1wb3J0IHJlbW92ZVN0b3JhZ2UgZnJvbSBcIi4vcmVtb3ZlU3RvcmFnZVwiO1xuaW1wb3J0IHJlbW92ZVN0b3JhZ2VTeW5jIGZyb20gXCIuL3JlbW92ZVN0b3JhZ2VTeW5jXCI7XG5leHBvcnQgeyBnZXRTdG9yYWdlLCBnZXRTdG9yYWdlU3luYywgc2V0U3RvcmFnZSwgc2V0U3RvcmFnZVN5bmMsIHJlbW92ZVN0b3JhZ2UsIHJlbW92ZVN0b3JhZ2VTeW5jIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldFN0b3JhZ2U6IGdldFN0b3JhZ2UsXG4gIGdldFN0b3JhZ2VTeW5jOiBnZXRTdG9yYWdlU3luYyxcbiAgc2V0U3RvcmFnZTogc2V0U3RvcmFnZSxcbiAgc2V0U3RvcmFnZVN5bmM6IHNldFN0b3JhZ2VTeW5jLFxuICByZW1vdmVTdG9yYWdlOiByZW1vdmVTdG9yYWdlLFxuICByZW1vdmVTdG9yYWdlU3luYzogcmVtb3ZlU3RvcmFnZVN5bmNcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgcmVtb3ZlU3RvcmFnZSA9IG5vcm1hbGl6ZS5yZW1vdmVTdG9yYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBzd2FuLnJlbW92ZVN0b3JhZ2UoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCByZW1vdmVTdG9yYWdlOyIsImltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbnZhciByZW1vdmVTdG9yYWdlU3luYyA9IGZ1bmN0aW9uIHJlbW92ZVN0b3JhZ2VTeW5jKGFyZ3MpIHtcbiAgYXJncyA9IHN0eWxlSW4oYXJncywgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuICByZXR1cm4gc3dhbi5yZW1vdmVTdG9yYWdlU3luYyhhcmdzLmtleSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCByZW1vdmVTdG9yYWdlU3luYzsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzZXRTdG9yYWdlID0gbm9ybWFsaXplLnNldFN0b3JhZ2UoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHN3YW4uc2V0U3RvcmFnZShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IHNldFN0b3JhZ2U7IiwiaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxudmFyIHNldFN0b3JhZ2VTeW5jID0gZnVuY3Rpb24gc2V0U3RvcmFnZVN5bmMoYXJncykge1xuICBhcmdzID0gc3R5bGVJbihhcmdzLCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG4gIHJldHVybiBzd2FuLnNldFN0b3JhZ2VTeW5jKGFyZ3Mua2V5LCBhcmdzLmRhdGEpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgc2V0U3RvcmFnZVN5bmM7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ2V0U3RvcmFnZSA9IG5vcm1hbGl6ZS5nZXRTdG9yYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiB0dC5nZXRTdG9yYWdlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCBnZXRTdG9yYWdlOyIsImltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbnZhciBnZXRTdG9yYWdlU3luYyA9IGZ1bmN0aW9uIGdldFN0b3JhZ2VTeW5jKGFyZ3MpIHtcbiAgYXJncyA9IHN0eWxlSW4oYXJncywgQ09OVEFJTkVSX05BTUUuQllURSk7XG4gIHJldHVybiB7XG4gICAgZGF0YTogdHQuZ2V0U3RvcmFnZVN5bmMoYXJncy5rZXkpXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRTdG9yYWdlU3luYzsiLCJpbXBvcnQgZ2V0U3RvcmFnZSBmcm9tIFwiLi9nZXRTdG9yYWdlXCI7XG5pbXBvcnQgZ2V0U3RvcmFnZVN5bmMgZnJvbSBcIi4vZ2V0U3RvcmFnZVN5bmNcIjtcbmltcG9ydCBzZXRTdG9yYWdlIGZyb20gXCIuL3NldFN0b3JhZ2VcIjtcbmltcG9ydCBzZXRTdG9yYWdlU3luYyBmcm9tIFwiLi9zZXRTdG9yYWdlU3luY1wiO1xuaW1wb3J0IHJlbW92ZVN0b3JhZ2UgZnJvbSBcIi4vcmVtb3ZlU3RvcmFnZVwiO1xuaW1wb3J0IHJlbW92ZVN0b3JhZ2VTeW5jIGZyb20gXCIuL3JlbW92ZVN0b3JhZ2VTeW5jXCI7XG5leHBvcnQgeyBnZXRTdG9yYWdlLCBnZXRTdG9yYWdlU3luYywgc2V0U3RvcmFnZSwgc2V0U3RvcmFnZVN5bmMsIHJlbW92ZVN0b3JhZ2UsIHJlbW92ZVN0b3JhZ2VTeW5jIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldFN0b3JhZ2U6IGdldFN0b3JhZ2UsXG4gIGdldFN0b3JhZ2VTeW5jOiBnZXRTdG9yYWdlU3luYyxcbiAgc2V0U3RvcmFnZTogc2V0U3RvcmFnZSxcbiAgc2V0U3RvcmFnZVN5bmM6IHNldFN0b3JhZ2VTeW5jLFxuICByZW1vdmVTdG9yYWdlOiByZW1vdmVTdG9yYWdlLFxuICByZW1vdmVTdG9yYWdlU3luYzogcmVtb3ZlU3RvcmFnZVN5bmNcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgcmVtb3ZlU3RvcmFnZSA9IG5vcm1hbGl6ZS5yZW1vdmVTdG9yYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiB0dC5yZW1vdmVTdG9yYWdlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCByZW1vdmVTdG9yYWdlOyIsImltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbnZhciByZW1vdmVTdG9yYWdlU3luYyA9IGZ1bmN0aW9uIHJlbW92ZVN0b3JhZ2VTeW5jKGFyZ3MpIHtcbiAgYXJncyA9IHN0eWxlSW4oYXJncywgQ09OVEFJTkVSX05BTUUuQllURSk7XG4gIHJldHVybiB0dC5yZW1vdmVTdG9yYWdlU3luYyhhcmdzLmtleSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCByZW1vdmVTdG9yYWdlU3luYzsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzZXRTdG9yYWdlID0gbm9ybWFsaXplLnNldFN0b3JhZ2UoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHR0LnNldFN0b3JhZ2UoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CWVRFKTtcbmV4cG9ydCBkZWZhdWx0IHNldFN0b3JhZ2U7IiwiaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxudmFyIHNldFN0b3JhZ2VTeW5jID0gZnVuY3Rpb24gc2V0U3RvcmFnZVN5bmMoYXJncykge1xuICBhcmdzID0gc3R5bGVJbihhcmdzLCBDT05UQUlORVJfTkFNRS5CWVRFKTtcbiAgcmV0dXJuIHR0LnNldFN0b3JhZ2VTeW5jKGFyZ3Mua2V5LCBhcmdzLmRhdGEpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgc2V0U3RvcmFnZVN5bmM7IiwiaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSBcIi4vX3V0aWxzL3Byb21pc2lmeVwiO1xuaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcblxuLyoqXG4gKiBAcGFyYW0gcGFyYW1zXG4gKi9cbmZ1bmN0aW9uIGZvcm1hdEdldFN0b3JhZ2VSZXMocGFyYW1zKSB7XG4gIGlmIChwYXJhbXMgJiYgdHlwZW9mIHBhcmFtcy5mYWlsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgdmFyIGZhaWxGbiA9IHBhcmFtcy5mYWlsO1xuXG4gICAgcGFyYW1zLmZhaWwgPSBmdW5jdGlvbiAoZXJyKSB7XG4gICAgICBpZiAoZXJyLmVyck1zZyA9PT0gJ2dldFN0b3JhZ2U6ZmFpbCBkYXRhIG5vdCBmb3VuZCcpIHtcbiAgICAgICAgdHlwZW9mIHBhcmFtcy5zdWNjZXNzID09PSAnZnVuY3Rpb24nICYmIHBhcmFtcy5zdWNjZXNzKHtcbiAgICAgICAgICBkYXRhOiBudWxsXG4gICAgICAgIH0pO1xuICAgICAgICB0eXBlb2YgcGFyYW1zLmNvbXBsZXRlID09PSAnZnVuY3Rpb24nICYmIHBhcmFtcy5jb21wbGV0ZSh7XG4gICAgICAgICAgZGF0YTogbnVsbFxuICAgICAgICB9KTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBmYWlsRm4oZXJyKTtcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIHBhcmFtcztcbn1cblxuZXhwb3J0IHZhciBub3JtYWxpemUgPSB7XG4gIGdldFN0b3JhZ2U6IGZ1bmN0aW9uIGdldFN0b3JhZ2UoYXBpLCBjb250YWluZXJOYW1lKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICBhcmdzID0gc3R5bGVJbihhcmdzLCBjb250YWluZXJOYW1lKTtcbiAgICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShmb3JtYXRHZXRTdG9yYWdlUmVzKGFyZ3MpKS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgICAgICBpZiAoZS5lcnJNc2cgPT09ICdnZXRTdG9yYWdlOmZhaWwgZGF0YSBub3QgZm91bmQnKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGRhdGE6IG51bGxcbiAgICAgICAgICB9O1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9O1xuICB9LFxuICBzZXRTdG9yYWdlOiBmdW5jdGlvbiBzZXRTdG9yYWdlKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICAgIHJldHVybiBmdW5jdGlvbiAoYXJncykge1xuICAgICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4oYXJncywgY29udGFpbmVyTmFtZSkpO1xuICAgIH07XG4gIH0sXG4gIHJlbW92ZVN0b3JhZ2U6IGZ1bmN0aW9uIHJlbW92ZVN0b3JhZ2UoYXBpLCBjb250YWluZXJOYW1lKSB7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoc3R5bGVJbihhcmdzLCBjb250YWluZXJOYW1lKSk7XG4gICAgfTtcbiAgfVxufTsiLCJpbXBvcnQgeyBpc01pbmlBcHAsIGlzV2VDaGF0TWluaVByb2dyYW0sIGlzV2ViLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0t1YWlTaG91TWluaVByb2dyYW0sIGlzQmFpZHVTbWFydFByb2dyYW0gfSBmcm9tIFwiQHVuaS9lbnZcIjtcbmltcG9ydCB3ZWJNb2R1bGUgZnJvbSBcIi4vd2ViL2luZGV4XCI7XG5pbXBvcnQgYWxpTWluaUFwcE1vZHVsZSBmcm9tIFwiLi9hbGktbWluaWFwcC9pbmRleFwiO1xuaW1wb3J0IHdlQ2hhdE1vZHVsZSBmcm9tIFwiLi93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBieXRlZGFuY2VNb2R1bGUgZnJvbSBcIi4vYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4XCI7XG5pbXBvcnQga3VhaVNob3VNb2R1bGUgZnJvbSBcIi4va3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBiYWlEdU1vZHVsZSBmcm9tIFwiLi9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXhcIjtcbmV4cG9ydCB2YXIgZ2V0U3RvcmFnZSA9IGZ1bmN0aW9uIGdldFN0b3JhZ2UoYXJncykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLmdldFN0b3JhZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmdldFN0b3JhZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuZ2V0U3RvcmFnZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5nZXRTdG9yYWdlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLmdldFN0b3JhZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5nZXRTdG9yYWdlKGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mmdldFN0b3JhZ2XmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgZ2V0U3RvcmFnZVN5bmMgPSBmdW5jdGlvbiBnZXRTdG9yYWdlU3luYyhhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuZ2V0U3RvcmFnZVN5bmMoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmdldFN0b3JhZ2VTeW5jKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmdldFN0b3JhZ2VTeW5jKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmdldFN0b3JhZ2VTeW5jKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLmdldFN0b3JhZ2VTeW5jKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuZ2V0U3RvcmFnZVN5bmMoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yaZ2V0U3RvcmFnZVN5bmPmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgc2V0U3RvcmFnZSA9IGZ1bmN0aW9uIHNldFN0b3JhZ2UoYXJncykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLnNldFN0b3JhZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLnNldFN0b3JhZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuc2V0U3RvcmFnZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5zZXRTdG9yYWdlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLnNldFN0b3JhZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5zZXRTdG9yYWdlKGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mnNldFN0b3JhZ2XmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgc2V0U3RvcmFnZVN5bmMgPSBmdW5jdGlvbiBzZXRTdG9yYWdlU3luYyhhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuc2V0U3RvcmFnZVN5bmMoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLnNldFN0b3JhZ2VTeW5jKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLnNldFN0b3JhZ2VTeW5jKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLnNldFN0b3JhZ2VTeW5jKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLnNldFN0b3JhZ2VTeW5jKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuc2V0U3RvcmFnZVN5bmMoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yac2V0U3RvcmFnZVN5bmPmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgcmVtb3ZlU3RvcmFnZSA9IGZ1bmN0aW9uIHJlbW92ZVN0b3JhZ2UoYXJncykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLnJlbW92ZVN0b3JhZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLnJlbW92ZVN0b3JhZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUucmVtb3ZlU3RvcmFnZShhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5yZW1vdmVTdG9yYWdlKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLnJlbW92ZVN0b3JhZ2UoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5yZW1vdmVTdG9yYWdlKGFyZ3MpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mnJlbW92ZVN0b3JhZ2XmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgcmVtb3ZlU3RvcmFnZVN5bmMgPSBmdW5jdGlvbiByZW1vdmVTdG9yYWdlU3luYyhhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUucmVtb3ZlU3RvcmFnZVN5bmMoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLnJlbW92ZVN0b3JhZ2VTeW5jKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLnJlbW92ZVN0b3JhZ2VTeW5jKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLnJlbW92ZVN0b3JhZ2VTeW5jKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLnJlbW92ZVN0b3JhZ2VTeW5jKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUucmVtb3ZlU3RvcmFnZVN5bmMoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yacmVtb3ZlU3RvcmFnZVN5bmPmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0U3RvcmFnZTogZ2V0U3RvcmFnZSxcbiAgZ2V0U3RvcmFnZVN5bmM6IGdldFN0b3JhZ2VTeW5jLFxuICBzZXRTdG9yYWdlOiBzZXRTdG9yYWdlLFxuICBzZXRTdG9yYWdlU3luYzogc2V0U3RvcmFnZVN5bmMsXG4gIHJlbW92ZVN0b3JhZ2U6IHJlbW92ZVN0b3JhZ2UsXG4gIHJlbW92ZVN0b3JhZ2VTeW5jOiByZW1vdmVTdG9yYWdlU3luY1xufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRTdG9yYWdlID0gbm9ybWFsaXplLmdldFN0b3JhZ2UoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGtzLmdldFN0b3JhZ2UoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbmV4cG9ydCBkZWZhdWx0IGdldFN0b3JhZ2U7IiwiaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxudmFyIGdldFN0b3JhZ2VTeW5jID0gZnVuY3Rpb24gZ2V0U3RvcmFnZVN5bmMoYXJncykge1xuICBhcmdzID0gc3R5bGVJbihhcmdzLCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbiAgcmV0dXJuIHtcbiAgICBkYXRhOiBrcy5nZXRTdG9yYWdlU3luYyhhcmdzLmtleSlcbiAgfTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGdldFN0b3JhZ2VTeW5jOyIsImltcG9ydCBnZXRTdG9yYWdlIGZyb20gXCIuL2dldFN0b3JhZ2VcIjtcbmltcG9ydCBnZXRTdG9yYWdlU3luYyBmcm9tIFwiLi9nZXRTdG9yYWdlU3luY1wiO1xuaW1wb3J0IHNldFN0b3JhZ2UgZnJvbSBcIi4vc2V0U3RvcmFnZVwiO1xuaW1wb3J0IHNldFN0b3JhZ2VTeW5jIGZyb20gXCIuL3NldFN0b3JhZ2VTeW5jXCI7XG5pbXBvcnQgcmVtb3ZlU3RvcmFnZSBmcm9tIFwiLi9yZW1vdmVTdG9yYWdlXCI7XG5pbXBvcnQgcmVtb3ZlU3RvcmFnZVN5bmMgZnJvbSBcIi4vcmVtb3ZlU3RvcmFnZVN5bmNcIjtcbmV4cG9ydCB7IGdldFN0b3JhZ2UsIGdldFN0b3JhZ2VTeW5jLCBzZXRTdG9yYWdlLCBzZXRTdG9yYWdlU3luYywgcmVtb3ZlU3RvcmFnZSwgcmVtb3ZlU3RvcmFnZVN5bmMgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0U3RvcmFnZTogZ2V0U3RvcmFnZSxcbiAgZ2V0U3RvcmFnZVN5bmM6IGdldFN0b3JhZ2VTeW5jLFxuICBzZXRTdG9yYWdlOiBzZXRTdG9yYWdlLFxuICBzZXRTdG9yYWdlU3luYzogc2V0U3RvcmFnZVN5bmMsXG4gIHJlbW92ZVN0b3JhZ2U6IHJlbW92ZVN0b3JhZ2UsXG4gIHJlbW92ZVN0b3JhZ2VTeW5jOiByZW1vdmVTdG9yYWdlU3luY1xufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciByZW1vdmVTdG9yYWdlID0gbm9ybWFsaXplLnJlbW92ZVN0b3JhZ2UoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGtzLnJlbW92ZVN0b3JhZ2UoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbmV4cG9ydCBkZWZhdWx0IHJlbW92ZVN0b3JhZ2U7IiwiaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxudmFyIHJlbW92ZVN0b3JhZ2VTeW5jID0gZnVuY3Rpb24gcmVtb3ZlU3RvcmFnZVN5bmMoYXJncykge1xuICBhcmdzID0gc3R5bGVJbihhcmdzLCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbiAgcmV0dXJuIGtzLnJlbW92ZVN0b3JhZ2VTeW5jKGFyZ3Mua2V5KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJlbW92ZVN0b3JhZ2VTeW5jOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHNldFN0b3JhZ2UgPSBub3JtYWxpemUuc2V0U3RvcmFnZShmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4ga3Muc2V0U3RvcmFnZShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgc2V0U3RvcmFnZTsiLCJpbXBvcnQgeyBzdHlsZUluIH0gZnJvbSBcIi4uL191dGlscy9zdHlsZU9wdGlvbnNcIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuXG52YXIgc2V0U3RvcmFnZVN5bmMgPSBmdW5jdGlvbiBzZXRTdG9yYWdlU3luYyhhcmdzKSB7XG4gIGFyZ3MgPSBzdHlsZUluKGFyZ3MsIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuICByZXR1cm4ga3Muc2V0U3RvcmFnZVN5bmMoYXJncy5rZXksIGFyZ3MuZGF0YSk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBzZXRTdG9yYWdlU3luYzsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRTdG9yYWdlID0gbm9ybWFsaXplLmdldFN0b3JhZ2UoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgdmFyIF9yZWYgPSBhcmdzIHx8IHt9LFxuICAgICAgX3JlZiRzdWNjZXNzID0gX3JlZi5zdWNjZXNzLFxuICAgICAgc3VjY2VzcyA9IF9yZWYkc3VjY2VzcyA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfcmVmJHN1Y2Nlc3MsXG4gICAgICBfcmVmJGZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBmYWlsID0gX3JlZiRmYWlsID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9yZWYkZmFpbCxcbiAgICAgIF9yZWYkY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlLFxuICAgICAgY29tcGxldGUgPSBfcmVmJGNvbXBsZXRlID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9yZWYkY29tcGxldGU7XG5cbiAgdHJ5IHtcbiAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3MpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgRnVuY3Rpb24gbmVlZCBhIHBhcmFtIG9mIE9iamVjdCB0eXBlJyk7XG4gICAgfVxuXG4gICAgaWYgKCFhcmdzLmhhc093blByb3BlcnR5KCdrZXknKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgZmlyc3QgcGFyYW0gb2YgdGhpcyBGdW5jdGlvbiBtdXN0IGNvbnRhaW4gYSBwcm9wZXJ0eSBuYW1lZCBcImtleVwiJyk7XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBhcmdzLmtleSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndGhlIGZpcnN0IHBhcmFtIG9mIHRoaXMgRnVuY3Rpb24gbXVzdCBjb250YWluIGEgcHJvcGVydHkgbmFtZWQgXCJrZXlcIiBvZiBzdHJpbmcgdHlwZScpO1xuICAgIH1cblxuICAgIHZhciByZXMgPSB7XG4gICAgICBkYXRhOiBKU09OLnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShhcmdzLmtleSkpXG4gICAgfTtcbiAgICBzdWNjZXNzKHJlcyk7XG4gICAgY29tcGxldGUocmVzKTtcbiAgICByZXR1cm4gcmVzO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZmFpbChlKTtcbiAgICBjb21wbGV0ZShlKTtcbiAgfVxufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IGdldFN0b3JhZ2U7IiwiaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxudmFyIGdldFN0b3JhZ2VTeW5jID0gZnVuY3Rpb24gZ2V0U3RvcmFnZVN5bmMoYXJncykge1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3MpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIHRocm93IG5ldyBFcnJvcigndGhlIEZ1bmN0aW9uIG5lZWQgYSBwYXJhbSBvZiBPYmplY3QgdHlwZScpO1xuICB9XG5cbiAgYXJncyA9IHN0eWxlSW4oYXJncywgQ09OVEFJTkVSX05BTUUuV0VCKTtcblxuICBpZiAoIWFyZ3MuaGFzT3duUHJvcGVydHkoJ2tleScpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgZmlyc3QgcGFyYW0gb2YgdGhpcyBGdW5jdGlvbiBtdXN0IGNvbnRhaW4gYSBwcm9wZXJ0eSBuYW1lZCBcImtleVwiJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIGFyZ3Mua2V5ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcigndGhlIGZpcnN0IHBhcmFtIG9mIHRoaXMgRnVuY3Rpb24gbXVzdCBjb250YWluIGEgcHJvcGVydHkgbmFtZWQgXCJrZXlcIiBvZiBzdHJpbmcgdHlwZScpO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBkYXRhOiBKU09OLnBhcnNlKHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShhcmdzLmtleSkpXG4gIH07XG59O1xuXG5leHBvcnQgZGVmYXVsdCBnZXRTdG9yYWdlU3luYzsiLCJpbXBvcnQgZ2V0U3RvcmFnZSBmcm9tIFwiLi9nZXRTdG9yYWdlXCI7XG5pbXBvcnQgZ2V0U3RvcmFnZVN5bmMgZnJvbSBcIi4vZ2V0U3RvcmFnZVN5bmNcIjtcbmltcG9ydCBzZXRTdG9yYWdlIGZyb20gXCIuL3NldFN0b3JhZ2VcIjtcbmltcG9ydCBzZXRTdG9yYWdlU3luYyBmcm9tIFwiLi9zZXRTdG9yYWdlU3luY1wiO1xuaW1wb3J0IHJlbW92ZVN0b3JhZ2UgZnJvbSBcIi4vcmVtb3ZlU3RvcmFnZVwiO1xuaW1wb3J0IHJlbW92ZVN0b3JhZ2VTeW5jIGZyb20gXCIuL3JlbW92ZVN0b3JhZ2VTeW5jXCI7XG5leHBvcnQgeyBnZXRTdG9yYWdlLCBnZXRTdG9yYWdlU3luYywgc2V0U3RvcmFnZSwgc2V0U3RvcmFnZVN5bmMsIHJlbW92ZVN0b3JhZ2UsIHJlbW92ZVN0b3JhZ2VTeW5jIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldFN0b3JhZ2U6IGdldFN0b3JhZ2UsXG4gIGdldFN0b3JhZ2VTeW5jOiBnZXRTdG9yYWdlU3luYyxcbiAgc2V0U3RvcmFnZTogc2V0U3RvcmFnZSxcbiAgc2V0U3RvcmFnZVN5bmM6IHNldFN0b3JhZ2VTeW5jLFxuICByZW1vdmVTdG9yYWdlOiByZW1vdmVTdG9yYWdlLFxuICByZW1vdmVTdG9yYWdlU3luYzogcmVtb3ZlU3RvcmFnZVN5bmNcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgcmVtb3ZlU3RvcmFnZSA9IG5vcm1hbGl6ZS5yZW1vdmVTdG9yYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHZhciBfcmVmID0gYXJncyB8fCB7fSxcbiAgICAgIF9yZWYkc3VjY2VzcyA9IF9yZWYuc3VjY2VzcyxcbiAgICAgIHN1Y2Nlc3MgPSBfcmVmJHN1Y2Nlc3MgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX3JlZiRzdWNjZXNzLFxuICAgICAgX3JlZiRmYWlsID0gX3JlZi5mYWlsLFxuICAgICAgZmFpbCA9IF9yZWYkZmFpbCA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfcmVmJGZhaWwsXG4gICAgICBfcmVmJGNvbXBsZXRlID0gX3JlZi5jb21wbGV0ZSxcbiAgICAgIGNvbXBsZXRlID0gX3JlZiRjb21wbGV0ZSA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfcmVmJGNvbXBsZXRlO1xuXG4gIHRyeSB7XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmdzKSAhPT0gJ1tvYmplY3QgT2JqZWN0XScpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndGhlIEZ1bmN0aW9uIG5lZWQgYSBwYXJhbSBvZiBPYmplY3QgdHlwZScpO1xuICAgIH1cblxuICAgIGlmICghYXJncy5oYXNPd25Qcm9wZXJ0eSgna2V5JykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndGhlIGZpcnN0IHBhcmFtIG9mIHRoaXMgRnVuY3Rpb24gbXVzdCBjb250YWluIGEgcHJvcGVydHkgbmFtZWQgXCJrZXlcIicpO1xuICAgIH1cblxuICAgIGlmICh0eXBlb2YgYXJncy5rZXkgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RoZSBmaXJzdCBwYXJhbSBvZiB0aGlzIEZ1bmN0aW9uIG11c3QgY29udGFpbiBhIHByb3BlcnR5IG5hbWVkIFwia2V5XCIgb2Ygc3RyaW5nIHR5cGUnKTtcbiAgICB9XG5cbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oYXJncy5rZXkpO1xuICAgIHN1Y2Nlc3MoKTtcbiAgICBjb21wbGV0ZSgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZmFpbChlKTtcbiAgICBjb21wbGV0ZShlKTtcbiAgfVxufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IHJlbW92ZVN0b3JhZ2U7IiwiaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxudmFyIHJlbW92ZVN0b3JhZ2VTeW5jID0gZnVuY3Rpb24gcmVtb3ZlU3RvcmFnZVN5bmMoYXJncykge1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3MpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIHRocm93IG5ldyBFcnJvcigndGhlIEZ1bmN0aW9uIG5lZWQgYSBwYXJhbSBvZiBPYmplY3QgdHlwZScpO1xuICB9XG5cbiAgYXJncyA9IHN0eWxlSW4oYXJncywgQ09OVEFJTkVSX05BTUUuV0VCKTtcblxuICBpZiAoIWFyZ3MuaGFzT3duUHJvcGVydHkoJ2tleScpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgZmlyc3QgcGFyYW0gb2YgdGhpcyBGdW5jdGlvbiBtdXN0IGNvbnRhaW4gYSBwcm9wZXJ0eSBuYW1lZCBcImtleVwiJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIGFyZ3Mua2V5ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcigndGhlIGZpcnN0IHBhcmFtIG9mIHRoaXMgRnVuY3Rpb24gbXVzdCBjb250YWluIGEgcHJvcGVydHkgbmFtZWQgXCJrZXlcIiBvZiBzdHJpbmcgdHlwZScpO1xuICB9XG5cbiAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKGFyZ3Mua2V5KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJlbW92ZVN0b3JhZ2VTeW5jOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHNldFN0b3JhZ2UgPSBub3JtYWxpemUuc2V0U3RvcmFnZShmdW5jdGlvbiAoYXJncykge1xuICB2YXIgX3JlZiA9IGFyZ3MgfHwge30sXG4gICAgICBfcmVmJHN1Y2Nlc3MgPSBfcmVmLnN1Y2Nlc3MsXG4gICAgICBzdWNjZXNzID0gX3JlZiRzdWNjZXNzID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9yZWYkc3VjY2VzcyxcbiAgICAgIF9yZWYkZmFpbCA9IF9yZWYuZmFpbCxcbiAgICAgIGZhaWwgPSBfcmVmJGZhaWwgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX3JlZiRmYWlsLFxuICAgICAgX3JlZiRjb21wbGV0ZSA9IF9yZWYuY29tcGxldGUsXG4gICAgICBjb21wbGV0ZSA9IF9yZWYkY29tcGxldGUgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX3JlZiRjb21wbGV0ZTtcblxuICB0cnkge1xuICAgIGlmIChPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJncykgIT09ICdbb2JqZWN0IE9iamVjdF0nKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RoZSBGdW5jdGlvbiBuZWVkIGEgcGFyYW0gb2YgT2JqZWN0IHR5cGUnKTtcbiAgICB9XG5cbiAgICBpZiAoIWFyZ3MuaGFzT3duUHJvcGVydHkoJ2tleScpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ3RoZSBmaXJzdCBwYXJhbSBvZiB0aGlzIEZ1bmN0aW9uIG11c3QgY29udGFpbiBhIHByb3BlcnR5IG5hbWVkIFwia2V5XCInKTtcbiAgICB9XG5cbiAgICBpZiAodHlwZW9mIGFyZ3Mua2V5ICE9PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgZmlyc3QgcGFyYW0gb2YgdGhpcyBGdW5jdGlvbiBtdXN0IGNvbnRhaW4gYSBwcm9wZXJ0eSBuYW1lZCBcImtleVwiIG9mIHN0cmluZyB0eXBlJyk7XG4gICAgfVxuXG4gICAgaWYgKCFhcmdzLmhhc093blByb3BlcnR5KCdkYXRhJykpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcigndGhlIGZpcnN0IHBhcmFtIG9mIHRoaXMgRnVuY3Rpb24gbXVzdCBjb250YWluIGEgcHJvcGVydHkgbmFtZWQgXCJkYXRhXCInKTtcbiAgICB9XG5cbiAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oYXJncy5rZXksIEpTT04uc3RyaW5naWZ5KGFyZ3MuZGF0YSkpO1xuICAgIHN1Y2Nlc3MoKTtcbiAgICBjb21wbGV0ZSgpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgZmFpbChlKTtcbiAgICBjb21wbGV0ZShlKTtcbiAgfVxufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IHNldFN0b3JhZ2U7IiwiaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxudmFyIHNldFN0b3JhZ2VTeW5jID0gZnVuY3Rpb24gc2V0U3RvcmFnZVN5bmMoYXJncykge1xuICBpZiAoT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3MpICE9PSAnW29iamVjdCBPYmplY3RdJykge1xuICAgIHRocm93IG5ldyBFcnJvcigndGhlIEZ1bmN0aW9uIG5lZWQgYSBwYXJhbSBvZiBPYmplY3QgdHlwZScpO1xuICB9XG5cbiAgYXJncyA9IHN0eWxlSW4oYXJncywgQ09OVEFJTkVSX05BTUUuV0VCKTtcblxuICBpZiAoIWFyZ3MuaGFzT3duUHJvcGVydHkoJ2tleScpKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCd0aGUgZmlyc3QgcGFyYW0gb2YgdGhpcyBGdW5jdGlvbiBtdXN0IGNvbnRhaW4gYSBwcm9wZXJ0eSBuYW1lZCBcImtleVwiJyk7XG4gIH1cblxuICBpZiAodHlwZW9mIGFyZ3Mua2V5ICE9PSAnc3RyaW5nJykge1xuICAgIHRocm93IG5ldyBFcnJvcigndGhlIGZpcnN0IHBhcmFtIG9mIHRoaXMgRnVuY3Rpb24gbXVzdCBjb250YWluIGEgcHJvcGVydHkgbmFtZWQgXCJrZXlcIiBvZiBzdHJpbmcgdHlwZScpO1xuICB9XG5cbiAgaWYgKCFhcmdzLmhhc093blByb3BlcnR5KCdkYXRhJykpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3RoZSBmaXJzdCBwYXJhbSBvZiB0aGlzIEZ1bmN0aW9uIG11c3QgY29udGFpbiBhIHByb3BlcnR5IG5hbWVkIFwiZGF0YVwiJyk7XG4gIH1cblxuICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oYXJncy5rZXksIEpTT04uc3RyaW5naWZ5KGFyZ3MuZGF0YSkpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgc2V0U3RvcmFnZVN5bmM7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ2V0U3RvcmFnZSA9IG5vcm1hbGl6ZS5nZXRTdG9yYWdlKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiB3eC5nZXRTdG9yYWdlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IGdldFN0b3JhZ2U7IiwiaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxudmFyIGdldFN0b3JhZ2VTeW5jID0gZnVuY3Rpb24gZ2V0U3RvcmFnZVN5bmMoYXJncykge1xuICBhcmdzID0gc3R5bGVJbihhcmdzLCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuICByZXR1cm4ge1xuICAgIGRhdGE6IHd4LmdldFN0b3JhZ2VTeW5jKGFyZ3Mua2V5KVxuICB9O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZ2V0U3RvcmFnZVN5bmM7IiwiaW1wb3J0IGdldFN0b3JhZ2UgZnJvbSBcIi4vZ2V0U3RvcmFnZVwiO1xuaW1wb3J0IGdldFN0b3JhZ2VTeW5jIGZyb20gXCIuL2dldFN0b3JhZ2VTeW5jXCI7XG5pbXBvcnQgc2V0U3RvcmFnZSBmcm9tIFwiLi9zZXRTdG9yYWdlXCI7XG5pbXBvcnQgc2V0U3RvcmFnZVN5bmMgZnJvbSBcIi4vc2V0U3RvcmFnZVN5bmNcIjtcbmltcG9ydCByZW1vdmVTdG9yYWdlIGZyb20gXCIuL3JlbW92ZVN0b3JhZ2VcIjtcbmltcG9ydCByZW1vdmVTdG9yYWdlU3luYyBmcm9tIFwiLi9yZW1vdmVTdG9yYWdlU3luY1wiO1xuZXhwb3J0IHsgZ2V0U3RvcmFnZSwgZ2V0U3RvcmFnZVN5bmMsIHNldFN0b3JhZ2UsIHNldFN0b3JhZ2VTeW5jLCByZW1vdmVTdG9yYWdlLCByZW1vdmVTdG9yYWdlU3luYyB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRTdG9yYWdlOiBnZXRTdG9yYWdlLFxuICBnZXRTdG9yYWdlU3luYzogZ2V0U3RvcmFnZVN5bmMsXG4gIHNldFN0b3JhZ2U6IHNldFN0b3JhZ2UsXG4gIHNldFN0b3JhZ2VTeW5jOiBzZXRTdG9yYWdlU3luYyxcbiAgcmVtb3ZlU3RvcmFnZTogcmVtb3ZlU3RvcmFnZSxcbiAgcmVtb3ZlU3RvcmFnZVN5bmM6IHJlbW92ZVN0b3JhZ2VTeW5jXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHJlbW92ZVN0b3JhZ2UgPSBub3JtYWxpemUucmVtb3ZlU3RvcmFnZShmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gd3gucmVtb3ZlU3RvcmFnZShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCByZW1vdmVTdG9yYWdlOyIsImltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbnZhciByZW1vdmVTdG9yYWdlU3luYyA9IGZ1bmN0aW9uIHJlbW92ZVN0b3JhZ2VTeW5jKGFyZ3MpIHtcbiAgYXJncyA9IHN0eWxlSW4oYXJncywgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbiAgcmV0dXJuIHd4LnJlbW92ZVN0b3JhZ2VTeW5jKGFyZ3Mua2V5KTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IHJlbW92ZVN0b3JhZ2VTeW5jOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHNldFN0b3JhZ2UgPSBub3JtYWxpemUuc2V0U3RvcmFnZShmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gd3guc2V0U3RvcmFnZShhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCBzZXRTdG9yYWdlOyIsImltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5cbnZhciBzZXRTdG9yYWdlU3luYyA9IGZ1bmN0aW9uIHNldFN0b3JhZ2VTeW5jKGFyZ3MpIHtcbiAgYXJncyA9IHN0eWxlSW4oYXJncywgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbiAgcmV0dXJuIHd4LnNldFN0b3JhZ2VTeW5jKGFyZ3Mua2V5LCBhcmdzLmRhdGEpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgc2V0U3RvcmFnZVN5bmM7IiwiZXhwb3J0IHZhciBDT05UQUlORVJfTkFNRSA9IHtcbiAgV0VDSEFUOiAnd2VjaGF0TWluaVByb2dyYW0nLFxuICBBTElQQVk6ICdhbGlNaW5pQXBwJyxcbiAgQllURTogJ2J5dGVkYW5jZU1pY3JvQXBwJyxcbiAgV0VCOiAnd2ViJyxcbiAgQkFJRFU6ICdiYWlkdVNtYXJ0UHJvZ3JhbScsXG4gIEtXQUk6ICdrdWFpc2hvdU1pbmlQcm9ncmFtJ1xufTsiLCJmdW5jdGlvbiBpc1VuZGVmKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgdmFyIGlzRGluZ2RpbmdNaW5pYXBwID0gIWlzVW5kZWYodHlwZW9mIGRkKSAmJiBkZCAhPT0gbnVsbCAmJiAhaXNVbmRlZih0eXBlb2YgZGQuYWxlcnQpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNpZnkoYXBpKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBwcm9taXNpZnlBcmcgPSBhcmc7XG4gICAgICBhcGkoX2V4dGVuZHMoe30sIHByb21pc2lmeUFyZywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5zdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuc3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiBvblN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuZmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25GYWlsOiBmdW5jdGlvbiBvbkZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uRmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uRmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuY29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uIG9uQ29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH07XG59IiwidmFyIF9leGNsdWRlZCA9IFtcIl9leHRcIl07XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IHZhciBzdHlsZU91dCA9IGZ1bmN0aW9uIHN0eWxlT3V0KG91dHB1dCwgb3JpZ2luYWxJbnB1dCwgb3JpZ2luYWxPdXRwdXQpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRwdXQsIHtcbiAgICBfb3JpZ2luYWw6IHtcbiAgICAgIGlucHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxJbnB1dCksXG4gICAgICAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g5a+55YWl5Y+C6L+b6KGMIGZvcm1hdCDkuYvlkI7nmoTnu5PmnpxcbiAgICAgIG91dHB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsT3V0cHV0KSAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g6L+U5Zue5YC8IGZvcm1hdCDkuYvliY3nmoTnu5PmnpxcblxuICAgIH1cbiAgfSk7XG59O1xuZXhwb3J0IHZhciBzdHlsZUluID0gZnVuY3Rpb24gc3R5bGVJbihvcHRpb25zLCBiYXNlTmFtZSkge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfcmVmJF9leHQgPSBfcmVmLl9leHQsXG4gICAgICBfZXh0ID0gX3JlZiRfZXh0ID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkX2V4dCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgX2V4dFtiYXNlTmFtZV0gfHwge30pO1xufTsiLCJpbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xuaW1wb3J0IHsgZm9ybWF0U3lzdGVtSW5mb0FzeW5jIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ2V0SW5mbyA9IGZvcm1hdFN5c3RlbUluZm9Bc3luYyhmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG5cbiAgdmFyIF9nZXRJbmZvID0gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5nZXRTeXN0ZW1JbmZvIDogbXkuZ2V0U3lzdGVtSW5mbztcblxuICBfZ2V0SW5mbyh7XG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKHJlcyk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IGdldEluZm87IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmltcG9ydCB7IGZvcm1hdFN5c3RlbUluZm8gfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgZ2V0SW5mb1N5bmMgPSBmb3JtYXRTeXN0ZW1JbmZvKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIGlzRGluZ2RpbmdNaW5pYXBwID8gZGQuZ2V0U3lzdGVtSW5mb1N5bmMoKSA6IG15LmdldFN5c3RlbUluZm9TeW5jKCk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IGdldEluZm9TeW5jOyIsImltcG9ydCBnZXRJbmZvIGZyb20gXCIuL2dldEluZm9cIjtcbmltcG9ydCBnZXRJbmZvU3luYyBmcm9tIFwiLi9nZXRJbmZvU3luY1wiO1xuZXhwb3J0IHsgZ2V0SW5mbywgZ2V0SW5mb1N5bmMgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0SW5mbzogZ2V0SW5mbyxcbiAgZ2V0SW5mb1N5bmM6IGdldEluZm9TeW5jXG59OyIsImltcG9ydCB7IGZvcm1hdFN5c3RlbUluZm9Bc3luYyB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGdldEluZm8gPSBmb3JtYXRTeXN0ZW1JbmZvQXN5bmMoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICBzd2FuLmdldFN5c3RlbUluZm8oe1xuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcyhyZXMpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IGdldEluZm87IiwiaW1wb3J0IHsgZm9ybWF0U3lzdGVtSW5mbyB9IGZyb20gXCIuLi9jb21tb25cIjtcbnZhciBnZXRJbmZvU3luYyA9IGZvcm1hdFN5c3RlbUluZm8oZnVuY3Rpb24gKCkge1xuICByZXR1cm4gc3dhbi5nZXRTeXN0ZW1JbmZvU3luYygpO1xufSk7XG5leHBvcnQgZGVmYXVsdCBnZXRJbmZvU3luYzsiLCJpbXBvcnQgZ2V0SW5mbyBmcm9tIFwiLi9nZXRJbmZvXCI7XG5pbXBvcnQgZ2V0SW5mb1N5bmMgZnJvbSBcIi4vZ2V0SW5mb1N5bmNcIjtcbmV4cG9ydCB7IGdldEluZm8sIGdldEluZm9TeW5jIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldEluZm86IGdldEluZm8sXG4gIGdldEluZm9TeW5jOiBnZXRJbmZvU3luY1xufTsiLCJpbXBvcnQgeyBmb3JtYXRTeXN0ZW1JbmZvQXN5bmMgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBnZXRJbmZvID0gZm9ybWF0U3lzdGVtSW5mb0FzeW5jKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgdHQuZ2V0U3lzdGVtSW5mbyh7XG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKHJlcyk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCBnZXRJbmZvOyIsImltcG9ydCB7IGZvcm1hdFN5c3RlbUluZm8gfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgZ2V0SW5mb1N5bmMgPSBmb3JtYXRTeXN0ZW1JbmZvKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHR0LmdldFN5c3RlbUluZm9TeW5jKCk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IGdldEluZm9TeW5jOyIsImltcG9ydCBnZXRJbmZvIGZyb20gXCIuL2dldEluZm9cIjtcbmltcG9ydCBnZXRJbmZvU3luYyBmcm9tIFwiLi9nZXRJbmZvU3luY1wiO1xuZXhwb3J0IHsgZ2V0SW5mbywgZ2V0SW5mb1N5bmMgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0SW5mbzogZ2V0SW5mbyxcbiAgZ2V0SW5mb1N5bmM6IGdldEluZm9TeW5jXG59OyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gXCIuL191dGlscy9wcm9taXNpZnlcIjtcbmltcG9ydCB7IHN0eWxlSW4gfSBmcm9tIFwiLi9fdXRpbHMvc3R5bGVPcHRpb25zXCI7XG5cbnZhciBmb3JtYXRMYW5ndWFnZSA9IGZ1bmN0aW9uIGZvcm1hdExhbmd1YWdlKGxhbmd1YWdlKSB7XG4gIHZhciBmbCA9ICdlbic7XG5cbiAgc3dpdGNoIChsYW5ndWFnZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnemhfY24nOlxuICAgIGNhc2UgJ3poLWhhbnMnOlxuICAgIGNhc2UgJ3poLWNuJzpcbiAgICBjYXNlICdjaGluZXNlJzpcbiAgICAgIGZsID0gJ3poX0NOJztcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnemhfdHcnOlxuICAgIGNhc2UgJ3poLWhhbnQnOlxuICAgIGNhc2UgJ3poLWhrJzpcbiAgICAgIGZsID0gJ3poX1RXJztcbiAgICAgIGJyZWFrO1xuXG4gICAgY2FzZSAnZW4nOlxuICAgIGNhc2UgJ2VuZ2xpc2gnOlxuICAgIGNhc2UgJ2VuLXVzJzpcbiAgICAgIGZsID0gJ2VuJztcbiAgICAgIGJyZWFrO1xuXG4gICAgZGVmYXVsdDpcbiAgICAgIGZsID0gJ2VuJztcbiAgfVxuXG4gIHJldHVybiBmbDtcbn07XG5cbmV4cG9ydCB2YXIgZm9ybWF0U3lzdGVtSW5mbyA9IGZ1bmN0aW9uIGZvcm1hdFN5c3RlbUluZm8oYXBpKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIHJlcyA9IGFwaSgpO1xuICAgIHJldHVybiBmb3JtYXRSZXN1bHQocmVzKTtcbiAgfTtcbn07XG5leHBvcnQgdmFyIGZvcm1hdFJlc3VsdCA9IGZ1bmN0aW9uIGZvcm1hdFJlc3VsdChkYXRhKSB7XG4gIHZhciBkZWZhdWx0RGF0YSA9IHtcbiAgICBwaXhlbFJhdGlvOiAxLFxuICAgIHNjcmVlbldpZHRoOiAwLFxuICAgIHNjcmVlbkhlaWdodDogMCxcbiAgICB3aW5kb3dXaWR0aDogMCxcbiAgICB3aW5kb3dIZWlnaHQ6IDAsXG4gICAgbGFuZ3VhZ2U6ICcnLFxuICAgIHZlcnNpb246ICcnLFxuICAgIHBsYXRmb3JtOiAnJ1xuICB9O1xuICByZXR1cm4gX2V4dGVuZHMoe30sIGRlZmF1bHREYXRhLCBkYXRhLCB7XG4gICAgbGFuZ3VhZ2U6IGRhdGEubGFuZ3VhZ2UgPyBmb3JtYXRMYW5ndWFnZShkYXRhLmxhbmd1YWdlKSA6ICcnXG4gIH0pO1xufTtcbmV4cG9ydCB2YXIgZm9ybWF0U3lzdGVtSW5mb0FzeW5jID0gZnVuY3Rpb24gZm9ybWF0U3lzdGVtSW5mb0FzeW5jKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgICB2YXIgX29wdGlvbnMgPSBzdHlsZUluKG9wdGlvbnMsIGNvbnRhaW5lck5hbWUpO1xuXG4gICAgdmFyIGFmdGVyT3B0aW9ucyA9IF9leHRlbmRzKHt9LCBfb3B0aW9ucywge1xuICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgX29wdGlvbnMuc3VjY2VzcyAmJiBfb3B0aW9ucy5zdWNjZXNzKGZvcm1hdFJlc3VsdChyZXMpKTtcbiAgICAgIH0sXG4gICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgIF9vcHRpb25zLmNvbXBsZXRlICYmIF9vcHRpb25zLmNvbXBsZXRlKHJlcy5waXhlbFJhdGlvID8gZm9ybWF0UmVzdWx0KHJlcykgOiByZXMpO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHByb21pc2lmeShhcGkpKGFmdGVyT3B0aW9ucykudGhlbihmb3JtYXRSZXN1bHQpO1xuICB9O1xufTsiLCJpbXBvcnQgeyBpc01pbmlBcHAsIGlzV2VDaGF0TWluaVByb2dyYW0sIGlzV2ViLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0t1YWlTaG91TWluaVByb2dyYW0sIGlzQmFpZHVTbWFydFByb2dyYW0gfSBmcm9tIFwiQHVuaS9lbnZcIjtcbmltcG9ydCAqIGFzIHdlYk1vZHVsZSBmcm9tIFwiLi93ZWIvaW5kZXhcIjtcbmltcG9ydCAqIGFzIGFsaU1pbmlBcHBNb2R1bGUgZnJvbSBcIi4vYWxpLW1pbmlhcHAvaW5kZXhcIjtcbmltcG9ydCAqIGFzIHdlQ2hhdE1vZHVsZSBmcm9tIFwiLi93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCAqIGFzIGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCAqIGFzIGt1YWlTaG91TW9kdWxlIGZyb20gXCIuL2t1YWlzaG91LW1pbmlwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQgKiBhcyBiYWlEdU1vZHVsZSBmcm9tIFwiLi9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXhcIjtcbmV4cG9ydCB2YXIgZ2V0SW5mb1N5bmMgPSBmdW5jdGlvbiBnZXRJbmZvU3luYygpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5nZXRJbmZvU3luYygpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5nZXRJbmZvU3luYygpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmdldEluZm9TeW5jKCk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuZ2V0SW5mb1N5bmMoKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5nZXRJbmZvU3luYygpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuZ2V0SW5mb1N5bmMoKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpnZXRJbmZvU3luY+aaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBnZXRJbmZvID0gZnVuY3Rpb24gZ2V0SW5mbyhvcHRpb25zKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuZ2V0SW5mbyhvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUuZ2V0SW5mbyhvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5nZXRJbmZvKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmdldEluZm8ob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUuZ2V0SW5mbyhvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLmdldEluZm8ob3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yaZ2V0SW5mb+aaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRJbmZvU3luYzogZ2V0SW5mb1N5bmMsXG4gIGdldEluZm86IGdldEluZm9cbn07IiwiaW1wb3J0IHsgZm9ybWF0U3lzdGVtSW5mb0FzeW5jIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ2V0SW5mbyA9IGZvcm1hdFN5c3RlbUluZm9Bc3luYyhmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIGtzLmdldFN5c3RlbUluZm8oe1xuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcyhyZXMpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgZ2V0SW5mbzsiLCJpbXBvcnQgeyBmb3JtYXRTeXN0ZW1JbmZvIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIGdldEluZm9TeW5jID0gZm9ybWF0U3lzdGVtSW5mbyhmdW5jdGlvbiAoKSB7XG4gIHJldHVybiBrcy5nZXRTeXN0ZW1JbmZvU3luYygpO1xufSk7XG5leHBvcnQgZGVmYXVsdCBnZXRJbmZvU3luYzsiLCJpbXBvcnQgZ2V0SW5mbyBmcm9tIFwiLi9nZXRJbmZvXCI7XG5pbXBvcnQgZ2V0SW5mb1N5bmMgZnJvbSBcIi4vZ2V0SW5mb1N5bmNcIjtcbmV4cG9ydCB7IGdldEluZm8sIGdldEluZm9TeW5jIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGdldEluZm86IGdldEluZm8sXG4gIGdldEluZm9TeW5jOiBnZXRJbmZvU3luY1xufTsiLCJpbXBvcnQgeyBmb3JtYXRTeXN0ZW1JbmZvLCBmb3JtYXRTeXN0ZW1JbmZvQXN5bmMgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcblxuZnVuY3Rpb24gZ2V0UGxhdGZvcm0oKSB7XG4gIHZhciBfbmF2aWdhdG9yID0gbmF2aWdhdG9yLFxuICAgICAgcGxhdGZvcm0gPSBfbmF2aWdhdG9yLnBsYXRmb3JtO1xuXG4gIGlmIChwbGF0Zm9ybSkge1xuICAgIGlmICgvKGlwaG9uZXxpcG9kfGlwYWQpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSkpIHJldHVybiAnaU9TJztcbiAgICBpZiAoL2FuZHJvaWQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKSkgcmV0dXJuICdBbmRyb2lkJztcbiAgICByZXR1cm4gcGxhdGZvcm07XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbnZhciBnZXRJbmZvU3luYyA9IGZvcm1hdFN5c3RlbUluZm8oZnVuY3Rpb24gKCkge1xuICByZXR1cm4ge1xuICAgIHBpeGVsUmF0aW86IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLFxuICAgIHNjcmVlbldpZHRoOiB3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLFxuICAgIHNjcmVlbkhlaWdodDogd2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsXG4gICAgd2luZG93V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgIHdpbmRvd0hlaWdodDogd2luZG93LmlubmVySGVpZ2h0LFxuICAgIGxhbmd1YWdlOiBuYXZpZ2F0b3IubGFuZ3VhZ2UsXG4gICAgdmVyc2lvbjogbmF2aWdhdG9yLmFwcFZlcnNpb24sXG4gICAgcGxhdGZvcm06IGdldFBsYXRmb3JtKCkgfHwgJydcbiAgfTtcbn0pO1xudmFyIGdldEluZm8gPSBmb3JtYXRTeXN0ZW1JbmZvQXN5bmMoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHN1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuXG4gIHRyeSB7XG4gICAgdmFyIHJlcyA9IGdldEluZm9TeW5jKCk7XG4gICAgc3VjY2VzcyAmJiBzdWNjZXNzKHJlcyk7XG4gICAgY29tcGxldGUgJiYgY29tcGxldGUocmVzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGZhaWwgJiYgZmFpbChlKTtcbiAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZShlKTtcbiAgfVxufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IGdldEluZm87IiwiaW1wb3J0IHsgZm9ybWF0U3lzdGVtSW5mbyB9IGZyb20gXCIuLi9jb21tb25cIjtcblxuZnVuY3Rpb24gZ2V0UGxhdGZvcm0oKSB7XG4gIHZhciBfbmF2aWdhdG9yID0gbmF2aWdhdG9yLFxuICAgICAgcGxhdGZvcm0gPSBfbmF2aWdhdG9yLnBsYXRmb3JtO1xuXG4gIGlmIChwbGF0Zm9ybSkge1xuICAgIGlmICgvKGlwaG9uZXxpcG9kfGlwYWQpLy50ZXN0KG5hdmlnYXRvci51c2VyQWdlbnQudG9Mb3dlckNhc2UoKSkpIHJldHVybiAnaU9TJztcbiAgICBpZiAoL2FuZHJvaWQvLnRlc3QobmF2aWdhdG9yLnVzZXJBZ2VudC50b0xvd2VyQ2FzZSgpKSkgcmV0dXJuICdBbmRyb2lkJztcbiAgICByZXR1cm4gcGxhdGZvcm07XG4gIH1cblxuICByZXR1cm4gJyc7XG59XG5cbnZhciBnZXRJbmZvU3luYyA9IGZvcm1hdFN5c3RlbUluZm8oZnVuY3Rpb24gKCkge1xuICByZXR1cm4ge1xuICAgIHBpeGVsUmF0aW86IHdpbmRvdy5kZXZpY2VQaXhlbFJhdGlvLFxuICAgIHNjcmVlbldpZHRoOiB3aW5kb3cuZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoLFxuICAgIHNjcmVlbkhlaWdodDogd2luZG93LmRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5jbGllbnRIZWlnaHQsXG4gICAgd2luZG93V2lkdGg6IHdpbmRvdy5pbm5lcldpZHRoLFxuICAgIHdpbmRvd0hlaWdodDogd2luZG93LmlubmVySGVpZ2h0LFxuICAgIGxhbmd1YWdlOiBuYXZpZ2F0b3IubGFuZ3VhZ2UsXG4gICAgdmVyc2lvbjogbmF2aWdhdG9yLmFwcFZlcnNpb24sXG4gICAgcGxhdGZvcm06IGdldFBsYXRmb3JtKClcbiAgfTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgZ2V0SW5mb1N5bmM7IiwiaW1wb3J0IGdldEluZm8gZnJvbSBcIi4vZ2V0SW5mb1wiO1xuaW1wb3J0IGdldEluZm9TeW5jIGZyb20gXCIuL2dldEluZm9TeW5jXCI7XG5leHBvcnQgeyBnZXRJbmZvLCBnZXRJbmZvU3luYyB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBnZXRJbmZvOiBnZXRJbmZvLFxuICBnZXRJbmZvU3luYzogZ2V0SW5mb1N5bmNcbn07IiwiaW1wb3J0IHsgZm9ybWF0U3lzdGVtSW5mb0FzeW5jIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgZ2V0SW5mbyA9IGZvcm1hdFN5c3RlbUluZm9Bc3luYyhmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgX3N1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBfZmFpbCA9IG9wdGlvbnMuZmFpbCxcbiAgICAgIF9jb21wbGV0ZSA9IG9wdGlvbnMuY29tcGxldGU7XG4gIHd4LmdldFN5c3RlbUluZm8oe1xuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcyhyZXMpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCBnZXRJbmZvOyIsImltcG9ydCB7IGZvcm1hdFN5c3RlbUluZm8gfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgZ2V0SW5mb1N5bmMgPSBmb3JtYXRTeXN0ZW1JbmZvKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIHd4LmdldFN5c3RlbUluZm9TeW5jKCk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IGdldEluZm9TeW5jOyIsImltcG9ydCBnZXRJbmZvIGZyb20gXCIuL2dldEluZm9cIjtcbmltcG9ydCBnZXRJbmZvU3luYyBmcm9tIFwiLi9nZXRJbmZvU3luY1wiO1xuZXhwb3J0IHsgZ2V0SW5mbywgZ2V0SW5mb1N5bmMgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgZ2V0SW5mbzogZ2V0SW5mbyxcbiAgZ2V0SW5mb1N5bmM6IGdldEluZm9TeW5jXG59OyIsImV4cG9ydCB2YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07IiwiZnVuY3Rpb24gaXNVbmRlZih0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSAndW5kZWZpbmVkJztcbn1cblxuZXhwb3J0IHZhciBpc0RpbmdkaW5nTWluaWFwcCA9ICFpc1VuZGVmKHR5cGVvZiBkZCkgJiYgZGQgIT09IG51bGwgJiYgIWlzVW5kZWYodHlwZW9mIGRkLmFsZXJ0KTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzaWZ5KGFwaSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcHJvbWlzaWZ5QXJnID0gYXJnO1xuICAgICAgYXBpKF9leHRlbmRzKHt9LCBwcm9taXNpZnlBcmcsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuc3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gb25TdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5mYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRmFpbDogZnVuY3Rpb24gb25GYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5jb21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbiBvbkNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25Db21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9O1xufSIsInZhciBfZXhjbHVkZWQgPSBbXCJfZXh0XCJdO1xuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCB2YXIgc3R5bGVPdXQgPSBmdW5jdGlvbiBzdHlsZU91dChvdXRwdXQsIG9yaWdpbmFsSW5wdXQsIG9yaWdpbmFsT3V0cHV0KSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0cHV0LCB7XG4gICAgX29yaWdpbmFsOiB7XG4gICAgICBpbnB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsSW5wdXQpLFxuICAgICAgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOWvueWFpeWPgui/m+ihjCBmb3JtYXQg5LmL5ZCO55qE57uT5p6cXG4gICAgICBvdXRwdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbE91dHB1dCkgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOi/lOWbnuWAvCBmb3JtYXQg5LmL5YmN55qE57uT5p6cXG5cbiAgICB9XG4gIH0pO1xufTtcbmV4cG9ydCB2YXIgc3R5bGVJbiA9IGZ1bmN0aW9uIHN0eWxlSW4ob3B0aW9ucywgYmFzZU5hbWUpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgX3JlZiRfZXh0ID0gX3JlZi5fZXh0LFxuICAgICAgX2V4dCA9IF9yZWYkX2V4dCA9PT0gdm9pZCAwID8ge30gOiBfcmVmJF9leHQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcblxuICByZXR1cm4gX2V4dGVuZHMoe30sIHJlc3QsIF9leHRbYmFzZU5hbWVdIHx8IHt9KTtcbn07IiwiaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZUhpZGVUYWJCYXJPcHRpb25zIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgaGlkZVRhYkJhciA9IG5vcm1hbGl6ZUhpZGVUYWJCYXJPcHRpb25zKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLmhpZGVUYWJCYXIoYXJncykgOiBteS5oaWRlVGFiQmFyKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IGhpZGVUYWJCYXI7IiwiaW1wb3J0IGhpZGVUYWJCYXIgZnJvbSBcIi4vaGlkZVRhYkJhclwiO1xuaW1wb3J0IHNob3dUYWJCYXIgZnJvbSBcIi4vc2hvd1RhYkJhclwiO1xuZXhwb3J0IHsgaGlkZVRhYkJhciwgc2hvd1RhYkJhciB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBoaWRlVGFiQmFyOiBoaWRlVGFiQmFyLFxuICBzaG93VGFiQmFyOiBzaG93VGFiQmFyXG59OyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBub3JtYWxpemVTaG93VGFiQmFyT3B0aW9ucyB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHNob3dUYWJCYXIgPSBub3JtYWxpemVTaG93VGFiQmFyT3B0aW9ucyhmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5zaG93VGFiQmFyKGFyZ3MpIDogbXkuc2hvd1RhYkJhcihhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkFMSVBBWSk7XG5leHBvcnQgZGVmYXVsdCBzaG93VGFiQmFyOyIsImltcG9ydCB7IG5vcm1hbGl6ZUhpZGVUYWJCYXJPcHRpb25zIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgaGlkZVRhYkJhciA9IG5vcm1hbGl6ZUhpZGVUYWJCYXJPcHRpb25zKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBzd2FuLmhpZGVUYWJCYXIoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCBoaWRlVGFiQmFyOyIsImltcG9ydCBoaWRlVGFiQmFyIGZyb20gXCIuL2hpZGVUYWJCYXJcIjtcbmltcG9ydCBzaG93VGFiQmFyIGZyb20gXCIuL3Nob3dUYWJCYXJcIjtcbmV4cG9ydCB7IGhpZGVUYWJCYXIsIHNob3dUYWJCYXIgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgaGlkZVRhYkJhcjogaGlkZVRhYkJhcixcbiAgc2hvd1RhYkJhcjogc2hvd1RhYkJhclxufTsiLCJpbXBvcnQgeyBub3JtYWxpemVTaG93VGFiQmFyT3B0aW9ucyB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHNob3dUYWJCYXIgPSBub3JtYWxpemVTaG93VGFiQmFyT3B0aW9ucyhmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gc3dhbi5zaG93VGFiQmFyKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgc2hvd1RhYkJhcjsiLCJpbXBvcnQgeyBub3JtYWxpemVIaWRlVGFiQmFyT3B0aW9ucyB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGhpZGVUYWJCYXIgPSBub3JtYWxpemVIaWRlVGFiQmFyT3B0aW9ucyhmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gdHQuaGlkZVRhYkJhcihhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgaGlkZVRhYkJhcjsiLCJpbXBvcnQgaGlkZVRhYkJhciBmcm9tIFwiLi9oaWRlVGFiQmFyXCI7XG5pbXBvcnQgc2hvd1RhYkJhciBmcm9tIFwiLi9zaG93VGFiQmFyXCI7XG5leHBvcnQgeyBoaWRlVGFiQmFyLCBzaG93VGFiQmFyIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGhpZGVUYWJCYXI6IGhpZGVUYWJCYXIsXG4gIHNob3dUYWJCYXI6IHNob3dUYWJCYXJcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplU2hvd1RhYkJhck9wdGlvbnMgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBzaG93VGFiQmFyID0gbm9ybWFsaXplU2hvd1RhYkJhck9wdGlvbnMoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHR0LnNob3dUYWJCYXIoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CWVRFKTtcbmV4cG9ydCBkZWZhdWx0IHNob3dUYWJCYXI7IiwiaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSBcIi4vX3V0aWxzL3Byb21pc2lmeVwiO1xuaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcbi8qKlxuICogc2hvd1RhYkJhciBhcGlcbiAqIEBwYXJhbSBhcGlcbiAqIEBwYXJhbSBjb250YWluZXJOYW1lXG4gKiBAcmV0dXJuc1xuICovXG5cbmV4cG9ydCBmdW5jdGlvbiBub3JtYWxpemVTaG93VGFiQmFyT3B0aW9ucyhhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4oYXJncywgY29udGFpbmVyTmFtZSkpO1xuICB9O1xufVxuLyoqXG4gKiBoaWRlVGFiQmFyIGFwaVxuICogQHBhcmFtIGFwaVxuICogQHBhcmFtIGNvbnRhaW5lck5hbWVcbiAqIEByZXR1cm5zXG4gKi9cblxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZUhpZGVUYWJCYXJPcHRpb25zKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoc3R5bGVJbihhcmdzLCBjb250YWluZXJOYW1lKSk7XG4gIH07XG59IiwiaW1wb3J0IHsgaXNNaW5pQXBwLCBpc1dlQ2hhdE1pbmlQcm9ncmFtLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0t1YWlTaG91TWluaVByb2dyYW0sIGlzQmFpZHVTbWFydFByb2dyYW0gfSBmcm9tIFwiQHVuaS9lbnZcIjtcbmltcG9ydCBhbGlNaW5pQXBwTW9kdWxlIGZyb20gXCIuL2FsaS1taW5pYXBwL2luZGV4XCI7XG5pbXBvcnQgd2VDaGF0TW9kdWxlIGZyb20gXCIuL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCBrdWFpU2hvdU1vZHVsZSBmcm9tIFwiLi9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJhaUR1TW9kdWxlIGZyb20gXCIuL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleFwiO1xuZXhwb3J0IHZhciBoaWRlVGFiQmFyID0gZnVuY3Rpb24gaGlkZVRhYkJhcihhcmdzKSB7XG4gIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUuaGlkZVRhYkJhcihhcmdzKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5oaWRlVGFiQmFyKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmhpZGVUYWJCYXIoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUuaGlkZVRhYkJhcihhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLmhpZGVUYWJCYXIoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yaaGlkZVRhYkJhcuaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBzaG93VGFiQmFyID0gZnVuY3Rpb24gc2hvd1RhYkJhcihhcmdzKSB7XG4gIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUuc2hvd1RhYkJhcihhcmdzKTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5zaG93VGFiQmFyKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLnNob3dUYWJCYXIoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUuc2hvd1RhYkJhcihhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLnNob3dUYWJCYXIoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yac2hvd1RhYkJhcuaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICBoaWRlVGFiQmFyOiBoaWRlVGFiQmFyLFxuICBzaG93VGFiQmFyOiBzaG93VGFiQmFyXG59OyIsImltcG9ydCB7IG5vcm1hbGl6ZUhpZGVUYWJCYXJPcHRpb25zIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgaGlkZVRhYkJhciA9IG5vcm1hbGl6ZUhpZGVUYWJCYXJPcHRpb25zKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiBrcy5oaWRlVGFiQmFyKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBoaWRlVGFiQmFyOyIsImltcG9ydCBoaWRlVGFiQmFyIGZyb20gXCIuL2hpZGVUYWJCYXJcIjtcbmltcG9ydCBzaG93VGFiQmFyIGZyb20gXCIuL3Nob3dUYWJCYXJcIjtcbmV4cG9ydCB7IGhpZGVUYWJCYXIsIHNob3dUYWJCYXIgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgaGlkZVRhYkJhcjogaGlkZVRhYkJhcixcbiAgc2hvd1RhYkJhcjogc2hvd1RhYkJhclxufTsiLCJpbXBvcnQgeyBub3JtYWxpemVTaG93VGFiQmFyT3B0aW9ucyB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHNob3dUYWJCYXIgPSBub3JtYWxpemVTaG93VGFiQmFyT3B0aW9ucyhmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4ga3Muc2hvd1RhYkJhcihhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLktXQUkpO1xuZXhwb3J0IGRlZmF1bHQgc2hvd1RhYkJhcjsiLCJpbXBvcnQgeyBub3JtYWxpemVIaWRlVGFiQmFyT3B0aW9ucyB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGhpZGVUYWJCYXIgPSBub3JtYWxpemVIaWRlVGFiQmFyT3B0aW9ucyhmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gd3guaGlkZVRhYkJhcihhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCBoaWRlVGFiQmFyOyIsImltcG9ydCBoaWRlVGFiQmFyIGZyb20gXCIuL2hpZGVUYWJCYXJcIjtcbmltcG9ydCBzaG93VGFiQmFyIGZyb20gXCIuL3Nob3dUYWJCYXJcIjtcbmV4cG9ydCB7IGhpZGVUYWJCYXIsIHNob3dUYWJCYXIgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgaGlkZVRhYkJhcjogaGlkZVRhYkJhcixcbiAgc2hvd1RhYkJhcjogc2hvd1RhYkJhclxufTsiLCJpbXBvcnQgeyBub3JtYWxpemVTaG93VGFiQmFyT3B0aW9ucyB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIHNob3dUYWJCYXIgPSBub3JtYWxpemVTaG93VGFiQmFyT3B0aW9ucyhmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gd3guc2hvd1RhYkJhcihhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCBzaG93VGFiQmFyOyIsImZ1bmN0aW9uIGlzVW5kZWYodHlwZSkge1xuICByZXR1cm4gdHlwZSA9PT0gJ3VuZGVmaW5lZCc7XG59XG5cbmV4cG9ydCB2YXIgaXNEaW5nZGluZ01pbmlhcHAgPSAhaXNVbmRlZih0eXBlb2YgZGQpICYmIGRkICE9PSBudWxsICYmICFpc1VuZGVmKHR5cGVvZiBkZC5hbGVydCk7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IGZ1bmN0aW9uIHByb21pc2lmeShhcGkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmcpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgdmFyIHByb21pc2lmeUFyZyA9IGFyZztcbiAgICAgIGFwaShfZXh0ZW5kcyh7fSwgcHJvbWlzaWZ5QXJnLCB7XG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5zdWNjZXNzKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBvblN1Y2Nlc3M6IGZ1bmN0aW9uIG9uU3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25TdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25TdWNjZXNzKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVzb2x2ZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5mYWlsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuZmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBvbkZhaWw6IGZ1bmN0aW9uIG9uRmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25GYWlsID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25GYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuY29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5jb21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfSxcbiAgICAgICAgb25Db21wbGV0ZTogZnVuY3Rpb24gb25Db21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcub25Db21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0pKTtcbiAgICB9KTtcbiAgfTtcbn0iLCJpbXBvcnQgaGlkZSBmcm9tIFwiLi9oaWRlVG9hc3RcIjtcbmV4cG9ydCBkZWZhdWx0IGhpZGU7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL3V0aWxzL2luZGV4XCI7XG5pbXBvcnQgeyBpc0RpbmdkaW5nTWluaWFwcCB9IGZyb20gXCIuLi9fdXRpbHMvbWluaWFwcEVudkFwcFwiO1xudmFyIGhpZGUgPSBub3JtYWxpemUoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIGhpZGVUb2FzdCA9IGlzRGluZ2RpbmdNaW5pYXBwID8gZGQuaGlkZVRvYXN0IDogbXkuaGlkZVRvYXN0O1xuICBoaWRlVG9hc3Qob3B0aW9ucyk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IGhpZGU7IiwiaW1wb3J0IHNob3cgZnJvbSBcIi4vc2hvd1wiO1xuaW1wb3J0IGhpZGUgZnJvbSBcIi4vaGlkZVwiO1xuaW1wb3J0IHNob3dUb2FzdCBmcm9tIFwiLi9zaG93VG9hc3RcIjtcbmltcG9ydCBoaWRlVG9hc3QgZnJvbSBcIi4vaGlkZVRvYXN0XCI7XG5leHBvcnQgeyBzaG93LCBoaWRlLCBzaG93VG9hc3QsIGhpZGVUb2FzdCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzaG93OiBzaG93LFxuICBoaWRlOiBoaWRlLFxuICBzaG93VG9hc3Q6IHNob3dUb2FzdCxcbiAgaGlkZVRvYXN0OiBoaWRlVG9hc3Rcbn07IiwiaW1wb3J0IHNob3cgZnJvbSBcIi4vc2hvd1RvYXN0XCI7XG5leHBvcnQgZGVmYXVsdCBzaG93OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi91dGlscy9pbmRleFwiO1xuaW1wb3J0IHsgaXNEaW5nZGluZ01pbmlhcHAgfSBmcm9tIFwiLi4vX3V0aWxzL21pbmlhcHBFbnZBcHBcIjtcbnZhciBzaG93ID0gbm9ybWFsaXplKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciB0eXBlID0gb3B0aW9ucy50eXBlLFxuICAgICAgY29udGVudCA9IG9wdGlvbnMuY29udGVudCxcbiAgICAgIGR1cmF0aW9uID0gb3B0aW9ucy5kdXJhdGlvbixcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB2YXIgc2hvd1RvYXN0ID0gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5zaG93VG9hc3QgOiBteS5zaG93VG9hc3Q7XG4gIHNob3dUb2FzdCh7XG4gICAgdHlwZTogdHlwZSxcbiAgICBjb250ZW50OiBjb250ZW50LFxuICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IHNob3c7IiwiaW1wb3J0IGhpZGUgZnJvbSBcIi4vaGlkZVRvYXN0XCI7XG5leHBvcnQgZGVmYXVsdCBoaWRlOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi91dGlscy9pbmRleFwiO1xuZXhwb3J0IHZhciBoaWRlID0gbm9ybWFsaXplKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHN3YW4uaGlkZVRvYXN0KG9wdGlvbnMpO1xufSk7XG5leHBvcnQgZGVmYXVsdCBoaWRlOyIsImltcG9ydCBzaG93IGZyb20gXCIuL3Nob3dcIjtcbmltcG9ydCBoaWRlIGZyb20gXCIuL2hpZGVcIjtcbmltcG9ydCBzaG93VG9hc3QgZnJvbSBcIi4vc2hvd1RvYXN0XCI7XG5pbXBvcnQgaGlkZVRvYXN0IGZyb20gXCIuL2hpZGVUb2FzdFwiO1xuZXhwb3J0IHsgc2hvdywgaGlkZSwgc2hvd1RvYXN0LCBoaWRlVG9hc3QgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2hvdzogc2hvdyxcbiAgaGlkZTogaGlkZSxcbiAgc2hvd1RvYXN0OiBzaG93VG9hc3QsXG4gIGhpZGVUb2FzdDogaGlkZVRvYXN0XG59OyIsImltcG9ydCBzaG93IGZyb20gXCIuL3Nob3dUb2FzdFwiO1xuZXhwb3J0IGRlZmF1bHQgc2hvdzsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vdXRpbHMvaW5kZXhcIjtcbmV4cG9ydCB2YXIgc2hvdyA9IG5vcm1hbGl6ZShmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgdHlwZSA9IG9wdGlvbnMudHlwZSxcbiAgICAgIGNvbnRlbnQgPSBvcHRpb25zLmNvbnRlbnQsXG4gICAgICBkdXJhdGlvbiA9IG9wdGlvbnMuZHVyYXRpb24sXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgdmFyIGljb25NYXAgPSB7XG4gICAgc3VjY2VzczogJ3N1Y2Nlc3MnLFxuICAgIGxvYWRpbmc6ICdsb2FkaW5nJyxcbiAgICBub25lOiAnbm9uZSdcbiAgfTtcblxuICBpZiAodHlwZSA9PT0gJ2ZhaWwnKSB7XG4gICAgc3dhbi5zaG93VG9hc3Qoe1xuICAgICAgaW1hZ2U6ICdodHRwczovL2d3LmFsaWNkbi5jb20vaW1nZXh0cmEvaTIvTzFDTjAxWHp4bEtrMUdMOEl5WG9xRWFfISE2MDAwMDAwMDAwNjA1LTItdHBzLTIwMC0yMDAucG5nJyxcbiAgICAgIHRpdGxlOiBjb250ZW50LFxuICAgICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICAgIH0sXG4gICAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgICAgfSxcbiAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIHN3YW4uc2hvd1RvYXN0KHtcbiAgICAgIGljb246IGljb25NYXBbdHlwZV0gfHwgJ25vbmUnLFxuICAgICAgdGl0bGU6IGNvbnRlbnQsXG4gICAgICBkdXJhdGlvbjogZHVyYXRpb24sXG4gICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgICAgfSxcbiAgICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgICB9LFxuICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cbn0pO1xuZXhwb3J0IGRlZmF1bHQgc2hvdzsiLCJpbXBvcnQgaGlkZSBmcm9tIFwiLi9oaWRlVG9hc3RcIjtcbmV4cG9ydCBkZWZhdWx0IGhpZGU7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL3V0aWxzL2luZGV4XCI7XG5leHBvcnQgdmFyIGhpZGUgPSBub3JtYWxpemUoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdHQuaGlkZVRvYXN0KG9wdGlvbnMpO1xufSk7XG5leHBvcnQgZGVmYXVsdCBoaWRlOyIsImltcG9ydCBzaG93IGZyb20gXCIuL3Nob3dcIjtcbmltcG9ydCBoaWRlIGZyb20gXCIuL2hpZGVcIjtcbmltcG9ydCBzaG93VG9hc3QgZnJvbSBcIi4vc2hvd1RvYXN0XCI7XG5pbXBvcnQgaGlkZVRvYXN0IGZyb20gXCIuL2hpZGVUb2FzdFwiO1xuZXhwb3J0IHsgc2hvdywgaGlkZSwgc2hvd1RvYXN0LCBoaWRlVG9hc3QgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2hvdzogc2hvdyxcbiAgaGlkZTogaGlkZSxcbiAgc2hvd1RvYXN0OiBzaG93VG9hc3QsXG4gIGhpZGVUb2FzdDogaGlkZVRvYXN0XG59OyIsImltcG9ydCBzaG93IGZyb20gXCIuL3Nob3dUb2FzdFwiO1xuZXhwb3J0IGRlZmF1bHQgc2hvdzsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vdXRpbHMvaW5kZXhcIjtcbmV4cG9ydCB2YXIgc2hvdyA9IG5vcm1hbGl6ZShmdW5jdGlvbiAob3B0aW9ucykge1xuICB2YXIgdHlwZSA9IG9wdGlvbnMudHlwZSxcbiAgICAgIGNvbnRlbnQgPSBvcHRpb25zLmNvbnRlbnQsXG4gICAgICBkdXJhdGlvbiA9IG9wdGlvbnMuZHVyYXRpb24sXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgdmFyIGljb25NYXAgPSB7XG4gICAgc3VjY2VzczogJ3N1Y2Nlc3MnLFxuICAgIGZhaWw6ICdmYWlsJyxcbiAgICBub25lOiAnbm9uZScsXG4gICAgbG9hZGluZzogJ2xvYWRpbmcnXG4gIH07XG4gIHR0LnNob3dUb2FzdCh7XG4gICAgaWNvbjogaWNvbk1hcFt0eXBlXSB8fCAnbm9uZScsXG4gICAgdGl0bGU6IGNvbnRlbnQsXG4gICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MoKSB7XG4gICAgICBfc3VjY2VzcyAmJiBfc3VjY2VzcygpO1xuICAgIH0sXG4gICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgIF9mYWlsICYmIF9mYWlsKHJlcyk7XG4gICAgfSxcbiAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICBfY29tcGxldGUgJiYgX2NvbXBsZXRlKHJlcyk7XG4gICAgfVxuICB9KTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgc2hvdzsiLCJpbXBvcnQgeyBpc01pbmlBcHAsIGlzV2VDaGF0TWluaVByb2dyYW0sIGlzV2ViLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0t1YWlTaG91TWluaVByb2dyYW0sIGlzQmFpZHVTbWFydFByb2dyYW0gfSBmcm9tIFwiQHVuaS9lbnZcIjtcbmltcG9ydCBhbGlNaW5pQXBwTW9kdWxlIGZyb20gXCIuL2FsaS1taW5pYXBwL2luZGV4XCI7XG5pbXBvcnQgd2VDaGF0TW9kdWxlIGZyb20gXCIuL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCB3ZWJNb2R1bGUgZnJvbSBcIi4vd2ViL2luZGV4XCI7XG5pbXBvcnQga3VhaVNob3VNb2R1bGUgZnJvbSBcIi4va3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBiYWlEdU1vZHVsZSBmcm9tIFwiLi9iYWlkdS1zbWFydHByb2dyYW0vaW5kZXhcIjtcbmV4cG9ydCB2YXIgc2hvdyA9IGZ1bmN0aW9uIHNob3cob3B0aW9ucykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLnNob3cob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLnNob3cob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuc2hvdyhvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5zaG93KG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLnNob3cob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5zaG93KG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mlRvYXN05pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGhpZGUgPSBmdW5jdGlvbiBoaWRlKG9wdGlvbnMpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5oaWRlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5oaWRlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmhpZGUob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUuaGlkZShvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5oaWRlKG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuaGlkZShvcHRpb25zKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJpUb2FzdOaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBzaG93VG9hc3QgPSBmdW5jdGlvbiBzaG93VG9hc3Qob3B0aW9ucykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLnNob3dUb2FzdChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUuc2hvd1RvYXN0KG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLnNob3dUb2FzdChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc0J5dGVEYW5jZU1pY3JvQXBwKSB7XG4gICAgcmV0dXJuIGJ5dGVkYW5jZU1vZHVsZS5zaG93VG9hc3Qob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUuc2hvd1RvYXN0KG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuc2hvd1RvYXN0KG9wdGlvbnMpO1xuICB9IGVsc2Uge1xuICAgIHRocm93IG5ldyBFcnJvcignVW5pIEFQSe+8mlRvYXN05pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgdmFyIGhpZGVUb2FzdCA9IGZ1bmN0aW9uIGhpZGVUb2FzdChvcHRpb25zKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuaGlkZVRvYXN0KG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiBrdWFpU2hvdU1vZHVsZS5oaWRlVG9hc3Qob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUuaGlkZVRvYXN0KG9wdGlvbnMpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmhpZGVUb2FzdChvcHRpb25zKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS5oaWRlVG9hc3Qob3B0aW9ucyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS5oaWRlVG9hc3Qob3B0aW9ucyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yaVG9hc3TmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2hvdzogc2hvdyxcbiAgaGlkZTogaGlkZSxcbiAgc2hvd1RvYXN0OiBzaG93VG9hc3QsXG4gIGhpZGVUb2FzdDogaGlkZVRvYXN0XG59OyIsImltcG9ydCBoaWRlIGZyb20gXCIuL2hpZGVUb2FzdFwiO1xuZXhwb3J0IGRlZmF1bHQgaGlkZTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vdXRpbHMvaW5kZXhcIjtcbmV4cG9ydCB2YXIgaGlkZSA9IG5vcm1hbGl6ZShmdW5jdGlvbiAob3B0aW9ucykge1xuICBrcy5oaWRlVG9hc3Qob3B0aW9ucyk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IGhpZGU7IiwiaW1wb3J0IHNob3cgZnJvbSBcIi4vc2hvd1wiO1xuaW1wb3J0IGhpZGUgZnJvbSBcIi4vaGlkZVwiO1xuaW1wb3J0IHNob3dUb2FzdCBmcm9tIFwiLi9zaG93VG9hc3RcIjtcbmltcG9ydCBoaWRlVG9hc3QgZnJvbSBcIi4vaGlkZVRvYXN0XCI7XG5leHBvcnQgeyBzaG93LCBoaWRlLCBzaG93VG9hc3QsIGhpZGVUb2FzdCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzaG93OiBzaG93LFxuICBoaWRlOiBoaWRlLFxuICBzaG93VG9hc3Q6IHNob3dUb2FzdCxcbiAgaGlkZVRvYXN0OiBoaWRlVG9hc3Rcbn07IiwiaW1wb3J0IHNob3cgZnJvbSBcIi4vc2hvd1RvYXN0XCI7XG5leHBvcnQgZGVmYXVsdCBzaG93OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi91dGlscy9pbmRleFwiO1xuZXhwb3J0IHZhciBzaG93ID0gbm9ybWFsaXplKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciB0eXBlID0gb3B0aW9ucy50eXBlLFxuICAgICAgY29udGVudCA9IG9wdGlvbnMuY29udGVudCxcbiAgICAgIGR1cmF0aW9uID0gb3B0aW9ucy5kdXJhdGlvbixcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB2YXIgaWNvbk1hcCA9IHtcbiAgICBzdWNjZXNzOiAnc3VjY2VzcycsXG4gICAgbG9hZGluZzogJ2xvYWRpbmcnLFxuICAgIG5vbmU6ICdub25lJ1xuICB9OyAvLyDlv6vmiYtpbWFnZSDkuI3otbfkvZznlKjjgILjgIJcblxuICBrcy5zaG93VG9hc3Qoe1xuICAgIGljb246IGljb25NYXBbdHlwZV0gfHwgJ25vbmUnLFxuICAgIHRpdGxlOiBjb250ZW50LFxuICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcbiAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKCkge1xuICAgICAgX3N1Y2Nlc3MgJiYgX3N1Y2Nlc3MoKTtcbiAgICB9LFxuICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICBfZmFpbCAmJiBfZmFpbChyZXMpO1xuICAgIH0sXG4gICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgX2NvbXBsZXRlICYmIF9jb21wbGV0ZShyZXMpO1xuICAgIH1cbiAgfSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IHNob3c7IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSBcIi4uL191dGlscy9wcm9taXNpZnlcIjtcbmV4cG9ydCB2YXIgTE9OR19ERUxBWSA9IDM1MDA7IC8vIDMuNSBzZWNvbmRzXG5cbmV4cG9ydCB2YXIgU0hPUlRfREVMQVkgPSAyMDAwOyAvLyAyIHNlY29uZHNcblxuZXhwb3J0IGZ1bmN0aW9uIHN0eWxlT3B0aW9ucyhvcHRpb25zKSB7XG4gIHZhciBERUZBVUxUX1JFUVVFU1RfT1BUSU9OUyA9IHtcbiAgICBjb250ZW50OiAnJyxcbiAgICB0eXBlOiAnbm9uZScsXG4gICAgZHVyYXRpb246IFNIT1JUX0RFTEFZXG4gIH07XG5cbiAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgREVGQVVMVF9SRVFVRVNUX09QVElPTlMsIHtcbiAgICAgIGNvbnRlbnQ6IG9wdGlvbnNcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gX2V4dGVuZHMoe30sIERFRkFVTFRfUkVRVUVTVF9PUFRJT05TLCBvcHRpb25zKTtcbiAgfVxufVxuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShhcGkpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gICAgdmFyIGFmdGVyT3B0aW9ucyA9IHN0eWxlT3B0aW9ucyhvcHRpb25zKTtcbiAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoYWZ0ZXJPcHRpb25zKTtcbiAgfTtcbn0iLCJpbXBvcnQgaGlkZSBmcm9tIFwiLi9oaWRlVG9hc3RcIjtcbmV4cG9ydCBkZWZhdWx0IGhpZGU7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL3V0aWxzL2luZGV4XCI7XG5leHBvcnQgdmFyIGhpZGUgPSBub3JtYWxpemUoZnVuY3Rpb24gKG9wdGlvbnMpIHtcbiAgdmFyIHN1Y2Nlc3MgPSBvcHRpb25zLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlOyAvLyByZW1vdmUgYWxsIHF1ZXVlZCBtZXNzYWdlc1xuXG4gIHRyeSB7XG4gICAgaWYgKCF3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMpIHtcbiAgICAgIHN1Y2Nlc3MgJiYgc3VjY2VzcygpO1xuICAgICAgY29tcGxldGUgJiYgY29tcGxldGUoKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMucXVldWUgPSBbXTtcblxuICAgIHdpbmRvdy5fdW5pX3RvYXN0X2lubmVyX3RvYXN0LnN3aXRjaFRvTmV4dCgpO1xuXG4gICAgc3VjY2VzcyAmJiBzdWNjZXNzKCk7XG4gICAgY29tcGxldGUgJiYgY29tcGxldGUoKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGZhaWwgJiYgZmFpbChlKTtcbiAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZShlKTtcbiAgfVxufSk7XG5leHBvcnQgZGVmYXVsdCBoaWRlOyIsImltcG9ydCBzaG93IGZyb20gXCIuL3Nob3dcIjtcbmltcG9ydCBoaWRlIGZyb20gXCIuL2hpZGVcIjtcbmltcG9ydCBzaG93VG9hc3QgZnJvbSBcIi4vc2hvd1RvYXN0XCI7XG5pbXBvcnQgaGlkZVRvYXN0IGZyb20gXCIuL2hpZGVUb2FzdFwiO1xuZXhwb3J0IHsgc2hvdywgaGlkZSwgc2hvd1RvYXN0LCBoaWRlVG9hc3QgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgc2hvdzogc2hvdyxcbiAgaGlkZTogaGlkZSxcbiAgc2hvd1RvYXN0OiBzaG93VG9hc3QsXG4gIGhpZGVUb2FzdDogaGlkZVRvYXN0XG59OyIsImltcG9ydCBzaG93IGZyb20gXCIuL3Nob3dUb2FzdFwiO1xuZXhwb3J0IGRlZmF1bHQgc2hvdzsiLCIvKiBlc2xpbnQtZGlzYWJsZSBndWFyZC1mb3ItaW4gKi9cbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi91dGlscy9pbmRleFwiO1xudmFyIHN0eWxlcyA9IHtcbiAgY29udGFpbmVyOiB7XG4gICAgYmFja2dyb3VuZENvbG9yOiAncmdiYSgwLCAwLCAwLCAwLjYpJyxcbiAgICBib3hTaXppbmc6ICdib3JkZXItYm94JyxcbiAgICBtYXhXaWR0aDogJzgwJScsXG4gICAgY29sb3I6ICcjZmZmZmZmJyxcbiAgICBwYWRkaW5nOiAnOHB4IDE2cHgnLFxuICAgIHBvc2l0aW9uOiAnZml4ZWQnLFxuICAgIGRpc3BsYXk6ICdmbGV4JyxcbiAgICBmbGV4RGlyZWN0aW9uOiAnY29sdW1uJyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcicsXG4gICAgbGVmdDogJzUwJScsXG4gICAgYm90dG9tOiAnNTAlJyxcbiAgICBmb250U2l6ZTogJzE2cHgnLFxuICAgIGxpbmVIZWlnaHQ6ICczMnB4JyxcbiAgICBmb250V2VpZ2h0OiAnNjAwJyxcbiAgICBib3JkZXJSYWRpdXM6ICc0cHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgdHJhbnNpdGlvbjogJ2FsbCAwLjRzIGVhc2UtaW4tb3V0JyxcbiAgICB3ZWJraXRUcmFuc2l0aW9uOiAnYWxsIDAuNHMgZWFzZS1pbi1vdXQnLFxuICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTUwJSknLFxuICAgIHdlYmtpdFRyYW5zZm9ybTogJ3RyYW5zbGF0ZVgoLTUwJSknLFxuICAgIHpJbmRleDogOTk5OVxuICB9LFxuICBpY29uOiB7XG4gICAgbWFyZ2luQm90dG9tOiAnNXB4JyxcbiAgICB3aWR0aDogJzQ1cHgnLFxuICAgIGhlaWdodDogJzQ1cHgnXG4gIH1cbn07XG5cbmZ1bmN0aW9uIHNob3dUb2FzdFdpbmRvdyhtZXNzYWdlLCBpY29uVXJsKSB7XG4gIGlmICghd2luZG93Ll91bmlfdG9hc3Rfc3RhdHVzLnRvYXN0V2luKSB7XG4gICAgd2luZG93Ll91bmlfdG9hc3Rfc3RhdHVzLnRvYXN0SWNvbiA9IG51bGw7XG4gICAgd2luZG93Ll91bmlfdG9hc3Rfc3RhdHVzLnRvYXN0V2luID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7XG5cbiAgICB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RXaW4uc2V0QXR0cmlidXRlKCdyb2xlJywgJ2FsZXJ0Jyk7IC8vIHN1cHBvcnQgZm9yIEFSSUEsIGFkZCB0YWJpbmRleCBmb3IgZm9jdXNcbiAgICAvLyBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy96aC1DTi9kb2NzL1dlYi9IVE1ML0dsb2JhbF9hdHRyaWJ1dGVzL3RhYmluZGV4XG5cblxuICAgIHdpbmRvdy5fdW5pX3RvYXN0X3N0YXR1cy50b2FzdFdpbi5zZXRBdHRyaWJ1dGUoJ3RhYmluZGV4JywgJy0xJyk7XG5cbiAgICBmb3IgKHZhciBrZXkgaW4gc3R5bGVzLmNvbnRhaW5lcikge1xuICAgICAgd2luZG93Ll91bmlfdG9hc3Rfc3RhdHVzLnRvYXN0V2luLnN0eWxlW2tleV0gPSBzdHlsZXMuY29udGFpbmVyW2tleV07XG4gICAgfVxuXG4gICAgd2luZG93Ll91bmlfdG9hc3Rfc3RhdHVzLnRvYXN0Q29udGVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2RpdicpO1xuXG4gICAgd2luZG93Ll91bmlfdG9hc3Rfc3RhdHVzLnRvYXN0V2luLmFwcGVuZENoaWxkKHdpbmRvdy5fdW5pX3RvYXN0X3N0YXR1cy50b2FzdENvbnRlbnQpO1xuXG4gICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZCh3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RXaW4pO1xuICB9IC8vIOWIm+W7umljb25cblxuXG4gIGlmICh3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RJY29uICYmICFpY29uVXJsKSB7XG4gICAgd2luZG93Ll91bmlfdG9hc3Rfc3RhdHVzLnRvYXN0V2luLnJlbW92ZUNoaWxkKHdpbmRvdy5fdW5pX3RvYXN0X3N0YXR1cy50b2FzdEljb24pO1xuXG4gICAgd2luZG93Ll91bmlfdG9hc3Rfc3RhdHVzLnRvYXN0SWNvbiA9IG51bGw7XG4gIH0gZWxzZSBpZiAod2luZG93Ll91bmlfdG9hc3Rfc3RhdHVzLnRvYXN0SWNvbiAmJiBpY29uVXJsKSB7XG4gICAgd2luZG93Ll91bmlfdG9hc3Rfc3RhdHVzLnRvYXN0SWNvbi5zZXRBdHRyaWJ1dGUoJ3NyYycsIGljb25VcmwpO1xuICB9IGVsc2UgaWYgKCF3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RJY29uICYmIGljb25VcmwpIHtcbiAgICB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RJY29uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnaW1nJyk7XG5cbiAgICB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RJY29uLnNldEF0dHJpYnV0ZSgnc3JjJywgaWNvblVybCk7XG5cbiAgICBmb3IgKHZhciBfa2V5IGluIHN0eWxlcy5pY29uKSB7XG4gICAgICB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RJY29uLnN0eWxlW19rZXldID0gc3R5bGVzLmljb25bX2tleV07XG4gICAgfVxuXG4gICAgd2luZG93Ll91bmlfdG9hc3Rfc3RhdHVzLnRvYXN0V2luLmluc2VydEJlZm9yZSh3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RJY29uLCB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RDb250ZW50KTtcbiAgfVxuXG4gIHdpbmRvdy5fdW5pX3RvYXN0X3N0YXR1cy50b2FzdENvbnRlbnQudGV4dENvbnRlbnQgPSBtZXNzYWdlO1xuICB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RXaW4uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoLTUwJSknO1xuICB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RXaW4uc3R5bGUud2Via2l0VHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoLTUwJSknO1xufVxuXG5mdW5jdGlvbiBoaWRlVG9hc3RXaW5kb3coKSB7XG4gIHNldFRpbWVvdXQoZnVuY3Rpb24gKCkge1xuICAgIGlmICh3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RXaW4gJiYgd2luZG93Ll91bmlfdG9hc3Rfc3RhdHVzLnRvYXN0V2luLnN0eWxlKSB7XG4gICAgICB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RXaW4uc3R5bGUudHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMC44KSc7XG4gICAgICB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RXaW4uc3R5bGUud2Via2l0VHJhbnNmb3JtID0gJ3RyYW5zbGF0ZVgoLTUwJSkgc2NhbGUoMC44KSc7XG4gICAgfVxuICB9LCAwKTtcbn1cblxudmFyIGlubmVyVG9hc3QgPSB7XG4gIGhpZGVUaW1lcjogbnVsbCxcbiAgc2hvdzogZnVuY3Rpb24gc2hvdygpIHtcbiAgICAvLyBBbGwgbWVzc2FnZXMgaGFkIGJlZW4gdG9hc3RlZCBhbHJlYWR5LCBzbyByZW1vdmUgdGhlIHRvYXN0IHdpbmRvdyxcbiAgICBpZiAoIXdpbmRvdy5fdW5pX3RvYXN0X3N0YXR1cy5xdWV1ZS5sZW5ndGgpIHtcbiAgICAgIGlmICh3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMudG9hc3RXaW4pIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHdpbmRvdy5fdW5pX3RvYXN0X3N0YXR1cy50b2FzdFdpbi5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHdpbmRvdy5fdW5pX3RvYXN0X3N0YXR1cy50b2FzdFdpbik7XG4gICAgICB9XG5cbiAgICAgIHdpbmRvdy5fdW5pX3RvYXN0X3N0YXR1cy50b2FzdFdpbiA9IG51bGw7XG4gICAgICByZXR1cm47XG4gICAgfSAvLyB0aGUgcHJldmlvdXMgdG9hc3QgaXMgbm90IGVuZGVkIHlldC5cblxuXG4gICAgaWYgKHdpbmRvdy5fdW5pX3RvYXN0X3N0YXR1cy5pc1Byb2Nlc3NpbmcpIHJldHVybjtcbiAgICB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMuaXNQcm9jZXNzaW5nID0gdHJ1ZTtcblxuICAgIHZhciB0b2FzdEluZm8gPSB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMucXVldWUuc2hpZnQoKTtcblxuICAgIHRyeSB7XG4gICAgICBzaG93VG9hc3RXaW5kb3codG9hc3RJbmZvLmNvbnRlbnQsIHRvYXN0SW5mby5pY29uKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICB0b2FzdEluZm8uZmFpbCAmJiB0b2FzdEluZm8uZmFpbChlKTtcbiAgICAgIHRvYXN0SW5mby5jb21wbGV0ZSAmJiB0b2FzdEluZm8uY29tcGxldGUoZSk7XG4gICAgfVxuXG4gICAgaW5uZXJUb2FzdC5oaWRlVGltZXIgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgIHRvYXN0SW5mby5zdWNjZXNzICYmIHRvYXN0SW5mby5zdWNjZXNzKCk7XG4gICAgICB0b2FzdEluZm8uY29tcGxldGUgJiYgdG9hc3RJbmZvLmNvbXBsZXRlKCk7XG4gICAgICBpbm5lclRvYXN0LnN3aXRjaFRvTmV4dCgpO1xuICAgIH0sIHRvYXN0SW5mby5kdXJhdGlvbik7XG4gIH0sXG4gIHB1c2g6IGZ1bmN0aW9uIHB1c2gob3B0aW9ucykge1xuICAgIHdpbmRvdy5fdW5pX3RvYXN0X3N0YXR1cy5xdWV1ZS5wdXNoKG9wdGlvbnMpO1xuXG4gICAgaW5uZXJUb2FzdC5zaG93KCk7XG4gIH0sXG4gIC8vIFN3aXRjaCB0byBuZXh0IG1lc3NhZ2VcbiAgLy8gVGhpcyBmdW5jdGlvbiB3aWxsIGhpZGUgY3VycmVudCwgYW5kIGNhbGwgYHNob3coKWAgdG8gZGlzcGxheSBuZXh0XG4gIC8vIElmIHF1ZXVlIGlzIGVtcHR5LCBET00gd2lsbCBiZSBjbGVhciBpbiBgc2hvdygpYFxuICBzd2l0Y2hUb05leHQ6IGZ1bmN0aW9uIHN3aXRjaFRvTmV4dCgpIHtcbiAgICBoaWRlVG9hc3RXaW5kb3coKTtcbiAgICB3aW5kb3cuX3VuaV90b2FzdF9zdGF0dXMuaXNQcm9jZXNzaW5nID0gZmFsc2U7XG4gICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gaW5uZXJUb2FzdC5zaG93KCk7XG4gICAgfSwgNTAwKTtcblxuICAgIGlmIChpbm5lclRvYXN0LmhpZGVUaW1lcikge1xuICAgICAgY2xlYXJUaW1lb3V0KGlubmVyVG9hc3QuaGlkZVRpbWVyKTtcbiAgICAgIGlubmVyVG9hc3QuaGlkZVRpbWVyID0gbnVsbDtcbiAgICB9XG4gIH1cbn07XG52YXIgc2hvdyA9IG5vcm1hbGl6ZShmdW5jdGlvbiAob3B0aW9ucykge1xuICB3aW5kb3cuX3VuaV90b2FzdF9pbm5lcl90b2FzdCA9IGlubmVyVG9hc3Q7XG4gIHdpbmRvdy5fdW5pX3RvYXN0X3N0YXR1cyA9IHdpbmRvdy5fdW5pX3RvYXN0X3N0YXR1cyB8fCB7XG4gICAgcXVldWU6IFtdLFxuICAgIGlzUHJvY2Vzc2luZzogZmFsc2UsXG4gICAgdG9hc3RXaW46ICcnLFxuICAgIHRvYXN0Q29udGVudDogJycsXG4gICAgdG9hc3RJY29uOiAnJ1xuICB9O1xuICB2YXIgdHlwZSA9IG9wdGlvbnMudHlwZSxcbiAgICAgIGNvbnRlbnQgPSBvcHRpb25zLmNvbnRlbnQsXG4gICAgICBkdXJhdGlvbiA9IG9wdGlvbnMuZHVyYXRpb24sXG4gICAgICBfc3VjY2VzcyA9IG9wdGlvbnMuc3VjY2VzcyxcbiAgICAgIF9mYWlsID0gb3B0aW9ucy5mYWlsLFxuICAgICAgX2NvbXBsZXRlID0gb3B0aW9ucy5jb21wbGV0ZTtcbiAgdmFyIGljb25NYXAgPSB7XG4gICAgc3VjY2VzczogJ2h0dHBzOi8vZ3cuYWxpY2RuLmNvbS9pbWdleHRyYS9pMS9PMUNOMDFoNjg0c0UxVGQ0bXdZeUNoS18hITYwMDAwMDAwMDI0MDQtMi10cHMtMjAwLTIwMC5wbmcnLFxuICAgIGZhaWw6ICdodHRwczovL2d3LmFsaWNkbi5jb20vaW1nZXh0cmEvaTEvTzFDTjAxeU95d3VzMWV0NE9SSnphZmtfISE2MDAwMDAwMDAzOTI4LTItdHBzLTIwMC0yMDAucG5nJyxcbiAgICBub25lOiAnJ1xuICB9O1xuICBpbm5lclRvYXN0LnB1c2goe1xuICAgIGNvbnRlbnQ6IGNvbnRlbnQsXG4gICAgZHVyYXRpb246IGR1cmF0aW9uLFxuICAgIGljb246IGljb25NYXBbdHlwZV0gfHwgJycsXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSk7XG5leHBvcnQgZGVmYXVsdCBzaG93OyIsImltcG9ydCBoaWRlIGZyb20gXCIuL2hpZGVUb2FzdFwiO1xuZXhwb3J0IGRlZmF1bHQgaGlkZTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vdXRpbHMvaW5kZXhcIjtcbmV4cG9ydCB2YXIgaGlkZSA9IG5vcm1hbGl6ZShmdW5jdGlvbiAob3B0aW9ucykge1xuICB3eC5oaWRlVG9hc3Qob3B0aW9ucyk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IGhpZGU7IiwiaW1wb3J0IHNob3cgZnJvbSBcIi4vc2hvd1wiO1xuaW1wb3J0IGhpZGUgZnJvbSBcIi4vaGlkZVwiO1xuaW1wb3J0IHNob3dUb2FzdCBmcm9tIFwiLi9zaG93VG9hc3RcIjtcbmltcG9ydCBoaWRlVG9hc3QgZnJvbSBcIi4vaGlkZVRvYXN0XCI7XG5leHBvcnQgeyBzaG93LCBoaWRlLCBzaG93VG9hc3QsIGhpZGVUb2FzdCB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBzaG93OiBzaG93LFxuICBoaWRlOiBoaWRlLFxuICBzaG93VG9hc3Q6IHNob3dUb2FzdCxcbiAgaGlkZVRvYXN0OiBoaWRlVG9hc3Rcbn07IiwiaW1wb3J0IHNob3cgZnJvbSBcIi4vc2hvd1RvYXN0XCI7XG5leHBvcnQgZGVmYXVsdCBzaG93OyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi91dGlscy9pbmRleFwiO1xuZXhwb3J0IHZhciBzaG93ID0gbm9ybWFsaXplKGZ1bmN0aW9uIChvcHRpb25zKSB7XG4gIHZhciB0eXBlID0gb3B0aW9ucy50eXBlLFxuICAgICAgY29udGVudCA9IG9wdGlvbnMuY29udGVudCxcbiAgICAgIGR1cmF0aW9uID0gb3B0aW9ucy5kdXJhdGlvbixcbiAgICAgIF9zdWNjZXNzID0gb3B0aW9ucy5zdWNjZXNzLFxuICAgICAgX2ZhaWwgPSBvcHRpb25zLmZhaWwsXG4gICAgICBfY29tcGxldGUgPSBvcHRpb25zLmNvbXBsZXRlO1xuICB2YXIgaWNvbk1hcCA9IHtcbiAgICBzdWNjZXNzOiAnc3VjY2VzcycsXG4gICAgZmFpbDogJ2Vycm9yJyxcbiAgICBub25lOiAnbm9uZScsXG4gICAgbG9hZGluZzogJ2xvYWRpbmcnXG4gIH07XG4gIHd4LnNob3dUb2FzdCh7XG4gICAgaWNvbjogaWNvbk1hcFt0eXBlXSB8fCAnJyxcbiAgICB0aXRsZTogY29udGVudCxcbiAgICBkdXJhdGlvbjogZHVyYXRpb24sXG4gICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcygpIHtcbiAgICAgIF9zdWNjZXNzICYmIF9zdWNjZXNzKCk7XG4gICAgfSxcbiAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgX2ZhaWwgJiYgX2ZhaWwocmVzKTtcbiAgICB9LFxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgIF9jb21wbGV0ZSAmJiBfY29tcGxldGUocmVzKTtcbiAgICB9XG4gIH0pO1xufSk7XG5leHBvcnQgZGVmYXVsdCBzaG93OyIsImV4cG9ydCB2YXIgQ09OVEFJTkVSX05BTUUgPSB7XG4gIFdFQ0hBVDogJ3dlY2hhdE1pbmlQcm9ncmFtJyxcbiAgQUxJUEFZOiAnYWxpTWluaUFwcCcsXG4gIEJZVEU6ICdieXRlZGFuY2VNaWNyb0FwcCcsXG4gIFdFQjogJ3dlYicsXG4gIEJBSURVOiAnYmFpZHVTbWFydFByb2dyYW0nLFxuICBLV0FJOiAna3VhaXNob3VNaW5pUHJvZ3JhbSdcbn07IiwiZnVuY3Rpb24gaXNVbmRlZih0eXBlKSB7XG4gIHJldHVybiB0eXBlID09PSAndW5kZWZpbmVkJztcbn1cblxuZXhwb3J0IHZhciBpc0RpbmdkaW5nTWluaWFwcCA9ICFpc1VuZGVmKHR5cGVvZiBkZCkgJiYgZGQgIT09IG51bGwgJiYgIWlzVW5kZWYodHlwZW9mIGRkLmFsZXJ0KTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5leHBvcnQgZnVuY3Rpb24gcHJvbWlzaWZ5KGFwaSkge1xuICByZXR1cm4gZnVuY3Rpb24gKGFyZykge1xuICAgIHJldHVybiBuZXcgUHJvbWlzZShmdW5jdGlvbiAocmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcHJvbWlzaWZ5QXJnID0gYXJnO1xuICAgICAgYXBpKF9leHRlbmRzKHt9LCBwcm9taXNpZnlBcmcsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuc3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLnN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uU3VjY2VzczogZnVuY3Rpb24gb25TdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vblN1Y2Nlc3MocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXNvbHZlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIGZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5mYWlsKHJlcyk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcmVqZWN0KHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRmFpbDogZnVuY3Rpb24gb25GYWlsKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkZhaWwgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5jb21wbGV0ZSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9LFxuICAgICAgICBvbkNvbXBsZXRlOiBmdW5jdGlvbiBvbkNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcub25Db21wbGV0ZShyZXMpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkpO1xuICAgIH0pO1xuICB9O1xufSIsInZhciBfZXhjbHVkZWQgPSBbXCJfZXh0XCJdO1xuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCB2YXIgc3R5bGVPdXQgPSBmdW5jdGlvbiBzdHlsZU91dChvdXRwdXQsIG9yaWdpbmFsSW5wdXQsIG9yaWdpbmFsT3V0cHV0KSB7XG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgb3V0cHV0LCB7XG4gICAgX29yaWdpbmFsOiB7XG4gICAgICBpbnB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsSW5wdXQpLFxuICAgICAgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOWvueWFpeWPgui/m+ihjCBmb3JtYXQg5LmL5ZCO55qE57uT5p6cXG4gICAgICBvdXRwdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbE91dHB1dCkgLy8g5a6e6ZmF6LCD55SoIGFwaSDmlrnms5Xml7bkvKDlhaXnmoTlj4LmlbAuIOi/lOWbnuWAvCBmb3JtYXQg5LmL5YmN55qE57uT5p6cXG5cbiAgICB9XG4gIH0pO1xufTtcbmV4cG9ydCB2YXIgc3R5bGVJbiA9IGZ1bmN0aW9uIHN0eWxlSW4ob3B0aW9ucywgYmFzZU5hbWUpIHtcbiAgdmFyIF9yZWYgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgX3JlZiRfZXh0ID0gX3JlZi5fZXh0LFxuICAgICAgX2V4dCA9IF9yZWYkX2V4dCA9PT0gdm9pZCAwID8ge30gOiBfcmVmJF9leHQsXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UoX3JlZiwgX2V4Y2x1ZGVkKTtcblxuICByZXR1cm4gX2V4dGVuZHMoe30sIHJlc3QsIF9leHRbYmFzZU5hbWVdIHx8IHt9KTtcbn07IiwiaW1wb3J0IHZpYnJhdGVTaG9ydCBmcm9tIFwiLi92aWJyYXRlU2hvcnRcIjtcbmltcG9ydCB2aWJyYXRlTG9uZyBmcm9tIFwiLi92aWJyYXRlTG9uZ1wiO1xuZXhwb3J0IHsgdmlicmF0ZVNob3J0LCB2aWJyYXRlTG9uZyB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2aWJyYXRlU2hvcnQ6IHZpYnJhdGVTaG9ydCxcbiAgdmlicmF0ZUxvbmc6IHZpYnJhdGVMb25nXG59OyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbnZhciB2aWJyYXRlTG9uZyA9IG5vcm1hbGl6ZShmdW5jdGlvbiAoX3JlZikge1xuICB2YXIgc3VjY2VzcyA9IF9yZWYuc3VjY2VzcyxcbiAgICAgIGZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBjb21wbGV0ZSA9IF9yZWYuY29tcGxldGU7XG5cbiAgdmFyIF92aWJyYXRlTG9uZyA9IGlzRGluZ2RpbmdNaW5pYXBwID8gZGQudmlicmF0ZUxvbmcgOiBteS52aWJyYXRlTG9uZztcblxuICBfdmlicmF0ZUxvbmcoZnVuY3Rpb24gKCkge1xuICAgIHN1Y2Nlc3MgJiYgc3VjY2VzcygpO1xuICAgIGNvbXBsZXRlICYmIGNvbXBsZXRlKCk7XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IHZpYnJhdGVMb25nOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbnZhciB2aWJyYXRlU2hvcnQgPSBub3JtYWxpemUoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIHN1Y2Nlc3MgPSBfcmVmLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gX3JlZi5mYWlsLFxuICAgICAgY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlO1xuXG4gIHZhciBfdmlicmF0ZVNob3J0ID0gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC52aWJyYXRlU2hvcnQgOiBteS52aWJyYXRlU2hvcnQ7XG5cbiAgX3ZpYnJhdGVTaG9ydChmdW5jdGlvbiAoKSB7XG4gICAgc3VjY2VzcyAmJiBzdWNjZXNzKCk7XG4gICAgY29tcGxldGUgJiYgY29tcGxldGUoKTtcbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5BTElQQVkpO1xuZXhwb3J0IGRlZmF1bHQgdmlicmF0ZVNob3J0OyIsImltcG9ydCB2aWJyYXRlU2hvcnQgZnJvbSBcIi4vdmlicmF0ZVNob3J0XCI7XG5pbXBvcnQgdmlicmF0ZUxvbmcgZnJvbSBcIi4vdmlicmF0ZUxvbmdcIjtcbmV4cG9ydCB7IHZpYnJhdGVTaG9ydCwgdmlicmF0ZUxvbmcgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgdmlicmF0ZVNob3J0OiB2aWJyYXRlU2hvcnQsXG4gIHZpYnJhdGVMb25nOiB2aWJyYXRlTG9uZ1xufTsiLCJpbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbnZhciB2aWJyYXRlTG9uZyA9IG5vcm1hbGl6ZShmdW5jdGlvbiAoX3JlZikge1xuICB2YXIgc3VjY2VzcyA9IF9yZWYuc3VjY2VzcyxcbiAgICAgIGZhaWwgPSBfcmVmLmZhaWwsXG4gICAgICBjb21wbGV0ZSA9IF9yZWYuY29tcGxldGU7XG4gIHN3YW4udmlicmF0ZUxvbmcoe1xuICAgIHN1Y2Nlc3M6IHN1Y2Nlc3MsXG4gICAgZmFpbDogZmFpbCxcbiAgICBjb21wbGV0ZTogY29tcGxldGVcbiAgfSk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCB2aWJyYXRlTG9uZzsiLCJpbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbnZhciB2aWJyYXRlU2hvcnQgPSBub3JtYWxpemUoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIHN1Y2Nlc3MgPSBfcmVmLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gX3JlZi5mYWlsLFxuICAgICAgY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlO1xuICBzd2FuLnZpYnJhdGVTaG9ydCh7XG4gICAgc3VjY2Vzczogc3VjY2VzcyxcbiAgICBmYWlsOiBmYWlsLFxuICAgIGNvbXBsZXRlOiBjb21wbGV0ZVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJBSURVKTtcbmV4cG9ydCBkZWZhdWx0IHZpYnJhdGVTaG9ydDsiLCJpbXBvcnQgdmlicmF0ZVNob3J0IGZyb20gXCIuL3ZpYnJhdGVTaG9ydFwiO1xuaW1wb3J0IHZpYnJhdGVMb25nIGZyb20gXCIuL3ZpYnJhdGVMb25nXCI7XG5leHBvcnQgeyB2aWJyYXRlU2hvcnQsIHZpYnJhdGVMb25nIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHZpYnJhdGVTaG9ydDogdmlicmF0ZVNob3J0LFxuICB2aWJyYXRlTG9uZzogdmlicmF0ZUxvbmdcbn07IiwiaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgdmlicmF0ZUxvbmcgPSBub3JtYWxpemUoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIHN1Y2Nlc3MgPSBfcmVmLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gX3JlZi5mYWlsLFxuICAgICAgY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlO1xuICB0dC52aWJyYXRlTG9uZyh7XG4gICAgc3VjY2Vzczogc3VjY2VzcyxcbiAgICBmYWlsOiBmYWlsLFxuICAgIGNvbXBsZXRlOiBjb21wbGV0ZVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgdmlicmF0ZUxvbmc7IiwiaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG5pbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG52YXIgdmlicmF0ZVNob3J0ID0gbm9ybWFsaXplKGZ1bmN0aW9uIChfcmVmKSB7XG4gIHZhciBzdWNjZXNzID0gX3JlZi5zdWNjZXNzLFxuICAgICAgZmFpbCA9IF9yZWYuZmFpbCxcbiAgICAgIGNvbXBsZXRlID0gX3JlZi5jb21wbGV0ZTtcbiAgdHQudmlicmF0ZVNob3J0KHtcbiAgICBzdWNjZXNzOiBzdWNjZXNzLFxuICAgIGZhaWw6IGZhaWwsXG4gICAgY29tcGxldGU6IGNvbXBsZXRlXG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuQllURSk7XG5leHBvcnQgZGVmYXVsdCB2aWJyYXRlU2hvcnQ7IiwiLyogZXNsaW50LWRpc2FibGUgZXFlcWVxICovXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tIFwiLi9fdXRpbHMvcHJvbWlzaWZ5XCI7XG5pbXBvcnQgeyBzdHlsZUluIH0gZnJvbSBcIi4vX3V0aWxzL3N0eWxlT3B0aW9uc1wiO1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZShhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgcmV0dXJuIHByb21pc2lmeShhcGkpKHN0eWxlSW4oYXJncywgY29udGFpbmVyTmFtZSkpO1xuICB9O1xufSIsImltcG9ydCB7IGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNXZWIsIGlzQnl0ZURhbmNlTWljcm9BcHAsIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSwgaXNCYWlkdVNtYXJ0UHJvZ3JhbSB9IGZyb20gXCJAdW5pL2VudlwiO1xuaW1wb3J0IGFsaU1pbmlBcHBNb2R1bGUgZnJvbSBcIi4vYWxpLW1pbmlhcHAvaW5kZXhcIjtcbmltcG9ydCB3ZWJNb2R1bGUgZnJvbSBcIi4vd2ViL2luZGV4XCI7XG5pbXBvcnQgd2VDaGF0TW9kdWxlIGZyb20gXCIuL3dlY2hhdC1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJ5dGVkYW5jZU1vZHVsZSBmcm9tIFwiLi9ieXRlZGFuY2UtbWljcm9hcHAvaW5kZXhcIjtcbmltcG9ydCBrdWFpU2hvdU1vZHVsZSBmcm9tIFwiLi9rdWFpc2hvdS1taW5pcHJvZ3JhbS9pbmRleFwiO1xuaW1wb3J0IGJhaUR1TW9kdWxlIGZyb20gXCIuL2JhaWR1LXNtYXJ0cHJvZ3JhbS9pbmRleFwiOyAvLyB3ZWIg5pqC5LiN5pSv5oyB6L+Z5Liq5Yqf6IO9XG5cbmV4cG9ydCB2YXIgdmlicmF0ZUxvbmcgPSBmdW5jdGlvbiB2aWJyYXRlTG9uZyhhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUudmlicmF0ZUxvbmcoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLnZpYnJhdGVMb25nKCk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUudmlicmF0ZUxvbmcoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICAgIHJldHVybiBieXRlZGFuY2VNb2R1bGUudmlicmF0ZUxvbmcoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUudmlicmF0ZUxvbmcoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS52aWJyYXRlTG9uZyhhcmdzKTtcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1VuaSBBUEnvvJp2aWJyYXRlTG9uZ+aaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciB2aWJyYXRlU2hvcnQgPSBmdW5jdGlvbiB2aWJyYXRlU2hvcnQoYXJncykge1xuICBpZiAoaXNXZWIpIHtcbiAgICByZXR1cm4gd2ViTW9kdWxlLnZpYnJhdGVTaG9ydChhcmdzKTtcbiAgfSBlbHNlIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUudmlicmF0ZVNob3J0KCk7XG4gIH0gZWxzZSBpZiAoaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICAgIHJldHVybiB3ZUNoYXRNb2R1bGUudmlicmF0ZVNob3J0KGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLnZpYnJhdGVTaG9ydChhcmdzKTtcbiAgfSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgICByZXR1cm4gYWxpTWluaUFwcE1vZHVsZS52aWJyYXRlU2hvcnQoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICAgIHJldHVybiBiYWlEdU1vZHVsZS52aWJyYXRlU2hvcnQoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdVbmkgQVBJ77yadmlicmF0ZVNob3J05pqC5LiN5pSv5oyBJyk7XG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCB7XG4gIHZpYnJhdGVMb25nOiB2aWJyYXRlTG9uZyxcbiAgdmlicmF0ZVNob3J0OiB2aWJyYXRlU2hvcnRcbn07IiwiaW1wb3J0IHZpYnJhdGVTaG9ydCBmcm9tIFwiLi92aWJyYXRlU2hvcnRcIjtcbmltcG9ydCB2aWJyYXRlTG9uZyBmcm9tIFwiLi92aWJyYXRlTG9uZ1wiO1xuZXhwb3J0IHsgdmlicmF0ZVNob3J0LCB2aWJyYXRlTG9uZyB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2aWJyYXRlU2hvcnQ6IHZpYnJhdGVTaG9ydCxcbiAgdmlicmF0ZUxvbmc6IHZpYnJhdGVMb25nXG59OyIsInZhciB2aWJyYXRlTG9uZyA9IGZ1bmN0aW9uIHZpYnJhdGVMb25nKCkge1xuICB0aHJvdyBFcnJvcignQHVuae+8mnZpYnJhdGVMb25nIOW/q+aJi+Wwj+eoi+W6j+aaguS4jeaUr+aMgScpO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgdmlicmF0ZUxvbmc7IiwidmFyIHZpYnJhdGVTaG9ydCA9IGZ1bmN0aW9uIHZpYnJhdGVTaG9ydCgpIHtcbiAgdGhyb3cgRXJyb3IoJ0B1bmnvvJp2aWJyYXRlU2hvcnQg5b+r5omL5bCP56iL5bqP5pqC5LiN5pSv5oyBJyk7XG59O1xuXG5leHBvcnQgZGVmYXVsdCB2aWJyYXRlU2hvcnQ7IiwiaW1wb3J0IHZpYnJhdGVTaG9ydCBmcm9tIFwiLi92aWJyYXRlU2hvcnRcIjtcbmltcG9ydCB2aWJyYXRlTG9uZyBmcm9tIFwiLi92aWJyYXRlTG9uZ1wiO1xuZXhwb3J0IHsgdmlicmF0ZVNob3J0LCB2aWJyYXRlTG9uZyB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICB2aWJyYXRlU2hvcnQ6IHZpYnJhdGVTaG9ydCxcbiAgdmlicmF0ZUxvbmc6IHZpYnJhdGVMb25nXG59OyIsImltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIHZpYnJhdGVMb25nID0gbm9ybWFsaXplKGZ1bmN0aW9uIChfcmVmKSB7XG4gIHZhciBzdWNjZXNzID0gX3JlZi5zdWNjZXNzLFxuICAgICAgZmFpbCA9IF9yZWYuZmFpbCxcbiAgICAgIGNvbXBsZXRlID0gX3JlZi5jb21wbGV0ZTtcbiAgdmFyIHJlcyA9IHdpbmRvdy5uYXZpZ2F0b3IudmlicmF0ZSg0MDApO1xuXG4gIGlmIChyZXMpIHtcbiAgICBzdWNjZXNzICYmIHN1Y2Nlc3MoKTtcbiAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZSgpO1xuICB9IGVsc2Uge1xuICAgIGZhaWwgJiYgZmFpbCgpO1xuICAgIGNvbXBsZXRlICYmIGNvbXBsZXRlKCk7XG4gIH1cbn0sIENPTlRBSU5FUl9OQU1FLldFQik7XG5leHBvcnQgZGVmYXVsdCB2aWJyYXRlTG9uZzsiLCJpbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbnZhciB2aWJyYXRlU2hvcnQgPSBub3JtYWxpemUoZnVuY3Rpb24gKF9yZWYpIHtcbiAgdmFyIHN1Y2Nlc3MgPSBfcmVmLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gX3JlZi5mYWlsLFxuICAgICAgY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlO1xuICB2YXIgcmVzID0gd2luZG93Lm5hdmlnYXRvci52aWJyYXRlKDE1KTtcblxuICBpZiAocmVzKSB7XG4gICAgc3VjY2VzcyAmJiBzdWNjZXNzKCk7XG4gICAgY29tcGxldGUgJiYgY29tcGxldGUoKTtcbiAgfSBlbHNlIHtcbiAgICBmYWlsICYmIGZhaWwoKTtcbiAgICBjb21wbGV0ZSAmJiBjb21wbGV0ZSgpO1xuICB9XG59LCBDT05UQUlORVJfTkFNRS5XRUIpO1xuZXhwb3J0IGRlZmF1bHQgdmlicmF0ZVNob3J0OyIsImltcG9ydCB2aWJyYXRlU2hvcnQgZnJvbSBcIi4vdmlicmF0ZVNob3J0XCI7XG5pbXBvcnQgdmlicmF0ZUxvbmcgZnJvbSBcIi4vdmlicmF0ZUxvbmdcIjtcbmV4cG9ydCB7IHZpYnJhdGVTaG9ydCwgdmlicmF0ZUxvbmcgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgdmlicmF0ZVNob3J0OiB2aWJyYXRlU2hvcnQsXG4gIHZpYnJhdGVMb25nOiB2aWJyYXRlTG9uZ1xufTsiLCJpbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbnZhciB2aWJyYXRlTG9uZyA9IG5vcm1hbGl6ZShmdW5jdGlvbiAoX3JlZikge1xuICB2YXIgdHlwZSA9IF9yZWYudHlwZSxcbiAgICAgIHN1Y2Nlc3MgPSBfcmVmLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gX3JlZi5mYWlsLFxuICAgICAgY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlO1xuICB3eC52aWJyYXRlTG9uZyh7XG4gICAgdHlwZTogdHlwZSxcbiAgICBzdWNjZXNzOiBzdWNjZXNzLFxuICAgIGZhaWw6IGZhaWwsXG4gICAgY29tcGxldGU6IGNvbXBsZXRlXG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IHZpYnJhdGVMb25nOyIsImltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xudmFyIHZpYnJhdGVTaG9ydCA9IG5vcm1hbGl6ZShmdW5jdGlvbiAoX3JlZikge1xuICB2YXIgdHlwZSA9IF9yZWYudHlwZSxcbiAgICAgIHN1Y2Nlc3MgPSBfcmVmLnN1Y2Nlc3MsXG4gICAgICBmYWlsID0gX3JlZi5mYWlsLFxuICAgICAgY29tcGxldGUgPSBfcmVmLmNvbXBsZXRlO1xuICB3eC52aWJyYXRlU2hvcnQoe1xuICAgIHR5cGU6IHR5cGUsXG4gICAgc3VjY2Vzczogc3VjY2VzcyxcbiAgICBmYWlsOiBmYWlsLFxuICAgIGNvbXBsZXRlOiBjb21wbGV0ZVxuICB9KTtcbn0sIENPTlRBSU5FUl9OQU1FLldFQ0hBVCk7XG5leHBvcnQgZGVmYXVsdCB2aWJyYXRlU2hvcnQ7IiwiZXhwb3J0IHZhciBDT05UQUlORVJfTkFNRSA9IHtcbiAgV0VDSEFUOiAnd2VjaGF0TWluaVByb2dyYW0nLFxuICBBTElQQVk6ICdhbGlNaW5pQXBwJyxcbiAgQllURTogJ2J5dGVkYW5jZU1pY3JvQXBwJyxcbiAgV0VCOiAnd2ViJyxcbiAgQkFJRFU6ICdiYWlkdVNtYXJ0UHJvZ3JhbScsXG4gIEtXQUk6ICdrdWFpc2hvdU1pbmlQcm9ncmFtJ1xufTsiLCJmdW5jdGlvbiBpc1VuZGVmKHR5cGUpIHtcbiAgcmV0dXJuIHR5cGUgPT09ICd1bmRlZmluZWQnO1xufVxuXG5leHBvcnQgdmFyIGlzRGluZ2RpbmdNaW5pYXBwID0gIWlzVW5kZWYodHlwZW9mIGRkKSAmJiBkZCAhPT0gbnVsbCAmJiAhaXNVbmRlZih0eXBlb2YgZGQuYWxlcnQpOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmV4cG9ydCBmdW5jdGlvbiBwcm9taXNpZnkoYXBpKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBwcm9taXNpZnlBcmcgPSBhcmc7XG4gICAgICBhcGkoX2V4dGVuZHMoe30sIHByb21pc2lmeUFyZywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5zdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuc3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiBvblN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuZmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25GYWlsOiBmdW5jdGlvbiBvbkZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uRmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uRmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuY29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uIG9uQ29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH07XG59IiwidmFyIF9leGNsdWRlZCA9IFtcIl9leHRcIl07XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZXhwb3J0IHZhciBzdHlsZU91dCA9IGZ1bmN0aW9uIHN0eWxlT3V0KG91dHB1dCwgb3JpZ2luYWxJbnB1dCwgb3JpZ2luYWxPdXRwdXQpIHtcbiAgcmV0dXJuIF9leHRlbmRzKHt9LCBvdXRwdXQsIHtcbiAgICBfb3JpZ2luYWw6IHtcbiAgICAgIGlucHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxJbnB1dCksXG4gICAgICAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g5a+55YWl5Y+C6L+b6KGMIGZvcm1hdCDkuYvlkI7nmoTnu5PmnpxcbiAgICAgIG91dHB1dDogX2V4dGVuZHMoe30sIG9yaWdpbmFsT3V0cHV0KSAvLyDlrp7pmYXosIPnlKggYXBpIOaWueazleaXtuS8oOWFpeeahOWPguaVsC4g6L+U5Zue5YC8IGZvcm1hdCDkuYvliY3nmoTnu5PmnpxcblxuICAgIH1cbiAgfSk7XG59O1xuZXhwb3J0IHZhciBzdHlsZUluID0gZnVuY3Rpb24gc3R5bGVJbihvcHRpb25zLCBiYXNlTmFtZSkge1xuICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICBfcmVmJF9leHQgPSBfcmVmLl9leHQsXG4gICAgICBfZXh0ID0gX3JlZiRfZXh0ID09PSB2b2lkIDAgPyB7fSA6IF9yZWYkX2V4dCxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzdCwgX2V4dFtiYXNlTmFtZV0gfHwge30pO1xufTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCBzaG93QWN0aW9uU2hlZXQgZnJvbSBcIkB1bmkvYWN0aW9uLXNoZWV0L2xpYi9hbGktbWluaWFwcC9pbmRleC5qc1wiO1xudmFyIGNob29zZU1lZGlhID0gbm9ybWFsaXplLmNob29zZU1lZGlhKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHZhciBtZWRpYVR5cGUgPSBhcmdzLm1lZGlhVHlwZTtcblxuICB2YXIgaW1hZ2VGbiA9IGZ1bmN0aW9uIGltYWdlRm4oKSB7XG4gICAgcmV0dXJuIG15LmNob29zZUltYWdlKF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICB2YXIgcmVzdWx0ID0ge1xuICAgICAgICAgIHR5cGU6ICdpbWFnZScsXG4gICAgICAgICAgdGVtcEZpbGVzOiByZXMudGVtcEZpbGVzLm1hcChmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCBpLCB7XG4gICAgICAgICAgICAgIHRlbXBGaWxlUGF0aDogaS5wYXRoXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9KVxuICAgICAgICB9O1xuICAgICAgICBhcmdzLnN1Y2Nlc3MocmVzdWx0KTtcbiAgICAgIH1cbiAgICB9KSk7XG4gIH07XG5cbiAgdmFyIHZpZGVvRm4gPSBmdW5jdGlvbiB2aWRlb0ZuKCkge1xuICAgIHJldHVybiBteS5jaG9vc2VWaWRlbyhfZXh0ZW5kcyh7fSwgYXJncywge1xuICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgdmFyIHJlc3VsdCA9IHtcbiAgICAgICAgICB0eXBlOiAndmlkZW8nLFxuICAgICAgICAgIHRlbXBGaWxlczogW3Jlc11cbiAgICAgICAgfTtcbiAgICAgICAgYXJncy5zdWNjZXNzKHJlc3VsdCk7XG4gICAgICB9XG4gICAgfSkpO1xuICB9O1xuXG4gIGlmIChtZWRpYVR5cGUubGVuZ3RoID09PSAxICYmIG1lZGlhVHlwZVswXSA9PT0gJ2ltYWdlJykge1xuICAgIGltYWdlRm4oKTtcbiAgfSBlbHNlIGlmIChtZWRpYVR5cGUubGVuZ3RoID09PSAxICYmIG1lZGlhVHlwZVswXSA9PT0gJ3ZpZGVvJykge1xuICAgIHZpZGVvRm4oKTtcbiAgfSBlbHNlIHtcbiAgICBzaG93QWN0aW9uU2hlZXQoe1xuICAgICAgaXRlbUxpc3Q6IFsn5Zu+54mHJywgJ+inhumikSddXG4gICAgfSkudGhlbihmdW5jdGlvbiAocmVzKSB7XG4gICAgICBpZiAocmVzLnRhcEluZGV4ID09PSAwKSB7XG4gICAgICAgIGltYWdlRm4oKTtcbiAgICAgIH0gZWxzZSBpZiAocmVzLnRhcEluZGV4ID09PSAxKSB7XG4gICAgICAgIHZpZGVvRm4oKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdCh7XG4gICAgICAgICAgZXJyTXNnOiAn55So5oi35Y+W5raI6YCJ5oupJ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IGNob29zZU1lZGlhOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbnZhciBjaG9vc2VWaWRlbyA9IG5vcm1hbGl6ZS5jaG9vc2VWaWRlbyhmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gaXNEaW5nZGluZ01pbmlhcHAgPyBkZC5jaG9vc2VWaWRlbyhhcmdzKSA6IG15LmNob29zZVZpZGVvKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQUxJUEFZKTtcbmV4cG9ydCBkZWZhdWx0IGNob29zZVZpZGVvOyIsImltcG9ydCB7IGlzRGluZ2RpbmdNaW5pYXBwIH0gZnJvbSBcIi4uL191dGlscy9taW5pYXBwRW52QXBwXCI7XG5leHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGlkKSB7XG4gIHJldHVybiBpc0RpbmdkaW5nTWluaWFwcCA/IGRkLmNyZWF0ZVZpZGVvQ29udGV4dChpZCkgOiBteS5jcmVhdGVWaWRlb0NvbnRleHQoaWQpO1xufSk7IiwiaW1wb3J0IGNob29zZVZpZGVvIGZyb20gXCIuL2Nob29zZVZpZGVvXCI7XG5pbXBvcnQgY3JlYXRlVmlkZW9Db250ZXh0IGZyb20gXCIuL2NyZWF0ZVZpZGVvQ29udGV4dFwiO1xuaW1wb3J0IGNob29zZU1lZGlhIGZyb20gXCIuL2Nob29zZU1lZGlhXCI7XG5leHBvcnQgeyBjaG9vc2VWaWRlbywgY3JlYXRlVmlkZW9Db250ZXh0LCBjaG9vc2VNZWRpYSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjaG9vc2VWaWRlbzogY2hvb3NlVmlkZW8sXG4gIGNyZWF0ZVZpZGVvQ29udGV4dDogY3JlYXRlVmlkZW9Db250ZXh0LFxuICBjaG9vc2VNZWRpYTogY2hvb3NlTWVkaWFcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgY2hvb3NlTWVkaWEgPSBub3JtYWxpemUuY2hvb3NlTWVkaWEoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHN3YW4uY2FuSVVzZSgnY2hvb3NlTWVkaWEnKSA/IHN3YW4uY2hvb3NlTWVkaWEoYXJncykgOiBzd2FuLmNob29zZUltYWdlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuQkFJRFUpO1xuZXhwb3J0IGRlZmF1bHQgY2hvb3NlTWVkaWE7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgY2hvb3NlVmlkZW8gPSBub3JtYWxpemUuY2hvb3NlVmlkZW8oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHN3YW4uY2hvb3NlVmlkZW8oYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CQUlEVSk7XG5leHBvcnQgZGVmYXVsdCBjaG9vc2VWaWRlbzsiLCJleHBvcnQgZGVmYXVsdCAoZnVuY3Rpb24gKGlkKSB7XG4gIHJldHVybiBzd2FuLmNyZWF0ZVZpZGVvQ29udGV4dChpZCk7XG59KTsiLCJpbXBvcnQgY2hvb3NlVmlkZW8gZnJvbSBcIi4vY2hvb3NlVmlkZW9cIjtcbmltcG9ydCBjcmVhdGVWaWRlb0NvbnRleHQgZnJvbSBcIi4vY3JlYXRlVmlkZW9Db250ZXh0XCI7XG5pbXBvcnQgY2hvb3NlTWVkaWEgZnJvbSBcIi4vY2hvb3NlTWVkaWFcIjtcbmV4cG9ydCB7IGNob29zZVZpZGVvLCBjcmVhdGVWaWRlb0NvbnRleHQsIGNob29zZU1lZGlhIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGNob29zZVZpZGVvOiBjaG9vc2VWaWRlbyxcbiAgY3JlYXRlVmlkZW9Db250ZXh0OiBjcmVhdGVWaWRlb0NvbnRleHQsXG4gIGNob29zZU1lZGlhOiBjaG9vc2VNZWRpYVxufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBjaG9vc2VNZWRpYSA9IG5vcm1hbGl6ZS5jaG9vc2VNZWRpYShmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gdHQuY2hvb3NlSW1hZ2UoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5CWVRFKTtcbmV4cG9ydCBkZWZhdWx0IGNob29zZU1lZGlhOyIsImltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xudmFyIGNob29zZVZpZGVvID0gbm9ybWFsaXplLmNob29zZVZpZGVvKGZ1bmN0aW9uIChhcmdzKSB7XG4gIHJldHVybiB0dC5jaG9vc2VWaWRlbyhhcmdzKTtcbn0sIENPTlRBSU5FUl9OQU1FLkJZVEUpO1xuZXhwb3J0IGRlZmF1bHQgY2hvb3NlVmlkZW87IiwiZXhwb3J0IGRlZmF1bHQgKGZ1bmN0aW9uIChpZCwgY29udGV4dCkge1xuICByZXR1cm4gY29udGV4dCA/IHR0LmNyZWF0ZVZpZGVvQ29udGV4dChpZCwgY29udGV4dCkgOiB0dC5jcmVhdGVWaWRlb0NvbnRleHQoaWQpO1xufSk7IiwiaW1wb3J0IGNob29zZVZpZGVvIGZyb20gXCIuL2Nob29zZVZpZGVvXCI7XG5pbXBvcnQgY3JlYXRlVmlkZW9Db250ZXh0IGZyb20gXCIuL2NyZWF0ZVZpZGVvQ29udGV4dFwiO1xuaW1wb3J0IGNob29zZU1lZGlhIGZyb20gXCIuL2Nob29zZU1lZGlhXCI7XG5leHBvcnQgeyBjaG9vc2VWaWRlbywgY3JlYXRlVmlkZW9Db250ZXh0LCBjaG9vc2VNZWRpYSB9O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjaG9vc2VWaWRlbzogY2hvb3NlVmlkZW8sXG4gIGNyZWF0ZVZpZGVvQ29udGV4dDogY3JlYXRlVmlkZW9Db250ZXh0LFxuICBjaG9vc2VNZWRpYTogY2hvb3NlTWVkaWFcbn07IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSBcIi4vX3V0aWxzL3Byb21pc2lmeVwiO1xuaW1wb3J0IHsgc3R5bGVJbiB9IGZyb20gXCIuL191dGlscy9zdHlsZU9wdGlvbnNcIjtcbmV4cG9ydCB2YXIgbm9ybWFsaXplID0ge1xuICBjaG9vc2VWaWRlbzogZnVuY3Rpb24gY2hvb3NlVmlkZW8oYXBpLCBjb250YWluZXJOYW1lKSB7XG4gICAgdmFyIGZvcm1hdFJlc3BvbnNlID0gZnVuY3Rpb24gZm9ybWF0UmVzcG9uc2UocmVzKSB7XG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHJlcywge1xuICAgICAgICB0ZW1wRmlsZVBhdGg6IHJlcy50ZW1wRmlsZVBhdGggfHwgcmVzLmZpbGVQYXRoXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICBhcmdzID0gc3R5bGVJbihhcmdzLCBjb250YWluZXJOYW1lKTtcbiAgICAgIHJldHVybiBwcm9taXNpZnkoYXBpKShfZXh0ZW5kcyh7fSwgYXJncywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIGFyZ3Muc3VjY2VzcyAmJiBhcmdzLnN1Y2Nlc3MoZm9ybWF0UmVzcG9uc2UocmVzKSk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBhcmdzLmNvbXBsZXRlICYmIGFyZ3MuY29tcGxldGUocmVzKTtcbiAgICAgICAgfVxuICAgICAgfSkpLnRoZW4oZm9ybWF0UmVzcG9uc2UpO1xuICAgIH07XG4gIH0sXG4gIGNob29zZU1lZGlhOiBmdW5jdGlvbiBjaG9vc2VNZWRpYShhcGksIGNvbnRhaW5lck5hbWUpIHtcbiAgICB2YXIgZm9ybWF0UmVzcG9uc2UgPSBmdW5jdGlvbiBmb3JtYXRSZXNwb25zZShyZXMpIHtcbiAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgcmVzLCB7XG4gICAgICAgIHRlbXBGaWxlczogKHJlcy50ZW1wRmlsZXMgfHwgcmVzLmZpbGVzKS5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICByZXR1cm4gX2V4dGVuZHMoe30sIGl0ZW0sIHtcbiAgICAgICAgICAgIHRlbXBGaWxlUGF0aDogaXRlbS50ZW1wRmlsZVBhdGggfHwgaXRlbS5wYXRoXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICBpZiAoYXJncyA9PT0gdm9pZCAwKSB7XG4gICAgICAgIGFyZ3MgPSB7fTtcbiAgICAgIH1cblxuICAgICAgYXJncyA9IHN0eWxlSW4oX2V4dGVuZHMoe1xuICAgICAgICBjb3VudDogOSxcbiAgICAgICAgc2l6ZVR5cGU6IFsnb3JpZ2luYWwnLCAnY29tcHJlc3NlZCddLFxuICAgICAgICBzb3VyY2VUeXBlOiBbJ2NhbWVyYScsICdhbGJ1bSddLFxuICAgICAgICBtZWRpYVR5cGU6IFsnaW1hZ2UnLCAndmlkZW8nXSxcbiAgICAgICAgbWF4RHVyYXRpb246IDYwXG4gICAgICB9LCBhcmdzKSwgY29udGFpbmVyTmFtZSk7XG4gICAgICByZXR1cm4gcHJvbWlzaWZ5KGFwaSkoX2V4dGVuZHMoe30sIGFyZ3MsIHtcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgICBhcmdzLnN1Y2Nlc3MgJiYgYXJncy5zdWNjZXNzKGZvcm1hdFJlc3BvbnNlKHJlcykpO1xuICAgICAgICB9LFxuICAgICAgICBmYWlsOiBmdW5jdGlvbiBmYWlsKHJlcykge1xuICAgICAgICAgIGFyZ3MuZmFpbCAmJiBhcmdzLmZhaWwocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGFyZ3MuY29tcGxldGUgJiYgYXJncy5jb21wbGV0ZShyZXMpO1xuICAgICAgICB9XG4gICAgICB9KSkudGhlbihmb3JtYXRSZXNwb25zZSk7XG4gICAgfTtcbiAgfVxufTsiLCJpbXBvcnQgeyBpc01pbmlBcHAsIGlzV2VDaGF0TWluaVByb2dyYW0sIGlzV2ViLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0JhaWR1U21hcnRQcm9ncmFtLCBpc0t1YWlTaG91TWluaVByb2dyYW0gfSBmcm9tIFwiQHVuaS9lbnZcIjtcbmltcG9ydCBhbGlNaW5pQXBwTW9kdWxlIGZyb20gXCIuL2FsaS1taW5pYXBwL2luZGV4XCI7XG5pbXBvcnQgd2ViTW9kdWxlIGZyb20gXCIuL3dlYi9pbmRleFwiO1xuaW1wb3J0IHdlQ2hhdE1vZHVsZSBmcm9tIFwiLi93ZWNoYXQtbWluaXByb2dyYW0vaW5kZXhcIjtcbmltcG9ydCBieXRlZGFuY2VNb2R1bGUgZnJvbSBcIi4vYnl0ZWRhbmNlLW1pY3JvYXBwL2luZGV4XCI7XG5pbXBvcnQgYmFpRHVNb2R1bGUgZnJvbSBcIi4vYmFpZHUtc21hcnRwcm9ncmFtL2luZGV4XCI7XG5pbXBvcnQga3VhaVNob3VNb2R1bGUgZnJvbSBcIi4va3VhaXNob3UtbWluaXByb2dyYW0vaW5kZXhcIjtcbmV4cG9ydCB2YXIgY2hvb3NlVmlkZW8gPSBmdW5jdGlvbiBjaG9vc2VWaWRlbyhhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuY2hvb3NlVmlkZW8oYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmNob29zZVZpZGVvKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmNob29zZVZpZGVvKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmNob29zZVZpZGVvKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLmNob29zZVZpZGVvKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuY2hvb3NlVmlkZW8oYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5pL2FwaXPvvJpjaG9vc2VWaWRlb+aaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IHZhciBjcmVhdGVWaWRlb0NvbnRleHQgPSBmdW5jdGlvbiBjcmVhdGVWaWRlb0NvbnRleHQoaWQsIGNvbnRleHQpIHtcbiAgaWYgKGlzV2ViKSB7XG4gICAgcmV0dXJuIHdlYk1vZHVsZS5jcmVhdGVWaWRlb0NvbnRleHQoKTtcbiAgfSBlbHNlIGlmIChpc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4ga3VhaVNob3VNb2R1bGUuY3JlYXRlVmlkZW9Db250ZXh0KGlkLCBjb250ZXh0KTtcbiAgfSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIHdlQ2hhdE1vZHVsZS5jcmVhdGVWaWRlb0NvbnRleHQoaWQsIGNvbnRleHQpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmNyZWF0ZVZpZGVvQ29udGV4dChpZCwgY29udGV4dCk7XG4gIH0gZWxzZSBpZiAoaXNNaW5pQXBwKSB7XG4gICAgcmV0dXJuIGFsaU1pbmlBcHBNb2R1bGUuY3JlYXRlVmlkZW9Db250ZXh0KGlkKTtcbiAgfSBlbHNlIGlmIChpc0JhaWR1U21hcnRQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGJhaUR1TW9kdWxlLmNyZWF0ZVZpZGVvQ29udGV4dChpZCk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5pL2FwaXPvvJpjcmVhdGVWaWRlb0NvbnRleHTmmoLkuI3mlK/mjIEnKTtcbiAgfVxufTtcbmV4cG9ydCB2YXIgY2hvb3NlTWVkaWEgPSBmdW5jdGlvbiBjaG9vc2VNZWRpYShhcmdzKSB7XG4gIGlmIChpc1dlYikge1xuICAgIHJldHVybiB3ZWJNb2R1bGUuY2hvb3NlTWVkaWEoYXJncyk7XG4gIH0gZWxzZSBpZiAoaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gICAgcmV0dXJuIGt1YWlTaG91TW9kdWxlLmNob29zZU1lZGlhKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICByZXR1cm4gd2VDaGF0TW9kdWxlLmNob29zZU1lZGlhKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQnl0ZURhbmNlTWljcm9BcHApIHtcbiAgICByZXR1cm4gYnl0ZWRhbmNlTW9kdWxlLmNob29zZU1lZGlhKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzTWluaUFwcCkge1xuICAgIHJldHVybiBhbGlNaW5pQXBwTW9kdWxlLmNob29zZU1lZGlhKGFyZ3MpO1xuICB9IGVsc2UgaWYgKGlzQmFpZHVTbWFydFByb2dyYW0pIHtcbiAgICByZXR1cm4gYmFpRHVNb2R1bGUuY2hvb3NlTWVkaWEoYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdAdW5pL2FwaXPvvJpjaG9vc2VNZWRpYeaaguS4jeaUr+aMgScpO1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQge1xuICBjaG9vc2VNZWRpYTogY2hvb3NlTWVkaWEsXG4gIGNob29zZVZpZGVvOiBjaG9vc2VWaWRlbyxcbiAgY3JlYXRlVmlkZW9Db250ZXh0OiBjcmVhdGVWaWRlb0NvbnRleHRcbn07IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgY2hvb3NlTWVkaWEgPSBub3JtYWxpemUuY2hvb3NlTWVkaWEoZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIGtzLmNhbklVc2UoJ2Nob29zZU1lZGlhJykgPyBrcy5jaG9vc2VNZWRpYShhcmdzKSA6IGtzLmNob29zZUltYWdlKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuS1dBSSk7XG5leHBvcnQgZGVmYXVsdCBjaG9vc2VNZWRpYTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBjaG9vc2VWaWRlbyA9IG5vcm1hbGl6ZS5jaG9vc2VWaWRlbyhmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4ga3MuY2hvb3NlVmlkZW8oYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5LV0FJKTtcbmV4cG9ydCBkZWZhdWx0IGNob29zZVZpZGVvOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoaWQsIGNvbnRleHQpIHtcbiAgcmV0dXJuIGNvbnRleHQgPyBrcy5jcmVhdGVWaWRlb0NvbnRleHQoaWQsIGNvbnRleHQpIDoga3MuY3JlYXRlVmlkZW9Db250ZXh0KGlkKTtcbn0pOyIsImltcG9ydCBjaG9vc2VWaWRlbyBmcm9tIFwiLi9jaG9vc2VWaWRlb1wiO1xuaW1wb3J0IGNyZWF0ZVZpZGVvQ29udGV4dCBmcm9tIFwiLi9jcmVhdGVWaWRlb0NvbnRleHRcIjtcbmltcG9ydCBjaG9vc2VNZWRpYSBmcm9tIFwiLi9jaG9vc2VNZWRpYVwiO1xuZXhwb3J0IHsgY2hvb3NlVmlkZW8sIGNyZWF0ZVZpZGVvQ29udGV4dCwgY2hvb3NlTWVkaWEgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY2hvb3NlVmlkZW86IGNob29zZVZpZGVvLFxuICBjcmVhdGVWaWRlb0NvbnRleHQ6IGNyZWF0ZVZpZGVvQ29udGV4dCxcbiAgY2hvb3NlTWVkaWE6IGNob29zZU1lZGlhXG59OyIsImltcG9ydCB7IENPTlRBSU5FUl9OQU1FIH0gZnJvbSBcIi4uL191dGlscy9jb25zdGFudFwiO1xuaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuXG5mdW5jdGlvbiBpbnB1dENyZWF0ZUFuZEFwcGVuZChtdWx0aXBsZSwgYWNjZXB0KSB7XG4gIHZhciBpbnB1dEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdJTlBVVCcpO1xuICBpbnB1dEVsZW1lbnQubmFtZSA9ICdmaWxlJztcbiAgaW5wdXRFbGVtZW50LmlkID0gXCJpbnB1dC1cIiArIE1hdGgucmFuZG9tKCkgKiAxZTg7XG4gIGlucHV0RWxlbWVudC50eXBlID0gJ2ZpbGUnO1xuICBtdWx0aXBsZSAmJiBpbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKCdtdWx0aXBsZScsICdtdWx0aXBsZScpO1xuICBpbnB1dEVsZW1lbnQuc3R5bGUuZGlzcGxheSA9ICdub25lJztcbiAgYWNjZXB0ICYmIGlucHV0RWxlbWVudC5zZXRBdHRyaWJ1dGUoJ2FjY2VwdCcsIGFjY2VwdCk7XG4gIGRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoaW5wdXRFbGVtZW50KTtcbiAgcmV0dXJuIGlucHV0RWxlbWVudDtcbn1cblxudmFyIGNob29zZU1lZGlhID0gbm9ybWFsaXplLmNob29zZU1lZGlhKGZ1bmN0aW9uIChhcmdzKSB7XG4gIGlmIChhcmdzID09PSB2b2lkIDApIHtcbiAgICBhcmdzID0ge307XG4gIH1cblxuICB2YXIgX2FyZ3MgPSBhcmdzLFxuICAgICAgX2FyZ3MkY291bnQgPSBfYXJncy5jb3VudCxcbiAgICAgIGNvdW50ID0gX2FyZ3MkY291bnQgPT09IHZvaWQgMCA/IDkgOiBfYXJncyRjb3VudCxcbiAgICAgIF9hcmdzJHN1Y2Nlc3MgPSBfYXJncy5zdWNjZXNzLFxuICAgICAgc3VjY2VzcyA9IF9hcmdzJHN1Y2Nlc3MgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX2FyZ3Mkc3VjY2VzcyxcbiAgICAgIF9hcmdzJGZhaWwgPSBfYXJncy5mYWlsLFxuICAgICAgZmFpbCA9IF9hcmdzJGZhaWwgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX2FyZ3MkZmFpbCxcbiAgICAgIF9hcmdzJGNvbXBsZXRlID0gX2FyZ3MuY29tcGxldGUsXG4gICAgICBjb21wbGV0ZSA9IF9hcmdzJGNvbXBsZXRlID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9hcmdzJGNvbXBsZXRlO1xuXG4gIHRyeSB7XG4gICAgdmFyIGlucHV0RWxlbWVudCA9IGlucHV0Q3JlYXRlQW5kQXBwZW5kKGNvdW50ID4gMSwgYXJncy5hY2NlcHQpO1xuICAgIHZhciBmaWxlcyA9IFtdO1xuICAgIGlucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgZmlsZXMgPSBlLnRhcmdldC5maWxlcyAmJiBBcnJheS5mcm9tKGUudGFyZ2V0LmZpbGVzKS5zbGljZSgwLCBjb3VudCk7XG4gICAgICB2YXIgcmVzID0ge1xuICAgICAgICB0ZW1wRmlsZXM6IGZpbGVzLm1hcChmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZW1wRmlsZVBhdGg6IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpLFxuICAgICAgICAgICAgc2l6ZTogZmlsZS5zaXplXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbGVzOiBmaWxlc1xuICAgICAgfTtcbiAgICAgIHN1Y2Nlc3MocmVzKTtcbiAgICAgIGNvbXBsZXRlKHJlcyk7XG4gICAgICBpbnB1dEVsZW1lbnQucmVtb3ZlICYmIGlucHV0RWxlbWVudC5yZW1vdmUoKTtcbiAgICB9LCBmYWxzZSk7XG4gICAgdmFyIE1vdXNlRXZlbnRzID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnRzJyk7XG4gICAgTW91c2VFdmVudHMuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpO1xuICAgIGlucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KE1vdXNlRXZlbnRzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGZhaWwoZSk7XG4gICAgY29tcGxldGUoZSk7XG4gIH1cbn0sIENPTlRBSU5FUl9OQU1FLldFQik7XG5leHBvcnQgZGVmYXVsdCBjaG9vc2VNZWRpYTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbmltcG9ydCB7IG5vcm1hbGl6ZSB9IGZyb20gXCIuLi9jb21tb25cIjtcbmltcG9ydCBjaG9vc2VNZWRpYSBmcm9tIFwiLi9jaG9vc2VNZWRpYVwiO1xudmFyIGNob29zZVZpZGVvID0gbm9ybWFsaXplLmNob29zZVZpZGVvKGZ1bmN0aW9uIChhcmdzKSB7XG4gIGlmIChhcmdzID09PSB2b2lkIDApIHtcbiAgICBhcmdzID0ge307XG4gIH1cblxuICB2YXIgX2FyZ3MgPSBhcmdzLFxuICAgICAgX2FyZ3Mkc3VjY2VzcyA9IF9hcmdzLnN1Y2Nlc3MsXG4gICAgICBzdWNjZXNzID0gX2FyZ3Mkc3VjY2VzcyA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfYXJncyRzdWNjZXNzLFxuICAgICAgX2FyZ3MkZmFpbCA9IF9hcmdzLmZhaWwsXG4gICAgICBmYWlsID0gX2FyZ3MkZmFpbCA9PT0gdm9pZCAwID8gZnVuY3Rpb24gKCkge30gOiBfYXJncyRmYWlsLFxuICAgICAgX2FyZ3MkY29tcGxldGUgPSBfYXJncy5jb21wbGV0ZSxcbiAgICAgIGNvbXBsZXRlID0gX2FyZ3MkY29tcGxldGUgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX2FyZ3MkY29tcGxldGU7XG4gIGNob29zZU1lZGlhKHtcbiAgICBjb3VudDogMSxcbiAgICBhY2NlcHQ6ICd2aWRlby8qJ1xuICB9KS50aGVuKGZ1bmN0aW9uIChyZXMpIHtcbiAgICB2YXIgcmVzdWx0ID0gX2V4dGVuZHMoe30sIHJlcy50ZW1wRmlsZXNbMF0sIHtcbiAgICAgIGZpbGVzOiByZXMuZmlsZXNcbiAgICB9KTtcblxuICAgIHN1Y2Nlc3MocmVzdWx0KTtcbiAgICBjb21wbGV0ZShyZXN1bHQpO1xuICB9KS5jYXRjaChmdW5jdGlvbiAoZSkge1xuICAgIGZhaWwoZSk7XG4gICAgY29tcGxldGUoZSk7XG4gIH0pO1xufSwgQ09OVEFJTkVSX05BTUUuV0VCKTtcbmV4cG9ydCBkZWZhdWx0IGNob29zZVZpZGVvOyIsInZhciBjcmVhdGVWaWRlb0NvbnRleHQgPSBmdW5jdGlvbiBjcmVhdGVWaWRlb0NvbnRleHQoKSB7XG4gIHRocm93IG5ldyBFcnJvcignQHVuaS9hcGlzOiBjcmVhdGVWaWRlb0NvbnRleHTkuI3mlK/mjIEnKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGNyZWF0ZVZpZGVvQ29udGV4dDsiLCJpbXBvcnQgY2hvb3NlVmlkZW8gZnJvbSBcIi4vY2hvb3NlVmlkZW9cIjtcbmltcG9ydCBjcmVhdGVWaWRlb0NvbnRleHQgZnJvbSBcIi4vY3JlYXRlVmlkZW9Db250ZXh0XCI7XG5pbXBvcnQgY2hvb3NlTWVkaWEgZnJvbSBcIi4vY2hvb3NlTWVkaWFcIjtcbmV4cG9ydCB7IGNob29zZVZpZGVvLCBjcmVhdGVWaWRlb0NvbnRleHQsIGNob29zZU1lZGlhIH07XG5leHBvcnQgZGVmYXVsdCB7XG4gIGNob29zZVZpZGVvOiBjaG9vc2VWaWRlbyxcbiAgY3JlYXRlVmlkZW9Db250ZXh0OiBjcmVhdGVWaWRlb0NvbnRleHQsXG4gIGNob29zZU1lZGlhOiBjaG9vc2VNZWRpYVxufTsiLCJpbXBvcnQgeyBub3JtYWxpemUgfSBmcm9tIFwiLi4vY29tbW9uXCI7XG5pbXBvcnQgeyBDT05UQUlORVJfTkFNRSB9IGZyb20gXCIuLi9fdXRpbHMvY29uc3RhbnRcIjtcbnZhciBjaG9vc2VNZWRpYSA9IG5vcm1hbGl6ZS5jaG9vc2VNZWRpYShmdW5jdGlvbiAoYXJncykge1xuICByZXR1cm4gd3guY2FuSVVzZSgnY2hvb3NlTWVkaWEnKSA/IHd4LmNob29zZU1lZGlhKGFyZ3MpIDogd3guY2hvb3NlSW1hZ2UoYXJncyk7XG59LCBDT05UQUlORVJfTkFNRS5XRUNIQVQpO1xuZXhwb3J0IGRlZmF1bHQgY2hvb3NlTWVkaWE7IiwiaW1wb3J0IHsgbm9ybWFsaXplIH0gZnJvbSBcIi4uL2NvbW1vblwiO1xuaW1wb3J0IHsgQ09OVEFJTkVSX05BTUUgfSBmcm9tIFwiLi4vX3V0aWxzL2NvbnN0YW50XCI7XG52YXIgY2hvb3NlVmlkZW8gPSBub3JtYWxpemUuY2hvb3NlVmlkZW8oZnVuY3Rpb24gKGFyZ3MpIHtcbiAgcmV0dXJuIHd4LmNob29zZVZpZGVvKGFyZ3MpO1xufSwgQ09OVEFJTkVSX05BTUUuV0VDSEFUKTtcbmV4cG9ydCBkZWZhdWx0IGNob29zZVZpZGVvOyIsImV4cG9ydCBkZWZhdWx0IChmdW5jdGlvbiAoaWQsIGNvbnRleHQpIHtcbiAgcmV0dXJuIGNvbnRleHQgPyB3eC5jcmVhdGVWaWRlb0NvbnRleHQoaWQsIGNvbnRleHQpIDogd3guY3JlYXRlVmlkZW9Db250ZXh0KGlkKTtcbn0pOyIsImltcG9ydCBjaG9vc2VWaWRlbyBmcm9tIFwiLi9jaG9vc2VWaWRlb1wiO1xuaW1wb3J0IGNyZWF0ZVZpZGVvQ29udGV4dCBmcm9tIFwiLi9jcmVhdGVWaWRlb0NvbnRleHRcIjtcbmltcG9ydCBjaG9vc2VNZWRpYSBmcm9tIFwiLi9jaG9vc2VNZWRpYVwiO1xuZXhwb3J0IHsgY2hvb3NlVmlkZW8sIGNyZWF0ZVZpZGVvQ29udGV4dCwgY2hvb3NlTWVkaWEgfTtcbmV4cG9ydCBkZWZhdWx0IHtcbiAgY2hvb3NlVmlkZW86IGNob29zZVZpZGVvLFxuICBjcmVhdGVWaWRlb0NvbnRleHQ6IGNyZWF0ZVZpZGVvQ29udGV4dCxcbiAgY2hvb3NlTWVkaWE6IGNob29zZU1lZGlhXG59OyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5DT05UQUlORVJfTkFNRSA9IHZvaWQgMDtcbnZhciBDT05UQUlORVJfTkFNRSA9IHtcbiAgV0VDSEFUOiAnd2VjaGF0TWluaVByb2dyYW0nLFxuICBBTElQQVk6ICdhbGlNaW5pQXBwJyxcbiAgQllURTogJ2J5dGVkYW5jZU1pY3JvQXBwJyxcbiAgV0VCOiAnd2ViJyxcbiAgQkFJRFU6ICdiYWlkdVNtYXJ0UHJvZ3JhbScsXG4gIEtXQUk6ICdrdWFpc2hvdU1pbmlQcm9ncmFtJ1xufTtcbmV4cG9ydHMuQ09OVEFJTkVSX05BTUUgPSBDT05UQUlORVJfTkFNRTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMucHJvbWlzaWZ5ID0gcHJvbWlzaWZ5O1xuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBwcm9taXNpZnkoYXBpKSB7XG4gIHJldHVybiBmdW5jdGlvbiAoYXJnKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKGZ1bmN0aW9uIChyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgIHZhciBwcm9taXNpZnlBcmcgPSBhcmc7XG4gICAgICBhcGkoX2V4dGVuZHMoe30sIHByb21pc2lmeUFyZywge1xuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiBzdWNjZXNzKHJlcykge1xuICAgICAgICAgIGlmIChwcm9taXNpZnlBcmcgJiYgdHlwZW9mIHByb21pc2lmeUFyZy5zdWNjZXNzID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuc3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TdWNjZXNzOiBmdW5jdGlvbiBvblN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uU3VjY2VzcyhyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlc29sdmUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgICBpZiAocHJvbWlzaWZ5QXJnICYmIHR5cGVvZiBwcm9taXNpZnlBcmcuZmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLmZhaWwocmVzKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZWplY3QocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25GYWlsOiBmdW5jdGlvbiBvbkZhaWwocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uRmFpbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgcHJvbWlzaWZ5QXJnLm9uRmFpbChyZXMpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHJlamVjdChyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gY29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLmNvbXBsZXRlID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBwcm9taXNpZnlBcmcuY29tcGxldGUocmVzKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0sXG4gICAgICAgIG9uQ29tcGxldGU6IGZ1bmN0aW9uIG9uQ29tcGxldGUocmVzKSB7XG4gICAgICAgICAgaWYgKHByb21pc2lmeUFyZyAmJiB0eXBlb2YgcHJvbWlzaWZ5QXJnLm9uQ29tcGxldGUgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHByb21pc2lmeUFyZy5vbkNvbXBsZXRlKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KSk7XG4gICAgfSk7XG4gIH07XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLnN0eWxlSW4gPSBleHBvcnRzLnN0eWxlT3V0ID0gdm9pZCAwO1xudmFyIF9leGNsdWRlZCA9IFtcIl9leHRcIl07XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxudmFyIHN0eWxlT3V0ID0gZnVuY3Rpb24gc3R5bGVPdXQob3V0cHV0LCBvcmlnaW5hbElucHV0LCBvcmlnaW5hbE91dHB1dCkge1xuICByZXR1cm4gX2V4dGVuZHMoe30sIG91dHB1dCwge1xuICAgIF9vcmlnaW5hbDoge1xuICAgICAgaW5wdXQ6IF9leHRlbmRzKHt9LCBvcmlnaW5hbElucHV0KSxcbiAgICAgIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDlr7nlhaXlj4Lov5vooYwgZm9ybWF0IOS5i+WQjueahOe7k+aenFxuICAgICAgb3V0cHV0OiBfZXh0ZW5kcyh7fSwgb3JpZ2luYWxPdXRwdXQpIC8vIOWunumZheiwg+eUqCBhcGkg5pa55rOV5pe25Lyg5YWl55qE5Y+C5pWwLiDov5Tlm57lgLwgZm9ybWF0IOS5i+WJjeeahOe7k+aenFxuXG4gICAgfVxuICB9KTtcbn07XG5cbmV4cG9ydHMuc3R5bGVPdXQgPSBzdHlsZU91dDtcblxudmFyIHN0eWxlSW4gPSBmdW5jdGlvbiBzdHlsZUluKG9wdGlvbnMsIGJhc2VOYW1lKSB7XG4gIHZhciBfcmVmID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgIF9yZWYkX2V4dCA9IF9yZWYuX2V4dCxcbiAgICAgIF9leHQgPSBfcmVmJF9leHQgPT09IHZvaWQgMCA/IHt9IDogX3JlZiRfZXh0LFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKF9yZWYsIF9leGNsdWRlZCk7XG5cbiAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXN0LCBfZXh0W2Jhc2VOYW1lXSB8fCB7fSk7XG59O1xuXG5leHBvcnRzLnN0eWxlSW4gPSBzdHlsZUluOyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5ub3JtYWxpemUgPSB2b2lkIDA7XG5cbnZhciBfcHJvbWlzaWZ5ID0gcmVxdWlyZShcIi4vX3V0aWxzL3Byb21pc2lmeVwiKTtcblxudmFyIF9zdHlsZU9wdGlvbnMgPSByZXF1aXJlKFwiLi9fdXRpbHMvc3R5bGVPcHRpb25zXCIpO1xuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG52YXIgbm9ybWFsaXplID0ge1xuICBjaG9vc2VWaWRlbzogZnVuY3Rpb24gY2hvb3NlVmlkZW8oYXBpLCBjb250YWluZXJOYW1lKSB7XG4gICAgdmFyIGZvcm1hdFJlc3BvbnNlID0gZnVuY3Rpb24gZm9ybWF0UmVzcG9uc2UocmVzKSB7XG4gICAgICByZXR1cm4gX2V4dGVuZHMoe30sIHJlcywge1xuICAgICAgICB0ZW1wRmlsZVBhdGg6IHJlcy50ZW1wRmlsZVBhdGggfHwgcmVzLmZpbGVQYXRoXG4gICAgICB9KTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChhcmdzKSB7XG4gICAgICBhcmdzID0gKDAsIF9zdHlsZU9wdGlvbnMuc3R5bGVJbikoYXJncywgY29udGFpbmVyTmFtZSk7XG4gICAgICByZXR1cm4gKDAsIF9wcm9taXNpZnkucHJvbWlzaWZ5KShhcGkpKF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgYXJncy5zdWNjZXNzICYmIGFyZ3Muc3VjY2Vzcyhmb3JtYXRSZXNwb25zZShyZXMpKTtcbiAgICAgICAgfSxcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uIGNvbXBsZXRlKHJlcykge1xuICAgICAgICAgIGFyZ3MuY29tcGxldGUgJiYgYXJncy5jb21wbGV0ZShyZXMpO1xuICAgICAgICB9XG4gICAgICB9KSkudGhlbihmb3JtYXRSZXNwb25zZSk7XG4gICAgfTtcbiAgfSxcbiAgY2hvb3NlTWVkaWE6IGZ1bmN0aW9uIGNob29zZU1lZGlhKGFwaSwgY29udGFpbmVyTmFtZSkge1xuICAgIHZhciBmb3JtYXRSZXNwb25zZSA9IGZ1bmN0aW9uIGZvcm1hdFJlc3BvbnNlKHJlcykge1xuICAgICAgcmV0dXJuIF9leHRlbmRzKHt9LCByZXMsIHtcbiAgICAgICAgdGVtcEZpbGVzOiAocmVzLnRlbXBGaWxlcyB8fCByZXMuZmlsZXMpLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgIHJldHVybiBfZXh0ZW5kcyh7fSwgaXRlbSwge1xuICAgICAgICAgICAgdGVtcEZpbGVQYXRoOiBpdGVtLnRlbXBGaWxlUGF0aCB8fCBpdGVtLnBhdGhcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSlcbiAgICAgIH0pO1xuICAgIH07XG5cbiAgICByZXR1cm4gZnVuY3Rpb24gKGFyZ3MpIHtcbiAgICAgIGlmIChhcmdzID09PSB2b2lkIDApIHtcbiAgICAgICAgYXJncyA9IHt9O1xuICAgICAgfVxuXG4gICAgICBhcmdzID0gKDAsIF9zdHlsZU9wdGlvbnMuc3R5bGVJbikoX2V4dGVuZHMoe1xuICAgICAgICBjb3VudDogOSxcbiAgICAgICAgc2l6ZVR5cGU6IFsnb3JpZ2luYWwnLCAnY29tcHJlc3NlZCddLFxuICAgICAgICBzb3VyY2VUeXBlOiBbJ2NhbWVyYScsICdhbGJ1bSddLFxuICAgICAgICBtZWRpYVR5cGU6IFsnaW1hZ2UnLCAndmlkZW8nXSxcbiAgICAgICAgbWF4RHVyYXRpb246IDYwXG4gICAgICB9LCBhcmdzKSwgY29udGFpbmVyTmFtZSk7XG4gICAgICByZXR1cm4gKDAsIF9wcm9taXNpZnkucHJvbWlzaWZ5KShhcGkpKF9leHRlbmRzKHt9LCBhcmdzLCB7XG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgICAgYXJncy5zdWNjZXNzICYmIGFyZ3Muc3VjY2Vzcyhmb3JtYXRSZXNwb25zZShyZXMpKTtcbiAgICAgICAgfSxcbiAgICAgICAgZmFpbDogZnVuY3Rpb24gZmFpbChyZXMpIHtcbiAgICAgICAgICBhcmdzLmZhaWwgJiYgYXJncy5mYWlsKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiBjb21wbGV0ZShyZXMpIHtcbiAgICAgICAgICBhcmdzLmNvbXBsZXRlICYmIGFyZ3MuY29tcGxldGUocmVzKTtcbiAgICAgICAgfVxuICAgICAgfSkpLnRoZW4oZm9ybWF0UmVzcG9uc2UpO1xuICAgIH07XG4gIH1cbn07XG5leHBvcnRzLm5vcm1hbGl6ZSA9IG5vcm1hbGl6ZTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxudmFyIF9jb25zdGFudCA9IHJlcXVpcmUoXCIuLi9fdXRpbHMvY29uc3RhbnRcIik7XG5cbnZhciBfY29tbW9uID0gcmVxdWlyZShcIi4uL2NvbW1vblwiKTtcblxuZnVuY3Rpb24gaW5wdXRDcmVhdGVBbmRBcHBlbmQobXVsdGlwbGUsIGFjY2VwdCkge1xuICB2YXIgaW5wdXRFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnSU5QVVQnKTtcbiAgaW5wdXRFbGVtZW50Lm5hbWUgPSAnZmlsZSc7XG4gIGlucHV0RWxlbWVudC5pZCA9IFwiaW5wdXQtXCIgKyBNYXRoLnJhbmRvbSgpICogMWU4O1xuICBpbnB1dEVsZW1lbnQudHlwZSA9ICdmaWxlJztcbiAgbXVsdGlwbGUgJiYgaW5wdXRFbGVtZW50LnNldEF0dHJpYnV0ZSgnbXVsdGlwbGUnLCAnbXVsdGlwbGUnKTtcbiAgaW5wdXRFbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7XG4gIGFjY2VwdCAmJiBpbnB1dEVsZW1lbnQuc2V0QXR0cmlidXRlKCdhY2NlcHQnLCBhY2NlcHQpO1xuICBkb2N1bWVudC5ib2R5LmFwcGVuZENoaWxkKGlucHV0RWxlbWVudCk7XG4gIHJldHVybiBpbnB1dEVsZW1lbnQ7XG59XG5cbnZhciBjaG9vc2VNZWRpYSA9IF9jb21tb24ubm9ybWFsaXplLmNob29zZU1lZGlhKGZ1bmN0aW9uIChhcmdzKSB7XG4gIGlmIChhcmdzID09PSB2b2lkIDApIHtcbiAgICBhcmdzID0ge307XG4gIH1cblxuICB2YXIgX2FyZ3MgPSBhcmdzLFxuICAgICAgX2FyZ3MkY291bnQgPSBfYXJncy5jb3VudCxcbiAgICAgIGNvdW50ID0gX2FyZ3MkY291bnQgPT09IHZvaWQgMCA/IDkgOiBfYXJncyRjb3VudCxcbiAgICAgIF9hcmdzJHN1Y2Nlc3MgPSBfYXJncy5zdWNjZXNzLFxuICAgICAgc3VjY2VzcyA9IF9hcmdzJHN1Y2Nlc3MgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX2FyZ3Mkc3VjY2VzcyxcbiAgICAgIF9hcmdzJGZhaWwgPSBfYXJncy5mYWlsLFxuICAgICAgZmFpbCA9IF9hcmdzJGZhaWwgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICgpIHt9IDogX2FyZ3MkZmFpbCxcbiAgICAgIF9hcmdzJGNvbXBsZXRlID0gX2FyZ3MuY29tcGxldGUsXG4gICAgICBjb21wbGV0ZSA9IF9hcmdzJGNvbXBsZXRlID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoKSB7fSA6IF9hcmdzJGNvbXBsZXRlO1xuXG4gIHRyeSB7XG4gICAgdmFyIGlucHV0RWxlbWVudCA9IGlucHV0Q3JlYXRlQW5kQXBwZW5kKGNvdW50ID4gMSwgYXJncy5hY2NlcHQpO1xuICAgIHZhciBmaWxlcyA9IFtdO1xuICAgIGlucHV0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCdjaGFuZ2UnLCBmdW5jdGlvbiAoZSkge1xuICAgICAgZmlsZXMgPSBlLnRhcmdldC5maWxlcyAmJiBBcnJheS5mcm9tKGUudGFyZ2V0LmZpbGVzKS5zbGljZSgwLCBjb3VudCk7XG4gICAgICB2YXIgcmVzID0ge1xuICAgICAgICB0ZW1wRmlsZXM6IGZpbGVzLm1hcChmdW5jdGlvbiAoZmlsZSkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0ZW1wRmlsZVBhdGg6IHdpbmRvdy5VUkwuY3JlYXRlT2JqZWN0VVJMKGZpbGUpLFxuICAgICAgICAgICAgc2l6ZTogZmlsZS5zaXplXG4gICAgICAgICAgfTtcbiAgICAgICAgfSksXG4gICAgICAgIGZpbGVzOiBmaWxlc1xuICAgICAgfTtcbiAgICAgIHN1Y2Nlc3MocmVzKTtcbiAgICAgIGNvbXBsZXRlKHJlcyk7XG4gICAgICBpbnB1dEVsZW1lbnQucmVtb3ZlICYmIGlucHV0RWxlbWVudC5yZW1vdmUoKTtcbiAgICB9LCBmYWxzZSk7XG4gICAgdmFyIE1vdXNlRXZlbnRzID0gZG9jdW1lbnQuY3JlYXRlRXZlbnQoJ01vdXNlRXZlbnRzJyk7XG4gICAgTW91c2VFdmVudHMuaW5pdEV2ZW50KCdjbGljaycsIHRydWUsIHRydWUpO1xuICAgIGlucHV0RWxlbWVudC5kaXNwYXRjaEV2ZW50KE1vdXNlRXZlbnRzKTtcbiAgfSBjYXRjaCAoZSkge1xuICAgIGZhaWwoZSk7XG4gICAgY29tcGxldGUoZSk7XG4gIH1cbn0sIF9jb25zdGFudC5DT05UQUlORVJfTkFNRS5XRUIpO1xuXG52YXIgX2RlZmF1bHQgPSBjaG9vc2VNZWRpYTtcbmV4cG9ydHMuZGVmYXVsdCA9IF9kZWZhdWx0OyIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIENTU1Byb3BlcnRpZXMgfSBmcm9tICdyYXgnO1xuaW50ZXJmYWNlIElQcm9wcyB7XG4gIGNvbXBvbmVudFN0YWNrOiBzdHJpbmc7XG4gIGVycm9yOiBFcnJvcjtcbn1cblxuY29uc3QgdG9UaXRsZSA9IChlcnJvcjogRXJyb3IpOiBzdHJpbmcgPT4ge1xuICByZXR1cm4gYCR7ZXJyb3IudG9TdHJpbmcoKX1gO1xufTtcblxuY29uc3Qgc3R5bGUgPSAoe1xuICBkaXNwbGF5OiAnZmxleCcsXG4gIGZsZXhEaXJlY3Rpb246ICdjb2x1bW4nLFxuICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgbWFyZ2luOiAnMTAwcHggMCcsXG4gIGNvbG9yOiAnI2VkMzEzMSdcbn0gYXMgQ1NTUHJvcGVydGllcyk7XG5cbmNvbnN0IEVycm9yQm91bmRhcnlGYWxsYmFjayA9ICh7XG4gIGVycm9yXG59OiBJUHJvcHMpID0+IHtcbiAgcmV0dXJuIDxkaXYgc3R5bGU9e3N0eWxlfSB0aXRsZT17dG9UaXRsZShlcnJvcil9PlxuICAgICAgPHN2ZyB2aWV3Qm94PVwiMCAwIDEwMjQgMTAyNFwiIHZlcnNpb249XCIxLjFcIiB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCIgcC1pZD1cIjg0M1wiIHdpZHRoPVwiNjBcIiBoZWlnaHQ9XCI2MFwiPlxuICAgICAgICA8cGF0aCBkPVwiTTEwMjQgNTEyQzEwMjQgMjI5LjIzIDc5NC43NyAwIDUxMiAwUzAgMjI5LjIzIDAgNTEyczIyOS4yMyA1MTIgNTEyIDUxMmMxMTcuNDEgMCAyMjguODI2LTM5LjY2OSAzMTguNzY4LTExMS4zMTMgMTAuNzktOC41OTUgMTIuNTY5LTI0LjMwOCAzLjk3NS0zNS4wOTctOC41OTQtMTAuNzg5LTI0LjMwOC0xMi41NjgtMzUuMDk3LTMuOTc0QzcxOC40NyA5MzguMjc3IDYxOC4wMDIgOTc0LjA0OSA1MTIgOTc0LjA0OSAyNTYuODE4IDk3NC4wNDkgNDkuOTUxIDc2Ny4xODIgNDkuOTUxIDUxMlMyNTYuODE4IDQ5Ljk1MSA1MTIgNDkuOTUxIDk3NC4wNDkgMjU2LjgxOCA5NzQuMDQ5IDUxMmMwIDg3LjQ5My0yNC4zMzQgMTcxLjMzNy02OS41NzggMjQzLjk2LTcuMjk0IDExLjcwOC0zLjcxNiAyNy4xMTIgNy45OTIgMzQuNDA1IDExLjcwNyA3LjI5NCAyNy4xMSAzLjcxNiAzNC40MDUtNy45OTFDOTk3LjAxNCA3MDEuODggMTAyNCA2MDguODk4IDEwMjQgNTEyelwiIHAtaWQ9XCI4NDRcIiBmaWxsPVwiI2NkY2RjZFwiIC8+XG4gICAgICAgIDxwYXRoIGQ9XCJNMzM3LjE3IDQ5OS41MTJjMzQuNDg1IDAgNjIuNDQtMjcuOTU1IDYyLjQ0LTYyLjQzOXMtMjcuOTU1LTYyLjQzOS02Mi40NC02Mi40MzljLTM0LjQ4MyAwLTYyLjQzOCAyNy45NTUtNjIuNDM4IDYyLjQ0IDAgMzQuNDgzIDI3Ljk1NSA2Mi40MzggNjIuNDM5IDYyLjQzOHogbTM3NC42MzUgMGMzNC40ODQgMCA2Mi40MzktMjcuOTU1IDYyLjQzOS02Mi40MzlzLTI3Ljk1NS02Mi40MzktNjIuNDQtNjIuNDM5Yy0zNC40ODMgMC02Mi40MzggMjcuOTU1LTYyLjQzOCA2Mi40NCAwIDM0LjQ4MyAyNy45NTUgNjIuNDM4IDYyLjQzOSA2Mi40Mzh6TTM1Mi43ODggNzA0Ljc4NWM0My4zNzctMzQuNzAyIDEwMC4zNjQtNTUuNDI1IDE3MS43LTU1LjQyNSA3MS4zMzYgMCAxMjguMzIyIDIwLjcyMyAxNzEuNyA1NS40MjUgMjYuNTEzIDIxLjIxIDQyLjY5NSA0Mi43ODYgNTAuNDQ0IDU4LjI4NCA2LjE2OCAxMi4zMzcgMS4xNjggMjcuMzQtMTEuMTcgMzMuNTA4LTEyLjMzNyA2LjE2OS0yNy4zNCAxLjE2OC0zMy41MDgtMTEuMTctMC45MTgtMS44MzQtMy40NjItNi4wMjQtNy43ODgtMTEuNzkzLTcuNTY0LTEwLjA4NC0xNy4yMzktMjAuMjY5LTI5LjE4My0yOS44MjQtMzQuNjcxLTI3LjczNy04MC43MS00NC40NzgtMTQwLjQ5NS00NC40NzgtNTkuNzg2IDAtMTA1LjgyNCAxNi43NC0xNDAuNDk2IDQ0LjQ3OC0xMS45NDQgOS41NTUtMjEuNjE5IDE5Ljc0LTI5LjE4MiAyOS44MjQtNC4zMjcgNS43NjktNi44NyA5Ljk1OS03Ljc4OCAxMS43OTQtNi4xNjkgMTIuMzM3LTIxLjE3MSAxNy4zMzgtMzMuNTA5IDExLjE3LTEyLjMzNy02LjE3LTE3LjMzOC0yMS4xNzItMTEuMTY5LTMzLjUwOSA3Ljc1LTE1LjQ5OCAyMy45MzEtMzcuMDc0IDUwLjQ0NC01OC4yODR6XCIgcC1pZD1cIjg0NVwiIGZpbGw9XCIjY2RjZGNkXCIgLz5cbiAgICAgIDwvc3ZnPlxuICAgICAgPGgzPk9vcHMhIFNvbWV0aGluZyB3ZW50IHdyb25nLjwvaDM+XG4gICAgPC9kaXY+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgRXJyb3JCb3VuZGFyeUZhbGxiYWNrOyIsIi8vIHJlZmVyZW5jZe+8miBodHRwczovL2dpdGh1Yi5jb20vYnZhdWdobi9yZWFjdC1lcnJvci1ib3VuZGFyeVxuXG4vKiBlc2xpbnQgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LW1lbWJlci1hY2Nlc3NpYmlsaXR5OjAgKi9cbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIFJheE5vZGUsIENvbXBvbmVudFR5cGUsIENvbXBvbmVudCB9IGZyb20gJ3JheCc7XG5pbXBvcnQgRXJyb3JCb3VuZGFyeUZhbGxiYWNrIGZyb20gJy4vRXJyb3JCb3VuZGFyeUZhbGxiYWNrJztcbmludGVyZmFjZSBJUHJvcHMge1xuICBjaGlsZHJlbj86IFJheE5vZGU7XG4gIEZhbGxiYWNrPzogQ29tcG9uZW50VHlwZTxhbnk+O1xuICBvbkVycm9yPzogRnVuY3Rpb247XG59XG5pbnRlcmZhY2UgSVN0YXRlIHtcbiAgZXJyb3I/OiBFcnJvciB8IG51bGw7XG59XG5cbmNsYXNzIEVycm9yQm91bmRhcnkgZXh0ZW5kcyBDb21wb25lbnQ8SVByb3BzLCBJU3RhdGU+IHtcbiAgc3RhdGljIGRlZmF1bHRQcm9wczogSVByb3BzID0ge1xuICAgIEZhbGxiYWNrOiBFcnJvckJvdW5kYXJ5RmFsbGJhY2tcbiAgfTtcblxuICBjb25zdHJ1Y3Rvcihwcm9wcykge1xuICAgIHN1cGVyKHByb3BzKTtcbiAgICB0aGlzLnN0YXRlID0ge1xuICAgICAgZXJyb3I6IG51bGxcbiAgICB9O1xuICB9XG5cbiAgY29tcG9uZW50RGlkQ2F0Y2goZXJyb3I6IEVycm9yKTogdm9pZCB7XG4gICAgY29uc3Qge1xuICAgICAgb25FcnJvclxuICAgIH0gPSB0aGlzLnByb3BzO1xuXG4gICAgaWYgKHR5cGVvZiBvbkVycm9yID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0cnkge1xuICAgICAgICAvLyBjYW7igJl0IHJlcHJvZHVjZSBtaXNzaW5nIGluZm8gaW4gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuXG4gICAgICAgIG9uRXJyb3IuY2FsbCh0aGlzLCBlcnJvcik7XG4gICAgICB9IGNhdGNoIChpZ25vcmVkRXJyb3IpIHsvLyBpZ25vcmVkIGVycm9yXG4gICAgICB9XG4gICAgfSAvLyBVcGRhdGUgc3RhdGUgc28gdGhlIG5leHQgcmVuZGVyIHdpbGwgc2hvdyB0aGUgZmFsbGJhY2sgVUkuXG5cblxuICAgIHRoaXMuc2V0U3RhdGUoe1xuICAgICAgZXJyb3JcbiAgICB9KTtcbiAgfVxuXG4gIHJlbmRlcigpIHtcbiAgICBjb25zdCB7XG4gICAgICBjaGlsZHJlbixcbiAgICAgIEZhbGxiYWNrXG4gICAgfSA9IHRoaXMucHJvcHM7XG4gICAgY29uc3Qge1xuICAgICAgZXJyb3JcbiAgICB9ID0gdGhpcy5zdGF0ZTsgLy8gcmVuZGVyIGZhbGxiYWNrIFVJIGlmIHRoZXJlIGlzIGVycm9yXG5cbiAgICBpZiAoZXJyb3IgIT09IG51bGwgJiYgdHlwZW9mIEZhbGxiYWNrID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gPEZhbGxiYWNrIGVycm9yPXtlcnJvcn0gLz47XG4gICAgfVxuXG4gICAgcmV0dXJuIGNoaWxkcmVuIHx8IG51bGw7XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBFcnJvckJvdW5kYXJ5OyIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyYXgnO1xuY29uc3QgaXNXZWV4ID0gZmFsc2U7XG5pbXBvcnQgJy4vaW5kZXguY3NzJztcbmNvbnN0IHNhZmVBcmVhSW5zZXRCb3R0b20gPSBnZXRTYWZlQXJlYUluc2V0Qm90dG9tKCk7XG4vKipcbiAqIEdldCB0aGUgc2FmZSBhcmVhIGluc2V0IGJvdHRvbVxuICogQHJldHVybiB7bnVtYmVyfSBib3R0b20gaW4gcnB4XG4gKi9cblxuZnVuY3Rpb24gZ2V0U2FmZUFyZWFJbnNldEJvdHRvbSgpIHtcbiAgdHJ5IHtcbiAgICBsZXQgc2NyZWVuSGVpZ2h0ID0gKHdpbmRvdyBhcyBhbnkpLnNjcmVlbi5oZWlnaHQ7XG5cbiAgICBpZiAoaXNXZWV4KSB7XG4gICAgICAvLyBXM0M6IHdpbmRvdy5zY3JlZW4uaGVpZ2h0IHJldHVybiB0aGUgaGVpZ2h0IGluIENTUyBwaXhlbHNcbiAgICAgIC8vIFdFRVg6IHdpbmRvdy5zY3JlZW4uaGVpZ2h0IHJldHVybiB0aGUgaGVpZ2h0IGluIGRldmljZSBpbmRlcGVuZGVudCBwaXhlbHNcbiAgICAgIHNjcmVlbkhlaWdodCA9ICh3aW5kb3cgYXMgYW55KS5zY3JlZW4uaGVpZ2h0IC8gKHdpbmRvdyBhcyBhbnkpLmRldmljZVBpeGVsUmF0aW87XG4gICAgfSAvLyAyMDE4IGlQaG9uZVg6IDgxMiDDlyAzNzUsIGlQaG9uZVhTOiA4MTIgw5cgMzc1LCBpUGhvbmUgWFMgTWF4OiA4OTYgw5cgNDE0LCBpUGhvbmUgWFI6IDg5NiDDlyA0MTRcbiAgICAvLyAyMDE5IGlQaG9uZTExOiA4OTYgeCA0MTQsIGlQaG9uZTExIFBybzogODEyIMOXIDM3NSwgaVBob25lMTEgUHJvIE1heDogODk2IMOXIDQxNFxuICAgIC8vIElzIGlQaG9uZSBhbmQgcG9pbnRzIG1pbi1oZWlnaHQgaXMgODEyIGNhbiBiZSBpZGVudGlmaWVkIGFzIHRoZSAyMDE4IGFuZCAyMDE5IGlQaG9uZSBtb2RlbHMuXG5cblxuICAgIGlmICgvaXBob25lL2dpLnRlc3QoKHdpbmRvdyBhcyBhbnkpLm5hdmlnYXRvci51c2VyQWdlbnQpICYmIHNjcmVlbkhlaWdodCA+PSA4MTIpIHtcbiAgICAgIC8vIEFkYXB0IGJvdHRvbSBcIkhvbWUgSW5kaWNhdG9yXCIuXG4gICAgICByZXR1cm4gMzQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiAwO1xuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHJldHVybiAwO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFRhYkJhcihwcm9wcykge1xuICBjb25zdCB7XG4gICAgY29uZmlnLFxuICAgIG9uQ2xpY2ssXG4gICAgY3VycmVudFBhZ2VOYW1lXG4gIH0gPSBwcm9wcztcbiAgY29uc3Qge1xuICAgIGJhY2tncm91bmRDb2xvciA9ICcjRkZGJyxcbiAgICBpdGVtcyA9IFtdLFxuICAgIHNlbGVjdGVkQ29sb3IgPSAnIzMzMycsXG4gICAgdGV4dENvbG9yID0gJyM2NjYnXG4gIH0gPSBjb25maWcgfHwge307XG4gIGNvbnN0IFtzZWxlY3RlZE5hbWUsIHNldFNlbGVjdGVkTmFtZV0gPSB1c2VTdGF0ZShjdXJyZW50UGFnZU5hbWUpO1xuXG4gIGNvbnN0IGhhbmRsZVRhYkl0ZW1DbGljayA9IGl0ZW0gPT4ge1xuICAgIHNldFNlbGVjdGVkTmFtZShpdGVtLnBhZ2VOYW1lKTtcbiAgICBvbkNsaWNrKGl0ZW0pO1xuICB9O1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgc2V0U2VsZWN0ZWROYW1lKGN1cnJlbnRQYWdlTmFtZSk7XG4gIH0sIFtjdXJyZW50UGFnZU5hbWVdKTsgLy8gVGFiQmFyIGRlZmF1bHQgaGVpZ2h0IGlzIDk4cnB4XG5cbiAgcmV0dXJuIDxkaXYgY2xhc3NOYW1lPVwicmF4LWFwcC10YWItYmFyXCIgc3R5bGU9e3tcbiAgICBiYWNrZ3JvdW5kQ29sb3IsXG4gICAgaGVpZ2h0OiA5OCArIHNhZmVBcmVhSW5zZXRCb3R0b21cbiAgfX0+XG4gICAgICB7aXRlbXMubWFwKChpdGVtLCBpbmRleCkgPT4ge1xuICAgICAgY29uc3QgaXRlbVRleHRDb2xvciA9IGl0ZW0udGV4dENvbG9yIHx8IHRleHRDb2xvcjtcbiAgICAgIGNvbnN0IGl0ZW1TZWxlY3RlZENvbG9yID0gaXRlbS5zZWxlY3RlZENvbG9yIHx8IHNlbGVjdGVkQ29sb3I7XG4gICAgICBjb25zdCBzZWxlY3RlZCA9IHNlbGVjdGVkTmFtZSA9PT0gaXRlbS5wYWdlTmFtZTtcblxuICAgICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnICYmIGl0ZW0ubmFtZSkge1xuICAgICAgICBjb25zb2xlLmVycm9yKCdQbGVhc2UgdXNlIHRleHQgZmllbGQgaW5zdGVhZCBvZiBuYW1lIGluIHRhYkJhciBpdGVtcyBjb25maWchJyk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiA8ZGl2IGtleT17YHRhYi0ke2luZGV4fWB9IGNsYXNzTmFtZT1cInJheC1hcHAtdGFiLWJhci1pdGVtXCIgc3R5bGU9e3tcbiAgICAgICAgaGVpZ2h0OiA5OCArIHNhZmVBcmVhSW5zZXRCb3R0b20sXG4gICAgICAgIHBhZGRpbmdCb3R0b206IHNhZmVBcmVhSW5zZXRCb3R0b21cbiAgICAgIH19IG9uQ2xpY2s9eygpID0+IGhhbmRsZVRhYkl0ZW1DbGljayhpdGVtKX0+XG4gICAgICAgICAgICA8aW1nIHgtaWY9e2l0ZW0uYWN0aXZlSWNvbiAmJiBzZWxlY3RlZH0gY2xhc3NOYW1lPVwicmF4LWFwcC10YWItYmFyLWl0ZW0taW1nXCIgYWx0PVwiXCIgc3JjPXtpdGVtLmFjdGl2ZUljb259IC8+XG4gICAgICAgICAgICA8aW1nIHgtaWY9e2l0ZW0uaWNvbiAmJiAhc2VsZWN0ZWR9IGNsYXNzTmFtZT1cInJheC1hcHAtdGFiLWJhci1pdGVtLWltZ1wiIGFsdD1cIlwiIHNyYz17aXRlbS5pY29ufSAvPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwicmF4LWFwcC10YWItYmFyLWl0ZW0tdGV4dFwiIHN0eWxlPXt7XG4gICAgICAgICAgY29sb3I6IHNlbGVjdGVkID8gaXRlbVNlbGVjdGVkQ29sb3IgOiBpdGVtVGV4dENvbG9yXG4gICAgICAgIH19PlxuICAgICAgICAgICAgICB7aXRlbS50ZXh0IHx8IGl0ZW0ubmFtZX1cbiAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj47XG4gICAgfSl9XG4gICAgPC9kaXY+O1xufSIsImxldCBhcHBDb25maWc7XG5cbmZ1bmN0aW9uIHNldEFwcENvbmZpZyhjb25maWcpIHtcbiAgYXBwQ29uZmlnID0gY29uZmlnO1xufVxuXG5mdW5jdGlvbiBnZXRBcHBDb25maWcoKSB7XG4gIHJldHVybiBhcHBDb25maWc7XG59XG5cbmV4cG9ydCB7IHNldEFwcENvbmZpZywgZ2V0QXBwQ29uZmlnIH07IiwiY29uc3QgdXNlckNvbmZpZyA9IHtcbiAgZGVmYXVsdDoge31cbn07XG5pbnRlcmZhY2UgQ29uZmlnIHtcbiAgcmVhZG9ubHkgW3Byb3BOYW1lOiBzdHJpbmddOiBhbnk7XG59XG5jb25zdCBjb25maWc6IENvbmZpZyA9IHsgLi4uKHVzZXJDb25maWcuZGVmYXVsdCB8fCB7fSksXG4gIC8vIHdlYnBhY2sgd2lsbCBhdXRvbWF0aWNhbGx5IGNvbnZlcnQgZ2xvYmFsIHRvIHdpbmRvdyB3aGVuIHRhcmdldCBpcyB3ZWJcbiAgLi4uKHVzZXJDb25maWdbKGdsb2JhbCBhcyBhbnkpLl9fYXBwX21vZGVfXyB8fCBwcm9jZXNzLmVudi5BUFBfTU9ERV0gfHwge30pXG59O1xuY29uc3QgQVBQX01PREUgPSAoZ2xvYmFsIGFzIGFueSkuX19hcHBfbW9kZV9fIHx8IHByb2Nlc3MuZW52LkFQUF9NT0RFO1xuZXhwb3J0IHsgY29uZmlnLCBBUFBfTU9ERSB9OyIsImltcG9ydCB7IGNvbmZpZywgQVBQX01PREUgfSBmcm9tICcuL2NvbmZpZyc7XG5leHBvcnQgeyBjb25maWcsIEFQUF9NT0RFIH07XG5leHBvcnQgKiBmcm9tICcuL3J1bkFwcCc7XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJzsiLCJpbnRlcmZhY2UgSVJ1bnRpbWU8VD4ge1xuICBsb2FkTW9kdWxlOiAobW9kdWxlOiB7XG4gICAgZGVmYXVsdDogVDtcbiAgfSB8IFQpID0+IHZvaWQ7XG59XG5cbmZ1bmN0aW9uIGxvYWRSdW50aW1lTW9kdWxlcyhydW50aW1lOiBJUnVudGltZTxGdW5jdGlvbj4pIHtcbiAgcnVudGltZS5sb2FkTW9kdWxlKHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9ub2RlX21vZHVsZXMvYnVpbGQtcGx1Z2luLWFwcC1jb3JlL2xpYi9ydW50aW1lLmpzJykpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBsb2FkUnVudGltZU1vZHVsZXM7IiwiaW1wb3J0IHsgSUFwcENvbmZpZyB9IGZyb20gJy4vdHlwZXMnO1xuXG5mdW5jdGlvbiBsb2FkU3RhdGljTW9kdWxlcyhhcHBDb25maWc6IElBcHBDb25maWcpIHt9XG5cbmV4cG9ydCBkZWZhdWx0IGxvYWRTdGF0aWNNb2R1bGVzOyIsImltcG9ydCB7IHJlbmRlciB9IGZyb20gJ3JheCc7XG5pbXBvcnQgRHJpdmVyVW5pdmVyc2FsIGZyb20gJ2RyaXZlci11bml2ZXJzYWwnO1xuZXhwb3J0IGZ1bmN0aW9uIG1vdW50KGFwcEluc3RhbmNlLCByb290RWwpIHtcbiAgcmV0dXJuIHJlbmRlcihhcHBJbnN0YW5jZSwgcm9vdEVsLCB7XG4gICAgZHJpdmVyOiBEcml2ZXJVbml2ZXJzYWxcbiAgfSk7XG59IC8vIEB0cy1pZ25vcmVcblxuZXhwb3J0IGZ1bmN0aW9uIHVubW91bnQoYXBwSW5zdGFuY2UsIHJvb3RFbCkge1xuICByZXR1cm4gYXBwSW5zdGFuY2UuX2ludGVybmFsLnVubW91bnRDb21wb25lbnQuYmluZChhcHBJbnN0YW5jZS5faW50ZXJuYWwpO1xufSIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZUVmZmVjdCwgQ29tcG9uZW50IH0gZnJvbSAncmF4JztcbmNvbnN0IGlzV2ViID0gZmFsc2U7XG5jb25zdCBpc0t1YWlTaG91TWluaVByb2dyYW0gPSBmYWxzZTtcbmNvbnN0IGlzQmFpZHVTbWFydFByb2dyYW0gPSBmYWxzZTtcbmNvbnN0IGlzQnl0ZURhbmNlTWljcm9BcHAgPSBmYWxzZTtcbmNvbnN0IGlzV2VDaGF0TWluaVByb2dyYW0gPSBmYWxzZTtcbmNvbnN0IGlzTWluaUFwcCA9IHRydWU7XG5pbXBvcnQgbWluaWFwcFJlbmRlcmVyIGZyb20gJ21pbmlhcHAtcmVuZGVyZXInO1xuaW1wb3J0IGNyZWF0ZVNoYXJlQVBJLCB7IGhpc3RvcnkgfSBmcm9tICdjcmVhdGUtYXBwLXNoYXJlZCc7XG5pbXBvcnQgeyBJQXBwQ29uZmlnLCBJQnVpbGRDb25maWcgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBUYWJCYXIgZnJvbSAnLi9UYWJCYXInO1xuaW1wb3J0IHJheEFwcFJlbmRlcmVyLCB7IGdldEluaXRpYWxEYXRhIH0gZnJvbSAncmF4LWFwcC1yZW5kZXJlcic7XG5pbXBvcnQgeyBjcmVhdGVXaXRoUm91dGVyIH0gZnJvbSAnY3JlYXRlLXVzZS1yb3V0ZXInO1xuY29uc3QgZGVmYXVsdFdpdGhSb3V0ZXIgPSBjcmVhdGVXaXRoUm91dGVyKHtcbiAgY3JlYXRlRWxlbWVudFxufSk7XG5pbXBvcnQgbG9hZFJ1bnRpbWVNb2R1bGVzIGZyb20gJy4vbG9hZFJ1bnRpbWVNb2R1bGVzJztcbmltcG9ydCBsb2FkU3RhdGljTW9kdWxlcyBmcm9tICcuL2xvYWRTdGF0aWNNb2R1bGVzJztcbmltcG9ydCBkZWZhdWx0U3RhdGljQ29uZmlnIGZyb20gJy4vc3RhdGljQ29uZmlnJztcbmltcG9ydCB7IHNldEFwcENvbmZpZyB9IGZyb20gJy4vYXBwQ29uZmlnJztcbmltcG9ydCB7IG1vdW50LCB1bm1vdW50IH0gZnJvbSAnLi9yZW5kZXInO1xuaW1wb3J0IEVycm9yQm91bmRhcnkgZnJvbSAnLi9FcnJvckJvdW5kYXJ5JztcbmNvbnN0IGJ1aWxkQ29uZmlnOiBJQnVpbGRDb25maWcgPSB7XG4gIHdlYjoge1xuICAgIGRvY3R5cGU6ICc8IURPQ1RZUEUgaHRtbD4nXG4gIH1cbn07XG5jb25zdCB7XG4gIGNyZWF0ZUJhc2VBcHAsXG4gIHdpdGhSb3V0ZXIsXG4gIGNyZWF0ZUhpc3RvcnksXG4gIGdldEhpc3RvcnksXG4gIGVtaXRMaWZlQ3ljbGVzLFxuICB1c2VQYWdlU2hvdyxcbiAgdXNlUGFnZUhpZGUsXG4gIHdpdGhQYWdlTGlmZUN5Y2xlLFxuICBwYXRoUmVkaXJlY3QsXG4gIHJlZ2lzdGVyTmF0aXZlRXZlbnRMaXN0ZW5lcnMsXG4gIGFkZE5hdGl2ZUV2ZW50TGlzdGVuZXIsXG4gIHJlbW92ZU5hdGl2ZUV2ZW50TGlzdGVuZXIsXG4gIGdldFNlYXJjaFBhcmFtc1xufSA9IGNyZWF0ZVNoYXJlQVBJKHtcbiAgY3JlYXRlRWxlbWVudCxcbiAgdXNlRWZmZWN0LFxuICB3aXRoUm91dGVyOiBkZWZhdWx0V2l0aFJvdXRlcixcbiAgaW5pdEhpc3Rvcnk6IGJ1aWxkQ29uZmlnLnJvdXRlciAhPT0gZmFsc2Vcbn0sIGxvYWRSdW50aW1lTW9kdWxlcyk7XG5leHBvcnQgZnVuY3Rpb24gcnVuQXBwKGFwcENvbmZpZz86IElBcHBDb25maWcsIHN0YXRpY0NvbmZpZz86IGFueSkge1xuICBsZXQgcmVuZGVyZXI7XG4gIHJlbmRlcmVyID0gcmF4QXBwUmVuZGVyZXI7XG5cbiAgaWYgKChpc01pbmlBcHAgfHwgaXNXZUNoYXRNaW5pUHJvZ3JhbSB8fCBpc0J5dGVEYW5jZU1pY3JvQXBwIHx8IGlzQmFpZHVTbWFydFByb2dyYW0gfHwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSAmJiAhaXNXZWIpIHtcbiAgICByZW5kZXJlciA9IG1pbmlhcHBSZW5kZXJlcjtcbiAgfVxuXG4gIHJlbmRlcmVyKHtcbiAgICBhcHBDb25maWcsXG4gICAgc3RhdGljQ29uZmlnOiBzdGF0aWNDb25maWcgfHwgZGVmYXVsdFN0YXRpY0NvbmZpZyxcbiAgICBidWlsZENvbmZpZyxcbiAgICBzZXRBcHBDb25maWcsXG4gICAgY3JlYXRlQmFzZUFwcCxcbiAgICBjcmVhdGVIaXN0b3J5LFxuICAgIGdldEhpc3RvcnksXG4gICAgZW1pdExpZmVDeWNsZXMsXG4gICAgcGF0aFJlZGlyZWN0LFxuICAgIGxvYWRTdGF0aWNNb2R1bGVzLFxuICAgIEVycm9yQm91bmRhcnksXG4gICAgVGFiQmFyXG4gIH0sIHtcbiAgICBjcmVhdGVFbGVtZW50LFxuICAgIG1vdW50LFxuICAgIHVubW91bnQsXG4gICAgQ29tcG9uZW50XG4gIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUFwcChhcHBDb25maWcsIHN0YXRpY0NvbmZpZz86IGFueSkge1xuICBjb25zb2xlLndhcm4oJ0RldGVjdGVkIHRoYXQgeW91IGFyZSB1c2luZyBjcmVhdGVBcHAsIHBsZWFzZSB1c2UgcnVuQXBwIG1ldGhvZCwgVmlzaXQgaHR0cHM6Ly9pY2Uud29yay9kb2NzL2d1aWRlL2Jhc2ljL2FwaS4nKTtcbiAgcnVuQXBwKGFwcENvbmZpZywgc3RhdGljQ29uZmlnKTtcbn0gLy8gUHVibGljIEFQSVxuXG5leHBvcnQgeyAvLyByb3V0ZXIgYXBpXG53aXRoUm91dGVyLCBoaXN0b3J5LCBnZXRIaXN0b3J5LCBnZXRTZWFyY2hQYXJhbXMsIGdldEluaXRpYWxEYXRhLCAvLyBMaWZlQ3ljbGVzIGFwaVxudXNlUGFnZVNob3csIHVzZVBhZ2VIaWRlLCB3aXRoUGFnZUxpZmVDeWNsZSwgLy8gZXZlbnRzIGFwaVxucmVnaXN0ZXJOYXRpdmVFdmVudExpc3RlbmVycywgYWRkTmF0aXZlRXZlbnRMaXN0ZW5lciwgcmVtb3ZlTmF0aXZlRXZlbnRMaXN0ZW5lciwgRXJyb3JCb3VuZGFyeSB9OyAvLyBQcml2YXRlIEFQSVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIGNyZWF0ZUJhc2VBcHAsXG4gIGVtaXRMaWZlQ3ljbGVzXG59OyIsImxldCBzdGF0aWNDb25maWcgPSB7fTtcblxudHJ5IHtcbiAgc3RhdGljQ29uZmlnID0gcmVxdWlyZSgnLi4vc3JjL2FwcC5qc29uJyk7XG59IGNhdGNoIChlcnJvcikgey8vIGlnbm9yZSBlcnJvclxufSAvLyBAdHMtaWdub3JlXG5cblxuZXhwb3J0IGRlZmF1bHQgc3RhdGljQ29uZmlnLl9fZXNNb2R1bGUgPyBzdGF0aWNDb25maWcuZGVmYXVsdCA6IHN0YXRpY0NvbmZpZzsiLCJmdW5jdGlvbiBfZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHZhbHVlKSB7XG4gIGlmIChrZXkgaW4gb2JqKSB7XG4gICAgT2JqZWN0LmRlZmluZVByb3BlcnR5KG9iaiwga2V5LCB7XG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBlbnVtZXJhYmxlOiB0cnVlLFxuICAgICAgY29uZmlndXJhYmxlOiB0cnVlLFxuICAgICAgd3JpdGFibGU6IHRydWVcbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBvYmpba2V5XSA9IHZhbHVlO1xuICB9XG5cbiAgcmV0dXJuIG9iajtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfZGVmaW5lUHJvcGVydHk7XG5tb2R1bGUuZXhwb3J0c1tcImRlZmF1bHRcIl0gPSBtb2R1bGUuZXhwb3J0cywgbW9kdWxlLmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7IiwiZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gX2V4dGVuZHMoKSB7XG4gIF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgIHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07XG5cbiAgICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHtcbiAgICAgICAgICB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldDtcbiAgfTtcblxuICByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn0iLCJmdW5jdGlvbiBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KG9iaikge1xuICByZXR1cm4gb2JqICYmIG9iai5fX2VzTW9kdWxlID8gb2JqIDoge1xuICAgIFwiZGVmYXVsdFwiOiBvYmpcbiAgfTtcbn1cblxubW9kdWxlLmV4cG9ydHMgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0O1xubW9kdWxlLmV4cG9ydHNbXCJkZWZhdWx0XCJdID0gbW9kdWxlLmV4cG9ydHMsIG1vZHVsZS5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlOyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZShcInJlZ2VuZXJhdG9yLXJ1bnRpbWVcIik7XG4iLCIhZnVuY3Rpb24oZSxyKXtcIm9iamVjdFwiPT10eXBlb2YgZXhwb3J0cyYmXCJ1bmRlZmluZWRcIiE9dHlwZW9mIG1vZHVsZT9yKGV4cG9ydHMpOlwiZnVuY3Rpb25cIj09dHlwZW9mIGRlZmluZSYmZGVmaW5lLmFtZD9kZWZpbmUoW1wiZXhwb3J0c1wiXSxyKTpyKChlPWV8fHNlbGYpW1wiYmFiZWwtcnVudGltZS1qc3gtcGx1c1wiXT17fSl9KHRoaXMsZnVuY3Rpb24oZSl7XCJ1c2Ugc3RyaWN0XCI7dmFyIG49e307dmFyIGw9e30uaGFzT3duUHJvcGVydHk7ZS4kc2xvdD1mdW5jdGlvbihlKXt2YXIgcj1lLiRzbG90cyxuPWUubmFtZSx0PWZ1bmN0aW9uKGUscil7aWYobnVsbD09ZSlyZXR1cm57fTt2YXIgbix0LG89e30saT1PYmplY3Qua2V5cyhlKTtmb3IodD0wO3Q8aS5sZW5ndGg7dCsrKW49aVt0XSwwPD1yLmluZGV4T2Yobil8fChvW25dPWVbbl0pO3JldHVybiBvfShlLFtcIiRzbG90c1wiLFwibmFtZVwiXSksbz1yP3Jbbl06bnVsbDtyZXR1cm5cImZ1bmN0aW9uXCI9PXR5cGVvZiBvP28odCk6bnVsbH0sZS5jbGFzc25hbWVzPWZ1bmN0aW9uIGUoKXtmb3IodmFyIHI9W10sbj0wO248YXJndW1lbnRzLmxlbmd0aDtuKyspe3ZhciB0PWFyZ3VtZW50c1tuXTtpZih0KXt2YXIgbz10eXBlb2YgdDtpZihcInN0cmluZ1wiPT1vfHxcIm51bWJlclwiPT1vKXIucHVzaCh0KTtlbHNlIGlmKEFycmF5LmlzQXJyYXkodCkmJnQubGVuZ3RoKXt2YXIgaT1lLmFwcGx5KG51bGwsdCk7aSYmci5wdXNoKGkpfWVsc2UgaWYoXCJvYmplY3RcIj09bylmb3IodmFyIGYgaW4gdClsLmNhbGwodCxmKSYmdFtmXSYmci5wdXNoKGYpfX1yZXR1cm4gci5qb2luKFwiIFwiKX0sZS5jcmVhdGVDb25kaXRpb249ZnVuY3Rpb24oZSl7aWYoQXJyYXkuaXNBcnJheShlKSlmb3IodmFyIHI9MCxuPWUubGVuZ3RoO3I8bjtyKyspe3ZhciB0PWVbcl0sbz10WzBdLGk9dFsxXTtpZihvKCkpcmV0dXJuIGkoKX1yZXR1cm4gbnVsbH0sZS5jcmVhdGVKU1hNZW1vPWZ1bmN0aW9uKGUscil7cmV0dXJuIG4uaGFzT3duUHJvcGVydHkocik/bltyXTpuW3JdPVwiZnVuY3Rpb25cIj09dHlwZW9mIGU/ZSgpOmV9LGUuY3JlYXRlTGlzdD1mdW5jdGlvbihlLHIpe3ZhciBuLHQsbyxpLGYsbDtpZihBcnJheS5pc0FycmF5KGUpfHxcInN0cmluZ1wiPT10eXBlb2YgZSlmb3Iobj1uZXcgQXJyYXkoZS5sZW5ndGgpLHQ9MCxvPWUubGVuZ3RoO3Q8bzt0Kyspblt0XT1yLmNhbGwodGhpcyxlW3RdLHQpO2Vsc2UgaWYoXCJudW1iZXJcIj09dHlwZW9mIGUpZm9yKG49bmV3IEFycmF5KGUpLHQ9MDt0PGU7dCsrKW5bdF09ci5jYWxsKHRoaXMsdCsxLHQpO2Vsc2UgaWYobD1lLFwiW29iamVjdCBPYmplY3RdXCI9PT17fS50b1N0cmluZy5jYWxsKGwpKWZvcihpPU9iamVjdC5rZXlzKGUpLG49bmV3IEFycmF5KGkubGVuZ3RoKSx0PTAsbz1pLmxlbmd0aDt0PG87dCsrKWY9aVt0XSxuW3RdPXIuY2FsbCh0aGlzLGVbZl0sZix0KTtyZXR1cm4gbn0sT2JqZWN0LmRlZmluZVByb3BlcnR5KGUsXCJfX2VzTW9kdWxlXCIse3ZhbHVlOiEwfSl9KTtcbiIsIm1vZHVsZS5leHBvcnRzID0geyBcImRlZmF1bHRcIjogcmVxdWlyZShcImNvcmUtanMvbGlicmFyeS9mbi9vYmplY3QvYXNzaWduXCIpLCBfX2VzTW9kdWxlOiB0cnVlIH07IiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5cbnZhciBfYXNzaWduID0gcmVxdWlyZShcIi4uL2NvcmUtanMvb2JqZWN0L2Fzc2lnblwiKTtcblxudmFyIF9hc3NpZ24yID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChfYXNzaWduKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxuZXhwb3J0cy5kZWZhdWx0ID0gX2Fzc2lnbjIuZGVmYXVsdCB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG4gICAgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTtcblxuICAgIGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHtcbiAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7XG4gICAgICAgIHRhcmdldFtrZXldID0gc291cmNlW2tleV07XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRhcmdldDtcbn07IiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIG1vZHVsZSA9IGZ1bmN0aW9uIChfYSkge1xuICAgIHZhciBhZGRQcm92aWRlciA9IF9hLmFkZFByb3ZpZGVyLCBhcHBDb25maWcgPSBfYS5hcHBDb25maWcsIHdyYXBwZXJSb3V0ZUNvbXBvbmVudCA9IF9hLndyYXBwZXJSb3V0ZUNvbXBvbmVudCwgZ2V0U2VhcmNoUGFyYW1zID0gX2EuZ2V0U2VhcmNoUGFyYW1zLCBjcmVhdGVFbGVtZW50ID0gX2EuY29udGV4dC5jcmVhdGVFbGVtZW50O1xuICAgIHZhciBfYiA9IGFwcENvbmZpZy5hcHAsIGFwcCA9IF9iID09PSB2b2lkIDAgPyB7fSA6IF9iO1xuICAgIHZhciBfYyA9IGFwcC5wYXJzZVNlYXJjaFBhcmFtcywgcGFyc2VTZWFyY2hQYXJhbXMgPSBfYyA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9jO1xuICAgIHZhciB3cmFwcGVyUGFnZUNvbXBvbmVudCA9IGZ1bmN0aW9uIChQYWdlQ29tcG9uZW50KSB7XG4gICAgICAgIHZhciBXcmFwcGVyZWRQYWdlQ29tcG9uZW50ID0gZnVuY3Rpb24gKHByb3BzKSB7XG4gICAgICAgICAgICB2YXIgc2VhcmNoUGFyYW1zID0gcGFyc2VTZWFyY2hQYXJhbXMgJiYgZ2V0U2VhcmNoUGFyYW1zKCk7XG4gICAgICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChQYWdlQ29tcG9uZW50LCBfX2Fzc2lnbih7fSwgT2JqZWN0LmFzc2lnbih7fSwgcHJvcHMsIHsgc2VhcmNoUGFyYW1zOiBzZWFyY2hQYXJhbXMgfSkpKTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIFdyYXBwZXJlZFBhZ2VDb21wb25lbnQ7XG4gICAgfTtcbiAgICB3cmFwcGVyUm91dGVDb21wb25lbnQod3JhcHBlclBhZ2VDb21wb25lbnQpO1xuICAgIGlmIChhcHBDb25maWcuYXBwICYmIGFwcENvbmZpZy5hcHAuYWRkUHJvdmlkZXIpIHtcbiAgICAgICAgYWRkUHJvdmlkZXIoYXBwQ29uZmlnLmFwcC5hZGRQcm92aWRlcik7XG4gICAgfVxufTtcbmV4cG9ydHMuZGVmYXVsdCA9IG1vZHVsZTtcbiIsIi8qIVxuICBDb3B5cmlnaHQgKGMpIDIwMTggSmVkIFdhdHNvbi5cbiAgTGljZW5zZWQgdW5kZXIgdGhlIE1JVCBMaWNlbnNlIChNSVQpLCBzZWVcbiAgaHR0cDovL2plZHdhdHNvbi5naXRodWIuaW8vY2xhc3NuYW1lc1xuKi9cbi8qIGdsb2JhbCBkZWZpbmUgKi9cblxuKGZ1bmN0aW9uICgpIHtcblx0J3VzZSBzdHJpY3QnO1xuXG5cdHZhciBjbGFzc05hbWVzID0gKGZ1bmN0aW9uICgpIHtcblx0XHQvLyBkb24ndCBpbmhlcml0IGZyb20gT2JqZWN0IHNvIHdlIGNhbiBza2lwIGhhc093blByb3BlcnR5IGNoZWNrIGxhdGVyXG5cdFx0Ly8gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL3F1ZXN0aW9ucy8xNTUxODMyOC9jcmVhdGluZy1qcy1vYmplY3Qtd2l0aC1vYmplY3QtY3JlYXRlbnVsbCNhbnN3ZXItMjEwNzkyMzJcblx0XHRmdW5jdGlvbiBTdG9yYWdlT2JqZWN0KCkge31cblx0XHRTdG9yYWdlT2JqZWN0LnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG5cblx0XHRmdW5jdGlvbiBfcGFyc2VBcnJheSAocmVzdWx0U2V0LCBhcnJheSkge1xuXHRcdFx0dmFyIGxlbmd0aCA9IGFycmF5Lmxlbmd0aDtcblxuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkge1xuXHRcdFx0XHRfcGFyc2UocmVzdWx0U2V0LCBhcnJheVtpXSk7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5cdFx0ZnVuY3Rpb24gX3BhcnNlTnVtYmVyIChyZXN1bHRTZXQsIG51bSkge1xuXHRcdFx0cmVzdWx0U2V0W251bV0gPSB0cnVlO1xuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIF9wYXJzZU9iamVjdCAocmVzdWx0U2V0LCBvYmplY3QpIHtcblx0XHRcdGlmIChvYmplY3QudG9TdHJpbmcgPT09IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcpIHtcblx0XHRcdFx0Zm9yICh2YXIgayBpbiBvYmplY3QpIHtcblx0XHRcdFx0XHRpZiAoaGFzT3duLmNhbGwob2JqZWN0LCBrKSkge1xuXHRcdFx0XHRcdFx0Ly8gc2V0IHZhbHVlIHRvIGZhbHNlIGluc3RlYWQgb2YgZGVsZXRpbmcgaXQgdG8gYXZvaWQgY2hhbmdpbmcgb2JqZWN0IHN0cnVjdHVyZVxuXHRcdFx0XHRcdFx0Ly8gaHR0cHM6Ly93d3cuc21hc2hpbmdtYWdhemluZS5jb20vMjAxMi8xMS93cml0aW5nLWZhc3QtbWVtb3J5LWVmZmljaWVudC1qYXZhc2NyaXB0LyNkZS1yZWZlcmVuY2luZy1taXNjb25jZXB0aW9uc1xuXHRcdFx0XHRcdFx0cmVzdWx0U2V0W2tdID0gISFvYmplY3Rba107XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRyZXN1bHRTZXRbb2JqZWN0LnRvU3RyaW5nKCldID0gdHJ1ZTtcblx0XHRcdH1cblx0XHR9XG5cblx0XHR2YXIgU1BBQ0UgPSAvXFxzKy87XG5cdFx0ZnVuY3Rpb24gX3BhcnNlU3RyaW5nIChyZXN1bHRTZXQsIHN0cikge1xuXHRcdFx0dmFyIGFycmF5ID0gc3RyLnNwbGl0KFNQQUNFKTtcblx0XHRcdHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGg7XG5cblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcblx0XHRcdFx0cmVzdWx0U2V0W2FycmF5W2ldXSA9IHRydWU7XG5cdFx0XHR9XG5cdFx0fVxuXG5cdFx0ZnVuY3Rpb24gX3BhcnNlIChyZXN1bHRTZXQsIGFyZykge1xuXHRcdFx0aWYgKCFhcmcpIHJldHVybjtcblx0XHRcdHZhciBhcmdUeXBlID0gdHlwZW9mIGFyZztcblxuXHRcdFx0Ly8gJ2ZvbyBiYXInXG5cdFx0XHRpZiAoYXJnVHlwZSA9PT0gJ3N0cmluZycpIHtcblx0XHRcdFx0X3BhcnNlU3RyaW5nKHJlc3VsdFNldCwgYXJnKTtcblxuXHRcdFx0Ly8gWydmb28nLCAnYmFyJywgLi4uXVxuXHRcdFx0fSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGFyZykpIHtcblx0XHRcdFx0X3BhcnNlQXJyYXkocmVzdWx0U2V0LCBhcmcpO1xuXG5cdFx0XHQvLyB7ICdmb28nOiB0cnVlLCAuLi4gfVxuXHRcdFx0fSBlbHNlIGlmIChhcmdUeXBlID09PSAnb2JqZWN0Jykge1xuXHRcdFx0XHRfcGFyc2VPYmplY3QocmVzdWx0U2V0LCBhcmcpO1xuXG5cdFx0XHQvLyAnMTMwJ1xuXHRcdFx0fSBlbHNlIGlmIChhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRfcGFyc2VOdW1iZXIocmVzdWx0U2V0LCBhcmcpO1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdGZ1bmN0aW9uIF9jbGFzc05hbWVzICgpIHtcblx0XHRcdC8vIGRvbid0IGxlYWsgYXJndW1lbnRzXG5cdFx0XHQvLyBodHRwczovL2dpdGh1Yi5jb20vcGV0a2FhbnRvbm92L2JsdWViaXJkL3dpa2kvT3B0aW1pemF0aW9uLWtpbGxlcnMjMzItbGVha2luZy1hcmd1bWVudHNcblx0XHRcdHZhciBsZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuXHRcdFx0dmFyIGFyZ3MgPSBBcnJheShsZW4pO1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkrKykge1xuXHRcdFx0XHRhcmdzW2ldID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0fVxuXG5cdFx0XHR2YXIgY2xhc3NTZXQgPSBuZXcgU3RvcmFnZU9iamVjdCgpO1xuXHRcdFx0X3BhcnNlQXJyYXkoY2xhc3NTZXQsIGFyZ3MpO1xuXG5cdFx0XHR2YXIgbGlzdCA9IFtdO1xuXG5cdFx0XHRmb3IgKHZhciBrIGluIGNsYXNzU2V0KSB7XG5cdFx0XHRcdGlmIChjbGFzc1NldFtrXSkge1xuXHRcdFx0XHRcdGxpc3QucHVzaChrKVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdHJldHVybiBsaXN0LmpvaW4oJyAnKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gX2NsYXNzTmFtZXM7XG5cdH0pKCk7XG5cblx0aWYgKHR5cGVvZiBtb2R1bGUgIT09ICd1bmRlZmluZWQnICYmIG1vZHVsZS5leHBvcnRzKSB7XG5cdFx0Y2xhc3NOYW1lcy5kZWZhdWx0ID0gY2xhc3NOYW1lcztcblx0XHRtb2R1bGUuZXhwb3J0cyA9IGNsYXNzTmFtZXM7XG5cdH0gZWxzZSBpZiAodHlwZW9mIGRlZmluZSA9PT0gJ2Z1bmN0aW9uJyAmJiB0eXBlb2YgZGVmaW5lLmFtZCA9PT0gJ29iamVjdCcgJiYgZGVmaW5lLmFtZCkge1xuXHRcdC8vIHJlZ2lzdGVyIGFzICdjbGFzc25hbWVzJywgY29uc2lzdGVudCB3aXRoIG5wbSBwYWNrYWdlIG5hbWVcblx0XHRkZWZpbmUoJ2NsYXNzbmFtZXMnLCBbXSwgZnVuY3Rpb24gKCkge1xuXHRcdFx0cmV0dXJuIGNsYXNzTmFtZXM7XG5cdFx0fSk7XG5cdH0gZWxzZSB7XG5cdFx0d2luZG93LmNsYXNzTmFtZXMgPSBjbGFzc05hbWVzO1xuXHR9XG59KCkpO1xuIiwiLyohXG4gIENvcHlyaWdodCAoYykgMjAxOCBKZWQgV2F0c29uLlxuICBMaWNlbnNlZCB1bmRlciB0aGUgTUlUIExpY2Vuc2UgKE1JVCksIHNlZVxuICBodHRwOi8vamVkd2F0c29uLmdpdGh1Yi5pby9jbGFzc25hbWVzXG4qL1xuLyogZ2xvYmFsIGRlZmluZSAqL1xuXG4oZnVuY3Rpb24gKCkge1xuXHQndXNlIHN0cmljdCc7XG5cblx0dmFyIGhhc093biA9IHt9Lmhhc093blByb3BlcnR5O1xuXG5cdGZ1bmN0aW9uIGNsYXNzTmFtZXMoKSB7XG5cdFx0dmFyIGNsYXNzZXMgPSBbXTtcblxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHR2YXIgYXJnID0gYXJndW1lbnRzW2ldO1xuXHRcdFx0aWYgKCFhcmcpIGNvbnRpbnVlO1xuXG5cdFx0XHR2YXIgYXJnVHlwZSA9IHR5cGVvZiBhcmc7XG5cblx0XHRcdGlmIChhcmdUeXBlID09PSAnc3RyaW5nJyB8fCBhcmdUeXBlID09PSAnbnVtYmVyJykge1xuXHRcdFx0XHRjbGFzc2VzLnB1c2goYXJnKTtcblx0XHRcdH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShhcmcpKSB7XG5cdFx0XHRcdGlmIChhcmcubGVuZ3RoKSB7XG5cdFx0XHRcdFx0dmFyIGlubmVyID0gY2xhc3NOYW1lcy5hcHBseShudWxsLCBhcmcpO1xuXHRcdFx0XHRcdGlmIChpbm5lcikge1xuXHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGlubmVyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0gZWxzZSBpZiAoYXJnVHlwZSA9PT0gJ29iamVjdCcpIHtcblx0XHRcdFx0aWYgKGFyZy50b1N0cmluZyA9PT0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZykge1xuXHRcdFx0XHRcdGZvciAodmFyIGtleSBpbiBhcmcpIHtcblx0XHRcdFx0XHRcdGlmIChoYXNPd24uY2FsbChhcmcsIGtleSkgJiYgYXJnW2tleV0pIHtcblx0XHRcdFx0XHRcdFx0Y2xhc3Nlcy5wdXNoKGtleSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdGNsYXNzZXMucHVzaChhcmcudG9TdHJpbmcoKSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9XG5cblx0XHRyZXR1cm4gY2xhc3Nlcy5qb2luKCcgJyk7XG5cdH1cblxuXHRpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcgJiYgbW9kdWxlLmV4cG9ydHMpIHtcblx0XHRjbGFzc05hbWVzLmRlZmF1bHQgPSBjbGFzc05hbWVzO1xuXHRcdG1vZHVsZS5leHBvcnRzID0gY2xhc3NOYW1lcztcblx0fSBlbHNlIGlmICh0eXBlb2YgZGVmaW5lID09PSAnZnVuY3Rpb24nICYmIHR5cGVvZiBkZWZpbmUuYW1kID09PSAnb2JqZWN0JyAmJiBkZWZpbmUuYW1kKSB7XG5cdFx0Ly8gcmVnaXN0ZXIgYXMgJ2NsYXNzbmFtZXMnLCBjb25zaXN0ZW50IHdpdGggbnBtIHBhY2thZ2UgbmFtZVxuXHRcdGRlZmluZSgnY2xhc3NuYW1lcycsIFtdLCBmdW5jdGlvbiAoKSB7XG5cdFx0XHRyZXR1cm4gY2xhc3NOYW1lcztcblx0XHR9KTtcblx0fSBlbHNlIHtcblx0XHR3aW5kb3cuY2xhc3NOYW1lcyA9IGNsYXNzTmFtZXM7XG5cdH1cbn0oKSk7XG4iLCJyZXF1aXJlKCcuLi8uLi9tb2R1bGVzL2VzNi5vYmplY3QuYXNzaWduJyk7XG5tb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4uLy4uL21vZHVsZXMvX2NvcmUnKS5PYmplY3QuYXNzaWduO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgaWYgKHR5cGVvZiBpdCAhPSAnZnVuY3Rpb24nKSB0aHJvdyBUeXBlRXJyb3IoaXQgKyAnIGlzIG5vdCBhIGZ1bmN0aW9uIScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwidmFyIGlzT2JqZWN0ID0gcmVxdWlyZSgnLi9faXMtb2JqZWN0Jyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgdGhyb3cgVHlwZUVycm9yKGl0ICsgJyBpcyBub3QgYW4gb2JqZWN0IScpO1xuICByZXR1cm4gaXQ7XG59O1xuIiwiLy8gZmFsc2UgLT4gQXJyYXkjaW5kZXhPZlxuLy8gdHJ1ZSAgLT4gQXJyYXkjaW5jbHVkZXNcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgdG9MZW5ndGggPSByZXF1aXJlKCcuL190by1sZW5ndGgnKTtcbnZhciB0b0Fic29sdXRlSW5kZXggPSByZXF1aXJlKCcuL190by1hYnNvbHV0ZS1pbmRleCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoSVNfSU5DTFVERVMpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uICgkdGhpcywgZWwsIGZyb21JbmRleCkge1xuICAgIHZhciBPID0gdG9JT2JqZWN0KCR0aGlzKTtcbiAgICB2YXIgbGVuZ3RoID0gdG9MZW5ndGgoTy5sZW5ndGgpO1xuICAgIHZhciBpbmRleCA9IHRvQWJzb2x1dGVJbmRleChmcm9tSW5kZXgsIGxlbmd0aCk7XG4gICAgdmFyIHZhbHVlO1xuICAgIC8vIEFycmF5I2luY2x1ZGVzIHVzZXMgU2FtZVZhbHVlWmVybyBlcXVhbGl0eSBhbGdvcml0aG1cbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tc2VsZi1jb21wYXJlXG4gICAgaWYgKElTX0lOQ0xVREVTICYmIGVsICE9IGVsKSB3aGlsZSAobGVuZ3RoID4gaW5kZXgpIHtcbiAgICAgIHZhbHVlID0gT1tpbmRleCsrXTtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1zZWxmLWNvbXBhcmVcbiAgICAgIGlmICh2YWx1ZSAhPSB2YWx1ZSkgcmV0dXJuIHRydWU7XG4gICAgLy8gQXJyYXkjaW5kZXhPZiBpZ25vcmVzIGhvbGVzLCBBcnJheSNpbmNsdWRlcyAtIG5vdFxuICAgIH0gZWxzZSBmb3IgKDtsZW5ndGggPiBpbmRleDsgaW5kZXgrKykgaWYgKElTX0lOQ0xVREVTIHx8IGluZGV4IGluIE8pIHtcbiAgICAgIGlmIChPW2luZGV4XSA9PT0gZWwpIHJldHVybiBJU19JTkNMVURFUyB8fCBpbmRleCB8fCAwO1xuICAgIH0gcmV0dXJuICFJU19JTkNMVURFUyAmJiAtMTtcbiAgfTtcbn07XG4iLCJ2YXIgdG9TdHJpbmcgPSB7fS50b1N0cmluZztcblxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIHRvU3RyaW5nLmNhbGwoaXQpLnNsaWNlKDgsIC0xKTtcbn07XG4iLCJ2YXIgY29yZSA9IG1vZHVsZS5leHBvcnRzID0geyB2ZXJzaW9uOiAnMi42LjEyJyB9O1xuaWYgKHR5cGVvZiBfX2UgPT0gJ251bWJlcicpIF9fZSA9IGNvcmU7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiIsIi8vIG9wdGlvbmFsIC8gc2ltcGxlIGNvbnRleHQgYmluZGluZ1xudmFyIGFGdW5jdGlvbiA9IHJlcXVpcmUoJy4vX2EtZnVuY3Rpb24nKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZuLCB0aGF0LCBsZW5ndGgpIHtcbiAgYUZ1bmN0aW9uKGZuKTtcbiAgaWYgKHRoYXQgPT09IHVuZGVmaW5lZCkgcmV0dXJuIGZuO1xuICBzd2l0Y2ggKGxlbmd0aCkge1xuICAgIGNhc2UgMTogcmV0dXJuIGZ1bmN0aW9uIChhKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhKTtcbiAgICB9O1xuICAgIGNhc2UgMjogcmV0dXJuIGZ1bmN0aW9uIChhLCBiKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiKTtcbiAgICB9O1xuICAgIGNhc2UgMzogcmV0dXJuIGZ1bmN0aW9uIChhLCBiLCBjKSB7XG4gICAgICByZXR1cm4gZm4uY2FsbCh0aGF0LCBhLCBiLCBjKTtcbiAgICB9O1xuICB9XG4gIHJldHVybiBmdW5jdGlvbiAoLyogLi4uYXJncyAqLykge1xuICAgIHJldHVybiBmbi5hcHBseSh0aGF0LCBhcmd1bWVudHMpO1xuICB9O1xufTtcbiIsIi8vIDcuMi4xIFJlcXVpcmVPYmplY3RDb2VyY2libGUoYXJndW1lbnQpXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICBpZiAoaXQgPT0gdW5kZWZpbmVkKSB0aHJvdyBUeXBlRXJyb3IoXCJDYW4ndCBjYWxsIG1ldGhvZCBvbiAgXCIgKyBpdCk7XG4gIHJldHVybiBpdDtcbn07XG4iLCIvLyBUaGFuaydzIElFOCBmb3IgaGlzIGZ1bm55IGRlZmluZVByb3BlcnR5XG5tb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh7fSwgJ2EnLCB7IGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gNzsgfSB9KS5hICE9IDc7XG59KTtcbiIsInZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xudmFyIGRvY3VtZW50ID0gcmVxdWlyZSgnLi9fZ2xvYmFsJykuZG9jdW1lbnQ7XG4vLyB0eXBlb2YgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCBpcyAnb2JqZWN0JyBpbiBvbGQgSUVcbnZhciBpcyA9IGlzT2JqZWN0KGRvY3VtZW50KSAmJiBpc09iamVjdChkb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpcyA/IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoaXQpIDoge307XG59O1xuIiwiLy8gSUUgOC0gZG9uJ3QgZW51bSBidWcga2V5c1xubW9kdWxlLmV4cG9ydHMgPSAoXG4gICdjb25zdHJ1Y3RvcixoYXNPd25Qcm9wZXJ0eSxpc1Byb3RvdHlwZU9mLHByb3BlcnR5SXNFbnVtZXJhYmxlLHRvTG9jYWxlU3RyaW5nLHRvU3RyaW5nLHZhbHVlT2YnXG4pLnNwbGl0KCcsJyk7XG4iLCJ2YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgY29yZSA9IHJlcXVpcmUoJy4vX2NvcmUnKTtcbnZhciBjdHggPSByZXF1aXJlKCcuL19jdHgnKTtcbnZhciBoaWRlID0gcmVxdWlyZSgnLi9faGlkZScpO1xudmFyIGhhcyA9IHJlcXVpcmUoJy4vX2hhcycpO1xudmFyIFBST1RPVFlQRSA9ICdwcm90b3R5cGUnO1xuXG52YXIgJGV4cG9ydCA9IGZ1bmN0aW9uICh0eXBlLCBuYW1lLCBzb3VyY2UpIHtcbiAgdmFyIElTX0ZPUkNFRCA9IHR5cGUgJiAkZXhwb3J0LkY7XG4gIHZhciBJU19HTE9CQUwgPSB0eXBlICYgJGV4cG9ydC5HO1xuICB2YXIgSVNfU1RBVElDID0gdHlwZSAmICRleHBvcnQuUztcbiAgdmFyIElTX1BST1RPID0gdHlwZSAmICRleHBvcnQuUDtcbiAgdmFyIElTX0JJTkQgPSB0eXBlICYgJGV4cG9ydC5CO1xuICB2YXIgSVNfV1JBUCA9IHR5cGUgJiAkZXhwb3J0Llc7XG4gIHZhciBleHBvcnRzID0gSVNfR0xPQkFMID8gY29yZSA6IGNvcmVbbmFtZV0gfHwgKGNvcmVbbmFtZV0gPSB7fSk7XG4gIHZhciBleHBQcm90byA9IGV4cG9ydHNbUFJPVE9UWVBFXTtcbiAgdmFyIHRhcmdldCA9IElTX0dMT0JBTCA/IGdsb2JhbCA6IElTX1NUQVRJQyA/IGdsb2JhbFtuYW1lXSA6IChnbG9iYWxbbmFtZV0gfHwge30pW1BST1RPVFlQRV07XG4gIHZhciBrZXksIG93biwgb3V0O1xuICBpZiAoSVNfR0xPQkFMKSBzb3VyY2UgPSBuYW1lO1xuICBmb3IgKGtleSBpbiBzb3VyY2UpIHtcbiAgICAvLyBjb250YWlucyBpbiBuYXRpdmVcbiAgICBvd24gPSAhSVNfRk9SQ0VEICYmIHRhcmdldCAmJiB0YXJnZXRba2V5XSAhPT0gdW5kZWZpbmVkO1xuICAgIGlmIChvd24gJiYgaGFzKGV4cG9ydHMsIGtleSkpIGNvbnRpbnVlO1xuICAgIC8vIGV4cG9ydCBuYXRpdmUgb3IgcGFzc2VkXG4gICAgb3V0ID0gb3duID8gdGFyZ2V0W2tleV0gOiBzb3VyY2Vba2V5XTtcbiAgICAvLyBwcmV2ZW50IGdsb2JhbCBwb2xsdXRpb24gZm9yIG5hbWVzcGFjZXNcbiAgICBleHBvcnRzW2tleV0gPSBJU19HTE9CQUwgJiYgdHlwZW9mIHRhcmdldFtrZXldICE9ICdmdW5jdGlvbicgPyBzb3VyY2Vba2V5XVxuICAgIC8vIGJpbmQgdGltZXJzIHRvIGdsb2JhbCBmb3IgY2FsbCBmcm9tIGV4cG9ydCBjb250ZXh0XG4gICAgOiBJU19CSU5EICYmIG93biA/IGN0eChvdXQsIGdsb2JhbClcbiAgICAvLyB3cmFwIGdsb2JhbCBjb25zdHJ1Y3RvcnMgZm9yIHByZXZlbnQgY2hhbmdlIHRoZW0gaW4gbGlicmFyeVxuICAgIDogSVNfV1JBUCAmJiB0YXJnZXRba2V5XSA9PSBvdXQgPyAoZnVuY3Rpb24gKEMpIHtcbiAgICAgIHZhciBGID0gZnVuY3Rpb24gKGEsIGIsIGMpIHtcbiAgICAgICAgaWYgKHRoaXMgaW5zdGFuY2VvZiBDKSB7XG4gICAgICAgICAgc3dpdGNoIChhcmd1bWVudHMubGVuZ3RoKSB7XG4gICAgICAgICAgICBjYXNlIDA6IHJldHVybiBuZXcgQygpO1xuICAgICAgICAgICAgY2FzZSAxOiByZXR1cm4gbmV3IEMoYSk7XG4gICAgICAgICAgICBjYXNlIDI6IHJldHVybiBuZXcgQyhhLCBiKTtcbiAgICAgICAgICB9IHJldHVybiBuZXcgQyhhLCBiLCBjKTtcbiAgICAgICAgfSByZXR1cm4gQy5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xuICAgICAgfTtcbiAgICAgIEZbUFJPVE9UWVBFXSA9IENbUFJPVE9UWVBFXTtcbiAgICAgIHJldHVybiBGO1xuICAgIC8vIG1ha2Ugc3RhdGljIHZlcnNpb25zIGZvciBwcm90b3R5cGUgbWV0aG9kc1xuICAgIH0pKG91dCkgOiBJU19QUk9UTyAmJiB0eXBlb2Ygb3V0ID09ICdmdW5jdGlvbicgPyBjdHgoRnVuY3Rpb24uY2FsbCwgb3V0KSA6IG91dDtcbiAgICAvLyBleHBvcnQgcHJvdG8gbWV0aG9kcyB0byBjb3JlLiVDT05TVFJVQ1RPUiUubWV0aG9kcy4lTkFNRSVcbiAgICBpZiAoSVNfUFJPVE8pIHtcbiAgICAgIChleHBvcnRzLnZpcnR1YWwgfHwgKGV4cG9ydHMudmlydHVhbCA9IHt9KSlba2V5XSA9IG91dDtcbiAgICAgIC8vIGV4cG9ydCBwcm90byBtZXRob2RzIHRvIGNvcmUuJUNPTlNUUlVDVE9SJS5wcm90b3R5cGUuJU5BTUUlXG4gICAgICBpZiAodHlwZSAmICRleHBvcnQuUiAmJiBleHBQcm90byAmJiAhZXhwUHJvdG9ba2V5XSkgaGlkZShleHBQcm90bywga2V5LCBvdXQpO1xuICAgIH1cbiAgfVxufTtcbi8vIHR5cGUgYml0bWFwXG4kZXhwb3J0LkYgPSAxOyAgIC8vIGZvcmNlZFxuJGV4cG9ydC5HID0gMjsgICAvLyBnbG9iYWxcbiRleHBvcnQuUyA9IDQ7ICAgLy8gc3RhdGljXG4kZXhwb3J0LlAgPSA4OyAgIC8vIHByb3RvXG4kZXhwb3J0LkIgPSAxNjsgIC8vIGJpbmRcbiRleHBvcnQuVyA9IDMyOyAgLy8gd3JhcFxuJGV4cG9ydC5VID0gNjQ7ICAvLyBzYWZlXG4kZXhwb3J0LlIgPSAxMjg7IC8vIHJlYWwgcHJvdG8gbWV0aG9kIGZvciBgbGlicmFyeWBcbm1vZHVsZS5leHBvcnRzID0gJGV4cG9ydDtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGV4ZWMpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gISFleGVjKCk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxufTtcbiIsIi8vIGh0dHBzOi8vZ2l0aHViLmNvbS96bG9pcm9jay9jb3JlLWpzL2lzc3Vlcy84NiNpc3N1ZWNvbW1lbnQtMTE1NzU5MDI4XG52YXIgZ2xvYmFsID0gbW9kdWxlLmV4cG9ydHMgPSB0eXBlb2Ygd2luZG93ICE9ICd1bmRlZmluZWQnICYmIHdpbmRvdy5NYXRoID09IE1hdGhcbiAgPyB3aW5kb3cgOiB0eXBlb2Ygc2VsZiAhPSAndW5kZWZpbmVkJyAmJiBzZWxmLk1hdGggPT0gTWF0aCA/IHNlbGZcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLW5ldy1mdW5jXG4gIDogRnVuY3Rpb24oJ3JldHVybiB0aGlzJykoKTtcbmlmICh0eXBlb2YgX19nID09ICdudW1iZXInKSBfX2cgPSBnbG9iYWw7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tdW5kZWZcbiIsInZhciBoYXNPd25Qcm9wZXJ0eSA9IHt9Lmhhc093blByb3BlcnR5O1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQsIGtleSkge1xuICByZXR1cm4gaGFzT3duUHJvcGVydHkuY2FsbChpdCwga2V5KTtcbn07XG4iLCJ2YXIgZFAgPSByZXF1aXJlKCcuL19vYmplY3QtZHAnKTtcbnZhciBjcmVhdGVEZXNjID0gcmVxdWlyZSgnLi9fcHJvcGVydHktZGVzYycpO1xubW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpID8gZnVuY3Rpb24gKG9iamVjdCwga2V5LCB2YWx1ZSkge1xuICByZXR1cm4gZFAuZihvYmplY3QsIGtleSwgY3JlYXRlRGVzYygxLCB2YWx1ZSkpO1xufSA6IGZ1bmN0aW9uIChvYmplY3QsIGtleSwgdmFsdWUpIHtcbiAgb2JqZWN0W2tleV0gPSB2YWx1ZTtcbiAgcmV0dXJuIG9iamVjdDtcbn07XG4iLCJtb2R1bGUuZXhwb3J0cyA9ICFyZXF1aXJlKCcuL19kZXNjcmlwdG9ycycpICYmICFyZXF1aXJlKCcuL19mYWlscycpKGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShyZXF1aXJlKCcuL19kb20tY3JlYXRlJykoJ2RpdicpLCAnYScsIHsgZ2V0OiBmdW5jdGlvbiAoKSB7IHJldHVybiA3OyB9IH0pLmEgIT0gNztcbn0pO1xuIiwiLy8gZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBhbmQgbm9uLWVudW1lcmFibGUgb2xkIFY4IHN0cmluZ3NcbnZhciBjb2YgPSByZXF1aXJlKCcuL19jb2YnKTtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wcm90b3R5cGUtYnVpbHRpbnNcbm1vZHVsZS5leHBvcnRzID0gT2JqZWN0KCd6JykucHJvcGVydHlJc0VudW1lcmFibGUoMCkgPyBPYmplY3QgOiBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGNvZihpdCkgPT0gJ1N0cmluZycgPyBpdC5zcGxpdCgnJykgOiBPYmplY3QoaXQpO1xufTtcbiIsIm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiB0eXBlb2YgaXQgPT09ICdvYmplY3QnID8gaXQgIT09IG51bGwgOiB0eXBlb2YgaXQgPT09ICdmdW5jdGlvbic7XG59O1xuIiwibW9kdWxlLmV4cG9ydHMgPSB0cnVlO1xuIiwiJ3VzZSBzdHJpY3QnO1xuLy8gMTkuMS4yLjEgT2JqZWN0LmFzc2lnbih0YXJnZXQsIHNvdXJjZSwgLi4uKVxudmFyIERFU0NSSVBUT1JTID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKTtcbnZhciBnZXRLZXlzID0gcmVxdWlyZSgnLi9fb2JqZWN0LWtleXMnKTtcbnZhciBnT1BTID0gcmVxdWlyZSgnLi9fb2JqZWN0LWdvcHMnKTtcbnZhciBwSUUgPSByZXF1aXJlKCcuL19vYmplY3QtcGllJyk7XG52YXIgdG9PYmplY3QgPSByZXF1aXJlKCcuL190by1vYmplY3QnKTtcbnZhciBJT2JqZWN0ID0gcmVxdWlyZSgnLi9faW9iamVjdCcpO1xudmFyICRhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuXG4vLyBzaG91bGQgd29yayB3aXRoIHN5bWJvbHMgYW5kIHNob3VsZCBoYXZlIGRldGVybWluaXN0aWMgcHJvcGVydHkgb3JkZXIgKFY4IGJ1Zylcbm1vZHVsZS5leHBvcnRzID0gISRhc3NpZ24gfHwgcmVxdWlyZSgnLi9fZmFpbHMnKShmdW5jdGlvbiAoKSB7XG4gIHZhciBBID0ge307XG4gIHZhciBCID0ge307XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICB2YXIgUyA9IFN5bWJvbCgpO1xuICB2YXIgSyA9ICdhYmNkZWZnaGlqa2xtbm9wcXJzdCc7XG4gIEFbU10gPSA3O1xuICBLLnNwbGl0KCcnKS5mb3JFYWNoKGZ1bmN0aW9uIChrKSB7IEJba10gPSBrOyB9KTtcbiAgcmV0dXJuICRhc3NpZ24oe30sIEEpW1NdICE9IDcgfHwgT2JqZWN0LmtleXMoJGFzc2lnbih7fSwgQikpLmpvaW4oJycpICE9IEs7XG59KSA/IGZ1bmN0aW9uIGFzc2lnbih0YXJnZXQsIHNvdXJjZSkgeyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXVudXNlZC12YXJzXG4gIHZhciBUID0gdG9PYmplY3QodGFyZ2V0KTtcbiAgdmFyIGFMZW4gPSBhcmd1bWVudHMubGVuZ3RoO1xuICB2YXIgaW5kZXggPSAxO1xuICB2YXIgZ2V0U3ltYm9scyA9IGdPUFMuZjtcbiAgdmFyIGlzRW51bSA9IHBJRS5mO1xuICB3aGlsZSAoYUxlbiA+IGluZGV4KSB7XG4gICAgdmFyIFMgPSBJT2JqZWN0KGFyZ3VtZW50c1tpbmRleCsrXSk7XG4gICAgdmFyIGtleXMgPSBnZXRTeW1ib2xzID8gZ2V0S2V5cyhTKS5jb25jYXQoZ2V0U3ltYm9scyhTKSkgOiBnZXRLZXlzKFMpO1xuICAgIHZhciBsZW5ndGggPSBrZXlzLmxlbmd0aDtcbiAgICB2YXIgaiA9IDA7XG4gICAgdmFyIGtleTtcbiAgICB3aGlsZSAobGVuZ3RoID4gaikge1xuICAgICAga2V5ID0ga2V5c1tqKytdO1xuICAgICAgaWYgKCFERVNDUklQVE9SUyB8fCBpc0VudW0uY2FsbChTLCBrZXkpKSBUW2tleV0gPSBTW2tleV07XG4gICAgfVxuICB9IHJldHVybiBUO1xufSA6ICRhc3NpZ247XG4iLCJ2YXIgYW5PYmplY3QgPSByZXF1aXJlKCcuL19hbi1vYmplY3QnKTtcbnZhciBJRThfRE9NX0RFRklORSA9IHJlcXVpcmUoJy4vX2llOC1kb20tZGVmaW5lJyk7XG52YXIgdG9QcmltaXRpdmUgPSByZXF1aXJlKCcuL190by1wcmltaXRpdmUnKTtcbnZhciBkUCA9IE9iamVjdC5kZWZpbmVQcm9wZXJ0eTtcblxuZXhwb3J0cy5mID0gcmVxdWlyZSgnLi9fZGVzY3JpcHRvcnMnKSA/IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSA6IGZ1bmN0aW9uIGRlZmluZVByb3BlcnR5KE8sIFAsIEF0dHJpYnV0ZXMpIHtcbiAgYW5PYmplY3QoTyk7XG4gIFAgPSB0b1ByaW1pdGl2ZShQLCB0cnVlKTtcbiAgYW5PYmplY3QoQXR0cmlidXRlcyk7XG4gIGlmIChJRThfRE9NX0RFRklORSkgdHJ5IHtcbiAgICByZXR1cm4gZFAoTywgUCwgQXR0cmlidXRlcyk7XG4gIH0gY2F0Y2ggKGUpIHsgLyogZW1wdHkgKi8gfVxuICBpZiAoJ2dldCcgaW4gQXR0cmlidXRlcyB8fCAnc2V0JyBpbiBBdHRyaWJ1dGVzKSB0aHJvdyBUeXBlRXJyb3IoJ0FjY2Vzc29ycyBub3Qgc3VwcG9ydGVkIScpO1xuICBpZiAoJ3ZhbHVlJyBpbiBBdHRyaWJ1dGVzKSBPW1BdID0gQXR0cmlidXRlcy52YWx1ZTtcbiAgcmV0dXJuIE87XG59O1xuIiwiZXhwb3J0cy5mID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scztcbiIsInZhciBoYXMgPSByZXF1aXJlKCcuL19oYXMnKTtcbnZhciB0b0lPYmplY3QgPSByZXF1aXJlKCcuL190by1pb2JqZWN0Jyk7XG52YXIgYXJyYXlJbmRleE9mID0gcmVxdWlyZSgnLi9fYXJyYXktaW5jbHVkZXMnKShmYWxzZSk7XG52YXIgSUVfUFJPVE8gPSByZXF1aXJlKCcuL19zaGFyZWQta2V5JykoJ0lFX1BST1RPJyk7XG5cbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKG9iamVjdCwgbmFtZXMpIHtcbiAgdmFyIE8gPSB0b0lPYmplY3Qob2JqZWN0KTtcbiAgdmFyIGkgPSAwO1xuICB2YXIgcmVzdWx0ID0gW107XG4gIHZhciBrZXk7XG4gIGZvciAoa2V5IGluIE8pIGlmIChrZXkgIT0gSUVfUFJPVE8pIGhhcyhPLCBrZXkpICYmIHJlc3VsdC5wdXNoKGtleSk7XG4gIC8vIERvbid0IGVudW0gYnVnICYgaGlkZGVuIGtleXNcbiAgd2hpbGUgKG5hbWVzLmxlbmd0aCA+IGkpIGlmIChoYXMoTywga2V5ID0gbmFtZXNbaSsrXSkpIHtcbiAgICB+YXJyYXlJbmRleE9mKHJlc3VsdCwga2V5KSB8fCByZXN1bHQucHVzaChrZXkpO1xuICB9XG4gIHJldHVybiByZXN1bHQ7XG59O1xuIiwiLy8gMTkuMS4yLjE0IC8gMTUuMi4zLjE0IE9iamVjdC5rZXlzKE8pXG52YXIgJGtleXMgPSByZXF1aXJlKCcuL19vYmplY3Qta2V5cy1pbnRlcm5hbCcpO1xudmFyIGVudW1CdWdLZXlzID0gcmVxdWlyZSgnLi9fZW51bS1idWcta2V5cycpO1xuXG5tb2R1bGUuZXhwb3J0cyA9IE9iamVjdC5rZXlzIHx8IGZ1bmN0aW9uIGtleXMoTykge1xuICByZXR1cm4gJGtleXMoTywgZW51bUJ1Z0tleXMpO1xufTtcbiIsImV4cG9ydHMuZiA9IHt9LnByb3BlcnR5SXNFbnVtZXJhYmxlO1xuIiwibW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoYml0bWFwLCB2YWx1ZSkge1xuICByZXR1cm4ge1xuICAgIGVudW1lcmFibGU6ICEoYml0bWFwICYgMSksXG4gICAgY29uZmlndXJhYmxlOiAhKGJpdG1hcCAmIDIpLFxuICAgIHdyaXRhYmxlOiAhKGJpdG1hcCAmIDQpLFxuICAgIHZhbHVlOiB2YWx1ZVxuICB9O1xufTtcbiIsInZhciBzaGFyZWQgPSByZXF1aXJlKCcuL19zaGFyZWQnKSgna2V5cycpO1xudmFyIHVpZCA9IHJlcXVpcmUoJy4vX3VpZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoa2V5KSB7XG4gIHJldHVybiBzaGFyZWRba2V5XSB8fCAoc2hhcmVkW2tleV0gPSB1aWQoa2V5KSk7XG59O1xuIiwidmFyIGNvcmUgPSByZXF1aXJlKCcuL19jb3JlJyk7XG52YXIgZ2xvYmFsID0gcmVxdWlyZSgnLi9fZ2xvYmFsJyk7XG52YXIgU0hBUkVEID0gJ19fY29yZS1qc19zaGFyZWRfXyc7XG52YXIgc3RvcmUgPSBnbG9iYWxbU0hBUkVEXSB8fCAoZ2xvYmFsW1NIQVJFRF0gPSB7fSk7XG5cbihtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChrZXksIHZhbHVlKSB7XG4gIHJldHVybiBzdG9yZVtrZXldIHx8IChzdG9yZVtrZXldID0gdmFsdWUgIT09IHVuZGVmaW5lZCA/IHZhbHVlIDoge30pO1xufSkoJ3ZlcnNpb25zJywgW10pLnB1c2goe1xuICB2ZXJzaW9uOiBjb3JlLnZlcnNpb24sXG4gIG1vZGU6IHJlcXVpcmUoJy4vX2xpYnJhcnknKSA/ICdwdXJlJyA6ICdnbG9iYWwnLFxuICBjb3B5cmlnaHQ6ICfCqSAyMDIwIERlbmlzIFB1c2hrYXJldiAoemxvaXJvY2sucnUpJ1xufSk7XG4iLCJ2YXIgdG9JbnRlZ2VyID0gcmVxdWlyZSgnLi9fdG8taW50ZWdlcicpO1xudmFyIG1heCA9IE1hdGgubWF4O1xudmFyIG1pbiA9IE1hdGgubWluO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaW5kZXgsIGxlbmd0aCkge1xuICBpbmRleCA9IHRvSW50ZWdlcihpbmRleCk7XG4gIHJldHVybiBpbmRleCA8IDAgPyBtYXgoaW5kZXggKyBsZW5ndGgsIDApIDogbWluKGluZGV4LCBsZW5ndGgpO1xufTtcbiIsIi8vIDcuMS40IFRvSW50ZWdlclxudmFyIGNlaWwgPSBNYXRoLmNlaWw7XG52YXIgZmxvb3IgPSBNYXRoLmZsb29yO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIGlzTmFOKGl0ID0gK2l0KSA/IDAgOiAoaXQgPiAwID8gZmxvb3IgOiBjZWlsKShpdCk7XG59O1xuIiwiLy8gdG8gaW5kZXhlZCBvYmplY3QsIHRvT2JqZWN0IHdpdGggZmFsbGJhY2sgZm9yIG5vbi1hcnJheS1saWtlIEVTMyBzdHJpbmdzXG52YXIgSU9iamVjdCA9IHJlcXVpcmUoJy4vX2lvYmplY3QnKTtcbnZhciBkZWZpbmVkID0gcmVxdWlyZSgnLi9fZGVmaW5lZCcpO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoaXQpIHtcbiAgcmV0dXJuIElPYmplY3QoZGVmaW5lZChpdCkpO1xufTtcbiIsIi8vIDcuMS4xNSBUb0xlbmd0aFxudmFyIHRvSW50ZWdlciA9IHJlcXVpcmUoJy4vX3RvLWludGVnZXInKTtcbnZhciBtaW4gPSBNYXRoLm1pbjtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGl0KSB7XG4gIHJldHVybiBpdCA+IDAgPyBtaW4odG9JbnRlZ2VyKGl0KSwgMHgxZmZmZmZmZmZmZmZmZikgOiAwOyAvLyBwb3coMiwgNTMpIC0gMSA9PSA5MDA3MTk5MjU0NzQwOTkxXG59O1xuIiwiLy8gNy4xLjEzIFRvT2JqZWN0KGFyZ3VtZW50KVxudmFyIGRlZmluZWQgPSByZXF1aXJlKCcuL19kZWZpbmVkJyk7XG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCkge1xuICByZXR1cm4gT2JqZWN0KGRlZmluZWQoaXQpKTtcbn07XG4iLCIvLyA3LjEuMSBUb1ByaW1pdGl2ZShpbnB1dCBbLCBQcmVmZXJyZWRUeXBlXSlcbnZhciBpc09iamVjdCA9IHJlcXVpcmUoJy4vX2lzLW9iamVjdCcpO1xuLy8gaW5zdGVhZCBvZiB0aGUgRVM2IHNwZWMgdmVyc2lvbiwgd2UgZGlkbid0IGltcGxlbWVudCBAQHRvUHJpbWl0aXZlIGNhc2Vcbi8vIGFuZCB0aGUgc2Vjb25kIGFyZ3VtZW50IC0gZmxhZyAtIHByZWZlcnJlZCB0eXBlIGlzIGEgc3RyaW5nXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChpdCwgUykge1xuICBpZiAoIWlzT2JqZWN0KGl0KSkgcmV0dXJuIGl0O1xuICB2YXIgZm4sIHZhbDtcbiAgaWYgKFMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIGlmICh0eXBlb2YgKGZuID0gaXQudmFsdWVPZikgPT0gJ2Z1bmN0aW9uJyAmJiAhaXNPYmplY3QodmFsID0gZm4uY2FsbChpdCkpKSByZXR1cm4gdmFsO1xuICBpZiAoIVMgJiYgdHlwZW9mIChmbiA9IGl0LnRvU3RyaW5nKSA9PSAnZnVuY3Rpb24nICYmICFpc09iamVjdCh2YWwgPSBmbi5jYWxsKGl0KSkpIHJldHVybiB2YWw7XG4gIHRocm93IFR5cGVFcnJvcihcIkNhbid0IGNvbnZlcnQgb2JqZWN0IHRvIHByaW1pdGl2ZSB2YWx1ZVwiKTtcbn07XG4iLCJ2YXIgaWQgPSAwO1xudmFyIHB4ID0gTWF0aC5yYW5kb20oKTtcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGtleSkge1xuICByZXR1cm4gJ1N5bWJvbCgnLmNvbmNhdChrZXkgPT09IHVuZGVmaW5lZCA/ICcnIDoga2V5LCAnKV8nLCAoKytpZCArIHB4KS50b1N0cmluZygzNikpO1xufTtcbiIsIi8vIDE5LjEuMy4xIE9iamVjdC5hc3NpZ24odGFyZ2V0LCBzb3VyY2UpXG52YXIgJGV4cG9ydCA9IHJlcXVpcmUoJy4vX2V4cG9ydCcpO1xuXG4kZXhwb3J0KCRleHBvcnQuUyArICRleHBvcnQuRiwgJ09iamVjdCcsIHsgYXNzaWduOiByZXF1aXJlKCcuL19vYmplY3QtYXNzaWduJykgfSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuYWRkQXBwTGlmZUN5Y2xlID0gZXhwb3J0cy5lbWl0ID0gZXhwb3J0cy5hcHBDeWNsZXMgPSB2b2lkIDA7XG52YXIgdW5pdmVyc2FsX2Vudl8xID0gcmVxdWlyZShcInVuaXZlcnNhbC1lbnZcIik7XG52YXIgZW52XzEgPSByZXF1aXJlKFwiLi9lbnZcIik7XG52YXIgY29uc3RhbnRzXzEgPSByZXF1aXJlKFwiLi9jb25zdGFudHNcIik7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCIuL3V0aWxzXCIpO1xudmFyIGhpc3RvcnlfMSA9IHJlcXVpcmUoXCIuL2hpc3RvcnlcIik7XG52YXIgcm91dGVyXzEgPSByZXF1aXJlKFwiLi9yb3V0ZXJcIik7XG52YXIgcGFnZUxpZmVDeWNsZXNfMSA9IHJlcXVpcmUoXCIuL3BhZ2VMaWZlQ3ljbGVzXCIpO1xuZXhwb3J0cy5hcHBDeWNsZXMgPSB7fTtcbi8qKlxuICogRW1pdCBsaWZlIGN5Y2xlIGNhbGxiYWNrXG4gKiBAcGFyYW0ge3N0cmluZ30gY3ljbGUgY3ljbGUgbmFtZVxuICogQHBhcmFtIHtvYmplY3R9IGNvbnRleHQgY2FsbGJhY2sncyBjb250ZXh0IHdoZW4gZXhlY3V0ZWRcbiAqIEBwYXJhbSAgey4uLmFueX0gYXJncyBjYWxsYmFjayBwYXJhbXNcbiAqL1xuZnVuY3Rpb24gZW1pdChjeWNsZSwgY29udGV4dCkge1xuICAgIHZhciBhcmdzID0gW107XG4gICAgZm9yICh2YXIgX2kgPSAyOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgYXJnc1tfaSAtIDJdID0gYXJndW1lbnRzW19pXTtcbiAgICB9XG4gICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLmFwcEN5Y2xlcywgY3ljbGUpKSB7XG4gICAgICAgIHZhciBjeWNsZXMgPSBleHBvcnRzLmFwcEN5Y2xlc1tjeWNsZV07XG4gICAgICAgIGlmIChjeWNsZSA9PT0gY29uc3RhbnRzXzEuU0hBUkUpIHtcbiAgICAgICAgICAgIC8vIEluIE1pbmlBcHAsIGl0IG5lZWQgcmV0dXJuIGNhbGxiYWNrIHJlc3VsdCBhcyBzaGFyZSBpbmZvLCBsaWtlIHsgdGl0bGUsIGRlc2MsIHBhdGggfVxuICAgICAgICAgICAgYXJnc1swXS5jb250ZW50ID0gY29udGV4dCA/IGN5Y2xlc1swXS5jYWxsKGNvbnRleHQsIGFyZ3NbMV0pIDogY3ljbGVzWzBdKGFyZ3NbMV0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgY3ljbGVzLmZvckVhY2goZnVuY3Rpb24gKGZuKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgY29udGV4dCA/IGZuLmFwcGx5KGNvbnRleHQsIGFyZ3MpIDogZm4uYXBwbHkodm9pZCAwLCBhcmdzKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxufVxuZXhwb3J0cy5lbWl0ID0gZW1pdDtcbi8qKlxuICogQWRkIGFwcCBsaWZlY3ljbGUgY2FsbGJhY2tcbiAqIEBwYXJhbSB7c3RyaW5nfSBjeWNsZSBjeWNsZSBuYW1lXG4gKiBAcGFyYW0ge2Z1bmN0aW9ufSBjYWxsYmFjayBjeWNsZSBjYWxsYmFja1xuICovXG5mdW5jdGlvbiBhZGRBcHBMaWZlQ3ljbGUoY3ljbGUsIGNhbGxiYWNrKSB7XG4gICAgaWYgKHV0aWxzXzEuaXNGdW5jdGlvbihjYWxsYmFjaykpIHtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIHZhciBjeWNsZXMgPSBleHBvcnRzLmFwcEN5Y2xlc1tjeWNsZV0gPSBleHBvcnRzLmFwcEN5Y2xlc1tjeWNsZV0gfHwgW107XG4gICAgICAgIGN5Y2xlcy5wdXNoKGNhbGxiYWNrKTtcbiAgICB9XG59XG5leHBvcnRzLmFkZEFwcExpZmVDeWNsZSA9IGFkZEFwcExpZmVDeWNsZTtcbi8vIEVtaXQgTWluaUFwcCBBcHAgbGlmZUN5Y2xlc1xuaWYgKGVudl8xLmlzTWluaUFwcFBsYXRmb3JtKSB7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoY29uc3RhbnRzXzEuTEFVTkNILCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIG9wdGlvbnMgPSBfYS5vcHRpb25zLCBjb250ZXh0ID0gX2EuY29udGV4dDtcbiAgICAgICAgZW1pdChjb25zdGFudHNfMS5MQVVOQ0gsIGNvbnRleHQsIG9wdGlvbnMpO1xuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdhcHBzaG93JywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBvcHRpb25zID0gX2Eub3B0aW9ucywgY29udGV4dCA9IF9hLmNvbnRleHQ7XG4gICAgICAgIGVtaXQoY29uc3RhbnRzXzEuU0hPVywgY29udGV4dCwgb3B0aW9ucyk7XG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ2FwcGhpZGUnLCBmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIGNvbnRleHQgPSBfYS5jb250ZXh0O1xuICAgICAgICBlbWl0KGNvbnN0YW50c18xLkhJREUsIGNvbnRleHQpO1xuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdhcHBlcnJvcicsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgY29udGV4dCA9IF9hLmNvbnRleHQsIGVycm9yID0gX2EuZXJyb3I7XG4gICAgICAgIGVtaXQoY29uc3RhbnRzXzEuRVJST1IsIGNvbnRleHQsIGVycm9yKTtcbiAgICB9KTtcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcigncGFnZW5vdGZvdW5kJywgZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBjb250ZXh0ID0gX2EuY29udGV4dDtcbiAgICAgICAgZW1pdChjb25zdGFudHNfMS5OT1RfRk9VTkQsIGNvbnRleHQpO1xuICAgIH0pO1xuICAgIHdpbmRvdy5hZGRFdmVudExpc3RlbmVyKCdhcHBzaGFyZScsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgY29udGV4dCA9IF9hLmNvbnRleHQsIHNoYXJlSW5mbyA9IF9hLnNoYXJlSW5mbywgb3B0aW9ucyA9IF9hLm9wdGlvbnM7XG4gICAgICAgIGVtaXQoY29uc3RhbnRzXzEuU0hBUkUsIGNvbnRleHQsIHNoYXJlSW5mbywgb3B0aW9ucyk7XG4gICAgfSk7XG4gICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3RhYml0ZW1jbGljaycsIGZ1bmN0aW9uIChfYSkge1xuICAgICAgICB2YXIgb3B0aW9ucyA9IF9hLm9wdGlvbnMsIGNvbnRleHQgPSBfYS5jb250ZXh0O1xuICAgICAgICBlbWl0KGNvbnN0YW50c18xLlRBQl9JVEVNX0NMSUNLLCBjb250ZXh0LCBvcHRpb25zKTtcbiAgICB9KTtcbn1cbmVsc2UgaWYgKHVuaXZlcnNhbF9lbnZfMS5pc1dlZXgpIHtcbiAgICB0cnkge1xuICAgICAgICAvLyBodHRwczovL3dlZXguYXBhY2hlLm9yZy9kb2NzL21vZHVsZXMvZ2xvYmFsRXZlbnQuaHRtbCNhZGRldmVudGxpc3RlbmVyXG4gICAgICAgIC8vIFVzZSBfX3dlZXhfcmVxdWlyZV9fIGluIFJheCBwcm9qZWN0LlxuICAgICAgICB2YXIgZ2xvYmFsRXZlbnQgPSBfX3dlZXhfcmVxdWlyZV9fKCdAd2VleC1tb2R1bGUvZ2xvYmFsRXZlbnQnKTtcbiAgICAgICAgZ2xvYmFsRXZlbnQuYWRkRXZlbnRMaXN0ZW5lcignV1hBcHBsaWNhdGlvbkRpZEJlY29tZUFjdGl2ZUV2ZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcm91dGVyXzEuZGVmYXVsdC5jdXJyZW50LnZpc2liaWx0eVN0YXRlID0gdHJ1ZTtcbiAgICAgICAgICAgIC8vIEVtaXQgYXBwIHNob3dcbiAgICAgICAgICAgIGVtaXQoY29uc3RhbnRzXzEuU0hPVyk7XG4gICAgICAgICAgICAvLyBFbWl0IHBhZ2Ugc2hvd1xuICAgICAgICAgICAgcGFnZUxpZmVDeWNsZXNfMS5lbWl0KGNvbnN0YW50c18xLlNIT1csIHJvdXRlcl8xLmRlZmF1bHQuY3VycmVudC5wYXRobmFtZSk7XG4gICAgICAgIH0pO1xuICAgICAgICBnbG9iYWxFdmVudC5hZGRFdmVudExpc3RlbmVyKCdXWEFwcGxpY2F0aW9uV2lsbFJlc2lnbkFjdGl2ZUV2ZW50JywgZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgcm91dGVyXzEuZGVmYXVsdC5jdXJyZW50LnZpc2liaWx0eVN0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAvLyBFbWl0IHBhZ2UgaGlkZVxuICAgICAgICAgICAgcGFnZUxpZmVDeWNsZXNfMS5lbWl0KGNvbnN0YW50c18xLkhJREUsIHJvdXRlcl8xLmRlZmF1bHQuY3VycmVudC5wYXRobmFtZSk7XG4gICAgICAgICAgICAvLyBFbWl0IGFwcCBoaWRlXG4gICAgICAgICAgICBlbWl0KGNvbnN0YW50c18xLkhJREUpO1xuICAgICAgICB9KTtcbiAgICB9XG4gICAgY2F0Y2ggKGVycikge1xuICAgICAgICBjb25zb2xlLmxvZyhcIkB3ZWV4LW1vZHVsZS9nbG9iYWxFdmVudCBlcnJvcjogXCIgKyBlcnIpO1xuICAgIH1cbn1cbmVsc2UgaWYgKHR5cGVvZiBkb2N1bWVudCAhPT0gJ3VuZGVmaW5lZCcgJiYgdHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKCd2aXNpYmlsaXR5Y2hhbmdlJywgZnVuY3Rpb24gKCkge1xuICAgICAgICAvLyBHZXQgaGlzdG9yeVxuICAgICAgICB2YXIgaGlzdG9yeSA9IGhpc3RvcnlfMS5nZXRIaXN0b3J5KCk7XG4gICAgICAgIHZhciBjdXJyZW50UGF0aE5hbWUgPSBoaXN0b3J5ID8gaGlzdG9yeS5sb2NhdGlvbi5wYXRobmFtZSA6IHJvdXRlcl8xLmRlZmF1bHQuY3VycmVudC5wYXRobmFtZTtcbiAgICAgICAgLy8gVGhlIGFwcCBzd2l0Y2hlcyBmcm9tIGZvcmVncm91bmQgdG8gYmFja2dyb3VuZFxuICAgICAgICBpZiAoY3VycmVudFBhdGhOYW1lID09PSByb3V0ZXJfMS5kZWZhdWx0LmN1cnJlbnQucGF0aG5hbWUpIHtcbiAgICAgICAgICAgIHJvdXRlcl8xLmRlZmF1bHQuY3VycmVudC52aXNpYmlsdHlTdGF0ZSA9ICFyb3V0ZXJfMS5kZWZhdWx0LmN1cnJlbnQudmlzaWJpbHR5U3RhdGU7XG4gICAgICAgICAgICBpZiAocm91dGVyXzEuZGVmYXVsdC5jdXJyZW50LnZpc2liaWx0eVN0YXRlKSB7XG4gICAgICAgICAgICAgICAgLy8gRW1pdCBhcHAgc2hvd1xuICAgICAgICAgICAgICAgIGVtaXQoY29uc3RhbnRzXzEuU0hPVyk7XG4gICAgICAgICAgICAgICAgLy8gRW1pdCBwYWdlIHNob3dcbiAgICAgICAgICAgICAgICBwYWdlTGlmZUN5Y2xlc18xLmVtaXQoY29uc3RhbnRzXzEuU0hPVywgcm91dGVyXzEuZGVmYXVsdC5jdXJyZW50LnBhdGhuYW1lKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIC8vIEVtaXQgcGFnZSBoaWRlXG4gICAgICAgICAgICAgICAgcGFnZUxpZmVDeWNsZXNfMS5lbWl0KGNvbnN0YW50c18xLkhJREUsIHJvdXRlcl8xLmRlZmF1bHQuY3VycmVudC5wYXRobmFtZSk7XG4gICAgICAgICAgICAgICAgLy8gRW1pdCBhcHAgaGlkZVxuICAgICAgICAgICAgICAgIGVtaXQoY29uc3RhbnRzXzEuSElERSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9KTtcbiAgICAvLyBFbWl0IGVycm9yIGxpZmVDeWNsZXNcbiAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcignZXJyb3InLCBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgICAgZW1pdChjb25zdGFudHNfMS5FUlJPUiwgbnVsbCwgZXZlbnQuZXJyb3IpO1xuICAgIH0pO1xufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgYXBwTGlmZUN5Y2xlc18xID0gcmVxdWlyZShcIi4vYXBwTGlmZUN5Y2xlc1wiKTtcbnZhciBjb25zdGFudHNfMSA9IHJlcXVpcmUoXCIuL2NvbnN0YW50c1wiKTtcbnZhciBlbnZfMSA9IHJlcXVpcmUoXCIuL2VudlwiKTtcbmZ1bmN0aW9uIGNvbGxlY3RBcHBMaWZlQ3ljbGUoYXBwQ29uZmlnKSB7XG4gICAgdmFyIF9hID0gYXBwQ29uZmlnLmFwcCwgb25MYXVuY2ggPSBfYS5vbkxhdW5jaCwgb25TaG93ID0gX2Eub25TaG93LCBvbkVycm9yID0gX2Eub25FcnJvciwgb25IaWRlID0gX2Eub25IaWRlLCBvblRhYkl0ZW1DbGljayA9IF9hLm9uVGFiSXRlbUNsaWNrO1xuICAgIC8vIG11bHRpLWVuZCB2YWxpZCBsaWZlY3ljbGVcbiAgICAvLyBBZGQgYXBwIGxhbnVjaCBjYWxsYmFja1xuICAgIGFwcExpZmVDeWNsZXNfMS5hZGRBcHBMaWZlQ3ljbGUoY29uc3RhbnRzXzEuTEFVTkNILCBvbkxhdW5jaCk7XG4gICAgLy8gQWRkIGFwcCBzaG93IGNhbGxiYWNrXG4gICAgYXBwTGlmZUN5Y2xlc18xLmFkZEFwcExpZmVDeWNsZShjb25zdGFudHNfMS5TSE9XLCBvblNob3cpO1xuICAgIC8vIEFkZCBhcHAgZXJyb3IgY2FsbGJhY2tcbiAgICBhcHBMaWZlQ3ljbGVzXzEuYWRkQXBwTGlmZUN5Y2xlKGNvbnN0YW50c18xLkVSUk9SLCBvbkVycm9yKTtcbiAgICAvLyBBZGQgYXBwIGhpZGUgY2FsbGJhY2tcbiAgICBhcHBMaWZlQ3ljbGVzXzEuYWRkQXBwTGlmZUN5Y2xlKGNvbnN0YW50c18xLkhJREUsIG9uSGlkZSk7XG4gICAgLy8gQWRkIHRhYiBiYXIgaXRlbSBjbGljayBjYWxsYmFja1xuICAgIGFwcExpZmVDeWNsZXNfMS5hZGRBcHBMaWZlQ3ljbGUoY29uc3RhbnRzXzEuVEFCX0lURU1fQ0xJQ0ssIG9uVGFiSXRlbUNsaWNrKTtcbiAgICBpZiAoZW52XzEuaXNNaW5pQXBwUGxhdGZvcm0pIHtcbiAgICAgICAgdmFyIF9iID0gYXBwQ29uZmlnLmFwcCwgb25QYWdlTm90Rm91bmQgPSBfYi5vblBhZ2VOb3RGb3VuZCwgb25TaGFyZUFwcE1lc3NhZ2UgPSBfYi5vblNoYXJlQXBwTWVzc2FnZSwgb25VbmhhbmRsZWRSZWplY3Rpb24gPSBfYi5vblVuaGFuZGxlZFJlamVjdGlvbjtcbiAgICAgICAgLy8gQWRkIGdsb2JhbCBzaGFyZSBjYWxsYmFja1xuICAgICAgICBhcHBMaWZlQ3ljbGVzXzEuYWRkQXBwTGlmZUN5Y2xlKGNvbnN0YW50c18xLlNIQVJFLCBvblNoYXJlQXBwTWVzc2FnZSk7XG4gICAgICAgIC8vIEFkZCB1bmhhbmRsZWRyZWplY3Rpb24gY2FsbGJhY2tcbiAgICAgICAgYXBwTGlmZUN5Y2xlc18xLmFkZEFwcExpZmVDeWNsZShjb25zdGFudHNfMS5VTkhBTkRMRURfUkVKRUNUSU9OLCBvblVuaGFuZGxlZFJlamVjdGlvbik7XG4gICAgICAgIC8vIEFkZCBwYWdlIG5vdCBmb3VuZCBjYWxsYmFja1xuICAgICAgICBhcHBMaWZlQ3ljbGVzXzEuYWRkQXBwTGlmZUN5Y2xlKGNvbnN0YW50c18xLk5PVF9GT1VORCwgb25QYWdlTm90Rm91bmQpO1xuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGNvbGxlY3RBcHBMaWZlQ3ljbGU7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfYTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuTUlOSUFQUF9QQUdFX0xJRkVDWUNMRSA9IGV4cG9ydHMuVU5IQU5ETEVEX1JFSkVDVElPTiA9IGV4cG9ydHMuVEFCX0lURU1fQ0xJQ0sgPSBleHBvcnRzLlNIQVJFID0gZXhwb3J0cy5OT1RfRk9VTkQgPSBleHBvcnRzLkVSUk9SID0gZXhwb3J0cy5MQVVOQ0ggPSBleHBvcnRzLkhJREUgPSBleHBvcnRzLlNIT1cgPSB2b2lkIDA7XG5leHBvcnRzLlNIT1cgPSAnc2hvdyc7XG5leHBvcnRzLkhJREUgPSAnaGlkZSc7XG5leHBvcnRzLkxBVU5DSCA9ICdsYXVuY2gnO1xuZXhwb3J0cy5FUlJPUiA9ICdlcnJvcic7XG5leHBvcnRzLk5PVF9GT1VORCA9ICdub3Rmb3VuZCc7XG5leHBvcnRzLlNIQVJFID0gJ3NoYXJlJztcbmV4cG9ydHMuVEFCX0lURU1fQ0xJQ0sgPSAndGFiaXRlbWNsaWNrJztcbmV4cG9ydHMuVU5IQU5ETEVEX1JFSkVDVElPTiA9ICd1bmhhbmRsZWRyZWplY3Rpb24nO1xuZXhwb3J0cy5NSU5JQVBQX1BBR0VfTElGRUNZQ0xFID0gKF9hID0ge30sXG4gICAgX2FbZXhwb3J0cy5TSE9XXSA9ICdtaW5pYXBwX3BhZ2VzaG93JyxcbiAgICBfYVtleHBvcnRzLkhJREVdID0gJ21pbmlhcHBfcGFnZWhpZGUnLFxuICAgIF9hKTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIHJ1bnRpbWVNb2R1bGVfMSA9IHJlcXVpcmUoXCIuL3J1bnRpbWVNb2R1bGVcIik7XG52YXIgaGlzdG9yeV8xID0gcmVxdWlyZShcIi4vaGlzdG9yeVwiKTtcbnZhciBlbnZfMSA9IHJlcXVpcmUoXCIuL2VudlwiKTtcbnZhciBjb2xsZWN0QXBwTGlmZUN5Y2xlXzEgPSByZXF1aXJlKFwiLi9jb2xsZWN0QXBwTGlmZUN5Y2xlXCIpO1xudmFyIERFRkFVTEVfQVBQX0NPTkZJRyA9IHtcbiAgICBhcHA6IHtcbiAgICAgICAgcm9vdElkOiAncm9vdCdcbiAgICB9LFxuICAgIHJvdXRlcjoge1xuICAgICAgICB0eXBlOiAnaGFzaCdcbiAgICB9XG59O1xuZnVuY3Rpb24gbWVyZ2VEZWZhdWx0Q29uZmlnKGRlZmF1bHRDb25maWcsIGNvbmZpZykge1xuICAgIE9iamVjdC5rZXlzKGRlZmF1bHRDb25maWcpLmZvckVhY2goZnVuY3Rpb24gKGtleSkge1xuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZ1trZXldID09PSAnb2JqZWN0JyAmJiBjb25maWdba2V5XSAhPT0gbnVsbCkge1xuICAgICAgICAgICAgY29uZmlnW2tleV0gPSBtZXJnZURlZmF1bHRDb25maWcoZGVmYXVsdENvbmZpZ1trZXldLCBjb25maWdba2V5XSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChjb25maWcsIGtleSkpIHtcbiAgICAgICAgICAgIGNvbmZpZ1trZXldID0gZGVmYXVsdENvbmZpZ1trZXldO1xuICAgICAgICB9XG4gICAgfSk7XG4gICAgcmV0dXJuIGNvbmZpZztcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAoX2EpIHtcbiAgICB2YXIgbG9hZFJ1bnRpbWVNb2R1bGVzID0gX2EubG9hZFJ1bnRpbWVNb2R1bGVzLCBjcmVhdGVFbGVtZW50ID0gX2EuY3JlYXRlRWxlbWVudCwgX2IgPSBfYS5pbml0SGlzdG9yeSwgaW5pdEhpc3RvcnkgPSBfYiA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9iO1xuICAgIHZhciBjcmVhdGVCYXNlQXBwID0gZnVuY3Rpb24gKGFwcENvbmZpZywgYnVpbGRDb25maWcsIGNvbnRleHQpIHtcbiAgICAgICAgaWYgKGNvbnRleHQgPT09IHZvaWQgMCkgeyBjb250ZXh0ID0ge307IH1cbiAgICAgICAgLy8gTWVyZ2UgZGVmYXVsdCBhcHBDb25maWcgdG8gdXNlciBhcHBDb25maWdcbiAgICAgICAgYXBwQ29uZmlnID0gbWVyZ2VEZWZhdWx0Q29uZmlnKERFRkFVTEVfQVBQX0NPTkZJRywgYXBwQ29uZmlnKTtcbiAgICAgICAgLy8gU2V0IGhpc3RvcnlcbiAgICAgICAgdmFyIGhpc3Rvcnk7XG4gICAgICAgIGlmICghZW52XzEuaXNNaW5pQXBwUGxhdGZvcm0gJiYgaW5pdEhpc3RvcnkpIHtcbiAgICAgICAgICAgIHZhciByb3V0ZXIgPSBhcHBDb25maWcucm91dGVyO1xuICAgICAgICAgICAgdmFyIHR5cGUgPSByb3V0ZXIudHlwZSwgYmFzZW5hbWUgPSByb3V0ZXIuYmFzZW5hbWUsIGN1c3RvbUhpc3RvcnkgPSByb3V0ZXIuaGlzdG9yeTtcbiAgICAgICAgICAgIHZhciBsb2NhdGlvbl8xID0gY29udGV4dC5pbml0aWFsQ29udGV4dCA/IGNvbnRleHQuaW5pdGlhbENvbnRleHQubG9jYXRpb24gOiBudWxsO1xuICAgICAgICAgICAgaGlzdG9yeSA9IGhpc3RvcnlfMS5jcmVhdGVIaXN0b3J5KHsgdHlwZTogdHlwZSwgYmFzZW5hbWU6IGJhc2VuYW1lLCBsb2NhdGlvbjogbG9jYXRpb25fMSwgY3VzdG9tSGlzdG9yeTogY3VzdG9tSGlzdG9yeSB9KTtcbiAgICAgICAgICAgIGFwcENvbmZpZy5yb3V0ZXIuaGlzdG9yeSA9IGhpc3Rvcnk7XG4gICAgICAgIH1cbiAgICAgICAgY29udGV4dC5jcmVhdGVFbGVtZW50ID0gY3JlYXRlRWxlbWVudDtcbiAgICAgICAgLy8gTG9hZCBydW50aW1lIG1vZHVsZXNcbiAgICAgICAgdmFyIHJ1bnRpbWUgPSBuZXcgcnVudGltZU1vZHVsZV8xLmRlZmF1bHQoYXBwQ29uZmlnLCBidWlsZENvbmZpZywgY29udGV4dCk7XG4gICAgICAgIGxvYWRSdW50aW1lTW9kdWxlcyhydW50aW1lKTtcbiAgICAgICAgLy8gQ29sbGVjdCBhcHAgbGlmZUN5bGVcbiAgICAgICAgY29sbGVjdEFwcExpZmVDeWNsZV8xLmRlZmF1bHQoYXBwQ29uZmlnKTtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIGhpc3Rvcnk6IGhpc3RvcnksXG4gICAgICAgICAgICBydW50aW1lOiBydW50aW1lLFxuICAgICAgICAgICAgYXBwQ29uZmlnOiBhcHBDb25maWdcbiAgICAgICAgfTtcbiAgICB9O1xuICAgIHJldHVybiBjcmVhdGVCYXNlQXBwO1xufSk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgaGlzdG9yeV8xID0gcmVxdWlyZShcIi4vaGlzdG9yeVwiKTtcbnZhciByb3V0ZXJfMSA9IHJlcXVpcmUoXCIuL3JvdXRlclwiKTtcbnZhciBjb25zdGFudHNfMSA9IHJlcXVpcmUoXCIuL2NvbnN0YW50c1wiKTtcbnZhciBhcHBMaWZlQ3ljbGVzXzEgPSByZXF1aXJlKFwiLi9hcHBMaWZlQ3ljbGVzXCIpO1xudmFyIHBhZ2VMaWZlQ3ljbGVzXzEgPSByZXF1aXJlKFwiLi9wYWdlTGlmZUN5Y2xlc1wiKTtcbnZhciBlbnZfMSA9IHJlcXVpcmUoXCIuL2VudlwiKTtcbmZ1bmN0aW9uIGVtaXRMaWZlQ3ljbGVzKCkge1xuICAgIGlmIChlbnZfMS5pc01pbmlBcHBQbGF0Zm9ybSkge1xuICAgICAgICByb3V0ZXJfMS5kZWZhdWx0LmN1cnJlbnQgPSB7XG4gICAgICAgICAgICBwYXRobmFtZTogd2luZG93Ll9fcGFnZUlkLFxuICAgICAgICAgICAgdmlzaWJpbHR5U3RhdGU6IHRydWVcbiAgICAgICAgfTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEdldCBoaXN0b3J5XG4gICAgICAgIHZhciBoaXN0b3J5XzIgPSBoaXN0b3J5XzEuZ2V0SGlzdG9yeSgpO1xuICAgICAgICB2YXIgcGF0aG5hbWUgPSBoaXN0b3J5XzIgJiYgaGlzdG9yeV8yLmxvY2F0aW9uID9cbiAgICAgICAgICAgIGhpc3RvcnlfMi5sb2NhdGlvbi5wYXRobmFtZSA6IHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnICYmIHdpbmRvdy5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgICAgLy8gU2V0IGN1cnJlbnQgcm91dGVyXG4gICAgICAgIHJvdXRlcl8xLmRlZmF1bHQuY3VycmVudCA9IHtcbiAgICAgICAgICAgIHBhdGhuYW1lOiBwYXRobmFtZSxcbiAgICAgICAgICAgIHZpc2liaWx0eVN0YXRlOiB0cnVlXG4gICAgICAgIH07XG4gICAgICAgIC8vIEVtaXQgYXBwIGxpZmVjeWNsZVxuICAgICAgICBhcHBMaWZlQ3ljbGVzXzEuZW1pdChjb25zdGFudHNfMS5MQVVOQ0gpO1xuICAgICAgICBhcHBMaWZlQ3ljbGVzXzEuZW1pdChjb25zdGFudHNfMS5TSE9XKTtcbiAgICAgICAgaWYgKGhpc3RvcnlfMiAmJiBoaXN0b3J5XzIubGlzdGVuKSB7XG4gICAgICAgICAgICAvLyBMaXN0ZW4gaGlzdG9yeSBjaGFuZ2VcbiAgICAgICAgICAgIGhpc3RvcnlfMi5saXN0ZW4oZnVuY3Rpb24gKGxvY2F0aW9uKSB7XG4gICAgICAgICAgICAgICAgaWYgKGxvY2F0aW9uLnBhdGhuYW1lICE9PSByb3V0ZXJfMS5kZWZhdWx0LmN1cnJlbnQucGF0aG5hbWUpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gRmxvdyByb3V0ZXIgaW5mb1xuICAgICAgICAgICAgICAgICAgICByb3V0ZXJfMS5kZWZhdWx0LnByZXYgPSBfX2Fzc2lnbih7fSwgcm91dGVyXzEuZGVmYXVsdC5jdXJyZW50KTtcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyXzEuZGVmYXVsdC5jdXJyZW50ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6IGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgICAgICAgICAgICAgICAgICAgdmlzaWJpbHR5U3RhdGU6IHRydWVcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgcm91dGVyXzEuZGVmYXVsdC5wcmV2LnZpc2liaWx0eVN0YXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgICAgIHBhZ2VMaWZlQ3ljbGVzXzEuZW1pdChjb25zdGFudHNfMS5ISURFLCByb3V0ZXJfMS5kZWZhdWx0LnByZXYucGF0aG5hbWUpO1xuICAgICAgICAgICAgICAgICAgICBwYWdlTGlmZUN5Y2xlc18xLmVtaXQoY29uc3RhbnRzXzEuU0hPVywgcm91dGVyXzEuZGVmYXVsdC5jdXJyZW50LnBhdGhuYW1lKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGVtaXRMaWZlQ3ljbGVzO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgZW52XzEgPSByZXF1aXJlKFwiLi9lbnZcIik7XG5mdW5jdGlvbiBlbmhhbmNlV2l0aFJvdXRlcihfYSkge1xuICAgIHZhciB3aXRoUm91dGVyID0gX2Eud2l0aFJvdXRlciwgY3JlYXRlRWxlbWVudCA9IF9hLmNyZWF0ZUVsZW1lbnQ7XG4gICAgaWYgKGVudl8xLmlzTWluaUFwcFBsYXRmb3JtKSB7XG4gICAgICAgIHdpdGhSb3V0ZXIgPSBmdW5jdGlvbiAoQ29tcG9uZW50KSB7XG4gICAgICAgICAgICBmdW5jdGlvbiBXcmFwcGVyKHByb3BzKSB7XG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgdmFyIGhpc3RvcnkgPSB3aW5kb3cuaGlzdG9yeTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChDb21wb25lbnQsIE9iamVjdC5hc3NpZ24oe30sIHByb3BzLCB7XG4gICAgICAgICAgICAgICAgICAgIGhpc3Rvcnk6IGhpc3RvcnksXG4gICAgICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uLFxuICAgICAgICAgICAgICAgIH0pKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgV3JhcHBlci5kaXNwbGF5TmFtZSA9ICd3aXRoUm91dGVyKCcgKyAoQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lKSArICcpJztcbiAgICAgICAgICAgIFdyYXBwZXIuV3JhcHBlZENvbXBvbmVudCA9IENvbXBvbmVudDtcbiAgICAgICAgICAgIHJldHVybiBXcmFwcGVyO1xuICAgICAgICB9O1xuICAgIH1cbiAgICByZXR1cm4gd2l0aFJvdXRlcjtcbn1cbmV4cG9ydHMuZGVmYXVsdCA9IGVuaGFuY2VXaXRoUm91dGVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19jcmVhdGVCaW5kaW5nID0gKHRoaXMgJiYgdGhpcy5fX2NyZWF0ZUJpbmRpbmcpIHx8IChPYmplY3QuY3JlYXRlID8gKGZ1bmN0aW9uKG8sIG0sIGssIGsyKSB7XG4gICAgaWYgKGsyID09PSB1bmRlZmluZWQpIGsyID0gaztcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkobywgazIsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBmdW5jdGlvbigpIHsgcmV0dXJuIG1ba107IH0gfSk7XG59KSA6IChmdW5jdGlvbihvLCBtLCBrLCBrMikge1xuICAgIGlmIChrMiA9PT0gdW5kZWZpbmVkKSBrMiA9IGs7XG4gICAgb1trMl0gPSBtW2tdO1xufSkpO1xudmFyIF9fZXhwb3J0U3RhciA9ICh0aGlzICYmIHRoaXMuX19leHBvcnRTdGFyKSB8fCBmdW5jdGlvbihtLCBleHBvcnRzKSB7XG4gICAgZm9yICh2YXIgcCBpbiBtKSBpZiAocCAhPT0gXCJkZWZhdWx0XCIgJiYgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChleHBvcnRzLCBwKSkgX19jcmVhdGVCaW5kaW5nKGV4cG9ydHMsIG0sIHApO1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNNaW5pQXBwUGxhdGZvcm0gPSB2b2lkIDA7XG52YXIgdW5pdmVyc2FsX2Vudl8xID0gcmVxdWlyZShcInVuaXZlcnNhbC1lbnZcIik7XG5leHBvcnRzLmlzTWluaUFwcFBsYXRmb3JtID0gKHVuaXZlcnNhbF9lbnZfMS5pc01pbmlBcHAgfHwgdW5pdmVyc2FsX2Vudl8xLmlzV2VDaGF0TWluaVByb2dyYW0gfHwgdW5pdmVyc2FsX2Vudl8xLmlzQnl0ZURhbmNlTWljcm9BcHAgfHwgdW5pdmVyc2FsX2Vudl8xLmlzQmFpZHVTbWFydFByb2dyYW0gfHwgdW5pdmVyc2FsX2Vudl8xLmlzS3VhaVNob3VNaW5pUHJvZ3JhbSkgJiYgIXVuaXZlcnNhbF9lbnZfMS5pc1dlYjtcbl9fZXhwb3J0U3RhcihyZXF1aXJlKFwidW5pdmVyc2FsLWVudlwiKSwgZXhwb3J0cyk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBxdWVyeVN0cmluZyA9IHJlcXVpcmUoXCJxdWVyeS1zdHJpbmdcIik7XG52YXIgaGlzdG9yeV8xID0gcmVxdWlyZShcIi4vaGlzdG9yeVwiKTtcbmZ1bmN0aW9uIGRlZmF1bHRfMSgpIHtcbiAgICB2YXIgaGlzdG9yeSA9IGhpc3RvcnlfMS5nZXRIaXN0b3J5KCk7XG4gICAgaWYgKGhpc3RvcnkgJiYgaGlzdG9yeS5sb2NhdGlvbiAmJiBoaXN0b3J5LmxvY2F0aW9uLnNlYXJjaCkge1xuICAgICAgICByZXR1cm4gcXVlcnlTdHJpbmcucGFyc2UoaGlzdG9yeS5sb2NhdGlvbi5zZWFyY2gpO1xuICAgIH1cbiAgICByZXR1cm4ge307XG59XG5leHBvcnRzLmRlZmF1bHQgPSBkZWZhdWx0XzE7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaGlzdG9yeSA9IGV4cG9ydHMuY3JlYXRlSGlzdG9yeSA9IGV4cG9ydHMuZ2V0SGlzdG9yeSA9IHZvaWQgMDtcbnZhciBoaXN0b3J5XzEgPSByZXF1aXJlKFwiaGlzdG9yeVwiKTtcbnZhciBtaW5pYXBwX2hpc3RvcnlfMSA9IHJlcXVpcmUoXCJtaW5pYXBwLWhpc3RvcnlcIik7XG52YXIgZW52XzEgPSByZXF1aXJlKFwiLi9lbnZcIik7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbnZhciBoaXN0b3J5O1xuZXhwb3J0cy5oaXN0b3J5ID0gaGlzdG9yeTtcbmZ1bmN0aW9uIGNyZWF0ZUhpc3RvcnkoX2EpIHtcbiAgICB2YXIgcm91dGVzID0gX2Eucm91dGVzLCBjdXN0b21IaXN0b3J5ID0gX2EuY3VzdG9tSGlzdG9yeSwgdHlwZSA9IF9hLnR5cGUsIGJhc2VuYW1lID0gX2EuYmFzZW5hbWUsIGxvY2F0aW9uID0gX2EubG9jYXRpb247XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fSVNfU0VSVkVSX18pIHtcbiAgICAgICAgZXhwb3J0cy5oaXN0b3J5ID0gaGlzdG9yeSA9IGhpc3RvcnlfMS5jcmVhdGVNZW1vcnlIaXN0b3J5KCk7XG4gICAgICAgIGhpc3RvcnkubG9jYXRpb24gPSBsb2NhdGlvbjtcbiAgICB9XG4gICAgZWxzZSBpZiAoY3VzdG9tSGlzdG9yeSkge1xuICAgICAgICBleHBvcnRzLmhpc3RvcnkgPSBoaXN0b3J5ID0gY3VzdG9tSGlzdG9yeTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIC8vIEZvcmNlIG1lbW9yeSBoaXN0b3J5IHdoZW4gZW52IGlzIHdlZXggb3Iga3Jha2VuXG4gICAgICAgIGlmIChlbnZfMS5pc1dlZXggfHwgZW52XzEuaXNLcmFrZW4pIHtcbiAgICAgICAgICAgIHR5cGUgPSAnbWVtb3J5JztcbiAgICAgICAgfVxuICAgICAgICBpZiAodHlwZSA9PT0gJ2hhc2gnKSB7XG4gICAgICAgICAgICBleHBvcnRzLmhpc3RvcnkgPSBoaXN0b3J5ID0gaGlzdG9yeV8xLmNyZWF0ZUhhc2hIaXN0b3J5KHsgYmFzZW5hbWU6IGJhc2VuYW1lIH0pO1xuICAgICAgICB9XG4gICAgICAgIGVsc2UgaWYgKHR5cGUgPT09ICdicm93c2VyJykge1xuICAgICAgICAgICAgZXhwb3J0cy5oaXN0b3J5ID0gaGlzdG9yeSA9IGhpc3RvcnlfMS5jcmVhdGVCcm93c2VySGlzdG9yeSh7IGJhc2VuYW1lOiBiYXNlbmFtZSB9KTtcbiAgICAgICAgfVxuICAgICAgICBlbHNlIGlmIChlbnZfMS5pc01pbmlBcHBQbGF0Zm9ybSkge1xuICAgICAgICAgICAgd2luZG93Lmhpc3RvcnkgPSBtaW5pYXBwX2hpc3RvcnlfMS5jcmVhdGVNaW5pQXBwSGlzdG9yeShyb3V0ZXMpO1xuICAgICAgICAgICAgd2luZG93LmxvY2F0aW9uID0gd2luZG93Lmhpc3RvcnkubG9jYXRpb247XG4gICAgICAgICAgICBleHBvcnRzLmhpc3RvcnkgPSBoaXN0b3J5ID0gd2luZG93Lmhpc3Rvcnk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBleHBvcnRzLmhpc3RvcnkgPSBoaXN0b3J5ID0gaGlzdG9yeV8xLmNyZWF0ZU1lbW9yeUhpc3RvcnkoKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gaGlzdG9yeTtcbn1cbmV4cG9ydHMuY3JlYXRlSGlzdG9yeSA9IGNyZWF0ZUhpc3Rvcnk7XG5mdW5jdGlvbiBnZXRIaXN0b3J5KCkge1xuICAgIHJldHVybiBoaXN0b3J5O1xufVxuZXhwb3J0cy5nZXRIaXN0b3J5ID0gZ2V0SGlzdG9yeTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5oaXN0b3J5ID0gdm9pZCAwO1xudmFyIGVuaGFuY2VXaXRoUm91dGVyXzEgPSByZXF1aXJlKFwiLi9lbmhhbmNlV2l0aFJvdXRlclwiKTtcbnZhciBhcHBMaWZlQ3ljbGVzXzEgPSByZXF1aXJlKFwiLi9hcHBMaWZlQ3ljbGVzXCIpO1xudmFyIHBhZ2VMaWZlQ3ljbGVzXzEgPSByZXF1aXJlKFwiLi9wYWdlTGlmZUN5Y2xlc1wiKTtcbnZhciBlbWl0TGlmZUN5Y2xlc18xID0gcmVxdWlyZShcIi4vZW1pdExpZmVDeWNsZXNcIik7XG52YXIgY3JlYXRlQmFzZUFwcF8xID0gcmVxdWlyZShcIi4vY3JlYXRlQmFzZUFwcFwiKTtcbnZhciBoaXN0b3J5XzEgPSByZXF1aXJlKFwiLi9oaXN0b3J5XCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaGlzdG9yeVwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gaGlzdG9yeV8xLmhpc3Rvcnk7IH0gfSk7XG52YXIgdXRpbHNfMSA9IHJlcXVpcmUoXCIuL3V0aWxzXCIpO1xudmFyIG5hdGl2ZUV2ZW50TGlzdGVuZXJfMSA9IHJlcXVpcmUoXCIuL25hdGl2ZUV2ZW50TGlzdGVuZXJcIik7XG52YXIgZ2V0U2VhcmNoUGFyYW1zXzEgPSByZXF1aXJlKFwiLi9nZXRTZWFyY2hQYXJhbXNcIik7XG52YXIgY29sbGVjdEFwcExpZmVDeWNsZV8xID0gcmVxdWlyZShcIi4vY29sbGVjdEFwcExpZmVDeWNsZVwiKTtcbmZ1bmN0aW9uIGNyZWF0ZVNoYXJlQVBJKF9hLCBsb2FkUnVudGltZU1vZHVsZXMpIHtcbiAgICB2YXIgd2l0aFJvdXRlciA9IF9hLndpdGhSb3V0ZXIsIGNyZWF0ZUVsZW1lbnQgPSBfYS5jcmVhdGVFbGVtZW50LCB1c2VFZmZlY3QgPSBfYS51c2VFZmZlY3QsIF9iID0gX2EuaW5pdEhpc3RvcnksIGluaXRIaXN0b3J5ID0gX2IgPT09IHZvaWQgMCA/IHRydWUgOiBfYjtcbiAgICB2YXIgX2MgPSBwYWdlTGlmZUN5Y2xlc18xLmNyZWF0ZVVzZVBhZ2VMaWZlQ3ljbGUoeyB1c2VFZmZlY3Q6IHVzZUVmZmVjdCB9KSwgdXNlUGFnZVNob3cgPSBfYy51c2VQYWdlU2hvdywgdXNlUGFnZUhpZGUgPSBfYy51c2VQYWdlSGlkZTtcbiAgICByZXR1cm4ge1xuICAgICAgICBjcmVhdGVCYXNlQXBwOiBjcmVhdGVCYXNlQXBwXzEuZGVmYXVsdCh7IGxvYWRSdW50aW1lTW9kdWxlczogbG9hZFJ1bnRpbWVNb2R1bGVzLCBjcmVhdGVFbGVtZW50OiBjcmVhdGVFbGVtZW50LCBpbml0SGlzdG9yeTogaW5pdEhpc3RvcnkgfSksXG4gICAgICAgIC8vIGhpc3RvcnkgYXBpXG4gICAgICAgIHdpdGhSb3V0ZXI6IGVuaGFuY2VXaXRoUm91dGVyXzEuZGVmYXVsdCh7IHdpdGhSb3V0ZXI6IHdpdGhSb3V0ZXIsIGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQgfSksXG4gICAgICAgIGNyZWF0ZUhpc3Rvcnk6IGhpc3RvcnlfMS5jcmVhdGVIaXN0b3J5LFxuICAgICAgICBnZXRIaXN0b3J5OiBoaXN0b3J5XzEuZ2V0SGlzdG9yeSxcbiAgICAgICAgZ2V0U2VhcmNoUGFyYW1zOiBnZXRTZWFyY2hQYXJhbXNfMS5kZWZhdWx0LFxuICAgICAgICAvLyBsaWZlQ3ljbGUgYXBpXG4gICAgICAgIGVtaXRMaWZlQ3ljbGVzOiBlbWl0TGlmZUN5Y2xlc18xLmRlZmF1bHQsXG4gICAgICAgIGNvbGxlY3RBcHBMaWZlQ3ljbGU6IGNvbGxlY3RBcHBMaWZlQ3ljbGVfMS5kZWZhdWx0LFxuICAgICAgICB1c2VQYWdlU2hvdzogdXNlUGFnZVNob3csXG4gICAgICAgIHVzZVBhZ2VIaWRlOiB1c2VQYWdlSGlkZSxcbiAgICAgICAgd2l0aFBhZ2VMaWZlQ3ljbGU6IHBhZ2VMaWZlQ3ljbGVzXzEud2l0aFBhZ2VMaWZlQ3ljbGUsXG4gICAgICAgIGFkZEFwcExpZmVDeWNsZTogYXBwTGlmZUN5Y2xlc18xLmFkZEFwcExpZmVDeWNsZSxcbiAgICAgICAgLy8gdXRpbHMgYXBpXG4gICAgICAgIHBhdGhSZWRpcmVjdDogdXRpbHNfMS5wYXRoUmVkaXJlY3QsXG4gICAgICAgIHJlZ2lzdGVyTmF0aXZlRXZlbnRMaXN0ZW5lcnM6IG5hdGl2ZUV2ZW50TGlzdGVuZXJfMS5yZWdpc3Rlck5hdGl2ZUV2ZW50TGlzdGVuZXJzLFxuICAgICAgICBhZGROYXRpdmVFdmVudExpc3RlbmVyOiBuYXRpdmVFdmVudExpc3RlbmVyXzEuYWRkTmF0aXZlRXZlbnRMaXN0ZW5lcixcbiAgICAgICAgcmVtb3ZlTmF0aXZlRXZlbnRMaXN0ZW5lcjogbmF0aXZlRXZlbnRMaXN0ZW5lcl8xLnJlbW92ZU5hdGl2ZUV2ZW50TGlzdGVuZXJcbiAgICB9O1xufVxuZXhwb3J0cy5kZWZhdWx0ID0gY3JlYXRlU2hhcmVBUEk7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMucmVtb3ZlTmF0aXZlRXZlbnRMaXN0ZW5lciA9IGV4cG9ydHMuYWRkTmF0aXZlRXZlbnRMaXN0ZW5lciA9IGV4cG9ydHMucmVnaXN0ZXJOYXRpdmVFdmVudExpc3RlbmVycyA9IHZvaWQgMDtcbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuZnVuY3Rpb24gcmVnaXN0ZXJOYXRpdmVFdmVudExpc3RlbmVycyhLbGFzcywgZXZlbnRzKSB7XG4gICAgLy8gRm9yIHJheCBtaW5pYXBwIHJ1bnRpbWUgYmFiZWwgcGx1Z2lucyBwcmV2IGNvbXBpbGVcbn1cbmV4cG9ydHMucmVnaXN0ZXJOYXRpdmVFdmVudExpc3RlbmVycyA9IHJlZ2lzdGVyTmF0aXZlRXZlbnRMaXN0ZW5lcnM7XG5mdW5jdGlvbiBhZGROYXRpdmVFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2spIHtcbiAgICBkb2N1bWVudC5hZGRFdmVudExpc3RlbmVyKGV2ZW50TmFtZSwgY2FsbGJhY2spO1xufVxuZXhwb3J0cy5hZGROYXRpdmVFdmVudExpc3RlbmVyID0gYWRkTmF0aXZlRXZlbnRMaXN0ZW5lcjtcbmZ1bmN0aW9uIHJlbW92ZU5hdGl2ZUV2ZW50TGlzdGVuZXIoZXZldE5hbWUsIGNhbGxiYWNrKSB7XG4gICAgZG9jdW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmV0TmFtZSwgY2FsbGJhY2spO1xufVxuZXhwb3J0cy5yZW1vdmVOYXRpdmVFdmVudExpc3RlbmVyID0gcmVtb3ZlTmF0aXZlRXZlbnRMaXN0ZW5lcjtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fZXh0ZW5kcyA9ICh0aGlzICYmIHRoaXMuX19leHRlbmRzKSB8fCAoZnVuY3Rpb24gKCkge1xuICAgIHZhciBleHRlbmRTdGF0aWNzID0gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyA9IE9iamVjdC5zZXRQcm90b3R5cGVPZiB8fFxuICAgICAgICAgICAgKHsgX19wcm90b19fOiBbXSB9IGluc3RhbmNlb2YgQXJyYXkgJiYgZnVuY3Rpb24gKGQsIGIpIHsgZC5fX3Byb3RvX18gPSBiOyB9KSB8fFxuICAgICAgICAgICAgZnVuY3Rpb24gKGQsIGIpIHsgZm9yICh2YXIgcCBpbiBiKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGIsIHApKSBkW3BdID0gYltwXTsgfTtcbiAgICAgICAgcmV0dXJuIGV4dGVuZFN0YXRpY3MoZCwgYik7XG4gICAgfTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGQsIGIpIHtcbiAgICAgICAgaWYgKHR5cGVvZiBiICE9PSBcImZ1bmN0aW9uXCIgJiYgYiAhPT0gbnVsbClcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDbGFzcyBleHRlbmRzIHZhbHVlIFwiICsgU3RyaW5nKGIpICsgXCIgaXMgbm90IGEgY29uc3RydWN0b3Igb3IgbnVsbFwiKTtcbiAgICAgICAgZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICAgICAgZnVuY3Rpb24gX18oKSB7IHRoaXMuY29uc3RydWN0b3IgPSBkOyB9XG4gICAgICAgIGQucHJvdG90eXBlID0gYiA9PT0gbnVsbCA/IE9iamVjdC5jcmVhdGUoYikgOiAoX18ucHJvdG90eXBlID0gYi5wcm90b3R5cGUsIG5ldyBfXygpKTtcbiAgICB9O1xufSkoKTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuY3JlYXRlVXNlUGFnZUxpZmVDeWNsZSA9IGV4cG9ydHMud2l0aFBhZ2VMaWZlQ3ljbGUgPSBleHBvcnRzLmVtaXQgPSB2b2lkIDA7XG52YXIgZW52XzEgPSByZXF1aXJlKFwiLi9lbnZcIik7XG52YXIgY29uc3RhbnRzXzEgPSByZXF1aXJlKFwiLi9jb25zdGFudHNcIik7XG52YXIgcm91dGVyXzEgPSByZXF1aXJlKFwiLi9yb3V0ZXJcIik7XG4vLyB2aXNpYmxlTGlzdGVuZXJzID0+IHsgW3BhdGhuYW1lXTogeyBzaG93OiBbXSwgaGlkZTogW10gfSB9XG52YXIgdmlzaWJsZUxpc3RlbmVycyA9IHt9O1xuZnVuY3Rpb24gYWRkUGFnZUxpZmVDeWNsZShjeWNsZSwgY2FsbGJhY2spIHtcbiAgICB2YXIgX2E7XG4gICAgaWYgKGVudl8xLmlzTWluaUFwcFBsYXRmb3JtKSB7XG4gICAgICAgIGRvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoY29uc3RhbnRzXzEuTUlOSUFQUF9QQUdFX0xJRkVDWUNMRVtjeWNsZV0sIGNhbGxiYWNrKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHZhciBwYXRobmFtZSA9IHJvdXRlcl8xLmRlZmF1bHQuY3VycmVudC5wYXRobmFtZTtcbiAgICAgICAgaWYgKCF2aXNpYmxlTGlzdGVuZXJzW3BhdGhuYW1lXSkge1xuICAgICAgICAgICAgdmlzaWJsZUxpc3RlbmVyc1twYXRobmFtZV0gPSAoX2EgPSB7fSxcbiAgICAgICAgICAgICAgICBfYVtjb25zdGFudHNfMS5TSE9XXSA9IFtdLFxuICAgICAgICAgICAgICAgIF9hW2NvbnN0YW50c18xLkhJREVdID0gW10sXG4gICAgICAgICAgICAgICAgX2EpO1xuICAgICAgICB9XG4gICAgICAgIHZpc2libGVMaXN0ZW5lcnNbcGF0aG5hbWVdW2N5Y2xlXS5wdXNoKGNhbGxiYWNrKTtcbiAgICB9XG59XG5mdW5jdGlvbiBlbWl0KGN5Y2xlLCBwYXRobmFtZSkge1xuICAgIHZhciBfYTtcbiAgICB2YXIgYXJncyA9IFtdO1xuICAgIGZvciAodmFyIF9pID0gMjsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgIGFyZ3NbX2kgLSAyXSA9IGFyZ3VtZW50c1tfaV07XG4gICAgfVxuICAgIC8vIEVuc3VyZSBxdWV1ZSBleGlzdHNcbiAgICBpZiAodmlzaWJsZUxpc3RlbmVyc1twYXRobmFtZV0gJiYgdmlzaWJsZUxpc3RlbmVyc1twYXRobmFtZV1bY3ljbGVdKSB7XG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gdmlzaWJsZUxpc3RlbmVyc1twYXRobmFtZV1bY3ljbGVdLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICAgICAgKF9hID0gdmlzaWJsZUxpc3RlbmVyc1twYXRobmFtZV1bY3ljbGVdKVtpXS5hcHBseShfYSwgYXJncyk7XG4gICAgICAgIH1cbiAgICB9XG59XG5leHBvcnRzLmVtaXQgPSBlbWl0O1xuZnVuY3Rpb24gY3JlYXRlUGFnZUxpZmVDeWNsZSh1c2VFZmZlY3QpIHtcbiAgICByZXR1cm4gZnVuY3Rpb24gKGN5Y2xlLCBjYWxsYmFjaykge1xuICAgICAgICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgLy8gV2hlbiBjb21wb25lbnQgZGlkIG1vdW50LCBpdCB3aWxsIHRyaWdnZXIgdXNlUGFnZVNob3cgY2FsbGJhY2tcbiAgICAgICAgICAgIGlmIChjeWNsZSA9PT0gY29uc3RhbnRzXzEuU0hPVykge1xuICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgcGF0aG5hbWUgPSByb3V0ZXJfMS5kZWZhdWx0LmN1cnJlbnQucGF0aG5hbWU7XG4gICAgICAgICAgICBhZGRQYWdlTGlmZUN5Y2xlKGN5Y2xlLCBjYWxsYmFjayk7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIGlmICh2aXNpYmxlTGlzdGVuZXJzW3BhdGhuYW1lXSkge1xuICAgICAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSB2aXNpYmxlTGlzdGVuZXJzW3BhdGhuYW1lXVtjeWNsZV0uaW5kZXhPZihjYWxsYmFjayk7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpbmRleCA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2aXNpYmxlTGlzdGVuZXJzW3BhdGhuYW1lXVtjeWNsZV0uc3BsaWNlKGluZGV4LCAxKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcmVhY3QtaG9va3MvZXhoYXVzdGl2ZS1kZXBzXG4gICAgICAgIH0sIFtdKTtcbiAgICB9O1xufVxuZnVuY3Rpb24gd2l0aFBhZ2VMaWZlQ3ljbGUoQ29tcG9uZW50KSB7XG4gICAgdmFyIFdyYXBwZXIgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoX3N1cGVyKSB7XG4gICAgICAgIF9fZXh0ZW5kcyhXcmFwcGVyLCBfc3VwZXIpO1xuICAgICAgICBmdW5jdGlvbiBXcmFwcGVyKCkge1xuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcbiAgICAgICAgICAgIGZvciAodmFyIF9pID0gMDsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICAgICAgICAgICAgYXJnc1tfaV0gPSBhcmd1bWVudHNbX2ldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIF90aGlzID0gX3N1cGVyLmFwcGx5KHRoaXMsIGFyZ3MpIHx8IHRoaXM7XG4gICAgICAgICAgICBpZiAoX3RoaXMub25TaG93KSB7XG4gICAgICAgICAgICAgICAgaWYgKCFlbnZfMS5pc01pbmlBcHBQbGF0Zm9ybSkge1xuICAgICAgICAgICAgICAgICAgICAvLyBJbiBNaW5pQXBwIHBsYXRmb3JtIHNob3cgZXZlbnQgd2lsbCB0cmlnZ2VyIGFmdGVyIGFkZFBhZ2VMaWZlQ3ljbGUsIHNvIGl0IG5lZWRuJ3QgYmUgZXhlY3V0ZSBpbiBjb25zdHJ1Y3RvclxuICAgICAgICAgICAgICAgICAgICBfdGhpcy5vblNob3coKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYWRkUGFnZUxpZmVDeWNsZShjb25zdGFudHNfMS5TSE9XLCBfdGhpcy5vblNob3cuYmluZChfdGhpcykpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKF90aGlzLm9uSGlkZSkge1xuICAgICAgICAgICAgICAgIGFkZFBhZ2VMaWZlQ3ljbGUoY29uc3RhbnRzXzEuSElERSwgX3RoaXMub25IaWRlLmJpbmQoX3RoaXMpKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIC8vIEtlZXAgdGhlIHBhdGggbmFtZSBjb3JyZXNwb25kaW5nIHRvIGN1cnJlbnQgcGFnZSBjb21wb25lbnRcbiAgICAgICAgICAgIF90aGlzLnBhdGhuYW1lID0gcm91dGVyXzEuZGVmYXVsdC5jdXJyZW50LnBhdGhuYW1lO1xuICAgICAgICAgICAgcmV0dXJuIF90aGlzO1xuICAgICAgICB9XG4gICAgICAgIFdyYXBwZXIucHJvdG90eXBlLmNvbXBvbmVudFdpbGxVbm1vdW50ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hO1xuICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXVudXNlZC1leHByZXNzaW9uc1xuICAgICAgICAgICAgKF9hID0gX3N1cGVyLnByb3RvdHlwZS5jb21wb25lbnRXaWxsVW5tb3VudCkgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwodGhpcyk7XG4gICAgICAgICAgICB2aXNpYmxlTGlzdGVuZXJzW3RoaXMucGF0aG5hbWVdID0gbnVsbDtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIFdyYXBwZXI7XG4gICAgfShDb21wb25lbnQpKTtcbiAgICBXcmFwcGVyLmRpc3BsYXlOYW1lID0gXCJ3aXRoUGFnZUxpZmVDeWNsZShcIiArIChDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUpICsgXCIpXCI7XG4gICAgcmV0dXJuIFdyYXBwZXI7XG59XG5leHBvcnRzLndpdGhQYWdlTGlmZUN5Y2xlID0gd2l0aFBhZ2VMaWZlQ3ljbGU7XG5mdW5jdGlvbiBjcmVhdGVVc2VQYWdlTGlmZUN5Y2xlKF9hKSB7XG4gICAgdmFyIHVzZUVmZmVjdCA9IF9hLnVzZUVmZmVjdDtcbiAgICB2YXIgdXNlUGFnZVNob3cgPSBmdW5jdGlvbiAoY2FsbGJhY2spIHtcbiAgICAgICAgY3JlYXRlUGFnZUxpZmVDeWNsZSh1c2VFZmZlY3QpKGNvbnN0YW50c18xLlNIT1csIGNhbGxiYWNrKTtcbiAgICB9O1xuICAgIHZhciB1c2VQYWdlSGlkZSA9IGZ1bmN0aW9uIChjYWxsYmFjaykge1xuICAgICAgICBjcmVhdGVQYWdlTGlmZUN5Y2xlKHVzZUVmZmVjdCkoY29uc3RhbnRzXzEuSElERSwgY2FsbGJhY2spO1xuICAgIH07XG4gICAgcmV0dXJuIHtcbiAgICAgICAgdXNlUGFnZVNob3c6IHVzZVBhZ2VTaG93LFxuICAgICAgICB1c2VQYWdlSGlkZTogdXNlUGFnZUhpZGVcbiAgICB9O1xufVxuZXhwb3J0cy5jcmVhdGVVc2VQYWdlTGlmZUN5Y2xlID0gY3JlYXRlVXNlUGFnZUxpZmVDeWNsZTtcbiIsIlwidXNlIHN0cmljdFwiO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xudmFyIGVudl8xID0gcmVxdWlyZShcIi4vZW52XCIpO1xudmFyIGN1cnJlbnQgPSB7XG4gICAgcGF0aG5hbWU6ICcvJyxcbiAgICB2aXNpYmlsdHlTdGF0ZTogdHJ1ZVxufTtcbnZhciByb3V0ZXIgPSB7XG4gICAgcHJldjogbnVsbCxcbiAgICBjdXJyZW50OiBjdXJyZW50XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KHJvdXRlciwgJ2N1cnJlbnQnLCB7XG4gICAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmICghZW52XzEuaXNNaW5pQXBwUGxhdGZvcm0pIHtcbiAgICAgICAgICAgIHJldHVybiBjdXJyZW50O1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBPYmplY3QuYXNzaWduKGN1cnJlbnQsIHtcbiAgICAgICAgICAgIHBhdGhuYW1lOiB3aW5kb3cuX19wYWdlSWRcbiAgICAgICAgfSk7XG4gICAgfSxcbiAgICBzZXQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICBPYmplY3QuYXNzaWduKGN1cnJlbnQsIHZhbHVlKTtcbiAgICB9XG59KTtcbmV4cG9ydHMuZGVmYXVsdCA9IHJvdXRlcjtcbiIsIlwidXNlIHN0cmljdFwiO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbnZhciBoaXN0b3J5XzEgPSByZXF1aXJlKFwiLi9oaXN0b3J5XCIpO1xudmFyIGdldFNlYXJjaFBhcmFtc18xID0gcmVxdWlyZShcIi4vZ2V0U2VhcmNoUGFyYW1zXCIpO1xudmFyIFJ1bnRpbWVNb2R1bGUgPSAvKiogQGNsYXNzICovIChmdW5jdGlvbiAoKSB7XG4gICAgZnVuY3Rpb24gUnVudGltZU1vZHVsZShhcHBDb25maWcsIGJ1aWxkQ29uZmlnLCBjb250ZXh0KSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHRoaXMuc2V0UmVuZGVyUm91dGVyID0gZnVuY3Rpb24gKHJlbmRlclJvdXRlcikge1xuICAgICAgICAgICAgX3RoaXMucmVuZGVyUm91dGVyID0gcmVuZGVyUm91dGVyO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndyYXBwZXJSb3V0ZXJSZW5kZXIgPSBmdW5jdGlvbiAod3JhcHBlcikge1xuICAgICAgICAgICAgLy8gcGFzcyBvcmlnaW4gcm91dGVyIHJlbmRlciBmb3IgY3VzdG9tIHJlcXVpcmVtZW50XG4gICAgICAgICAgICBfdGhpcy5yZW5kZXJSb3V0ZXIgPSB3cmFwcGVyKF90aGlzLnJlbmRlclJvdXRlcik7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuYWRkUHJvdmlkZXIgPSBmdW5jdGlvbiAoUHJvdmlkZXIpIHtcbiAgICAgICAgICAgIF90aGlzLkFwcFByb3ZpZGVyLnB1c2goUHJvdmlkZXIpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLmFkZERPTVJlbmRlciA9IGZ1bmN0aW9uIChyZW5kZXIpIHtcbiAgICAgICAgICAgIF90aGlzLm1vZGlmeURPTVJlbmRlciA9IHJlbmRlcjtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5tb2RpZnlSb3V0ZXMgPSBmdW5jdGlvbiAobW9kaWZ5Rm4pIHtcbiAgICAgICAgICAgIF90aGlzLm1vZGlmeVJvdXRlc1JlZ2lzdHJhdGlvbi5wdXNoKG1vZGlmeUZuKTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5tb2RpZnlSb3V0ZXNDb21wb25lbnQgPSBmdW5jdGlvbiAobW9kaWZ5KSB7XG4gICAgICAgICAgICBfdGhpcy5yb3V0ZXNDb21wb25lbnQgPSBtb2RpZnkoX3RoaXMucm91dGVzQ29tcG9uZW50KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy53cmFwcGVyUm91dGVDb21wb25lbnQgPSBmdW5jdGlvbiAod3JhcHBlclJvdXRlKSB7XG4gICAgICAgICAgICBfdGhpcy53cmFwcGVyUm91dGVSZWdpc3RyYXRpb24ucHVzaCh3cmFwcGVyUm91dGUpO1xuICAgICAgICB9O1xuICAgICAgICB0aGlzLndyYXBwZXJSb3V0ZXMgPSBmdW5jdGlvbiAocm91dGVzKSB7XG4gICAgICAgICAgICByZXR1cm4gcm91dGVzLm1hcChmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICAgICAgICAgIGlmIChpdGVtLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgICAgIGl0ZW0uY2hpbGRyZW4gPSBfdGhpcy53cmFwcGVyUm91dGVzKGl0ZW0uY2hpbGRyZW4pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBlbHNlIGlmIChpdGVtLmNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgICAgICBpdGVtLnJvdXRlV3JhcHBlcnMgPSBfdGhpcy53cmFwcGVyUm91dGVSZWdpc3RyYXRpb247XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBpdGVtO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH07XG4gICAgICAgIHRoaXMuZ2V0QXBwUm91dGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIHJvdXRlcyA9IF90aGlzLndyYXBwZXJSb3V0ZXMoX3RoaXMubW9kaWZ5Um91dGVzUmVnaXN0cmF0aW9uLnJlZHVjZShmdW5jdGlvbiAoYWNjLCBjdXJyKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGN1cnIoYWNjKTtcbiAgICAgICAgICAgIH0sIFtdKSk7XG4gICAgICAgICAgICByZXR1cm4gX3RoaXMucmVuZGVyUm91dGVyKHJvdXRlcywgX3RoaXMucm91dGVzQ29tcG9uZW50KTtcbiAgICAgICAgfTtcbiAgICAgICAgdGhpcy5yZW5kZXJSb3V0ZXIgPSBmdW5jdGlvbiAoKSB7IHJldHVybiBmdW5jdGlvbiAoKSB7IHJldHVybiBjb250ZXh0LmNyZWF0ZUVsZW1lbnQoJ2RpdicsIG51bGwsICdObyByb3V0ZScpOyB9OyB9O1xuICAgICAgICB0aGlzLnJvdXRlc0NvbXBvbmVudCA9IGZhbHNlO1xuICAgICAgICB0aGlzLkFwcFByb3ZpZGVyID0gW107XG4gICAgICAgIHRoaXMuYXBwQ29uZmlnID0gYXBwQ29uZmlnO1xuICAgICAgICB0aGlzLmJ1aWxkQ29uZmlnID0gYnVpbGRDb25maWc7XG4gICAgICAgIHRoaXMuY29udGV4dCA9IGNvbnRleHQ7XG4gICAgICAgIHRoaXMubW9kaWZ5RE9NUmVuZGVyID0gbnVsbDtcbiAgICAgICAgdGhpcy5tb2RpZnlSb3V0ZXNSZWdpc3RyYXRpb24gPSBbXTtcbiAgICAgICAgdGhpcy53cmFwcGVyUm91dGVSZWdpc3RyYXRpb24gPSBbXTtcbiAgICB9XG4gICAgUnVudGltZU1vZHVsZS5wcm90b3R5cGUubG9hZE1vZHVsZSA9IGZ1bmN0aW9uIChtb2R1bGUpIHtcbiAgICAgICAgdmFyIHJ1bnRpbWVBUEkgPSB7XG4gICAgICAgICAgICBzZXRSZW5kZXJSb3V0ZXI6IHRoaXMuc2V0UmVuZGVyUm91dGVyLFxuICAgICAgICAgICAgYWRkUHJvdmlkZXI6IHRoaXMuYWRkUHJvdmlkZXIsXG4gICAgICAgICAgICBhZGRET01SZW5kZXI6IHRoaXMuYWRkRE9NUmVuZGVyLFxuICAgICAgICAgICAgbW9kaWZ5Um91dGVzOiB0aGlzLm1vZGlmeVJvdXRlcyxcbiAgICAgICAgICAgIHdyYXBwZXJSb3V0ZUNvbXBvbmVudDogdGhpcy53cmFwcGVyUm91dGVDb21wb25lbnQsXG4gICAgICAgICAgICB3cmFwcGVyUm91dGVyUmVuZGVyOiB0aGlzLndyYXBwZXJSb3V0ZXJSZW5kZXIsXG4gICAgICAgICAgICBtb2RpZnlSb3V0ZXNDb21wb25lbnQ6IHRoaXMubW9kaWZ5Um91dGVzQ29tcG9uZW50LFxuICAgICAgICAgICAgY3JlYXRlSGlzdG9yeTogaGlzdG9yeV8xLmNyZWF0ZUhpc3RvcnksXG4gICAgICAgICAgICBnZXRTZWFyY2hQYXJhbXM6IGdldFNlYXJjaFBhcmFtc18xLmRlZmF1bHQsXG4gICAgICAgIH07XG4gICAgICAgIGlmIChtb2R1bGUpXG4gICAgICAgICAgICAobW9kdWxlLmRlZmF1bHQgfHwgbW9kdWxlKShfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcnVudGltZUFQSSksIHsgYXBwQ29uZmlnOiB0aGlzLmFwcENvbmZpZywgYnVpbGRDb25maWc6IHRoaXMuYnVpbGRDb25maWcsIGNvbnRleHQ6IHRoaXMuY29udGV4dCB9KSk7XG4gICAgfTtcbiAgICBSdW50aW1lTW9kdWxlLnByb3RvdHlwZS5jb21wb3NlQXBwUHJvdmlkZXIgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIGlmICghdGhpcy5BcHBQcm92aWRlci5sZW5ndGgpXG4gICAgICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgICAgcmV0dXJuIHRoaXMuQXBwUHJvdmlkZXIucmVkdWNlKGZ1bmN0aW9uIChQcm92aWRlckNvbXBvbmVudCwgQ3VycmVudFByb3ZpZGVyKSB7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNoaWxkcmVuID0gX2EuY2hpbGRyZW4sIHJlc3QgPSBfX3Jlc3QoX2EsIFtcImNoaWxkcmVuXCJdKTtcbiAgICAgICAgICAgICAgICB2YXIgZWxlbWVudCA9IEN1cnJlbnRQcm92aWRlclxuICAgICAgICAgICAgICAgICAgICA/IF90aGlzLmNvbnRleHQuY3JlYXRlRWxlbWVudChDdXJyZW50UHJvdmlkZXIsIF9fYXNzaWduKHt9LCByZXN0KSwgY2hpbGRyZW4pXG4gICAgICAgICAgICAgICAgICAgIDogX3RoaXMuY29udGV4dC5jcmVhdGVFbGVtZW50KGNoaWxkcmVuKTtcbiAgICAgICAgICAgICAgICByZXR1cm4gX3RoaXMuY29udGV4dC5jcmVhdGVFbGVtZW50KFByb3ZpZGVyQ29tcG9uZW50LCBfX2Fzc2lnbih7fSwgcmVzdCksIGVsZW1lbnQpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSk7XG4gICAgfTtcbiAgICByZXR1cm4gUnVudGltZU1vZHVsZTtcbn0oKSk7XG5leHBvcnRzLmRlZmF1bHQgPSBSdW50aW1lTW9kdWxlO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLnBhdGhSZWRpcmVjdCA9IGV4cG9ydHMuaXNGdW5jdGlvbiA9IHZvaWQgMDtcbnZhciB0eXBlXzEgPSByZXF1aXJlKFwiLi90eXBlXCIpO1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiaXNGdW5jdGlvblwiLCB7IGVudW1lcmFibGU6IHRydWUsIGdldDogZnVuY3Rpb24gKCkgeyByZXR1cm4gdHlwZV8xLmlzRnVuY3Rpb247IH0gfSk7XG52YXIgcGF0aFJlZGlyZWN0XzEgPSByZXF1aXJlKFwiLi9wYXRoUmVkaXJlY3RcIik7XG5leHBvcnRzLnBhdGhSZWRpcmVjdCA9IHBhdGhSZWRpcmVjdF8xLmRlZmF1bHQ7XG4iLCJcInVzZSBzdHJpY3RcIjtcbi8qIGVzbGludCBuby11bmRlZjowICovXG4vLyBJbiBhIFNpbmdsZS1QYWdlIEFwcGxpY2F0aW9uLCBzb21ldGltZXMgd2UgbmVlZCB0byBqdW1wIHRvIGEgc3BlY2lmaWMgcm91dGUuXG4vLyBJdCBpcyB2ZXJ5IHNpbXBsZSBpbiB0aGUgV2ViIGFwcGxpY2F0aW9uLCB1cmwgbGlrZSAjL3h4eCBjYW4ganVtcCB0byB0aGUgY29ycmVzcG9uZGluZyBwYWdlLlxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuLy8gVGhpbmdzIHNlZW0gdG8gYmUgdmVyeSBjb21wbGljYXRlZCBpbiBXZWV4LCBiZWNhdXNlIHVzaW5nIGBNZW1vcnlIaXN0b3J5YCxcbi8vIHdoaWNoIGlzIHVzZWQgYXMgYSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYW5kIG1heSBhbHNvIGJlIHVzZWQgaW4gbm9uLURPTSBlbnZpcm9ubWVudHMuXG4vLyBXZSBjYW5ub3QganVtcCBkaXJlY3RseSB0aHJvdWdoIHVybC5cbnZhciB1bml2ZXJzYWxfZW52XzEgPSByZXF1aXJlKFwidW5pdmVyc2FsLWVudlwiKTtcbi8vIFdlIHdhbnQgdG8gY29udHJvbCBhcHBsaWNhdGlvbnMgb24gZGlmZmVyZW50IHBsYXRmb3JtcyB0byBqdW1wIHRvIHNwZWNpZmljIHBhZ2VzIHRocm91Z2ggdW5pZmllZCBwYXJhbWV0ZXJzLlxuLy8gTGlrZSBodHRwczovL3h4eC5jb20/X3BhdGg9L3BhZ2UxLCB1c2UgYF9wYXRoYCB0byBqdW1wIHRvIHRoZSBzcGVjaWZpYyByb3V0ZS5cbnZhciBUQVJHRVRfUEFUSF9SRUcgPSAvWz8mXV9wYXRoPShbXiYjXSspL2k7XG5mdW5jdGlvbiBwYXRoUmVkaXJlY3QoaGlzdG9yeSwgcm91dGVzKSB7XG4gICAgdmFyIHRhcmdldFBhdGggPSAnJztcbiAgICB2YXIgdGFyZ2V0UXVlcnkgPSBudWxsO1xuICAgIC8vIEluIFdlYiwgdXNlIGxvY2F0aW9uLnNlYXJjaCBmaXJzdFxuICAgIGlmICh1bml2ZXJzYWxfZW52XzEuaXNXZWIgJiYgVEFSR0VUX1BBVEhfUkVHLnRlc3Qod2luZG93LmxvY2F0aW9uLnNlYXJjaCkpIHtcbiAgICAgICAgdGFyZ2V0UXVlcnkgPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoLm1hdGNoKFRBUkdFVF9QQVRIX1JFRyk7XG4gICAgfVxuICAgIC8vIEluIFdlZXgsIHVzZSBsb2NhdGlvbi5ocmVmIGZpcnN0LiBTdXBwb3J0IGJ5IHJheC13ZWV4IGZyYW1ld29ya1xuICAgIGlmICh1bml2ZXJzYWxfZW52XzEuaXNXZWV4ICYmIFRBUkdFVF9QQVRIX1JFRy50ZXN0KHdpbmRvdy5sb2NhdGlvbi5ocmVmKSkge1xuICAgICAgICB0YXJnZXRRdWVyeSA9IHdpbmRvdy5sb2NhdGlvbi5ocmVmLm1hdGNoKFRBUkdFVF9QQVRIX1JFRyk7XG4gICAgfVxuICAgIC8vIElmIHRoZXJlIGlzIG5vIGBfcGF0aGAgaW4gdXJsIHNlYXJjaCwgdHJ5IGhpc3RvcnkubG9jYXRpb24uXG4gICAgaWYgKCF0YXJnZXRRdWVyeSAmJiBUQVJHRVRfUEFUSF9SRUcudGVzdChoaXN0b3J5LmxvY2F0aW9uLnNlYXJjaCkpIHtcbiAgICAgICAgdGFyZ2V0UXVlcnkgPSBoaXN0b3J5LmxvY2F0aW9uLnNlYXJjaC5tYXRjaChUQVJHRVRfUEFUSF9SRUcpO1xuICAgIH1cbiAgICB2YXIgaXNDb25maXJtZWQgPSBmYWxzZTtcbiAgICB0YXJnZXRQYXRoID0gdGFyZ2V0UXVlcnkgPyB0YXJnZXRRdWVyeVsxXSA6ICcnO1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gcm91dGVzLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgICAgICBpZiAodGFyZ2V0UGF0aCA9PT0gcm91dGVzW2ldLnBhdGgpIHtcbiAgICAgICAgICAgIGlzQ29uZmlybWVkID0gdHJ1ZTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIGlmICh0YXJnZXRQYXRoICYmICFpc0NvbmZpcm1lZCkge1xuICAgICAgICBjb25zb2xlLndhcm4oJ1dhcm5pbmc6IHVybCBxdWVyeSBgX3BhdGhgIHNob3VsZCBiZSBhbiBleGlzdCBwYXRoIGluIGFwcC5qc29uLCBzZWU6IGh0dHBzOi8vcmF4LmpzLm9yZy9kb2NzL2d1aWRlL3JvdXRlcyAnKTtcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICAvLyBJZiBgdGFyZ2V0UGF0aGAgZXhpc3RzLCBqdW1wIHRvIHRoZSBzcGVjaWZpYyByb3V0ZS5cbiAgICBpZiAodGFyZ2V0UGF0aCkge1xuICAgICAgICBoaXN0b3J5LnJlcGxhY2UodGFyZ2V0UGF0aCArIGhpc3RvcnkubG9jYXRpb24uc2VhcmNoKTtcbiAgICB9XG59XG5leHBvcnRzLmRlZmF1bHQgPSBwYXRoUmVkaXJlY3Q7XG4iLCJcInVzZSBzdHJpY3RcIjtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmV4cG9ydHMuaXNGdW5jdGlvbiA9IHZvaWQgMDtcbnZhciBpc0Z1bmN0aW9uID0gZnVuY3Rpb24gKHRhcmdldCkgeyByZXR1cm4gdHlwZW9mIHRhcmdldCA9PT0gJ2Z1bmN0aW9uJzsgfTtcbmV4cG9ydHMuaXNGdW5jdGlvbiA9IGlzRnVuY3Rpb247XG4iLCJcInVzZSBzdHJpY3RcIjtcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xuICAgICAgICBmb3IgKHZhciBzLCBpID0gMSwgbiA9IGFyZ3VtZW50cy5sZW5ndGg7IGkgPCBuOyBpKyspIHtcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXG4gICAgICAgICAgICAgICAgdFtwXSA9IHNbcF07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHQ7XG4gICAgfTtcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcbn07XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG5leHBvcnRzLmNyZWF0ZVdpdGhSb3V0ZXIgPSBleHBvcnRzLmNyZWF0ZVVzZVJvdXRlciA9IHZvaWQgMDtcbnZhciBwYXRoVG9SZWdleHBNb2R1bGUgPSByZXF1aXJlKFwicGF0aC10by1yZWdleHBcIik7XG52YXIgY2FjaGUgPSB7fTtcbnZhciBfaW5pdGlhbGl6ZWQgPSBmYWxzZTtcbnZhciBfcm91dGVyQ29uZmlnID0gbnVsbDtcbnZhciByb3V0ZXIgPSB7XG4gICAgaGlzdG9yeTogbnVsbCxcbiAgICBoYW5kbGVzOiBbXSxcbiAgICBlcnJvckhhbmRsZXI6IGZ1bmN0aW9uICgpIHsgfSxcbiAgICBhZGRIYW5kbGU6IGZ1bmN0aW9uIChoYW5kbGUpIHtcbiAgICAgICAgcmV0dXJuIHJvdXRlci5oYW5kbGVzLnB1c2goaGFuZGxlKTtcbiAgICB9LFxuICAgIHJlbW92ZUhhbmRsZTogZnVuY3Rpb24gKGhhbmRsZUlkKSB7XG4gICAgICAgIHJvdXRlci5oYW5kbGVzW2hhbmRsZUlkIC0gMV0gPSBudWxsO1xuICAgIH0sXG4gICAgdHJpZ2dlckhhbmRsZXM6IGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICAgICAgcm91dGVyLmhhbmRsZXMuZm9yRWFjaChmdW5jdGlvbiAoaGFuZGxlKSB7XG4gICAgICAgICAgICBpZiAoaGFuZGxlKSB7XG4gICAgICAgICAgICAgICAgaGFuZGxlKGNvbXBvbmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0sXG4gICAgbWF0Y2g6IGZ1bmN0aW9uIChmdWxscGF0aCkge1xuICAgICAgICBpZiAoZnVsbHBhdGggPT0gbnVsbClcbiAgICAgICAgICAgIHJldHVybjtcbiAgICAgICAgcm91dGVyLmZ1bGxwYXRoID0gZnVsbHBhdGg7XG4gICAgICAgIHZhciBwYXJlbnQgPSByb3V0ZXIucm9vdDtcbiAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICB2YXIgbWF0Y2hlZCA9IG1hdGNoUm91dGUocGFyZW50LCBwYXJlbnQucGF0aCwgZnVsbHBhdGgpO1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgZnVuY3Rpb24gbmV4dChwYXJlbnQpIHtcbiAgICAgICAgICAgIHZhciBjdXJyZW50ID0gbWF0Y2hlZC5uZXh0KCk7XG4gICAgICAgICAgICBpZiAoY3VycmVudC5kb25lKSB7XG4gICAgICAgICAgICAgICAgdmFyIGVycm9yID0gbmV3IEVycm9yKFwiTm8gbWF0Y2ggZm9yIFwiICsgZnVsbHBhdGgpO1xuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICByZXR1cm4gcm91dGVyLmVycm9ySGFuZGxlcihlcnJvciwgcm91dGVyLmhpc3RvcnkubG9jYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdmFyIGNvbXBvbmVudCA9IGN1cnJlbnQuJC5yb3V0ZS5jb21wb25lbnQ7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGNvbXBvbmVudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICAgIGNvbXBvbmVudCA9IGNvbXBvbmVudChjdXJyZW50LiQucGFyYW1zLCByb3V0ZXIuaGlzdG9yeS5sb2NhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY29tcG9uZW50IGluc3RhbmNlb2YgUHJvbWlzZSkge1xuICAgICAgICAgICAgICAgIC8vIExhenkgbG9hZGluZyBjb21wb25lbnQgYnkgaW1wb3J0KCcuL0ZvbycpXG4gICAgICAgICAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudC50aGVuKGZ1bmN0aW9uIChjb21wb25lbnQpIHtcbiAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgY3VycmVudCBmdWxscGF0aCBhdm9pZCByb3V0ZXIgaGFzIGNoYW5nZWQgYmVmb3JlIGxhenkgbG9hZGluZyBjb21wbGV0ZVxuICAgICAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgICAgIGlmIChmdWxscGF0aCA9PT0gcm91dGVyLmZ1bGxwYXRoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXIudHJpZ2dlckhhbmRsZXMoY29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoY29tcG9uZW50ICE9IG51bGwpIHtcbiAgICAgICAgICAgICAgICByb3V0ZXIudHJpZ2dlckhhbmRsZXMoY29tcG9uZW50KTtcbiAgICAgICAgICAgICAgICByZXR1cm4gY29tcG9uZW50O1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5leHQocGFyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gbmV4dChwYXJlbnQpO1xuICAgIH1cbn07XG5mdW5jdGlvbiBkZWNvZGVQYXJhbSh2YWwpIHtcbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gZGVjb2RlVVJJQ29tcG9uZW50KHZhbCk7XG4gICAgfVxuICAgIGNhdGNoIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIHZhbDtcbiAgICB9XG59XG5mdW5jdGlvbiBtYXRjaExvY2F0aW9uKF9hKSB7XG4gICAgdmFyIHBhdGhuYW1lID0gX2EucGF0aG5hbWU7XG4gICAgcm91dGVyLm1hdGNoKHBhdGhuYW1lKTtcbn1cbmZ1bmN0aW9uIG1hdGNoUGF0aChyb3V0ZSwgcGF0aG5hbWUsIHBhcmVudFBhcmFtcykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIHZhciBwYXRoID0gcm91dGUucGF0aCwgcm91dGVzID0gcm91dGUucm91dGVzLCBfYSA9IHJvdXRlLmV4YWN0LCBlbmQgPSBfYSA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9hLCBfYiA9IHJvdXRlLnN0cmljdCwgc3RyaWN0ID0gX2IgPT09IHZvaWQgMCA/IGZhbHNlIDogX2IsIF9jID0gcm91dGUuc2Vuc2l0aXZlLCBzZW5zaXRpdmUgPSBfYyA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYztcbiAgICAvLyBJZiBub3QgaGFzIHBhdGggb3IgaGFzIHJvdXRlcyB0aGF0IHNob3VsZCBkbyBub3QgZXhhY3QgbWF0Y2hcbiAgICBpZiAocGF0aCA9PSBudWxsIHx8IHJvdXRlcykge1xuICAgICAgICBlbmQgPSBmYWxzZTtcbiAgICB9XG4gICAgLy8gRGVmYXVsdCBwYXRoIGlzIGVtcHR5XG4gICAgcGF0aCA9IHBhdGggfHwgJyc7XG4gICAgdmFyIHJlZ2V4cENhY2hlS2V5ID0gcGF0aCArIFwifFwiICsgZW5kICsgXCJ8XCIgKyBzdHJpY3QgKyBcInxcIiArIHNlbnNpdGl2ZTtcbiAgICB2YXIga2V5c0NhY2hlS2V5ID0gcmVnZXhwQ2FjaGVLZXkgKyBcInxcIjtcbiAgICB2YXIgcmVnZXhwID0gY2FjaGVbcmVnZXhwQ2FjaGVLZXldO1xuICAgIHZhciBrZXlzID0gY2FjaGVba2V5c0NhY2hlS2V5XSB8fCBbXTtcbiAgICBpZiAoIXJlZ2V4cCkge1xuICAgICAgICByZWdleHAgPSBwYXRoVG9SZWdleHBNb2R1bGUucGF0aFRvUmVnZXhwKHBhdGgsIGtleXMsIHtcbiAgICAgICAgICAgIGVuZDogZW5kLFxuICAgICAgICAgICAgc3RyaWN0OiBzdHJpY3QsXG4gICAgICAgICAgICBzZW5zaXRpdmU6IHNlbnNpdGl2ZVxuICAgICAgICB9KTtcbiAgICAgICAgY2FjaGVbcmVnZXhwQ2FjaGVLZXldID0gcmVnZXhwO1xuICAgICAgICBjYWNoZVtrZXlzQ2FjaGVLZXldID0ga2V5cztcbiAgICB9XG4gICAgdmFyIHJlc3VsdCA9IHJlZ2V4cC5leGVjKHBhdGhuYW1lKTtcbiAgICBpZiAoIXJlc3VsdCkge1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gICAgdmFyIHVybCA9IHJlc3VsdFswXTtcbiAgICB2YXIgcGFyYW1zID0gX19hc3NpZ24oX19hc3NpZ24oe30sIHBhcmVudFBhcmFtcyksIHsgaGlzdG9yeTogcm91dGVyLmhpc3RvcnksIGxvY2F0aW9uOiByb3V0ZXIuaGlzdG9yeS5sb2NhdGlvbiB9KTtcbiAgICBmb3IgKHZhciBpID0gMTsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuICAgICAgICB2YXIga2V5ID0ga2V5c1tpIC0gMV07XG4gICAgICAgIHZhciBwcm9wID0ga2V5Lm5hbWU7XG4gICAgICAgIHZhciB2YWx1ZSA9IHJlc3VsdFtpXTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQgfHwgIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJhbXMsIHByb3ApKSB7XG4gICAgICAgICAgICBpZiAoa2V5LnJlcGVhdCkge1xuICAgICAgICAgICAgICAgIHBhcmFtc1twcm9wXSA9IHZhbHVlID8gdmFsdWUuc3BsaXQoa2V5LmRlbGltaXRlcikubWFwKGRlY29kZVBhcmFtKSA6IFtdO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zW3Byb3BdID0gdmFsdWUgPyBkZWNvZGVQYXJhbSh2YWx1ZSkgOiB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgICBwYXRoOiAhZW5kICYmIHVybC5jaGFyQXQodXJsLmxlbmd0aCAtIDEpID09PSAnLycgPyB1cmwuc3Vic3RyKDEpIDogdXJsLFxuICAgICAgICBwYXJhbXM6IHBhcmFtcyxcbiAgICB9O1xufVxuZnVuY3Rpb24gbWF0Y2hSb3V0ZShyb3V0ZSwgYmFzZVVybCwgcGF0aG5hbWUsIHBhcmVudFBhcmFtcykge1xuICAgIHZhciBtYXRjaGVkO1xuICAgIHZhciBjaGlsZE1hdGNoZXM7XG4gICAgdmFyIGNoaWxkSW5kZXggPSAwO1xuICAgIHJldHVybiB7XG4gICAgICAgIG5leHQ6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmICghbWF0Y2hlZCkge1xuICAgICAgICAgICAgICAgIG1hdGNoZWQgPSBtYXRjaFBhdGgocm91dGUsIHBhdGhuYW1lLCBwYXJlbnRQYXJhbXMpO1xuICAgICAgICAgICAgICAgIGlmIChtYXRjaGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkb25lOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgICQ6IHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZTogcm91dGUsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZVVybDogYmFzZVVybCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoOiBtYXRjaGVkLnBhdGgsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zOiBtYXRjaGVkLnBhcmFtcyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKG1hdGNoZWQgJiYgcm91dGUucm91dGVzKSB7XG4gICAgICAgICAgICAgICAgd2hpbGUgKGNoaWxkSW5kZXggPCByb3V0ZS5yb3V0ZXMubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2hpbGRNYXRjaGVzKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGRSb3V0ZSA9IHJvdXRlLnJvdXRlc1tjaGlsZEluZGV4XTtcbiAgICAgICAgICAgICAgICAgICAgICAgIGNoaWxkUm91dGUucGFyZW50ID0gcm91dGU7XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZE1hdGNoZXMgPSBtYXRjaFJvdXRlKGNoaWxkUm91dGUsIGJhc2VVcmwgKyBtYXRjaGVkLnBhdGgsIHBhdGhuYW1lLnN1YnN0cihtYXRjaGVkLnBhdGgubGVuZ3RoKSwgbWF0Y2hlZC5wYXJhbXMpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHZhciBjaGlsZE1hdGNoID0gY2hpbGRNYXRjaGVzLm5leHQoKTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKCFjaGlsZE1hdGNoLmRvbmUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgJDogY2hpbGRNYXRjaC4kLFxuICAgICAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBjaGlsZE1hdGNoZXMgPSBudWxsO1xuICAgICAgICAgICAgICAgICAgICBjaGlsZEluZGV4Kys7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHsgZG9uZTogdHJ1ZSB9O1xuICAgICAgICB9LFxuICAgIH07XG59XG5mdW5jdGlvbiBnZXRJbml0aWFsQ29tcG9uZW50KHJvdXRlckNvbmZpZykge1xuICAgIHZhciBJbml0aWFsQ29tcG9uZW50ID0gW107XG4gICAgaWYgKF9yb3V0ZXJDb25maWcgPT09IG51bGwpIHtcbiAgICAgICAgaWYgKHR5cGVvZiByb3V0ZXJDb25maWcgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHJvdXRlckNvbmZpZyA9IHJvdXRlckNvbmZpZygpO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgICAgICBpZiAoIXJvdXRlckNvbmZpZykge1xuICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3I6IHVzZVJvdXRlciBzaG91bGQgaGF2ZSByb3V0ZXJDb25maWcuJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoIXJvdXRlckNvbmZpZy5oaXN0b3J5IHx8ICFyb3V0ZXJDb25maWcucm91dGVzKSB7XG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcjogcm91dGVyQ29uZmlnIHNob3VsZCBjb250YWluIGhpc3RvcnkgYW5kIHJvdXRlcy4nKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICBfcm91dGVyQ29uZmlnID0gcm91dGVyQ29uZmlnO1xuICAgIH1cbiAgICBpZiAoX3JvdXRlckNvbmZpZy5Jbml0aWFsQ29tcG9uZW50KSB7XG4gICAgICAgIEluaXRpYWxDb21wb25lbnQgPSBfcm91dGVyQ29uZmlnLkluaXRpYWxDb21wb25lbnQ7XG4gICAgfVxuICAgIHJvdXRlci5oaXN0b3J5ID0gX3JvdXRlckNvbmZpZy5oaXN0b3J5O1xuICAgIHJldHVybiBJbml0aWFsQ29tcG9uZW50O1xufVxuZnVuY3Rpb24gY3JlYXRlVXNlUm91dGVyKGFwaSkge1xuICAgIHZhciB1c2VTdGF0ZSA9IGFwaS51c2VTdGF0ZSwgdXNlTGF5b3V0RWZmZWN0ID0gYXBpLnVzZUxheW91dEVmZmVjdDtcbiAgICBmdW5jdGlvbiB1c2VSb3V0ZXIocm91dGVyQ29uZmlnKSB7XG4gICAgICAgIHZhciBfYSA9IHVzZVN0YXRlKGdldEluaXRpYWxDb21wb25lbnQocm91dGVyQ29uZmlnKSksIGNvbXBvbmVudCA9IF9hWzBdLCBzZXRDb21wb25lbnQgPSBfYVsxXTtcbiAgICAgICAgdXNlTGF5b3V0RWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGlmIChfaW5pdGlhbGl6ZWQpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdFcnJvcjogdXNlUm91dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbmNlLicpO1xuICAgICAgICAgICAgX2luaXRpYWxpemVkID0gdHJ1ZTtcbiAgICAgICAgICAgIHZhciBoaXN0b3J5ID0gX3JvdXRlckNvbmZpZy5oaXN0b3J5O1xuICAgICAgICAgICAgdmFyIHJvdXRlcyA9IF9yb3V0ZXJDb25maWcucm91dGVzO1xuICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgcm91dGVyLnJvb3QgPSBBcnJheS5pc0FycmF5KHJvdXRlcykgPyB7IHJvdXRlczogcm91dGVzIH0gOiByb3V0ZXM7XG4gICAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgICAgIHZhciBoYW5kbGVJZCA9IHJvdXRlci5hZGRIYW5kbGUoZnVuY3Rpb24gKGNvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIHNldENvbXBvbmVudChjb21wb25lbnQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAvLyBJbml0IHBhdGggbWF0Y2hcbiAgICAgICAgICAgIGlmICghX3JvdXRlckNvbmZpZy5Jbml0aWFsQ29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgbWF0Y2hMb2NhdGlvbihoaXN0b3J5LmxvY2F0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB1bmxpc3RlbiA9IGhpc3RvcnkubGlzdGVuKGZ1bmN0aW9uIChsb2NhdGlvbikge1xuICAgICAgICAgICAgICAgIG1hdGNoTG9jYXRpb24obG9jYXRpb24pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgICAgIHJvdXRlci5yZW1vdmVIYW5kbGUoaGFuZGxlSWQpO1xuICAgICAgICAgICAgICAgIHVubGlzdGVuKCk7XG4gICAgICAgICAgICB9O1xuICAgICAgICB9LCBbXSk7XG4gICAgICAgIHJldHVybiB7IGNvbXBvbmVudDogY29tcG9uZW50IH07XG4gICAgfVxuICAgIHJldHVybiB1c2VSb3V0ZXI7XG59XG5leHBvcnRzLmNyZWF0ZVVzZVJvdXRlciA9IGNyZWF0ZVVzZVJvdXRlcjtcbmZ1bmN0aW9uIGNyZWF0ZVdpdGhSb3V0ZXIoYXBpKSB7XG4gICAgdmFyIGNyZWF0ZUVsZW1lbnQgPSBhcGkuY3JlYXRlRWxlbWVudDtcbiAgICBmdW5jdGlvbiB3aXRoUm91dGVyKENvbXBvbmVudCkge1xuICAgICAgICBmdW5jdGlvbiBXcmFwcGVyKHByb3BzKSB7XG4gICAgICAgICAgICB2YXIgaGlzdG9yeSA9IHJvdXRlci5oaXN0b3J5O1xuICAgICAgICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoQ29tcG9uZW50LCBfX2Fzc2lnbihfX2Fzc2lnbih7fSwgcHJvcHMpLCB7IGhpc3Rvcnk6IGhpc3RvcnksIGxvY2F0aW9uOiBoaXN0b3J5LmxvY2F0aW9uIH0pKTtcbiAgICAgICAgfVxuICAgICAgICA7XG4gICAgICAgIFdyYXBwZXIuZGlzcGxheU5hbWUgPSBcIndpdGhSb3V0ZXIoXCIgKyAoQ29tcG9uZW50LmRpc3BsYXlOYW1lIHx8IENvbXBvbmVudC5uYW1lKSArIFwiKVwiO1xuICAgICAgICBXcmFwcGVyLldyYXBwZWRDb21wb25lbnQgPSBDb21wb25lbnQ7XG4gICAgICAgIHJldHVybiBXcmFwcGVyO1xuICAgIH1cbiAgICByZXR1cm4gd2l0aFJvdXRlcjtcbn1cbmV4cG9ydHMuY3JlYXRlV2l0aFJvdXRlciA9IGNyZWF0ZVdpdGhSb3V0ZXI7XG4iLCIndXNlIHN0cmljdCc7XG52YXIgdG9rZW4gPSAnJVthLWYwLTldezJ9JztcbnZhciBzaW5nbGVNYXRjaGVyID0gbmV3IFJlZ0V4cCh0b2tlbiwgJ2dpJyk7XG52YXIgbXVsdGlNYXRjaGVyID0gbmV3IFJlZ0V4cCgnKCcgKyB0b2tlbiArICcpKycsICdnaScpO1xuXG5mdW5jdGlvbiBkZWNvZGVDb21wb25lbnRzKGNvbXBvbmVudHMsIHNwbGl0KSB7XG5cdHRyeSB7XG5cdFx0Ly8gVHJ5IHRvIGRlY29kZSB0aGUgZW50aXJlIHN0cmluZyBmaXJzdFxuXHRcdHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoY29tcG9uZW50cy5qb2luKCcnKSk7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdC8vIERvIG5vdGhpbmdcblx0fVxuXG5cdGlmIChjb21wb25lbnRzLmxlbmd0aCA9PT0gMSkge1xuXHRcdHJldHVybiBjb21wb25lbnRzO1xuXHR9XG5cblx0c3BsaXQgPSBzcGxpdCB8fCAxO1xuXG5cdC8vIFNwbGl0IHRoZSBhcnJheSBpbiAyIHBhcnRzXG5cdHZhciBsZWZ0ID0gY29tcG9uZW50cy5zbGljZSgwLCBzcGxpdCk7XG5cdHZhciByaWdodCA9IGNvbXBvbmVudHMuc2xpY2Uoc3BsaXQpO1xuXG5cdHJldHVybiBBcnJheS5wcm90b3R5cGUuY29uY2F0LmNhbGwoW10sIGRlY29kZUNvbXBvbmVudHMobGVmdCksIGRlY29kZUNvbXBvbmVudHMocmlnaHQpKTtcbn1cblxuZnVuY3Rpb24gZGVjb2RlKGlucHV0KSB7XG5cdHRyeSB7XG5cdFx0cmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudChpbnB1dCk7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdHZhciB0b2tlbnMgPSBpbnB1dC5tYXRjaChzaW5nbGVNYXRjaGVyKTtcblxuXHRcdGZvciAodmFyIGkgPSAxOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRpbnB1dCA9IGRlY29kZUNvbXBvbmVudHModG9rZW5zLCBpKS5qb2luKCcnKTtcblxuXHRcdFx0dG9rZW5zID0gaW5wdXQubWF0Y2goc2luZ2xlTWF0Y2hlcik7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIGlucHV0O1xuXHR9XG59XG5cbmZ1bmN0aW9uIGN1c3RvbURlY29kZVVSSUNvbXBvbmVudChpbnB1dCkge1xuXHQvLyBLZWVwIHRyYWNrIG9mIGFsbCB0aGUgcmVwbGFjZW1lbnRzIGFuZCBwcmVmaWxsIHRoZSBtYXAgd2l0aCB0aGUgYEJPTWBcblx0dmFyIHJlcGxhY2VNYXAgPSB7XG5cdFx0JyVGRSVGRic6ICdcXHVGRkZEXFx1RkZGRCcsXG5cdFx0JyVGRiVGRSc6ICdcXHVGRkZEXFx1RkZGRCdcblx0fTtcblxuXHR2YXIgbWF0Y2ggPSBtdWx0aU1hdGNoZXIuZXhlYyhpbnB1dCk7XG5cdHdoaWxlIChtYXRjaCkge1xuXHRcdHRyeSB7XG5cdFx0XHQvLyBEZWNvZGUgYXMgYmlnIGNodW5rcyBhcyBwb3NzaWJsZVxuXHRcdFx0cmVwbGFjZU1hcFttYXRjaFswXV0gPSBkZWNvZGVVUklDb21wb25lbnQobWF0Y2hbMF0pO1xuXHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0dmFyIHJlc3VsdCA9IGRlY29kZShtYXRjaFswXSk7XG5cblx0XHRcdGlmIChyZXN1bHQgIT09IG1hdGNoWzBdKSB7XG5cdFx0XHRcdHJlcGxhY2VNYXBbbWF0Y2hbMF1dID0gcmVzdWx0O1xuXHRcdFx0fVxuXHRcdH1cblxuXHRcdG1hdGNoID0gbXVsdGlNYXRjaGVyLmV4ZWMoaW5wdXQpO1xuXHR9XG5cblx0Ly8gQWRkIGAlQzJgIGF0IHRoZSBlbmQgb2YgdGhlIG1hcCB0byBtYWtlIHN1cmUgaXQgZG9lcyBub3QgcmVwbGFjZSB0aGUgY29tYmluYXRvciBiZWZvcmUgZXZlcnl0aGluZyBlbHNlXG5cdHJlcGxhY2VNYXBbJyVDMiddID0gJ1xcdUZGRkQnO1xuXG5cdHZhciBlbnRyaWVzID0gT2JqZWN0LmtleXMocmVwbGFjZU1hcCk7XG5cblx0Zm9yICh2YXIgaSA9IDA7IGkgPCBlbnRyaWVzLmxlbmd0aDsgaSsrKSB7XG5cdFx0Ly8gUmVwbGFjZSBhbGwgZGVjb2RlZCBjb21wb25lbnRzXG5cdFx0dmFyIGtleSA9IGVudHJpZXNbaV07XG5cdFx0aW5wdXQgPSBpbnB1dC5yZXBsYWNlKG5ldyBSZWdFeHAoa2V5LCAnZycpLCByZXBsYWNlTWFwW2tleV0pO1xuXHR9XG5cblx0cmV0dXJuIGlucHV0O1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIChlbmNvZGVkVVJJKSB7XG5cdGlmICh0eXBlb2YgZW5jb2RlZFVSSSAhPT0gJ3N0cmluZycpIHtcblx0XHR0aHJvdyBuZXcgVHlwZUVycm9yKCdFeHBlY3RlZCBgZW5jb2RlZFVSSWAgdG8gYmUgb2YgdHlwZSBgc3RyaW5nYCwgZ290IGAnICsgdHlwZW9mIGVuY29kZWRVUkkgKyAnYCcpO1xuXHR9XG5cblx0dHJ5IHtcblx0XHRlbmNvZGVkVVJJID0gZW5jb2RlZFVSSS5yZXBsYWNlKC9cXCsvZywgJyAnKTtcblxuXHRcdC8vIFRyeSB0aGUgYnVpbHQgaW4gZGVjb2RlciBmaXJzdFxuXHRcdHJldHVybiBkZWNvZGVVUklDb21wb25lbnQoZW5jb2RlZFVSSSk7XG5cdH0gY2F0Y2ggKGVycikge1xuXHRcdC8vIEZhbGxiYWNrIHRvIGEgbW9yZSBhZHZhbmNlZCBkZWNvZGVyXG5cdFx0cmV0dXJuIGN1c3RvbURlY29kZVVSSUNvbXBvbmVudChlbmNvZGVkVVJJKTtcblx0fVxufTtcbiIsIlwidXNlIHN0cmljdFwiO1xuLyoqXG4gKiBEcml2ZXIgZm9yIE1pbmlhcHBcbiAqKi9cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIGNhY2hlZChmbikge1xuICAgIHZhciBjYWNoZSA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIGNhY2hlZEZuKHN0cikge1xuICAgICAgICByZXR1cm4gY2FjaGVbc3RyXSB8fCAoY2FjaGVbc3RyXSA9IGZuKHN0cikpO1xuICAgIH07XG59XG4vLyBvcGFjaXR5IC0+IG9wYVxuLy8gZm9udFdlaWdodCAtPiBudHdcbi8vIGxpbmVIZWlnaHR8bGluZUNsYW1wIC0+IG5lW2NoXVxuLy8gZmxleHxmbGV4R3Jvd3xmbGV4UG9zaXRpdmV8ZmxleFNocmlua3xmbGV4TmVnYXRpdmV8Ym94RmxleHxib3hGbGV4R3JvdXB8ekluZGV4IC0+IGV4KD86c3xnfG58cHwkKVxuLy8gb3JkZXIgLT4gXm9yZFxuLy8gem9vbSAtPiB6b29cbi8vIGdyaWRBcmVhfGdyaWRSb3d8Z3JpZFJvd0VuZHxncmlkUm93U3BhbnxncmlkUm93U3RhcnR8Z3JpZENvbHVtbnxncmlkQ29sdW1uRW5kfGdyaWRDb2x1bW5TcGFufGdyaWRDb2x1bW5TdGFydCAtPiBncmlkXG4vLyBjb2x1bW5Db3VudCAtPiBtbmNcbi8vIHRhYlNpemUgLT4gYnNcbi8vIG9ycGhhbnMgLT4gb3JwXG4vLyB3aW5kb3dzIC0+IG93c1xuLy8gYW5pbWF0aW9uSXRlcmF0aW9uQ291bnQgLT4gb25pdFxuLy8gYm9yZGVySW1hZ2VPdXRzZXR8Ym9yZGVySW1hZ2VTbGljZXxib3JkZXJJbWFnZVdpZHRoIC0+IGVyaW1cbnZhciBOT05fRElNRU5TSU9OQUxfUkVHID0gL29wYXxudHd8bmVbY2hdfGV4KD86c3xnfG58cHwkKXxeb3JkfHpvb3xncmlkfG9ycHxvd3N8bW5jfF5jb2x1bW5zJHxic3xlcmltfG9uaXQvaTtcbnZhciBFVkVOVF9QUkVGSVhfUkVHID0gL15vbltBLVpdLztcbnZhciBDTEFTU19OQU1FID0gJ2NsYXNzTmFtZSc7XG52YXIgQ0xBU1MgPSAnY2xhc3MnO1xudmFyIFNUWUxFID0gJ3N0eWxlJztcbnZhciBDSElMRFJFTiA9ICdjaGlsZHJlbic7XG52YXIgVEVYVF9DT05URU5UX0FUVFIgPSAndGV4dENvbnRlbnQnO1xudmFyIENSRUFURV9DT01NRU5UID0gJ2NyZWF0ZUNvbW1lbnQnO1xudmFyIENSRUFURV9URVhUX05PREUgPSAnY3JlYXRlVGV4dE5vZGUnO1xudmFyIFNFVF9BVFRSSUJVVEUgPSAnc2V0QXR0cmlidXRlJztcbnZhciBSRU1PVkVfQVRUUklCVVRFID0gJ3JlbW92ZUF0dHJpYnV0ZSc7XG52YXIgRU1QVFkgPSAnJztcbnZhciBpc0RpbWVuc2lvbmFsUHJvcCA9IGNhY2hlZChmdW5jdGlvbiAocHJvcCkgeyByZXR1cm4gIU5PTl9ESU1FTlNJT05BTF9SRUcudGVzdChwcm9wKTsgfSk7XG52YXIgaXNFdmVudFByb3AgPSBjYWNoZWQoZnVuY3Rpb24gKHByb3ApIHsgcmV0dXJuIEVWRU5UX1BSRUZJWF9SRUcudGVzdChwcm9wKTsgfSk7XG5mdW5jdGlvbiBjcmVhdGVCb2R5KCkge1xuICAgIHJldHVybiBkb2N1bWVudC5ib2R5O1xufVxuZnVuY3Rpb24gY3JlYXRlRW1wdHkoKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50W0NSRUFURV9DT01NRU5UXShFTVBUWSk7XG59XG5mdW5jdGlvbiBjcmVhdGVUZXh0KHRleHQpIHtcbiAgICByZXR1cm4gZG9jdW1lbnRbQ1JFQVRFX1RFWFRfTk9ERV0odGV4dCk7XG59XG5mdW5jdGlvbiB1cGRhdGVUZXh0KG5vZGUsIHRleHQpIHtcbiAgICBub2RlW1RFWFRfQ09OVEVOVF9BVFRSXSA9IHRleHQ7XG59XG4vKipcbiogQHBhcmFtIHtzdHJpbmd9IHR5cGUgbm9kZSB0eXBlXG4qIEBwYXJhbSB7b2JqZWN0fSBwcm9wcyBlbGVtZW50IHByb3BlcnRpZXNcbiovXG5mdW5jdGlvbiBjcmVhdGVFbGVtZW50KHR5cGUsIHByb3BzKSB7XG4gICAgdmFyIHN0eWxlO1xuICAgIHZhciBhdHRycyA9IHt9O1xuICAgIHZhciBldmVudHMgPSBbXTtcbiAgICBmb3IgKHZhciBwcm9wIGluIHByb3BzKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHByb3BzW3Byb3BdO1xuICAgICAgICBpZiAocHJvcCA9PT0gQ0hJTERSRU4pXG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSBudWxsKSB7XG4gICAgICAgICAgICBpZiAocHJvcCA9PT0gU1RZTEUpIHtcbiAgICAgICAgICAgICAgICBzdHlsZSA9IHZhbHVlO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSBpZiAoaXNFdmVudFByb3AocHJvcCkpIHtcbiAgICAgICAgICAgICAgICBldmVudHMucHVzaCh7XG4gICAgICAgICAgICAgICAgICAgIG5hbWU6IHByb3Auc2xpY2UoMikudG9Mb3dlckNhc2UoKSxcbiAgICAgICAgICAgICAgICAgICAgaGFuZGxlcjogdmFsdWVcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIGlmIChwcm9wID09PSBDTEFTU19OQU1FKSB7XG4gICAgICAgICAgICAgICAgICAgIHByb3AgPSBDTEFTUztcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgYXR0cnNbcHJvcF0gPSB2YWx1ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cbiAgICAvLyBAdHMtaWdub3JlXG4gICAgdmFyIG5vZGUgPSBkb2N1bWVudC5fY3JlYXRlRWxlbWVudCh7XG4gICAgICAgIHRhZ05hbWU6IHR5cGUsXG4gICAgICAgIGRvY3VtZW50OiBkb2N1bWVudCxcbiAgICAgICAgYXR0cnM6IGF0dHJzXG4gICAgfSk7XG4gICAgaWYgKHN0eWxlKSB7XG4gICAgICAgIHNldFN0eWxlKG5vZGUsIHN0eWxlKTtcbiAgICB9XG4gICAgZXZlbnRzLmZvckVhY2goZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgIHZhciBuYW1lID0gX2EubmFtZSwgaGFuZGxlciA9IF9hLmhhbmRsZXI7XG4gICAgICAgIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihuYW1lLCBoYW5kbGVyKTtcbiAgICB9KTtcbiAgICByZXR1cm4gbm9kZTtcbn1cbmZ1bmN0aW9uIGFwcGVuZENoaWxkKG5vZGUsIHBhcmVudCkge1xuICAgIHJldHVybiBwYXJlbnQuYXBwZW5kQ2hpbGQobm9kZSk7XG59XG5mdW5jdGlvbiByZW1vdmVDaGlsZChub2RlLCBwYXJlbnQpIHtcbiAgICBwYXJlbnQgPSBwYXJlbnQgfHwgbm9kZS5wYXJlbnROb2RlO1xuICAgIC8vIE1heWJlIGhhcyBiZWVuIHJlbW92ZWQgd2hlbiByZW1vdmUgY2hpbGRcbiAgICBpZiAocGFyZW50KSB7XG4gICAgICAgIHBhcmVudC5yZW1vdmVDaGlsZChub2RlKTtcbiAgICB9XG59XG5mdW5jdGlvbiByZXBsYWNlQ2hpbGQobmV3Q2hpbGQsIG9sZENoaWxkLCBwYXJlbnQpIHtcbiAgICBwYXJlbnQgPSBwYXJlbnQgfHwgb2xkQ2hpbGQucGFyZW50Tm9kZTtcbiAgICBwYXJlbnQucmVwbGFjZUNoaWxkKG5ld0NoaWxkLCBvbGRDaGlsZCk7XG59XG5mdW5jdGlvbiBpbnNlcnRBZnRlcihub2RlLCBhZnRlciwgcGFyZW50KSB7XG4gICAgcGFyZW50ID0gcGFyZW50IHx8IGFmdGVyLnBhcmVudE5vZGU7XG4gICAgdmFyIG5leHRTaWJsaW5nID0gYWZ0ZXIubmV4dFNpYmxpbmc7XG4gICAgaWYgKG5leHRTaWJsaW5nKSB7XG4gICAgICAgIC8vIFBlcmZvcm1hbmNlIGltcHJvdmUgd2hlbiBub2RlIGhhcyBiZWVuIGV4aXN0ZWQgYmVmb3JlIG5leHRTaWJsaW5nXG4gICAgICAgIGlmIChuZXh0U2libGluZyAhPT0gbm9kZSkge1xuICAgICAgICAgICAgaW5zZXJ0QmVmb3JlKG5vZGUsIG5leHRTaWJsaW5nLCBwYXJlbnQpO1xuICAgICAgICB9XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBhcHBlbmRDaGlsZChub2RlLCBwYXJlbnQpO1xuICAgIH1cbn1cbmZ1bmN0aW9uIGluc2VydEJlZm9yZShub2RlLCBiZWZvcmUsIHBhcmVudCkge1xuICAgIHBhcmVudCA9IHBhcmVudCB8fCBiZWZvcmUucGFyZW50Tm9kZTtcbiAgICBwYXJlbnQuaW5zZXJ0QmVmb3JlKG5vZGUsIGJlZm9yZSk7XG59XG5mdW5jdGlvbiBhZGRFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgZXZlbnRIYW5kbGVyKSB7XG4gICAgcmV0dXJuIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGV2ZW50SGFuZGxlcik7XG59XG5mdW5jdGlvbiByZW1vdmVFdmVudExpc3RlbmVyKG5vZGUsIGV2ZW50TmFtZSwgZXZlbnRIYW5kbGVyKSB7XG4gICAgcmV0dXJuIG5vZGUucmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGV2ZW50SGFuZGxlcik7XG59XG5mdW5jdGlvbiByZW1vdmVBdHRyaWJ1dGUobm9kZSwgcHJvcEtleSkge1xuICAgIGlmIChwcm9wS2V5ID09PSBDTEFTU19OQU1FKVxuICAgICAgICBwcm9wS2V5ID0gQ0xBU1M7XG4gICAgaWYgKHByb3BLZXkgaW4gbm9kZSkge1xuICAgICAgICBub2RlW3Byb3BLZXldID0gbnVsbDtcbiAgICB9XG4gICAgbm9kZVtSRU1PVkVfQVRUUklCVVRFXShwcm9wS2V5KTtcbn1cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZShub2RlLCBwcm9wS2V5LCBwcm9wVmFsdWUpIHtcbiAgICBpZiAocHJvcEtleSA9PT0gQ0xBU1NfTkFNRSlcbiAgICAgICAgcHJvcEtleSA9IENMQVNTO1xuICAgIGlmIChwcm9wS2V5IGluIG5vZGUpIHtcbiAgICAgICAgbm9kZVtwcm9wS2V5XSA9IHByb3BWYWx1ZTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIG5vZGVbU0VUX0FUVFJJQlVURV0ocHJvcEtleSwgcHJvcFZhbHVlKTtcbiAgICB9XG59XG4vKipcbiogQHBhcmFtIHtvYmplY3R9IG5vZGUgdGFyZ2V0IG5vZGVcbiogQHBhcmFtIHtvYmplY3R9IHN0eWxlIHRhcmdldCBub2RlIHN0eWxlIHZhbHVlXG4qL1xuZnVuY3Rpb24gc2V0U3R5bGUobm9kZSwgc3R5bGUpIHtcbiAgICBmb3IgKHZhciBwcm9wIGluIHN0eWxlKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IHN0eWxlW3Byb3BdO1xuICAgICAgICB2YXIgY29udmVydGVkVmFsdWUgPSB2b2lkIDA7XG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInICYmIGlzRGltZW5zaW9uYWxQcm9wKHByb3ApKSB7XG4gICAgICAgICAgICBjb252ZXJ0ZWRWYWx1ZSA9IHZhbHVlICsgJ3JweCc7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBjb252ZXJ0ZWRWYWx1ZSA9IHZhbHVlO1xuICAgICAgICB9XG4gICAgICAgIC8vIFN1cHBvcnQgQ1NTIGN1c3RvbSBwcm9wZXJ0aWVzICh2YXJpYWJsZXMpIGxpa2UgeyAtLW1haW4tY29sb3I6IFwiYmxhY2tcIiB9XG4gICAgICAgIGlmIChwcm9wWzBdID09PSAnLScgJiYgcHJvcFsxXSA9PT0gJy0nKSB7XG4gICAgICAgICAgICAvLyByZWZlcmVuY2U6IGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9DU1NTdHlsZURlY2xhcmF0aW9uL3NldFByb3BlcnR5LlxuICAgICAgICAgICAgLy8gc3R5bGUuc2V0UHJvcGVydHkgZG8gbm90IHN1cHBvcnQgQ2FtZWwtQ2FzZSBzdHlsZSBwcm9wZXJ0aWVzLlxuICAgICAgICAgICAgbm9kZS5zdHlsZS5zZXRQcm9wZXJ0eShwcm9wLCBjb252ZXJ0ZWRWYWx1ZSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICBub2RlLnN0eWxlW3Byb3BdID0gY29udmVydGVkVmFsdWU7XG4gICAgICAgIH1cbiAgICB9XG59XG5mdW5jdGlvbiBiZWZvcmVSZW5kZXIoKSB7IH1cbmZ1bmN0aW9uIGFmdGVyUmVuZGVyKCkgeyB9XG4vKipcbiogUmVtb3ZlIGFsbCBjaGlsZHJlbiBmcm9tIG5vZGUuXG4qIEBOT1RFOiBPcHRpbWl6YXRpb24gYXQgd2ViLlxuKi9cbmZ1bmN0aW9uIHJlbW92ZUNoaWxkcmVuKG5vZGUpIHtcbiAgICBub2RlLnRleHRDb250ZW50ID0gRU1QVFk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSB7XG4gICAgY3JlYXRlQm9keTogY3JlYXRlQm9keSxcbiAgICBjcmVhdGVFbXB0eTogY3JlYXRlRW1wdHksXG4gICAgY3JlYXRlVGV4dDogY3JlYXRlVGV4dCxcbiAgICB1cGRhdGVUZXh0OiB1cGRhdGVUZXh0LFxuICAgIGNyZWF0ZUVsZW1lbnQ6IGNyZWF0ZUVsZW1lbnQsXG4gICAgYXBwZW5kQ2hpbGQ6IGFwcGVuZENoaWxkLFxuICAgIHJlbW92ZUNoaWxkOiByZW1vdmVDaGlsZCxcbiAgICByZXBsYWNlQ2hpbGQ6IHJlcGxhY2VDaGlsZCxcbiAgICBpbnNlcnRBZnRlcjogaW5zZXJ0QWZ0ZXIsXG4gICAgaW5zZXJ0QmVmb3JlOiBpbnNlcnRCZWZvcmUsXG4gICAgYWRkRXZlbnRMaXN0ZW5lcjogYWRkRXZlbnRMaXN0ZW5lcixcbiAgICByZW1vdmVFdmVudExpc3RlbmVyOiByZW1vdmVFdmVudExpc3RlbmVyLFxuICAgIHJlbW92ZUF0dHJpYnV0ZTogcmVtb3ZlQXR0cmlidXRlLFxuICAgIHNldEF0dHJpYnV0ZTogc2V0QXR0cmlidXRlLFxuICAgIHNldFN0eWxlOiBzZXRTdHlsZSxcbiAgICBiZWZvcmVSZW5kZXI6IGJlZm9yZVJlbmRlcixcbiAgICBhZnRlclJlbmRlcjogYWZ0ZXJSZW5kZXIsXG4gICAgcmVtb3ZlQ2hpbGRyZW46IHJlbW92ZUNoaWxkcmVuXG59O1xuIiwiaW1wb3J0IHsgaXNXZWV4LCBpc1dlYiwgaXNLcmFrZW4sIGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNCYWlkdVNtYXJ0UHJvZ3JhbSwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtIH0gZnJvbSAndW5pdmVyc2FsLWVudic7XG52YXIgY3VycmVudERyaXZlcjtcblxuaWYgKGlzV2VleCkge1xuICBjdXJyZW50RHJpdmVyID0gcmVxdWlyZSgnLi93ZWV4JylbXCJkZWZhdWx0XCJdO1xufSBlbHNlIGlmIChpc1dlYikge1xuICBjdXJyZW50RHJpdmVyID0gcmVxdWlyZSgnLi93ZWInKVtcImRlZmF1bHRcIl07XG59IGVsc2UgaWYgKGlzS3Jha2VuKSB7XG4gIGN1cnJlbnREcml2ZXIgPSByZXF1aXJlKCcuL2tyYWtlbicpW1wiZGVmYXVsdFwiXTtcbn0gZWxzZSBpZiAoaXNNaW5pQXBwIHx8IGlzV2VDaGF0TWluaVByb2dyYW0gfHwgaXNCeXRlRGFuY2VNaWNyb0FwcCB8fCBpc0JhaWR1U21hcnRQcm9ncmFtIHx8IGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICBjdXJyZW50RHJpdmVyID0gcmVxdWlyZSgnLi9taW5pYXBwJylbXCJkZWZhdWx0XCJdO1xufVxuXG5leHBvcnQgZGVmYXVsdCBjdXJyZW50RHJpdmVyOyIsImltcG9ydCBNaW5pQXBwRHJpdmVyIGZyb20gJ2RyaXZlci1taW5pYXBwJztcbmV4cG9ydCBkZWZhdWx0IE1pbmlBcHBEcml2ZXI7IiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAob2JqLCBwcmVkaWNhdGUpIHtcblx0dmFyIHJldCA9IHt9O1xuXHR2YXIga2V5cyA9IE9iamVjdC5rZXlzKG9iaik7XG5cdHZhciBpc0FyciA9IEFycmF5LmlzQXJyYXkocHJlZGljYXRlKTtcblxuXHRmb3IgKHZhciBpID0gMDsgaSA8IGtleXMubGVuZ3RoOyBpKyspIHtcblx0XHR2YXIga2V5ID0ga2V5c1tpXTtcblx0XHR2YXIgdmFsID0gb2JqW2tleV07XG5cblx0XHRpZiAoaXNBcnIgPyBwcmVkaWNhdGUuaW5kZXhPZihrZXkpICE9PSAtMSA6IHByZWRpY2F0ZShrZXksIHZhbCwgb2JqKSkge1xuXHRcdFx0cmV0W2tleV0gPSB2YWw7XG5cdFx0fVxuXHR9XG5cblx0cmV0dXJuIHJldDtcbn07XG4iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSAnQGJhYmVsL3J1bnRpbWUvaGVscGVycy9lc20vZXh0ZW5kcyc7XG5pbXBvcnQgcmVzb2x2ZVBhdGhuYW1lIGZyb20gJ3Jlc29sdmUtcGF0aG5hbWUnO1xuaW1wb3J0IHZhbHVlRXF1YWwgZnJvbSAndmFsdWUtZXF1YWwnO1xuaW1wb3J0IHdhcm5pbmcgZnJvbSAndGlueS13YXJuaW5nJztcbmltcG9ydCBpbnZhcmlhbnQgZnJvbSAndGlueS1pbnZhcmlhbnQnO1xuXG5mdW5jdGlvbiBhZGRMZWFkaW5nU2xhc2gocGF0aCkge1xuICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJyA/IHBhdGggOiAnLycgKyBwYXRoO1xufVxuZnVuY3Rpb24gc3RyaXBMZWFkaW5nU2xhc2gocGF0aCkge1xuICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICcvJyA/IHBhdGguc3Vic3RyKDEpIDogcGF0aDtcbn1cbmZ1bmN0aW9uIGhhc0Jhc2VuYW1lKHBhdGgsIHByZWZpeCkge1xuICByZXR1cm4gcGF0aC50b0xvd2VyQ2FzZSgpLmluZGV4T2YocHJlZml4LnRvTG93ZXJDYXNlKCkpID09PSAwICYmICcvPyMnLmluZGV4T2YocGF0aC5jaGFyQXQocHJlZml4Lmxlbmd0aCkpICE9PSAtMTtcbn1cbmZ1bmN0aW9uIHN0cmlwQmFzZW5hbWUocGF0aCwgcHJlZml4KSB7XG4gIHJldHVybiBoYXNCYXNlbmFtZShwYXRoLCBwcmVmaXgpID8gcGF0aC5zdWJzdHIocHJlZml4Lmxlbmd0aCkgOiBwYXRoO1xufVxuZnVuY3Rpb24gc3RyaXBUcmFpbGluZ1NsYXNoKHBhdGgpIHtcbiAgcmV0dXJuIHBhdGguY2hhckF0KHBhdGgubGVuZ3RoIC0gMSkgPT09ICcvJyA/IHBhdGguc2xpY2UoMCwgLTEpIDogcGF0aDtcbn1cbmZ1bmN0aW9uIHBhcnNlUGF0aChwYXRoKSB7XG4gIHZhciBwYXRobmFtZSA9IHBhdGggfHwgJy8nO1xuICB2YXIgc2VhcmNoID0gJyc7XG4gIHZhciBoYXNoID0gJyc7XG4gIHZhciBoYXNoSW5kZXggPSBwYXRobmFtZS5pbmRleE9mKCcjJyk7XG5cbiAgaWYgKGhhc2hJbmRleCAhPT0gLTEpIHtcbiAgICBoYXNoID0gcGF0aG5hbWUuc3Vic3RyKGhhc2hJbmRleCk7XG4gICAgcGF0aG5hbWUgPSBwYXRobmFtZS5zdWJzdHIoMCwgaGFzaEluZGV4KTtcbiAgfVxuXG4gIHZhciBzZWFyY2hJbmRleCA9IHBhdGhuYW1lLmluZGV4T2YoJz8nKTtcblxuICBpZiAoc2VhcmNoSW5kZXggIT09IC0xKSB7XG4gICAgc2VhcmNoID0gcGF0aG5hbWUuc3Vic3RyKHNlYXJjaEluZGV4KTtcbiAgICBwYXRobmFtZSA9IHBhdGhuYW1lLnN1YnN0cigwLCBzZWFyY2hJbmRleCk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIHBhdGhuYW1lOiBwYXRobmFtZSxcbiAgICBzZWFyY2g6IHNlYXJjaCA9PT0gJz8nID8gJycgOiBzZWFyY2gsXG4gICAgaGFzaDogaGFzaCA9PT0gJyMnID8gJycgOiBoYXNoXG4gIH07XG59XG5mdW5jdGlvbiBjcmVhdGVQYXRoKGxvY2F0aW9uKSB7XG4gIHZhciBwYXRobmFtZSA9IGxvY2F0aW9uLnBhdGhuYW1lLFxuICAgICAgc2VhcmNoID0gbG9jYXRpb24uc2VhcmNoLFxuICAgICAgaGFzaCA9IGxvY2F0aW9uLmhhc2g7XG4gIHZhciBwYXRoID0gcGF0aG5hbWUgfHwgJy8nO1xuICBpZiAoc2VhcmNoICYmIHNlYXJjaCAhPT0gJz8nKSBwYXRoICs9IHNlYXJjaC5jaGFyQXQoMCkgPT09ICc/JyA/IHNlYXJjaCA6IFwiP1wiICsgc2VhcmNoO1xuICBpZiAoaGFzaCAmJiBoYXNoICE9PSAnIycpIHBhdGggKz0gaGFzaC5jaGFyQXQoMCkgPT09ICcjJyA/IGhhc2ggOiBcIiNcIiArIGhhc2g7XG4gIHJldHVybiBwYXRoO1xufVxuXG5mdW5jdGlvbiBjcmVhdGVMb2NhdGlvbihwYXRoLCBzdGF0ZSwga2V5LCBjdXJyZW50TG9jYXRpb24pIHtcbiAgdmFyIGxvY2F0aW9uO1xuXG4gIGlmICh0eXBlb2YgcGF0aCA9PT0gJ3N0cmluZycpIHtcbiAgICAvLyBUd28tYXJnIGZvcm06IHB1c2gocGF0aCwgc3RhdGUpXG4gICAgbG9jYXRpb24gPSBwYXJzZVBhdGgocGF0aCk7XG4gICAgbG9jYXRpb24uc3RhdGUgPSBzdGF0ZTtcbiAgfSBlbHNlIHtcbiAgICAvLyBPbmUtYXJnIGZvcm06IHB1c2gobG9jYXRpb24pXG4gICAgbG9jYXRpb24gPSBfZXh0ZW5kcyh7fSwgcGF0aCk7XG4gICAgaWYgKGxvY2F0aW9uLnBhdGhuYW1lID09PSB1bmRlZmluZWQpIGxvY2F0aW9uLnBhdGhuYW1lID0gJyc7XG5cbiAgICBpZiAobG9jYXRpb24uc2VhcmNoKSB7XG4gICAgICBpZiAobG9jYXRpb24uc2VhcmNoLmNoYXJBdCgwKSAhPT0gJz8nKSBsb2NhdGlvbi5zZWFyY2ggPSAnPycgKyBsb2NhdGlvbi5zZWFyY2g7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvY2F0aW9uLnNlYXJjaCA9ICcnO1xuICAgIH1cblxuICAgIGlmIChsb2NhdGlvbi5oYXNoKSB7XG4gICAgICBpZiAobG9jYXRpb24uaGFzaC5jaGFyQXQoMCkgIT09ICcjJykgbG9jYXRpb24uaGFzaCA9ICcjJyArIGxvY2F0aW9uLmhhc2g7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxvY2F0aW9uLmhhc2ggPSAnJztcbiAgICB9XG5cbiAgICBpZiAoc3RhdGUgIT09IHVuZGVmaW5lZCAmJiBsb2NhdGlvbi5zdGF0ZSA9PT0gdW5kZWZpbmVkKSBsb2NhdGlvbi5zdGF0ZSA9IHN0YXRlO1xuICB9XG5cbiAgdHJ5IHtcbiAgICBsb2NhdGlvbi5wYXRobmFtZSA9IGRlY29kZVVSSShsb2NhdGlvbi5wYXRobmFtZSk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBpZiAoZSBpbnN0YW5jZW9mIFVSSUVycm9yKSB7XG4gICAgICB0aHJvdyBuZXcgVVJJRXJyb3IoJ1BhdGhuYW1lIFwiJyArIGxvY2F0aW9uLnBhdGhuYW1lICsgJ1wiIGNvdWxkIG5vdCBiZSBkZWNvZGVkLiAnICsgJ1RoaXMgaXMgbGlrZWx5IGNhdXNlZCBieSBhbiBpbnZhbGlkIHBlcmNlbnQtZW5jb2RpbmcuJyk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IGU7XG4gICAgfVxuICB9XG5cbiAgaWYgKGtleSkgbG9jYXRpb24ua2V5ID0ga2V5O1xuXG4gIGlmIChjdXJyZW50TG9jYXRpb24pIHtcbiAgICAvLyBSZXNvbHZlIGluY29tcGxldGUvcmVsYXRpdmUgcGF0aG5hbWUgcmVsYXRpdmUgdG8gY3VycmVudCBsb2NhdGlvbi5cbiAgICBpZiAoIWxvY2F0aW9uLnBhdGhuYW1lKSB7XG4gICAgICBsb2NhdGlvbi5wYXRobmFtZSA9IGN1cnJlbnRMb2NhdGlvbi5wYXRobmFtZTtcbiAgICB9IGVsc2UgaWYgKGxvY2F0aW9uLnBhdGhuYW1lLmNoYXJBdCgwKSAhPT0gJy8nKSB7XG4gICAgICBsb2NhdGlvbi5wYXRobmFtZSA9IHJlc29sdmVQYXRobmFtZShsb2NhdGlvbi5wYXRobmFtZSwgY3VycmVudExvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgLy8gV2hlbiB0aGVyZSBpcyBubyBwcmlvciBsb2NhdGlvbiBhbmQgcGF0aG5hbWUgaXMgZW1wdHksIHNldCBpdCB0byAvXG4gICAgaWYgKCFsb2NhdGlvbi5wYXRobmFtZSkge1xuICAgICAgbG9jYXRpb24ucGF0aG5hbWUgPSAnLyc7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxvY2F0aW9uO1xufVxuZnVuY3Rpb24gbG9jYXRpb25zQXJlRXF1YWwoYSwgYikge1xuICByZXR1cm4gYS5wYXRobmFtZSA9PT0gYi5wYXRobmFtZSAmJiBhLnNlYXJjaCA9PT0gYi5zZWFyY2ggJiYgYS5oYXNoID09PSBiLmhhc2ggJiYgYS5rZXkgPT09IGIua2V5ICYmIHZhbHVlRXF1YWwoYS5zdGF0ZSwgYi5zdGF0ZSk7XG59XG5cbmZ1bmN0aW9uIGNyZWF0ZVRyYW5zaXRpb25NYW5hZ2VyKCkge1xuICB2YXIgcHJvbXB0ID0gbnVsbDtcblxuICBmdW5jdGlvbiBzZXRQcm9tcHQobmV4dFByb21wdCkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcocHJvbXB0ID09IG51bGwsICdBIGhpc3Rvcnkgc3VwcG9ydHMgb25seSBvbmUgcHJvbXB0IGF0IGEgdGltZScpIDogdm9pZCAwO1xuICAgIHByb21wdCA9IG5leHRQcm9tcHQ7XG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChwcm9tcHQgPT09IG5leHRQcm9tcHQpIHByb21wdCA9IG51bGw7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGFjdGlvbiwgZ2V0VXNlckNvbmZpcm1hdGlvbiwgY2FsbGJhY2spIHtcbiAgICAvLyBUT0RPOiBJZiBhbm90aGVyIHRyYW5zaXRpb24gc3RhcnRzIHdoaWxlIHdlJ3JlIHN0aWxsIGNvbmZpcm1pbmdcbiAgICAvLyB0aGUgcHJldmlvdXMgb25lLCB3ZSBtYXkgZW5kIHVwIGluIGEgd2VpcmQgc3RhdGUuIEZpZ3VyZSBvdXQgdGhlXG4gICAgLy8gYmVzdCB3YXkgdG8gaGFuZGxlIHRoaXMuXG4gICAgaWYgKHByb21wdCAhPSBudWxsKSB7XG4gICAgICB2YXIgcmVzdWx0ID0gdHlwZW9mIHByb21wdCA9PT0gJ2Z1bmN0aW9uJyA/IHByb21wdChsb2NhdGlvbiwgYWN0aW9uKSA6IHByb21wdDtcblxuICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgIGlmICh0eXBlb2YgZ2V0VXNlckNvbmZpcm1hdGlvbiA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgIGdldFVzZXJDb25maXJtYXRpb24ocmVzdWx0LCBjYWxsYmFjayk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhmYWxzZSwgJ0EgaGlzdG9yeSBuZWVkcyBhIGdldFVzZXJDb25maXJtYXRpb24gZnVuY3Rpb24gaW4gb3JkZXIgdG8gdXNlIGEgcHJvbXB0IG1lc3NhZ2UnKSA6IHZvaWQgMDtcbiAgICAgICAgICBjYWxsYmFjayh0cnVlKTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gUmV0dXJuIGZhbHNlIGZyb20gYSB0cmFuc2l0aW9uIGhvb2sgdG8gY2FuY2VsIHRoZSB0cmFuc2l0aW9uLlxuICAgICAgICBjYWxsYmFjayhyZXN1bHQgIT09IGZhbHNlKTtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgY2FsbGJhY2sodHJ1ZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxpc3RlbmVycyA9IFtdO1xuXG4gIGZ1bmN0aW9uIGFwcGVuZExpc3RlbmVyKGZuKSB7XG4gICAgdmFyIGlzQWN0aXZlID0gdHJ1ZTtcblxuICAgIGZ1bmN0aW9uIGxpc3RlbmVyKCkge1xuICAgICAgaWYgKGlzQWN0aXZlKSBmbi5hcHBseSh2b2lkIDAsIGFyZ3VtZW50cyk7XG4gICAgfVxuXG4gICAgbGlzdGVuZXJzLnB1c2gobGlzdGVuZXIpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBpc0FjdGl2ZSA9IGZhbHNlO1xuICAgICAgbGlzdGVuZXJzID0gbGlzdGVuZXJzLmZpbHRlcihmdW5jdGlvbiAoaXRlbSkge1xuICAgICAgICByZXR1cm4gaXRlbSAhPT0gbGlzdGVuZXI7XG4gICAgICB9KTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gbm90aWZ5TGlzdGVuZXJzKCkge1xuICAgIGZvciAodmFyIF9sZW4gPSBhcmd1bWVudHMubGVuZ3RoLCBhcmdzID0gbmV3IEFycmF5KF9sZW4pLCBfa2V5ID0gMDsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5XSA9IGFyZ3VtZW50c1tfa2V5XTtcbiAgICB9XG5cbiAgICBsaXN0ZW5lcnMuZm9yRWFjaChmdW5jdGlvbiAobGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBsaXN0ZW5lci5hcHBseSh2b2lkIDAsIGFyZ3MpO1xuICAgIH0pO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBzZXRQcm9tcHQ6IHNldFByb21wdCxcbiAgICBjb25maXJtVHJhbnNpdGlvblRvOiBjb25maXJtVHJhbnNpdGlvblRvLFxuICAgIGFwcGVuZExpc3RlbmVyOiBhcHBlbmRMaXN0ZW5lcixcbiAgICBub3RpZnlMaXN0ZW5lcnM6IG5vdGlmeUxpc3RlbmVyc1xuICB9O1xufVxuXG52YXIgY2FuVXNlRE9NID0gISEodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcgJiYgd2luZG93LmRvY3VtZW50ICYmIHdpbmRvdy5kb2N1bWVudC5jcmVhdGVFbGVtZW50KTtcbmZ1bmN0aW9uIGdldENvbmZpcm1hdGlvbihtZXNzYWdlLCBjYWxsYmFjaykge1xuICBjYWxsYmFjayh3aW5kb3cuY29uZmlybShtZXNzYWdlKSk7IC8vIGVzbGludC1kaXNhYmxlLWxpbmUgbm8tYWxlcnRcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIHRoZSBIVE1MNSBoaXN0b3J5IEFQSSBpcyBzdXBwb3J0ZWQuIFRha2VuIGZyb20gTW9kZXJuaXpyLlxuICpcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Nb2Rlcm5penIvTW9kZXJuaXpyL2Jsb2IvbWFzdGVyL0xJQ0VOU0VcbiAqIGh0dHBzOi8vZ2l0aHViLmNvbS9Nb2Rlcm5penIvTW9kZXJuaXpyL2Jsb2IvbWFzdGVyL2ZlYXR1cmUtZGV0ZWN0cy9oaXN0b3J5LmpzXG4gKiBjaGFuZ2VkIHRvIGF2b2lkIGZhbHNlIG5lZ2F0aXZlcyBmb3IgV2luZG93cyBQaG9uZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9yZWFjdGpzL3JlYWN0LXJvdXRlci9pc3N1ZXMvNTg2XG4gKi9cblxuZnVuY3Rpb24gc3VwcG9ydHNIaXN0b3J5KCkge1xuICB2YXIgdWEgPSB3aW5kb3cubmF2aWdhdG9yLnVzZXJBZ2VudDtcbiAgaWYgKCh1YS5pbmRleE9mKCdBbmRyb2lkIDIuJykgIT09IC0xIHx8IHVhLmluZGV4T2YoJ0FuZHJvaWQgNC4wJykgIT09IC0xKSAmJiB1YS5pbmRleE9mKCdNb2JpbGUgU2FmYXJpJykgIT09IC0xICYmIHVhLmluZGV4T2YoJ0Nocm9tZScpID09PSAtMSAmJiB1YS5pbmRleE9mKCdXaW5kb3dzIFBob25lJykgPT09IC0xKSByZXR1cm4gZmFsc2U7XG4gIHJldHVybiB3aW5kb3cuaGlzdG9yeSAmJiAncHVzaFN0YXRlJyBpbiB3aW5kb3cuaGlzdG9yeTtcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGJyb3dzZXIgZmlyZXMgcG9wc3RhdGUgb24gaGFzaCBjaGFuZ2UuXG4gKiBJRTEwIGFuZCBJRTExIGRvIG5vdC5cbiAqL1xuXG5mdW5jdGlvbiBzdXBwb3J0c1BvcFN0YXRlT25IYXNoQ2hhbmdlKCkge1xuICByZXR1cm4gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignVHJpZGVudCcpID09PSAtMTtcbn1cbi8qKlxuICogUmV0dXJucyBmYWxzZSBpZiB1c2luZyBnbyhuKSB3aXRoIGhhc2ggaGlzdG9yeSBjYXVzZXMgYSBmdWxsIHBhZ2UgcmVsb2FkLlxuICovXG5cbmZ1bmN0aW9uIHN1cHBvcnRzR29XaXRob3V0UmVsb2FkVXNpbmdIYXNoKCkge1xuICByZXR1cm4gd2luZG93Lm5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignRmlyZWZveCcpID09PSAtMTtcbn1cbi8qKlxuICogUmV0dXJucyB0cnVlIGlmIGEgZ2l2ZW4gcG9wc3RhdGUgZXZlbnQgaXMgYW4gZXh0cmFuZW91cyBXZWJLaXQgZXZlbnQuXG4gKiBBY2NvdW50cyBmb3IgdGhlIGZhY3QgdGhhdCBDaHJvbWUgb24gaU9TIGZpcmVzIHJlYWwgcG9wc3RhdGUgZXZlbnRzXG4gKiBjb250YWluaW5nIHVuZGVmaW5lZCBzdGF0ZSB3aGVuIHByZXNzaW5nIHRoZSBiYWNrIGJ1dHRvbi5cbiAqL1xuXG5mdW5jdGlvbiBpc0V4dHJhbmVvdXNQb3BzdGF0ZUV2ZW50KGV2ZW50KSB7XG4gIHJldHVybiBldmVudC5zdGF0ZSA9PT0gdW5kZWZpbmVkICYmIG5hdmlnYXRvci51c2VyQWdlbnQuaW5kZXhPZignQ3JpT1MnKSA9PT0gLTE7XG59XG5cbnZhciBQb3BTdGF0ZUV2ZW50ID0gJ3BvcHN0YXRlJztcbnZhciBIYXNoQ2hhbmdlRXZlbnQgPSAnaGFzaGNoYW5nZSc7XG5cbmZ1bmN0aW9uIGdldEhpc3RvcnlTdGF0ZSgpIHtcbiAgdHJ5IHtcbiAgICByZXR1cm4gd2luZG93Lmhpc3Rvcnkuc3RhdGUgfHwge307XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICAvLyBJRSAxMSBzb21ldGltZXMgdGhyb3dzIHdoZW4gYWNjZXNzaW5nIHdpbmRvdy5oaXN0b3J5LnN0YXRlXG4gICAgLy8gU2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9SZWFjdFRyYWluaW5nL2hpc3RvcnkvcHVsbC8yODlcbiAgICByZXR1cm4ge307XG4gIH1cbn1cbi8qKlxuICogQ3JlYXRlcyBhIGhpc3Rvcnkgb2JqZWN0IHRoYXQgdXNlcyB0aGUgSFRNTDUgaGlzdG9yeSBBUEkgaW5jbHVkaW5nXG4gKiBwdXNoU3RhdGUsIHJlcGxhY2VTdGF0ZSwgYW5kIHRoZSBwb3BzdGF0ZSBldmVudC5cbiAqL1xuXG5cbmZ1bmN0aW9uIGNyZWF0ZUJyb3dzZXJIaXN0b3J5KHByb3BzKSB7XG4gIGlmIChwcm9wcyA9PT0gdm9pZCAwKSB7XG4gICAgcHJvcHMgPSB7fTtcbiAgfVxuXG4gICFjYW5Vc2VET00gPyBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyBpbnZhcmlhbnQoZmFsc2UsICdCcm93c2VyIGhpc3RvcnkgbmVlZHMgYSBET00nKSA6IGludmFyaWFudChmYWxzZSkgOiB2b2lkIDA7XG4gIHZhciBnbG9iYWxIaXN0b3J5ID0gd2luZG93Lmhpc3Rvcnk7XG4gIHZhciBjYW5Vc2VIaXN0b3J5ID0gc3VwcG9ydHNIaXN0b3J5KCk7XG4gIHZhciBuZWVkc0hhc2hDaGFuZ2VMaXN0ZW5lciA9ICFzdXBwb3J0c1BvcFN0YXRlT25IYXNoQ2hhbmdlKCk7XG4gIHZhciBfcHJvcHMgPSBwcm9wcyxcbiAgICAgIF9wcm9wcyRmb3JjZVJlZnJlc2ggPSBfcHJvcHMuZm9yY2VSZWZyZXNoLFxuICAgICAgZm9yY2VSZWZyZXNoID0gX3Byb3BzJGZvcmNlUmVmcmVzaCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcHJvcHMkZm9yY2VSZWZyZXNoLFxuICAgICAgX3Byb3BzJGdldFVzZXJDb25maXJtID0gX3Byb3BzLmdldFVzZXJDb25maXJtYXRpb24sXG4gICAgICBnZXRVc2VyQ29uZmlybWF0aW9uID0gX3Byb3BzJGdldFVzZXJDb25maXJtID09PSB2b2lkIDAgPyBnZXRDb25maXJtYXRpb24gOiBfcHJvcHMkZ2V0VXNlckNvbmZpcm0sXG4gICAgICBfcHJvcHMka2V5TGVuZ3RoID0gX3Byb3BzLmtleUxlbmd0aCxcbiAgICAgIGtleUxlbmd0aCA9IF9wcm9wcyRrZXlMZW5ndGggPT09IHZvaWQgMCA/IDYgOiBfcHJvcHMka2V5TGVuZ3RoO1xuICB2YXIgYmFzZW5hbWUgPSBwcm9wcy5iYXNlbmFtZSA/IHN0cmlwVHJhaWxpbmdTbGFzaChhZGRMZWFkaW5nU2xhc2gocHJvcHMuYmFzZW5hbWUpKSA6ICcnO1xuXG4gIGZ1bmN0aW9uIGdldERPTUxvY2F0aW9uKGhpc3RvcnlTdGF0ZSkge1xuICAgIHZhciBfcmVmID0gaGlzdG9yeVN0YXRlIHx8IHt9LFxuICAgICAgICBrZXkgPSBfcmVmLmtleSxcbiAgICAgICAgc3RhdGUgPSBfcmVmLnN0YXRlO1xuXG4gICAgdmFyIF93aW5kb3ckbG9jYXRpb24gPSB3aW5kb3cubG9jYXRpb24sXG4gICAgICAgIHBhdGhuYW1lID0gX3dpbmRvdyRsb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgICAgc2VhcmNoID0gX3dpbmRvdyRsb2NhdGlvbi5zZWFyY2gsXG4gICAgICAgIGhhc2ggPSBfd2luZG93JGxvY2F0aW9uLmhhc2g7XG4gICAgdmFyIHBhdGggPSBwYXRobmFtZSArIHNlYXJjaCArIGhhc2g7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyghYmFzZW5hbWUgfHwgaGFzQmFzZW5hbWUocGF0aCwgYmFzZW5hbWUpLCAnWW91IGFyZSBhdHRlbXB0aW5nIHRvIHVzZSBhIGJhc2VuYW1lIG9uIGEgcGFnZSB3aG9zZSBVUkwgcGF0aCBkb2VzIG5vdCBiZWdpbiAnICsgJ3dpdGggdGhlIGJhc2VuYW1lLiBFeHBlY3RlZCBwYXRoIFwiJyArIHBhdGggKyAnXCIgdG8gYmVnaW4gd2l0aCBcIicgKyBiYXNlbmFtZSArICdcIi4nKSA6IHZvaWQgMDtcbiAgICBpZiAoYmFzZW5hbWUpIHBhdGggPSBzdHJpcEJhc2VuYW1lKHBhdGgsIGJhc2VuYW1lKTtcbiAgICByZXR1cm4gY3JlYXRlTG9jYXRpb24ocGF0aCwgc3RhdGUsIGtleSk7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVLZXkoKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCBrZXlMZW5ndGgpO1xuICB9XG5cbiAgdmFyIHRyYW5zaXRpb25NYW5hZ2VyID0gY3JlYXRlVHJhbnNpdGlvbk1hbmFnZXIoKTtcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXh0U3RhdGUpIHtcbiAgICBfZXh0ZW5kcyhoaXN0b3J5LCBuZXh0U3RhdGUpO1xuXG4gICAgaGlzdG9yeS5sZW5ndGggPSBnbG9iYWxIaXN0b3J5Lmxlbmd0aDtcbiAgICB0cmFuc2l0aW9uTWFuYWdlci5ub3RpZnlMaXN0ZW5lcnMoaGlzdG9yeS5sb2NhdGlvbiwgaGlzdG9yeS5hY3Rpb24pO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUG9wU3RhdGUoZXZlbnQpIHtcbiAgICAvLyBJZ25vcmUgZXh0cmFuZW91cyBwb3BzdGF0ZSBldmVudHMgaW4gV2ViS2l0LlxuICAgIGlmIChpc0V4dHJhbmVvdXNQb3BzdGF0ZUV2ZW50KGV2ZW50KSkgcmV0dXJuO1xuICAgIGhhbmRsZVBvcChnZXRET01Mb2NhdGlvbihldmVudC5zdGF0ZSkpO1xuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlSGFzaENoYW5nZSgpIHtcbiAgICBoYW5kbGVQb3AoZ2V0RE9NTG9jYXRpb24oZ2V0SGlzdG9yeVN0YXRlKCkpKTtcbiAgfVxuXG4gIHZhciBmb3JjZU5leHRQb3AgPSBmYWxzZTtcblxuICBmdW5jdGlvbiBoYW5kbGVQb3AobG9jYXRpb24pIHtcbiAgICBpZiAoZm9yY2VOZXh0UG9wKSB7XG4gICAgICBmb3JjZU5leHRQb3AgPSBmYWxzZTtcbiAgICAgIHNldFN0YXRlKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBhY3Rpb24gPSAnUE9QJztcbiAgICAgIHRyYW5zaXRpb25NYW5hZ2VyLmNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGFjdGlvbiwgZ2V0VXNlckNvbmZpcm1hdGlvbiwgZnVuY3Rpb24gKG9rKSB7XG4gICAgICAgIGlmIChvaykge1xuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV2ZXJ0UG9wKGxvY2F0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmV2ZXJ0UG9wKGZyb21Mb2NhdGlvbikge1xuICAgIHZhciB0b0xvY2F0aW9uID0gaGlzdG9yeS5sb2NhdGlvbjsgLy8gVE9ETzogV2UgY291bGQgcHJvYmFibHkgbWFrZSB0aGlzIG1vcmUgcmVsaWFibGUgYnlcbiAgICAvLyBrZWVwaW5nIGEgbGlzdCBvZiBrZXlzIHdlJ3ZlIHNlZW4gaW4gc2Vzc2lvblN0b3JhZ2UuXG4gICAgLy8gSW5zdGVhZCwgd2UganVzdCBkZWZhdWx0IHRvIDAgZm9yIGtleXMgd2UgZG9uJ3Qga25vdy5cblxuICAgIHZhciB0b0luZGV4ID0gYWxsS2V5cy5pbmRleE9mKHRvTG9jYXRpb24ua2V5KTtcbiAgICBpZiAodG9JbmRleCA9PT0gLTEpIHRvSW5kZXggPSAwO1xuICAgIHZhciBmcm9tSW5kZXggPSBhbGxLZXlzLmluZGV4T2YoZnJvbUxvY2F0aW9uLmtleSk7XG4gICAgaWYgKGZyb21JbmRleCA9PT0gLTEpIGZyb21JbmRleCA9IDA7XG4gICAgdmFyIGRlbHRhID0gdG9JbmRleCAtIGZyb21JbmRleDtcblxuICAgIGlmIChkZWx0YSkge1xuICAgICAgZm9yY2VOZXh0UG9wID0gdHJ1ZTtcbiAgICAgIGdvKGRlbHRhKTtcbiAgICB9XG4gIH1cblxuICB2YXIgaW5pdGlhbExvY2F0aW9uID0gZ2V0RE9NTG9jYXRpb24oZ2V0SGlzdG9yeVN0YXRlKCkpO1xuICB2YXIgYWxsS2V5cyA9IFtpbml0aWFsTG9jYXRpb24ua2V5XTsgLy8gUHVibGljIGludGVyZmFjZVxuXG4gIGZ1bmN0aW9uIGNyZWF0ZUhyZWYobG9jYXRpb24pIHtcbiAgICByZXR1cm4gYmFzZW5hbWUgKyBjcmVhdGVQYXRoKGxvY2F0aW9uKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHB1c2gocGF0aCwgc3RhdGUpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKCEodHlwZW9mIHBhdGggPT09ICdvYmplY3QnICYmIHBhdGguc3RhdGUgIT09IHVuZGVmaW5lZCAmJiBzdGF0ZSAhPT0gdW5kZWZpbmVkKSwgJ1lvdSBzaG91bGQgYXZvaWQgcHJvdmlkaW5nIGEgMm5kIHN0YXRlIGFyZ3VtZW50IHRvIHB1c2ggd2hlbiB0aGUgMXN0ICcgKyAnYXJndW1lbnQgaXMgYSBsb2NhdGlvbi1saWtlIG9iamVjdCB0aGF0IGFscmVhZHkgaGFzIHN0YXRlOyBpdCBpcyBpZ25vcmVkJykgOiB2b2lkIDA7XG4gICAgdmFyIGFjdGlvbiA9ICdQVVNIJztcbiAgICB2YXIgbG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihwYXRoLCBzdGF0ZSwgY3JlYXRlS2V5KCksIGhpc3RvcnkubG9jYXRpb24pO1xuICAgIHRyYW5zaXRpb25NYW5hZ2VyLmNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGFjdGlvbiwgZ2V0VXNlckNvbmZpcm1hdGlvbiwgZnVuY3Rpb24gKG9rKSB7XG4gICAgICBpZiAoIW9rKSByZXR1cm47XG4gICAgICB2YXIgaHJlZiA9IGNyZWF0ZUhyZWYobG9jYXRpb24pO1xuICAgICAgdmFyIGtleSA9IGxvY2F0aW9uLmtleSxcbiAgICAgICAgICBzdGF0ZSA9IGxvY2F0aW9uLnN0YXRlO1xuXG4gICAgICBpZiAoY2FuVXNlSGlzdG9yeSkge1xuICAgICAgICBnbG9iYWxIaXN0b3J5LnB1c2hTdGF0ZSh7XG4gICAgICAgICAga2V5OiBrZXksXG4gICAgICAgICAgc3RhdGU6IHN0YXRlXG4gICAgICAgIH0sIG51bGwsIGhyZWYpO1xuXG4gICAgICAgIGlmIChmb3JjZVJlZnJlc2gpIHtcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24uaHJlZiA9IGhyZWY7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdmFyIHByZXZJbmRleCA9IGFsbEtleXMuaW5kZXhPZihoaXN0b3J5LmxvY2F0aW9uLmtleSk7XG4gICAgICAgICAgdmFyIG5leHRLZXlzID0gYWxsS2V5cy5zbGljZSgwLCBwcmV2SW5kZXggKyAxKTtcbiAgICAgICAgICBuZXh0S2V5cy5wdXNoKGxvY2F0aW9uLmtleSk7XG4gICAgICAgICAgYWxsS2V5cyA9IG5leHRLZXlzO1xuICAgICAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoc3RhdGUgPT09IHVuZGVmaW5lZCwgJ0Jyb3dzZXIgaGlzdG9yeSBjYW5ub3QgcHVzaCBzdGF0ZSBpbiBicm93c2VycyB0aGF0IGRvIG5vdCBzdXBwb3J0IEhUTUw1IGhpc3RvcnknKSA6IHZvaWQgMDtcbiAgICAgICAgd2luZG93LmxvY2F0aW9uLmhyZWYgPSBocmVmO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZShwYXRoLCBzdGF0ZSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoISh0eXBlb2YgcGF0aCA9PT0gJ29iamVjdCcgJiYgcGF0aC5zdGF0ZSAhPT0gdW5kZWZpbmVkICYmIHN0YXRlICE9PSB1bmRlZmluZWQpLCAnWW91IHNob3VsZCBhdm9pZCBwcm92aWRpbmcgYSAybmQgc3RhdGUgYXJndW1lbnQgdG8gcmVwbGFjZSB3aGVuIHRoZSAxc3QgJyArICdhcmd1bWVudCBpcyBhIGxvY2F0aW9uLWxpa2Ugb2JqZWN0IHRoYXQgYWxyZWFkeSBoYXMgc3RhdGU7IGl0IGlzIGlnbm9yZWQnKSA6IHZvaWQgMDtcbiAgICB2YXIgYWN0aW9uID0gJ1JFUExBQ0UnO1xuICAgIHZhciBsb2NhdGlvbiA9IGNyZWF0ZUxvY2F0aW9uKHBhdGgsIHN0YXRlLCBjcmVhdGVLZXkoKSwgaGlzdG9yeS5sb2NhdGlvbik7XG4gICAgdHJhbnNpdGlvbk1hbmFnZXIuY29uZmlybVRyYW5zaXRpb25Ubyhsb2NhdGlvbiwgYWN0aW9uLCBnZXRVc2VyQ29uZmlybWF0aW9uLCBmdW5jdGlvbiAob2spIHtcbiAgICAgIGlmICghb2spIHJldHVybjtcbiAgICAgIHZhciBocmVmID0gY3JlYXRlSHJlZihsb2NhdGlvbik7XG4gICAgICB2YXIga2V5ID0gbG9jYXRpb24ua2V5LFxuICAgICAgICAgIHN0YXRlID0gbG9jYXRpb24uc3RhdGU7XG5cbiAgICAgIGlmIChjYW5Vc2VIaXN0b3J5KSB7XG4gICAgICAgIGdsb2JhbEhpc3RvcnkucmVwbGFjZVN0YXRlKHtcbiAgICAgICAgICBrZXk6IGtleSxcbiAgICAgICAgICBzdGF0ZTogc3RhdGVcbiAgICAgICAgfSwgbnVsbCwgaHJlZik7XG5cbiAgICAgICAgaWYgKGZvcmNlUmVmcmVzaCkge1xuICAgICAgICAgIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKGhyZWYpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHZhciBwcmV2SW5kZXggPSBhbGxLZXlzLmluZGV4T2YoaGlzdG9yeS5sb2NhdGlvbi5rZXkpO1xuICAgICAgICAgIGlmIChwcmV2SW5kZXggIT09IC0xKSBhbGxLZXlzW3ByZXZJbmRleF0gPSBsb2NhdGlvbi5rZXk7XG4gICAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgICAgICBsb2NhdGlvbjogbG9jYXRpb25cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhzdGF0ZSA9PT0gdW5kZWZpbmVkLCAnQnJvd3NlciBoaXN0b3J5IGNhbm5vdCByZXBsYWNlIHN0YXRlIGluIGJyb3dzZXJzIHRoYXQgZG8gbm90IHN1cHBvcnQgSFRNTDUgaGlzdG9yeScpIDogdm9pZCAwO1xuICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVwbGFjZShocmVmKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdvKG4pIHtcbiAgICBnbG9iYWxIaXN0b3J5LmdvKG4pO1xuICB9XG5cbiAgZnVuY3Rpb24gZ29CYWNrKCkge1xuICAgIGdvKC0xKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdvRm9yd2FyZCgpIHtcbiAgICBnbygxKTtcbiAgfVxuXG4gIHZhciBsaXN0ZW5lckNvdW50ID0gMDtcblxuICBmdW5jdGlvbiBjaGVja0RPTUxpc3RlbmVycyhkZWx0YSkge1xuICAgIGxpc3RlbmVyQ291bnQgKz0gZGVsdGE7XG5cbiAgICBpZiAobGlzdGVuZXJDb3VudCA9PT0gMSAmJiBkZWx0YSA9PT0gMSkge1xuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoUG9wU3RhdGVFdmVudCwgaGFuZGxlUG9wU3RhdGUpO1xuICAgICAgaWYgKG5lZWRzSGFzaENoYW5nZUxpc3RlbmVyKSB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihIYXNoQ2hhbmdlRXZlbnQsIGhhbmRsZUhhc2hDaGFuZ2UpO1xuICAgIH0gZWxzZSBpZiAobGlzdGVuZXJDb3VudCA9PT0gMCkge1xuICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoUG9wU3RhdGVFdmVudCwgaGFuZGxlUG9wU3RhdGUpO1xuICAgICAgaWYgKG5lZWRzSGFzaENoYW5nZUxpc3RlbmVyKSB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihIYXNoQ2hhbmdlRXZlbnQsIGhhbmRsZUhhc2hDaGFuZ2UpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBpc0Jsb2NrZWQgPSBmYWxzZTtcblxuICBmdW5jdGlvbiBibG9jayhwcm9tcHQpIHtcbiAgICBpZiAocHJvbXB0ID09PSB2b2lkIDApIHtcbiAgICAgIHByb21wdCA9IGZhbHNlO1xuICAgIH1cblxuICAgIHZhciB1bmJsb2NrID0gdHJhbnNpdGlvbk1hbmFnZXIuc2V0UHJvbXB0KHByb21wdCk7XG5cbiAgICBpZiAoIWlzQmxvY2tlZCkge1xuICAgICAgY2hlY2tET01MaXN0ZW5lcnMoMSk7XG4gICAgICBpc0Jsb2NrZWQgPSB0cnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoaXNCbG9ja2VkKSB7XG4gICAgICAgIGlzQmxvY2tlZCA9IGZhbHNlO1xuICAgICAgICBjaGVja0RPTUxpc3RlbmVycygtMSk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB1bmJsb2NrKCk7XG4gICAgfTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGxpc3RlbihsaXN0ZW5lcikge1xuICAgIHZhciB1bmxpc3RlbiA9IHRyYW5zaXRpb25NYW5hZ2VyLmFwcGVuZExpc3RlbmVyKGxpc3RlbmVyKTtcbiAgICBjaGVja0RPTUxpc3RlbmVycygxKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgY2hlY2tET01MaXN0ZW5lcnMoLTEpO1xuICAgICAgdW5saXN0ZW4oKTtcbiAgICB9O1xuICB9XG5cbiAgdmFyIGhpc3RvcnkgPSB7XG4gICAgbGVuZ3RoOiBnbG9iYWxIaXN0b3J5Lmxlbmd0aCxcbiAgICBhY3Rpb246ICdQT1AnLFxuICAgIGxvY2F0aW9uOiBpbml0aWFsTG9jYXRpb24sXG4gICAgY3JlYXRlSHJlZjogY3JlYXRlSHJlZixcbiAgICBwdXNoOiBwdXNoLFxuICAgIHJlcGxhY2U6IHJlcGxhY2UsXG4gICAgZ286IGdvLFxuICAgIGdvQmFjazogZ29CYWNrLFxuICAgIGdvRm9yd2FyZDogZ29Gb3J3YXJkLFxuICAgIGJsb2NrOiBibG9jayxcbiAgICBsaXN0ZW46IGxpc3RlblxuICB9O1xuICByZXR1cm4gaGlzdG9yeTtcbn1cblxudmFyIEhhc2hDaGFuZ2VFdmVudCQxID0gJ2hhc2hjaGFuZ2UnO1xudmFyIEhhc2hQYXRoQ29kZXJzID0ge1xuICBoYXNoYmFuZzoge1xuICAgIGVuY29kZVBhdGg6IGZ1bmN0aW9uIGVuY29kZVBhdGgocGF0aCkge1xuICAgICAgcmV0dXJuIHBhdGguY2hhckF0KDApID09PSAnIScgPyBwYXRoIDogJyEvJyArIHN0cmlwTGVhZGluZ1NsYXNoKHBhdGgpO1xuICAgIH0sXG4gICAgZGVjb2RlUGF0aDogZnVuY3Rpb24gZGVjb2RlUGF0aChwYXRoKSB7XG4gICAgICByZXR1cm4gcGF0aC5jaGFyQXQoMCkgPT09ICchJyA/IHBhdGguc3Vic3RyKDEpIDogcGF0aDtcbiAgICB9XG4gIH0sXG4gIG5vc2xhc2g6IHtcbiAgICBlbmNvZGVQYXRoOiBzdHJpcExlYWRpbmdTbGFzaCxcbiAgICBkZWNvZGVQYXRoOiBhZGRMZWFkaW5nU2xhc2hcbiAgfSxcbiAgc2xhc2g6IHtcbiAgICBlbmNvZGVQYXRoOiBhZGRMZWFkaW5nU2xhc2gsXG4gICAgZGVjb2RlUGF0aDogYWRkTGVhZGluZ1NsYXNoXG4gIH1cbn07XG5cbmZ1bmN0aW9uIHN0cmlwSGFzaCh1cmwpIHtcbiAgdmFyIGhhc2hJbmRleCA9IHVybC5pbmRleE9mKCcjJyk7XG4gIHJldHVybiBoYXNoSW5kZXggPT09IC0xID8gdXJsIDogdXJsLnNsaWNlKDAsIGhhc2hJbmRleCk7XG59XG5cbmZ1bmN0aW9uIGdldEhhc2hQYXRoKCkge1xuICAvLyBXZSBjYW4ndCB1c2Ugd2luZG93LmxvY2F0aW9uLmhhc2ggaGVyZSBiZWNhdXNlIGl0J3Mgbm90XG4gIC8vIGNvbnNpc3RlbnQgYWNyb3NzIGJyb3dzZXJzIC0gRmlyZWZveCB3aWxsIHByZS1kZWNvZGUgaXQhXG4gIHZhciBocmVmID0gd2luZG93LmxvY2F0aW9uLmhyZWY7XG4gIHZhciBoYXNoSW5kZXggPSBocmVmLmluZGV4T2YoJyMnKTtcbiAgcmV0dXJuIGhhc2hJbmRleCA9PT0gLTEgPyAnJyA6IGhyZWYuc3Vic3RyaW5nKGhhc2hJbmRleCArIDEpO1xufVxuXG5mdW5jdGlvbiBwdXNoSGFzaFBhdGgocGF0aCkge1xuICB3aW5kb3cubG9jYXRpb24uaGFzaCA9IHBhdGg7XG59XG5cbmZ1bmN0aW9uIHJlcGxhY2VIYXNoUGF0aChwYXRoKSB7XG4gIHdpbmRvdy5sb2NhdGlvbi5yZXBsYWNlKHN0cmlwSGFzaCh3aW5kb3cubG9jYXRpb24uaHJlZikgKyAnIycgKyBwYXRoKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlSGFzaEhpc3RvcnkocHJvcHMpIHtcbiAgaWYgKHByb3BzID09PSB2b2lkIDApIHtcbiAgICBwcm9wcyA9IHt9O1xuICB9XG5cbiAgIWNhblVzZURPTSA/IHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IGludmFyaWFudChmYWxzZSwgJ0hhc2ggaGlzdG9yeSBuZWVkcyBhIERPTScpIDogaW52YXJpYW50KGZhbHNlKSA6IHZvaWQgMDtcbiAgdmFyIGdsb2JhbEhpc3RvcnkgPSB3aW5kb3cuaGlzdG9yeTtcbiAgdmFyIGNhbkdvV2l0aG91dFJlbG9hZCA9IHN1cHBvcnRzR29XaXRob3V0UmVsb2FkVXNpbmdIYXNoKCk7XG4gIHZhciBfcHJvcHMgPSBwcm9wcyxcbiAgICAgIF9wcm9wcyRnZXRVc2VyQ29uZmlybSA9IF9wcm9wcy5nZXRVc2VyQ29uZmlybWF0aW9uLFxuICAgICAgZ2V0VXNlckNvbmZpcm1hdGlvbiA9IF9wcm9wcyRnZXRVc2VyQ29uZmlybSA9PT0gdm9pZCAwID8gZ2V0Q29uZmlybWF0aW9uIDogX3Byb3BzJGdldFVzZXJDb25maXJtLFxuICAgICAgX3Byb3BzJGhhc2hUeXBlID0gX3Byb3BzLmhhc2hUeXBlLFxuICAgICAgaGFzaFR5cGUgPSBfcHJvcHMkaGFzaFR5cGUgPT09IHZvaWQgMCA/ICdzbGFzaCcgOiBfcHJvcHMkaGFzaFR5cGU7XG4gIHZhciBiYXNlbmFtZSA9IHByb3BzLmJhc2VuYW1lID8gc3RyaXBUcmFpbGluZ1NsYXNoKGFkZExlYWRpbmdTbGFzaChwcm9wcy5iYXNlbmFtZSkpIDogJyc7XG4gIHZhciBfSGFzaFBhdGhDb2RlcnMkaGFzaFQgPSBIYXNoUGF0aENvZGVyc1toYXNoVHlwZV0sXG4gICAgICBlbmNvZGVQYXRoID0gX0hhc2hQYXRoQ29kZXJzJGhhc2hULmVuY29kZVBhdGgsXG4gICAgICBkZWNvZGVQYXRoID0gX0hhc2hQYXRoQ29kZXJzJGhhc2hULmRlY29kZVBhdGg7XG5cbiAgZnVuY3Rpb24gZ2V0RE9NTG9jYXRpb24oKSB7XG4gICAgdmFyIHBhdGggPSBkZWNvZGVQYXRoKGdldEhhc2hQYXRoKCkpO1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoIWJhc2VuYW1lIHx8IGhhc0Jhc2VuYW1lKHBhdGgsIGJhc2VuYW1lKSwgJ1lvdSBhcmUgYXR0ZW1wdGluZyB0byB1c2UgYSBiYXNlbmFtZSBvbiBhIHBhZ2Ugd2hvc2UgVVJMIHBhdGggZG9lcyBub3QgYmVnaW4gJyArICd3aXRoIHRoZSBiYXNlbmFtZS4gRXhwZWN0ZWQgcGF0aCBcIicgKyBwYXRoICsgJ1wiIHRvIGJlZ2luIHdpdGggXCInICsgYmFzZW5hbWUgKyAnXCIuJykgOiB2b2lkIDA7XG4gICAgaWYgKGJhc2VuYW1lKSBwYXRoID0gc3RyaXBCYXNlbmFtZShwYXRoLCBiYXNlbmFtZSk7XG4gICAgcmV0dXJuIGNyZWF0ZUxvY2F0aW9uKHBhdGgpO1xuICB9XG5cbiAgdmFyIHRyYW5zaXRpb25NYW5hZ2VyID0gY3JlYXRlVHJhbnNpdGlvbk1hbmFnZXIoKTtcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXh0U3RhdGUpIHtcbiAgICBfZXh0ZW5kcyhoaXN0b3J5LCBuZXh0U3RhdGUpO1xuXG4gICAgaGlzdG9yeS5sZW5ndGggPSBnbG9iYWxIaXN0b3J5Lmxlbmd0aDtcbiAgICB0cmFuc2l0aW9uTWFuYWdlci5ub3RpZnlMaXN0ZW5lcnMoaGlzdG9yeS5sb2NhdGlvbiwgaGlzdG9yeS5hY3Rpb24pO1xuICB9XG5cbiAgdmFyIGZvcmNlTmV4dFBvcCA9IGZhbHNlO1xuICB2YXIgaWdub3JlUGF0aCA9IG51bGw7XG5cbiAgZnVuY3Rpb24gbG9jYXRpb25zQXJlRXF1YWwkJDEoYSwgYikge1xuICAgIHJldHVybiBhLnBhdGhuYW1lID09PSBiLnBhdGhuYW1lICYmIGEuc2VhcmNoID09PSBiLnNlYXJjaCAmJiBhLmhhc2ggPT09IGIuaGFzaDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGhhbmRsZUhhc2hDaGFuZ2UoKSB7XG4gICAgdmFyIHBhdGggPSBnZXRIYXNoUGF0aCgpO1xuICAgIHZhciBlbmNvZGVkUGF0aCA9IGVuY29kZVBhdGgocGF0aCk7XG5cbiAgICBpZiAocGF0aCAhPT0gZW5jb2RlZFBhdGgpIHtcbiAgICAgIC8vIEVuc3VyZSB3ZSBhbHdheXMgaGF2ZSBhIHByb3Blcmx5LWVuY29kZWQgaGFzaC5cbiAgICAgIHJlcGxhY2VIYXNoUGF0aChlbmNvZGVkUGF0aCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHZhciBsb2NhdGlvbiA9IGdldERPTUxvY2F0aW9uKCk7XG4gICAgICB2YXIgcHJldkxvY2F0aW9uID0gaGlzdG9yeS5sb2NhdGlvbjtcbiAgICAgIGlmICghZm9yY2VOZXh0UG9wICYmIGxvY2F0aW9uc0FyZUVxdWFsJCQxKHByZXZMb2NhdGlvbiwgbG9jYXRpb24pKSByZXR1cm47IC8vIEEgaGFzaGNoYW5nZSBkb2Vzbid0IGFsd2F5cyA9PSBsb2NhdGlvbiBjaGFuZ2UuXG5cbiAgICAgIGlmIChpZ25vcmVQYXRoID09PSBjcmVhdGVQYXRoKGxvY2F0aW9uKSkgcmV0dXJuOyAvLyBJZ25vcmUgdGhpcyBjaGFuZ2U7IHdlIGFscmVhZHkgc2V0U3RhdGUgaW4gcHVzaC9yZXBsYWNlLlxuXG4gICAgICBpZ25vcmVQYXRoID0gbnVsbDtcbiAgICAgIGhhbmRsZVBvcChsb2NhdGlvbik7XG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gaGFuZGxlUG9wKGxvY2F0aW9uKSB7XG4gICAgaWYgKGZvcmNlTmV4dFBvcCkge1xuICAgICAgZm9yY2VOZXh0UG9wID0gZmFsc2U7XG4gICAgICBzZXRTdGF0ZSgpO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgYWN0aW9uID0gJ1BPUCc7XG4gICAgICB0cmFuc2l0aW9uTWFuYWdlci5jb25maXJtVHJhbnNpdGlvblRvKGxvY2F0aW9uLCBhY3Rpb24sIGdldFVzZXJDb25maXJtYXRpb24sIGZ1bmN0aW9uIChvaykge1xuICAgICAgICBpZiAob2spIHtcbiAgICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvblxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJldmVydFBvcChsb2NhdGlvbik7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIGZ1bmN0aW9uIHJldmVydFBvcChmcm9tTG9jYXRpb24pIHtcbiAgICB2YXIgdG9Mb2NhdGlvbiA9IGhpc3RvcnkubG9jYXRpb247IC8vIFRPRE86IFdlIGNvdWxkIHByb2JhYmx5IG1ha2UgdGhpcyBtb3JlIHJlbGlhYmxlIGJ5XG4gICAgLy8ga2VlcGluZyBhIGxpc3Qgb2YgcGF0aHMgd2UndmUgc2VlbiBpbiBzZXNzaW9uU3RvcmFnZS5cbiAgICAvLyBJbnN0ZWFkLCB3ZSBqdXN0IGRlZmF1bHQgdG8gMCBmb3IgcGF0aHMgd2UgZG9uJ3Qga25vdy5cblxuICAgIHZhciB0b0luZGV4ID0gYWxsUGF0aHMubGFzdEluZGV4T2YoY3JlYXRlUGF0aCh0b0xvY2F0aW9uKSk7XG4gICAgaWYgKHRvSW5kZXggPT09IC0xKSB0b0luZGV4ID0gMDtcbiAgICB2YXIgZnJvbUluZGV4ID0gYWxsUGF0aHMubGFzdEluZGV4T2YoY3JlYXRlUGF0aChmcm9tTG9jYXRpb24pKTtcbiAgICBpZiAoZnJvbUluZGV4ID09PSAtMSkgZnJvbUluZGV4ID0gMDtcbiAgICB2YXIgZGVsdGEgPSB0b0luZGV4IC0gZnJvbUluZGV4O1xuXG4gICAgaWYgKGRlbHRhKSB7XG4gICAgICBmb3JjZU5leHRQb3AgPSB0cnVlO1xuICAgICAgZ28oZGVsdGEpO1xuICAgIH1cbiAgfSAvLyBFbnN1cmUgdGhlIGhhc2ggaXMgZW5jb2RlZCBwcm9wZXJseSBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS5cblxuXG4gIHZhciBwYXRoID0gZ2V0SGFzaFBhdGgoKTtcbiAgdmFyIGVuY29kZWRQYXRoID0gZW5jb2RlUGF0aChwYXRoKTtcbiAgaWYgKHBhdGggIT09IGVuY29kZWRQYXRoKSByZXBsYWNlSGFzaFBhdGgoZW5jb2RlZFBhdGgpO1xuICB2YXIgaW5pdGlhbExvY2F0aW9uID0gZ2V0RE9NTG9jYXRpb24oKTtcbiAgdmFyIGFsbFBhdGhzID0gW2NyZWF0ZVBhdGgoaW5pdGlhbExvY2F0aW9uKV07IC8vIFB1YmxpYyBpbnRlcmZhY2VcblxuICBmdW5jdGlvbiBjcmVhdGVIcmVmKGxvY2F0aW9uKSB7XG4gICAgdmFyIGJhc2VUYWcgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdiYXNlJyk7XG4gICAgdmFyIGhyZWYgPSAnJztcblxuICAgIGlmIChiYXNlVGFnICYmIGJhc2VUYWcuZ2V0QXR0cmlidXRlKCdocmVmJykpIHtcbiAgICAgIGhyZWYgPSBzdHJpcEhhc2god2luZG93LmxvY2F0aW9uLmhyZWYpO1xuICAgIH1cblxuICAgIHJldHVybiBocmVmICsgJyMnICsgZW5jb2RlUGF0aChiYXNlbmFtZSArIGNyZWF0ZVBhdGgobG9jYXRpb24pKTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHB1c2gocGF0aCwgc3RhdGUpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKHN0YXRlID09PSB1bmRlZmluZWQsICdIYXNoIGhpc3RvcnkgY2Fubm90IHB1c2ggc3RhdGU7IGl0IGlzIGlnbm9yZWQnKSA6IHZvaWQgMDtcbiAgICB2YXIgYWN0aW9uID0gJ1BVU0gnO1xuICAgIHZhciBsb2NhdGlvbiA9IGNyZWF0ZUxvY2F0aW9uKHBhdGgsIHVuZGVmaW5lZCwgdW5kZWZpbmVkLCBoaXN0b3J5LmxvY2F0aW9uKTtcbiAgICB0cmFuc2l0aW9uTWFuYWdlci5jb25maXJtVHJhbnNpdGlvblRvKGxvY2F0aW9uLCBhY3Rpb24sIGdldFVzZXJDb25maXJtYXRpb24sIGZ1bmN0aW9uIChvaykge1xuICAgICAgaWYgKCFvaykgcmV0dXJuO1xuICAgICAgdmFyIHBhdGggPSBjcmVhdGVQYXRoKGxvY2F0aW9uKTtcbiAgICAgIHZhciBlbmNvZGVkUGF0aCA9IGVuY29kZVBhdGgoYmFzZW5hbWUgKyBwYXRoKTtcbiAgICAgIHZhciBoYXNoQ2hhbmdlZCA9IGdldEhhc2hQYXRoKCkgIT09IGVuY29kZWRQYXRoO1xuXG4gICAgICBpZiAoaGFzaENoYW5nZWQpIHtcbiAgICAgICAgLy8gV2UgY2Fubm90IHRlbGwgaWYgYSBoYXNoY2hhbmdlIHdhcyBjYXVzZWQgYnkgYSBQVVNILCBzbyB3ZSdkXG4gICAgICAgIC8vIHJhdGhlciBzZXRTdGF0ZSBoZXJlIGFuZCBpZ25vcmUgdGhlIGhhc2hjaGFuZ2UuIFRoZSBjYXZlYXQgaGVyZVxuICAgICAgICAvLyBpcyB0aGF0IG90aGVyIGhhc2ggaGlzdG9yaWVzIGluIHRoZSBwYWdlIHdpbGwgY29uc2lkZXIgaXQgYSBQT1AuXG4gICAgICAgIGlnbm9yZVBhdGggPSBwYXRoO1xuICAgICAgICBwdXNoSGFzaFBhdGgoZW5jb2RlZFBhdGgpO1xuICAgICAgICB2YXIgcHJldkluZGV4ID0gYWxsUGF0aHMubGFzdEluZGV4T2YoY3JlYXRlUGF0aChoaXN0b3J5LmxvY2F0aW9uKSk7XG4gICAgICAgIHZhciBuZXh0UGF0aHMgPSBhbGxQYXRocy5zbGljZSgwLCBwcmV2SW5kZXggKyAxKTtcbiAgICAgICAgbmV4dFBhdGhzLnB1c2gocGF0aCk7XG4gICAgICAgIGFsbFBhdGhzID0gbmV4dFBhdGhzO1xuICAgICAgICBzZXRTdGF0ZSh7XG4gICAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uXG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyhmYWxzZSwgJ0hhc2ggaGlzdG9yeSBjYW5ub3QgUFVTSCB0aGUgc2FtZSBwYXRoOyBhIG5ldyBlbnRyeSB3aWxsIG5vdCBiZSBhZGRlZCB0byB0aGUgaGlzdG9yeSBzdGFjaycpIDogdm9pZCAwO1xuICAgICAgICBzZXRTdGF0ZSgpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVwbGFjZShwYXRoLCBzdGF0ZSkge1xuICAgIHByb2Nlc3MuZW52Lk5PREVfRU5WICE9PSBcInByb2R1Y3Rpb25cIiA/IHdhcm5pbmcoc3RhdGUgPT09IHVuZGVmaW5lZCwgJ0hhc2ggaGlzdG9yeSBjYW5ub3QgcmVwbGFjZSBzdGF0ZTsgaXQgaXMgaWdub3JlZCcpIDogdm9pZCAwO1xuICAgIHZhciBhY3Rpb24gPSAnUkVQTEFDRSc7XG4gICAgdmFyIGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24ocGF0aCwgdW5kZWZpbmVkLCB1bmRlZmluZWQsIGhpc3RvcnkubG9jYXRpb24pO1xuICAgIHRyYW5zaXRpb25NYW5hZ2VyLmNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGFjdGlvbiwgZ2V0VXNlckNvbmZpcm1hdGlvbiwgZnVuY3Rpb24gKG9rKSB7XG4gICAgICBpZiAoIW9rKSByZXR1cm47XG4gICAgICB2YXIgcGF0aCA9IGNyZWF0ZVBhdGgobG9jYXRpb24pO1xuICAgICAgdmFyIGVuY29kZWRQYXRoID0gZW5jb2RlUGF0aChiYXNlbmFtZSArIHBhdGgpO1xuICAgICAgdmFyIGhhc2hDaGFuZ2VkID0gZ2V0SGFzaFBhdGgoKSAhPT0gZW5jb2RlZFBhdGg7XG5cbiAgICAgIGlmIChoYXNoQ2hhbmdlZCkge1xuICAgICAgICAvLyBXZSBjYW5ub3QgdGVsbCBpZiBhIGhhc2hjaGFuZ2Ugd2FzIGNhdXNlZCBieSBhIFJFUExBQ0UsIHNvIHdlJ2RcbiAgICAgICAgLy8gcmF0aGVyIHNldFN0YXRlIGhlcmUgYW5kIGlnbm9yZSB0aGUgaGFzaGNoYW5nZS4gVGhlIGNhdmVhdCBoZXJlXG4gICAgICAgIC8vIGlzIHRoYXQgb3RoZXIgaGFzaCBoaXN0b3JpZXMgaW4gdGhlIHBhZ2Ugd2lsbCBjb25zaWRlciBpdCBhIFBPUC5cbiAgICAgICAgaWdub3JlUGF0aCA9IHBhdGg7XG4gICAgICAgIHJlcGxhY2VIYXNoUGF0aChlbmNvZGVkUGF0aCk7XG4gICAgICB9XG5cbiAgICAgIHZhciBwcmV2SW5kZXggPSBhbGxQYXRocy5pbmRleE9mKGNyZWF0ZVBhdGgoaGlzdG9yeS5sb2NhdGlvbikpO1xuICAgICAgaWYgKHByZXZJbmRleCAhPT0gLTEpIGFsbFBhdGhzW3ByZXZJbmRleF0gPSBwYXRoO1xuICAgICAgc2V0U3RhdGUoe1xuICAgICAgICBhY3Rpb246IGFjdGlvbixcbiAgICAgICAgbG9jYXRpb246IGxvY2F0aW9uXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIGdvKG4pIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKGNhbkdvV2l0aG91dFJlbG9hZCwgJ0hhc2ggaGlzdG9yeSBnbyhuKSBjYXVzZXMgYSBmdWxsIHBhZ2UgcmVsb2FkIGluIHRoaXMgYnJvd3NlcicpIDogdm9pZCAwO1xuICAgIGdsb2JhbEhpc3RvcnkuZ28obik7XG4gIH1cblxuICBmdW5jdGlvbiBnb0JhY2soKSB7XG4gICAgZ28oLTEpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ29Gb3J3YXJkKCkge1xuICAgIGdvKDEpO1xuICB9XG5cbiAgdmFyIGxpc3RlbmVyQ291bnQgPSAwO1xuXG4gIGZ1bmN0aW9uIGNoZWNrRE9NTGlzdGVuZXJzKGRlbHRhKSB7XG4gICAgbGlzdGVuZXJDb3VudCArPSBkZWx0YTtcblxuICAgIGlmIChsaXN0ZW5lckNvdW50ID09PSAxICYmIGRlbHRhID09PSAxKSB7XG4gICAgICB3aW5kb3cuYWRkRXZlbnRMaXN0ZW5lcihIYXNoQ2hhbmdlRXZlbnQkMSwgaGFuZGxlSGFzaENoYW5nZSk7XG4gICAgfSBlbHNlIGlmIChsaXN0ZW5lckNvdW50ID09PSAwKSB7XG4gICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcihIYXNoQ2hhbmdlRXZlbnQkMSwgaGFuZGxlSGFzaENoYW5nZSk7XG4gICAgfVxuICB9XG5cbiAgdmFyIGlzQmxvY2tlZCA9IGZhbHNlO1xuXG4gIGZ1bmN0aW9uIGJsb2NrKHByb21wdCkge1xuICAgIGlmIChwcm9tcHQgPT09IHZvaWQgMCkge1xuICAgICAgcHJvbXB0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgdmFyIHVuYmxvY2sgPSB0cmFuc2l0aW9uTWFuYWdlci5zZXRQcm9tcHQocHJvbXB0KTtcblxuICAgIGlmICghaXNCbG9ja2VkKSB7XG4gICAgICBjaGVja0RPTUxpc3RlbmVycygxKTtcbiAgICAgIGlzQmxvY2tlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgIGlmIChpc0Jsb2NrZWQpIHtcbiAgICAgICAgaXNCbG9ja2VkID0gZmFsc2U7XG4gICAgICAgIGNoZWNrRE9NTGlzdGVuZXJzKC0xKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHVuYmxvY2soKTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gbGlzdGVuKGxpc3RlbmVyKSB7XG4gICAgdmFyIHVubGlzdGVuID0gdHJhbnNpdGlvbk1hbmFnZXIuYXBwZW5kTGlzdGVuZXIobGlzdGVuZXIpO1xuICAgIGNoZWNrRE9NTGlzdGVuZXJzKDEpO1xuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBjaGVja0RPTUxpc3RlbmVycygtMSk7XG4gICAgICB1bmxpc3RlbigpO1xuICAgIH07XG4gIH1cblxuICB2YXIgaGlzdG9yeSA9IHtcbiAgICBsZW5ndGg6IGdsb2JhbEhpc3RvcnkubGVuZ3RoLFxuICAgIGFjdGlvbjogJ1BPUCcsXG4gICAgbG9jYXRpb246IGluaXRpYWxMb2NhdGlvbixcbiAgICBjcmVhdGVIcmVmOiBjcmVhdGVIcmVmLFxuICAgIHB1c2g6IHB1c2gsXG4gICAgcmVwbGFjZTogcmVwbGFjZSxcbiAgICBnbzogZ28sXG4gICAgZ29CYWNrOiBnb0JhY2ssXG4gICAgZ29Gb3J3YXJkOiBnb0ZvcndhcmQsXG4gICAgYmxvY2s6IGJsb2NrLFxuICAgIGxpc3RlbjogbGlzdGVuXG4gIH07XG4gIHJldHVybiBoaXN0b3J5O1xufVxuXG5mdW5jdGlvbiBjbGFtcChuLCBsb3dlckJvdW5kLCB1cHBlckJvdW5kKSB7XG4gIHJldHVybiBNYXRoLm1pbihNYXRoLm1heChuLCBsb3dlckJvdW5kKSwgdXBwZXJCb3VuZCk7XG59XG4vKipcbiAqIENyZWF0ZXMgYSBoaXN0b3J5IG9iamVjdCB0aGF0IHN0b3JlcyBsb2NhdGlvbnMgaW4gbWVtb3J5LlxuICovXG5cblxuZnVuY3Rpb24gY3JlYXRlTWVtb3J5SGlzdG9yeShwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cblxuICB2YXIgX3Byb3BzID0gcHJvcHMsXG4gICAgICBnZXRVc2VyQ29uZmlybWF0aW9uID0gX3Byb3BzLmdldFVzZXJDb25maXJtYXRpb24sXG4gICAgICBfcHJvcHMkaW5pdGlhbEVudHJpZXMgPSBfcHJvcHMuaW5pdGlhbEVudHJpZXMsXG4gICAgICBpbml0aWFsRW50cmllcyA9IF9wcm9wcyRpbml0aWFsRW50cmllcyA9PT0gdm9pZCAwID8gWycvJ10gOiBfcHJvcHMkaW5pdGlhbEVudHJpZXMsXG4gICAgICBfcHJvcHMkaW5pdGlhbEluZGV4ID0gX3Byb3BzLmluaXRpYWxJbmRleCxcbiAgICAgIGluaXRpYWxJbmRleCA9IF9wcm9wcyRpbml0aWFsSW5kZXggPT09IHZvaWQgMCA/IDAgOiBfcHJvcHMkaW5pdGlhbEluZGV4LFxuICAgICAgX3Byb3BzJGtleUxlbmd0aCA9IF9wcm9wcy5rZXlMZW5ndGgsXG4gICAgICBrZXlMZW5ndGggPSBfcHJvcHMka2V5TGVuZ3RoID09PSB2b2lkIDAgPyA2IDogX3Byb3BzJGtleUxlbmd0aDtcbiAgdmFyIHRyYW5zaXRpb25NYW5hZ2VyID0gY3JlYXRlVHJhbnNpdGlvbk1hbmFnZXIoKTtcblxuICBmdW5jdGlvbiBzZXRTdGF0ZShuZXh0U3RhdGUpIHtcbiAgICBfZXh0ZW5kcyhoaXN0b3J5LCBuZXh0U3RhdGUpO1xuXG4gICAgaGlzdG9yeS5sZW5ndGggPSBoaXN0b3J5LmVudHJpZXMubGVuZ3RoO1xuICAgIHRyYW5zaXRpb25NYW5hZ2VyLm5vdGlmeUxpc3RlbmVycyhoaXN0b3J5LmxvY2F0aW9uLCBoaXN0b3J5LmFjdGlvbik7XG4gIH1cblxuICBmdW5jdGlvbiBjcmVhdGVLZXkoKSB7XG4gICAgcmV0dXJuIE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cigyLCBrZXlMZW5ndGgpO1xuICB9XG5cbiAgdmFyIGluZGV4ID0gY2xhbXAoaW5pdGlhbEluZGV4LCAwLCBpbml0aWFsRW50cmllcy5sZW5ndGggLSAxKTtcbiAgdmFyIGVudHJpZXMgPSBpbml0aWFsRW50cmllcy5tYXAoZnVuY3Rpb24gKGVudHJ5KSB7XG4gICAgcmV0dXJuIHR5cGVvZiBlbnRyeSA9PT0gJ3N0cmluZycgPyBjcmVhdGVMb2NhdGlvbihlbnRyeSwgdW5kZWZpbmVkLCBjcmVhdGVLZXkoKSkgOiBjcmVhdGVMb2NhdGlvbihlbnRyeSwgdW5kZWZpbmVkLCBlbnRyeS5rZXkgfHwgY3JlYXRlS2V5KCkpO1xuICB9KTsgLy8gUHVibGljIGludGVyZmFjZVxuXG4gIHZhciBjcmVhdGVIcmVmID0gY3JlYXRlUGF0aDtcblxuICBmdW5jdGlvbiBwdXNoKHBhdGgsIHN0YXRlKSB7XG4gICAgcHJvY2Vzcy5lbnYuTk9ERV9FTlYgIT09IFwicHJvZHVjdGlvblwiID8gd2FybmluZyghKHR5cGVvZiBwYXRoID09PSAnb2JqZWN0JyAmJiBwYXRoLnN0YXRlICE9PSB1bmRlZmluZWQgJiYgc3RhdGUgIT09IHVuZGVmaW5lZCksICdZb3Ugc2hvdWxkIGF2b2lkIHByb3ZpZGluZyBhIDJuZCBzdGF0ZSBhcmd1bWVudCB0byBwdXNoIHdoZW4gdGhlIDFzdCAnICsgJ2FyZ3VtZW50IGlzIGEgbG9jYXRpb24tbGlrZSBvYmplY3QgdGhhdCBhbHJlYWR5IGhhcyBzdGF0ZTsgaXQgaXMgaWdub3JlZCcpIDogdm9pZCAwO1xuICAgIHZhciBhY3Rpb24gPSAnUFVTSCc7XG4gICAgdmFyIGxvY2F0aW9uID0gY3JlYXRlTG9jYXRpb24ocGF0aCwgc3RhdGUsIGNyZWF0ZUtleSgpLCBoaXN0b3J5LmxvY2F0aW9uKTtcbiAgICB0cmFuc2l0aW9uTWFuYWdlci5jb25maXJtVHJhbnNpdGlvblRvKGxvY2F0aW9uLCBhY3Rpb24sIGdldFVzZXJDb25maXJtYXRpb24sIGZ1bmN0aW9uIChvaykge1xuICAgICAgaWYgKCFvaykgcmV0dXJuO1xuICAgICAgdmFyIHByZXZJbmRleCA9IGhpc3RvcnkuaW5kZXg7XG4gICAgICB2YXIgbmV4dEluZGV4ID0gcHJldkluZGV4ICsgMTtcbiAgICAgIHZhciBuZXh0RW50cmllcyA9IGhpc3RvcnkuZW50cmllcy5zbGljZSgwKTtcblxuICAgICAgaWYgKG5leHRFbnRyaWVzLmxlbmd0aCA+IG5leHRJbmRleCkge1xuICAgICAgICBuZXh0RW50cmllcy5zcGxpY2UobmV4dEluZGV4LCBuZXh0RW50cmllcy5sZW5ndGggLSBuZXh0SW5kZXgsIGxvY2F0aW9uKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIG5leHRFbnRyaWVzLnB1c2gobG9jYXRpb24pO1xuICAgICAgfVxuXG4gICAgICBzZXRTdGF0ZSh7XG4gICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICBsb2NhdGlvbjogbG9jYXRpb24sXG4gICAgICAgIGluZGV4OiBuZXh0SW5kZXgsXG4gICAgICAgIGVudHJpZXM6IG5leHRFbnRyaWVzXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfVxuXG4gIGZ1bmN0aW9uIHJlcGxhY2UocGF0aCwgc3RhdGUpIHtcbiAgICBwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gXCJwcm9kdWN0aW9uXCIgPyB3YXJuaW5nKCEodHlwZW9mIHBhdGggPT09ICdvYmplY3QnICYmIHBhdGguc3RhdGUgIT09IHVuZGVmaW5lZCAmJiBzdGF0ZSAhPT0gdW5kZWZpbmVkKSwgJ1lvdSBzaG91bGQgYXZvaWQgcHJvdmlkaW5nIGEgMm5kIHN0YXRlIGFyZ3VtZW50IHRvIHJlcGxhY2Ugd2hlbiB0aGUgMXN0ICcgKyAnYXJndW1lbnQgaXMgYSBsb2NhdGlvbi1saWtlIG9iamVjdCB0aGF0IGFscmVhZHkgaGFzIHN0YXRlOyBpdCBpcyBpZ25vcmVkJykgOiB2b2lkIDA7XG4gICAgdmFyIGFjdGlvbiA9ICdSRVBMQUNFJztcbiAgICB2YXIgbG9jYXRpb24gPSBjcmVhdGVMb2NhdGlvbihwYXRoLCBzdGF0ZSwgY3JlYXRlS2V5KCksIGhpc3RvcnkubG9jYXRpb24pO1xuICAgIHRyYW5zaXRpb25NYW5hZ2VyLmNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGFjdGlvbiwgZ2V0VXNlckNvbmZpcm1hdGlvbiwgZnVuY3Rpb24gKG9rKSB7XG4gICAgICBpZiAoIW9rKSByZXR1cm47XG4gICAgICBoaXN0b3J5LmVudHJpZXNbaGlzdG9yeS5pbmRleF0gPSBsb2NhdGlvbjtcbiAgICAgIHNldFN0YXRlKHtcbiAgICAgICAgYWN0aW9uOiBhY3Rpb24sXG4gICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvblxuICAgICAgfSk7XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBnbyhuKSB7XG4gICAgdmFyIG5leHRJbmRleCA9IGNsYW1wKGhpc3RvcnkuaW5kZXggKyBuLCAwLCBoaXN0b3J5LmVudHJpZXMubGVuZ3RoIC0gMSk7XG4gICAgdmFyIGFjdGlvbiA9ICdQT1AnO1xuICAgIHZhciBsb2NhdGlvbiA9IGhpc3RvcnkuZW50cmllc1tuZXh0SW5kZXhdO1xuICAgIHRyYW5zaXRpb25NYW5hZ2VyLmNvbmZpcm1UcmFuc2l0aW9uVG8obG9jYXRpb24sIGFjdGlvbiwgZ2V0VXNlckNvbmZpcm1hdGlvbiwgZnVuY3Rpb24gKG9rKSB7XG4gICAgICBpZiAob2spIHtcbiAgICAgICAgc2V0U3RhdGUoe1xuICAgICAgICAgIGFjdGlvbjogYWN0aW9uLFxuICAgICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgICAgICBpbmRleDogbmV4dEluZGV4XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgLy8gTWltaWMgdGhlIGJlaGF2aW9yIG9mIERPTSBoaXN0b3JpZXMgYnlcbiAgICAgICAgLy8gY2F1c2luZyBhIHJlbmRlciBhZnRlciBhIGNhbmNlbGxlZCBQT1AuXG4gICAgICAgIHNldFN0YXRlKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBmdW5jdGlvbiBnb0JhY2soKSB7XG4gICAgZ28oLTEpO1xuICB9XG5cbiAgZnVuY3Rpb24gZ29Gb3J3YXJkKCkge1xuICAgIGdvKDEpO1xuICB9XG5cbiAgZnVuY3Rpb24gY2FuR28obikge1xuICAgIHZhciBuZXh0SW5kZXggPSBoaXN0b3J5LmluZGV4ICsgbjtcbiAgICByZXR1cm4gbmV4dEluZGV4ID49IDAgJiYgbmV4dEluZGV4IDwgaGlzdG9yeS5lbnRyaWVzLmxlbmd0aDtcbiAgfVxuXG4gIGZ1bmN0aW9uIGJsb2NrKHByb21wdCkge1xuICAgIGlmIChwcm9tcHQgPT09IHZvaWQgMCkge1xuICAgICAgcHJvbXB0ID0gZmFsc2U7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRyYW5zaXRpb25NYW5hZ2VyLnNldFByb21wdChwcm9tcHQpO1xuICB9XG5cbiAgZnVuY3Rpb24gbGlzdGVuKGxpc3RlbmVyKSB7XG4gICAgcmV0dXJuIHRyYW5zaXRpb25NYW5hZ2VyLmFwcGVuZExpc3RlbmVyKGxpc3RlbmVyKTtcbiAgfVxuXG4gIHZhciBoaXN0b3J5ID0ge1xuICAgIGxlbmd0aDogZW50cmllcy5sZW5ndGgsXG4gICAgYWN0aW9uOiAnUE9QJyxcbiAgICBsb2NhdGlvbjogZW50cmllc1tpbmRleF0sXG4gICAgaW5kZXg6IGluZGV4LFxuICAgIGVudHJpZXM6IGVudHJpZXMsXG4gICAgY3JlYXRlSHJlZjogY3JlYXRlSHJlZixcbiAgICBwdXNoOiBwdXNoLFxuICAgIHJlcGxhY2U6IHJlcGxhY2UsXG4gICAgZ286IGdvLFxuICAgIGdvQmFjazogZ29CYWNrLFxuICAgIGdvRm9yd2FyZDogZ29Gb3J3YXJkLFxuICAgIGNhbkdvOiBjYW5HbyxcbiAgICBibG9jazogYmxvY2ssXG4gICAgbGlzdGVuOiBsaXN0ZW5cbiAgfTtcbiAgcmV0dXJuIGhpc3Rvcnk7XG59XG5cbmV4cG9ydCB7IGNyZWF0ZUJyb3dzZXJIaXN0b3J5LCBjcmVhdGVIYXNoSGlzdG9yeSwgY3JlYXRlTWVtb3J5SGlzdG9yeSwgY3JlYXRlTG9jYXRpb24sIGxvY2F0aW9uc0FyZUVxdWFsLCBwYXJzZVBhdGgsIGNyZWF0ZVBhdGggfTtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3JvdXRlciA9IF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKHJlcXVpcmUoXCIuL3JvdXRlclwiKSk7XG5cbnZhciBfTG9jYXRpb24gPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCIuL0xvY2F0aW9uXCIpKTtcblxudmFyIF9saXN0ZW5lcnMgPSByZXF1aXJlKFwiLi9saXN0ZW5lcnNcIik7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbmZ1bmN0aW9uIF9nZXRSZXF1aXJlV2lsZGNhcmRDYWNoZSgpIHsgaWYgKHR5cGVvZiBXZWFrTWFwICE9PSBcImZ1bmN0aW9uXCIpIHJldHVybiBudWxsOyB2YXIgY2FjaGUgPSBuZXcgV2Vha01hcCgpOyBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUgPSBmdW5jdGlvbiBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKSB7IHJldHVybiBjYWNoZTsgfTsgcmV0dXJuIGNhY2hlOyB9XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkKG9iaikgeyBpZiAob2JqICYmIG9iai5fX2VzTW9kdWxlKSB7IHJldHVybiBvYmo7IH0gaWYgKG9iaiA9PT0gbnVsbCB8fCB0eXBlb2Ygb2JqICE9PSBcIm9iamVjdFwiICYmIHR5cGVvZiBvYmogIT09IFwiZnVuY3Rpb25cIikgeyByZXR1cm4geyBkZWZhdWx0OiBvYmogfTsgfSB2YXIgY2FjaGUgPSBfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUoKTsgaWYgKGNhY2hlICYmIGNhY2hlLmhhcyhvYmopKSB7IHJldHVybiBjYWNoZS5nZXQob2JqKTsgfSB2YXIgbmV3T2JqID0ge307IHZhciBoYXNQcm9wZXJ0eURlc2NyaXB0b3IgPSBPYmplY3QuZGVmaW5lUHJvcGVydHkgJiYgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcjsgZm9yICh2YXIga2V5IGluIG9iaikgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iaiwga2V5KSkgeyB2YXIgZGVzYyA9IGhhc1Byb3BlcnR5RGVzY3JpcHRvciA/IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Iob2JqLCBrZXkpIDogbnVsbDsgaWYgKGRlc2MgJiYgKGRlc2MuZ2V0IHx8IGRlc2Muc2V0KSkgeyBPYmplY3QuZGVmaW5lUHJvcGVydHkobmV3T2JqLCBrZXksIGRlc2MpOyB9IGVsc2UgeyBuZXdPYmpba2V5XSA9IG9ialtrZXldOyB9IH0gfSBuZXdPYmouZGVmYXVsdCA9IG9iajsgaWYgKGNhY2hlKSB7IGNhY2hlLnNldChvYmosIG5ld09iaik7IH0gcmV0dXJuIG5ld09iajsgfVxuXG5mdW5jdGlvbiBfZGVmaW5lUHJvcGVydGllcyh0YXJnZXQsIHByb3BzKSB7IGZvciAodmFyIGkgPSAwOyBpIDwgcHJvcHMubGVuZ3RoOyBpKyspIHsgdmFyIGRlc2NyaXB0b3IgPSBwcm9wc1tpXTsgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gZGVzY3JpcHRvci5lbnVtZXJhYmxlIHx8IGZhbHNlOyBkZXNjcmlwdG9yLmNvbmZpZ3VyYWJsZSA9IHRydWU7IGlmIChcInZhbHVlXCIgaW4gZGVzY3JpcHRvcikgZGVzY3JpcHRvci53cml0YWJsZSA9IHRydWU7IE9iamVjdC5kZWZpbmVQcm9wZXJ0eSh0YXJnZXQsIGRlc2NyaXB0b3Iua2V5LCBkZXNjcmlwdG9yKTsgfSB9XG5cbmZ1bmN0aW9uIF9jcmVhdGVDbGFzcyhDb25zdHJ1Y3RvciwgcHJvdG9Qcm9wcywgc3RhdGljUHJvcHMpIHsgaWYgKHByb3RvUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLnByb3RvdHlwZSwgcHJvdG9Qcm9wcyk7IGlmIChzdGF0aWNQcm9wcykgX2RlZmluZVByb3BlcnRpZXMoQ29uc3RydWN0b3IsIHN0YXRpY1Byb3BzKTsgcmV0dXJuIENvbnN0cnVjdG9yOyB9XG5cbnZhciBNaW5pQXBwSGlzdG9yeSA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIE1pbmlBcHBIaXN0b3J5KHJvdXRlcykge1xuICAgIHRoaXMubG9jYXRpb24gPSBuZXcgX0xvY2F0aW9uLmRlZmF1bHQoKTtcbiAgICAoMCwgX3JvdXRlci5fX3VwZGF0ZVJvdXRlck1hcCkocm91dGVzKTsgLy8gQXBwbHkgYWN0aW9ucyBmb3IgaGlzdG9yeS5cblxuICAgIE9iamVjdC5hc3NpZ24odGhpcywgKDAsIF9yb3V0ZXIuZGVmYXVsdCkodGhpcy5sb2NhdGlvbikpO1xuICB9XG5cbiAgdmFyIF9wcm90byA9IE1pbmlBcHBIaXN0b3J5LnByb3RvdHlwZTtcblxuICBfcHJvdG8ubGlzdGVuID0gZnVuY3Rpb24gbGlzdGVuKGNhbGxiYWNrKSB7XG4gICAgdmFyIGxpc3RlbmVycyA9ICgwLCBfbGlzdGVuZXJzLmFkZExpc3RlbmVyKSh0aGlzLmxvY2F0aW9uLl9wYWdlSWQsIGNhbGxiYWNrKTtcbiAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgdmFyIGluZGV4ID0gLTE7XG5cbiAgICAgIGZvciAodmFyIGlkeCBpbiBsaXN0ZW5lcnMpIHtcbiAgICAgICAgaWYgKGxpc3RlbmVyc1tpZHhdID09PSBjYWxsYmFjaykge1xuICAgICAgICAgIGluZGV4ID0gaWR4O1xuICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChpbmRleCA+IC0xKSBsaXN0ZW5lcnMuc3BsaWNlKGluZGV4LCAxKTtcbiAgICB9O1xuICB9O1xuXG4gIF9jcmVhdGVDbGFzcyhNaW5pQXBwSGlzdG9yeSwgW3tcbiAgICBrZXk6IFwibGVuZ3RoXCIsXG4gICAgZ2V0OiBmdW5jdGlvbiBnZXQoKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tdW5kZWZcbiAgICAgIHJldHVybiBnZXRDdXJyZW50UGFnZXMoKS5sZW5ndGg7XG4gICAgfVxuICB9XSk7XG5cbiAgcmV0dXJuIE1pbmlBcHBIaXN0b3J5O1xufSgpO1xuXG5leHBvcnRzLmRlZmF1bHQgPSBNaW5pQXBwSGlzdG9yeTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcblxuZnVuY3Rpb24gX2RlZmluZVByb3BlcnRpZXModGFyZ2V0LCBwcm9wcykgeyBmb3IgKHZhciBpID0gMDsgaSA8IHByb3BzLmxlbmd0aDsgaSsrKSB7IHZhciBkZXNjcmlwdG9yID0gcHJvcHNbaV07IGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IGRlc2NyaXB0b3IuZW51bWVyYWJsZSB8fCBmYWxzZTsgZGVzY3JpcHRvci5jb25maWd1cmFibGUgPSB0cnVlOyBpZiAoXCJ2YWx1ZVwiIGluIGRlc2NyaXB0b3IpIGRlc2NyaXB0b3Iud3JpdGFibGUgPSB0cnVlOyBPYmplY3QuZGVmaW5lUHJvcGVydHkodGFyZ2V0LCBkZXNjcmlwdG9yLmtleSwgZGVzY3JpcHRvcik7IH0gfVxuXG5mdW5jdGlvbiBfY3JlYXRlQ2xhc3MoQ29uc3RydWN0b3IsIHByb3RvUHJvcHMsIHN0YXRpY1Byb3BzKSB7IGlmIChwcm90b1Byb3BzKSBfZGVmaW5lUHJvcGVydGllcyhDb25zdHJ1Y3Rvci5wcm90b3R5cGUsIHByb3RvUHJvcHMpOyBpZiAoc3RhdGljUHJvcHMpIF9kZWZpbmVQcm9wZXJ0aWVzKENvbnN0cnVjdG9yLCBzdGF0aWNQcm9wcyk7IHJldHVybiBDb25zdHJ1Y3RvcjsgfVxuXG52YXIgTG9jYXRpb24gPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICBmdW5jdGlvbiBMb2NhdGlvbigpIHtcbiAgICB0aGlzLl9jdXJyZW50UGFnZU9wdGlvbnMgPSB7fTtcbiAgICB0aGlzLmhhc2ggPSAnJztcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBMb2NhdGlvbi5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLl9fdXBkYXRlUGFnZU9wdGlvbiA9IGZ1bmN0aW9uIF9fdXBkYXRlUGFnZU9wdGlvbihwYWdlT3B0aW9ucykge1xuICAgIHRoaXMuX2N1cnJlbnRQYWdlT3B0aW9ucyA9IHBhZ2VPcHRpb25zO1xuICB9O1xuXG4gIF9wcm90by5fX3VwZGF0ZVBhZ2VJZCA9IGZ1bmN0aW9uIF9fdXBkYXRlUGFnZUlkKHBhZ2VJZCkge1xuICAgIHRoaXMuX3BhZ2VJZCA9IHBhZ2VJZDtcbiAgfTtcblxuICBfY3JlYXRlQ2xhc3MoTG9jYXRpb24sIFt7XG4gICAga2V5OiBcImhyZWZcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIHJldHVybiB0aGlzLnBhdGhuYW1lICsgdGhpcy5zZWFyY2g7XG4gICAgfVxuICB9LCB7XG4gICAga2V5OiBcInNlYXJjaFwiLFxuICAgIGdldDogZnVuY3Rpb24gZ2V0KCkge1xuICAgICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgICAgdmFyIHNlYXJjaCA9ICcnO1xuICAgICAgT2JqZWN0LmtleXModGhpcy5fY3VycmVudFBhZ2VPcHRpb25zKS5mb3JFYWNoKGZ1bmN0aW9uIChrZXksIGluZGV4KSB7XG4gICAgICAgIHZhciBxdWVyeSA9IGtleSArIFwiPVwiICsgX3RoaXMuX2N1cnJlbnRQYWdlT3B0aW9uc1trZXldO1xuICAgICAgICBzZWFyY2ggKz0gaW5kZXggPT09IDAgPyAnPycgOiAnJic7XG4gICAgICAgIHNlYXJjaCArPSBxdWVyeTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHNlYXJjaDtcbiAgICB9XG4gIH0sIHtcbiAgICBrZXk6IFwicGF0aG5hbWVcIixcbiAgICBnZXQ6IGZ1bmN0aW9uIGdldCgpIHtcbiAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby11bmRlZlxuICAgICAgdmFyIHBhZ2VzID0gZ2V0Q3VycmVudFBhZ2VzKCk7XG4gICAgICBpZiAocGFnZXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gICAgICB2YXIgY3VycmVudFBhZ2UgPSBwYWdlc1twYWdlcy5sZW5ndGggLSAxXTtcbiAgICAgIHJldHVybiBhZGRMZWFkaW5nU2xhc2goY3VycmVudFBhZ2Uucm91dGUpO1xuICAgIH1cbiAgfV0pO1xuXG4gIHJldHVybiBMb2NhdGlvbjtcbn0oKTtcblxuZXhwb3J0cy5kZWZhdWx0ID0gTG9jYXRpb247XG5cbmZ1bmN0aW9uIGFkZExlYWRpbmdTbGFzaChzdHIpIHtcbiAgcmV0dXJuIHN0clswXSA9PT0gJy8nID8gc3RyIDogJy8nICsgc3RyO1xufSIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5SRVBMQUNFID0gZXhwb3J0cy5QT1AgPSBleHBvcnRzLlBVU0ggPSB2b2lkIDA7XG52YXIgUFVTSCA9ICdQVVNIJztcbmV4cG9ydHMuUFVTSCA9IFBVU0g7XG52YXIgUE9QID0gJ1BPUCc7XG5leHBvcnRzLlBPUCA9IFBPUDtcbnZhciBSRVBMQUNFID0gJ1JFUExBQ0UnO1xuZXhwb3J0cy5SRVBMQUNFID0gUkVQTEFDRTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuY3JlYXRlTWluaUFwcEhpc3RvcnkgPSBjcmVhdGVNaW5pQXBwSGlzdG9yeTtcblxudmFyIF9IaXN0b3J5ID0gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChyZXF1aXJlKFwiLi9IaXN0b3J5XCIpKTtcblxuZnVuY3Rpb24gX2ludGVyb3BSZXF1aXJlRGVmYXVsdChvYmopIHsgcmV0dXJuIG9iaiAmJiBvYmouX19lc01vZHVsZSA/IG9iaiA6IHsgZGVmYXVsdDogb2JqIH07IH1cblxudmFyIGhpc3Rvcnk7XG5cbmZ1bmN0aW9uIGNyZWF0ZU1pbmlBcHBIaXN0b3J5KHJvdXRlcykge1xuICBpZiAoaGlzdG9yeSkgcmV0dXJuIGhpc3Rvcnk7XG4gIHJldHVybiBoaXN0b3J5ID0gbmV3IF9IaXN0b3J5LmRlZmF1bHQocm91dGVzKTtcbn0iLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuYWRkTGlzdGVuZXIgPSBhZGRMaXN0ZW5lcjtcbmV4cG9ydHMuZmlyZUxpc3RlbmVycyA9IGZpcmVMaXN0ZW5lcnM7XG4vLyBQYWdlIGlkIC0+IGFjdGlvbiBjYWxsYmFja3NcbnZhciBsaXN0ZW5lcnMgPSB7fTtcbi8qKlxuICogQWRkIGhpc3RvcnkgbGlzdGVuZXJcbiAqIEBwYXJhbSB7c3RyaW5nfSBwYWdlSWQgcGFnZSB1bmlxdWUgaWRcbiAqIEBwYXJhbSB7ZnVuY3Rpb259IGNhbGxiYWNrIGhpc3Rvcnkgb3BlcmF0ZSBhY3Rpb24gY2FsbGJhY2tcbiAqIEByZXR1cm4ge0FycmF5fSB0YXJnZXQgcGFnZSBsaXN0ZW5lciBsaXN0XG4gKi9cblxuZnVuY3Rpb24gYWRkTGlzdGVuZXIocGFnZUlkLCBjYWxsYmFjaykge1xuICBpZiAoIWxpc3RlbmVyc1twYWdlSWRdKSBsaXN0ZW5lcnNbcGFnZUlkXSA9IFtdO1xuICBsaXN0ZW5lcnNbcGFnZUlkXS5wdXNoKGNhbGxiYWNrKTtcbiAgcmV0dXJuIGxpc3RlbmVyc1twYWdlSWRdO1xufVxuLyoqXG4gKiBGaXJlIGhpc3RvcnkgbGlzdGVuZXJzXG4gKiBAcGFyYW0ge29iamVjdH0gbG9jYXRpb24gcm91dGVyIGxvY2F0aW9uIG9iamVjdFxuICogQHBhcmFtIHtzdHJpbmd9IGFjdGlvbiBoaXN0b3J5IG9wZXJhdGUgYWN0aW9uXG4gKi9cblxuXG5mdW5jdGlvbiBmaXJlTGlzdGVuZXJzKGxvY2F0aW9uLCBhY3Rpb24pIHtcbiAgdmFyIHBhZ2VJZCA9IGxvY2F0aW9uLl9wYWdlSWQ7XG5cbiAgaWYgKGxpc3RlbmVyc1twYWdlSWRdKSB7XG4gICAgZm9yICh2YXIgaW5kZXggaW4gbGlzdGVuZXJzW3BhZ2VJZF0pIHtcbiAgICAgIGxpc3RlbmVyc1twYWdlSWRdW2luZGV4XSh7XG4gICAgICAgIGxvY2F0aW9uOiBsb2NhdGlvbixcbiAgICAgICAgYWN0aW9uOiBhY3Rpb25cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufSIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5fX3VwZGF0ZVJvdXRlck1hcCA9IF9fdXBkYXRlUm91dGVyTWFwO1xuZXhwb3J0cy5kZWZhdWx0ID0gZ2VuZXJhdGVBY3Rpb25zO1xuXG52YXIgX3VuaXZlcnNhbEVudiA9IHJlcXVpcmUoXCJ1bml2ZXJzYWwtZW52XCIpO1xuXG52YXIgX2xpc3RlbmVycyA9IHJlcXVpcmUoXCIuL2xpc3RlbmVyc1wiKTtcblxudmFyIF9jb25zdGFudHMgPSByZXF1aXJlKFwiLi9jb25zdGFudHNcIik7XG5cbnZhciBfX3JvdXRlck1hcCA9IHt9O1xudmFyIGFwaUNvcmU7XG5cbmlmIChfdW5pdmVyc2FsRW52LmlzTWluaUFwcCkge1xuICBhcGlDb3JlID0gbXk7XG59IGVsc2UgaWYgKF91bml2ZXJzYWxFbnYuaXNXZUNoYXRNaW5pUHJvZ3JhbSkge1xuICBhcGlDb3JlID0gd3g7XG59IGVsc2UgaWYgKF91bml2ZXJzYWxFbnYuaXNCeXRlRGFuY2VNaWNyb0FwcCkge1xuICBhcGlDb3JlID0gdHQ7XG59IGVsc2UgaWYgKF91bml2ZXJzYWxFbnYuaXNCYWlkdVNtYXJ0UHJvZ3JhbSkge1xuICBhcGlDb3JlID0gc3dhbjtcbn0gZWxzZSBpZiAoX3VuaXZlcnNhbEVudi5pc0t1YWlTaG91TWluaVByb2dyYW0pIHtcbiAgYXBpQ29yZSA9IGtzO1xufVxuXG5mdW5jdGlvbiByZWRpcmVjdFRvKGxvY2F0aW9uLCBvcHRpb25zKSB7XG4gIG9wdGlvbnMuc3VjY2VzcyA9IGZ1bmN0aW9uICgpIHtcbiAgICAoMCwgX2xpc3RlbmVycy5maXJlTGlzdGVuZXJzKShsb2NhdGlvbiwgX2NvbnN0YW50cy5SRVBMQUNFKTtcbiAgfTtcblxuICBhcGlDb3JlLnJlZGlyZWN0VG8ob3B0aW9ucyk7XG59XG5cbmZ1bmN0aW9uIG5hdmlnYXRlVG8obG9jYXRpb24sIG9wdGlvbnMpIHtcbiAgb3B0aW9ucy5zdWNjZXNzID0gZnVuY3Rpb24gKCkge1xuICAgICgwLCBfbGlzdGVuZXJzLmZpcmVMaXN0ZW5lcnMpKGxvY2F0aW9uLCBfY29uc3RhbnRzLlBVU0gpO1xuICB9O1xuXG4gIGFwaUNvcmUubmF2aWdhdGVUbyhvcHRpb25zKTtcbn1cblxuZnVuY3Rpb24gbmF2aWdhdGVCYWNrKGxvY2F0aW9uLCBvcHRpb25zKSB7XG4gIGFwaUNvcmUubmF2aWdhdGVCYWNrKG9wdGlvbnMpO1xuICAoMCwgX2xpc3RlbmVycy5maXJlTGlzdGVuZXJzKShsb2NhdGlvbiwgX2NvbnN0YW50cy5QT1ApO1xufVxuLyoqXG4gKiBOYXZpZ2F0ZSB0byBnaXZlbiBwYXRoLlxuICovXG5cblxuZnVuY3Rpb24gcHVzaChsb2NhdGlvbiwgcGF0aCwgcXVlcnkpIHtcbiAgcmV0dXJuIG5hdmlnYXRlVG8obG9jYXRpb24sIHtcbiAgICB1cmw6IGdlbmVyYXRlVXJsKHBhdGgsIHF1ZXJ5KVxuICB9KTtcbn1cbi8qKlxuICogTmF2aWdhdGUgcmVwbGFjZS5cbiAqL1xuXG5cbmZ1bmN0aW9uIHJlcGxhY2UobG9jYXRpb24sIHBhdGgsIHF1ZXJ5KSB7XG4gIHJldHVybiByZWRpcmVjdFRvKGxvY2F0aW9uLCB7XG4gICAgdXJsOiBnZW5lcmF0ZVVybChwYXRoLCBxdWVyeSlcbiAgfSk7XG59XG4vKipcbiAqIFVuc3VwcG9ydGVkIGluIG1pbmlhcHAuXG4gKi9cblxuXG5mdW5jdGlvbiBnbygpIHtcbiAgdGhyb3cgbmV3IEVycm9yKCdVbnN1cHBvcnRlZCBnbyBpbiBtaW5pYXBwLicpO1xufVxuLyoqXG4gKiBOYXZpZ2F0ZSBiYWNrLlxuICovXG5cblxuZnVuY3Rpb24gYmFjayhsb2NhdGlvbiwgbikge1xuICBpZiAobiA9PT0gdm9pZCAwKSB7XG4gICAgbiA9IDE7XG4gIH1cblxuICByZXR1cm4gbmF2aWdhdGVCYWNrKGxvY2F0aW9uLCB7XG4gICAgZGVsdGE6IG5cbiAgfSk7XG59XG4vKipcbiAqIE5hdmlnYXRlIGJhY2suXG4gKi9cblxuXG5mdW5jdGlvbiBnb0JhY2sobG9jYXRpb24sIG4pIHtcbiAgaWYgKG4gPT09IHZvaWQgMCkge1xuICAgIG4gPSAxO1xuICB9XG5cbiAgcmV0dXJuIG5hdmlnYXRlQmFjayhsb2NhdGlvbiwge1xuICAgIGRlbHRhOiBuXG4gIH0pO1xufVxuLyoqXG4gKiBVbnN1cHBvcnRlZCBpbiBtaW5pYXBwLlxuICovXG5cblxuZnVuY3Rpb24gZ29Gb3J3YXJkKCkge1xuICB0aHJvdyBuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGdvRm9yd2FyZCBpbiBtaW5pYXBwLicpO1xufVxuLyoqXG4gKiBVbnN1cHBvcnRlZCBpbiBtaW5pYXBwLlxuICogQHJldHVybiB7Ym9vbGVhbn0gQWx3YXlzIHRydWUuXG4gKi9cblxuXG5mdW5jdGlvbiBjYW5HbygpIHtcbiAgcmV0dXJuIHRydWU7XG59XG4vKipcbiAqIEdlbmVyYXRlIE1pbmlBcHAgdXJsXG4gKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICogQHBhcmFtIHtvYmplY3R9IHF1ZXJ5XG4gKi9cblxuXG5mdW5jdGlvbiBnZW5lcmF0ZVVybChwYXRoLCBxdWVyeSkge1xuICB2YXIgX3BhdGgkc3BsaXQgPSBwYXRoLnNwbGl0KCc/JyksXG4gICAgICBwYXRobmFtZSA9IF9wYXRoJHNwbGl0WzBdLFxuICAgICAgc2VhcmNoID0gX3BhdGgkc3BsaXRbMV07XG5cbiAgdmFyIG1pbmlhcHBQYXRoID0gX19yb3V0ZXJNYXBbcGF0aG5hbWVdO1xuXG4gIGlmICghbWluaWFwcFBhdGgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJQYXRoIFwiICsgcGF0aCArIFwiIGlzIG5vdCBmb3VuZFwiKTtcbiAgfVxuXG4gIGlmIChxdWVyeSkge1xuICAgIGlmIChzZWFyY2gpIHtcbiAgICAgIHNlYXJjaCArPSBcIiZcIiArIHN0cmluZ2lmeVF1ZXJ5KHF1ZXJ5KTtcbiAgICB9IGVsc2Uge1xuICAgICAgc2VhcmNoID0gc3RyaW5naWZ5UXVlcnkocXVlcnkpO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBzZWFyY2ggPyBcIi9cIiArIG1pbmlhcHBQYXRoICsgXCI/XCIgKyBzZWFyY2ggOiBcIi9cIiArIG1pbmlhcHBQYXRoO1xufVxuLyoqXG4gKiBTdHJpbmdpZnkgcXVlcnlcbiAqIEBwYXJhbSB7b2JqZWN0fSBxdWVyeSAtIHJvdXRlIHF1ZXJ5XG4gKiBAcmV0dXJuIHtzdHJpbmd9XG4gKi9cblxuXG5mdW5jdGlvbiBzdHJpbmdpZnlRdWVyeShxdWVyeSkge1xuICByZXR1cm4gT2JqZWN0LmtleXMocXVlcnkpLnJlZHVjZShmdW5jdGlvbiAodG90YWwsIG5leHRLZXksIGluZGV4KSB7XG4gICAgcmV0dXJuIFwiXCIgKyB0b3RhbCArIChpbmRleCA/ICcmJyA6ICcnKSArIG5leHRLZXkgKyBcIj1cIiArIHF1ZXJ5W25leHRLZXldO1xuICB9LCAnJyk7XG59XG5cbmZ1bmN0aW9uIF9fdXBkYXRlUm91dGVyTWFwKHJvdXRlcykge1xuICByb3V0ZXMubWFwKGZ1bmN0aW9uIChyb3V0ZSkge1xuICAgIF9fcm91dGVyTWFwW3JvdXRlLnBhdGhdID0gcm91dGUuc291cmNlO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gZ2VuZXJhdGVBY3Rpb25zKGxvY2F0aW9uKSB7XG4gIHZhciBhY3Rpb25zID0ge1xuICAgIHB1c2g6IHB1c2gsXG4gICAgcmVwbGFjZTogcmVwbGFjZSxcbiAgICBiYWNrOiBiYWNrLFxuICAgIGdvOiBnbyxcbiAgICBjYW5HbzogY2FuR28sXG4gICAgZ29Gb3J3YXJkOiBnb0ZvcndhcmQsXG4gICAgZ29CYWNrOiBnb0JhY2tcbiAgfTtcbiAgcmV0dXJuIE9iamVjdC5rZXlzKGFjdGlvbnMpLnJlZHVjZShmdW5jdGlvbiAocmVzdWx0LCBhY3Rpb25OYW1lKSB7XG4gICAgcmVzdWx0W2FjdGlvbk5hbWVdID0gYWN0aW9uc1thY3Rpb25OYW1lXS5iaW5kKG51bGwsIGxvY2F0aW9uKTtcbiAgICByZXR1cm4gcmVzdWx0O1xuICB9LCB7fSk7XG59IiwiXCJ1c2Ugc3RyaWN0XCI7XG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XG52YXIgbWluaWFwcFJlbmRlcmVyXzEgPSByZXF1aXJlKFwiLi9taW5pYXBwUmVuZGVyZXJcIik7XG5leHBvcnRzLmRlZmF1bHQgPSBtaW5pYXBwUmVuZGVyZXJfMS5kZWZhdWx0O1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19leHRlbmRzID0gKHRoaXMgJiYgdGhpcy5fX2V4dGVuZHMpIHx8IChmdW5jdGlvbiAoKSB7XG4gICAgdmFyIGV4dGVuZFN0YXRpY3MgPSBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBleHRlbmRTdGF0aWNzID0gT2JqZWN0LnNldFByb3RvdHlwZU9mIHx8XG4gICAgICAgICAgICAoeyBfX3Byb3RvX186IFtdIH0gaW5zdGFuY2VvZiBBcnJheSAmJiBmdW5jdGlvbiAoZCwgYikgeyBkLl9fcHJvdG9fXyA9IGI7IH0pIHx8XG4gICAgICAgICAgICBmdW5jdGlvbiAoZCwgYikgeyBmb3IgKHZhciBwIGluIGIpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoYiwgcCkpIGRbcF0gPSBiW3BdOyB9O1xuICAgICAgICByZXR1cm4gZXh0ZW5kU3RhdGljcyhkLCBiKTtcbiAgICB9O1xuICAgIHJldHVybiBmdW5jdGlvbiAoZCwgYikge1xuICAgICAgICBpZiAodHlwZW9mIGIgIT09IFwiZnVuY3Rpb25cIiAmJiBiICE9PSBudWxsKVxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNsYXNzIGV4dGVuZHMgdmFsdWUgXCIgKyBTdHJpbmcoYikgKyBcIiBpcyBub3QgYSBjb25zdHJ1Y3RvciBvciBudWxsXCIpO1xuICAgICAgICBleHRlbmRTdGF0aWNzKGQsIGIpO1xuICAgICAgICBmdW5jdGlvbiBfXygpIHsgdGhpcy5jb25zdHJ1Y3RvciA9IGQ7IH1cbiAgICAgICAgZC5wcm90b3R5cGUgPSBiID09PSBudWxsID8gT2JqZWN0LmNyZWF0ZShiKSA6IChfXy5wcm90b3R5cGUgPSBiLnByb3RvdHlwZSwgbmV3IF9fKCkpO1xuICAgIH07XG59KSgpO1xudmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX3Jlc3QgPSAodGhpcyAmJiB0aGlzLl9fcmVzdCkgfHwgZnVuY3Rpb24gKHMsIGUpIHtcbiAgICB2YXIgdCA9IHt9O1xuICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSAmJiBlLmluZGV4T2YocCkgPCAwKVxuICAgICAgICB0W3BdID0gc1twXTtcbiAgICBpZiAocyAhPSBudWxsICYmIHR5cGVvZiBPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzID09PSBcImZ1bmN0aW9uXCIpXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBwID0gT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyhzKTsgaSA8IHAubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGlmIChlLmluZGV4T2YocFtpXSkgPCAwICYmIE9iamVjdC5wcm90b3R5cGUucHJvcGVydHlJc0VudW1lcmFibGUuY2FsbChzLCBwW2ldKSlcbiAgICAgICAgICAgICAgICB0W3BbaV1dID0gc1twW2ldXTtcbiAgICAgICAgfVxuICAgIHJldHVybiB0O1xufTtcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcbmZ1bmN0aW9uIG1pbmlhcHBSZW5kZXJlcihfYSwgX2IpIHtcbiAgICB2YXIgX2M7XG4gICAgdmFyIF9kID0gX2EuYXBwQ29uZmlnLCBhcHBDb25maWcgPSBfZCA9PT0gdm9pZCAwID8ge30gOiBfZCwgY3JlYXRlQmFzZUFwcCA9IF9hLmNyZWF0ZUJhc2VBcHAsIGNyZWF0ZUhpc3RvcnkgPSBfYS5jcmVhdGVIaXN0b3J5LCBzdGF0aWNDb25maWcgPSBfYS5zdGF0aWNDb25maWcsIHBhZ2VQcm9wcyA9IF9hLnBhZ2VQcm9wcywgZW1pdExpZmVDeWNsZXMgPSBfYS5lbWl0TGlmZUN5Y2xlcywgRXJyb3JCb3VuZGFyeSA9IF9hLkVycm9yQm91bmRhcnk7XG4gICAgdmFyIG1vdW50ID0gX2IubW91bnQsIHVubW91bnQgPSBfYi51bm1vdW50LCBjcmVhdGVFbGVtZW50ID0gX2IuY3JlYXRlRWxlbWVudCwgQ29tcG9uZW50ID0gX2IuQ29tcG9uZW50O1xuICAgIHZhciBoaXN0b3J5ID0gY3JlYXRlSGlzdG9yeSh7IHJvdXRlczogc3RhdGljQ29uZmlnLnJvdXRlcyB9KTtcbiAgICB2YXIgcnVudGltZSA9IGNyZWF0ZUJhc2VBcHAoYXBwQ29uZmlnKS5ydW50aW1lO1xuICAgIHZhciBBcHBQcm92aWRlciA9IChfYyA9IHJ1bnRpbWUgPT09IG51bGwgfHwgcnVudGltZSA9PT0gdm9pZCAwID8gdm9pZCAwIDogcnVudGltZS5jb21wb3NlQXBwUHJvdmlkZXIpID09PSBudWxsIHx8IF9jID09PSB2b2lkIDAgPyB2b2lkIDAgOiBfYy5jYWxsKHJ1bnRpbWUpO1xuICAgIHZhciBfZSA9IGFwcENvbmZpZy5hcHAsIGFwcCA9IF9lID09PSB2b2lkIDAgPyB7fSA6IF9lO1xuICAgIHZhciBfZiA9IGFwcC5yb290SWQsIHJvb3RJZCA9IF9mID09PSB2b2lkIDAgPyAncm9vdCcgOiBfZiwgRXJyb3JCb3VuZGFyeUZhbGxiYWNrID0gYXBwLkVycm9yQm91bmRhcnlGYWxsYmFjaywgb25FcnJvckJvdW5kYXJ5SGFuZGVyID0gYXBwLm9uRXJyb3JCb3VuZGFyeUhhbmRlciwgZXJyb3JCb3VuZGFyeSA9IGFwcC5lcnJvckJvdW5kYXJ5O1xuICAgIGVtaXRMaWZlQ3ljbGVzKCk7XG4gICAgdmFyIEFwcCA9IC8qKiBAY2xhc3MgKi8gKGZ1bmN0aW9uIChfc3VwZXIpIHtcbiAgICAgICAgX19leHRlbmRzKEFwcCwgX3N1cGVyKTtcbiAgICAgICAgZnVuY3Rpb24gQXBwKCkge1xuICAgICAgICAgICAgcmV0dXJuIF9zdXBlciAhPT0gbnVsbCAmJiBfc3VwZXIuYXBwbHkodGhpcywgYXJndW1lbnRzKSB8fCB0aGlzO1xuICAgICAgICB9XG4gICAgICAgIEFwcC5wcm90b3R5cGUucmVuZGVyID0gZnVuY3Rpb24gKCkge1xuICAgICAgICAgICAgdmFyIF9hID0gdGhpcy5wcm9wcywgUGFnZSA9IF9hLlBhZ2UsIG90aGVyUHJvcHMgPSBfX3Jlc3QoX2EsIFtcIlBhZ2VcIl0pO1xuICAgICAgICAgICAgdmFyIFBhZ2VDb21wb25lbnQgPSBjcmVhdGVFbGVtZW50KFBhZ2UsIF9fYXNzaWduKHt9LCBvdGhlclByb3BzKSk7XG4gICAgICAgICAgICB2YXIgYXBwSW5zdGFuY2UgPSBQYWdlQ29tcG9uZW50O1xuICAgICAgICAgICAgaWYgKEFwcFByb3ZpZGVyKSB7XG4gICAgICAgICAgICAgICAgYXBwSW5zdGFuY2UgPSBjcmVhdGVFbGVtZW50KEFwcFByb3ZpZGVyLCBudWxsLCBhcHBJbnN0YW5jZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoZXJyb3JCb3VuZGFyeSkge1xuICAgICAgICAgICAgICAgIGFwcEluc3RhbmNlID0gY3JlYXRlRWxlbWVudChFcnJvckJvdW5kYXJ5LCB7XG4gICAgICAgICAgICAgICAgICAgIEZhbGxiYWNrOiBFcnJvckJvdW5kYXJ5RmFsbGJhY2ssXG4gICAgICAgICAgICAgICAgICAgIG9uRXJyb3I6IG9uRXJyb3JCb3VuZGFyeUhhbmRlclxuICAgICAgICAgICAgICAgIH0sIGFwcEluc3RhbmNlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiBhcHBJbnN0YW5jZTtcbiAgICAgICAgfTtcbiAgICAgICAgcmV0dXJuIEFwcDtcbiAgICB9KENvbXBvbmVudCkpO1xuICAgIHZhciBwYWdlc1JlbmRlckluZm8gPSBzdGF0aWNDb25maWcucm91dGVzLm1hcChmdW5jdGlvbiAoX2EpIHtcbiAgICAgICAgdmFyIHNvdXJjZSA9IF9hLnNvdXJjZSwgY29tcG9uZW50ID0gX2EuY29tcG9uZW50O1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgcGF0aDogc291cmNlLFxuICAgICAgICAgICAgcmVuZGVyOiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgdmFyIFBhZ2VDb21wb25lbnQgPSBjb21wb25lbnQoKSgpO1xuICAgICAgICAgICAgICAgIHZhciByb290RWwgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTtcbiAgICAgICAgICAgICAgICByb290RWwuc2V0QXR0cmlidXRlKCdpZCcsIHJvb3RJZCk7XG4gICAgICAgICAgICAgICAgdmFyIGFwcEluc3RhbmNlID0gbW91bnQoY3JlYXRlRWxlbWVudChBcHAsIF9fYXNzaWduKF9fYXNzaWduKHsgaGlzdG9yeTogaGlzdG9yeSwgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb24gfSwgcGFnZVByb3BzKSwgeyBzb3VyY2U6IHNvdXJjZSwgUGFnZTogUGFnZUNvbXBvbmVudCB9KSksIHJvb3RFbCk7XG4gICAgICAgICAgICAgICAgZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChyb290RWwpO1xuICAgICAgICAgICAgICAgIGRvY3VtZW50Ll9fdW5tb3VudCA9IHVubW91bnQoYXBwSW5zdGFuY2UsIHJvb3RFbCk7XG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgc2V0RG9jdW1lbnQ6IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1nbG9iYWwtYXNzaWduXG4gICAgICAgICAgICAgICAgZG9jdW1lbnQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICAvLyBnZXRBcHAgZG9lc24ndCBleGlzdCBpbiBwbHVnaW4gc2l0dWF0aW9uXG4gICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2YgZ2V0QXBwID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgICAgICAgICAgICAgdmFyIE1pbmlBcHBHbG9iYWxJbnN0YW5jZSA9IGdldEFwcCgpO1xuICAgICAgICAgICAgICAgICAgICB2YXIgZGlzcGF0Y2hEb2N1bWVudE1vZGlmeSA9IE1pbmlBcHBHbG9iYWxJbnN0YW5jZS5fZGlzcGF0Y2hEb2N1bWVudE1vZGlmeTtcbiAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiBkaXNwYXRjaERvY3VtZW50TW9kaWZ5ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkaXNwYXRjaERvY3VtZW50TW9kaWZ5LmNhbGwoTWluaUFwcEdsb2JhbEluc3RhbmNlLCB2YWx1ZSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG4gICAgfSk7XG4gICAgd2luZG93Ll9fcGFnZXNSZW5kZXJJbmZvID0gKHdpbmRvdy5fX3BhZ2VzUmVuZGVySW5mbyB8fCBbXSkuY29uY2F0KHBhZ2VzUmVuZGVySW5mbyk7XG59XG5leHBvcnRzLmRlZmF1bHQgPSBtaW5pYXBwUmVuZGVyZXI7XG4iLCJpbXBvcnQgX2V4dGVuZHMgZnJvbSBcImJhYmVsLXJ1bnRpbWUvaGVscGVycy9leHRlbmRzXCI7XG5mdW5jdGlvbiBvbWl0KG9iaiwgZmllbGRzKSB7XG4gIHZhciBzaGFsbG93Q29weSA9IF9leHRlbmRzKHt9LCBvYmopO1xuICBmb3IgKHZhciBpID0gMDsgaSA8IGZpZWxkcy5sZW5ndGg7IGkrKykge1xuICAgIHZhciBrZXkgPSBmaWVsZHNbaV07XG4gICAgZGVsZXRlIHNoYWxsb3dDb3B5W2tleV07XG4gIH1cbiAgcmV0dXJuIHNoYWxsb3dDb3B5O1xufVxuXG5leHBvcnQgZGVmYXVsdCBvbWl0OyIsIi8qKlxuICogVG9rZW5pemUgaW5wdXQgc3RyaW5nLlxuICovXG5mdW5jdGlvbiBsZXhlcihzdHIpIHtcbiAgICB2YXIgdG9rZW5zID0gW107XG4gICAgdmFyIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgc3RyLmxlbmd0aCkge1xuICAgICAgICB2YXIgY2hhciA9IHN0cltpXTtcbiAgICAgICAgaWYgKGNoYXIgPT09IFwiKlwiIHx8IGNoYXIgPT09IFwiK1wiIHx8IGNoYXIgPT09IFwiP1wiKSB7XG4gICAgICAgICAgICB0b2tlbnMucHVzaCh7IHR5cGU6IFwiTU9ESUZJRVJcIiwgaW5kZXg6IGksIHZhbHVlOiBzdHJbaSsrXSB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChjaGFyID09PSBcIlxcXFxcIikge1xuICAgICAgICAgICAgdG9rZW5zLnB1c2goeyB0eXBlOiBcIkVTQ0FQRURfQ0hBUlwiLCBpbmRleDogaSsrLCB2YWx1ZTogc3RyW2krK10gfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhciA9PT0gXCJ7XCIpIHtcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKHsgdHlwZTogXCJPUEVOXCIsIGluZGV4OiBpLCB2YWx1ZTogc3RyW2krK10gfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhciA9PT0gXCJ9XCIpIHtcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKHsgdHlwZTogXCJDTE9TRVwiLCBpbmRleDogaSwgdmFsdWU6IHN0cltpKytdIH0pO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGNoYXIgPT09IFwiOlwiKSB7XG4gICAgICAgICAgICB2YXIgbmFtZSA9IFwiXCI7XG4gICAgICAgICAgICB2YXIgaiA9IGkgKyAxO1xuICAgICAgICAgICAgd2hpbGUgKGogPCBzdHIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgICAgdmFyIGNvZGUgPSBzdHIuY2hhckNvZGVBdChqKTtcbiAgICAgICAgICAgICAgICBpZiAoXG4gICAgICAgICAgICAgICAgLy8gYDAtOWBcbiAgICAgICAgICAgICAgICAoY29kZSA+PSA0OCAmJiBjb2RlIDw9IDU3KSB8fFxuICAgICAgICAgICAgICAgICAgICAvLyBgQS1aYFxuICAgICAgICAgICAgICAgICAgICAoY29kZSA+PSA2NSAmJiBjb2RlIDw9IDkwKSB8fFxuICAgICAgICAgICAgICAgICAgICAvLyBgYS16YFxuICAgICAgICAgICAgICAgICAgICAoY29kZSA+PSA5NyAmJiBjb2RlIDw9IDEyMikgfHxcbiAgICAgICAgICAgICAgICAgICAgLy8gYF9gXG4gICAgICAgICAgICAgICAgICAgIGNvZGUgPT09IDk1KSB7XG4gICAgICAgICAgICAgICAgICAgIG5hbWUgKz0gc3RyW2orK107XG4gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICghbmFtZSlcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiTWlzc2luZyBwYXJhbWV0ZXIgbmFtZSBhdCBcIiArIGkpO1xuICAgICAgICAgICAgdG9rZW5zLnB1c2goeyB0eXBlOiBcIk5BTUVcIiwgaW5kZXg6IGksIHZhbHVlOiBuYW1lIH0pO1xuICAgICAgICAgICAgaSA9IGo7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICBpZiAoY2hhciA9PT0gXCIoXCIpIHtcbiAgICAgICAgICAgIHZhciBjb3VudCA9IDE7XG4gICAgICAgICAgICB2YXIgcGF0dGVybiA9IFwiXCI7XG4gICAgICAgICAgICB2YXIgaiA9IGkgKyAxO1xuICAgICAgICAgICAgaWYgKHN0cltqXSA9PT0gXCI/XCIpIHtcbiAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiUGF0dGVybiBjYW5ub3Qgc3RhcnQgd2l0aCBcXFwiP1xcXCIgYXQgXCIgKyBqKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHdoaWxlIChqIDwgc3RyLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgIGlmIChzdHJbal0gPT09IFwiXFxcXFwiKSB7XG4gICAgICAgICAgICAgICAgICAgIHBhdHRlcm4gKz0gc3RyW2orK10gKyBzdHJbaisrXTtcbiAgICAgICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChzdHJbal0gPT09IFwiKVwiKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvdW50LS07XG4gICAgICAgICAgICAgICAgICAgIGlmIChjb3VudCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaisrO1xuICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSBpZiAoc3RyW2pdID09PSBcIihcIikge1xuICAgICAgICAgICAgICAgICAgICBjb3VudCsrO1xuICAgICAgICAgICAgICAgICAgICBpZiAoc3RyW2ogKyAxXSAhPT0gXCI/XCIpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJDYXB0dXJpbmcgZ3JvdXBzIGFyZSBub3QgYWxsb3dlZCBhdCBcIiArIGopO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhdHRlcm4gKz0gc3RyW2orK107XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAoY291bnQpXG4gICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIlVuYmFsYW5jZWQgcGF0dGVybiBhdCBcIiArIGkpO1xuICAgICAgICAgICAgaWYgKCFwYXR0ZXJuKVxuICAgICAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoXCJNaXNzaW5nIHBhdHRlcm4gYXQgXCIgKyBpKTtcbiAgICAgICAgICAgIHRva2Vucy5wdXNoKHsgdHlwZTogXCJQQVRURVJOXCIsIGluZGV4OiBpLCB2YWx1ZTogcGF0dGVybiB9KTtcbiAgICAgICAgICAgIGkgPSBqO1xuICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdG9rZW5zLnB1c2goeyB0eXBlOiBcIkNIQVJcIiwgaW5kZXg6IGksIHZhbHVlOiBzdHJbaSsrXSB9KTtcbiAgICB9XG4gICAgdG9rZW5zLnB1c2goeyB0eXBlOiBcIkVORFwiLCBpbmRleDogaSwgdmFsdWU6IFwiXCIgfSk7XG4gICAgcmV0dXJuIHRva2Vucztcbn1cbi8qKlxuICogUGFyc2UgYSBzdHJpbmcgZm9yIHRoZSByYXcgdG9rZW5zLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2Uoc3RyLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgdG9rZW5zID0gbGV4ZXIoc3RyKTtcbiAgICB2YXIgX2EgPSBvcHRpb25zLnByZWZpeGVzLCBwcmVmaXhlcyA9IF9hID09PSB2b2lkIDAgPyBcIi4vXCIgOiBfYTtcbiAgICB2YXIgZGVmYXVsdFBhdHRlcm4gPSBcIlteXCIgKyBlc2NhcGVTdHJpbmcob3B0aW9ucy5kZWxpbWl0ZXIgfHwgXCIvIz9cIikgKyBcIl0rP1wiO1xuICAgIHZhciByZXN1bHQgPSBbXTtcbiAgICB2YXIga2V5ID0gMDtcbiAgICB2YXIgaSA9IDA7XG4gICAgdmFyIHBhdGggPSBcIlwiO1xuICAgIHZhciB0cnlDb25zdW1lID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgICAgaWYgKGkgPCB0b2tlbnMubGVuZ3RoICYmIHRva2Vuc1tpXS50eXBlID09PSB0eXBlKVxuICAgICAgICAgICAgcmV0dXJuIHRva2Vuc1tpKytdLnZhbHVlO1xuICAgIH07XG4gICAgdmFyIG11c3RDb25zdW1lID0gZnVuY3Rpb24gKHR5cGUpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gdHJ5Q29uc3VtZSh0eXBlKTtcbiAgICAgICAgaWYgKHZhbHVlICE9PSB1bmRlZmluZWQpXG4gICAgICAgICAgICByZXR1cm4gdmFsdWU7XG4gICAgICAgIHZhciBfYSA9IHRva2Vuc1tpXSwgbmV4dFR5cGUgPSBfYS50eXBlLCBpbmRleCA9IF9hLmluZGV4O1xuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiVW5leHBlY3RlZCBcIiArIG5leHRUeXBlICsgXCIgYXQgXCIgKyBpbmRleCArIFwiLCBleHBlY3RlZCBcIiArIHR5cGUpO1xuICAgIH07XG4gICAgdmFyIGNvbnN1bWVUZXh0ID0gZnVuY3Rpb24gKCkge1xuICAgICAgICB2YXIgcmVzdWx0ID0gXCJcIjtcbiAgICAgICAgdmFyIHZhbHVlO1xuICAgICAgICAvLyB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmVcbiAgICAgICAgd2hpbGUgKCh2YWx1ZSA9IHRyeUNvbnN1bWUoXCJDSEFSXCIpIHx8IHRyeUNvbnN1bWUoXCJFU0NBUEVEX0NIQVJcIikpKSB7XG4gICAgICAgICAgICByZXN1bHQgKz0gdmFsdWU7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICB9O1xuICAgIHdoaWxlIChpIDwgdG9rZW5zLmxlbmd0aCkge1xuICAgICAgICB2YXIgY2hhciA9IHRyeUNvbnN1bWUoXCJDSEFSXCIpO1xuICAgICAgICB2YXIgbmFtZSA9IHRyeUNvbnN1bWUoXCJOQU1FXCIpO1xuICAgICAgICB2YXIgcGF0dGVybiA9IHRyeUNvbnN1bWUoXCJQQVRURVJOXCIpO1xuICAgICAgICBpZiAobmFtZSB8fCBwYXR0ZXJuKSB7XG4gICAgICAgICAgICB2YXIgcHJlZml4ID0gY2hhciB8fCBcIlwiO1xuICAgICAgICAgICAgaWYgKHByZWZpeGVzLmluZGV4T2YocHJlZml4KSA9PT0gLTEpIHtcbiAgICAgICAgICAgICAgICBwYXRoICs9IHByZWZpeDtcbiAgICAgICAgICAgICAgICBwcmVmaXggPSBcIlwiO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgICAgICAgICByZXN1bHQucHVzaChwYXRoKTtcbiAgICAgICAgICAgICAgICBwYXRoID0gXCJcIjtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJlc3VsdC5wdXNoKHtcbiAgICAgICAgICAgICAgICBuYW1lOiBuYW1lIHx8IGtleSsrLFxuICAgICAgICAgICAgICAgIHByZWZpeDogcHJlZml4LFxuICAgICAgICAgICAgICAgIHN1ZmZpeDogXCJcIixcbiAgICAgICAgICAgICAgICBwYXR0ZXJuOiBwYXR0ZXJuIHx8IGRlZmF1bHRQYXR0ZXJuLFxuICAgICAgICAgICAgICAgIG1vZGlmaWVyOiB0cnlDb25zdW1lKFwiTU9ESUZJRVJcIikgfHwgXCJcIlxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB2YXIgdmFsdWUgPSBjaGFyIHx8IHRyeUNvbnN1bWUoXCJFU0NBUEVEX0NIQVJcIik7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgcGF0aCArPSB2YWx1ZTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIGlmIChwYXRoKSB7XG4gICAgICAgICAgICByZXN1bHQucHVzaChwYXRoKTtcbiAgICAgICAgICAgIHBhdGggPSBcIlwiO1xuICAgICAgICB9XG4gICAgICAgIHZhciBvcGVuID0gdHJ5Q29uc3VtZShcIk9QRU5cIik7XG4gICAgICAgIGlmIChvcGVuKSB7XG4gICAgICAgICAgICB2YXIgcHJlZml4ID0gY29uc3VtZVRleHQoKTtcbiAgICAgICAgICAgIHZhciBuYW1lXzEgPSB0cnlDb25zdW1lKFwiTkFNRVwiKSB8fCBcIlwiO1xuICAgICAgICAgICAgdmFyIHBhdHRlcm5fMSA9IHRyeUNvbnN1bWUoXCJQQVRURVJOXCIpIHx8IFwiXCI7XG4gICAgICAgICAgICB2YXIgc3VmZml4ID0gY29uc3VtZVRleHQoKTtcbiAgICAgICAgICAgIG11c3RDb25zdW1lKFwiQ0xPU0VcIik7XG4gICAgICAgICAgICByZXN1bHQucHVzaCh7XG4gICAgICAgICAgICAgICAgbmFtZTogbmFtZV8xIHx8IChwYXR0ZXJuXzEgPyBrZXkrKyA6IFwiXCIpLFxuICAgICAgICAgICAgICAgIHBhdHRlcm46IG5hbWVfMSAmJiAhcGF0dGVybl8xID8gZGVmYXVsdFBhdHRlcm4gOiBwYXR0ZXJuXzEsXG4gICAgICAgICAgICAgICAgcHJlZml4OiBwcmVmaXgsXG4gICAgICAgICAgICAgICAgc3VmZml4OiBzdWZmaXgsXG4gICAgICAgICAgICAgICAgbW9kaWZpZXI6IHRyeUNvbnN1bWUoXCJNT0RJRklFUlwiKSB8fCBcIlwiXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIG11c3RDb25zdW1lKFwiRU5EXCIpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzdWx0O1xufVxuLyoqXG4gKiBDb21waWxlIGEgc3RyaW5nIHRvIGEgdGVtcGxhdGUgZnVuY3Rpb24gZm9yIHRoZSBwYXRoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY29tcGlsZShzdHIsIG9wdGlvbnMpIHtcbiAgICByZXR1cm4gdG9rZW5zVG9GdW5jdGlvbihwYXJzZShzdHIsIG9wdGlvbnMpLCBvcHRpb25zKTtcbn1cbi8qKlxuICogRXhwb3NlIGEgbWV0aG9kIGZvciB0cmFuc2Zvcm1pbmcgdG9rZW5zIGludG8gdGhlIHBhdGggZnVuY3Rpb24uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbnNUb0Z1bmN0aW9uKHRva2Vucywgb3B0aW9ucykge1xuICAgIGlmIChvcHRpb25zID09PSB2b2lkIDApIHsgb3B0aW9ucyA9IHt9OyB9XG4gICAgdmFyIHJlRmxhZ3MgPSBmbGFncyhvcHRpb25zKTtcbiAgICB2YXIgX2EgPSBvcHRpb25zLmVuY29kZSwgZW5jb2RlID0gX2EgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9IDogX2EsIF9iID0gb3B0aW9ucy52YWxpZGF0ZSwgdmFsaWRhdGUgPSBfYiA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9iO1xuICAgIC8vIENvbXBpbGUgYWxsIHRoZSB0b2tlbnMgaW50byByZWdleHBzLlxuICAgIHZhciBtYXRjaGVzID0gdG9rZW5zLm1hcChmdW5jdGlvbiAodG9rZW4pIHtcbiAgICAgICAgaWYgKHR5cGVvZiB0b2tlbiA9PT0gXCJvYmplY3RcIikge1xuICAgICAgICAgICAgcmV0dXJuIG5ldyBSZWdFeHAoXCJeKD86XCIgKyB0b2tlbi5wYXR0ZXJuICsgXCIpJFwiLCByZUZsYWdzKTtcbiAgICAgICAgfVxuICAgIH0pO1xuICAgIHJldHVybiBmdW5jdGlvbiAoZGF0YSkge1xuICAgICAgICB2YXIgcGF0aCA9IFwiXCI7XG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICB2YXIgdG9rZW4gPSB0b2tlbnNbaV07XG4gICAgICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICAgICAgcGF0aCArPSB0b2tlbjtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciB2YWx1ZSA9IGRhdGEgPyBkYXRhW3Rva2VuLm5hbWVdIDogdW5kZWZpbmVkO1xuICAgICAgICAgICAgdmFyIG9wdGlvbmFsID0gdG9rZW4ubW9kaWZpZXIgPT09IFwiP1wiIHx8IHRva2VuLm1vZGlmaWVyID09PSBcIipcIjtcbiAgICAgICAgICAgIHZhciByZXBlYXQgPSB0b2tlbi5tb2RpZmllciA9PT0gXCIqXCIgfHwgdG9rZW4ubW9kaWZpZXIgPT09IFwiK1wiO1xuICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgaWYgKCFyZXBlYXQpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIFxcXCJcIiArIHRva2VuLm5hbWUgKyBcIlxcXCIgdG8gbm90IHJlcGVhdCwgYnV0IGdvdCBhbiBhcnJheVwiKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHZhbHVlLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAob3B0aW9uYWwpXG4gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIFxcXCJcIiArIHRva2VuLm5hbWUgKyBcIlxcXCIgdG8gbm90IGJlIGVtcHR5XCIpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbHVlLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgICAgICAgICAgIHZhciBzZWdtZW50ID0gZW5jb2RlKHZhbHVlW2pdLCB0b2tlbik7XG4gICAgICAgICAgICAgICAgICAgIGlmICh2YWxpZGF0ZSAmJiAhbWF0Y2hlc1tpXS50ZXN0KHNlZ21lbnQpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgYWxsIFxcXCJcIiArIHRva2VuLm5hbWUgKyBcIlxcXCIgdG8gbWF0Y2ggXFxcIlwiICsgdG9rZW4ucGF0dGVybiArIFwiXFxcIiwgYnV0IGdvdCBcXFwiXCIgKyBzZWdtZW50ICsgXCJcXFwiXCIpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHBhdGggKz0gdG9rZW4ucHJlZml4ICsgc2VnbWVudCArIHRva2VuLnN1ZmZpeDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgY29udGludWU7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSBcInN0cmluZ1wiIHx8IHR5cGVvZiB2YWx1ZSA9PT0gXCJudW1iZXJcIikge1xuICAgICAgICAgICAgICAgIHZhciBzZWdtZW50ID0gZW5jb2RlKFN0cmluZyh2YWx1ZSksIHRva2VuKTtcbiAgICAgICAgICAgICAgICBpZiAodmFsaWRhdGUgJiYgIW1hdGNoZXNbaV0udGVzdChzZWdtZW50KSkge1xuICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKFwiRXhwZWN0ZWQgXFxcIlwiICsgdG9rZW4ubmFtZSArIFwiXFxcIiB0byBtYXRjaCBcXFwiXCIgKyB0b2tlbi5wYXR0ZXJuICsgXCJcXFwiLCBidXQgZ290IFxcXCJcIiArIHNlZ21lbnQgKyBcIlxcXCJcIik7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHBhdGggKz0gdG9rZW4ucHJlZml4ICsgc2VnbWVudCArIHRva2VuLnN1ZmZpeDtcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChvcHRpb25hbClcbiAgICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIHZhciB0eXBlT2ZNZXNzYWdlID0gcmVwZWF0ID8gXCJhbiBhcnJheVwiIDogXCJhIHN0cmluZ1wiO1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkV4cGVjdGVkIFxcXCJcIiArIHRva2VuLm5hbWUgKyBcIlxcXCIgdG8gYmUgXCIgKyB0eXBlT2ZNZXNzYWdlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB9O1xufVxuLyoqXG4gKiBDcmVhdGUgcGF0aCBtYXRjaCBmdW5jdGlvbiBmcm9tIGBwYXRoLXRvLXJlZ2V4cGAgc3BlYy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG1hdGNoKHN0ciwgb3B0aW9ucykge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgdmFyIHJlID0gcGF0aFRvUmVnZXhwKHN0ciwga2V5cywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHJlZ2V4cFRvRnVuY3Rpb24ocmUsIGtleXMsIG9wdGlvbnMpO1xufVxuLyoqXG4gKiBDcmVhdGUgYSBwYXRoIG1hdGNoIGZ1bmN0aW9uIGZyb20gYHBhdGgtdG8tcmVnZXhwYCBvdXRwdXQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByZWdleHBUb0Z1bmN0aW9uKHJlLCBrZXlzLCBvcHRpb25zKSB7XG4gICAgaWYgKG9wdGlvbnMgPT09IHZvaWQgMCkgeyBvcHRpb25zID0ge307IH1cbiAgICB2YXIgX2EgPSBvcHRpb25zLmRlY29kZSwgZGVjb2RlID0gX2EgPT09IHZvaWQgMCA/IGZ1bmN0aW9uICh4KSB7IHJldHVybiB4OyB9IDogX2E7XG4gICAgcmV0dXJuIGZ1bmN0aW9uIChwYXRobmFtZSkge1xuICAgICAgICB2YXIgbSA9IHJlLmV4ZWMocGF0aG5hbWUpO1xuICAgICAgICBpZiAoIW0pXG4gICAgICAgICAgICByZXR1cm4gZmFsc2U7XG4gICAgICAgIHZhciBwYXRoID0gbVswXSwgaW5kZXggPSBtLmluZGV4O1xuICAgICAgICB2YXIgcGFyYW1zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdmFyIF9sb29wXzEgPSBmdW5jdGlvbiAoaSkge1xuICAgICAgICAgICAgLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICBpZiAobVtpXSA9PT0gdW5kZWZpbmVkKVxuICAgICAgICAgICAgICAgIHJldHVybiBcImNvbnRpbnVlXCI7XG4gICAgICAgICAgICB2YXIga2V5ID0ga2V5c1tpIC0gMV07XG4gICAgICAgICAgICBpZiAoa2V5Lm1vZGlmaWVyID09PSBcIipcIiB8fCBrZXkubW9kaWZpZXIgPT09IFwiK1wiKSB7XG4gICAgICAgICAgICAgICAgcGFyYW1zW2tleS5uYW1lXSA9IG1baV0uc3BsaXQoa2V5LnByZWZpeCArIGtleS5zdWZmaXgpLm1hcChmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGRlY29kZSh2YWx1ZSwga2V5KTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmFtc1trZXkubmFtZV0gPSBkZWNvZGUobVtpXSwga2V5KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfTtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBtLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgICBfbG9vcF8xKGkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB7IHBhdGg6IHBhdGgsIGluZGV4OiBpbmRleCwgcGFyYW1zOiBwYXJhbXMgfTtcbiAgICB9O1xufVxuLyoqXG4gKiBFc2NhcGUgYSByZWd1bGFyIGV4cHJlc3Npb24gc3RyaW5nLlxuICovXG5mdW5jdGlvbiBlc2NhcGVTdHJpbmcoc3RyKSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oWy4rKj89XiE6JHt9KClbXFxdfC9cXFxcXSkvZywgXCJcXFxcJDFcIik7XG59XG4vKipcbiAqIEdldCB0aGUgZmxhZ3MgZm9yIGEgcmVnZXhwIGZyb20gdGhlIG9wdGlvbnMuXG4gKi9cbmZ1bmN0aW9uIGZsYWdzKG9wdGlvbnMpIHtcbiAgICByZXR1cm4gb3B0aW9ucyAmJiBvcHRpb25zLnNlbnNpdGl2ZSA/IFwiXCIgOiBcImlcIjtcbn1cbi8qKlxuICogUHVsbCBvdXQga2V5cyBmcm9tIGEgcmVnZXhwLlxuICovXG5mdW5jdGlvbiByZWdleHBUb1JlZ2V4cChwYXRoLCBrZXlzKSB7XG4gICAgaWYgKCFrZXlzKVxuICAgICAgICByZXR1cm4gcGF0aDtcbiAgICB2YXIgZ3JvdXBzUmVnZXggPSAvXFwoKD86XFw/PCguKj8pPik/KD8hXFw/KS9nO1xuICAgIHZhciBpbmRleCA9IDA7XG4gICAgdmFyIGV4ZWNSZXN1bHQgPSBncm91cHNSZWdleC5leGVjKHBhdGguc291cmNlKTtcbiAgICB3aGlsZSAoZXhlY1Jlc3VsdCkge1xuICAgICAgICBrZXlzLnB1c2goe1xuICAgICAgICAgICAgLy8gVXNlIHBhcmVudGhlc2l6ZWQgc3Vic3RyaW5nIG1hdGNoIGlmIGF2YWlsYWJsZSwgaW5kZXggb3RoZXJ3aXNlXG4gICAgICAgICAgICBuYW1lOiBleGVjUmVzdWx0WzFdIHx8IGluZGV4KyssXG4gICAgICAgICAgICBwcmVmaXg6IFwiXCIsXG4gICAgICAgICAgICBzdWZmaXg6IFwiXCIsXG4gICAgICAgICAgICBtb2RpZmllcjogXCJcIixcbiAgICAgICAgICAgIHBhdHRlcm46IFwiXCJcbiAgICAgICAgfSk7XG4gICAgICAgIGV4ZWNSZXN1bHQgPSBncm91cHNSZWdleC5leGVjKHBhdGguc291cmNlKTtcbiAgICB9XG4gICAgcmV0dXJuIHBhdGg7XG59XG4vKipcbiAqIFRyYW5zZm9ybSBhbiBhcnJheSBpbnRvIGEgcmVnZXhwLlxuICovXG5mdW5jdGlvbiBhcnJheVRvUmVnZXhwKHBhdGhzLCBrZXlzLCBvcHRpb25zKSB7XG4gICAgdmFyIHBhcnRzID0gcGF0aHMubWFwKGZ1bmN0aW9uIChwYXRoKSB7IHJldHVybiBwYXRoVG9SZWdleHAocGF0aCwga2V5cywgb3B0aW9ucykuc291cmNlOyB9KTtcbiAgICByZXR1cm4gbmV3IFJlZ0V4cChcIig/OlwiICsgcGFydHMuam9pbihcInxcIikgKyBcIilcIiwgZmxhZ3Mob3B0aW9ucykpO1xufVxuLyoqXG4gKiBDcmVhdGUgYSBwYXRoIHJlZ2V4cCBmcm9tIHN0cmluZyBpbnB1dC5cbiAqL1xuZnVuY3Rpb24gc3RyaW5nVG9SZWdleHAocGF0aCwga2V5cywgb3B0aW9ucykge1xuICAgIHJldHVybiB0b2tlbnNUb1JlZ2V4cChwYXJzZShwYXRoLCBvcHRpb25zKSwga2V5cywgb3B0aW9ucyk7XG59XG4vKipcbiAqIEV4cG9zZSBhIGZ1bmN0aW9uIGZvciB0YWtpbmcgdG9rZW5zIGFuZCByZXR1cm5pbmcgYSBSZWdFeHAuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b2tlbnNUb1JlZ2V4cCh0b2tlbnMsIGtleXMsIG9wdGlvbnMpIHtcbiAgICBpZiAob3B0aW9ucyA9PT0gdm9pZCAwKSB7IG9wdGlvbnMgPSB7fTsgfVxuICAgIHZhciBfYSA9IG9wdGlvbnMuc3RyaWN0LCBzdHJpY3QgPSBfYSA9PT0gdm9pZCAwID8gZmFsc2UgOiBfYSwgX2IgPSBvcHRpb25zLnN0YXJ0LCBzdGFydCA9IF9iID09PSB2b2lkIDAgPyB0cnVlIDogX2IsIF9jID0gb3B0aW9ucy5lbmQsIGVuZCA9IF9jID09PSB2b2lkIDAgPyB0cnVlIDogX2MsIF9kID0gb3B0aW9ucy5lbmNvZGUsIGVuY29kZSA9IF9kID09PSB2b2lkIDAgPyBmdW5jdGlvbiAoeCkgeyByZXR1cm4geDsgfSA6IF9kO1xuICAgIHZhciBlbmRzV2l0aCA9IFwiW1wiICsgZXNjYXBlU3RyaW5nKG9wdGlvbnMuZW5kc1dpdGggfHwgXCJcIikgKyBcIl18JFwiO1xuICAgIHZhciBkZWxpbWl0ZXIgPSBcIltcIiArIGVzY2FwZVN0cmluZyhvcHRpb25zLmRlbGltaXRlciB8fCBcIi8jP1wiKSArIFwiXVwiO1xuICAgIHZhciByb3V0ZSA9IHN0YXJ0ID8gXCJeXCIgOiBcIlwiO1xuICAgIC8vIEl0ZXJhdGUgb3ZlciB0aGUgdG9rZW5zIGFuZCBjcmVhdGUgb3VyIHJlZ2V4cCBzdHJpbmcuXG4gICAgZm9yICh2YXIgX2kgPSAwLCB0b2tlbnNfMSA9IHRva2VuczsgX2kgPCB0b2tlbnNfMS5sZW5ndGg7IF9pKyspIHtcbiAgICAgICAgdmFyIHRva2VuID0gdG9rZW5zXzFbX2ldO1xuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSBcInN0cmluZ1wiKSB7XG4gICAgICAgICAgICByb3V0ZSArPSBlc2NhcGVTdHJpbmcoZW5jb2RlKHRva2VuKSk7XG4gICAgICAgIH1cbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICB2YXIgcHJlZml4ID0gZXNjYXBlU3RyaW5nKGVuY29kZSh0b2tlbi5wcmVmaXgpKTtcbiAgICAgICAgICAgIHZhciBzdWZmaXggPSBlc2NhcGVTdHJpbmcoZW5jb2RlKHRva2VuLnN1ZmZpeCkpO1xuICAgICAgICAgICAgaWYgKHRva2VuLnBhdHRlcm4pIHtcbiAgICAgICAgICAgICAgICBpZiAoa2V5cylcbiAgICAgICAgICAgICAgICAgICAga2V5cy5wdXNoKHRva2VuKTtcbiAgICAgICAgICAgICAgICBpZiAocHJlZml4IHx8IHN1ZmZpeCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAodG9rZW4ubW9kaWZpZXIgPT09IFwiK1wiIHx8IHRva2VuLm1vZGlmaWVyID09PSBcIipcIikge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIG1vZCA9IHRva2VuLm1vZGlmaWVyID09PSBcIipcIiA/IFwiP1wiIDogXCJcIjtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlICs9IFwiKD86XCIgKyBwcmVmaXggKyBcIigoPzpcIiArIHRva2VuLnBhdHRlcm4gKyBcIikoPzpcIiArIHN1ZmZpeCArIHByZWZpeCArIFwiKD86XCIgKyB0b2tlbi5wYXR0ZXJuICsgXCIpKSopXCIgKyBzdWZmaXggKyBcIilcIiArIG1vZDtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJvdXRlICs9IFwiKD86XCIgKyBwcmVmaXggKyBcIihcIiArIHRva2VuLnBhdHRlcm4gKyBcIilcIiArIHN1ZmZpeCArIFwiKVwiICsgdG9rZW4ubW9kaWZpZXI7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlICs9IFwiKFwiICsgdG9rZW4ucGF0dGVybiArIFwiKVwiICsgdG9rZW4ubW9kaWZpZXI7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZWxzZSB7XG4gICAgICAgICAgICAgICAgcm91dGUgKz0gXCIoPzpcIiArIHByZWZpeCArIHN1ZmZpeCArIFwiKVwiICsgdG9rZW4ubW9kaWZpZXI7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKGVuZCkge1xuICAgICAgICBpZiAoIXN0cmljdClcbiAgICAgICAgICAgIHJvdXRlICs9IGRlbGltaXRlciArIFwiP1wiO1xuICAgICAgICByb3V0ZSArPSAhb3B0aW9ucy5lbmRzV2l0aCA/IFwiJFwiIDogXCIoPz1cIiArIGVuZHNXaXRoICsgXCIpXCI7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICB2YXIgZW5kVG9rZW4gPSB0b2tlbnNbdG9rZW5zLmxlbmd0aCAtIDFdO1xuICAgICAgICB2YXIgaXNFbmREZWxpbWl0ZWQgPSB0eXBlb2YgZW5kVG9rZW4gPT09IFwic3RyaW5nXCJcbiAgICAgICAgICAgID8gZGVsaW1pdGVyLmluZGV4T2YoZW5kVG9rZW5bZW5kVG9rZW4ubGVuZ3RoIC0gMV0pID4gLTFcbiAgICAgICAgICAgIDogLy8gdHNsaW50OmRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgICAgICAgICAgZW5kVG9rZW4gPT09IHVuZGVmaW5lZDtcbiAgICAgICAgaWYgKCFzdHJpY3QpIHtcbiAgICAgICAgICAgIHJvdXRlICs9IFwiKD86XCIgKyBkZWxpbWl0ZXIgKyBcIig/PVwiICsgZW5kc1dpdGggKyBcIikpP1wiO1xuICAgICAgICB9XG4gICAgICAgIGlmICghaXNFbmREZWxpbWl0ZWQpIHtcbiAgICAgICAgICAgIHJvdXRlICs9IFwiKD89XCIgKyBkZWxpbWl0ZXIgKyBcInxcIiArIGVuZHNXaXRoICsgXCIpXCI7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG5ldyBSZWdFeHAocm91dGUsIGZsYWdzKG9wdGlvbnMpKTtcbn1cbi8qKlxuICogTm9ybWFsaXplIHRoZSBnaXZlbiBwYXRoIHN0cmluZywgcmV0dXJuaW5nIGEgcmVndWxhciBleHByZXNzaW9uLlxuICpcbiAqIEFuIGVtcHR5IGFycmF5IGNhbiBiZSBwYXNzZWQgaW4gZm9yIHRoZSBrZXlzLCB3aGljaCB3aWxsIGhvbGQgdGhlXG4gKiBwbGFjZWhvbGRlciBrZXkgZGVzY3JpcHRpb25zLiBGb3IgZXhhbXBsZSwgdXNpbmcgYC91c2VyLzppZGAsIGBrZXlzYCB3aWxsXG4gKiBjb250YWluIGBbeyBuYW1lOiAnaWQnLCBkZWxpbWl0ZXI6ICcvJywgb3B0aW9uYWw6IGZhbHNlLCByZXBlYXQ6IGZhbHNlIH1dYC5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhdGhUb1JlZ2V4cChwYXRoLCBrZXlzLCBvcHRpb25zKSB7XG4gICAgaWYgKHBhdGggaW5zdGFuY2VvZiBSZWdFeHApXG4gICAgICAgIHJldHVybiByZWdleHBUb1JlZ2V4cChwYXRoLCBrZXlzKTtcbiAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoKSlcbiAgICAgICAgcmV0dXJuIGFycmF5VG9SZWdleHAocGF0aCwga2V5cywgb3B0aW9ucyk7XG4gICAgcmV0dXJuIHN0cmluZ1RvUmVnZXhwKHBhdGgsIGtleXMsIG9wdGlvbnMpO1xufVxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9aW5kZXguanMubWFwIiwiLy8gc2hpbSBmb3IgdXNpbmcgcHJvY2VzcyBpbiBicm93c2VyXG52YXIgcHJvY2VzcyA9IG1vZHVsZS5leHBvcnRzID0ge307XG5cbi8vIGNhY2hlZCBmcm9tIHdoYXRldmVyIGdsb2JhbCBpcyBwcmVzZW50IHNvIHRoYXQgdGVzdCBydW5uZXJzIHRoYXQgc3R1YiBpdFxuLy8gZG9uJ3QgYnJlYWsgdGhpbmdzLiAgQnV0IHdlIG5lZWQgdG8gd3JhcCBpdCBpbiBhIHRyeSBjYXRjaCBpbiBjYXNlIGl0IGlzXG4vLyB3cmFwcGVkIGluIHN0cmljdCBtb2RlIGNvZGUgd2hpY2ggZG9lc24ndCBkZWZpbmUgYW55IGdsb2JhbHMuICBJdCdzIGluc2lkZSBhXG4vLyBmdW5jdGlvbiBiZWNhdXNlIHRyeS9jYXRjaGVzIGRlb3B0aW1pemUgaW4gY2VydGFpbiBlbmdpbmVzLlxuXG52YXIgY2FjaGVkU2V0VGltZW91dDtcbnZhciBjYWNoZWRDbGVhclRpbWVvdXQ7XG5cbmZ1bmN0aW9uIGRlZmF1bHRTZXRUaW1vdXQoKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdzZXRUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG5mdW5jdGlvbiBkZWZhdWx0Q2xlYXJUaW1lb3V0ICgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ2NsZWFyVGltZW91dCBoYXMgbm90IGJlZW4gZGVmaW5lZCcpO1xufVxuKGZ1bmN0aW9uICgpIHtcbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIHNldFRpbWVvdXQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBzZXRUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgICAgIH1cbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNhY2hlZFNldFRpbWVvdXQgPSBkZWZhdWx0U2V0VGltb3V0O1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICBpZiAodHlwZW9mIGNsZWFyVGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gY2xlYXJUaW1lb3V0O1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkQ2xlYXJUaW1lb3V0ID0gZGVmYXVsdENsZWFyVGltZW91dDtcbiAgICB9XG59ICgpKVxuZnVuY3Rpb24gcnVuVGltZW91dChmdW4pIHtcbiAgICBpZiAoY2FjaGVkU2V0VGltZW91dCA9PT0gc2V0VGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgLy8gaWYgc2V0VGltZW91dCB3YXNuJ3QgYXZhaWxhYmxlIGJ1dCB3YXMgbGF0dGVyIGRlZmluZWRcbiAgICBpZiAoKGNhY2hlZFNldFRpbWVvdXQgPT09IGRlZmF1bHRTZXRUaW1vdXQgfHwgIWNhY2hlZFNldFRpbWVvdXQpICYmIHNldFRpbWVvdXQpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBzZXRUaW1lb3V0KGZ1biwgMCk7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIC8vIHdoZW4gd2hlbiBzb21lYm9keSBoYXMgc2NyZXdlZCB3aXRoIHNldFRpbWVvdXQgYnV0IG5vIEkuRS4gbWFkZG5lc3NcbiAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9IGNhdGNoKGUpe1xuICAgICAgICB0cnkge1xuICAgICAgICAgICAgLy8gV2hlbiB3ZSBhcmUgaW4gSS5FLiBidXQgdGhlIHNjcmlwdCBoYXMgYmVlbiBldmFsZWQgc28gSS5FLiBkb2Vzbid0IHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKG51bGwsIGZ1biwgMCk7XG4gICAgICAgIH0gY2F0Y2goZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvclxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZFNldFRpbWVvdXQuY2FsbCh0aGlzLCBmdW4sIDApO1xuICAgICAgICB9XG4gICAgfVxuXG5cbn1cbmZ1bmN0aW9uIHJ1bkNsZWFyVGltZW91dChtYXJrZXIpIHtcbiAgICBpZiAoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBjbGVhclRpbWVvdXQpIHtcbiAgICAgICAgLy9ub3JtYWwgZW52aXJvbWVudHMgaW4gc2FuZSBzaXR1YXRpb25zXG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgLy8gaWYgY2xlYXJUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkQ2xlYXJUaW1lb3V0ID09PSBkZWZhdWx0Q2xlYXJUaW1lb3V0IHx8ICFjYWNoZWRDbGVhclRpbWVvdXQpICYmIGNsZWFyVGltZW91dCkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIHJldHVybiBjbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0KG1hcmtlcik7XG4gICAgfSBjYXRjaCAoZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgIHRydXN0IHRoZSBnbG9iYWwgb2JqZWN0IHdoZW4gY2FsbGVkIG5vcm1hbGx5XG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkQ2xlYXJUaW1lb3V0LmNhbGwobnVsbCwgbWFya2VyKTtcbiAgICAgICAgfSBjYXRjaCAoZSl7XG4gICAgICAgICAgICAvLyBzYW1lIGFzIGFib3ZlIGJ1dCB3aGVuIGl0J3MgYSB2ZXJzaW9uIG9mIEkuRS4gdGhhdCBtdXN0IGhhdmUgdGhlIGdsb2JhbCBvYmplY3QgZm9yICd0aGlzJywgaG9wZnVsbHkgb3VyIGNvbnRleHQgY29ycmVjdCBvdGhlcndpc2UgaXQgd2lsbCB0aHJvdyBhIGdsb2JhbCBlcnJvci5cbiAgICAgICAgICAgIC8vIFNvbWUgdmVyc2lvbnMgb2YgSS5FLiBoYXZlIGRpZmZlcmVudCBydWxlcyBmb3IgY2xlYXJUaW1lb3V0IHZzIHNldFRpbWVvdXRcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbCh0aGlzLCBtYXJrZXIpO1xuICAgICAgICB9XG4gICAgfVxuXG5cblxufVxudmFyIHF1ZXVlID0gW107XG52YXIgZHJhaW5pbmcgPSBmYWxzZTtcbnZhciBjdXJyZW50UXVldWU7XG52YXIgcXVldWVJbmRleCA9IC0xO1xuXG5mdW5jdGlvbiBjbGVhblVwTmV4dFRpY2soKSB7XG4gICAgaWYgKCFkcmFpbmluZyB8fCAhY3VycmVudFF1ZXVlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBpZiAoY3VycmVudFF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBxdWV1ZSA9IGN1cnJlbnRRdWV1ZS5jb25jYXQocXVldWUpO1xuICAgIH0gZWxzZSB7XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICB9XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCkge1xuICAgICAgICBkcmFpblF1ZXVlKCk7XG4gICAgfVxufVxuXG5mdW5jdGlvbiBkcmFpblF1ZXVlKCkge1xuICAgIGlmIChkcmFpbmluZykge1xuICAgICAgICByZXR1cm47XG4gICAgfVxuICAgIHZhciB0aW1lb3V0ID0gcnVuVGltZW91dChjbGVhblVwTmV4dFRpY2spO1xuICAgIGRyYWluaW5nID0gdHJ1ZTtcblxuICAgIHZhciBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgd2hpbGUobGVuKSB7XG4gICAgICAgIGN1cnJlbnRRdWV1ZSA9IHF1ZXVlO1xuICAgICAgICBxdWV1ZSA9IFtdO1xuICAgICAgICB3aGlsZSAoKytxdWV1ZUluZGV4IDwgbGVuKSB7XG4gICAgICAgICAgICBpZiAoY3VycmVudFF1ZXVlKSB7XG4gICAgICAgICAgICAgICAgY3VycmVudFF1ZXVlW3F1ZXVlSW5kZXhdLnJ1bigpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICAgIHF1ZXVlSW5kZXggPSAtMTtcbiAgICAgICAgbGVuID0gcXVldWUubGVuZ3RoO1xuICAgIH1cbiAgICBjdXJyZW50UXVldWUgPSBudWxsO1xuICAgIGRyYWluaW5nID0gZmFsc2U7XG4gICAgcnVuQ2xlYXJUaW1lb3V0KHRpbWVvdXQpO1xufVxuXG5wcm9jZXNzLm5leHRUaWNrID0gZnVuY3Rpb24gKGZ1bikge1xuICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA+IDEpIHtcbiAgICAgICAgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgICAgIGFyZ3NbaSAtIDFdID0gYXJndW1lbnRzW2ldO1xuICAgICAgICB9XG4gICAgfVxuICAgIHF1ZXVlLnB1c2gobmV3IEl0ZW0oZnVuLCBhcmdzKSk7XG4gICAgaWYgKHF1ZXVlLmxlbmd0aCA9PT0gMSAmJiAhZHJhaW5pbmcpIHtcbiAgICAgICAgcnVuVGltZW91dChkcmFpblF1ZXVlKTtcbiAgICB9XG59O1xuXG4vLyB2OCBsaWtlcyBwcmVkaWN0aWJsZSBvYmplY3RzXG5mdW5jdGlvbiBJdGVtKGZ1biwgYXJyYXkpIHtcbiAgICB0aGlzLmZ1biA9IGZ1bjtcbiAgICB0aGlzLmFycmF5ID0gYXJyYXk7XG59XG5JdGVtLnByb3RvdHlwZS5ydW4gPSBmdW5jdGlvbiAoKSB7XG4gICAgdGhpcy5mdW4uYXBwbHkobnVsbCwgdGhpcy5hcnJheSk7XG59O1xucHJvY2Vzcy50aXRsZSA9ICdicm93c2VyJztcbnByb2Nlc3MuYnJvd3NlciA9IHRydWU7XG5wcm9jZXNzLmVudiA9IHt9O1xucHJvY2Vzcy5hcmd2ID0gW107XG5wcm9jZXNzLnZlcnNpb24gPSAnJzsgLy8gZW1wdHkgc3RyaW5nIHRvIGF2b2lkIHJlZ2V4cCBpc3N1ZXNcbnByb2Nlc3MudmVyc2lvbnMgPSB7fTtcblxuZnVuY3Rpb24gbm9vcCgpIHt9XG5cbnByb2Nlc3Mub24gPSBub29wO1xucHJvY2Vzcy5hZGRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLm9uY2UgPSBub29wO1xucHJvY2Vzcy5vZmYgPSBub29wO1xucHJvY2Vzcy5yZW1vdmVMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUFsbExpc3RlbmVycyA9IG5vb3A7XG5wcm9jZXNzLmVtaXQgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kTGlzdGVuZXIgPSBub29wO1xucHJvY2Vzcy5wcmVwZW5kT25jZUxpc3RlbmVyID0gbm9vcDtcblxucHJvY2Vzcy5saXN0ZW5lcnMgPSBmdW5jdGlvbiAobmFtZSkgeyByZXR1cm4gW10gfVxuXG5wcm9jZXNzLmJpbmRpbmcgPSBmdW5jdGlvbiAobmFtZSkge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5iaW5kaW5nIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5cbnByb2Nlc3MuY3dkID0gZnVuY3Rpb24gKCkgeyByZXR1cm4gJy8nIH07XG5wcm9jZXNzLmNoZGlyID0gZnVuY3Rpb24gKGRpcikge1xuICAgIHRocm93IG5ldyBFcnJvcigncHJvY2Vzcy5jaGRpciBpcyBub3Qgc3VwcG9ydGVkJyk7XG59O1xucHJvY2Vzcy51bWFzayA9IGZ1bmN0aW9uKCkgeyByZXR1cm4gMDsgfTtcbiIsIid1c2Ugc3RyaWN0JztcbmNvbnN0IHN0cmljdFVyaUVuY29kZSA9IHJlcXVpcmUoJ3N0cmljdC11cmktZW5jb2RlJyk7XG5jb25zdCBkZWNvZGVDb21wb25lbnQgPSByZXF1aXJlKCdkZWNvZGUtdXJpLWNvbXBvbmVudCcpO1xuY29uc3Qgc3BsaXRPbkZpcnN0ID0gcmVxdWlyZSgnc3BsaXQtb24tZmlyc3QnKTtcbmNvbnN0IGZpbHRlck9iamVjdCA9IHJlcXVpcmUoJ2ZpbHRlci1vYmonKTtcblxuY29uc3QgaXNOdWxsT3JVbmRlZmluZWQgPSB2YWx1ZSA9PiB2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkO1xuXG5mdW5jdGlvbiBlbmNvZGVyRm9yQXJyYXlGb3JtYXQob3B0aW9ucykge1xuXHRzd2l0Y2ggKG9wdGlvbnMuYXJyYXlGb3JtYXQpIHtcblx0XHRjYXNlICdpbmRleCc6XG5cdFx0XHRyZXR1cm4ga2V5ID0+IChyZXN1bHQsIHZhbHVlKSA9PiB7XG5cdFx0XHRcdGNvbnN0IGluZGV4ID0gcmVzdWx0Lmxlbmd0aDtcblxuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0dmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuXHRcdFx0XHRcdChvcHRpb25zLnNraXBOdWxsICYmIHZhbHVlID09PSBudWxsKSB8fFxuXHRcdFx0XHRcdChvcHRpb25zLnNraXBFbXB0eVN0cmluZyAmJiB2YWx1ZSA9PT0gJycpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodmFsdWUgPT09IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm4gWy4uLnJlc3VsdCwgW2VuY29kZShrZXksIG9wdGlvbnMpLCAnWycsIGluZGV4LCAnXSddLmpvaW4oJycpXTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdHJldHVybiBbXG5cdFx0XHRcdFx0Li4ucmVzdWx0LFxuXHRcdFx0XHRcdFtlbmNvZGUoa2V5LCBvcHRpb25zKSwgJ1snLCBlbmNvZGUoaW5kZXgsIG9wdGlvbnMpLCAnXT0nLCBlbmNvZGUodmFsdWUsIG9wdGlvbnMpXS5qb2luKCcnKVxuXHRcdFx0XHRdO1xuXHRcdFx0fTtcblxuXHRcdGNhc2UgJ2JyYWNrZXQnOlxuXHRcdFx0cmV0dXJuIGtleSA9PiAocmVzdWx0LCB2YWx1ZSkgPT4ge1xuXHRcdFx0XHRpZiAoXG5cdFx0XHRcdFx0dmFsdWUgPT09IHVuZGVmaW5lZCB8fFxuXHRcdFx0XHRcdChvcHRpb25zLnNraXBOdWxsICYmIHZhbHVlID09PSBudWxsKSB8fFxuXHRcdFx0XHRcdChvcHRpb25zLnNraXBFbXB0eVN0cmluZyAmJiB2YWx1ZSA9PT0gJycpXG5cdFx0XHRcdCkge1xuXHRcdFx0XHRcdHJldHVybiByZXN1bHQ7XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRpZiAodmFsdWUgPT09IG51bGwpIHtcblx0XHRcdFx0XHRyZXR1cm4gWy4uLnJlc3VsdCwgW2VuY29kZShrZXksIG9wdGlvbnMpLCAnW10nXS5qb2luKCcnKV07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gWy4uLnJlc3VsdCwgW2VuY29kZShrZXksIG9wdGlvbnMpLCAnW109JywgZW5jb2RlKHZhbHVlLCBvcHRpb25zKV0uam9pbignJyldO1xuXHRcdFx0fTtcblxuXHRcdGNhc2UgJ2NvbW1hJzpcblx0XHRjYXNlICdzZXBhcmF0b3InOlxuXHRcdFx0cmV0dXJuIGtleSA9PiAocmVzdWx0LCB2YWx1ZSkgPT4ge1xuXHRcdFx0XHRpZiAodmFsdWUgPT09IG51bGwgfHwgdmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2YWx1ZS5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0O1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKHJlc3VsdC5sZW5ndGggPT09IDApIHtcblx0XHRcdFx0XHRyZXR1cm4gW1tlbmNvZGUoa2V5LCBvcHRpb25zKSwgJz0nLCBlbmNvZGUodmFsdWUsIG9wdGlvbnMpXS5qb2luKCcnKV07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gW1tyZXN1bHQsIGVuY29kZSh2YWx1ZSwgb3B0aW9ucyldLmpvaW4ob3B0aW9ucy5hcnJheUZvcm1hdFNlcGFyYXRvcildO1xuXHRcdFx0fTtcblxuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4ga2V5ID0+IChyZXN1bHQsIHZhbHVlKSA9PiB7XG5cdFx0XHRcdGlmIChcblx0XHRcdFx0XHR2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8XG5cdFx0XHRcdFx0KG9wdGlvbnMuc2tpcE51bGwgJiYgdmFsdWUgPT09IG51bGwpIHx8XG5cdFx0XHRcdFx0KG9wdGlvbnMuc2tpcEVtcHR5U3RyaW5nICYmIHZhbHVlID09PSAnJylcblx0XHRcdFx0KSB7XG5cdFx0XHRcdFx0cmV0dXJuIHJlc3VsdDtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmICh2YWx1ZSA9PT0gbnVsbCkge1xuXHRcdFx0XHRcdHJldHVybiBbLi4ucmVzdWx0LCBlbmNvZGUoa2V5LCBvcHRpb25zKV07XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRyZXR1cm4gWy4uLnJlc3VsdCwgW2VuY29kZShrZXksIG9wdGlvbnMpLCAnPScsIGVuY29kZSh2YWx1ZSwgb3B0aW9ucyldLmpvaW4oJycpXTtcblx0XHRcdH07XG5cdH1cbn1cblxuZnVuY3Rpb24gcGFyc2VyRm9yQXJyYXlGb3JtYXQob3B0aW9ucykge1xuXHRsZXQgcmVzdWx0O1xuXG5cdHN3aXRjaCAob3B0aW9ucy5hcnJheUZvcm1hdCkge1xuXHRcdGNhc2UgJ2luZGV4Jzpcblx0XHRcdHJldHVybiAoa2V5LCB2YWx1ZSwgYWNjdW11bGF0b3IpID0+IHtcblx0XHRcdFx0cmVzdWx0ID0gL1xcWyhcXGQqKVxcXSQvLmV4ZWMoa2V5KTtcblxuXHRcdFx0XHRrZXkgPSBrZXkucmVwbGFjZSgvXFxbXFxkKlxcXSQvLCAnJyk7XG5cblx0XHRcdFx0aWYgKCFyZXN1bHQpIHtcblx0XHRcdFx0XHRhY2N1bXVsYXRvcltrZXldID0gdmFsdWU7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKGFjY3VtdWxhdG9yW2tleV0gPT09IHVuZGVmaW5lZCkge1xuXHRcdFx0XHRcdGFjY3VtdWxhdG9yW2tleV0gPSB7fTtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGFjY3VtdWxhdG9yW2tleV1bcmVzdWx0WzFdXSA9IHZhbHVlO1xuXHRcdFx0fTtcblxuXHRcdGNhc2UgJ2JyYWNrZXQnOlxuXHRcdFx0cmV0dXJuIChrZXksIHZhbHVlLCBhY2N1bXVsYXRvcikgPT4ge1xuXHRcdFx0XHRyZXN1bHQgPSAvKFxcW1xcXSkkLy5leGVjKGtleSk7XG5cdFx0XHRcdGtleSA9IGtleS5yZXBsYWNlKC9cXFtcXF0kLywgJycpO1xuXG5cdFx0XHRcdGlmICghcmVzdWx0KSB7XG5cdFx0XHRcdFx0YWNjdW11bGF0b3Jba2V5XSA9IHZhbHVlO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXG5cdFx0XHRcdGlmIChhY2N1bXVsYXRvcltrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRhY2N1bXVsYXRvcltrZXldID0gW3ZhbHVlXTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHRhY2N1bXVsYXRvcltrZXldID0gW10uY29uY2F0KGFjY3VtdWxhdG9yW2tleV0sIHZhbHVlKTtcblx0XHRcdH07XG5cblx0XHRjYXNlICdjb21tYSc6XG5cdFx0Y2FzZSAnc2VwYXJhdG9yJzpcblx0XHRcdHJldHVybiAoa2V5LCB2YWx1ZSwgYWNjdW11bGF0b3IpID0+IHtcblx0XHRcdFx0Y29uc3QgaXNBcnJheSA9IHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUuaW5jbHVkZXMob3B0aW9ucy5hcnJheUZvcm1hdFNlcGFyYXRvcik7XG5cdFx0XHRcdGNvbnN0IGlzRW5jb2RlZEFycmF5ID0gKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgIWlzQXJyYXkgJiYgZGVjb2RlKHZhbHVlLCBvcHRpb25zKS5pbmNsdWRlcyhvcHRpb25zLmFycmF5Rm9ybWF0U2VwYXJhdG9yKSk7XG5cdFx0XHRcdHZhbHVlID0gaXNFbmNvZGVkQXJyYXkgPyBkZWNvZGUodmFsdWUsIG9wdGlvbnMpIDogdmFsdWU7XG5cdFx0XHRcdGNvbnN0IG5ld1ZhbHVlID0gaXNBcnJheSB8fCBpc0VuY29kZWRBcnJheSA/IHZhbHVlLnNwbGl0KG9wdGlvbnMuYXJyYXlGb3JtYXRTZXBhcmF0b3IpLm1hcChpdGVtID0+IGRlY29kZShpdGVtLCBvcHRpb25zKSkgOiB2YWx1ZSA9PT0gbnVsbCA/IHZhbHVlIDogZGVjb2RlKHZhbHVlLCBvcHRpb25zKTtcblx0XHRcdFx0YWNjdW11bGF0b3Jba2V5XSA9IG5ld1ZhbHVlO1xuXHRcdFx0fTtcblxuXHRcdGRlZmF1bHQ6XG5cdFx0XHRyZXR1cm4gKGtleSwgdmFsdWUsIGFjY3VtdWxhdG9yKSA9PiB7XG5cdFx0XHRcdGlmIChhY2N1bXVsYXRvcltrZXldID09PSB1bmRlZmluZWQpIHtcblx0XHRcdFx0XHRhY2N1bXVsYXRvcltrZXldID0gdmFsdWU7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0YWNjdW11bGF0b3Jba2V5XSA9IFtdLmNvbmNhdChhY2N1bXVsYXRvcltrZXldLCB2YWx1ZSk7XG5cdFx0XHR9O1xuXHR9XG59XG5cbmZ1bmN0aW9uIHZhbGlkYXRlQXJyYXlGb3JtYXRTZXBhcmF0b3IodmFsdWUpIHtcblx0aWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ3N0cmluZycgfHwgdmFsdWUubGVuZ3RoICE9PSAxKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignYXJyYXlGb3JtYXRTZXBhcmF0b3IgbXVzdCBiZSBzaW5nbGUgY2hhcmFjdGVyIHN0cmluZycpO1xuXHR9XG59XG5cbmZ1bmN0aW9uIGVuY29kZSh2YWx1ZSwgb3B0aW9ucykge1xuXHRpZiAob3B0aW9ucy5lbmNvZGUpIHtcblx0XHRyZXR1cm4gb3B0aW9ucy5zdHJpY3QgPyBzdHJpY3RVcmlFbmNvZGUodmFsdWUpIDogZW5jb2RlVVJJQ29tcG9uZW50KHZhbHVlKTtcblx0fVxuXG5cdHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gZGVjb2RlKHZhbHVlLCBvcHRpb25zKSB7XG5cdGlmIChvcHRpb25zLmRlY29kZSkge1xuXHRcdHJldHVybiBkZWNvZGVDb21wb25lbnQodmFsdWUpO1xuXHR9XG5cblx0cmV0dXJuIHZhbHVlO1xufVxuXG5mdW5jdGlvbiBrZXlzU29ydGVyKGlucHV0KSB7XG5cdGlmIChBcnJheS5pc0FycmF5KGlucHV0KSkge1xuXHRcdHJldHVybiBpbnB1dC5zb3J0KCk7XG5cdH1cblxuXHRpZiAodHlwZW9mIGlucHV0ID09PSAnb2JqZWN0Jykge1xuXHRcdHJldHVybiBrZXlzU29ydGVyKE9iamVjdC5rZXlzKGlucHV0KSlcblx0XHRcdC5zb3J0KChhLCBiKSA9PiBOdW1iZXIoYSkgLSBOdW1iZXIoYikpXG5cdFx0XHQubWFwKGtleSA9PiBpbnB1dFtrZXldKTtcblx0fVxuXG5cdHJldHVybiBpbnB1dDtcbn1cblxuZnVuY3Rpb24gcmVtb3ZlSGFzaChpbnB1dCkge1xuXHRjb25zdCBoYXNoU3RhcnQgPSBpbnB1dC5pbmRleE9mKCcjJyk7XG5cdGlmIChoYXNoU3RhcnQgIT09IC0xKSB7XG5cdFx0aW5wdXQgPSBpbnB1dC5zbGljZSgwLCBoYXNoU3RhcnQpO1xuXHR9XG5cblx0cmV0dXJuIGlucHV0O1xufVxuXG5mdW5jdGlvbiBnZXRIYXNoKHVybCkge1xuXHRsZXQgaGFzaCA9ICcnO1xuXHRjb25zdCBoYXNoU3RhcnQgPSB1cmwuaW5kZXhPZignIycpO1xuXHRpZiAoaGFzaFN0YXJ0ICE9PSAtMSkge1xuXHRcdGhhc2ggPSB1cmwuc2xpY2UoaGFzaFN0YXJ0KTtcblx0fVxuXG5cdHJldHVybiBoYXNoO1xufVxuXG5mdW5jdGlvbiBleHRyYWN0KGlucHV0KSB7XG5cdGlucHV0ID0gcmVtb3ZlSGFzaChpbnB1dCk7XG5cdGNvbnN0IHF1ZXJ5U3RhcnQgPSBpbnB1dC5pbmRleE9mKCc/Jyk7XG5cdGlmIChxdWVyeVN0YXJ0ID09PSAtMSkge1xuXHRcdHJldHVybiAnJztcblx0fVxuXG5cdHJldHVybiBpbnB1dC5zbGljZShxdWVyeVN0YXJ0ICsgMSk7XG59XG5cbmZ1bmN0aW9uIHBhcnNlVmFsdWUodmFsdWUsIG9wdGlvbnMpIHtcblx0aWYgKG9wdGlvbnMucGFyc2VOdW1iZXJzICYmICFOdW1iZXIuaXNOYU4oTnVtYmVyKHZhbHVlKSkgJiYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgJiYgdmFsdWUudHJpbSgpICE9PSAnJykpIHtcblx0XHR2YWx1ZSA9IE51bWJlcih2YWx1ZSk7XG5cdH0gZWxzZSBpZiAob3B0aW9ucy5wYXJzZUJvb2xlYW5zICYmIHZhbHVlICE9PSBudWxsICYmICh2YWx1ZS50b0xvd2VyQ2FzZSgpID09PSAndHJ1ZScgfHwgdmFsdWUudG9Mb3dlckNhc2UoKSA9PT0gJ2ZhbHNlJykpIHtcblx0XHR2YWx1ZSA9IHZhbHVlLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJztcblx0fVxuXG5cdHJldHVybiB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gcGFyc2UocXVlcnksIG9wdGlvbnMpIHtcblx0b3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oe1xuXHRcdGRlY29kZTogdHJ1ZSxcblx0XHRzb3J0OiB0cnVlLFxuXHRcdGFycmF5Rm9ybWF0OiAnbm9uZScsXG5cdFx0YXJyYXlGb3JtYXRTZXBhcmF0b3I6ICcsJyxcblx0XHRwYXJzZU51bWJlcnM6IGZhbHNlLFxuXHRcdHBhcnNlQm9vbGVhbnM6IGZhbHNlXG5cdH0sIG9wdGlvbnMpO1xuXG5cdHZhbGlkYXRlQXJyYXlGb3JtYXRTZXBhcmF0b3Iob3B0aW9ucy5hcnJheUZvcm1hdFNlcGFyYXRvcik7XG5cblx0Y29uc3QgZm9ybWF0dGVyID0gcGFyc2VyRm9yQXJyYXlGb3JtYXQob3B0aW9ucyk7XG5cblx0Ly8gQ3JlYXRlIGFuIG9iamVjdCB3aXRoIG5vIHByb3RvdHlwZVxuXHRjb25zdCByZXQgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuXG5cdGlmICh0eXBlb2YgcXVlcnkgIT09ICdzdHJpbmcnKSB7XG5cdFx0cmV0dXJuIHJldDtcblx0fVxuXG5cdHF1ZXJ5ID0gcXVlcnkudHJpbSgpLnJlcGxhY2UoL15bPyMmXS8sICcnKTtcblxuXHRpZiAoIXF1ZXJ5KSB7XG5cdFx0cmV0dXJuIHJldDtcblx0fVxuXG5cdGZvciAoY29uc3QgcGFyYW0gb2YgcXVlcnkuc3BsaXQoJyYnKSkge1xuXHRcdGlmIChwYXJhbSA9PT0gJycpIHtcblx0XHRcdGNvbnRpbnVlO1xuXHRcdH1cblxuXHRcdGxldCBba2V5LCB2YWx1ZV0gPSBzcGxpdE9uRmlyc3Qob3B0aW9ucy5kZWNvZGUgPyBwYXJhbS5yZXBsYWNlKC9cXCsvZywgJyAnKSA6IHBhcmFtLCAnPScpO1xuXG5cdFx0Ly8gTWlzc2luZyBgPWAgc2hvdWxkIGJlIGBudWxsYDpcblx0XHQvLyBodHRwOi8vdzMub3JnL1RSLzIwMTIvV0QtdXJsLTIwMTIwNTI0LyNjb2xsZWN0LXVybC1wYXJhbWV0ZXJzXG5cdFx0dmFsdWUgPSB2YWx1ZSA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IFsnY29tbWEnLCAnc2VwYXJhdG9yJ10uaW5jbHVkZXMob3B0aW9ucy5hcnJheUZvcm1hdCkgPyB2YWx1ZSA6IGRlY29kZSh2YWx1ZSwgb3B0aW9ucyk7XG5cdFx0Zm9ybWF0dGVyKGRlY29kZShrZXksIG9wdGlvbnMpLCB2YWx1ZSwgcmV0KTtcblx0fVxuXG5cdGZvciAoY29uc3Qga2V5IG9mIE9iamVjdC5rZXlzKHJldCkpIHtcblx0XHRjb25zdCB2YWx1ZSA9IHJldFtrZXldO1xuXHRcdGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICE9PSBudWxsKSB7XG5cdFx0XHRmb3IgKGNvbnN0IGsgb2YgT2JqZWN0LmtleXModmFsdWUpKSB7XG5cdFx0XHRcdHZhbHVlW2tdID0gcGFyc2VWYWx1ZSh2YWx1ZVtrXSwgb3B0aW9ucyk7XG5cdFx0XHR9XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJldFtrZXldID0gcGFyc2VWYWx1ZSh2YWx1ZSwgb3B0aW9ucyk7XG5cdFx0fVxuXHR9XG5cblx0aWYgKG9wdGlvbnMuc29ydCA9PT0gZmFsc2UpIHtcblx0XHRyZXR1cm4gcmV0O1xuXHR9XG5cblx0cmV0dXJuIChvcHRpb25zLnNvcnQgPT09IHRydWUgPyBPYmplY3Qua2V5cyhyZXQpLnNvcnQoKSA6IE9iamVjdC5rZXlzKHJldCkuc29ydChvcHRpb25zLnNvcnQpKS5yZWR1Y2UoKHJlc3VsdCwga2V5KSA9PiB7XG5cdFx0Y29uc3QgdmFsdWUgPSByZXRba2V5XTtcblx0XHRpZiAoQm9vbGVhbih2YWx1ZSkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiAhQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdC8vIFNvcnQgb2JqZWN0IGtleXMsIG5vdCB2YWx1ZXNcblx0XHRcdHJlc3VsdFtrZXldID0ga2V5c1NvcnRlcih2YWx1ZSk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdHJlc3VsdFtrZXldID0gdmFsdWU7XG5cdFx0fVxuXG5cdFx0cmV0dXJuIHJlc3VsdDtcblx0fSwgT2JqZWN0LmNyZWF0ZShudWxsKSk7XG59XG5cbmV4cG9ydHMuZXh0cmFjdCA9IGV4dHJhY3Q7XG5leHBvcnRzLnBhcnNlID0gcGFyc2U7XG5cbmV4cG9ydHMuc3RyaW5naWZ5ID0gKG9iamVjdCwgb3B0aW9ucykgPT4ge1xuXHRpZiAoIW9iamVjdCkge1xuXHRcdHJldHVybiAnJztcblx0fVxuXG5cdG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcblx0XHRlbmNvZGU6IHRydWUsXG5cdFx0c3RyaWN0OiB0cnVlLFxuXHRcdGFycmF5Rm9ybWF0OiAnbm9uZScsXG5cdFx0YXJyYXlGb3JtYXRTZXBhcmF0b3I6ICcsJ1xuXHR9LCBvcHRpb25zKTtcblxuXHR2YWxpZGF0ZUFycmF5Rm9ybWF0U2VwYXJhdG9yKG9wdGlvbnMuYXJyYXlGb3JtYXRTZXBhcmF0b3IpO1xuXG5cdGNvbnN0IHNob3VsZEZpbHRlciA9IGtleSA9PiAoXG5cdFx0KG9wdGlvbnMuc2tpcE51bGwgJiYgaXNOdWxsT3JVbmRlZmluZWQob2JqZWN0W2tleV0pKSB8fFxuXHRcdChvcHRpb25zLnNraXBFbXB0eVN0cmluZyAmJiBvYmplY3Rba2V5XSA9PT0gJycpXG5cdCk7XG5cblx0Y29uc3QgZm9ybWF0dGVyID0gZW5jb2RlckZvckFycmF5Rm9ybWF0KG9wdGlvbnMpO1xuXG5cdGNvbnN0IG9iamVjdENvcHkgPSB7fTtcblxuXHRmb3IgKGNvbnN0IGtleSBvZiBPYmplY3Qua2V5cyhvYmplY3QpKSB7XG5cdFx0aWYgKCFzaG91bGRGaWx0ZXIoa2V5KSkge1xuXHRcdFx0b2JqZWN0Q29weVtrZXldID0gb2JqZWN0W2tleV07XG5cdFx0fVxuXHR9XG5cblx0Y29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKG9iamVjdENvcHkpO1xuXG5cdGlmIChvcHRpb25zLnNvcnQgIT09IGZhbHNlKSB7XG5cdFx0a2V5cy5zb3J0KG9wdGlvbnMuc29ydCk7XG5cdH1cblxuXHRyZXR1cm4ga2V5cy5tYXAoa2V5ID0+IHtcblx0XHRjb25zdCB2YWx1ZSA9IG9iamVjdFtrZXldO1xuXG5cdFx0aWYgKHZhbHVlID09PSB1bmRlZmluZWQpIHtcblx0XHRcdHJldHVybiAnJztcblx0XHR9XG5cblx0XHRpZiAodmFsdWUgPT09IG51bGwpIHtcblx0XHRcdHJldHVybiBlbmNvZGUoa2V5LCBvcHRpb25zKTtcblx0XHR9XG5cblx0XHRpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcblx0XHRcdHJldHVybiB2YWx1ZVxuXHRcdFx0XHQucmVkdWNlKGZvcm1hdHRlcihrZXkpLCBbXSlcblx0XHRcdFx0LmpvaW4oJyYnKTtcblx0XHR9XG5cblx0XHRyZXR1cm4gZW5jb2RlKGtleSwgb3B0aW9ucykgKyAnPScgKyBlbmNvZGUodmFsdWUsIG9wdGlvbnMpO1xuXHR9KS5maWx0ZXIoeCA9PiB4Lmxlbmd0aCA+IDApLmpvaW4oJyYnKTtcbn07XG5cbmV4cG9ydHMucGFyc2VVcmwgPSAodXJsLCBvcHRpb25zKSA9PiB7XG5cdG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcblx0XHRkZWNvZGU6IHRydWVcblx0fSwgb3B0aW9ucyk7XG5cblx0Y29uc3QgW3VybF8sIGhhc2hdID0gc3BsaXRPbkZpcnN0KHVybCwgJyMnKTtcblxuXHRyZXR1cm4gT2JqZWN0LmFzc2lnbihcblx0XHR7XG5cdFx0XHR1cmw6IHVybF8uc3BsaXQoJz8nKVswXSB8fCAnJyxcblx0XHRcdHF1ZXJ5OiBwYXJzZShleHRyYWN0KHVybCksIG9wdGlvbnMpXG5cdFx0fSxcblx0XHRvcHRpb25zICYmIG9wdGlvbnMucGFyc2VGcmFnbWVudElkZW50aWZpZXIgJiYgaGFzaCA/IHtmcmFnbWVudElkZW50aWZpZXI6IGRlY29kZShoYXNoLCBvcHRpb25zKX0gOiB7fVxuXHQpO1xufTtcblxuZXhwb3J0cy5zdHJpbmdpZnlVcmwgPSAob2JqZWN0LCBvcHRpb25zKSA9PiB7XG5cdG9wdGlvbnMgPSBPYmplY3QuYXNzaWduKHtcblx0XHRlbmNvZGU6IHRydWUsXG5cdFx0c3RyaWN0OiB0cnVlXG5cdH0sIG9wdGlvbnMpO1xuXG5cdGNvbnN0IHVybCA9IHJlbW92ZUhhc2gob2JqZWN0LnVybCkuc3BsaXQoJz8nKVswXSB8fCAnJztcblx0Y29uc3QgcXVlcnlGcm9tVXJsID0gZXhwb3J0cy5leHRyYWN0KG9iamVjdC51cmwpO1xuXHRjb25zdCBwYXJzZWRRdWVyeUZyb21VcmwgPSBleHBvcnRzLnBhcnNlKHF1ZXJ5RnJvbVVybCwge3NvcnQ6IGZhbHNlfSk7XG5cblx0Y29uc3QgcXVlcnkgPSBPYmplY3QuYXNzaWduKHBhcnNlZFF1ZXJ5RnJvbVVybCwgb2JqZWN0LnF1ZXJ5KTtcblx0bGV0IHF1ZXJ5U3RyaW5nID0gZXhwb3J0cy5zdHJpbmdpZnkocXVlcnksIG9wdGlvbnMpO1xuXHRpZiAocXVlcnlTdHJpbmcpIHtcblx0XHRxdWVyeVN0cmluZyA9IGA/JHtxdWVyeVN0cmluZ31gO1xuXHR9XG5cblx0bGV0IGhhc2ggPSBnZXRIYXNoKG9iamVjdC51cmwpO1xuXHRpZiAob2JqZWN0LmZyYWdtZW50SWRlbnRpZmllcikge1xuXHRcdGhhc2ggPSBgIyR7ZW5jb2RlKG9iamVjdC5mcmFnbWVudElkZW50aWZpZXIsIG9wdGlvbnMpfWA7XG5cdH1cblxuXHRyZXR1cm4gYCR7dXJsfSR7cXVlcnlTdHJpbmd9JHtoYXNofWA7XG59O1xuXG5leHBvcnRzLnBpY2sgPSAoaW5wdXQsIGZpbHRlciwgb3B0aW9ucykgPT4ge1xuXHRvcHRpb25zID0gT2JqZWN0LmFzc2lnbih7XG5cdFx0cGFyc2VGcmFnbWVudElkZW50aWZpZXI6IHRydWVcblx0fSwgb3B0aW9ucyk7XG5cblx0Y29uc3Qge3VybCwgcXVlcnksIGZyYWdtZW50SWRlbnRpZmllcn0gPSBleHBvcnRzLnBhcnNlVXJsKGlucHV0LCBvcHRpb25zKTtcblx0cmV0dXJuIGV4cG9ydHMuc3RyaW5naWZ5VXJsKHtcblx0XHR1cmwsXG5cdFx0cXVlcnk6IGZpbHRlck9iamVjdChxdWVyeSwgZmlsdGVyKSxcblx0XHRmcmFnbWVudElkZW50aWZpZXJcblx0fSwgb3B0aW9ucyk7XG59O1xuXG5leHBvcnRzLmV4Y2x1ZGUgPSAoaW5wdXQsIGZpbHRlciwgb3B0aW9ucykgPT4ge1xuXHRjb25zdCBleGNsdXNpb25GaWx0ZXIgPSBBcnJheS5pc0FycmF5KGZpbHRlcikgPyBrZXkgPT4gIWZpbHRlci5pbmNsdWRlcyhrZXkpIDogKGtleSwgdmFsdWUpID0+ICFmaWx0ZXIoa2V5LCB2YWx1ZSk7XG5cblx0cmV0dXJuIGV4cG9ydHMucGljayhpbnB1dCwgZXhjbHVzaW9uRmlsdGVyLCBvcHRpb25zKTtcbn07XG4iLCJpbXBvcnQgcmF4QXBwUmVuZGVyZXIgZnJvbSAnLi9yZW5kZXJlcic7XG5leHBvcnQgKiBmcm9tICcuL2luaXRpYWxEYXRhJztcbmV4cG9ydCBkZWZhdWx0IHJheEFwcFJlbmRlcmVyO1xuIiwidmFyIF9faW5pdGlhbERhdGFfXztcbmV4cG9ydCBmdW5jdGlvbiBzZXRJbml0aWFsRGF0YShpbml0aWFsRGF0YSkge1xuICAgIF9faW5pdGlhbERhdGFfXyA9IGluaXRpYWxEYXRhO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldEluaXRpYWxEYXRhKCkge1xuICAgIHJldHVybiBfX2luaXRpYWxEYXRhX187XG59XG4iLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoc2VhcmNoKSB7XG4gICAgdmFyIHJlc3VsdHMgPSBzZWFyY2guc3Vic3RyKDEpLnNwbGl0KCcmJyk7XG4gICAgdmFyIHF1ZXJ5ID0ge307XG4gICAgcmVzdWx0cy5mb3JFYWNoKGZ1bmN0aW9uIChyZXN1bHQpIHtcbiAgICAgICAgdmFyIF9hID0gcmVzdWx0LnNwbGl0KCc9JyksIGtleSA9IF9hWzBdLCB2YWx1ZSA9IF9hWzFdO1xuICAgICAgICBxdWVyeVtrZXldID0gdmFsdWU7XG4gICAgfSk7XG4gICAgcmV0dXJuIHF1ZXJ5O1xufVxuIiwidmFyIF9fYXNzaWduID0gKHRoaXMgJiYgdGhpcy5fX2Fzc2lnbikgfHwgZnVuY3Rpb24gKCkge1xuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xuICAgICAgICAgICAgcyA9IGFyZ3VtZW50c1tpXTtcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdDtcbiAgICB9O1xuICAgIHJldHVybiBfX2Fzc2lnbi5hcHBseSh0aGlzLCBhcmd1bWVudHMpO1xufTtcbnZhciBfX2F3YWl0ZXIgPSAodGhpcyAmJiB0aGlzLl9fYXdhaXRlcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIF9hcmd1bWVudHMsIFAsIGdlbmVyYXRvcikge1xuICAgIGZ1bmN0aW9uIGFkb3B0KHZhbHVlKSB7IHJldHVybiB2YWx1ZSBpbnN0YW5jZW9mIFAgPyB2YWx1ZSA6IG5ldyBQKGZ1bmN0aW9uIChyZXNvbHZlKSB7IHJlc29sdmUodmFsdWUpOyB9KTsgfVxuICAgIHJldHVybiBuZXcgKFAgfHwgKFAgPSBQcm9taXNlKSkoZnVuY3Rpb24gKHJlc29sdmUsIHJlamVjdCkge1xuICAgICAgICBmdW5jdGlvbiBmdWxmaWxsZWQodmFsdWUpIHsgdHJ5IHsgc3RlcChnZW5lcmF0b3IubmV4dCh2YWx1ZSkpOyB9IGNhdGNoIChlKSB7IHJlamVjdChlKTsgfSB9XG4gICAgICAgIGZ1bmN0aW9uIHJlamVjdGVkKHZhbHVlKSB7IHRyeSB7IHN0ZXAoZ2VuZXJhdG9yW1widGhyb3dcIl0odmFsdWUpKTsgfSBjYXRjaCAoZSkgeyByZWplY3QoZSk7IH0gfVxuICAgICAgICBmdW5jdGlvbiBzdGVwKHJlc3VsdCkgeyByZXN1bHQuZG9uZSA/IHJlc29sdmUocmVzdWx0LnZhbHVlKSA6IGFkb3B0KHJlc3VsdC52YWx1ZSkudGhlbihmdWxmaWxsZWQsIHJlamVjdGVkKTsgfVxuICAgICAgICBzdGVwKChnZW5lcmF0b3IgPSBnZW5lcmF0b3IuYXBwbHkodGhpc0FyZywgX2FyZ3VtZW50cyB8fCBbXSkpLm5leHQoKSk7XG4gICAgfSk7XG59O1xudmFyIF9fZ2VuZXJhdG9yID0gKHRoaXMgJiYgdGhpcy5fX2dlbmVyYXRvcikgfHwgZnVuY3Rpb24gKHRoaXNBcmcsIGJvZHkpIHtcbiAgICB2YXIgXyA9IHsgbGFiZWw6IDAsIHNlbnQ6IGZ1bmN0aW9uKCkgeyBpZiAodFswXSAmIDEpIHRocm93IHRbMV07IHJldHVybiB0WzFdOyB9LCB0cnlzOiBbXSwgb3BzOiBbXSB9LCBmLCB5LCB0LCBnO1xuICAgIHJldHVybiBnID0geyBuZXh0OiB2ZXJiKDApLCBcInRocm93XCI6IHZlcmIoMSksIFwicmV0dXJuXCI6IHZlcmIoMikgfSwgdHlwZW9mIFN5bWJvbCA9PT0gXCJmdW5jdGlvblwiICYmIChnW1N5bWJvbC5pdGVyYXRvcl0gPSBmdW5jdGlvbigpIHsgcmV0dXJuIHRoaXM7IH0pLCBnO1xuICAgIGZ1bmN0aW9uIHZlcmIobikgeyByZXR1cm4gZnVuY3Rpb24gKHYpIHsgcmV0dXJuIHN0ZXAoW24sIHZdKTsgfTsgfVxuICAgIGZ1bmN0aW9uIHN0ZXAob3ApIHtcbiAgICAgICAgaWYgKGYpIHRocm93IG5ldyBUeXBlRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBleGVjdXRpbmcuXCIpO1xuICAgICAgICB3aGlsZSAoXykgdHJ5IHtcbiAgICAgICAgICAgIGlmIChmID0gMSwgeSAmJiAodCA9IG9wWzBdICYgMiA/IHlbXCJyZXR1cm5cIl0gOiBvcFswXSA/IHlbXCJ0aHJvd1wiXSB8fCAoKHQgPSB5W1wicmV0dXJuXCJdKSAmJiB0LmNhbGwoeSksIDApIDogeS5uZXh0KSAmJiAhKHQgPSB0LmNhbGwoeSwgb3BbMV0pKS5kb25lKSByZXR1cm4gdDtcbiAgICAgICAgICAgIGlmICh5ID0gMCwgdCkgb3AgPSBbb3BbMF0gJiAyLCB0LnZhbHVlXTtcbiAgICAgICAgICAgIHN3aXRjaCAob3BbMF0pIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6IGNhc2UgMTogdCA9IG9wOyBicmVhaztcbiAgICAgICAgICAgICAgICBjYXNlIDQ6IF8ubGFiZWwrKzsgcmV0dXJuIHsgdmFsdWU6IG9wWzFdLCBkb25lOiBmYWxzZSB9O1xuICAgICAgICAgICAgICAgIGNhc2UgNTogXy5sYWJlbCsrOyB5ID0gb3BbMV07IG9wID0gWzBdOyBjb250aW51ZTtcbiAgICAgICAgICAgICAgICBjYXNlIDc6IG9wID0gXy5vcHMucG9wKCk7IF8udHJ5cy5wb3AoKTsgY29udGludWU7XG4gICAgICAgICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgICAgICAgICAgaWYgKCEodCA9IF8udHJ5cywgdCA9IHQubGVuZ3RoID4gMCAmJiB0W3QubGVuZ3RoIC0gMV0pICYmIChvcFswXSA9PT0gNiB8fCBvcFswXSA9PT0gMikpIHsgXyA9IDA7IGNvbnRpbnVlOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gMyAmJiAoIXQgfHwgKG9wWzFdID4gdFswXSAmJiBvcFsxXSA8IHRbM10pKSkgeyBfLmxhYmVsID0gb3BbMV07IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChvcFswXSA9PT0gNiAmJiBfLmxhYmVsIDwgdFsxXSkgeyBfLmxhYmVsID0gdFsxXTsgdCA9IG9wOyBicmVhazsgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodCAmJiBfLmxhYmVsIDwgdFsyXSkgeyBfLmxhYmVsID0gdFsyXTsgXy5vcHMucHVzaChvcCk7IGJyZWFrOyB9XG4gICAgICAgICAgICAgICAgICAgIGlmICh0WzJdKSBfLm9wcy5wb3AoKTtcbiAgICAgICAgICAgICAgICAgICAgXy50cnlzLnBvcCgpOyBjb250aW51ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIG9wID0gYm9keS5jYWxsKHRoaXNBcmcsIF8pO1xuICAgICAgICB9IGNhdGNoIChlKSB7IG9wID0gWzYsIGVdOyB5ID0gMDsgfSBmaW5hbGx5IHsgZiA9IHQgPSAwOyB9XG4gICAgICAgIGlmIChvcFswXSAmIDUpIHRocm93IG9wWzFdOyByZXR1cm4geyB2YWx1ZTogb3BbMF0gPyBvcFsxXSA6IHZvaWQgMCwgZG9uZTogdHJ1ZSB9O1xuICAgIH1cbn07XG4vKiBlc2xpbnQtZGlzYWJsZSAqL1xuaW1wb3J0IHsgcmVuZGVyLCBjcmVhdGVFbGVtZW50LCB1c2VTdGF0ZSwgRnJhZ21lbnQsIHVzZUxheW91dEVmZmVjdCwgdXNlRWZmZWN0IH0gZnJvbSAncmF4JztcbmltcG9ydCB7IGNyZWF0ZVVzZVJvdXRlciB9IGZyb20gJ2NyZWF0ZS11c2Utcm91dGVyJztcbmltcG9ydCB7IGlzV2ViLCBpc1dlZXgsIGlzS3Jha2VuLCBpc05vZGUgfSBmcm9tICd1bml2ZXJzYWwtZW52JztcbmltcG9ydCBVbml2ZXJzYWxEcml2ZXIgZnJvbSAnZHJpdmVyLXVuaXZlcnNhbCc7XG5pbXBvcnQgeyBzZXRJbml0aWFsRGF0YSB9IGZyb20gJy4vaW5pdGlhbERhdGEnO1xuaW1wb3J0IHBhcnNlU2VhcmNoIGZyb20gJy4vcGFyc2VTZWFyY2gnO1xudmFyIHVzZVJvdXRlciA9IGNyZWF0ZVVzZVJvdXRlcih7IHVzZVN0YXRlOiB1c2VTdGF0ZSwgdXNlTGF5b3V0RWZmZWN0OiB1c2VMYXlvdXRFZmZlY3QgfSk7XG52YXIgdGFiQmFyQ2FjaGUgPSB7fTtcbnZhciBkcml2ZXIgPSBVbml2ZXJzYWxEcml2ZXI7XG52YXIgQXBwVGFiQmFyO1xuZnVuY3Rpb24gX2lzTnVsbGFibGVDb21wb25lbnQoY29tcG9uZW50KSB7XG4gICAgcmV0dXJuICFjb21wb25lbnQgfHwgKEFycmF5LmlzQXJyYXkoY29tcG9uZW50KSAmJiBjb21wb25lbnQubGVuZ3RoID09PSAwKTtcbn1cbmZ1bmN0aW9uIF9tYXRjaEluaXRpYWxDb21wb25lbnQoZnVsbHBhdGgsIHJvdXRlcykge1xuICAgIHZhciBpbml0aWFsQ29tcG9uZW50ID0gbnVsbDtcbiAgICBmb3IgKHZhciBpID0gMCwgbCA9IHJvdXRlcy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgaWYgKGZ1bGxwYXRoID09PSByb3V0ZXNbaV0ucGF0aCB8fCAocm91dGVzW2ldLnJlZ2V4cCAmJiByb3V0ZXNbaV0ucmVnZXhwLnRlc3QoZnVsbHBhdGgpKSkge1xuICAgICAgICAgICAgaW5pdGlhbENvbXBvbmVudCA9IHJvdXRlc1tpXS5jb21wb25lbnQ7XG4gICAgICAgICAgICBpZiAodHlwZW9mIGluaXRpYWxDb21wb25lbnQgPT09ICdmdW5jdGlvbicpXG4gICAgICAgICAgICAgICAgaW5pdGlhbENvbXBvbmVudCA9IGluaXRpYWxDb21wb25lbnQoKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUoaW5pdGlhbENvbXBvbmVudCk7XG59XG5mdW5jdGlvbiBjaGVja05lZWRUYWJCYXIoc3RhdGljQ29uZmlnLCBoaXN0b3J5KSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBjdXJyZW50ID0gaGlzdG9yeS5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICBpZiAodGFiQmFyQ2FjaGVbY3VycmVudF0gIT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRhYkJhckNhY2hlW2N1cnJlbnRdO1xuICAgIHJldHVybiAodGFiQmFyQ2FjaGVbY3VycmVudF0gPVxuICAgICAgICBBcHBUYWJCYXIgIT09IHVuZGVmaW5lZCAmJiAoKF9hID0gc3RhdGljQ29uZmlnLnRhYkJhcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLml0ZW1zLnNvbWUoZnVuY3Rpb24gKF9hKSB7XG4gICAgICAgICAgICB2YXIgcGFnZU5hbWUgPSBfYS5wYWdlTmFtZSwgcGF0aCA9IF9hLnBhdGg7XG4gICAgICAgICAgICBpZiAoIXBhZ2VOYW1lKSB7XG4gICAgICAgICAgICAgICAgcGFnZU5hbWUgPSBwYXRoO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIHBhZ2VOYW1lID09PSBjdXJyZW50O1xuICAgICAgICB9KSkpO1xufVxuZnVuY3Rpb24gVGFiQmFyV3JhcHBlcihfYSkge1xuICAgIHZhciBoaXN0b3J5ID0gX2EuaGlzdG9yeSwgdGFiQmFyQ29uZmlnID0gX2EudGFiQmFyQ29uZmlnLCBjaGlsZHJlbiA9IF9hLmNoaWxkcmVuO1xuICAgIHZhciBfYiA9IHVzZVN0YXRlKGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUpLCBjdXJyZW50UGFnZU5hbWUgPSBfYlswXSwgc2V0Q3VycmVudFBhZ2VOYW1lID0gX2JbMV07XG4gICAgLy8gTGlzdGVuIGhpc3RvcnkgcGF0aG5hbWUgY2hhbmdlXG4gICAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIHVuTGlzdGVuID0gaGlzdG9yeS5saXN0ZW4oZnVuY3Rpb24gKGxvY2F0aW9uKSB7XG4gICAgICAgICAgICBzZXRDdXJyZW50UGFnZU5hbWUobG9jYXRpb24ucGF0aG5hbWUpO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gcmVtb3ZlIGxpc3RlbmVyXG4gICAgICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB1bkxpc3RlbigpO1xuICAgICAgICB9O1xuICAgIH0sIFtdKTtcbiAgICB2YXIgdGFiQmFyUHJvcHMgPSB7XG4gICAgICAgIGNvbmZpZzogdGFiQmFyQ29uZmlnLFxuICAgICAgICBjdXJyZW50UGFnZU5hbWU6IGN1cnJlbnRQYWdlTmFtZSxcbiAgICAgICAgb25DbGljazogZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgICAgIGhpc3RvcnkucHVzaChpdGVtLnBhZ2VOYW1lKTtcbiAgICAgICAgfSxcbiAgICB9O1xuICAgIHJldHVybiAoY3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCxcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIGNyZWF0ZUVsZW1lbnQoQXBwVGFiQmFyLCBfX2Fzc2lnbih7fSwgdGFiQmFyUHJvcHMpKSkpO1xufVxuZnVuY3Rpb24gQXBwKHByb3BzKSB7XG4gICAgdmFyIHN0YXRpY0NvbmZpZyA9IHByb3BzLnN0YXRpY0NvbmZpZywgaGlzdG9yeSA9IHByb3BzLmhpc3RvcnksIHJvdXRlcyA9IHByb3BzLnJvdXRlcywgSW5pdGlhbENvbXBvbmVudCA9IHByb3BzLkluaXRpYWxDb21wb25lbnQsIHBhZ2VJbml0aWFsUHJvcHMgPSBwcm9wcy5wYWdlSW5pdGlhbFByb3BzO1xuICAgIHZhciBQYWdlQ29tcG9uZW50O1xuICAgIGlmIChpc05vZGUpIHtcbiAgICAgICAgUGFnZUNvbXBvbmVudCA9IEluaXRpYWxDb21wb25lbnQ7XG4gICAgfVxuICAgIGVsc2Uge1xuICAgICAgICBQYWdlQ29tcG9uZW50ID0gdXNlUm91dGVyKHsgaGlzdG9yeTogaGlzdG9yeSwgcm91dGVzOiByb3V0ZXMsIEluaXRpYWxDb21wb25lbnQ6IEluaXRpYWxDb21wb25lbnQgfSkuY29tcG9uZW50O1xuICAgIH1cbiAgICAvLyBSZXR1cm4gbnVsbCBkaXJlY3RseSBpZiBub3QgbWF0Y2hlZFxuICAgIGlmIChfaXNOdWxsYWJsZUNvbXBvbmVudChQYWdlQ29tcG9uZW50KSlcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgdmFyIHBhZ2VQcm9wcyA9IF9fYXNzaWduKHsgaGlzdG9yeTogaGlzdG9yeSwgbG9jYXRpb246IGhpc3RvcnkubG9jYXRpb24gfSwgcGFnZUluaXRpYWxQcm9wcyk7XG4gICAgLy8gQWRkIFRhYkJhclxuICAgIGlmIChjaGVja05lZWRUYWJCYXIoc3RhdGljQ29uZmlnLCBoaXN0b3J5KSkge1xuICAgICAgICByZXR1cm4gKGNyZWF0ZUVsZW1lbnQoVGFiQmFyV3JhcHBlciwgeyBoaXN0b3J5OiBoaXN0b3J5LCB0YWJCYXJDb25maWc6IHN0YXRpY0NvbmZpZy50YWJCYXIgfSxcbiAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoUGFnZUNvbXBvbmVudCwgX19hc3NpZ24oe30sIHBhZ2VQcm9wcykpKSk7XG4gICAgfVxuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KFBhZ2VDb21wb25lbnQsIF9fYXNzaWduKHt9LCBwYWdlUHJvcHMpKTtcbn1cbmZ1bmN0aW9uIHJheEFwcFJlbmRlcmVyKG9wdGlvbnMpIHtcbiAgICBpZiAoIW9wdGlvbnMuYXBwQ29uZmlnKSB7XG4gICAgICAgIG9wdGlvbnMuYXBwQ29uZmlnID0ge307XG4gICAgfVxuICAgIHZhciBhcHBDb25maWcgPSBvcHRpb25zLmFwcENvbmZpZywgc2V0QXBwQ29uZmlnID0gb3B0aW9ucy5zZXRBcHBDb25maWc7XG4gICAgc2V0QXBwQ29uZmlnKGFwcENvbmZpZyk7XG4gICAgaWYgKHByb2Nlc3MuZW52Ll9fSVNfU0VSVkVSX18pXG4gICAgICAgIHJldHVybjtcbiAgICByZW5kZXJJbkNsaWVudChvcHRpb25zKTtcbn1cbmZ1bmN0aW9uIHJlbmRlckluQ2xpZW50KG9wdGlvbnMpIHtcbiAgICB2YXIgX2EsIF9iO1xuICAgIHJldHVybiBfX2F3YWl0ZXIodGhpcywgdm9pZCAwLCB2b2lkIDAsIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdmFyIGFwcENvbmZpZywgYnVpbGRDb25maWcsIGNyZWF0ZUJhc2VBcHAsIGVtaXRMaWZlQ3ljbGVzLCBwYXRoUmVkaXJlY3QsIHN0YXRpY0NvbmZpZywgY29udGV4dCwgX2MsIHBhdGhuYW1lLCBzZWFyY2gsIHF1ZXJ5LCBpbml0aWFsQ29udGV4dF8xLCBfZCwgX2UsIHJ1bnRpbWUsIGFwcER5bmFtaWNDb25maWcsIGhpc3RvcnksIGluaXRpYWxDb250ZXh0LCByb3V0ZXM7XG4gICAgICAgIHZhciBfdGhpcyA9IHRoaXM7XG4gICAgICAgIHJldHVybiBfX2dlbmVyYXRvcih0aGlzLCBmdW5jdGlvbiAoX2YpIHtcbiAgICAgICAgICAgIHN3aXRjaCAoX2YubGFiZWwpIHtcbiAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgIGFwcENvbmZpZyA9IG9wdGlvbnMuYXBwQ29uZmlnLCBidWlsZENvbmZpZyA9IG9wdGlvbnMuYnVpbGRDb25maWcsIGNyZWF0ZUJhc2VBcHAgPSBvcHRpb25zLmNyZWF0ZUJhc2VBcHAsIGVtaXRMaWZlQ3ljbGVzID0gb3B0aW9ucy5lbWl0TGlmZUN5Y2xlcywgcGF0aFJlZGlyZWN0ID0gb3B0aW9ucy5wYXRoUmVkaXJlY3QsIHN0YXRpY0NvbmZpZyA9IG9wdGlvbnMuc3RhdGljQ29uZmlnO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0ID0ge307XG4gICAgICAgICAgICAgICAgICAgIGlmICghKChfYSA9IHdpbmRvdykgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLl9fSU5JVElBTF9EQVRBX18pKSByZXR1cm4gWzMgLypicmVhayovLCAxXTtcbiAgICAgICAgICAgICAgICAgICAgY29udGV4dC5pbml0aWFsRGF0YSA9IHdpbmRvdy5fX0lOSVRJQUxfREFUQV9fLmluaXRpYWxEYXRhO1xuICAgICAgICAgICAgICAgICAgICBjb250ZXh0LnBhZ2VJbml0aWFsUHJvcHMgPSB3aW5kb3cuX19JTklUSUFMX0RBVEFfXy5wYWdlSW5pdGlhbFByb3BzO1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzMgLypicmVhayovLCAzXTtcbiAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgIGlmICghKGlzV2ViICYmICgoX2IgPSBhcHBDb25maWcgPT09IG51bGwgfHwgYXBwQ29uZmlnID09PSB2b2lkIDAgPyB2b2lkIDAgOiBhcHBDb25maWcuYXBwKSA9PT0gbnVsbCB8fCBfYiA9PT0gdm9pZCAwID8gdm9pZCAwIDogX2IuZ2V0SW5pdGlhbERhdGEpKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgM107XG4gICAgICAgICAgICAgICAgICAgIF9jID0gd2luZG93LmxvY2F0aW9uLCBwYXRobmFtZSA9IF9jLnBhdGhuYW1lLCBzZWFyY2ggPSBfYy5zZWFyY2g7XG4gICAgICAgICAgICAgICAgICAgIHF1ZXJ5ID0gcGFyc2VTZWFyY2goc2VhcmNoKTtcbiAgICAgICAgICAgICAgICAgICAgaW5pdGlhbENvbnRleHRfMSA9IHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhuYW1lOiBwYXRobmFtZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSxcbiAgICAgICAgICAgICAgICAgICAgfTtcbiAgICAgICAgICAgICAgICAgICAgX2QgPSBjb250ZXh0O1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4gWzQgLyp5aWVsZCovLCBhcHBDb25maWcuYXBwLmdldEluaXRpYWxEYXRhKGluaXRpYWxDb250ZXh0XzEpXTtcbiAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgIF9kLmluaXRpYWxEYXRhID0gX2Yuc2VudCgpO1xuICAgICAgICAgICAgICAgICAgICBfZi5sYWJlbCA9IDM7XG4gICAgICAgICAgICAgICAgY2FzZSAzOlxuICAgICAgICAgICAgICAgICAgICBfZSA9IGNyZWF0ZUJhc2VBcHAoYXBwQ29uZmlnLCBidWlsZENvbmZpZywgY29udGV4dCksIHJ1bnRpbWUgPSBfZS5ydW50aW1lLCBhcHBEeW5hbWljQ29uZmlnID0gX2UuYXBwQ29uZmlnLCBoaXN0b3J5ID0gX2UuaGlzdG9yeTtcbiAgICAgICAgICAgICAgICAgICAgc2V0SW5pdGlhbERhdGEoY29udGV4dC5pbml0aWFsRGF0YSk7XG4gICAgICAgICAgICAgICAgICAgIGluaXRpYWxDb250ZXh0ID0ge1xuICAgICAgICAgICAgICAgICAgICAgICAgcGF0aG5hbWU6ICcnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcXVlcnk6IHt9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgICAgICAvLyBTZXQgY3VzdG9tIGRyaXZlclxuICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHN0YXRpY0NvbmZpZy5kcml2ZXIgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBkcml2ZXIgPSBzdGF0aWNDb25maWcuZHJpdmVyO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIHJvdXRlcyA9IHN0YXRpY0NvbmZpZy5yb3V0ZXM7XG4gICAgICAgICAgICAgICAgICAgIC8vIExpa2UgaHR0cHM6Ly94eHguY29tP19wYXRoPS9wYWdlMSwgdXNlIGBfcGF0aGAgdG8ganVtcCB0byBhIHNwZWNpZmljIHJvdXRlLlxuICAgICAgICAgICAgICAgICAgICBwYXRoUmVkaXJlY3QoaGlzdG9yeSwgcm91dGVzKTtcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIF9tYXRjaEluaXRpYWxDb21wb25lbnQoaGlzdG9yeS5sb2NhdGlvbi5wYXRobmFtZSwgcm91dGVzKS50aGVuKGZ1bmN0aW9uIChJbml0aWFsQ29tcG9uZW50KSB7IHJldHVybiBfX2F3YWl0ZXIoX3RoaXMsIHZvaWQgMCwgdm9pZCAwLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGluaXRpYWxDb21wb25lbnQsIF9hLCBwcm9wcywgX2IsIGFwcCwgcm9vdElkLCBhcHBJbnN0YW5jZSwgcm9vdEVsLCB3ZWJDb25maWc7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIF9fZ2VuZXJhdG9yKHRoaXMsIGZ1bmN0aW9uIChfYykge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKF9jLmxhYmVsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbENvbXBvbmVudCA9IEluaXRpYWxDb21wb25lbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISghY29udGV4dC5wYWdlSW5pdGlhbFByb3BzICYmIGluaXRpYWxDb21wb25lbnQuZ2V0SW5pdGlhbFByb3BzKSkgcmV0dXJuIFszIC8qYnJlYWsqLywgMl07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EgPSBjb250ZXh0O1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBbNCAvKnlpZWxkKi8sIGluaXRpYWxDb21wb25lbnQuZ2V0SW5pdGlhbFByb3BzKGluaXRpYWxDb250ZXh0KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2EucGFnZUluaXRpYWxQcm9wcyA9IF9jLnNlbnQoKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfYy5sYWJlbCA9IDI7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvcHMgPSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY0NvbmZpZzogc3RhdGljQ29uZmlnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaXN0b3J5OiBoaXN0b3J5LFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByb3V0ZXM6IHJvdXRlcyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW5pdGlhbENvbXBvbmVudDogSW5pdGlhbENvbXBvbmVudCxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFnZUluaXRpYWxQcm9wczogY29udGV4dC5wYWdlSW5pdGlhbFByb3BzLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX2IgPSBhcHBEeW5hbWljQ29uZmlnLmFwcCwgYXBwID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2I7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcm9vdElkID0gYXBwLnJvb3RJZDtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcHBJbnN0YW5jZSA9IGdldFJlbmRlckFwcEluc3RhbmNlKHJ1bnRpbWUsIHByb3BzLCBvcHRpb25zKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBFbWl0IGFwcCBsYXVuY2ggY3ljbGVcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbWl0TGlmZUN5Y2xlcygpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJvb3RFbCA9IGlzV2VleCB8fCBpc0tyYWtlbiA/IG51bGwgOiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChyb290SWQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChpc1dlYiAmJiByb290SWQgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignRXJyb3I6IENhbiBub3QgZmluZCAjcm9vdCBlbGVtZW50LCBwbGVhc2UgY2hlY2sgd2hpY2ggZXhpc3RzIGluIERPTS4nKTtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWJDb25maWcgPSBidWlsZENvbmZpZy53ZWIgfHwge307XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFsyIC8qcmV0dXJuKi8sIHJlbmRlcihhcHBJbnN0YW5jZSwgcm9vdEVsLCB7IGRyaXZlcjogZHJpdmVyLCBoeWRyYXRlOiB3ZWJDb25maWcuaHlkcmF0ZSB8fCB3ZWJDb25maWcuc25hcHNob3QgfHwgd2ViQ29uZmlnLnNzciB9KV07XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pOyB9KV07XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH0pO1xufVxuZXhwb3J0IGZ1bmN0aW9uIGdldFJlbmRlckFwcEluc3RhbmNlKHJ1bnRpbWUsIHByb3BzLCBvcHRpb25zKSB7XG4gICAgdmFyIF9hO1xuICAgIHZhciBFcnJvckJvdW5kYXJ5ID0gb3B0aW9ucy5FcnJvckJvdW5kYXJ5LCBUYWJCYXIgPSBvcHRpb25zLlRhYkJhciwgX2IgPSBvcHRpb25zLmFwcENvbmZpZywgYXBwQ29uZmlnID0gX2IgPT09IHZvaWQgMCA/IHt9IDogX2I7XG4gICAgdmFyIF9jID0gYXBwQ29uZmlnLmFwcCB8fCB7fSwgRXJyb3JCb3VuZGFyeUZhbGxiYWNrID0gX2MuRXJyb3JCb3VuZGFyeUZhbGxiYWNrLCBvbkVycm9yQm91bmRhcnlIYW5kZXIgPSBfYy5vbkVycm9yQm91bmRhcnlIYW5kZXIsIG9uRXJyb3JCb3VuZGFyeUhhbmRsZXIgPSBfYy5vbkVycm9yQm91bmRhcnlIYW5kbGVyLCBlcnJvckJvdW5kYXJ5ID0gX2MuZXJyb3JCb3VuZGFyeTtcbiAgICBBcHBUYWJCYXIgPSBUYWJCYXI7XG4gICAgdmFyIEFwcFByb3ZpZGVyID0gKF9hID0gcnVudGltZSA9PT0gbnVsbCB8fCBydW50aW1lID09PSB2b2lkIDAgPyB2b2lkIDAgOiBydW50aW1lLmNvbXBvc2VBcHBQcm92aWRlcikgPT09IG51bGwgfHwgX2EgPT09IHZvaWQgMCA/IHZvaWQgMCA6IF9hLmNhbGwocnVudGltZSk7XG4gICAgdmFyIFJvb3RDb21wb25lbnQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIGlmIChBcHBQcm92aWRlcikge1xuICAgICAgICAgICAgcmV0dXJuIChjcmVhdGVFbGVtZW50KEFwcFByb3ZpZGVyLCBudWxsLFxuICAgICAgICAgICAgICAgIGNyZWF0ZUVsZW1lbnQoQXBwLCBfX2Fzc2lnbih7fSwgcHJvcHMpKSkpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KEFwcCwgX19hc3NpZ24oe30sIHByb3BzKSk7XG4gICAgfTtcbiAgICB2YXIgUm9vdCA9IGNyZWF0ZUVsZW1lbnQoUm9vdENvbXBvbmVudCwgbnVsbCk7XG4gICAgaWYgKHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAnZGV2ZWxvcG1lbnQnKSB7XG4gICAgICAgIGlmIChvbkVycm9yQm91bmRhcnlIYW5kbGVyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdQbGVhc2UgdXNlIG9uRXJyb3JCb3VuZGFyeUhhbmRsZXIgaW5zdGVhZCBvZiBvbkVycm9yQm91bmRhcnlIYW5kZXInKTtcbiAgICAgICAgfVxuICAgIH1cbiAgICBpZiAoZXJyb3JCb3VuZGFyeSAmJiBFcnJvckJvdW5kYXJ5KSB7XG4gICAgICAgIHJldHVybiAoY3JlYXRlRWxlbWVudChFcnJvckJvdW5kYXJ5LCB7IEZhbGxiYWNrOiBFcnJvckJvdW5kYXJ5RmFsbGJhY2ssIG9uRXJyb3I6IG9uRXJyb3JCb3VuZGFyeUhhbmRsZXIgfHwgb25FcnJvckJvdW5kYXJ5SGFuZGVyIH0sIFJvb3QpKTtcbiAgICB9XG4gICAgZWxzZSB7XG4gICAgICAgIHJldHVybiBSb290O1xuICAgIH1cbn1cbmV4cG9ydCBkZWZhdWx0IHJheEFwcFJlbmRlcmVyO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XG4gICAgX19hc3NpZ24gPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uKHQpIHtcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xuICAgICAgICAgICAgZm9yICh2YXIgcCBpbiBzKSBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHMsIHApKVxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiB0O1xuICAgIH07XG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG59O1xuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xuZXhwb3J0cy5jcmVhdGVXaXRoUm91dGVyID0gZXhwb3J0cy5jcmVhdGVVc2VSb3V0ZXIgPSB2b2lkIDA7XG52YXIgcGF0aFRvUmVnZXhwTW9kdWxlID0gcmVxdWlyZShcInBhdGgtdG8tcmVnZXhwXCIpO1xudmFyIGNhY2hlID0ge307XG52YXIgcm91dGVyID0ge1xuICAgIGhpc3Rvcnk6IG51bGwsXG4gICAgaGFuZGxlczogW10sXG4gICAgZXJyb3JIYW5kbGVyOiBmdW5jdGlvbiAoKSB7IH0sXG4gICAgYWRkSGFuZGxlOiBmdW5jdGlvbiAoaGFuZGxlKSB7XG4gICAgICAgIHJldHVybiByb3V0ZXIuaGFuZGxlcy5wdXNoKGhhbmRsZSk7XG4gICAgfSxcbiAgICByZW1vdmVIYW5kbGU6IGZ1bmN0aW9uIChoYW5kbGVJZCkge1xuICAgICAgICByb3V0ZXIuaGFuZGxlc1toYW5kbGVJZCAtIDFdID0gbnVsbDtcbiAgICB9LFxuICAgIHRyaWdnZXJIYW5kbGVzOiBmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICAgIHJvdXRlci5oYW5kbGVzLmZvckVhY2goZnVuY3Rpb24gKGhhbmRsZSkge1xuICAgICAgICAgICAgaWYgKGhhbmRsZSkge1xuICAgICAgICAgICAgICAgIGhhbmRsZShjb21wb25lbnQpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9LFxuICAgIG1hdGNoOiBmdW5jdGlvbiAoZnVsbHBhdGgpIHtcbiAgICAgICAgaWYgKGZ1bGxwYXRoID09IG51bGwpXG4gICAgICAgICAgICByZXR1cm47XG4gICAgICAgIHJvdXRlci5mdWxscGF0aCA9IGZ1bGxwYXRoO1xuICAgICAgICB2YXIgcGFyZW50ID0gcm91dGVyLnJvb3Q7XG4gICAgICAgIC8vIEB0cy1pZ25vcmVcbiAgICAgICAgdmFyIG1hdGNoZWQgPSBtYXRjaFJvdXRlKHBhcmVudCwgcGFyZW50LnBhdGgsIGZ1bGxwYXRoKTtcbiAgICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgICAgIGZ1bmN0aW9uIG5leHQocGFyZW50KSB7XG4gICAgICAgICAgICB2YXIgY3VycmVudCA9IG1hdGNoZWQubmV4dCgpO1xuICAgICAgICAgICAgaWYgKGN1cnJlbnQuZG9uZSkge1xuICAgICAgICAgICAgICAgIHZhciBlcnJvciA9IG5ldyBFcnJvcihcIk5vIG1hdGNoIGZvciBcIiArIGZ1bGxwYXRoKTtcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICAgICAgcmV0dXJuIHJvdXRlci5lcnJvckhhbmRsZXIoZXJyb3IsIHJvdXRlci5oaXN0b3J5LmxvY2F0aW9uKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHZhciBjb21wb25lbnQgPSBjdXJyZW50LiQucm91dGUuY29tcG9uZW50O1xuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb21wb25lbnQgPT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgICAgICBjb21wb25lbnQgPSBjb21wb25lbnQoY3VycmVudC4kLnBhcmFtcywgcm91dGVyLmhpc3RvcnkubG9jYXRpb24pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKGNvbXBvbmVudCBpbnN0YW5jZW9mIFByb21pc2UpIHtcbiAgICAgICAgICAgICAgICAvLyBMYXp5IGxvYWRpbmcgY29tcG9uZW50IGJ5IGltcG9ydCgnLi9Gb28nKVxuICAgICAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgICAgIHJldHVybiBjb21wb25lbnQudGhlbihmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGN1cnJlbnQgZnVsbHBhdGggYXZvaWQgcm91dGVyIGhhcyBjaGFuZ2VkIGJlZm9yZSBsYXp5IGxvYWRpbmcgY29tcGxldGVcbiAgICAgICAgICAgICAgICAgICAgLy8gQHRzLWlnbm9yZVxuICAgICAgICAgICAgICAgICAgICBpZiAoZnVsbHBhdGggPT09IHJvdXRlci5mdWxscGF0aCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgcm91dGVyLnRyaWdnZXJIYW5kbGVzKGNvbXBvbmVudCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2UgaWYgKGNvbXBvbmVudCAhPSBudWxsKSB7XG4gICAgICAgICAgICAgICAgcm91dGVyLnRyaWdnZXJIYW5kbGVzKGNvbXBvbmVudCk7XG4gICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBvbmVudDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KHBhcmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIG5leHQocGFyZW50KTtcbiAgICB9XG59O1xuZnVuY3Rpb24gZGVjb2RlUGFyYW0odmFsKSB7XG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIGRlY29kZVVSSUNvbXBvbmVudCh2YWwpO1xuICAgIH1cbiAgICBjYXRjaCAoZXJyKSB7XG4gICAgICAgIHJldHVybiB2YWw7XG4gICAgfVxufVxuZnVuY3Rpb24gbWF0Y2hMb2NhdGlvbihfYSkge1xuICAgIHZhciBwYXRobmFtZSA9IF9hLnBhdGhuYW1lO1xuICAgIHJvdXRlci5tYXRjaChwYXRobmFtZSk7XG59XG5mdW5jdGlvbiBtYXRjaFBhdGgocm91dGUsIHBhdGhuYW1lLCBwYXJlbnRQYXJhbXMpIHtcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgICB2YXIgcGF0aCA9IHJvdXRlLnBhdGgsIHJvdXRlcyA9IHJvdXRlLnJvdXRlcywgX2EgPSByb3V0ZS5leGFjdCwgZW5kID0gX2EgPT09IHZvaWQgMCA/IHRydWUgOiBfYSwgX2IgPSByb3V0ZS5zdHJpY3QsIHN0cmljdCA9IF9iID09PSB2b2lkIDAgPyBmYWxzZSA6IF9iLCBfYyA9IHJvdXRlLnNlbnNpdGl2ZSwgc2Vuc2l0aXZlID0gX2MgPT09IHZvaWQgMCA/IGZhbHNlIDogX2M7XG4gICAgLy8gSWYgbm90IGhhcyBwYXRoIG9yIGhhcyByb3V0ZXMgdGhhdCBzaG91bGQgZG8gbm90IGV4YWN0IG1hdGNoXG4gICAgaWYgKHBhdGggPT0gbnVsbCB8fCByb3V0ZXMpIHtcbiAgICAgICAgZW5kID0gZmFsc2U7XG4gICAgfVxuICAgIC8vIERlZmF1bHQgcGF0aCBpcyBlbXB0eVxuICAgIHBhdGggPSBwYXRoIHx8ICcnO1xuICAgIHZhciByZWdleHBDYWNoZUtleSA9IHBhdGggKyBcInxcIiArIGVuZCArIFwifFwiICsgc3RyaWN0ICsgXCJ8XCIgKyBzZW5zaXRpdmU7XG4gICAgdmFyIGtleXNDYWNoZUtleSA9IHJlZ2V4cENhY2hlS2V5ICsgXCJ8XCI7XG4gICAgdmFyIHJlZ2V4cCA9IGNhY2hlW3JlZ2V4cENhY2hlS2V5XTtcbiAgICB2YXIga2V5cyA9IGNhY2hlW2tleXNDYWNoZUtleV0gfHwgW107XG4gICAgaWYgKCFyZWdleHApIHtcbiAgICAgICAgcmVnZXhwID0gcGF0aFRvUmVnZXhwTW9kdWxlLnBhdGhUb1JlZ2V4cChwYXRoLCBrZXlzLCB7XG4gICAgICAgICAgICBlbmQ6IGVuZCxcbiAgICAgICAgICAgIHN0cmljdDogc3RyaWN0LFxuICAgICAgICAgICAgc2Vuc2l0aXZlOiBzZW5zaXRpdmVcbiAgICAgICAgfSk7XG4gICAgICAgIGNhY2hlW3JlZ2V4cENhY2hlS2V5XSA9IHJlZ2V4cDtcbiAgICAgICAgY2FjaGVba2V5c0NhY2hlS2V5XSA9IGtleXM7XG4gICAgfVxuICAgIHZhciByZXN1bHQgPSByZWdleHAuZXhlYyhwYXRobmFtZSk7XG4gICAgaWYgKCFyZXN1bHQpIHtcbiAgICAgICAgcmV0dXJuIG51bGw7XG4gICAgfVxuICAgIHZhciB1cmwgPSByZXN1bHRbMF07XG4gICAgdmFyIHBhcmFtcyA9IF9fYXNzaWduKF9fYXNzaWduKHt9LCBwYXJlbnRQYXJhbXMpLCB7IGhpc3Rvcnk6IHJvdXRlci5oaXN0b3J5LCBsb2NhdGlvbjogcm91dGVyLmhpc3RvcnkubG9jYXRpb24gfSk7XG4gICAgZm9yICh2YXIgaSA9IDE7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcbiAgICAgICAgdmFyIGtleSA9IGtleXNbaSAtIDFdO1xuICAgICAgICB2YXIgcHJvcCA9IGtleS5uYW1lO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHRbaV07XG4gICAgICAgIGlmICh2YWx1ZSAhPT0gdW5kZWZpbmVkIHx8ICFPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocGFyYW1zLCBwcm9wKSkge1xuICAgICAgICAgICAgaWYgKGtleS5yZXBlYXQpIHtcbiAgICAgICAgICAgICAgICBwYXJhbXNbcHJvcF0gPSB2YWx1ZSA/IHZhbHVlLnNwbGl0KGtleS5kZWxpbWl0ZXIpLm1hcChkZWNvZGVQYXJhbSkgOiBbXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGVsc2Uge1xuICAgICAgICAgICAgICAgIHBhcmFtc1twcm9wXSA9IHZhbHVlID8gZGVjb2RlUGFyYW0odmFsdWUpIDogdmFsdWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIHtcbiAgICAgICAgcGF0aDogIWVuZCAmJiB1cmwuY2hhckF0KHVybC5sZW5ndGggLSAxKSA9PT0gJy8nID8gdXJsLnN1YnN0cigxKSA6IHVybCxcbiAgICAgICAgcGFyYW1zOiBwYXJhbXMsXG4gICAgfTtcbn1cbmZ1bmN0aW9uIG1hdGNoUm91dGUocm91dGUsIGJhc2VVcmwsIHBhdGhuYW1lLCBwYXJlbnRQYXJhbXMpIHtcbiAgICB2YXIgbWF0Y2hlZDtcbiAgICB2YXIgY2hpbGRNYXRjaGVzO1xuICAgIHZhciBjaGlsZEluZGV4ID0gMDtcbiAgICByZXR1cm4ge1xuICAgICAgICBuZXh0OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpZiAoIW1hdGNoZWQpIHtcbiAgICAgICAgICAgICAgICBtYXRjaGVkID0gbWF0Y2hQYXRoKHJvdXRlLCBwYXRobmFtZSwgcGFyZW50UGFyYW1zKTtcbiAgICAgICAgICAgICAgICBpZiAobWF0Y2hlZCkge1xuICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgZG9uZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICAkOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcm91dGU6IHJvdXRlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2VVcmw6IGJhc2VVcmwsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aDogbWF0Y2hlZC5wYXRoLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtczogbWF0Y2hlZC5wYXJhbXMsXG4gICAgICAgICAgICAgICAgICAgICAgICB9LFxuICAgICAgICAgICAgICAgICAgICB9O1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChtYXRjaGVkICYmIHJvdXRlLnJvdXRlcykge1xuICAgICAgICAgICAgICAgIHdoaWxlIChjaGlsZEluZGV4IDwgcm91dGUucm91dGVzLmxlbmd0aCkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoIWNoaWxkTWF0Y2hlcykge1xuICAgICAgICAgICAgICAgICAgICAgICAgdmFyIGNoaWxkUm91dGUgPSByb3V0ZS5yb3V0ZXNbY2hpbGRJbmRleF07XG4gICAgICAgICAgICAgICAgICAgICAgICBjaGlsZFJvdXRlLnBhcmVudCA9IHJvdXRlO1xuICAgICAgICAgICAgICAgICAgICAgICAgY2hpbGRNYXRjaGVzID0gbWF0Y2hSb3V0ZShjaGlsZFJvdXRlLCBiYXNlVXJsICsgbWF0Y2hlZC5wYXRoLCBwYXRobmFtZS5zdWJzdHIobWF0Y2hlZC5wYXRoLmxlbmd0aCksIG1hdGNoZWQucGFyYW1zKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB2YXIgY2hpbGRNYXRjaCA9IGNoaWxkTWF0Y2hlcy5uZXh0KCk7XG4gICAgICAgICAgICAgICAgICAgIGlmICghY2hpbGRNYXRjaC5kb25lKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbmU6IGZhbHNlLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ6IGNoaWxkTWF0Y2guJCxcbiAgICAgICAgICAgICAgICAgICAgICAgIH07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgY2hpbGRNYXRjaGVzID0gbnVsbDtcbiAgICAgICAgICAgICAgICAgICAgY2hpbGRJbmRleCsrO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHJldHVybiB7IGRvbmU6IHRydWUgfTtcbiAgICAgICAgfSxcbiAgICB9O1xufVxuZnVuY3Rpb24gZ2V0SW5pdGlhbENvbXBvbmVudChyb3V0ZXJDb25maWcpIHtcbiAgICB2YXIgSW5pdGlhbENvbXBvbmVudCA9IFtdO1xuICAgIGlmIChwcm9jZXNzLmVudi5OT0RFX0VOViAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIGlmICghcm91dGVyQ29uZmlnKSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0Vycm9yOiB1c2VSb3V0ZXIgc2hvdWxkIGhhdmUgcm91dGVyQ29uZmlnLicpO1xuICAgICAgICB9XG4gICAgICAgIGlmICghcm91dGVyQ29uZmlnLmhpc3RvcnkgfHwgIXJvdXRlckNvbmZpZy5yb3V0ZXMpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcignRXJyb3I6IHJvdXRlckNvbmZpZyBzaG91bGQgY29udGFpbiBoaXN0b3J5IGFuZCByb3V0ZXMuJyk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgaWYgKHJvdXRlckNvbmZpZy5Jbml0aWFsQ29tcG9uZW50KSB7XG4gICAgICAgIEluaXRpYWxDb21wb25lbnQgPSByb3V0ZXJDb25maWcuSW5pdGlhbENvbXBvbmVudDtcbiAgICB9XG4gICAgcm91dGVyLmhpc3RvcnkgPSByb3V0ZXJDb25maWcuaGlzdG9yeTtcbiAgICByZXR1cm4gSW5pdGlhbENvbXBvbmVudDtcbn1cbmZ1bmN0aW9uIGNyZWF0ZVVzZVJvdXRlcihhcGkpIHtcbiAgICB2YXIgdXNlU3RhdGUgPSBhcGkudXNlU3RhdGUsIHVzZUxheW91dEVmZmVjdCA9IGFwaS51c2VMYXlvdXRFZmZlY3Q7XG4gICAgZnVuY3Rpb24gdXNlUm91dGVyKHJvdXRlckNvbmZpZykge1xuICAgICAgICB2YXIgX2EgPSB1c2VTdGF0ZShnZXRJbml0aWFsQ29tcG9uZW50KHJvdXRlckNvbmZpZykpLCBjb21wb25lbnQgPSBfYVswXSwgc2V0Q29tcG9uZW50ID0gX2FbMV07XG4gICAgICAgIHVzZUxheW91dEVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICB2YXIgaGlzdG9yeSA9IHJvdXRlckNvbmZpZy5oaXN0b3J5O1xuICAgICAgICAgICAgdmFyIHJvdXRlcyA9IHJvdXRlckNvbmZpZy5yb3V0ZXM7XG4gICAgICAgICAgICAvLyBAdHMtaWdub3JlXG4gICAgICAgICAgICByb3V0ZXIucm9vdCA9IEFycmF5LmlzQXJyYXkocm91dGVzKSA/IHsgcm91dGVzOiByb3V0ZXMgfSA6IHJvdXRlcztcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgICAgICAgICAgdmFyIGhhbmRsZUlkID0gcm91dGVyLmFkZEhhbmRsZShmdW5jdGlvbiAoY29tcG9uZW50KSB7XG4gICAgICAgICAgICAgICAgc2V0Q29tcG9uZW50KGNvbXBvbmVudCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIC8vIEluaXQgcGF0aCBtYXRjaFxuICAgICAgICAgICAgaWYgKCFyb3V0ZXJDb25maWcuSW5pdGlhbENvbXBvbmVudCkge1xuICAgICAgICAgICAgICAgIG1hdGNoTG9jYXRpb24oaGlzdG9yeS5sb2NhdGlvbik7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB2YXIgdW5saXN0ZW4gPSBoaXN0b3J5Lmxpc3RlbihmdW5jdGlvbiAobG9jYXRpb24pIHtcbiAgICAgICAgICAgICAgICBtYXRjaExvY2F0aW9uKGxvY2F0aW9uKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICByb3V0ZXIucmVtb3ZlSGFuZGxlKGhhbmRsZUlkKTtcbiAgICAgICAgICAgICAgICB1bmxpc3RlbigpO1xuICAgICAgICAgICAgfTtcbiAgICAgICAgfSwgW3JvdXRlckNvbmZpZ10pO1xuICAgICAgICByZXR1cm4geyBjb21wb25lbnQ6IGNvbXBvbmVudCB9O1xuICAgIH1cbiAgICByZXR1cm4gdXNlUm91dGVyO1xufVxuZXhwb3J0cy5jcmVhdGVVc2VSb3V0ZXIgPSBjcmVhdGVVc2VSb3V0ZXI7XG5mdW5jdGlvbiBjcmVhdGVXaXRoUm91dGVyKGFwaSkge1xuICAgIHZhciBjcmVhdGVFbGVtZW50ID0gYXBpLmNyZWF0ZUVsZW1lbnQ7XG4gICAgZnVuY3Rpb24gd2l0aFJvdXRlcihDb21wb25lbnQpIHtcbiAgICAgICAgZnVuY3Rpb24gV3JhcHBlcihwcm9wcykge1xuICAgICAgICAgICAgdmFyIGhpc3RvcnkgPSByb3V0ZXIuaGlzdG9yeTtcbiAgICAgICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KENvbXBvbmVudCwgX19hc3NpZ24oX19hc3NpZ24oe30sIHByb3BzKSwgeyBoaXN0b3J5OiBoaXN0b3J5LCBsb2NhdGlvbjogaGlzdG9yeS5sb2NhdGlvbiB9KSk7XG4gICAgICAgIH1cbiAgICAgICAgV3JhcHBlci5kaXNwbGF5TmFtZSA9IFwid2l0aFJvdXRlcihcIiArIChDb21wb25lbnQuZGlzcGxheU5hbWUgfHwgQ29tcG9uZW50Lm5hbWUpICsgXCIpXCI7XG4gICAgICAgIFdyYXBwZXIuV3JhcHBlZENvbXBvbmVudCA9IENvbXBvbmVudDtcbiAgICAgICAgcmV0dXJuIFdyYXBwZXI7XG4gICAgfVxuICAgIHJldHVybiB3aXRoUm91dGVyO1xufVxuZXhwb3J0cy5jcmVhdGVXaXRoUm91dGVyID0gY3JlYXRlV2l0aFJvdXRlcjtcbiIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5kZWZhdWx0ID0gZ2V0RWxlbWVudEJ5SWQ7XG5cbnZhciBfdW5pdmVyc2FsRW52ID0gcmVxdWlyZShcInVuaXZlcnNhbC1lbnZcIik7XG5cbnZhciBfcmF4ID0gcmVxdWlyZShcInJheFwiKTtcblxuZnVuY3Rpb24gZ2V0RWxlbWVudEJ5SWQoaWQpIHtcbiAgaWYgKF91bml2ZXJzYWxFbnYuaXNXZWV4KSB7XG4gICAgcmV0dXJuIF9yYXguc2hhcmVkLkhvc3QuZHJpdmVyLmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgfSBlbHNlIGlmIChfdW5pdmVyc2FsRW52LmlzV2ViKSB7XG4gICAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgbXkgPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm4gbXkuY3JlYXRlU2VsZWN0b3JRdWVyeSgpLnNlbGVjdCgnIycgKyBpZCk7XG4gIH0gZWxzZSBpZiAodHlwZW9mIHd4ID09ICdvYmplY3QnKSB7XG4gICAgcmV0dXJuIHd4LmNyZWF0ZVNlbGVjdG9yUXVlcnkoKS5zZWxlY3QoJyMnICsgaWQpO1xuICB9XG59IiwiaW1wb3J0IHsgaXNXZWIsIGlzV2VleCwgaXNNaW5pQXBwLCBpc1dlQ2hhdE1pbmlQcm9ncmFtLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0JhaWR1U21hcnRQcm9ncmFtLCBpc0t1YWlTaG91TWluaVByb2dyYW0gfSBmcm9tICd1bml2ZXJzYWwtZW52JztcbmltcG9ydCBJbWFnZVdlYiBmcm9tICcuL3dlYic7XG5pbXBvcnQgSW1hZ2VNaW5pQXBwIGZyb20gJy4vbWluaWFwcC1ydW50aW1lJztcbmltcG9ydCBJbWFnZVdlZXggZnJvbSAnLi93ZWV4JztcbnZhciBJbWFnZSA9IG51bGw7XG5cbmlmIChpc1dlYikge1xuICBJbWFnZSA9IEltYWdlV2ViO1xufSBlbHNlIGlmIChpc01pbmlBcHAgfHwgaXNXZUNoYXRNaW5pUHJvZ3JhbSB8fCBpc0J5dGVEYW5jZU1pY3JvQXBwIHx8IGlzQmFpZHVTbWFydFByb2dyYW0gfHwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtKSB7XG4gIEltYWdlID0gSW1hZ2VNaW5pQXBwO1xufSBlbHNlIGlmIChpc1dlZXgpIHtcbiAgSW1hZ2UgPSBJbWFnZVdlZXg7XG59IGVsc2Uge1xuICBJbWFnZSA9IEltYWdlV2ViO1xufVxuXG5leHBvcnQgZGVmYXVsdCBJbWFnZTtcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnOyIsInZhciBfZXhjbHVkZWQgPSBbXCJzb3VyY2VcIiwgXCJmYWxsYmFja1NvdXJjZVwiLCBcIm9uTG9hZFwiLCBcIm9uRXJyb3JcIiwgXCJzdHlsZVwiLCBcInJlc2l6ZU1vZGVcIiwgXCJsb2FkaW5nXCJdO1xuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgZm9yd2FyZFJlZiB9IGZyb20gJ3JheCc7XG5pbXBvcnQgRU1QVFlfU09VUkNFIGZyb20gJy4uL3V0aWxzL2VtcHR5U291cmNlJztcbnZhciBJbWFnZSA9IGZvcndhcmRSZWYoZnVuY3Rpb24gKF9yZWYsIHJlZikge1xuICB2YXIgc291cmNlID0gX3JlZi5zb3VyY2UsXG4gICAgICBmYWxsYmFja1NvdXJjZSA9IF9yZWYuZmFsbGJhY2tTb3VyY2UsXG4gICAgICBvbkxvYWQgPSBfcmVmLm9uTG9hZCxcbiAgICAgIG9uRXJyb3IgPSBfcmVmLm9uRXJyb3IsXG4gICAgICBzdHlsZSA9IF9yZWYuc3R5bGUsXG4gICAgICByZXNpemVNb2RlID0gX3JlZi5yZXNpemVNb2RlLFxuICAgICAgbG9hZGluZyA9IF9yZWYubG9hZGluZyxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHNvdXJjZSA9IHNvdXJjZSB8fCBFTVBUWV9TT1VSQ0U7XG4gIGZhbGxiYWNrU291cmNlID0gZmFsbGJhY2tTb3VyY2UgfHwgRU1QVFlfU09VUkNFO1xuICB2YXIgbmF0aXZlUHJvcHMgPSByZXN0O1xuXG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZSh7fSksXG4gICAgICBlcnJvclN0YXRlID0gX3VzZVN0YXRlWzBdLFxuICAgICAgc2V0RXJyb3JTdGF0ZSA9IF91c2VTdGF0ZVsxXTtcblxuICBuYXRpdmVQcm9wcy5vbkVycm9yID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoZXJyb3JTdGF0ZS51cmkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0RXJyb3JTdGF0ZSh7XG4gICAgICAgIHVyaTogc291cmNlLnVyaVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25FcnJvciAmJiBvbkVycm9yKGUpO1xuICB9LCBbc291cmNlLnVyaSwgb25FcnJvciwgZXJyb3JTdGF0ZV0pO1xuICBuYXRpdmVQcm9wcy5vbkxvYWQgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZSkge1xuICAgIC8vIG9uTG9hZCBpcyB0cmlnZ2VyZWQgYnkgbmF0aXZlLCBzbyBubyBuZWVkIHRvIGp1ZGdlXG4gICAgb25Mb2FkICYmIG9uTG9hZChlKTtcbiAgfSwgW29uTG9hZCwgb25FcnJvcl0pO1xuXG4gIGlmIChlcnJvclN0YXRlLnVyaSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKGVycm9yU3RhdGUudXJpICE9PSBzb3VyY2UudXJpKSB7XG4gICAgICBlcnJvclN0YXRlLnVyaSA9IHVuZGVmaW5lZDtcbiAgICB9IGVsc2UgaWYgKGZhbGxiYWNrU291cmNlLnVyaSAhPSBudWxsKSB7XG4gICAgICBzb3VyY2UgPSBmYWxsYmFja1NvdXJjZTtcbiAgICB9XG4gIH1cblxuICB2YXIgX3NvdXJjZSA9IHNvdXJjZSxcbiAgICAgIHdpZHRoID0gX3NvdXJjZS53aWR0aCxcbiAgICAgIGhlaWdodCA9IF9zb3VyY2UuaGVpZ2h0LFxuICAgICAgdXJpID0gX3NvdXJjZS51cmk7XG4gIG5hdGl2ZVByb3BzLnNyYyA9IHVyaTtcbiAgbmF0aXZlUHJvcHMuc3R5bGUgPSBfZXh0ZW5kcyh7XG4gICAgd2lkdGg6IHdpZHRoLFxuICAgIGhlaWdodDogaGVpZ2h0XG4gIH0sIHN0eWxlKTtcblxuICBpZiAobG9hZGluZykge1xuICAgIG5hdGl2ZVByb3BzWydsYXp5LWxvYWQnXSA9IGxvYWRpbmcgPT09ICdsYXp5JztcbiAgfSAvLyBmb3IgY292ZXIgYW5kIGNvbnRhaW5cblxuXG4gIHJlc2l6ZU1vZGUgPSByZXNpemVNb2RlIHx8IG5hdGl2ZVByb3BzLnN0eWxlLnJlc2l6ZU1vZGU7XG5cbiAgaWYgKHJlc2l6ZU1vZGUpIHtcbiAgICBuYXRpdmVQcm9wcy5zdHlsZS5vYmplY3RGaXQgPSByZXNpemVNb2RlO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXCJpbWdcIiwgX2V4dGVuZHMoe30sIG5hdGl2ZVByb3BzLCB7XG4gICAgcmVmOiByZWZcbiAgfSkpO1xufSk7XG5leHBvcnQgZGVmYXVsdCBJbWFnZTsiLCJleHBvcnQge307IiwidmFyIEVNUFRZX1NPVVJDRSA9IHt9O1xuZXhwb3J0IGRlZmF1bHQgRU1QVFlfU09VUkNFOyIsInZhciBfZXhjbHVkZWQgPSBbXCJzb3VyY2VcIiwgXCJmYWxsYmFja1NvdXJjZVwiLCBcIm9uTG9hZFwiLCBcIm9uRXJyb3JcIiwgXCJzdHlsZVwiLCBcInJlc2l6ZU1vZGVcIiwgXCJsb2FkaW5nXCJdO1xuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZVN0YXRlLCB1c2VDYWxsYmFjaywgZm9yd2FyZFJlZiB9IGZyb20gJ3JheCc7XG5pbXBvcnQgRU1QVFlfU09VUkNFIGZyb20gJy4uL3V0aWxzL2VtcHR5U291cmNlJztcbnZhciBJbWFnZSA9IGZvcndhcmRSZWYoZnVuY3Rpb24gKF9yZWYsIHJlZikge1xuICB2YXIgc291cmNlID0gX3JlZi5zb3VyY2UsXG4gICAgICBmYWxsYmFja1NvdXJjZSA9IF9yZWYuZmFsbGJhY2tTb3VyY2UsXG4gICAgICBvbkxvYWQgPSBfcmVmLm9uTG9hZCxcbiAgICAgIG9uRXJyb3IgPSBfcmVmLm9uRXJyb3IsXG4gICAgICBzdHlsZSA9IF9yZWYuc3R5bGUsXG4gICAgICByZXNpemVNb2RlID0gX3JlZi5yZXNpemVNb2RlLFxuICAgICAgbG9hZGluZyA9IF9yZWYubG9hZGluZyxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHNvdXJjZSA9IHNvdXJjZSB8fCBFTVBUWV9TT1VSQ0U7XG4gIGZhbGxiYWNrU291cmNlID0gZmFsbGJhY2tTb3VyY2UgfHwgRU1QVFlfU09VUkNFO1xuICB2YXIgbmF0aXZlUHJvcHMgPSByZXN0O1xuXG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZSh7fSksXG4gICAgICBlcnJvclN0YXRlID0gX3VzZVN0YXRlWzBdLFxuICAgICAgc2V0RXJyb3JTdGF0ZSA9IF91c2VTdGF0ZVsxXTtcblxuICBuYXRpdmVQcm9wcy5vbkVycm9yID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoZXJyb3JTdGF0ZS51cmkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0RXJyb3JTdGF0ZSh7XG4gICAgICAgIHVyaTogc291cmNlLnVyaVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25FcnJvciAmJiBvbkVycm9yKGUpO1xuICB9LCBbc291cmNlLnVyaSwgb25FcnJvciwgZXJyb3JTdGF0ZV0pO1xuICBuYXRpdmVQcm9wcy5vbkxvYWQgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZSkge1xuICAgIGlmIChlICYmIGUuc3VjY2Vzcykge1xuICAgICAgLy8gd2VleFxuICAgICAgb25Mb2FkICYmIG9uTG9hZChlKTtcbiAgICB9IGVsc2UgaWYgKCAvLyBhbGljZG4gd2lsbCByZXR1cm4gYW4gMXgxIGltZyB3aGVuIGltZyBpcyBub3QgbG9hZGVkIHN1Y2Nlc3NmdWxseVxuICAgIGUgJiYgZS5jdXJyZW50VGFyZ2V0ICYmIGUuY3VycmVudFRhcmdldC5uYXR1cmFsV2lkdGggPiAxICYmIGUuY3VycmVudFRhcmdldC5uYXR1cmFsSGVpZ2h0ID4gMSkge1xuICAgICAgLy8gd2ViXG4gICAgICBvbkxvYWQgJiYgb25Mb2FkKGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZXJyb3JTdGF0ZS51cmkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRFcnJvclN0YXRlKHtcbiAgICAgICAgICB1cmk6IHNvdXJjZS51cmlcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG9uRXJyb3IgJiYgb25FcnJvcihlKTtcbiAgICB9XG4gIH0sIFtvbkxvYWQsIG9uRXJyb3JdKTtcblxuICBpZiAoZXJyb3JTdGF0ZS51cmkgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChlcnJvclN0YXRlLnVyaSAhPT0gc291cmNlLnVyaSkge1xuICAgICAgZXJyb3JTdGF0ZS51cmkgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmIChmYWxsYmFja1NvdXJjZS51cmkgIT0gbnVsbCkge1xuICAgICAgc291cmNlID0gZmFsbGJhY2tTb3VyY2U7XG4gICAgfVxuICB9XG5cbiAgdmFyIF9zb3VyY2UgPSBzb3VyY2UsXG4gICAgICB3aWR0aCA9IF9zb3VyY2Uud2lkdGgsXG4gICAgICBoZWlnaHQgPSBfc291cmNlLmhlaWdodCxcbiAgICAgIHVyaSA9IF9zb3VyY2UudXJpO1xuICBuYXRpdmVQcm9wcy5zcmMgPSB1cmk7XG4gIG5hdGl2ZVByb3BzLnN0eWxlID0gX2V4dGVuZHMoe1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9LCBzdHlsZSk7XG5cbiAgaWYgKGxvYWRpbmcpIHtcbiAgICBuYXRpdmVQcm9wcy5sb2FkaW5nID0gbG9hZGluZztcbiAgfSAvLyBmb3IgY292ZXIgYW5kIGNvbnRhaW5cblxuXG4gIHJlc2l6ZU1vZGUgPSByZXNpemVNb2RlIHx8IG5hdGl2ZVByb3BzLnN0eWxlLnJlc2l6ZU1vZGU7XG5cbiAgaWYgKHJlc2l6ZU1vZGUpIHtcbiAgICBuYXRpdmVQcm9wcy5zdHlsZS5vYmplY3RGaXQgPSByZXNpemVNb2RlO1xuICB9XG5cbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXCJpbWdcIiwgX2V4dGVuZHMoe30sIG5hdGl2ZVByb3BzLCB7XG4gICAgcmVmOiByZWZcbiAgfSkpO1xufSk7XG5leHBvcnQgZGVmYXVsdCBJbWFnZTsiLCJ2YXIgX2V4Y2x1ZGVkID0gW1wic291cmNlXCIsIFwiZmFsbGJhY2tTb3VyY2VcIiwgXCJvbkxvYWRcIiwgXCJvbkVycm9yXCIsIFwic3R5bGVcIiwgXCJyZXNpemVNb2RlXCIsIFwibG9hZGluZ1wiXTtcblxuZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuZnVuY3Rpb24gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2Uoc291cmNlLCBleGNsdWRlZCkgeyBpZiAoc291cmNlID09IG51bGwpIHJldHVybiB7fTsgdmFyIHRhcmdldCA9IHt9OyB2YXIgc291cmNlS2V5cyA9IE9iamVjdC5rZXlzKHNvdXJjZSk7IHZhciBrZXksIGk7IGZvciAoaSA9IDA7IGkgPCBzb3VyY2VLZXlzLmxlbmd0aDsgaSsrKSB7IGtleSA9IHNvdXJjZUtleXNbaV07IGlmIChleGNsdWRlZC5pbmRleE9mKGtleSkgPj0gMCkgY29udGludWU7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gcmV0dXJuIHRhcmdldDsgfVxuXG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50LCB1c2VTdGF0ZSwgdXNlQ2FsbGJhY2ssIGZvcndhcmRSZWYgfSBmcm9tICdyYXgnO1xuaW1wb3J0IEVNUFRZX1NPVVJDRSBmcm9tICcuLi91dGlscy9lbXB0eVNvdXJjZSc7XG5pbXBvcnQgSW1hZ2VXZWIgZnJvbSAnLi4vd2ViJztcbnZhciBJbWFnZSA9IGZvcndhcmRSZWYoZnVuY3Rpb24gKF9yZWYsIHJlZikge1xuICB2YXIgc291cmNlID0gX3JlZi5zb3VyY2UsXG4gICAgICBmYWxsYmFja1NvdXJjZSA9IF9yZWYuZmFsbGJhY2tTb3VyY2UsXG4gICAgICBvbkxvYWQgPSBfcmVmLm9uTG9hZCxcbiAgICAgIG9uRXJyb3IgPSBfcmVmLm9uRXJyb3IsXG4gICAgICBzdHlsZSA9IF9yZWYuc3R5bGUsXG4gICAgICByZXNpemVNb2RlID0gX3JlZi5yZXNpemVNb2RlLFxuICAgICAgbG9hZGluZyA9IF9yZWYubG9hZGluZyxcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShfcmVmLCBfZXhjbHVkZWQpO1xuXG4gIHNvdXJjZSA9IHNvdXJjZSB8fCBFTVBUWV9TT1VSQ0U7XG4gIGZhbGxiYWNrU291cmNlID0gZmFsbGJhY2tTb3VyY2UgfHwgRU1QVFlfU09VUkNFO1xuICB2YXIgbmF0aXZlUHJvcHMgPSByZXN0O1xuXG4gIHZhciBfdXNlU3RhdGUgPSB1c2VTdGF0ZSh7fSksXG4gICAgICBlcnJvclN0YXRlID0gX3VzZVN0YXRlWzBdLFxuICAgICAgc2V0RXJyb3JTdGF0ZSA9IF91c2VTdGF0ZVsxXTtcblxuICBuYXRpdmVQcm9wcy5vbkVycm9yID0gdXNlQ2FsbGJhY2soZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAoZXJyb3JTdGF0ZS51cmkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgc2V0RXJyb3JTdGF0ZSh7XG4gICAgICAgIHVyaTogc291cmNlLnVyaVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgb25FcnJvciAmJiBvbkVycm9yKGUpO1xuICB9LCBbc291cmNlLnVyaSwgb25FcnJvciwgZXJyb3JTdGF0ZV0pO1xuICBuYXRpdmVQcm9wcy5vbkxvYWQgPSB1c2VDYWxsYmFjayhmdW5jdGlvbiAoZSkge1xuICAgIGlmIChlICYmIGUuc3VjY2Vzcykge1xuICAgICAgLy8gd2VleFxuICAgICAgb25Mb2FkICYmIG9uTG9hZChlKTtcbiAgICB9IGVsc2UgaWYgKCAvLyBhbGljZG4gd2lsbCByZXR1cm4gYW4gMXgxIGltZyB3aGVuIGltZyBpcyBub3QgbG9hZGVkIHN1Y2Nlc3NmdWxseVxuICAgIGUgJiYgZS5jdXJyZW50VGFyZ2V0ICYmIGUuY3VycmVudFRhcmdldC5uYXR1cmFsV2lkdGggPiAxICYmIGUuY3VycmVudFRhcmdldC5uYXR1cmFsSGVpZ2h0ID4gMSkge1xuICAgICAgLy8gd2ViXG4gICAgICBvbkxvYWQgJiYgb25Mb2FkKGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAoZXJyb3JTdGF0ZS51cmkgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBzZXRFcnJvclN0YXRlKHtcbiAgICAgICAgICB1cmk6IHNvdXJjZS51cmlcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIG9uRXJyb3IgJiYgb25FcnJvcihlKTtcbiAgICB9XG4gIH0sIFtvbkxvYWQsIG9uRXJyb3JdKTtcblxuICBpZiAoZXJyb3JTdGF0ZS51cmkgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChlcnJvclN0YXRlLnVyaSAhPT0gc291cmNlLnVyaSkge1xuICAgICAgZXJyb3JTdGF0ZS51cmkgPSB1bmRlZmluZWQ7XG4gICAgfSBlbHNlIGlmIChmYWxsYmFja1NvdXJjZS51cmkgIT0gbnVsbCkge1xuICAgICAgc291cmNlID0gZmFsbGJhY2tTb3VyY2U7XG4gICAgfVxuICB9XG5cbiAgdmFyIF9zb3VyY2UgPSBzb3VyY2UsXG4gICAgICB3aWR0aCA9IF9zb3VyY2Uud2lkdGgsXG4gICAgICBoZWlnaHQgPSBfc291cmNlLmhlaWdodCxcbiAgICAgIHVyaSA9IF9zb3VyY2UudXJpO1xuICBuYXRpdmVQcm9wcy5zcmMgPSB1cmk7XG4gIG5hdGl2ZVByb3BzLnN0eWxlID0gX2V4dGVuZHMoe1xuICAgIHdpZHRoOiB3aWR0aCxcbiAgICBoZWlnaHQ6IGhlaWdodFxuICB9LCBzdHlsZSk7IC8vIGZvciBjb3ZlciBhbmQgY29udGFpblxuXG4gIHJlc2l6ZU1vZGUgPSByZXNpemVNb2RlIHx8IG5hdGl2ZVByb3BzLnN0eWxlLnJlc2l6ZU1vZGU7XG5cbiAgaWYgKHJlc2l6ZU1vZGUpIHtcbiAgICBuYXRpdmVQcm9wcy5yZXNpemUgPSByZXNpemVNb2RlO1xuICAgIG5hdGl2ZVByb3BzLnN0eWxlLnJlc2l6ZU1vZGUgPSByZXNpemVNb2RlO1xuICB9IC8vIFNldCBkZWZhdWx0IHF1YWxpdHkgdG8gXCJvcmlnaW5hbFwiIGluIHdlZXggYXZvaWQgaW1hZ2UgYmUgb3B0aW1pemVkIHVuZXhwZWN0XG4gIC8vIEB0cy1pZ25vcmVcblxuXG4gIHJldHVybiBjcmVhdGVFbGVtZW50KFwiaW1hZ2VcIiwgX2V4dGVuZHMoe1xuICAgIHF1YWxpdHk6IFwib3JpZ2luYWxcIlxuICB9LCBuYXRpdmVQcm9wcywge1xuICAgIHJlZjogcmVmXG4gIH0pKTtcbn0pO1xuLyogZ2xvYmFsIF9fd2VleF92Ml9fICovXG5cbmV4cG9ydCBkZWZhdWx0IHR5cGVvZiBfX3dlZXhfdjJfXyA9PT0gJ29iamVjdCcgPyBJbWFnZVdlYiA6IEltYWdlOyIsIlwidXNlIHN0cmljdFwiO1xuXG5leHBvcnRzLl9fZXNNb2R1bGUgPSB0cnVlO1xuZXhwb3J0cy5kZWZhdWx0ID0gdm9pZCAwO1xuXG52YXIgX3JheCA9IHJlcXVpcmUoXCJyYXhcIik7XG5cbnZhciBfdW5pdmVyc2FsRW52ID0gcmVxdWlyZShcInVuaXZlcnNhbC1lbnZcIik7XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbnZhciBSZWZyZXNoQ29udHJvbCA9IGZ1bmN0aW9uIChwcm9wcykge1xuICBpZiAoX3VuaXZlcnNhbEVudi5pc1dlZXgpIHtcbiAgICB2YXIgZGlzcGxheVJlZnJlc2ggPSBwcm9wcy5yZWZyZXNoaW5nID8gJ3Nob3cnIDogJ2hpZGUnO1xuICAgIHJldHVybiAoMCwgX3JheC5jcmVhdGVFbGVtZW50KShcInJlZnJlc2hcIiwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgICBkaXNwbGF5OiBkaXNwbGF5UmVmcmVzaFxuICAgIH0pLCBwcm9wcy5jaGlsZHJlbik7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbn07XG5cblJlZnJlc2hDb250cm9sLmRpc3BsYXlOYW1lID0gJ1JlZnJlc2hDb250cm9sJztcbnZhciBfZGVmYXVsdCA9IFJlZnJlc2hDb250cm9sO1xuZXhwb3J0cy5kZWZhdWx0ID0gX2RlZmF1bHQ7IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luIiwiaW1wb3J0IHsgaXNXZWIsIGlzV2VleCwgaXNNaW5pQXBwLCBpc1dlQ2hhdE1pbmlQcm9ncmFtLCBpc0J5dGVEYW5jZU1pY3JvQXBwLCBpc0JhaWR1U21hcnRQcm9ncmFtLCBpc0t1YWlTaG91TWluaVByb2dyYW0gfSBmcm9tICd1bml2ZXJzYWwtZW52JztcbmltcG9ydCBTY3JvbGxWaWV3V2ViIGZyb20gJy4vd2ViJztcbmltcG9ydCBTY3JvbGxWaWV3TWluaUFwcCBmcm9tICcuL21pbmlhcHAnO1xuaW1wb3J0IFNjcm9sbFZpZXdXZWV4IGZyb20gJy4vd2VleCc7XG52YXIgU2Nyb2xsVmlldyA9IG51bGw7XG5cbmlmIChpc1dlYikge1xuICBTY3JvbGxWaWV3ID0gU2Nyb2xsVmlld1dlYjtcbn0gZWxzZSBpZiAoaXNNaW5pQXBwIHx8IGlzV2VDaGF0TWluaVByb2dyYW0gfHwgaXNCeXRlRGFuY2VNaWNyb0FwcCB8fCBpc0JhaWR1U21hcnRQcm9ncmFtIHx8IGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICBTY3JvbGxWaWV3ID0gU2Nyb2xsVmlld01pbmlBcHA7XG59IGVsc2UgaWYgKGlzV2VleCkge1xuICBTY3JvbGxWaWV3ID0gU2Nyb2xsVmlld1dlZXg7XG59IGVsc2Uge1xuICBTY3JvbGxWaWV3ID0gU2Nyb2xsVmlld1dlYjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgU2Nyb2xsVmlldztcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnOyIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYsIHVzZVJlZiwgdXNlU3RhdGUsIHVzZUltcGVyYXRpdmVIYW5kbGUgfSBmcm9tICdyYXgnO1xuaW1wb3J0IGN4IGZyb20gJ2NsYXNzbmFtZXMnO1xuaW1wb3J0IHdyYXBEZWZhdWx0UHJvcGVydGllcyBmcm9tICcuLi91dGlscy93cmFwRGVmYXVsdFByb3BlcnRpZXMnO1xuaW1wb3J0IHsgZ2V0SW5mb1N5bmMgfSBmcm9tICdAdW5pL3N5c3RlbS1pbmZvJztcbmltcG9ydCBpbmRleFN0eWxlU2hlZXQgZnJvbSAnLi4vaW5kZXguY3NzJztcbnZhciBfc3R5bGVTaGVldCA9IGluZGV4U3R5bGVTaGVldDtcblxuZnVuY3Rpb24gX2dldENsYXNzTmFtZSgpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IFtdO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50c1swXTtcbiAgdmFyIHR5cGUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJncykuc2xpY2UoOCwgLTEpLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgYXJncyA9IGFyZ3MudHJpbSgpO1xuICAgIGFyZ3MgJiYgY2xhc3NOYW1lLnB1c2goYXJncyk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2FycmF5Jykge1xuICAgIGFyZ3MuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7XG4gICAgICBjbHMgPSBfZ2V0Q2xhc3NOYW1lKGNscykudHJpbSgpO1xuICAgICAgY2xzICYmIGNsYXNzTmFtZS5wdXNoKGNscyk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBmb3IgKHZhciBrIGluIGFyZ3MpIHtcbiAgICAgIGsgPSBrLnRyaW0oKTtcblxuICAgICAgaWYgKGsgJiYgYXJncy5oYXNPd25Qcm9wZXJ0eShrKSAmJiBhcmdzW2tdKSB7XG4gICAgICAgIGNsYXNzTmFtZS5wdXNoKGspO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbGFzc05hbWUuam9pbignICcpLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gX2dldFN0eWxlKGNsYXNzTmFtZUV4cHJlc3Npb24pIHtcbiAgdmFyIGNhY2hlID0gX3N0eWxlU2hlZXQuX19jYWNoZSB8fCAoX3N0eWxlU2hlZXQuX19jYWNoZSA9IHt9KTtcblxuICB2YXIgY2xhc3NOYW1lID0gX2dldENsYXNzTmFtZShjbGFzc05hbWVFeHByZXNzaW9uKTtcblxuICB2YXIgY2xhc3NOYW1lQXJyID0gY2xhc3NOYW1lLnNwbGl0KC9cXHMrLyk7XG4gIHZhciBzdHlsZSA9IGNhY2hlW2NsYXNzTmFtZV07XG5cbiAgaWYgKCFzdHlsZSkge1xuICAgIHN0eWxlID0ge307XG5cbiAgICBpZiAoY2xhc3NOYW1lQXJyLmxlbmd0aCA9PT0gMSkge1xuICAgICAgc3R5bGUgPSBfc3R5bGVTaGVldFtjbGFzc05hbWVBcnJbMF0udHJpbSgpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3NOYW1lQXJyLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgICB2YXIgdmFsdWUgPSBfc3R5bGVTaGVldFtjbHMudHJpbSgpXTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHN0eWxlID0gT2JqZWN0LmFzc2lnbihzdHlsZSwgX3N0eWxlU2hlZXRbY2xzLnRyaW0oKV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjYWNoZVtjbGFzc05hbWVdID0gc3R5bGU7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59XG5cbnZhciBGVUxMX1dJRFRIID0gNzUwO1xudmFyIEFOSU1BVElPTl9EVVJBVElPTiA9IDQwMDtcbnZhciBiYXNlQ2xzID0gJ3JheC1zY3JvbGx2aWV3JztcbnZhciBwaXhlbFJhdGlvO1xuXG5mdW5jdGlvbiBnZXRQaXhlbFJhdGlvKCkge1xuICBpZiAocGl4ZWxSYXRpbykge1xuICAgIHJldHVybiBwaXhlbFJhdGlvO1xuICB9XG5cbiAgcGl4ZWxSYXRpbyA9IGdldEluZm9TeW5jKCkud2luZG93V2lkdGggLyBGVUxMX1dJRFRIO1xuICByZXR1cm4gcGl4ZWxSYXRpbztcbn1cblxuZnVuY3Rpb24gdHJhbnNsYXRlVG9QeChvcmlnaW4pIHtcbiAgaWYgKHR5cGVvZiBvcmlnaW4gPT09ICdudW1iZXInKSB7XG4gICAgcmV0dXJuIG9yaWdpbjtcbiAgfVxuXG4gIHZhciBtYXRjaGVkID0gL14oXFxkKykocnswLDF9cHgpezAsMX0kLy5leGVjKG9yaWdpbik7XG5cbiAgaWYgKG1hdGNoZWQpIHtcbiAgICBpZiAoIW1hdGNoZWRbMl0pIHtcbiAgICAgIHJldHVybiBwYXJzZUludChtYXRjaGVkWzFdKTtcbiAgICB9XG5cbiAgICBpZiAobWF0Y2hlZFsyXSA9PT0gJ3JweCcpIHtcbiAgICAgIHZhciBfcGl4ZWxSYXRpbyA9IGdldFBpeGVsUmF0aW8oKTtcblxuICAgICAgcmV0dXJuIHBhcnNlSW50KG1hdGNoZWRbMV0pICogX3BpeGVsUmF0aW87XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoZWRbMl0gPT09ICdweCcpIHtcbiAgICAgIHJldHVybiBwYXJzZUludChtYXRjaGVkWzFdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxudmFyIFNjcm9sbFZpZXcgPSBmb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBzdHlsZSA9IHByb3BzLnN0eWxlLFxuICAgICAgaG9yaXpvbnRhbCA9IHByb3BzLmhvcml6b250YWwsXG4gICAgICBvbkVuZFJlYWNoZWQgPSBwcm9wcy5vbkVuZFJlYWNoZWQsXG4gICAgICBvblNjcm9sbCA9IHByb3BzLm9uU2Nyb2xsLFxuICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIF9wcm9wcyRkaXNhYmxlU2Nyb2xsID0gcHJvcHMuZGlzYWJsZVNjcm9sbCxcbiAgICAgIGRpc2FibGVTY3JvbGwgPSBfcHJvcHMkZGlzYWJsZVNjcm9sbCA9PT0gdm9pZCAwID8gZmFsc2UgOiBfcHJvcHMkZGlzYWJsZVNjcm9sbCxcbiAgICAgIG9uRW5kUmVhY2hlZFRocmVzaG9sZCA9IHByb3BzLm9uRW5kUmVhY2hlZFRocmVzaG9sZDtcblxuICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoMCksXG4gICAgICBzY3JvbGxUb3AgPSBfdXNlU3RhdGVbMF07XG5cbiAgdmFyIF91c2VTdGF0ZTIgPSB1c2VTdGF0ZSgwKSxcbiAgICAgIHNjcm9sbExlZnQgPSBfdXNlU3RhdGUyWzBdO1xuXG4gIHZhciBfdXNlU3RhdGUzID0gdXNlU3RhdGUoZmFsc2UpLFxuICAgICAgc2Nyb2xsV2l0aEFuaW1hdGlvbiA9IF91c2VTdGF0ZTNbMF0sXG4gICAgICBzZXRTY3JvbGxXaXRoQW5pbWF0aW9uID0gX3VzZVN0YXRlM1sxXTtcblxuICB2YXIgX3VzZVN0YXRlNCA9IHVzZVN0YXRlKEFOSU1BVElPTl9EVVJBVElPTiksXG4gICAgICBzY3JvbGxBbmltYXRpb25EdXJhdGlvbiA9IF91c2VTdGF0ZTRbMF0sXG4gICAgICBzZXRTY3JvbGxBbmltYXRpb25EdXJhdGlvbiA9IF91c2VTdGF0ZTRbMV07XG5cbiAgdmFyIF91c2VTdGF0ZTUgPSB1c2VTdGF0ZShudWxsKSxcbiAgICAgIHNjcm9sbEludG9WaWV3SWQgPSBfdXNlU3RhdGU1WzBdO1xuXG4gIHZhciBzY3JvbGxlclJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX25hdGl2ZU5vZGU6IHNjcm9sbGVyUmVmLmN1cnJlbnQsXG4gICAgICByZXNldFNjcm9sbDogZnVuY3Rpb24gcmVzZXRTY3JvbGwoKSB7XG4gICAgICAgIGlmIChob3Jpem9udGFsKSB7XG4gICAgICAgICAgc2Nyb2xsZXJSZWYuY3VycmVudC5zZXRBdHRyaWJ1dGUoJ3Njcm9sbC1sZWZ0JywgJzAnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBzY3JvbGxlclJlZi5jdXJyZW50LnNldEF0dHJpYnV0ZSgnc2Nyb2xsLXRvcCcsICcwJyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzY3JvbGxUbzogZnVuY3Rpb24gc2Nyb2xsVG8ob3B0aW9ucykge1xuICAgICAgICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICAgICAgICBfcmVmJHggPSBfcmVmLngsXG4gICAgICAgICAgICB4ID0gX3JlZiR4ID09PSB2b2lkIDAgPyAwIDogX3JlZiR4LFxuICAgICAgICAgICAgX3JlZiR5ID0gX3JlZi55LFxuICAgICAgICAgICAgeSA9IF9yZWYkeSA9PT0gdm9pZCAwID8gMCA6IF9yZWYkeSxcbiAgICAgICAgICAgIF9yZWYkYW5pbWF0ZWQgPSBfcmVmLmFuaW1hdGVkLFxuICAgICAgICAgICAgYW5pbWF0ZWQgPSBfcmVmJGFuaW1hdGVkID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZiRhbmltYXRlZCxcbiAgICAgICAgICAgIF9yZWYkZHVyYXRpb24gPSBfcmVmLmR1cmF0aW9uLFxuICAgICAgICAgICAgZHVyYXRpb24gPSBfcmVmJGR1cmF0aW9uID09PSB2b2lkIDAgPyBBTklNQVRJT05fRFVSQVRJT04gOiBfcmVmJGR1cmF0aW9uOyAvLyBTY3JvbGwgZXZlbnQgY2F1c2VkIGJ5IHVzZXJzIGNhbiBub3QgY2hhbmdlIHNjcm9sbC10b3Agb3Igc2Nyb2xsLWxlZnQsIHNvIGhlcmUgd2UgYWRkIHNvbWUgc2xpZ2h0IHJhbmRvbSBlbGVtZW50IHRvIGZvcmNlIHVwZGF0ZVxuXG5cbiAgICAgICAgaWYgKGhvcml6b250YWwpIHtcbiAgICAgICAgICBzY3JvbGxlclJlZi5jdXJyZW50LnNldEF0dHJpYnV0ZSgnc2Nyb2xsLWxlZnQnLCBTdHJpbmcodHJhbnNsYXRlVG9QeCh4KSkpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHNjcm9sbGVyUmVmLmN1cnJlbnQuc2V0QXR0cmlidXRlKCdzY3JvbGwtdG9wJywgU3RyaW5nKHRyYW5zbGF0ZVRvUHgoeSkpKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHNldFNjcm9sbFdpdGhBbmltYXRpb24oYW5pbWF0ZWQpO1xuICAgICAgICBzZXRTY3JvbGxBbmltYXRpb25EdXJhdGlvbihkdXJhdGlvbik7XG4gICAgICB9LFxuICAgICAgc2Nyb2xsSW50b1ZpZXc6IGZ1bmN0aW9uIHNjcm9sbEludG9WaWV3KG9wdGlvbnMpIHtcbiAgICAgICAgdmFyIF9yZWYyID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgICAgICAgIGlkID0gX3JlZjIuaWQsXG4gICAgICAgICAgICBfcmVmMiRhbmltYXRlZCA9IF9yZWYyLmFuaW1hdGVkLFxuICAgICAgICAgICAgYW5pbWF0ZWQgPSBfcmVmMiRhbmltYXRlZCA9PT0gdm9pZCAwID8gdHJ1ZSA6IF9yZWYyJGFuaW1hdGVkLFxuICAgICAgICAgICAgX3JlZjIkZHVyYXRpb24gPSBfcmVmMi5kdXJhdGlvbixcbiAgICAgICAgICAgIGR1cmF0aW9uID0gX3JlZjIkZHVyYXRpb24gPT09IHZvaWQgMCA/IEFOSU1BVElPTl9EVVJBVElPTiA6IF9yZWYyJGR1cmF0aW9uO1xuXG4gICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcmFtcyBtaXNzaW5nIGlkLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgc2Nyb2xsZXJSZWYuY3VycmVudC5zZXRBdHRyaWJ1dGUoJ3Njcm9sbC1pbnRvLXZpZXcnLCBpZCk7XG4gICAgICAgIHNldFNjcm9sbFdpdGhBbmltYXRpb24oYW5pbWF0ZWQpO1xuICAgICAgICBzZXRTY3JvbGxBbmltYXRpb25EdXJhdGlvbihkdXJhdGlvbik7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG5cbiAgdmFyIHNjcm9sbGVyU3R5bGUgPSBfZXh0ZW5kcyh7fSwgc3R5bGUpO1xuXG4gIGlmIChzY3JvbGxlclN0eWxlLmhlaWdodCA9PT0gbnVsbCkge1xuICAgIHNjcm9sbGVyU3R5bGUuZmxleCA9IDE7XG4gIH1cblxuICB2YXIgY2xzID0gY3goYmFzZUNscywgYmFzZUNscyArIFwiLVwiICsgKGhvcml6b250YWwgPyAnaG9yaXpvbnRhbCcgOiAndmVydGljYWwnKSwgY2xhc3NOYW1lKTtcbiAgdmFyIGVuZFJlYWNoZWRUaHJlc2hvbGQgPSB0cmFuc2xhdGVUb1B4KG9uRW5kUmVhY2hlZFRocmVzaG9sZCk7XG4gIHJldHVybiBjcmVhdGVFbGVtZW50KFwic2Nyb2xsLXZpZXdcIiwgX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgcmVmOiBzY3JvbGxlclJlZixcbiAgICBjbGFzc05hbWU6IGNscyxcbiAgICBzdHlsZTogT2JqZWN0LmFzc2lnbih7fSwgX2dldFN0eWxlKGNscyksIHNjcm9sbGVyU3R5bGUpLFxuICAgIFwic2Nyb2xsLXRvcFwiOiBzY3JvbGxUb3AsXG4gICAgXCJzY3JvbGwtbGVmdFwiOiBzY3JvbGxMZWZ0LFxuICAgIG9uU2Nyb2xsOiBvblNjcm9sbCA/IGZ1bmN0aW9uIGhhbmRsZVNjcm9sbChlKSB7XG4gICAgICBpZiAob25TY3JvbGwpIHtcbiAgICAgICAgZS5uYXRpdmVFdmVudCA9IHtcbiAgICAgICAgICBnZXQgY29udGVudE9mZnNldCgpIHtcbiAgICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICAgIHg6IGUuZGV0YWlsLnNjcm9sbExlZnQsXG4gICAgICAgICAgICAgIHk6IGUuZGV0YWlsLnNjcm9sbFRvcFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9LFxuXG4gICAgICAgICAgZ2V0IGNvbnRlbnRTaXplKCkge1xuICAgICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgICAgd2lkdGg6IGUuZGV0YWlsLnNjcm9sbFdpZHRoLFxuICAgICAgICAgICAgICBoZWlnaHQ6IGUuZGV0YWlsLnNjcm9sbEhlaWdodFxuICAgICAgICAgICAgfTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfTtcbiAgICAgICAgb25TY3JvbGwoZSk7XG4gICAgICB9XG4gICAgfSA6IG51bGwsXG4gICAgb25TY3JvbGxUb0xvd2VyOiBvbkVuZFJlYWNoZWQsXG4gICAgXCJsb3dlci10aHJlc2hvbGRcIjogZW5kUmVhY2hlZFRocmVzaG9sZCxcbiAgICBcInNjcm9sbC13aXRoLWFuaW1hdGlvblwiOiBzY3JvbGxXaXRoQW5pbWF0aW9uLFxuICAgIFwic2Nyb2xsLWFuaW1hdGlvbi1kdXJhdGlvblwiOiBzY3JvbGxBbmltYXRpb25EdXJhdGlvbixcbiAgICBcInNjcm9sbC14XCI6ICFkaXNhYmxlU2Nyb2xsICYmIGhvcml6b250YWwsXG4gICAgXCJzY3JvbGwteVwiOiAhZGlzYWJsZVNjcm9sbCAmJiAhaG9yaXpvbnRhbCxcbiAgICBcInNjcm9sbC1pbnRvLXZpZXdcIjogc2Nyb2xsSW50b1ZpZXdJZCxcbiAgICBcImVuYWJsZS1mbGV4XCI6IHRydWVcbiAgfSksIGNoaWxkcmVuKTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgd3JhcERlZmF1bHRQcm9wZXJ0aWVzKFNjcm9sbFZpZXcpOyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHRocm90dGxlKGZ1bmMsIHdhaXQpIHtcbiAgdmFyIGN0eDtcbiAgdmFyIGFyZ3M7XG4gIHZhciBydG47XG4gIHZhciB0aW1lb3V0SUQ7XG4gIHZhciBsYXN0ID0gMDtcblxuICBmdW5jdGlvbiBjYWxsKCkge1xuICAgIHRpbWVvdXRJRCA9IDA7XG4gICAgbGFzdCA9ICtuZXcgRGF0ZSgpO1xuICAgIHJ0biA9IGZ1bmMuYXBwbHkoY3R4LCBhcmdzKTtcbiAgICBjdHggPSBudWxsO1xuICAgIGFyZ3MgPSBudWxsO1xuICB9XG5cbiAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICBjdHggPSB0aGlzO1xuICAgIGFyZ3MgPSBhcmd1bWVudHM7XG4gICAgdmFyIGRlbHRhID0gbmV3IERhdGUoKS5nZXRUaW1lKCkgLSBsYXN0O1xuICAgIGlmICghdGltZW91dElEKSBpZiAoZGVsdGEgPj0gd2FpdCkgY2FsbCgpO2Vsc2UgdGltZW91dElEID0gc2V0VGltZW91dChjYWxsLCB3YWl0IC0gZGVsdGEpO1xuICAgIHJldHVybiBydG47XG4gIH07XG59IiwiZnVuY3Rpb24gX2V4dGVuZHMoKSB7IF9leHRlbmRzID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbiAodGFyZ2V0KSB7IGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSB7IHZhciBzb3VyY2UgPSBhcmd1bWVudHNbaV07IGZvciAodmFyIGtleSBpbiBzb3VyY2UpIHsgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzb3VyY2UsIGtleSkpIHsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSB9IH0gcmV0dXJuIHRhcmdldDsgfTsgcmV0dXJuIF9leHRlbmRzLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7IH1cblxuaW1wb3J0IHsgaXNXZWIgfSBmcm9tICd1bml2ZXJzYWwtZW52JztcbnZhciByZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSBpc1dlYiAmJiB0eXBlb2Ygd2luZG93LnJlcXVlc3RBbmltYXRpb25GcmFtZSAhPT0gJ3VuZGVmaW5lZCcgPyB3aW5kb3cucmVxdWVzdEFuaW1hdGlvbkZyYW1lIDogZnVuY3Rpb24gKGpvYikge1xuICByZXR1cm4gc2V0VGltZW91dChqb2IsIDE2KTtcbn07XG52YXIgY2FuY2VsQW5pbWF0aW9uRnJhbWUgPSBpc1dlYiAmJiB0eXBlb2Ygd2luZG93LmNhbmNlbEFuaW1hdGlvbkZyYW1lICE9PSAndW5kZWZpbmVkJyA/IHdpbmRvdy5jYW5jZWxBbmltYXRpb25GcmFtZSA6IGNsZWFyVGltZW91dDtcbnZhciBUWVBFUyA9IHtcbiAgU1RBUlQ6ICdzdGFydCcsXG4gIEVORDogJ2VuZCcsXG4gIFJVTjogJ3J1bicsXG4gIFNUT1A6ICdzdG9wJ1xufTtcbnZhciBlYXNpbmcgPSB7XG4gIGVhc2VPdXRTaW5lOiBmdW5jdGlvbiBlYXNlT3V0U2luZSh4KSB7XG4gICAgcmV0dXJuIE1hdGguc2luKHggKiBNYXRoLlBJIC8gMik7XG4gIH1cbn07XG52YXIgTUlOX0RVUkFUSU9OID0gMTtcblxudmFyIG5vb3AgPSBmdW5jdGlvbiAoKSB7fTtcblxudmFyIFRpbWVyID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gVGltZXIoY29uZmlnKSB7XG4gICAgdGhpcy5jb25maWcgPSB7XG4gICAgICBlYXNpbmc6ICdsaW5lYXInLFxuICAgICAgZHVyYXRpb246IEluZmluaXR5LFxuICAgICAgb25TdGFydDogbm9vcCxcbiAgICAgIG9uUnVuOiBub29wLFxuICAgICAgb25TdG9wOiBub29wLFxuICAgICAgb25FbmQ6IG5vb3BcbiAgICB9O1xuICAgIHRoaXMuaXNmaW5pc2hlZCA9IGZhbHNlO1xuICAgIHRoaXMuc3RhcnQgPSB2b2lkIDA7XG4gICAgdGhpcy5wZXJjZW50ID0gdm9pZCAwO1xuICAgIHRoaXMuZWFzaW5nRm4gPSB2b2lkIDA7XG4gICAgdGhpcy5ub3cgPSB2b2lkIDA7XG4gICAgdGhpcy50ID0gdm9pZCAwO1xuICAgIHRoaXMuZHVyYXRpb24gPSB2b2lkIDA7XG4gICAgdGhpcy5wcm9ncmVzcyA9IHZvaWQgMDtcbiAgICB0aGlzLl9oYXNGaW5pc2hlZFBlcmNlbnQgPSB2b2lkIDA7XG4gICAgdGhpcy5fc3RvcCA9IHZvaWQgMDtcbiAgICB0aGlzLl9yYWYgPSB2b2lkIDA7XG4gICAgdGhpcy5jb25maWcgPSBfZXh0ZW5kcyh7fSwgdGhpcy5jb25maWcsIGNvbmZpZyk7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gVGltZXIucHJvdG90eXBlO1xuXG4gIF9wcm90by5ydW4gPSBmdW5jdGlvbiBydW4oKSB7XG4gICAgdmFyIF90aGlzJGNvbmZpZyA9IHRoaXMuY29uZmlnLFxuICAgICAgICBkdXJhdGlvbiA9IF90aGlzJGNvbmZpZy5kdXJhdGlvbixcbiAgICAgICAgb25TdGFydCA9IF90aGlzJGNvbmZpZy5vblN0YXJ0LFxuICAgICAgICBvblJ1biA9IF90aGlzJGNvbmZpZy5vblJ1bjtcblxuICAgIGlmIChkdXJhdGlvbiA8PSBNSU5fRFVSQVRJT04pIHtcbiAgICAgIHRoaXMuaXNmaW5pc2hlZCA9IHRydWU7XG4gICAgICBvblJ1bih7XG4gICAgICAgIHBlcmNlbnQ6IDFcbiAgICAgIH0pO1xuICAgICAgdGhpcy5zdG9wKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuaXNmaW5pc2hlZCkgcmV0dXJuO1xuICAgIHRoaXMuX2hhc0ZpbmlzaGVkUGVyY2VudCA9IHRoaXMuX3N0b3AgJiYgdGhpcy5fc3RvcC5wZXJjZW50IHx8IDA7XG4gICAgdGhpcy5fc3RvcCA9IG51bGw7XG4gICAgdGhpcy5zdGFydCA9IERhdGUubm93KCk7XG4gICAgdGhpcy5wZXJjZW50ID0gMDtcbiAgICBvblN0YXJ0KHtcbiAgICAgIHBlcmNlbnQ6IDAsXG4gICAgICB0eXBlOiBUWVBFUy5TVEFSVFxuICAgIH0pOyAvLyBlcHNpbG9uIGRldGVybWluZXMgdGhlIHByZWNpc2lvbiBvZiB0aGUgc29sdmVkIHZhbHVlc1xuICAgIC8vIGxldCBlcHNpbG9uID0gMTAwMCAvIDYwIC8gZHVyYXRpb24gLyA0O1xuXG4gICAgdGhpcy5lYXNpbmdGbiA9IGVhc2luZ1t0aGlzLmNvbmZpZy5lYXNpbmddO1xuXG4gICAgdGhpcy5fcnVuKCk7XG4gIH07XG5cbiAgX3Byb3RvLl9ydW4gPSBmdW5jdGlvbiBfcnVuKCkge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB2YXIgX3RoaXMkY29uZmlnMiA9IHRoaXMuY29uZmlnLFxuICAgICAgICBvblJ1biA9IF90aGlzJGNvbmZpZzIub25SdW4sXG4gICAgICAgIG9uU3RvcCA9IF90aGlzJGNvbmZpZzIub25TdG9wO1xuICAgIHRoaXMuX3JhZiAmJiBjYW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9yYWYpO1xuICAgIHRoaXMuX3JhZiA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShmdW5jdGlvbiAoKSB7XG4gICAgICBfdGhpcy5ub3cgPSBEYXRlLm5vdygpO1xuICAgICAgX3RoaXMudCA9IF90aGlzLm5vdyAtIF90aGlzLnN0YXJ0O1xuICAgICAgX3RoaXMuZHVyYXRpb24gPSBfdGhpcy5ub3cgLSBfdGhpcy5zdGFydCA+PSBfdGhpcy5jb25maWcuZHVyYXRpb24gPyBfdGhpcy5jb25maWcuZHVyYXRpb24gOiBfdGhpcy5ub3cgLSBfdGhpcy5zdGFydDtcbiAgICAgIF90aGlzLnByb2dyZXNzID0gX3RoaXMuZWFzaW5nRm4oX3RoaXMuZHVyYXRpb24gLyBfdGhpcy5jb25maWcuZHVyYXRpb24pO1xuICAgICAgX3RoaXMucGVyY2VudCA9IF90aGlzLmR1cmF0aW9uIC8gX3RoaXMuY29uZmlnLmR1cmF0aW9uICsgX3RoaXMuX2hhc0ZpbmlzaGVkUGVyY2VudDtcblxuICAgICAgaWYgKF90aGlzLnBlcmNlbnQgPj0gMSB8fCBfdGhpcy5fc3RvcCkge1xuICAgICAgICBfdGhpcy5wZXJjZW50ID0gX3RoaXMuX3N0b3AgJiYgX3RoaXMuX3N0b3AucGVyY2VudCA/IF90aGlzLl9zdG9wLnBlcmNlbnQgOiAxO1xuICAgICAgICBfdGhpcy5kdXJhdGlvbiA9IF90aGlzLl9zdG9wICYmIF90aGlzLl9zdG9wLmR1cmF0aW9uID8gX3RoaXMuX3N0b3AuZHVyYXRpb24gOiBfdGhpcy5kdXJhdGlvbjtcbiAgICAgICAgb25SdW4oe1xuICAgICAgICAgIHBlcmNlbnQ6IF90aGlzLnByb2dyZXNzLFxuICAgICAgICAgIG9yaWdpblBlcmNlbnQ6IF90aGlzLnBlcmNlbnQsXG4gICAgICAgICAgdDogX3RoaXMudCxcbiAgICAgICAgICB0eXBlOiBUWVBFUy5SVU5cbiAgICAgICAgfSk7XG4gICAgICAgIG9uU3RvcCh7XG4gICAgICAgICAgcGVyY2VudDogX3RoaXMucGVyY2VudCxcbiAgICAgICAgICB0OiBfdGhpcy50LFxuICAgICAgICAgIHR5cGU6IFRZUEVTLlNUT1BcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKF90aGlzLnBlcmNlbnQgPj0gMSkge1xuICAgICAgICAgIF90aGlzLmlzZmluaXNoZWQgPSB0cnVlO1xuXG4gICAgICAgICAgX3RoaXMuc3RvcCgpO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICBvblJ1bih7XG4gICAgICAgIHBlcmNlbnQ6IF90aGlzLnByb2dyZXNzLFxuICAgICAgICBvcmlnaW5QZXJjZW50OiBfdGhpcy5wZXJjZW50LFxuICAgICAgICB0OiBfdGhpcy50LFxuICAgICAgICB0eXBlOiBUWVBFUy5SVU5cbiAgICAgIH0pO1xuXG4gICAgICBfdGhpcy5fcnVuKCk7XG4gICAgfSk7XG4gIH07XG5cbiAgX3Byb3RvLnN0b3AgPSBmdW5jdGlvbiBzdG9wKCkge1xuICAgIHZhciBvbkVuZCA9IHRoaXMuY29uZmlnLm9uRW5kO1xuICAgIHRoaXMuX3N0b3AgPSB7XG4gICAgICBwZXJjZW50OiB0aGlzLnBlcmNlbnQsXG4gICAgICBub3c6IHRoaXMubm93XG4gICAgfTtcbiAgICBvbkVuZCh7XG4gICAgICBwZXJjZW50OiAxLFxuICAgICAgdDogdGhpcy50LFxuICAgICAgdHlwZTogVFlQRVMuRU5EXG4gICAgfSk7XG4gICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUodGhpcy5fcmFmKTtcbiAgfTtcblxuICByZXR1cm4gVGltZXI7XG59KCk7XG5cbmV4cG9ydCBkZWZhdWx0IFRpbWVyOyIsImV4cG9ydCB7fTsiLCJ2YXIgREVGQVVMVF9FTkRfUkVBQ0hFRF9USFJFU0hPTEQgPSA1MDA7XG52YXIgREVGQVVMVF9TQ1JPTExfQ0FMTEJBQ0tfVEhST1RUTEUgPSA1MDtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdyYXBEZWZhdWx0UHJvcGVydGllcyhTY3JvbGxWaWV3KSB7XG4gIFNjcm9sbFZpZXcuZGVmYXVsdFByb3BzID0ge1xuICAgIHNjcm9sbEV2ZW50VGhyb3R0bGU6IERFRkFVTFRfU0NST0xMX0NBTExCQUNLX1RIUk9UVExFLFxuICAgIG9uRW5kUmVhY2hlZFRocmVzaG9sZDogREVGQVVMVF9FTkRfUkVBQ0hFRF9USFJFU0hPTEQsXG4gICAgc2hvd3NIb3Jpem9udGFsU2Nyb2xsSW5kaWNhdG9yOiB0cnVlLFxuICAgIHNob3dzVmVydGljYWxTY3JvbGxJbmRpY2F0b3I6IHRydWUsXG4gICAgY2xhc3NOYW1lOiAncmF4LXNjcm9sbHZpZXcnXG4gIH07XG4gIFNjcm9sbFZpZXcuZGlzcGxheU5hbWUgPSAnU2Nyb2xsVmlldyc7XG4gIHJldHVybiBTY3JvbGxWaWV3O1xufSIsImZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYsIHVzZVJlZiwgdXNlSW1wZXJhdGl2ZUhhbmRsZSB9IGZyb20gJ3JheCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgVGltZXIgZnJvbSAnLi4vdGltZXInO1xuaW1wb3J0IHRocm90dGxlIGZyb20gJy4uL3Rocm90dGxlJztcbmltcG9ydCB3cmFwRGVmYXVsdFByb3BlcnRpZXMgZnJvbSAnLi4vdXRpbHMvd3JhcERlZmF1bHRQcm9wZXJ0aWVzJztcbmltcG9ydCBpbmRleFN0eWxlU2hlZXQgZnJvbSAnLi4vaW5kZXguY3NzJztcbnZhciBfc3R5bGVTaGVldCA9IGluZGV4U3R5bGVTaGVldDtcblxuZnVuY3Rpb24gX2dldENsYXNzTmFtZSgpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IFtdO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50c1swXTtcbiAgdmFyIHR5cGUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJncykuc2xpY2UoOCwgLTEpLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgYXJncyA9IGFyZ3MudHJpbSgpO1xuICAgIGFyZ3MgJiYgY2xhc3NOYW1lLnB1c2goYXJncyk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2FycmF5Jykge1xuICAgIGFyZ3MuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7XG4gICAgICBjbHMgPSBfZ2V0Q2xhc3NOYW1lKGNscykudHJpbSgpO1xuICAgICAgY2xzICYmIGNsYXNzTmFtZS5wdXNoKGNscyk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBmb3IgKHZhciBrIGluIGFyZ3MpIHtcbiAgICAgIGsgPSBrLnRyaW0oKTtcblxuICAgICAgaWYgKGsgJiYgYXJncy5oYXNPd25Qcm9wZXJ0eShrKSAmJiBhcmdzW2tdKSB7XG4gICAgICAgIGNsYXNzTmFtZS5wdXNoKGspO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbGFzc05hbWUuam9pbignICcpLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gX2dldFN0eWxlKGNsYXNzTmFtZUV4cHJlc3Npb24pIHtcbiAgdmFyIGNhY2hlID0gX3N0eWxlU2hlZXQuX19jYWNoZSB8fCAoX3N0eWxlU2hlZXQuX19jYWNoZSA9IHt9KTtcblxuICB2YXIgY2xhc3NOYW1lID0gX2dldENsYXNzTmFtZShjbGFzc05hbWVFeHByZXNzaW9uKTtcblxuICB2YXIgY2xhc3NOYW1lQXJyID0gY2xhc3NOYW1lLnNwbGl0KC9cXHMrLyk7XG4gIHZhciBzdHlsZSA9IGNhY2hlW2NsYXNzTmFtZV07XG5cbiAgaWYgKCFzdHlsZSkge1xuICAgIHN0eWxlID0ge307XG5cbiAgICBpZiAoY2xhc3NOYW1lQXJyLmxlbmd0aCA9PT0gMSkge1xuICAgICAgc3R5bGUgPSBfc3R5bGVTaGVldFtjbGFzc05hbWVBcnJbMF0udHJpbSgpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3NOYW1lQXJyLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgICB2YXIgdmFsdWUgPSBfc3R5bGVTaGVldFtjbHMudHJpbSgpXTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHN0eWxlID0gT2JqZWN0LmFzc2lnbihzdHlsZSwgX3N0eWxlU2hlZXRbY2xzLnRyaW0oKV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjYWNoZVtjbGFzc05hbWVdID0gc3R5bGU7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59XG5cbnZhciBGVUxMX1dJRFRIID0gNzUwO1xudmFyIEFOSU1BVElPTl9EVVJBVElPTiA9IDQwMDtcbnZhciBTVFlMRV9OT0RFX0lEID0gJ3JheC1zY3JvbGx2aWV3LXN0eWxlJztcbnZhciBiYXNlQ2xzID0gJ3JheC1zY3JvbGx2aWV3JztcbnZhciBwaXhlbFJhdGlvO1xuLyoqXG4gKiBTY3JvbGwgdG8gc29tZSBwb3NpdGlvbiBtZXRob2RcbiAqIEBwYXJhbSBzY3JvbGxlclJlZiB0aGUgc2Nyb2xsIGNvbnRhaW5lciByZWZcbiAqIEBwYXJhbSB4IG9mZnNldCB4XG4gKiBAcGFyYW0geSBvZmZzZXQgeVxuICogQHBhcmFtIGFuaW1hdGVkIGRvZXMgaXQgbmVlZCBhbmltYXRlZFxuICogQHBhcmFtIGR1cmF0aW9uIGFuaW1hdGUgZHVyYXRpb25cbiAqL1xuXG5mdW5jdGlvbiBfc2Nyb2xsVG8oc2Nyb2xsZXJSZWYsIHgsIHksIGFuaW1hdGVkLCBkdXJhdGlvbikge1xuICB2YXIgc2Nyb2xsVmlldyA9IHNjcm9sbGVyUmVmLmN1cnJlbnQ7XG4gIHZhciBzY3JvbGxMZWZ0ID0gc2Nyb2xsVmlldy5zY3JvbGxMZWZ0O1xuICB2YXIgc2Nyb2xsVG9wID0gc2Nyb2xsVmlldy5zY3JvbGxUb3A7XG5cbiAgaWYgKGFuaW1hdGVkKSB7XG4gICAgdmFyIHRpbWVyID0gbmV3IFRpbWVyKHtcbiAgICAgIGR1cmF0aW9uOiBkdXJhdGlvbixcbiAgICAgIGVhc2luZzogJ2Vhc2VPdXRTaW5lJyxcbiAgICAgIG9uUnVuOiBmdW5jdGlvbiBvblJ1bihlKSB7XG4gICAgICAgIGlmIChzY3JvbGxlclJlZiAmJiBzY3JvbGxlclJlZi5jdXJyZW50KSB7XG4gICAgICAgICAgaWYgKHggPj0gMCkge1xuICAgICAgICAgICAgc2Nyb2xsZXJSZWYuY3VycmVudC5zY3JvbGxMZWZ0ID0gc2Nyb2xsTGVmdCArIGUucGVyY2VudCAqICh4IC0gc2Nyb2xsTGVmdCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKHkgPj0gMCkge1xuICAgICAgICAgICAgc2Nyb2xsZXJSZWYuY3VycmVudC5zY3JvbGxUb3AgPSBzY3JvbGxUb3AgKyBlLnBlcmNlbnQgKiAoeSAtIHNjcm9sbFRvcCk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfSk7XG4gICAgdGltZXIucnVuKCk7XG4gIH0gZWxzZSB7XG4gICAgaWYgKHggPj0gMCkge1xuICAgICAgc2Nyb2xsZXJSZWYuY3VycmVudC5zY3JvbGxMZWZ0ID0geDtcbiAgICB9XG5cbiAgICBpZiAoeSA+PSAwKSB7XG4gICAgICBzY3JvbGxlclJlZi5jdXJyZW50LnNjcm9sbFRvcCA9IHk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIGdldFBpeGVsUmF0aW8oKSB7XG4gIGlmIChwaXhlbFJhdGlvKSB7XG4gICAgcmV0dXJuIHBpeGVsUmF0aW87XG4gIH1cblxuICBwaXhlbFJhdGlvID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LmNsaWVudFdpZHRoIC8gRlVMTF9XSURUSDtcbiAgcmV0dXJuIHBpeGVsUmF0aW87XG59XG5cbmZ1bmN0aW9uIHRyYW5zbGF0ZVRvUHgob3JpZ2luKSB7XG4gIHZhciBwaXhlbFJhdGlvID0gZ2V0UGl4ZWxSYXRpbygpO1xuXG4gIGlmICh0eXBlb2Ygb3JpZ2luID09PSAnbnVtYmVyJykge1xuICAgIHJldHVybiBvcmlnaW4gKiBwaXhlbFJhdGlvO1xuICB9XG5cbiAgdmFyIG1hdGNoZWQgPSAvXihcXGQrKShyezAsMX1weCl7MCwxfSQvLmV4ZWMob3JpZ2luKTtcblxuICBpZiAobWF0Y2hlZCkge1xuICAgIGlmICghbWF0Y2hlZFsyXSkge1xuICAgICAgcmV0dXJuIHBhcnNlSW50KG1hdGNoZWRbMV0pICogcGl4ZWxSYXRpbztcbiAgICB9XG5cbiAgICBpZiAobWF0Y2hlZFsyXSA9PT0gJ3JweCcpIHtcbiAgICAgIHJldHVybiBwYXJzZUludChtYXRjaGVkWzFdKSAqIHBpeGVsUmF0aW87XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoZWRbMl0gPT09ICdweCcpIHtcbiAgICAgIHJldHVybiBwYXJzZUludChtYXRjaGVkWzFdKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gMDtcbn1cblxudmFyIFNjcm9sbFZpZXcgPSBmb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBfY3g7XG5cbiAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsXG4gICAgICBob3Jpem9udGFsID0gcHJvcHMuaG9yaXpvbnRhbCxcbiAgICAgIGNvbnRlbnRDb250YWluZXJTdHlsZSA9IHByb3BzLmNvbnRlbnRDb250YWluZXJTdHlsZSxcbiAgICAgIGRpc2FibGVTY3JvbGwgPSBwcm9wcy5kaXNhYmxlU2Nyb2xsLFxuICAgICAgc2Nyb2xsRXZlbnRUaHJvdHRsZSA9IHByb3BzLnNjcm9sbEV2ZW50VGhyb3R0bGUsXG4gICAgICBzaG93c0hvcml6b250YWxTY3JvbGxJbmRpY2F0b3IgPSBwcm9wcy5zaG93c0hvcml6b250YWxTY3JvbGxJbmRpY2F0b3IsXG4gICAgICBzaG93c1ZlcnRpY2FsU2Nyb2xsSW5kaWNhdG9yID0gcHJvcHMuc2hvd3NWZXJ0aWNhbFNjcm9sbEluZGljYXRvcixcbiAgICAgIG9uRW5kUmVhY2hlZCA9IHByb3BzLm9uRW5kUmVhY2hlZCxcbiAgICAgIG9uRW5kUmVhY2hlZFRocmVzaG9sZCA9IHByb3BzLm9uRW5kUmVhY2hlZFRocmVzaG9sZCxcbiAgICAgIG9uU2Nyb2xsID0gcHJvcHMub25TY3JvbGwsXG4gICAgICBjaGlsZHJlbiA9IHByb3BzLmNoaWxkcmVuO1xuICB2YXIgbGFzdFNjcm9sbERpc3RhbmNlID0gdXNlUmVmKDApO1xuICB2YXIgbGFzdFNjcm9sbENvbnRlbnRTaXplID0gdXNlUmVmKDApO1xuICB2YXIgc2Nyb2xsZXJOb2RlU2l6ZSA9IHVzZVJlZigwKTtcbiAgdmFyIHNjcm9sbGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICB2YXIgY29udGVudENvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcblxuICB2YXIgaGFuZGxlU2Nyb2xsID0gZnVuY3Rpb24gKGUpIHtcbiAgICBpZiAocHJvcHMub25TY3JvbGwpIHtcbiAgICAgIGUubmF0aXZlRXZlbnQgPSB7XG4gICAgICAgIGdldCBjb250ZW50T2Zmc2V0KCkge1xuICAgICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB4OiBlLnRhcmdldC5zY3JvbGxMZWZ0LFxuICAgICAgICAgICAgeTogZS50YXJnZXQuc2Nyb2xsVG9wXG4gICAgICAgICAgfTtcbiAgICAgICAgfSxcblxuICAgICAgICBnZXQgY29udGVudFNpemUoKSB7XG4gICAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIHdpZHRoOiBlLnRhcmdldC5zY3JvbGxXaWR0aCxcbiAgICAgICAgICAgIGhlaWdodDogZS50YXJnZXQuc2Nyb2xsSGVpZ2h0XG4gICAgICAgICAgfTtcbiAgICAgICAgfVxuXG4gICAgICB9O1xuICAgICAgb25TY3JvbGwoZSk7XG4gICAgfVxuXG4gICAgaWYgKG9uRW5kUmVhY2hlZCkge1xuICAgICAgdmFyIHNjcm9sbGVyTm9kZSA9IHNjcm9sbGVyUmVmLmN1cnJlbnQ7XG4gICAgICBzY3JvbGxlck5vZGVTaXplLmN1cnJlbnQgPSBob3Jpem9udGFsID8gc2Nyb2xsZXJOb2RlLm9mZnNldFdpZHRoIDogc2Nyb2xsZXJOb2RlLm9mZnNldEhlaWdodDsgLy8gTk9URe+8mmluIGlPUzcvOCBvZmZzZXRIZWlnaHQvV2lkdGggaXMgaXMgaW5hY2N1cmF0ZSDvvIggdXNlIHNjcm9sbEhlaWdodC9XaWR0aCDvvIlcblxuICAgICAgdmFyIHNjcm9sbENvbnRlbnRTaXplID0gaG9yaXpvbnRhbCA/IHNjcm9sbGVyTm9kZS5zY3JvbGxXaWR0aCA6IHNjcm9sbGVyTm9kZS5zY3JvbGxIZWlnaHQ7XG4gICAgICB2YXIgc2Nyb2xsRGlzdGFuY2UgPSBob3Jpem9udGFsID8gc2Nyb2xsZXJOb2RlLnNjcm9sbExlZnQgOiBzY3JvbGxlck5vZGUuc2Nyb2xsVG9wO1xuICAgICAgdmFyIGVuZFJlYWNoZWRUaHJlc2hvbGQgPSB0cmFuc2xhdGVUb1B4KG9uRW5kUmVhY2hlZFRocmVzaG9sZCk7XG4gICAgICB2YXIgaXNFbmRSZWFjaGVkID0gc2Nyb2xsQ29udGVudFNpemUgLSBzY3JvbGxEaXN0YW5jZSAtIHNjcm9sbGVyTm9kZVNpemUuY3VycmVudCA8IGVuZFJlYWNoZWRUaHJlc2hvbGQ7XG4gICAgICB2YXIgaXNTY3JvbGxUb0VuZCA9IHNjcm9sbERpc3RhbmNlID4gbGFzdFNjcm9sbERpc3RhbmNlLmN1cnJlbnQ7XG4gICAgICB2YXIgaXNMb2FkZWRNb3JlQ29udGVudCA9IHNjcm9sbENvbnRlbnRTaXplICE9IGxhc3RTY3JvbGxDb250ZW50U2l6ZS5jdXJyZW50O1xuXG4gICAgICBpZiAoaXNFbmRSZWFjaGVkICYmIGlzU2Nyb2xsVG9FbmQgJiYgaXNMb2FkZWRNb3JlQ29udGVudCkge1xuICAgICAgICBsYXN0U2Nyb2xsQ29udGVudFNpemUuY3VycmVudCA9IHNjcm9sbENvbnRlbnRTaXplO1xuICAgICAgICBwcm9wcy5vbkVuZFJlYWNoZWQoZSk7XG4gICAgICB9XG5cbiAgICAgIGxhc3RTY3JvbGxEaXN0YW5jZS5jdXJyZW50ID0gc2Nyb2xsRGlzdGFuY2U7XG4gICAgfVxuICB9O1xuXG4gIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9uYXRpdmVOb2RlOiBzY3JvbGxlclJlZi5jdXJyZW50LFxuICAgICAgcmVzZXRTY3JvbGw6IGZ1bmN0aW9uIHJlc2V0U2Nyb2xsKCkge1xuICAgICAgICBsYXN0U2Nyb2xsQ29udGVudFNpemUuY3VycmVudCA9IDA7XG4gICAgICAgIGxhc3RTY3JvbGxEaXN0YW5jZS5jdXJyZW50ID0gMDtcbiAgICAgIH0sXG4gICAgICBzY3JvbGxUbzogZnVuY3Rpb24gc2Nyb2xsVG8ob3B0aW9ucykge1xuICAgICAgICB2YXIgX3JlZiA9IG9wdGlvbnMgfHwge30sXG4gICAgICAgICAgICBfcmVmJHggPSBfcmVmLngsXG4gICAgICAgICAgICB4ID0gX3JlZiR4ID09PSB2b2lkIDAgPyAwIDogX3JlZiR4LFxuICAgICAgICAgICAgX3JlZiR5ID0gX3JlZi55LFxuICAgICAgICAgICAgeSA9IF9yZWYkeSA9PT0gdm9pZCAwID8gMCA6IF9yZWYkeSxcbiAgICAgICAgICAgIF9yZWYkYW5pbWF0ZWQgPSBfcmVmLmFuaW1hdGVkLFxuICAgICAgICAgICAgYW5pbWF0ZWQgPSBfcmVmJGFuaW1hdGVkID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZiRhbmltYXRlZCxcbiAgICAgICAgICAgIF9yZWYkZHVyYXRpb24gPSBfcmVmLmR1cmF0aW9uLFxuICAgICAgICAgICAgZHVyYXRpb24gPSBfcmVmJGR1cmF0aW9uID09PSB2b2lkIDAgPyBBTklNQVRJT05fRFVSQVRJT04gOiBfcmVmJGR1cmF0aW9uO1xuXG4gICAgICAgIF9zY3JvbGxUbyhzY3JvbGxlclJlZiwgdHJhbnNsYXRlVG9QeCh4KSwgdHJhbnNsYXRlVG9QeCh5KSwgYW5pbWF0ZWQsIGR1cmF0aW9uKTtcbiAgICAgIH0sXG4gICAgICBzY3JvbGxJbnRvVmlldzogZnVuY3Rpb24gc2Nyb2xsSW50b1ZpZXcob3B0aW9ucykge1xuICAgICAgICB2YXIgX3JlZjIgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgICAgICAgaWQgPSBfcmVmMi5pZCxcbiAgICAgICAgICAgIF9yZWYyJGFuaW1hdGVkID0gX3JlZjIuYW5pbWF0ZWQsXG4gICAgICAgICAgICBhbmltYXRlZCA9IF9yZWYyJGFuaW1hdGVkID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZjIkYW5pbWF0ZWQsXG4gICAgICAgICAgICBfcmVmMiRkdXJhdGlvbiA9IF9yZWYyLmR1cmF0aW9uLFxuICAgICAgICAgICAgZHVyYXRpb24gPSBfcmVmMiRkdXJhdGlvbiA9PT0gdm9pZCAwID8gQU5JTUFUSU9OX0RVUkFUSU9OIDogX3JlZjIkZHVyYXRpb247XG5cbiAgICAgICAgaWYgKCFpZCkge1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGFyYW1zIG1pc3NpbmcgaWQuJyk7XG4gICAgICAgIH1cblxuICAgICAgICB2YXIgdGFyZ2V0RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTtcblxuICAgICAgICBpZiAodGFyZ2V0RWxlbWVudCkge1xuICAgICAgICAgIF9zY3JvbGxUbyhzY3JvbGxlclJlZiwgdGFyZ2V0RWxlbWVudC5vZmZzZXRMZWZ0LCB0YXJnZXRFbGVtZW50Lm9mZnNldFRvcCwgYW5pbWF0ZWQsIGR1cmF0aW9uKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG4gIH0pO1xuXG4gIGlmIChzdHlsZSkge1xuICAgIHZhciBjaGlsZExheW91dFByb3BzID0gWydhbGlnbkl0ZW1zJywgJ2p1c3RpZnlDb250ZW50J10uZmlsdGVyKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICByZXR1cm4gc3R5bGVbcHJvcF0gIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcblxuICAgIGlmIChjaGlsZExheW91dFByb3BzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgY29uc29sZS53YXJuKCdTY3JvbGxWaWV3IGNoaWxkIGxheW91dCAoJyArIEpTT04uc3RyaW5naWZ5KGNoaWxkTGF5b3V0UHJvcHMpICsgJykgbXVzdCBiZSBhcHBsaWVkIHRocm91Z2ggdGhlIGNvbnRlbnRDb250YWluZXJTdHlsZSBwcm9wLicpO1xuICAgIH1cbiAgfVxuXG4gIHZhciBjb250ZW50Q29udGFpbmVyID0gY3JlYXRlRWxlbWVudChWaWV3LCB7XG4gICAgcmVmOiBjb250ZW50Q29udGFpbmVyUmVmLFxuICAgIGNsYXNzTmFtZTogY3goKF9jeCA9IHt9LCBfY3hbYmFzZUNscyArIFwiLWNvbnRlbnQtY29udGFpbmVyLWhvcml6b250YWxcIl0gPSBob3Jpem9udGFsLCBfY3hbYmFzZUNscyArIFwiLXdlYmNvbnRhaW5lclwiXSA9ICFob3Jpem9udGFsLCBfY3gpKSxcbiAgICBzdHlsZTogT2JqZWN0LmFzc2lnbih7fSwgX2dldFN0eWxlKGN4KChfY3ggPSB7fSwgX2N4W2Jhc2VDbHMgKyBcIi1jb250ZW50LWNvbnRhaW5lci1ob3Jpem9udGFsXCJdID0gaG9yaXpvbnRhbCwgX2N4W2Jhc2VDbHMgKyBcIi13ZWJjb250YWluZXJcIl0gPSAhaG9yaXpvbnRhbCwgX2N4KSkpLCBjb250ZW50Q29udGFpbmVyU3R5bGUpXG4gIH0sIGNoaWxkcmVuKTtcblxuICB2YXIgc2Nyb2xsZXJTdHlsZSA9IF9leHRlbmRzKHt9LCBzdHlsZSk7XG5cbiAgaWYgKHNjcm9sbGVyU3R5bGUuaGVpZ2h0ID09PSBudWxsIHx8IHNjcm9sbGVyU3R5bGUuaGVpZ2h0ID09PSB1bmRlZmluZWQpIHtcbiAgICBzY3JvbGxlclN0eWxlLmZsZXggPSAxO1xuICB9XG5cbiAgdmFyIGNscyA9IGN4KGJhc2VDbHMsIGJhc2VDbHMgKyBcIi1cIiArIChob3Jpem9udGFsID8gJ2hvcml6b250YWwnIDogJ3ZlcnRpY2FsJyksIGNsYXNzTmFtZSk7XG4gIHZhciBzaG93c1Njcm9sbEluZGljYXRvciA9IGhvcml6b250YWwgPyBzaG93c0hvcml6b250YWxTY3JvbGxJbmRpY2F0b3IgOiBzaG93c1ZlcnRpY2FsU2Nyb2xsSW5kaWNhdG9yO1xuICB7XG4gICAgaWYgKCFzaG93c1Njcm9sbEluZGljYXRvciAmJiB0eXBlb2YgZG9jdW1lbnQgIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCA9PT0gJ2Z1bmN0aW9uJyAmJiAhZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoU1RZTEVfTk9ERV9JRCkpIHtcbiAgICAgIHZhciBzdHlsZU5vZGUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdzdHlsZScpO1xuICAgICAgc3R5bGVOb2RlLmlkID0gU1RZTEVfTk9ERV9JRDtcbiAgICAgIGRvY3VtZW50LmhlYWQuYXBwZW5kQ2hpbGQoc3R5bGVOb2RlKTtcbiAgICAgIHN0eWxlTm9kZS5pbm5lckhUTUwgPSBcIi5cIiArIGJhc2VDbHMgKyBcIjo6LXdlYmtpdC1zY3JvbGxiYXJ7ZGlzcGxheTogbm9uZTt9XCI7XG4gICAgfVxuXG4gICAgc2Nyb2xsZXJTdHlsZS5XZWJraXRPdmVyZmxvd1Njcm9sbGluZyA9ICd0b3VjaCc7XG5cbiAgICBpZiAoaG9yaXpvbnRhbCkge1xuICAgICAgc2Nyb2xsZXJTdHlsZS5vdmVyZmxvd1ggPSAnc2Nyb2xsJztcbiAgICAgIHNjcm9sbGVyU3R5bGUub3ZlcmZsb3dZID0gJ2hpZGRlbic7XG4gICAgfSBlbHNlIHtcbiAgICAgIHNjcm9sbGVyU3R5bGUub3ZlcmZsb3dYID0gJ2hpZGRlbic7XG4gICAgICBzY3JvbGxlclN0eWxlLm92ZXJmbG93WSA9ICdzY3JvbGwnO1xuICAgIH1cblxuICAgIGlmIChkaXNhYmxlU2Nyb2xsKSB7XG4gICAgICBzY3JvbGxlclN0eWxlLm92ZXJmbG93ID0gJ2hpZGRlbic7XG4gICAgfVxuXG4gICAgdmFyIHdlYlByb3BzID0gX2V4dGVuZHMoe30sIHByb3BzKTtcblxuICAgIGRlbGV0ZSB3ZWJQcm9wcy5vbkVuZFJlYWNoZWRUaHJlc2hvbGQ7XG4gICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoVmlldywgX2V4dGVuZHMoe30sIHdlYlByb3BzLCB7XG4gICAgICByZWY6IHNjcm9sbGVyUmVmLFxuICAgICAgY2xhc3NOYW1lOiBjbHMsXG4gICAgICBzdHlsZTogT2JqZWN0LmFzc2lnbih7fSwgX2dldFN0eWxlKGNscyksIHNjcm9sbGVyU3R5bGUpLFxuICAgICAgb25TY3JvbGw6IHNjcm9sbEV2ZW50VGhyb3R0bGUgPyB0aHJvdHRsZShoYW5kbGVTY3JvbGwsIHNjcm9sbEV2ZW50VGhyb3R0bGUpIDogaGFuZGxlU2Nyb2xsXG4gICAgfSksIGNvbnRlbnRDb250YWluZXIpO1xuICB9XG59KTtcbmV4cG9ydCBkZWZhdWx0IHdyYXBEZWZhdWx0UHJvcGVydGllcyhTY3JvbGxWaWV3KTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBmb3J3YXJkUmVmLCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VJbXBlcmF0aXZlSGFuZGxlIH0gZnJvbSAncmF4JztcbmltcG9ydCBWaWV3IGZyb20gJ3JheC12aWV3JztcbmltcG9ydCBSZWZyZXNoQ29udHJvbCBmcm9tICdyYXgtcmVmcmVzaGNvbnRyb2wnO1xuaW1wb3J0IGdldEVsZW1lbnRCeUlkIGZyb20gJ3JheC1nZXQtZWxlbWVudC1ieS1pZCc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcyc7XG5pbXBvcnQgd3JhcERlZmF1bHRQcm9wZXJ0aWVzIGZyb20gJy4uL3V0aWxzL3dyYXBEZWZhdWx0UHJvcGVydGllcyc7XG5pbXBvcnQgaW5kZXhTdHlsZVNoZWV0IGZyb20gJy4uL2luZGV4LmNzcyc7XG52YXIgX3N0eWxlU2hlZXQgPSBpbmRleFN0eWxlU2hlZXQ7XG5cbmZ1bmN0aW9uIF9nZXRDbGFzc05hbWUoKSB7XG4gIHZhciBjbGFzc05hbWUgPSBbXTtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHNbMF07XG4gIHZhciB0eXBlID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3MpLnNsaWNlKDgsIC0xKS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xuICAgIGFyZ3MgPSBhcmdzLnRyaW0oKTtcbiAgICBhcmdzICYmIGNsYXNzTmFtZS5wdXNoKGFyZ3MpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcnJheScpIHtcbiAgICBhcmdzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgY2xzID0gX2dldENsYXNzTmFtZShjbHMpLnRyaW0oKTtcbiAgICAgIGNscyAmJiBjbGFzc05hbWUucHVzaChjbHMpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgZm9yICh2YXIgayBpbiBhcmdzKSB7XG4gICAgICBrID0gay50cmltKCk7XG5cbiAgICAgIGlmIChrICYmIGFyZ3MuaGFzT3duUHJvcGVydHkoaykgJiYgYXJnc1trXSkge1xuICAgICAgICBjbGFzc05hbWUucHVzaChrKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xhc3NOYW1lLmpvaW4oJyAnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIF9nZXRTdHlsZShjbGFzc05hbWVFeHByZXNzaW9uKSB7XG4gIHZhciBjYWNoZSA9IF9zdHlsZVNoZWV0Ll9fY2FjaGUgfHwgKF9zdHlsZVNoZWV0Ll9fY2FjaGUgPSB7fSk7XG5cbiAgdmFyIGNsYXNzTmFtZSA9IF9nZXRDbGFzc05hbWUoY2xhc3NOYW1lRXhwcmVzc2lvbik7XG5cbiAgdmFyIGNsYXNzTmFtZUFyciA9IGNsYXNzTmFtZS5zcGxpdCgvXFxzKy8pO1xuICB2YXIgc3R5bGUgPSBjYWNoZVtjbGFzc05hbWVdO1xuXG4gIGlmICghc3R5bGUpIHtcbiAgICBzdHlsZSA9IHt9O1xuXG4gICAgaWYgKGNsYXNzTmFtZUFyci5sZW5ndGggPT09IDEpIHtcbiAgICAgIHN0eWxlID0gX3N0eWxlU2hlZXRbY2xhc3NOYW1lQXJyWzBdLnRyaW0oKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzTmFtZUFyci5mb3JFYWNoKGZ1bmN0aW9uIChjbHMpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gX3N0eWxlU2hlZXRbY2xzLnRyaW0oKV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBzdHlsZSA9IE9iamVjdC5hc3NpZ24oc3R5bGUsIF9zdHlsZVNoZWV0W2Nscy50cmltKCldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2FjaGVbY2xhc3NOYW1lXSA9IHN0eWxlO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG4vKiBnbG9iYWwgX193ZWV4X3YyX18gKi9cbnZhciBpc1dlZXhWMiA9IHR5cGVvZiBfX3dlZXhfdjJfXyA9PT0gJ29iamVjdCc7XG52YXIgYmFzZUNscyA9ICdyYXgtc2Nyb2xsdmlldyc7XG5cbmZ1bmN0aW9uIF9zY3JvbGxUbyhzY3JvbGxlclJlZikge1xuICB2YXIgX3Njcm9sbGVyUmVmJGN1cnJlbnQ7XG5cbiAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgIGFyZ3NbX2tleSAtIDFdID0gYXJndW1lbnRzW19rZXldO1xuICB9XG5cbiAgKF9zY3JvbGxlclJlZiRjdXJyZW50ID0gc2Nyb2xsZXJSZWYuY3VycmVudCkuc2Nyb2xsVG8uYXBwbHkoX3Njcm9sbGVyUmVmJGN1cnJlbnQsIGFyZ3MpO1xufVxuXG52YXIgU2Nyb2xsVmlldyA9IGZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsXG4gICAgICBob3Jpem9udGFsID0gcHJvcHMuaG9yaXpvbnRhbCxcbiAgICAgIGNvbnRlbnRDb250YWluZXJTdHlsZSA9IHByb3BzLmNvbnRlbnRDb250YWluZXJTdHlsZSxcbiAgICAgIHNob3dzSG9yaXpvbnRhbFNjcm9sbEluZGljYXRvciA9IHByb3BzLnNob3dzSG9yaXpvbnRhbFNjcm9sbEluZGljYXRvcixcbiAgICAgIHNob3dzVmVydGljYWxTY3JvbGxJbmRpY2F0b3IgPSBwcm9wcy5zaG93c1ZlcnRpY2FsU2Nyb2xsSW5kaWNhdG9yLFxuICAgICAgb25FbmRSZWFjaGVkID0gcHJvcHMub25FbmRSZWFjaGVkLFxuICAgICAgb25FbmRSZWFjaGVkVGhyZXNob2xkID0gcHJvcHMub25FbmRSZWFjaGVkVGhyZXNob2xkLFxuICAgICAgb25TY3JvbGwgPSBwcm9wcy5vblNjcm9sbCxcbiAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW47XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKDApLFxuICAgICAgbG9hZG1vcmVyZXRyeSA9IF91c2VTdGF0ZVswXSxcbiAgICAgIHNldExvYWRtb3JlcmV0cnkgPSBfdXNlU3RhdGVbMV07XG5cbiAgdmFyIHNjcm9sbGVyUmVmID0gdXNlUmVmKG51bGwpO1xuICB2YXIgY29udGVudENvbnRhaW5lclJlZiA9IHVzZVJlZihudWxsKTtcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgX25hdGl2ZU5vZGU6IHNjcm9sbGVyUmVmLmN1cnJlbnQsXG4gICAgICByZXNldFNjcm9sbDogZnVuY3Rpb24gcmVzZXRTY3JvbGwoKSB7XG4gICAgICAgIHNldExvYWRtb3JlcmV0cnkobG9hZG1vcmVyZXRyeSArIDEpO1xuICAgICAgfSxcbiAgICAgIHNjcm9sbFRvOiBmdW5jdGlvbiBzY3JvbGxUbyhvcHRpb25zKSB7XG4gICAgICAgIHZhciBfcmVmID0gb3B0aW9ucyB8fCB7fSxcbiAgICAgICAgICAgIF9yZWYkeCA9IF9yZWYueCxcbiAgICAgICAgICAgIHggPSBfcmVmJHggPT09IHZvaWQgMCA/IDAgOiBfcmVmJHgsXG4gICAgICAgICAgICBfcmVmJHkgPSBfcmVmLnksXG4gICAgICAgICAgICB5ID0gX3JlZiR5ID09PSB2b2lkIDAgPyAwIDogX3JlZiR5LFxuICAgICAgICAgICAgX3JlZiRhbmltYXRlZCA9IF9yZWYuYW5pbWF0ZWQsXG4gICAgICAgICAgICBhbmltYXRlZCA9IF9yZWYkYW5pbWF0ZWQgPT09IHZvaWQgMCA/IHRydWUgOiBfcmVmJGFuaW1hdGVkLFxuICAgICAgICAgICAgZHVyYXRpb24gPSBfcmVmLmR1cmF0aW9uO1xuXG4gICAgICAgIGlmIChpc1dlZXhWMikge1xuICAgICAgICAgIF9zY3JvbGxUbyhzY3JvbGxlclJlZiwgeCwgeSwgYW5pbWF0ZWQsIGR1cmF0aW9uKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB2YXIgZG9tID0gX193ZWV4X3JlcXVpcmVfXygnQHdlZXgtbW9kdWxlL2RvbScpO1xuXG4gICAgICAgICAgdmFyIF9jb250ZW50Q29udGFpbmVyID0gY29udGVudENvbnRhaW5lclJlZi5jdXJyZW50O1xuICAgICAgICAgIC8qKlxuICAgICAgICAgICAqIE11bHRpcGxlIHNjcm9sbHZpZXdzIG9uIHRoZSBmaXJzdCBzY3JlZW4gbmVlZCB0byBiZSBhdXRvbWF0aWNhbGx5IHNjcm9sbGVkIHRvIGEgZGVmYXVsdCBzZWxlY3RlZCBsb2NhdGlvbixcbiAgICAgICAgICAgKiBidXQgdGhlIGNvbnRlbnQgbWF5IG5vdCBoYXZlIGJlZW4gcmVuZGVyZWQgKGluIHRoZSBjYXNlIG9mIGNvbnRlbnRDb250YWluZXIpXG4gICAgICAgICAgICovXG5cbiAgICAgICAgICBfY29udGVudENvbnRhaW5lciAmJiBkb20uc2Nyb2xsVG9FbGVtZW50KF9jb250ZW50Q29udGFpbmVyLCB7XG4gICAgICAgICAgICBvZmZzZXQ6IHggfHwgeSB8fCAwLFxuICAgICAgICAgICAgYW5pbWF0ZWQ6IGFuaW1hdGVkXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgICBzY3JvbGxJbnRvVmlldzogZnVuY3Rpb24gc2Nyb2xsSW50b1ZpZXcob3B0aW9ucykge1xuICAgICAgICB2YXIgX3JlZjIgPSBvcHRpb25zIHx8IHt9LFxuICAgICAgICAgICAgaWQgPSBfcmVmMi5pZCxcbiAgICAgICAgICAgIF9yZWYyJGFuaW1hdGVkID0gX3JlZjIuYW5pbWF0ZWQsXG4gICAgICAgICAgICBhbmltYXRlZCA9IF9yZWYyJGFuaW1hdGVkID09PSB2b2lkIDAgPyB0cnVlIDogX3JlZjIkYW5pbWF0ZWQsXG4gICAgICAgICAgICBkdXJhdGlvbiA9IF9yZWYyLmR1cmF0aW9uO1xuXG4gICAgICAgIGlmICghaWQpIHtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1BhcmFtcyBtaXNzaW5nIGlkLicpO1xuICAgICAgICB9XG5cbiAgICAgICAgdmFyIG5vZGUgPSBnZXRFbGVtZW50QnlJZChpZCk7XG5cbiAgICAgICAgaWYgKG5vZGUpIHtcbiAgICAgICAgICBpZiAoaXNXZWV4VjIpIHtcbiAgICAgICAgICAgIF9zY3JvbGxUbyhzY3JvbGxlclJlZiwgbm9kZSwgYW5pbWF0ZWQsIGR1cmF0aW9uKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdmFyIGRvbSA9IF9fd2VleF9yZXF1aXJlX18oJ0B3ZWV4LW1vZHVsZS9kb20nKTtcblxuICAgICAgICAgICAgZG9tLnNjcm9sbFRvRWxlbWVudChub2RlLCB7XG4gICAgICAgICAgICAgIGFuaW1hdGVkOiBhbmltYXRlZFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfSk7IC8vIEluIHdlZXggbXVzdCBiZSBpbnQgdmFsdWVcblxuICBvbkVuZFJlYWNoZWRUaHJlc2hvbGQgPSB0eXBlb2Ygb25FbmRSZWFjaGVkVGhyZXNob2xkID09PSAnc3RyaW5nJyA/IHBhcnNlSW50KG9uRW5kUmVhY2hlZFRocmVzaG9sZCwgMTApIDogb25FbmRSZWFjaGVkVGhyZXNob2xkO1xuXG4gIGlmIChzdHlsZSkge1xuICAgIHZhciBjaGlsZExheW91dFByb3BzID0gWydhbGlnbkl0ZW1zJywgJ2p1c3RpZnlDb250ZW50J10uZmlsdGVyKGZ1bmN0aW9uIChwcm9wKSB7XG4gICAgICByZXR1cm4gc3R5bGVbcHJvcF0gIT09IHVuZGVmaW5lZDtcbiAgICB9KTtcblxuICAgIGlmIChjaGlsZExheW91dFByb3BzLmxlbmd0aCAhPT0gMCkge1xuICAgICAgY29uc29sZS53YXJuKCdTY3JvbGxWaWV3IGNoaWxkIGxheW91dCAoJyArIEpTT04uc3RyaW5naWZ5KGNoaWxkTGF5b3V0UHJvcHMpICsgJykgbXVzdCBiZSBhcHBsaWVkIHRocm91Z2ggdGhlIGNvbnRlbnRDb250YWluZXJTdHlsZSBwcm9wLicpO1xuICAgIH1cbiAgfVxuXG4gIHZhciByZWZyZXNoQ29udGFpbmVyID0gY3JlYXRlRWxlbWVudChWaWV3LCBudWxsKTtcbiAgdmFyIGNvbnRlbnRDaGlsZCA9IG51bGw7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgY29udGVudENoaWxkID0gY2hpbGRyZW4ubWFwKGZ1bmN0aW9uIChjaGlsZCkge1xuICAgICAgaWYgKHR5cGVvZiBjaGlsZCA9PT0gJ29iamVjdCcgJiYgY2hpbGQgIT09IG51bGwgJiYgJ3R5cGUnIGluIGNoaWxkICYmIGNoaWxkLnR5cGUgPT0gUmVmcmVzaENvbnRyb2wpIHtcbiAgICAgICAgcmVmcmVzaENvbnRhaW5lciA9IGNoaWxkO1xuICAgICAgICByZXR1cm4gbnVsbDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBjaGlsZDtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICBjb250ZW50Q2hpbGQgPSBjaGlsZHJlbjtcbiAgfVxuXG4gIHZhciBjb250ZW50Q29udGFpbmVyO1xuXG4gIGlmIChpc1dlZXhWMikge1xuICAgIHJlZnJlc2hDb250YWluZXIgPSBudWxsO1xuICAgIGNvbnRlbnRDb250YWluZXIgPSBjaGlsZHJlbjtcbiAgfSBlbHNlIHtcbiAgICB2YXIgX2N4O1xuXG4gICAgY29udGVudENvbnRhaW5lciA9IGNyZWF0ZUVsZW1lbnQoVmlldywge1xuICAgICAgcmVmOiBjb250ZW50Q29udGFpbmVyUmVmLFxuICAgICAgY2xhc3NOYW1lOiBjeCgoX2N4ID0ge30sIF9jeFtiYXNlQ2xzICsgXCItY29udGVudC1jb250YWluZXItaG9yaXpvbnRhbFwiXSA9IGhvcml6b250YWwsIF9jeCkpLFxuICAgICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIF9nZXRTdHlsZShjeCgoX2N4ID0ge30sIF9jeFtiYXNlQ2xzICsgXCItY29udGVudC1jb250YWluZXItaG9yaXpvbnRhbFwiXSA9IGhvcml6b250YWwsIF9jeCkpKSwgY29udGVudENvbnRhaW5lclN0eWxlKVxuICAgIH0sIGNvbnRlbnRDaGlsZCk7XG4gIH1cblxuICB2YXIgc2Nyb2xsZXJTdHlsZSA9IF9leHRlbmRzKHt9LCBzdHlsZSk7XG5cbiAgaWYgKHNjcm9sbGVyU3R5bGUuaGVpZ2h0ID09PSBudWxsKSB7XG4gICAgc2Nyb2xsZXJTdHlsZS5mbGV4ID0gMTtcbiAgfVxuXG4gIHZhciBjbHMgPSBjeChiYXNlQ2xzLCBiYXNlQ2xzICsgXCItXCIgKyAoaG9yaXpvbnRhbCA/ICdob3Jpem9udGFsJyA6ICd2ZXJ0aWNhbCcpLCBjbGFzc05hbWUpO1xuICB2YXIgc2hvd3NTY3JvbGxJbmRpY2F0b3IgPSBob3Jpem9udGFsID8gc2hvd3NIb3Jpem9udGFsU2Nyb2xsSW5kaWNhdG9yIDogc2hvd3NWZXJ0aWNhbFNjcm9sbEluZGljYXRvcjtcblxuICB2YXIgd2VleFByb3BzID0gX2V4dGVuZHMoe30sIHByb3BzKTtcblxuICBpZiAoaXNXZWV4VjIpIHtcbiAgICBkZWxldGUgd2VleFByb3BzLm9uRW5kUmVhY2hlZFRocmVzaG9sZDtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVFbGVtZW50KFwic2Nyb2xsZXJcIiwgX2V4dGVuZHMoe30sIHdlZXhQcm9wcywge1xuICAgIHJlZjogc2Nyb2xsZXJSZWYsXG4gICAgY2xhc3NOYW1lOiBjbHMsXG4gICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIF9nZXRTdHlsZShjbHMpLCBzY3JvbGxlclN0eWxlKSxcbiAgICBzaG93U2Nyb2xsYmFyOiBzaG93c1Njcm9sbEluZGljYXRvcixcbiAgICBvbkxvYWRtb3JlOiBvbkVuZFJlYWNoZWQsXG4gICAgb25TY3JvbGw6IG9uU2Nyb2xsID8gZnVuY3Rpb24gaGFuZGxlU2Nyb2xsKGUpIHtcbiAgICAgIGUubmF0aXZlRXZlbnQgPSB7XG4gICAgICAgIGNvbnRlbnRPZmZzZXQ6IHtcbiAgICAgICAgICAvLyBIQUNLOiB3ZWV4IHNjcm9sbCBldmVudCB2YWx1ZSBpcyBvcHBvc2l0ZSBvZiB3ZWJcbiAgICAgICAgICB4OiAtZS5jb250ZW50T2Zmc2V0LngsXG4gICAgICAgICAgeTogLWUuY29udGVudE9mZnNldC55XG4gICAgICAgIH0sXG4gICAgICAgIGNvbnRlbnRTaXplOiBlLmNvbnRlbnRTaXplID8ge1xuICAgICAgICAgIHdpZHRoOiBlLmNvbnRlbnRTaXplLndpZHRoLFxuICAgICAgICAgIGhlaWdodDogZS5jb250ZW50U2l6ZS5oZWlnaHRcbiAgICAgICAgfSA6IG51bGxcbiAgICAgIH07XG4gICAgICBvblNjcm9sbChlKTtcbiAgICB9IDogbnVsbCxcbiAgICBsb2FkbW9yZW9mZnNldDogb25FbmRSZWFjaGVkVGhyZXNob2xkLFxuICAgIGxvYWRtb3JlcmV0cnk6IGxvYWRtb3JlcmV0cnksXG4gICAgc2Nyb2xsRGlyZWN0aW9uOiBob3Jpem9udGFsID8gJ2hvcml6b250YWwnIDogJ3ZlcnRpY2FsJ1xuICB9KSwgcmVmcmVzaENvbnRhaW5lciwgY29udGVudENvbnRhaW5lcik7XG59KTtcbmV4cG9ydCBkZWZhdWx0IHdyYXBEZWZhdWx0UHJvcGVydGllcyhTY3JvbGxWaWV3KTsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IHZvaWQgMDtcbnZhciBCT1hfQUxJR04gPSB7XG4gIHN0cmV0Y2g6ICdzdHJldGNoJyxcbiAgJ2ZsZXgtc3RhcnQnOiAnc3RhcnQnLFxuICAnZmxleC1lbmQnOiAnZW5kJyxcbiAgY2VudGVyOiAnY2VudGVyJ1xufTtcbnZhciBCT1hfT1JJRU5UID0ge1xuICByb3c6ICdob3Jpem9udGFsJyxcbiAgY29sdW1uOiAndmVydGljYWwnXG59O1xudmFyIEJPWF9QQUNLID0ge1xuICAnZmxleC1zdGFydCc6ICdzdGFydCcsXG4gICdmbGV4LWVuZCc6ICdlbmQnLFxuICBjZW50ZXI6ICdjZW50ZXInLFxuICAnc3BhY2UtYmV0d2Vlbic6ICdqdXN0aWZ5JyxcbiAgJ3NwYWNlLWFyb3VuZCc6ICdqdXN0aWZ5JyAvLyBKdXN0IHNhbWUgYXMgYHNwYWNlLWJldHdlZW5gXG5cbn07XG52YXIgRkxFWF9QUk9QUyA9IHtcbiAgZGlzcGxheTogdHJ1ZSxcbiAgZmxleDogdHJ1ZSxcbiAgYWxpZ25JdGVtczogdHJ1ZSxcbiAgYWxpZ25TZWxmOiB0cnVlLFxuICBmbGV4RGlyZWN0aW9uOiB0cnVlLFxuICBqdXN0aWZ5Q29udGVudDogdHJ1ZSxcbiAgZmxleFdyYXA6IHRydWVcbn07XG52YXIgRmxleGJveCA9IHtcbiAgaXNGbGV4UHJvcDogZnVuY3Rpb24gaXNGbGV4UHJvcChwcm9wKSB7XG4gICAgcmV0dXJuIEZMRVhfUFJPUFNbcHJvcF07XG4gIH0sXG4gIGRpc3BsYXk6IGZ1bmN0aW9uIGRpc3BsYXkodmFsdWUsIHN0eWxlKSB7XG4gICAgaWYgKHN0eWxlID09PSB2b2lkIDApIHtcbiAgICAgIHN0eWxlID0ge307XG4gICAgfVxuXG4gICAgaWYgKHZhbHVlID09PSAnZmxleCcpIHtcbiAgICAgIHN0eWxlLmRpc3BsYXkgPSBbJy13ZWJraXQtYm94JywgJy13ZWJraXQtZmxleCcsICdmbGV4J107XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0eWxlLmRpc3BsYXkgPSB2YWx1ZTtcbiAgICB9XG5cbiAgICByZXR1cm4gc3R5bGU7XG4gIH0sXG4gIGZsZXg6IGZ1bmN0aW9uIGZsZXgodmFsdWUsIHN0eWxlKSB7XG4gICAgaWYgKHN0eWxlID09PSB2b2lkIDApIHtcbiAgICAgIHN0eWxlID0ge307XG4gICAgfVxuXG4gICAgc3R5bGUud2Via2l0Qm94RmxleCA9IHZhbHVlO1xuICAgIHN0eWxlLndlYmtpdEZsZXggPSB2YWx1ZTtcbiAgICBzdHlsZS5mbGV4ID0gdmFsdWU7XG4gICAgcmV0dXJuIHN0eWxlO1xuICB9LFxuICBmbGV4V3JhcDogZnVuY3Rpb24gZmxleFdyYXAodmFsdWUsIHN0eWxlKSB7XG4gICAgaWYgKHN0eWxlID09PSB2b2lkIDApIHtcbiAgICAgIHN0eWxlID0ge307XG4gICAgfVxuXG4gICAgc3R5bGUud2Via2l0RmxleFdyYXAgPSB2YWx1ZTtcbiAgICBzdHlsZS5mbGV4V3JhcCA9IHZhbHVlO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSxcbiAgYWxpZ25JdGVtczogZnVuY3Rpb24gYWxpZ25JdGVtcyh2YWx1ZSwgc3R5bGUpIHtcbiAgICBpZiAoc3R5bGUgPT09IHZvaWQgMCkge1xuICAgICAgc3R5bGUgPSB7fTtcbiAgICB9XG5cbiAgICBzdHlsZS53ZWJraXRCb3hBbGlnbiA9IEJPWF9BTElHTlt2YWx1ZV07XG4gICAgc3R5bGUud2Via2l0QWxpZ25JdGVtcyA9IHZhbHVlO1xuICAgIHN0eWxlLmFsaWduSXRlbXMgPSB2YWx1ZTtcbiAgICByZXR1cm4gc3R5bGU7XG4gIH0sXG4gIGFsaWduU2VsZjogZnVuY3Rpb24gYWxpZ25TZWxmKHZhbHVlLCBzdHlsZSkge1xuICAgIGlmIChzdHlsZSA9PT0gdm9pZCAwKSB7XG4gICAgICBzdHlsZSA9IHt9O1xuICAgIH1cblxuICAgIHN0eWxlLndlYmtpdEFsaWduU2VsZiA9IHZhbHVlO1xuICAgIHN0eWxlLmFsaWduU2VsZiA9IHZhbHVlO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSxcbiAgZmxleERpcmVjdGlvbjogZnVuY3Rpb24gZmxleERpcmVjdGlvbih2YWx1ZSwgc3R5bGUpIHtcbiAgICBpZiAoc3R5bGUgPT09IHZvaWQgMCkge1xuICAgICAgc3R5bGUgPSB7fTtcbiAgICB9XG5cbiAgICBzdHlsZS53ZWJraXRCb3hPcmllbnQgPSBCT1hfT1JJRU5UW3ZhbHVlXTtcbiAgICBzdHlsZS53ZWJraXRGbGV4RGlyZWN0aW9uID0gdmFsdWU7XG4gICAgc3R5bGUuZmxleERpcmVjdGlvbiA9IHZhbHVlO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfSxcbiAganVzdGlmeUNvbnRlbnQ6IGZ1bmN0aW9uIGp1c3RpZnlDb250ZW50KHZhbHVlLCBzdHlsZSkge1xuICAgIGlmIChzdHlsZSA9PT0gdm9pZCAwKSB7XG4gICAgICBzdHlsZSA9IHt9O1xuICAgIH1cblxuICAgIHN0eWxlLndlYmtpdEJveFBhY2sgPSBCT1hfUEFDS1t2YWx1ZV07XG4gICAgc3R5bGUud2Via2l0SnVzdGlmeUNvbnRlbnQgPSB2YWx1ZTtcbiAgICBzdHlsZS5qdXN0aWZ5Q29udGVudCA9IHZhbHVlO1xuICAgIHJldHVybiBzdHlsZTtcbiAgfVxufTtcbnZhciBfZGVmYXVsdCA9IEZsZXhib3g7XG5leHBvcnRzLmRlZmF1bHQgPSBfZGVmYXVsdDsiLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0cy5fX2VzTW9kdWxlID0gdHJ1ZTtcbmV4cG9ydHMuZGVmYXVsdCA9IHNldE5hdGl2ZVByb3BzO1xuXG52YXIgX3VuaXZlcnNhbEVudiA9IHJlcXVpcmUoXCJ1bml2ZXJzYWwtZW52XCIpO1xuXG52YXIgX3N0eWxlVW5pdCA9IHJlcXVpcmUoXCJzdHlsZS11bml0XCIpO1xuXG52YXIgX3JheCA9IHJlcXVpcmUoXCJyYXhcIik7XG5cbnZhciBfZmxleGJveCA9IF9pbnRlcm9wUmVxdWlyZURlZmF1bHQocmVxdWlyZShcIi4vZmxleGJveFwiKSk7XG5cbmZ1bmN0aW9uIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQob2JqKSB7IHJldHVybiBvYmogJiYgb2JqLl9fZXNNb2R1bGUgPyBvYmogOiB7IGRlZmF1bHQ6IG9iaiB9OyB9XG5cbnZhciBBRERfRVZFTlQgPSAnYWRkRXZlbnQnO1xudmFyIERBTkdFUk9VU0xZX1NFVF9JTk5FUl9IVE1MID0gJ2Rhbmdlcm91c2x5U2V0SW5uZXJIVE1MJztcbnZhciBDTEFTU19OQU1FID0gJ2NsYXNzTmFtZSc7XG52YXIgQ0xBU1MgPSAnY2xhc3MnO1xudmFyIFNUWUxFID0gJ3N0eWxlJztcbnZhciBDSElMRFJFTiA9ICdjaGlsZHJlbic7XG52YXIgRVZFTlRfUFJFRklYX1JFR0VYUCA9IC9eb25bQS1aXS87XG52YXIgb2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHkgPSBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5O1xuXG5mdW5jdGlvbiBoYXNPd25Qcm9wZXJ0eShvYmosIGtleSkge1xuICByZXR1cm4gb2JqZWN0UHJvdG90eXBlSGFzT3duUHJvcGVydHkuY2FsbChvYmosIGtleSk7XG59XG5cbmZ1bmN0aW9uIHNldFN0eWxlcyhub2RlLCBzdHlsZXMpIHtcbiAgaWYgKF91bml2ZXJzYWxFbnYuaXNXZWIpIHtcbiAgICB2YXIgdHJhbmZvcm1lZFN0eWxlcyA9IHt9O1xuXG4gICAgZm9yICh2YXIgcHJvcCBpbiBzdHlsZXMpIHtcbiAgICAgIHZhciB2YWwgPSBzdHlsZXNbcHJvcF07XG5cbiAgICAgIGlmIChfZmxleGJveC5kZWZhdWx0LmlzRmxleFByb3AocHJvcCkpIHtcbiAgICAgICAgX2ZsZXhib3guZGVmYXVsdFtwcm9wXSh2YWwsIHRyYW5mb3JtZWRTdHlsZXMpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdHJhbmZvcm1lZFN0eWxlc1twcm9wXSA9ICgwLCBfc3R5bGVVbml0LmNvbnZlcnRVbml0KSh2YWwsIHByb3ApO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAodmFyIF9wcm9wIGluIHRyYW5mb3JtZWRTdHlsZXMpIHtcbiAgICAgIHZhciB0cmFuc2Zvcm1WYWx1ZSA9IHRyYW5mb3JtZWRTdHlsZXNbX3Byb3BdOyAvLyBoYWNrIGhhbmRsZSBjb21wYXRpYmlsaXR5IGlzc3VlXG5cbiAgICAgIGlmIChBcnJheS5pc0FycmF5KHRyYW5zZm9ybVZhbHVlKSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRyYW5zZm9ybVZhbHVlLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgICAgbm9kZS5zdHlsZVtfcHJvcF0gPSB0cmFuc2Zvcm1WYWx1ZVtpXTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbm9kZS5zdHlsZVtfcHJvcF0gPSB0cmFuc2Zvcm1WYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoX3VuaXZlcnNhbEVudi5pc1dlZXgpIHtcbiAgICBfcmF4LnNoYXJlZC5Ib3N0LmRyaXZlci5zZXRTdHlsZShub2RlLCBzdHlsZXMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGFkZEV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCBldmVudEhhbmRsZXIsIHByb3BzKSB7XG4gIGlmIChfdW5pdmVyc2FsRW52LmlzV2ViKSB7XG4gICAgcmV0dXJuIG5vZGUuYWRkRXZlbnRMaXN0ZW5lcihldmVudE5hbWUsIGV2ZW50SGFuZGxlcik7XG4gIH0gZWxzZSBpZiAoX3VuaXZlcnNhbEVudi5pc1dlZXgpIHtcbiAgICByZXR1cm4gX3JheC5zaGFyZWQuSG9zdC5kcml2ZXIuYWRkRXZlbnRMaXN0ZW5lcihub2RlLCBldmVudE5hbWUsIGV2ZW50SGFuZGxlciwgcHJvcHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIHNldEF0dHJpYnV0ZShub2RlLCBwcm9wS2V5LCBwcm9wVmFsdWUpIHtcbiAgaWYgKF91bml2ZXJzYWxFbnYuaXNXZWIpIHtcbiAgICBpZiAocHJvcEtleSA9PT0gREFOR0VST1VTTFlfU0VUX0lOTkVSX0hUTUwpIHtcbiAgICAgIHJldHVybiBub2RlLmlubmVySFRNTCA9IHByb3BWYWx1ZS5fX2h0bWw7XG4gICAgfVxuXG4gICAgaWYgKHByb3BLZXkgPT09IENMQVNTX05BTUUpIHtcbiAgICAgIHByb3BLZXkgPSBDTEFTUztcbiAgICB9XG5cbiAgICBpZiAocHJvcEtleSBpbiBub2RlKSB7XG4gICAgICB0cnkge1xuICAgICAgICBub2RlW3Byb3BLZXldID0gcHJvcFZhbHVlO1xuICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBub2RlLnNldEF0dHJpYnV0ZShwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBub2RlLnNldEF0dHJpYnV0ZShwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICAgIH1cbiAgfSBlbHNlIGlmIChfdW5pdmVyc2FsRW52LmlzV2VleCkge1xuICAgIF9yYXguc2hhcmVkLkhvc3QuZHJpdmVyLnNldEF0dHJpYnV0ZShub2RlLCBwcm9wS2V5LCBwcm9wVmFsdWUpO1xuICB9XG59XG4vKipcbiAqIFNldCBwcm9wcyBkaXJlY3RseSB0byBuYXRpdmUgbm9kZS5cbiAqIEBwYXJhbSB7Tm9kZX0gbm9kZSBSZWZlcmVuY2UgdG8gbm9kZSBpbnRhbmNlLlxuICogQHBhcmFtIHtPYmVqY3R9IHByb3BzIGstdiBzdHJ1Y3R1cmUgdG8gcHJvcHMuXG4gKi9cblxuXG5mdW5jdGlvbiBzZXROYXRpdmVQcm9wcyhub2RlLCBwcm9wcykge1xuICBpZiAocHJvcHMgPT09IHZvaWQgMCkge1xuICAgIHByb3BzID0ge307XG4gIH1cblxuICBmb3IgKHZhciBwcm9wIGluIHByb3BzKSB7XG4gICAgaWYgKCFoYXNPd25Qcm9wZXJ0eShwcm9wcywgcHJvcCkpIGNvbnRpbnVlO1xuICAgIHZhciB2YWx1ZSA9IHByb3BzW3Byb3BdOyAvLyBTa2lwIGNoaWxkcmVuLlxuXG4gICAgaWYgKHByb3AgPT09IENISUxEUkVOKSBjb250aW51ZTsgLy8gU2tpcCBudWxsYWJsZSB2YWx1ZS5cblxuICAgIGlmICh2YWx1ZSA9PT0gbnVsbCB8fCB2YWx1ZSA9PT0gdW5kZWZpbmVkKSBjb250aW51ZTtcblxuICAgIGlmIChwcm9wID09PSBTVFlMRSkge1xuICAgICAgc2V0U3R5bGVzKG5vZGUsIHZhbHVlKTtcbiAgICB9IGVsc2UgaWYgKEVWRU5UX1BSRUZJWF9SRUdFWFAudGVzdChwcm9wKSkge1xuICAgICAgdmFyIGV2ZW50TmFtZSA9IHByb3Auc2xpY2UoMikudG9Mb3dlckNhc2UoKTtcbiAgICAgIGFkZEV2ZW50TGlzdGVuZXIobm9kZSwgZXZlbnROYW1lLCB2YWx1ZSwgcHJvcHMpO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZXRBdHRyaWJ1dGUobm9kZSwgcHJvcCwgdmFsdWUpO1xuICAgIH1cbiAgfVxufSIsIi8vIGV4dHJhY3RlZCBieSBtaW5pLWNzcy1leHRyYWN0LXBsdWdpbiIsImltcG9ydCB7IGlzV2ViLCBpc1dlZXgsIGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNCYWlkdVNtYXJ0UHJvZ3JhbSwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtIH0gZnJvbSAndW5pdmVyc2FsLWVudic7XG5pbXBvcnQgVGV4dFdlYiBmcm9tICcuL3dlYic7XG5pbXBvcnQgVGV4dE1pbmlBcHAgZnJvbSAnLi9taW5pYXBwLXJ1bnRpbWUnO1xuaW1wb3J0IFRleHRXZWV4IGZyb20gJy4vd2VleCc7XG52YXIgVGV4dCA9IG51bGw7XG5cbmlmIChpc1dlYikge1xuICBUZXh0ID0gVGV4dFdlYjtcbn0gZWxzZSBpZiAoaXNNaW5pQXBwIHx8IGlzV2VDaGF0TWluaVByb2dyYW0gfHwgaXNCeXRlRGFuY2VNaWNyb0FwcCB8fCBpc0JhaWR1U21hcnRQcm9ncmFtIHx8IGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICBUZXh0ID0gVGV4dE1pbmlBcHA7XG59IGVsc2UgaWYgKGlzV2VleCkge1xuICBUZXh0ID0gVGV4dFdlZXg7XG59IGVsc2Uge1xuICBUZXh0ID0gVGV4dFdlYjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVGV4dDtcbmV4cG9ydCAqIGZyb20gJy4vdHlwZXMnOyIsInZhciBfZXhjbHVkZWQgPSBbXCJjbGFzc05hbWVcIiwgXCJzdHlsZVwiLCBcIm51bWJlck9mTGluZXNcIiwgXCJjaGlsZHJlblwiLCBcIm9uUHJlc3NcIiwgXCJvbkNsaWNrXCJdO1xuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyYXgnO1xuaW1wb3J0IHsgaXNNaW5pQXBwIH0gZnJvbSAndW5pdmVyc2FsLWVudic7XG5pbXBvcnQgd3JhcERlZmF1bHRQcm9wZXJ0aWVzIGZyb20gJy4uL3V0aWxzL3dyYXBEZWZhdWx0UHJvcGVydGllcyc7XG5pbXBvcnQgaW5kZXhTdHlsZVNoZWV0IGZyb20gJy4uL2luZGV4LmNzcyc7IC8vIGFkZCB2ZXJzaW9uIGluIHN0eWxlIHRvIGF2b2lkIGNvbmZsaWN0IHdpdGggb2xkZXIgdmVyc2lvblxuXG52YXIgX3N0eWxlU2hlZXQgPSBpbmRleFN0eWxlU2hlZXQ7XG5cbmZ1bmN0aW9uIF9nZXRDbGFzc05hbWUoKSB7XG4gIHZhciBjbGFzc05hbWUgPSBbXTtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHNbMF07XG4gIHZhciB0eXBlID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3MpLnNsaWNlKDgsIC0xKS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xuICAgIGFyZ3MgPSBhcmdzLnRyaW0oKTtcbiAgICBhcmdzICYmIGNsYXNzTmFtZS5wdXNoKGFyZ3MpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcnJheScpIHtcbiAgICBhcmdzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgY2xzID0gX2dldENsYXNzTmFtZShjbHMpLnRyaW0oKTtcbiAgICAgIGNscyAmJiBjbGFzc05hbWUucHVzaChjbHMpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgZm9yICh2YXIgayBpbiBhcmdzKSB7XG4gICAgICBrID0gay50cmltKCk7XG5cbiAgICAgIGlmIChrICYmIGFyZ3MuaGFzT3duUHJvcGVydHkoaykgJiYgYXJnc1trXSkge1xuICAgICAgICBjbGFzc05hbWUucHVzaChrKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xhc3NOYW1lLmpvaW4oJyAnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIF9nZXRTdHlsZShjbGFzc05hbWVFeHByZXNzaW9uKSB7XG4gIHZhciBjYWNoZSA9IF9zdHlsZVNoZWV0Ll9fY2FjaGUgfHwgKF9zdHlsZVNoZWV0Ll9fY2FjaGUgPSB7fSk7XG5cbiAgdmFyIGNsYXNzTmFtZSA9IF9nZXRDbGFzc05hbWUoY2xhc3NOYW1lRXhwcmVzc2lvbik7XG5cbiAgdmFyIGNsYXNzTmFtZUFyciA9IGNsYXNzTmFtZS5zcGxpdCgvXFxzKy8pO1xuICB2YXIgc3R5bGUgPSBjYWNoZVtjbGFzc05hbWVdO1xuXG4gIGlmICghc3R5bGUpIHtcbiAgICBzdHlsZSA9IHt9O1xuXG4gICAgaWYgKGNsYXNzTmFtZUFyci5sZW5ndGggPT09IDEpIHtcbiAgICAgIHN0eWxlID0gX3N0eWxlU2hlZXRbY2xhc3NOYW1lQXJyWzBdLnRyaW0oKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzTmFtZUFyci5mb3JFYWNoKGZ1bmN0aW9uIChjbHMpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gX3N0eWxlU2hlZXRbY2xzLnRyaW0oKV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBzdHlsZSA9IE9iamVjdC5hc3NpZ24oc3R5bGUsIF9zdHlsZVNoZWV0W2Nscy50cmltKCldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2FjaGVbY2xhc3NOYW1lXSA9IHN0eWxlO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG52YXIgcHJlZml4Q2xzID0gJ3JheC10ZXh0LXYyJztcbnZhciBUZXh0ID0gZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgc3R5bGUgPSBwcm9wcy5zdHlsZSxcbiAgICAgIG51bWJlck9mTGluZXMgPSBwcm9wcy5udW1iZXJPZkxpbmVzLFxuICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIG9uUHJlc3MgPSBwcm9wcy5vblByZXNzLFxuICAgICAgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG5cbiAgdmFyIGxpbmVzID0gdHlwZW9mIG51bWJlck9mTGluZXMgPT09ICdzdHJpbmcnID8gcGFyc2VJbnQobnVtYmVyT2ZMaW5lcywgMTApIDogbnVtYmVyT2ZMaW5lcztcbiAgdmFyIHRleHRTdHJpbmcgPSAnJztcblxuICBpZiAoY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgIHRleHRTdHJpbmcgPSBBcnJheS5pc0FycmF5KGNoaWxkcmVuKSA/IGNoaWxkcmVuLmpvaW4oJycpIDogY2hpbGRyZW4udG9TdHJpbmcoKTtcbiAgfVxuXG4gIHZhciBjbGFzc05hbWVzQXJyID0gW3ByZWZpeENscywgY2xhc3NOYW1lXTsgLy8gQWxpIG1pbmlhcHAgc3VwcG9ydCBudW1iZXItb2YtbGluZXMgc28gZG9uJ3QgbmVlZCBleHRyYSBjc3NcblxuICBpZiAoIWlzTWluaUFwcCAmJiBsaW5lcykge1xuICAgIGNsYXNzTmFtZXNBcnIgPSBjbGFzc05hbWVzQXJyLmNvbmNhdChbcHJlZml4Q2xzICsgXCItLW92ZXJmbG93LWhpZGRlblwiLCBwcmVmaXhDbHMgKyBcIi0tbXVsdGlsaW5lXCJdKTtcbiAgfVxuXG4gIHZhciBsaW5lQ2xhbXAgPSBsaW5lcyA+IDAgPyBsaW5lcyA6IHVuZGVmaW5lZDtcbiAgdmFyIGNsYXNzTmFtZXMgPSBjbGFzc05hbWVzQXJyLmpvaW4oJyAnKTtcbiAgcmV0dXJuICgvLyBAdHMtaWdub3JlXG4gICAgY3JlYXRlRWxlbWVudChcInRleHRcIiwgX2V4dGVuZHMoe30sIHJlc3QsIHtcbiAgICAgIHJlZjogcmVmLFxuICAgICAgY2xhc3NOYW1lOiBjbGFzc05hbWVzLFxuICAgICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIF9nZXRTdHlsZShjbGFzc05hbWVzKSwgX2V4dGVuZHMoe30sIHN0eWxlLCB7XG4gICAgICAgIFdlYmtpdExpbmVDbGFtcDogbGluZUNsYW1wXG4gICAgICB9KSksXG4gICAgICBvbkNsaWNrOiBvbkNsaWNrIHx8IG9uUHJlc3MsXG4gICAgICBcIm51bWJlci1vZi1saW5lc1wiOiBsaW5lc1xuICAgIH0pLCB0ZXh0U3RyaW5nKVxuICApO1xufSk7XG5leHBvcnQgZGVmYXVsdCB3cmFwRGVmYXVsdFByb3BlcnRpZXMoVGV4dCk7IiwiZXhwb3J0IHt9OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdyYXBEZWZhdWx0UHJvcGVydGllcyhUZXh0KSB7XG4gIFRleHQuZGlzcGxheU5hbWUgPSAnU2Nyb2xsVmlldyc7XG4gIHJldHVybiBUZXh0O1xufSIsInZhciBfZXhjbHVkZWQgPSBbXCJjbGFzc05hbWVcIiwgXCJzdHlsZVwiLCBcIm51bWJlck9mTGluZXNcIiwgXCJjaGlsZHJlblwiLCBcIm9uUHJlc3NcIiwgXCJvbkNsaWNrXCJdO1xuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIGZvcndhcmRSZWYgfSBmcm9tICdyYXgnO1xuaW1wb3J0IHdyYXBEZWZhdWx0UHJvcGVydGllcyBmcm9tICcuLi91dGlscy93cmFwRGVmYXVsdFByb3BlcnRpZXMnO1xuaW1wb3J0IGluZGV4U3R5bGVTaGVldCBmcm9tICcuLi9pbmRleC5jc3MnOyAvLyBhZGQgdmVyc2lvbiBpbiBzdHlsZSB0byBhdm9pZCBjb25mbGljdCB3aXRoIG9sZGVyIHZlcnNpb25cblxudmFyIF9zdHlsZVNoZWV0ID0gaW5kZXhTdHlsZVNoZWV0O1xuXG5mdW5jdGlvbiBfZ2V0Q2xhc3NOYW1lKCkge1xuICB2YXIgY2xhc3NOYW1lID0gW107XG4gIHZhciBhcmdzID0gYXJndW1lbnRzWzBdO1xuICB2YXIgdHlwZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmdzKS5zbGljZSg4LCAtMSkudG9Mb3dlckNhc2UoKTtcblxuICBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICBhcmdzID0gYXJncy50cmltKCk7XG4gICAgYXJncyAmJiBjbGFzc05hbWUucHVzaChhcmdzKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnYXJyYXknKSB7XG4gICAgYXJncy5mb3JFYWNoKGZ1bmN0aW9uIChjbHMpIHtcbiAgICAgIGNscyA9IF9nZXRDbGFzc05hbWUoY2xzKS50cmltKCk7XG4gICAgICBjbHMgJiYgY2xhc3NOYW1lLnB1c2goY2xzKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAodmFyIGsgaW4gYXJncykge1xuICAgICAgayA9IGsudHJpbSgpO1xuXG4gICAgICBpZiAoayAmJiBhcmdzLmhhc093blByb3BlcnR5KGspICYmIGFyZ3Nba10pIHtcbiAgICAgICAgY2xhc3NOYW1lLnB1c2goayk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNsYXNzTmFtZS5qb2luKCcgJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBfZ2V0U3R5bGUoY2xhc3NOYW1lRXhwcmVzc2lvbikge1xuICB2YXIgY2FjaGUgPSBfc3R5bGVTaGVldC5fX2NhY2hlIHx8IChfc3R5bGVTaGVldC5fX2NhY2hlID0ge30pO1xuXG4gIHZhciBjbGFzc05hbWUgPSBfZ2V0Q2xhc3NOYW1lKGNsYXNzTmFtZUV4cHJlc3Npb24pO1xuXG4gIHZhciBjbGFzc05hbWVBcnIgPSBjbGFzc05hbWUuc3BsaXQoL1xccysvKTtcbiAgdmFyIHN0eWxlID0gY2FjaGVbY2xhc3NOYW1lXTtcblxuICBpZiAoIXN0eWxlKSB7XG4gICAgc3R5bGUgPSB7fTtcblxuICAgIGlmIChjbGFzc05hbWVBcnIubGVuZ3RoID09PSAxKSB7XG4gICAgICBzdHlsZSA9IF9zdHlsZVNoZWV0W2NsYXNzTmFtZUFyclswXS50cmltKCldO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGFzc05hbWVBcnIuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IF9zdHlsZVNoZWV0W2Nscy50cmltKCldO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgc3R5bGUgPSBPYmplY3QuYXNzaWduKHN0eWxlLCBfc3R5bGVTaGVldFtjbHMudHJpbSgpXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNhY2hlW2NsYXNzTmFtZV0gPSBzdHlsZTtcbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn1cblxudmFyIHByZWZpeENscyA9ICdyYXgtdGV4dC12Mic7XG52YXIgVGV4dCA9IGZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsXG4gICAgICBudW1iZXJPZkxpbmVzID0gcHJvcHMubnVtYmVyT2ZMaW5lcyxcbiAgICAgIGNoaWxkcmVuID0gcHJvcHMuY2hpbGRyZW4sXG4gICAgICBvblByZXNzID0gcHJvcHMub25QcmVzcyxcbiAgICAgIG9uQ2xpY2sgPSBwcm9wcy5vbkNsaWNrLFxuICAgICAgcmVzdCA9IF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHByb3BzLCBfZXhjbHVkZWQpO1xuXG4gIHZhciBsaW5lcyA9IHR5cGVvZiBudW1iZXJPZkxpbmVzID09PSAnc3RyaW5nJyA/IHBhcnNlSW50KG51bWJlck9mTGluZXMsIDEwKSA6IG51bWJlck9mTGluZXM7XG4gIHZhciB0ZXh0U3RyaW5nID0gJyc7XG5cbiAgaWYgKGNoaWxkcmVuICE9IG51bGwpIHtcbiAgICB0ZXh0U3RyaW5nID0gQXJyYXkuaXNBcnJheShjaGlsZHJlbikgPyBjaGlsZHJlbi5qb2luKCcnKSA6IGNoaWxkcmVuLnRvU3RyaW5nKCk7XG4gIH1cblxuICB2YXIgY2xhc3NOYW1lcyA9IFtwcmVmaXhDbHMsIGNsYXNzTmFtZV07XG5cbiAgaWYgKGxpbmVzKSB7XG4gICAgY2xhc3NOYW1lcy5wdXNoKHByZWZpeENscyArIFwiLS1vdmVyZmxvdy1oaWRkZW5cIik7XG5cbiAgICBpZiAobGluZXMgPT09IDEpIHtcbiAgICAgIGNsYXNzTmFtZXMucHVzaChwcmVmaXhDbHMgKyBcIi0tc2luZ2xlbGluZVwiKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3NOYW1lcy5wdXNoKHByZWZpeENscyArIFwiLS1tdWx0aWxpbmVcIik7XG4gICAgfVxuICB9XG5cbiAgdmFyIGxpbmVDbGFtcCA9IGxpbmVzID4gMSA/IGxpbmVzIDogdW5kZWZpbmVkO1xuICByZXR1cm4gY3JlYXRlRWxlbWVudChcInNwYW5cIiwgX2V4dGVuZHMoe30sIHJlc3QsIHtcbiAgICByZWY6IHJlZixcbiAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMuam9pbignICcpIC8vIFZlbmRvciBwcmVmaXhlcyBzaG91bGQgYmVnaW4gd2l0aCBhIGNhcGl0YWwgbGV0dGVyLlxuICAgICxcbiAgICBzdHlsZTogT2JqZWN0LmFzc2lnbih7fSwgX2dldFN0eWxlKGNsYXNzTmFtZXMuam9pbignICcpKSwgX2V4dGVuZHMoe30sIHN0eWxlLCB7XG4gICAgICAvLyBDdXJyZW50bHkgb25seSAtd2Via2l0LWxpbmUtY2xhbXAgaXMgc3VwcG9ydGVkIGluIGJyb3dzZXJzXG4gICAgICAvLyBodHRwczovL3d3dy53My5vcmcvVFIvY3NzLW92ZXJmbG93LTMvI3dlYmtpdC1saW5lLWNsYW1wXG4gICAgICBXZWJraXRMaW5lQ2xhbXA6IGxpbmVDbGFtcCxcbiAgICAgIC8vIEFkZCBsaW5lLWNsYW1wIGZvciBzdGFuZGFyZCBjb21wYXRpYmlsaXR5IGFuZCBlbmdpbmVzIHdoaWNoXG4gICAgICAvLyBoYXMgYWxyZWFkeSBzdXBwb3J0IGl0IHN1Y2ggYXMgS3Jha2VuXG4gICAgICBsaW5lQ2xhbXA6IGxpbmVDbGFtcFxuICAgIH0pKSxcbiAgICBvbkNsaWNrOiBvbkNsaWNrIHx8IG9uUHJlc3NcbiAgfSksIHRleHRTdHJpbmcpO1xufSk7XG5leHBvcnQgZGVmYXVsdCB3cmFwRGVmYXVsdFByb3BlcnRpZXMoVGV4dCk7IiwidmFyIF9leGNsdWRlZCA9IFtcImNsYXNzTmFtZVwiLCBcInN0eWxlXCIsIFwibnVtYmVyT2ZMaW5lc1wiLCBcImNoaWxkcmVuXCIsIFwib25QcmVzc1wiLCBcIm9uQ2xpY2tcIl07XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JheCc7XG5pbXBvcnQgd3JhcERlZmF1bHRQcm9wZXJ0aWVzIGZyb20gJy4uL3V0aWxzL3dyYXBEZWZhdWx0UHJvcGVydGllcyc7XG5pbXBvcnQgaW5kZXhTdHlsZVNoZWV0IGZyb20gJy4uL2luZGV4LmNzcyc7XG52YXIgX3N0eWxlU2hlZXQgPSBpbmRleFN0eWxlU2hlZXQ7XG5cbmZ1bmN0aW9uIF9nZXRDbGFzc05hbWUoKSB7XG4gIHZhciBjbGFzc05hbWUgPSBbXTtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHNbMF07XG4gIHZhciB0eXBlID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3MpLnNsaWNlKDgsIC0xKS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xuICAgIGFyZ3MgPSBhcmdzLnRyaW0oKTtcbiAgICBhcmdzICYmIGNsYXNzTmFtZS5wdXNoKGFyZ3MpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcnJheScpIHtcbiAgICBhcmdzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgY2xzID0gX2dldENsYXNzTmFtZShjbHMpLnRyaW0oKTtcbiAgICAgIGNscyAmJiBjbGFzc05hbWUucHVzaChjbHMpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgZm9yICh2YXIgayBpbiBhcmdzKSB7XG4gICAgICBrID0gay50cmltKCk7XG5cbiAgICAgIGlmIChrICYmIGFyZ3MuaGFzT3duUHJvcGVydHkoaykgJiYgYXJnc1trXSkge1xuICAgICAgICBjbGFzc05hbWUucHVzaChrKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xhc3NOYW1lLmpvaW4oJyAnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIF9nZXRTdHlsZShjbGFzc05hbWVFeHByZXNzaW9uKSB7XG4gIHZhciBjYWNoZSA9IF9zdHlsZVNoZWV0Ll9fY2FjaGUgfHwgKF9zdHlsZVNoZWV0Ll9fY2FjaGUgPSB7fSk7XG5cbiAgdmFyIGNsYXNzTmFtZSA9IF9nZXRDbGFzc05hbWUoY2xhc3NOYW1lRXhwcmVzc2lvbik7XG5cbiAgdmFyIGNsYXNzTmFtZUFyciA9IGNsYXNzTmFtZS5zcGxpdCgvXFxzKy8pO1xuICB2YXIgc3R5bGUgPSBjYWNoZVtjbGFzc05hbWVdO1xuXG4gIGlmICghc3R5bGUpIHtcbiAgICBzdHlsZSA9IHt9O1xuXG4gICAgaWYgKGNsYXNzTmFtZUFyci5sZW5ndGggPT09IDEpIHtcbiAgICAgIHN0eWxlID0gX3N0eWxlU2hlZXRbY2xhc3NOYW1lQXJyWzBdLnRyaW0oKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzTmFtZUFyci5mb3JFYWNoKGZ1bmN0aW9uIChjbHMpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gX3N0eWxlU2hlZXRbY2xzLnRyaW0oKV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBzdHlsZSA9IE9iamVjdC5hc3NpZ24oc3R5bGUsIF9zdHlsZVNoZWV0W2Nscy50cmltKCldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2FjaGVbY2xhc3NOYW1lXSA9IHN0eWxlO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG52YXIgcHJlZml4Q2xzID0gJ3JheC10ZXh0LXYyJztcbnZhciBUZXh0ID0gZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgc3R5bGUgPSBwcm9wcy5zdHlsZSxcbiAgICAgIG51bWJlck9mTGluZXMgPSBwcm9wcy5udW1iZXJPZkxpbmVzLFxuICAgICAgY2hpbGRyZW4gPSBwcm9wcy5jaGlsZHJlbixcbiAgICAgIG9uUHJlc3MgPSBwcm9wcy5vblByZXNzLFxuICAgICAgb25DbGljayA9IHByb3BzLm9uQ2xpY2ssXG4gICAgICByZXN0ID0gX29iamVjdFdpdGhvdXRQcm9wZXJ0aWVzTG9vc2UocHJvcHMsIF9leGNsdWRlZCk7XG5cbiAgdmFyIGhhbmRsZUNsaWNrID0gb25DbGljayB8fCBvblByZXNzO1xuICB2YXIgbGluZXMgPSB0eXBlb2YgbnVtYmVyT2ZMaW5lcyA9PT0gJ3N0cmluZycgPyBwYXJzZUludChudW1iZXJPZkxpbmVzLCAxMCkgOiBudW1iZXJPZkxpbmVzO1xuICB2YXIgdGV4dFN0cmluZyA9ICcnO1xuXG4gIGlmIChjaGlsZHJlbiAhPSBudWxsKSB7XG4gICAgdGV4dFN0cmluZyA9IEFycmF5LmlzQXJyYXkoY2hpbGRyZW4pID8gY2hpbGRyZW4uam9pbignJykgOiBjaGlsZHJlbi50b1N0cmluZygpO1xuICB9XG4gIC8qIGdsb2JhbCBfX3dlZXhfdjJfXyAqL1xuXG5cbiAgaWYgKHR5cGVvZiBfX3dlZXhfdjJfXyA9PT0gJ29iamVjdCcpIHtcbiAgICB2YXIgY2xhc3NOYW1lcyA9IFtjbGFzc05hbWVdO1xuXG4gICAgaWYgKGxpbmVzKSB7XG4gICAgICBjbGFzc05hbWVzLnB1c2gocHJlZml4Q2xzICsgXCItLW92ZXJmbG93LWhpZGRlblwiKTtcblxuICAgICAgaWYgKGxpbmVzID09PSAxKSB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaChwcmVmaXhDbHMgKyBcIi0tc2luZ2xlbGluZVwiKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNsYXNzTmFtZXMucHVzaChwcmVmaXhDbHMgKyBcIi0tbXVsdGlsaW5lXCIpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBsaW5lQ2xhbXAgPSBsaW5lcyA+IDEgPyBsaW5lcyA6IHVuZGVmaW5lZDtcbiAgICByZXR1cm4gKC8vIEB0cy1pZ25vcmVcbiAgICAgIGNyZWF0ZUVsZW1lbnQoXCJ0ZXh0XCIsIF9leHRlbmRzKHt9LCByZXN0LCB7XG4gICAgICAgIHJlZjogcmVmLFxuICAgICAgICBjbGFzc05hbWU6IGNsYXNzTmFtZXMuam9pbignICcpLFxuICAgICAgICBzdHlsZTogT2JqZWN0LmFzc2lnbih7fSwgX2dldFN0eWxlKGNsYXNzTmFtZXMuam9pbignICcpKSwgX2V4dGVuZHMoe30sIHN0eWxlLCB7XG4gICAgICAgICAgbGluZUNsYW1wOiBsaW5lQ2xhbXBcbiAgICAgICAgfSkpLFxuICAgICAgICBvbkNsaWNrOiBoYW5kbGVDbGlja1xuICAgICAgfSksIHRleHRTdHJpbmcpXG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoLy8gQHRzLWlnbm9yZVxuICAgIGNyZWF0ZUVsZW1lbnQoXCJ0ZXh0XCIsIF9leHRlbmRzKHt9LCByZXN0LCB7XG4gICAgICByZWY6IHJlZixcbiAgICAgIGNsYXNzTmFtZTogY2xhc3NOYW1lLFxuICAgICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIF9nZXRTdHlsZShjbGFzc05hbWUpLCBfZXh0ZW5kcyh7XG4gICAgICAgIGxpbmVzOiBsaW5lc1xuICAgICAgfSwgc3R5bGUpKSxcbiAgICAgIG9uQ2xpY2s6IGhhbmRsZUNsaWNrXG4gICAgfSksIHRleHRTdHJpbmcpXG4gICk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IHdyYXBEZWZhdWx0UHJvcGVydGllcyhUZXh0KTsiLCIvLyBleHRyYWN0ZWQgYnkgbWluaS1jc3MtZXh0cmFjdC1wbHVnaW4iLCJpbXBvcnQgeyBjcmVhdGVDb25kaXRpb24gYXMgX19jcmVhdGVfY29uZGl0aW9uX18gfSBmcm9tIFwiYmFiZWwtcnVudGltZS1qc3gtcGx1c1wiO1xuaW1wb3J0IHsgRnJhZ21lbnQgfSBmcm9tIFwicmF4XCI7XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmltcG9ydCB7IGZvcndhcmRSZWYsIHVzZVJlZiwgdXNlSW1wZXJhdGl2ZUhhbmRsZSwgY3JlYXRlRWxlbWVudCwgdXNlRWZmZWN0LCB1c2VTdGF0ZSwgdXNlTWVtbyB9IGZyb20gJ3JheCc7XG5pbXBvcnQgeyBpc1dlZXgsIGlzV2ViLCBpc05vZGUsIGlzTWluaUFwcCB9IGZyb20gJ3VuaXZlcnNhbC1lbnYnO1xuaW1wb3J0IHNldE5hdGl2ZVByb3BzIGZyb20gJ3JheC1zZXQtbmF0aXZlLXByb3BzJztcbmltcG9ydCBrZXlib2FyZFR5cGVNYXAgZnJvbSAnLi9rZXlib2FyZFR5cGVNYXAnO1xuaW1wb3J0IGluZGV4U3R5bGVTaGVldCBmcm9tICcuL2luZGV4LmNzcyc7XG52YXIgX3N0eWxlU2hlZXQgPSBpbmRleFN0eWxlU2hlZXQ7XG5cbmZ1bmN0aW9uIF9nZXRDbGFzc05hbWUoKSB7XG4gIHZhciBjbGFzc05hbWUgPSBbXTtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHNbMF07XG4gIHZhciB0eXBlID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3MpLnNsaWNlKDgsIC0xKS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xuICAgIGFyZ3MgPSBhcmdzLnRyaW0oKTtcbiAgICBhcmdzICYmIGNsYXNzTmFtZS5wdXNoKGFyZ3MpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcnJheScpIHtcbiAgICBhcmdzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgY2xzID0gX2dldENsYXNzTmFtZShjbHMpLnRyaW0oKTtcbiAgICAgIGNscyAmJiBjbGFzc05hbWUucHVzaChjbHMpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgZm9yICh2YXIgayBpbiBhcmdzKSB7XG4gICAgICBrID0gay50cmltKCk7XG5cbiAgICAgIGlmIChrICYmIGFyZ3MuaGFzT3duUHJvcGVydHkoaykgJiYgYXJnc1trXSkge1xuICAgICAgICBjbGFzc05hbWUucHVzaChrKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xhc3NOYW1lLmpvaW4oJyAnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIF9nZXRTdHlsZShjbGFzc05hbWVFeHByZXNzaW9uKSB7XG4gIHZhciBjYWNoZSA9IF9zdHlsZVNoZWV0Ll9fY2FjaGUgfHwgKF9zdHlsZVNoZWV0Ll9fY2FjaGUgPSB7fSk7XG5cbiAgdmFyIGNsYXNzTmFtZSA9IF9nZXRDbGFzc05hbWUoY2xhc3NOYW1lRXhwcmVzc2lvbik7XG5cbiAgdmFyIGNsYXNzTmFtZUFyciA9IGNsYXNzTmFtZS5zcGxpdCgvXFxzKy8pO1xuICB2YXIgc3R5bGUgPSBjYWNoZVtjbGFzc05hbWVdO1xuXG4gIGlmICghc3R5bGUpIHtcbiAgICBzdHlsZSA9IHt9O1xuXG4gICAgaWYgKGNsYXNzTmFtZUFyci5sZW5ndGggPT09IDEpIHtcbiAgICAgIHN0eWxlID0gX3N0eWxlU2hlZXRbY2xhc3NOYW1lQXJyWzBdLnRyaW0oKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzTmFtZUFyci5mb3JFYWNoKGZ1bmN0aW9uIChjbHMpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gX3N0eWxlU2hlZXRbY2xzLnRyaW0oKV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBzdHlsZSA9IE9iamVjdC5hc3NpZ24oc3R5bGUsIF9zdHlsZVNoZWV0W2Nscy50cmltKCldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2FjaGVbY2xhc3NOYW1lXSA9IHN0eWxlO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG52YXIgaW5wdXRJZCA9IDA7XG5cbmZ1bmN0aW9uIGdldFRleHQoZXZlbnQpIHtcbiAgdmFyIHRleHQgPSAnJztcblxuICBpZiAoaXNXZWV4KSB7XG4gICAgdGV4dCA9IGV2ZW50LnZhbHVlO1xuICB9IGVsc2Uge1xuICAgIHRleHQgPSBldmVudC50YXJnZXQudmFsdWU7XG4gIH1cblxuICByZXR1cm4gdGV4dDtcbn1cblxuZnVuY3Rpb24gZ2VuRXZlbnRPYmplY3QoZXZlbnQpIHtcbiAgdmFyIHRleHQgPSBnZXRUZXh0KGV2ZW50KTtcbiAgcmV0dXJuIHtcbiAgICBuYXRpdmVFdmVudDoge1xuICAgICAgdGV4dDogdGV4dFxuICAgIH0sXG4gICAgb3JpZ2luYWxFdmVudDogZXZlbnQsXG4gICAgdmFsdWU6IHRleHQsXG4gICAgdGFyZ2V0OiBldmVudC50YXJnZXRcbiAgfTtcbn1cbi8qKlxuICogSnVkZ2Ugd2hldGhlciB0aGUgdmFsIGlzIHRydXRoeSBvciB6ZXJvIHZhbHVlXG4gKiBCZWNhdXNlIG51bWJlciAwIHNob3VsZCBiZSByZWNvZ25pemVkIGFzIHZhbGlkIGlucHV0IHRvb1xuICogQHBhcmFtIHZhbFxuICogQHJldHVybnNcbiAqL1xuXG5cbmZ1bmN0aW9uIGlzVHJ1dGh5T3JaZXJvKHZhbCkge1xuICByZXR1cm4gdmFsID09PSAwID8gdHJ1ZSA6ICEhdmFsO1xufVxuXG52YXIgVGV4dElucHV0ID0gZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICB2YXIgcmVmRWwgPSB1c2VSZWYobnVsbCk7XG5cbiAgdmFyIF91c2VTdGF0ZSA9IHVzZVN0YXRlKDApLFxuICAgICAgZm9yY2VVcGRhdGUgPSBfdXNlU3RhdGVbMV07XG5cbiAgdmFyIHN0eWxlQ2xhc3NOYW1lID0gXCJyYXgtdGV4dGlucHV0LXBsYWNlaG9sZGVyLVwiICsgaW5wdXRJZCsrO1xuICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgYWNjZXNzaWJpbGl0eUxhYmVsID0gcHJvcHMuYWNjZXNzaWJpbGl0eUxhYmVsLFxuICAgICAgYXV0b0NvbXBsZXRlID0gcHJvcHMuYXV0b0NvbXBsZXRlLFxuICAgICAgZWRpdGFibGUgPSBwcm9wcy5lZGl0YWJsZSxcbiAgICAgIGtleWJvYXJkVHlwZSA9IHByb3BzLmtleWJvYXJkVHlwZSxcbiAgICAgIG1heE51bWJlck9mTGluZXMgPSBwcm9wcy5tYXhOdW1iZXJPZkxpbmVzLFxuICAgICAgbWF4TGVuZ3RoID0gcHJvcHMubWF4TGVuZ3RoLFxuICAgICAgbWF4bGVuZ3RoID0gcHJvcHMubWF4bGVuZ3RoLFxuICAgICAgbXVsdGlsaW5lID0gcHJvcHMubXVsdGlsaW5lLFxuICAgICAgbnVtYmVyT2ZMaW5lcyA9IHByb3BzLm51bWJlck9mTGluZXMsXG4gICAgICBjb25maXJtVHlwZSA9IHByb3BzLmNvbmZpcm1UeXBlLFxuICAgICAgcmFuZG9tTnVtYmVyID0gcHJvcHMucmFuZG9tTnVtYmVyLFxuICAgICAgX3Byb3BzJHNob3dDb3VudCA9IHByb3BzLnNob3dDb3VudCxcbiAgICAgIHNob3dDb3VudCA9IF9wcm9wcyRzaG93Q291bnQgPT09IHZvaWQgMCA/IHRydWUgOiBfcHJvcHMkc2hvd0NvdW50LFxuICAgICAgc2VsZWN0aW9uU3RhcnQgPSBwcm9wcy5zZWxlY3Rpb25TdGFydCxcbiAgICAgIHNlbGVjdGlvbkVuZCA9IHByb3BzLnNlbGVjdGlvbkVuZCxcbiAgICAgIG9uQmx1ciA9IHByb3BzLm9uQmx1cixcbiAgICAgIG9uRm9jdXMgPSBwcm9wcy5vbkZvY3VzLFxuICAgICAgb25DaGFuZ2UgPSBwcm9wcy5vbkNoYW5nZSxcbiAgICAgIG9uQ2hhbmdlVGV4dCA9IHByb3BzLm9uQ2hhbmdlVGV4dCxcbiAgICAgIF9vbklucHV0ID0gcHJvcHMub25JbnB1dCxcbiAgICAgIHBhc3N3b3JkID0gcHJvcHMucGFzc3dvcmQsXG4gICAgICBzZWN1cmVUZXh0RW50cnkgPSBwcm9wcy5zZWN1cmVUZXh0RW50cnksXG4gICAgICBzdHlsZSA9IHByb3BzLnN0eWxlLFxuICAgICAgX3Byb3BzJHBsYWNlaG9sZGVyQ29sID0gcHJvcHMucGxhY2Vob2xkZXJDb2xvcixcbiAgICAgIHBsYWNlaG9sZGVyQ29sb3IgPSBfcHJvcHMkcGxhY2Vob2xkZXJDb2wgPT09IHZvaWQgMCA/ICcjOTk5OTk5JyA6IF9wcm9wcyRwbGFjZWhvbGRlckNvbCxcbiAgICAgIHByb3BzVmFsdWUgPSBwcm9wcy52YWx1ZSxcbiAgICAgIGRlZmF1bHRWYWx1ZSA9IHByb3BzLmRlZmF1bHRWYWx1ZSxcbiAgICAgIGNvbnRyb2xsZWQgPSBwcm9wcy5jb250cm9sbGVkO1xuICB2YXIgdHlwZSA9IHBhc3N3b3JkIHx8IHNlY3VyZVRleHRFbnRyeSA/ICdwYXNzd29yZCcgOiB0eXBlb2Yga2V5Ym9hcmRUeXBlTWFwW2tleWJvYXJkVHlwZV0gPT09ICd1bmRlZmluZWQnID8ga2V5Ym9hcmRUeXBlIDoga2V5Ym9hcmRUeXBlTWFwW2tleWJvYXJkVHlwZV07XG4gIHZhciB2YWx1ZSA9IGlzVHJ1dGh5T3JaZXJvKHByb3BzVmFsdWUpID8gcHJvcHNWYWx1ZSA6ICcnO1xuICB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICB2YWx1ZSA9IGlzVHJ1dGh5T3JaZXJvKHByb3BzVmFsdWUpID8gcHJvcHNWYWx1ZSA6IGlzVHJ1dGh5T3JaZXJvKGRlZmF1bHRWYWx1ZSkgPyBkZWZhdWx0VmFsdWUgOiAnJztcbiAgfSwgW10pOyAvLyBDaGVjayBpcyB0eXBlIHN1cHBvcnRlZCBvciBub3RcbiAgLy8gVXNlIGlzV2ViIHRvIGV4Y2x1ZGUgd2ViLXZpZXdcblxuICBpZiAoaXNNaW5pQXBwICYmICFpc1dlYikge1xuICAgIC8vIE90aGVyIHR5cGVzLCBsaWtlIG51bWJlcnBhZCwgd2UgY2FuIGNoZWNrIGl0IHdpdGggY2FuSVVzZVxuICAgIGlmICghWyd0ZXh0JywgJ251bWJlcicsICdpZGNhcmQnLCAnZGlnaXQnXS5pbmNsdWRlcyh0eXBlKSAmJiAhbXkuY2FuSVVzZShcImlucHV0LnR5cGUuXCIgKyB0eXBlKSkge1xuICAgICAgLy8gSWYgbm90IHN1cHBvcnQsIGZhbGxiYWNrIHRvIHRleHRcbiAgICAgIHR5cGUgPSAndGV4dCc7XG4gICAgfVxuICB9XG5cbiAgdmFyIHNldFZhbHVlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgaWYgKHZhbHVlID09PSB2b2lkIDApIHtcbiAgICAgIHZhbHVlID0gJyc7XG4gICAgfVxuXG4gICAgc2V0TmF0aXZlUHJvcHMocmVmRWwuY3VycmVudCwge1xuICAgICAgdmFsdWU6IHZhbHVlXG4gICAgfSk7XG4gIH07XG5cbiAgdmFyIGhhbmRsZUlucHV0ID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgX29uSW5wdXQoZ2VuRXZlbnRPYmplY3QoZXZlbnQpKTtcbiAgfTtcblxuICB2YXIgaGFuZGxlQ2hhbmdlID0gZnVuY3Rpb24gKGV2ZW50KSB7XG4gICAgaWYgKG9uQ2hhbmdlKSBvbkNoYW5nZShnZW5FdmVudE9iamVjdChldmVudCkpO1xuICAgIGlmIChvbkNoYW5nZVRleHQpIG9uQ2hhbmdlVGV4dChnZXRUZXh0KGV2ZW50KSk7XG4gIH07XG5cbiAgdmFyIHByb3BzQ29tbW9uID0gX2V4dGVuZHMoe30sIHByb3BzLCB7XG4gICAgJ2FyaWEtbGFiZWwnOiBhY2Nlc3NpYmlsaXR5TGFiZWwsXG4gICAgYXV0b0NvbXBsZXRlOiBhdXRvQ29tcGxldGUgJiYgJ29uJyxcbiAgICBtYXhsZW5ndGg6IG1heGxlbmd0aCB8fCBtYXhMZW5ndGgsXG4gICAgb25DaGFuZ2U6IChvbkNoYW5nZSB8fCBvbkNoYW5nZVRleHQpICYmIGhhbmRsZUNoYW5nZSxcbiAgICBvbkJsdXI6IG9uQmx1ciAmJiBmdW5jdGlvbiBoYW5kbGVCbHVyKGV2ZW50KSB7XG4gICAgICBvbkJsdXIoZ2VuRXZlbnRPYmplY3QoZXZlbnQpKTtcbiAgICB9LFxuICAgIG9uRm9jdXM6IG9uRm9jdXMgJiYgZnVuY3Rpb24gaGFuZGxlRm9jdXMoZXZlbnQpIHtcbiAgICAgIG9uRm9jdXMoZ2VuRXZlbnRPYmplY3QoZXZlbnQpKTtcbiAgICB9XG4gIH0pOyAvLyBEaWZmIHdpdGggd2ViIHJlYWRvbmx5IGF0dHIsIGBkaXNhYmxlZGAgbXVzdCBiZSBib29sZWFuIHZhbHVlXG5cblxuICB2YXIgZGlzYWJsZWQgPSBCb29sZWFuKGVkaXRhYmxlICE9PSB1bmRlZmluZWQgJiYgIWVkaXRhYmxlKTtcbiAgdmFyIHJvd3MgPSBudW1iZXJPZkxpbmVzIHx8IG1heE51bWJlck9mTGluZXM7XG4gIHVzZUltcGVyYXRpdmVIYW5kbGUocmVmLCBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIF9uYXRpdmVOb2RlOiByZWZFbC5jdXJyZW50LFxuICAgICAgZm9jdXM6IGZ1bmN0aW9uIGZvY3VzKCkge1xuICAgICAgICByZWZFbC5jdXJyZW50LmZvY3VzKCk7XG4gICAgICB9LFxuICAgICAgYmx1cjogZnVuY3Rpb24gYmx1cigpIHtcbiAgICAgICAgcmVmRWwuY3VycmVudC5ibHVyKCk7XG4gICAgICB9LFxuICAgICAgY2xlYXI6IGZ1bmN0aW9uIGNsZWFyKCkge1xuICAgICAgICBzZXRWYWx1ZSgnJyk7XG4gICAgICB9XG4gICAgfTtcbiAgfSk7XG4gIHVzZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgaWYgKGNvbnRyb2xsZWQgJiYgdHlwZW9mIHZhbHVlICE9PSAndW5kZWZpbmVkJyAmJiB2YWx1ZSAhPT0gbnVsbCAmJiByZWZFbC5jdXJyZW50KSB7XG4gICAgICB2YXIgY3VycmVudFZhbHVlID0gcmVmRWwuY3VycmVudC52YWx1ZTtcbiAgICAgIHZhciBuZXdWYWx1ZSA9ICcnICsgdmFsdWU7XG5cbiAgICAgIGlmIChjdXJyZW50VmFsdWUgIT09IG5ld1ZhbHVlKSB7XG4gICAgICAgIHJlZkVsLmN1cnJlbnQudmFsdWUgPSBuZXdWYWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuXG4gIGlmIChtdWx0aWxpbmUpIHtcbiAgICByZXR1cm4gY3JlYXRlRWxlbWVudChGcmFnbWVudCwgbnVsbCwgX19jcmVhdGVfY29uZGl0aW9uX18oW1tmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gKGlzV2ViIHx8IGlzTm9kZSkgJiYgcGxhY2Vob2xkZXJDb2xvcjtcbiAgICB9LCBmdW5jdGlvbiAoKSB7XG4gICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChcInN0eWxlXCIsIHtcbiAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw6IHtcbiAgICAgICAgICBfX2h0bWw6IFwiLlwiICsgc3R5bGVDbGFzc05hbWUgKyBcIjo6cGxhY2Vob2xkZXIge1xcbiAgICAgICAgICAgIGNvbG9yOiBcIiArIHBsYWNlaG9sZGVyQ29sb3IgKyBcIlxcbiAgICAgICAgICB9XCJcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfV1dKSwgY3JlYXRlRWxlbWVudChcInRleHRhcmVhXCIsIF9leHRlbmRzKHt9LCBwcm9wc0NvbW1vbiwge1xuICAgICAgcmVmOiByZWZFbCxcbiAgICAgIGNsYXNzTmFtZTogWydyYXgtdGV4dGlucHV0Jywgc3R5bGVDbGFzc05hbWUsIGNsYXNzTmFtZSB8fCAnJ10uam9pbignICcpLFxuICAgICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIF9nZXRTdHlsZShbJ3JheC10ZXh0aW5wdXQnLCBzdHlsZUNsYXNzTmFtZSwgY2xhc3NOYW1lIHx8ICcnXS5qb2luKCcgJykpLCBfZXh0ZW5kcyh7fSwgc3R5bGUsIHtcbiAgICAgICAgcGxhY2Vob2xkZXJDb2xvcjogcGxhY2Vob2xkZXJDb2xvclxuICAgICAgfSkpLFxuICAgICAgcm93OiByb3dzLFxuICAgICAgcm93czogcm93cyxcbiAgICAgIGRpc2FibGVkOiBkaXNhYmxlZCxcbiAgICAgIG9uQ2hhbmdlOiBoYW5kbGVDaGFuZ2UsXG4gICAgICB2YWx1ZTogdmFsdWUsXG4gICAgICBcImNvbmZpcm0tdHlwZVwiOiBjb25maXJtVHlwZSxcbiAgICAgIFwic2hvdy1jb3VudFwiOiBzaG93Q291bnQsXG4gICAgICBvbklucHV0OiBmdW5jdGlvbiBvbklucHV0KGUpIHtcbiAgICAgICAgX29uSW5wdXQgJiYgaGFuZGxlSW5wdXQoZSk7XG5cbiAgICAgICAgaWYgKGlzTWluaUFwcCkge1xuICAgICAgICAgIGZvcmNlVXBkYXRlKGZ1bmN0aW9uICh0aWNrKSB7XG4gICAgICAgICAgICByZXR1cm4gdGljayArIDE7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KSwgIWlzV2VleCAmJiAocHJvcHNDb21tb24udmFsdWUgfHwgZGVmYXVsdFZhbHVlIHx8ICcnKSkpO1xuICB9IGVsc2Uge1xuICAgIHJldHVybiBjcmVhdGVFbGVtZW50KEZyYWdtZW50LCBudWxsLCBfX2NyZWF0ZV9jb25kaXRpb25fXyhbW2Z1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiAoaXNXZWIgfHwgaXNOb2RlKSAmJiBwbGFjZWhvbGRlckNvbG9yO1xuICAgIH0sIGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KFwic3R5bGVcIiwge1xuICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTDoge1xuICAgICAgICAgIF9faHRtbDogXCIuXCIgKyBzdHlsZUNsYXNzTmFtZSArIFwiOjpwbGFjZWhvbGRlciB7XFxuICAgICAgICAgICAgY29sb3I6IFwiICsgcGxhY2Vob2xkZXJDb2xvciArIFwiXFxuICAgICAgICAgIH1cIlxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XV0pLCBjcmVhdGVFbGVtZW50KFwiaW5wdXRcIiwgX2V4dGVuZHMoe30sIHByb3BzQ29tbW9uLCB7XG4gICAgICByZWY6IHJlZkVsLFxuICAgICAgY2xhc3NOYW1lOiBbJ3JheC10ZXh0aW5wdXQnLCBzdHlsZUNsYXNzTmFtZSwgY2xhc3NOYW1lIHx8ICcnXS5qb2luKCcgJyksXG4gICAgICBzdHlsZTogT2JqZWN0LmFzc2lnbih7fSwgX2dldFN0eWxlKFsncmF4LXRleHRpbnB1dCcsIHN0eWxlQ2xhc3NOYW1lLCBjbGFzc05hbWUgfHwgJyddLmpvaW4oJyAnKSksIF9leHRlbmRzKHt9LCBzdHlsZSwge1xuICAgICAgICBwbGFjZWhvbGRlckNvbG9yOiBwbGFjZWhvbGRlckNvbG9yXG4gICAgICB9KSksXG4gICAgICB0eXBlOiB0eXBlLFxuICAgICAgZGlzYWJsZWQ6IGRpc2FibGVkLFxuICAgICAgdmFsdWU6IHZhbHVlLFxuICAgICAgXCJjb25maXJtLXR5cGVcIjogY29uZmlybVR5cGUsXG4gICAgICBcInJhbmRvbS1OdW1iZXJcIjogcmFuZG9tTnVtYmVyLFxuICAgICAgXCJzZWxlY3Rpb24tc3RhcnRcIjogc2VsZWN0aW9uU3RhcnQsXG4gICAgICBcInNlbGVjdGlvbi1lbmRcIjogc2VsZWN0aW9uRW5kLFxuICAgICAgb25JbnB1dDogZnVuY3Rpb24gb25JbnB1dChlKSB7XG4gICAgICAgIF9vbklucHV0ICYmIGhhbmRsZUlucHV0KGUpO1xuXG4gICAgICAgIGlmIChpc01pbmlBcHApIHtcbiAgICAgICAgICBmb3JjZVVwZGF0ZShmdW5jdGlvbiAodGljaykge1xuICAgICAgICAgICAgcmV0dXJuIHRpY2sgKyAxO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSkpKTtcbiAgfVxufSk7XG5UZXh0SW5wdXQuZGlzcGxheU5hbWUgPSAnVGV4dElucHV0JztcbmV4cG9ydCBkZWZhdWx0IFRleHRJbnB1dDsiLCJ2YXIga2V5Ym9hcmRUeXBlTWFwID0ge1xuICBkZWZhdWx0OiAndGV4dCcsXG4gICdhc2NpaS1jYXBhYmxlJzogJ3RleHQnLFxuICAnbnVtYmVycy1hbmQtcHVuY3R1YXRpb24nOiAnbnVtYmVyJyxcbiAgdXJsOiAndXJsJyxcbiAgJ251bWJlci1wYWQnOiAnbnVtYmVyJyxcbiAgJ3Bob25lLXBhZCc6ICd0ZWwnLFxuICAnbmFtZS1waG9uZS1wYWQnOiAndGV4dCcsXG4gICdlbWFpbC1hZGRyZXNzJzogJ2VtYWlsJyxcbiAgJ2RlY2ltYWwtcGFkJzogJ251bWJlcicsXG4gIHR3aXR0ZXI6ICd0ZXh0JyxcbiAgJ3dlYi1zZWFyY2gnOiAnc2VhcmNoJyxcbiAgbnVtZXJpYzogJ251bWJlcicsXG4gIC8vIEFsaWJhYmEgTWluaUFwcCBhbmQgV2VDaGF0IE1pbmlQcm9ncmFtXG4gIG51bWJlcjogJ251bWJlcicsXG4gIHRleHQ6ICd0ZXh0JyxcbiAgaWRjYXJkOiAnaWRjYXJkJyxcbiAgZGlnaXQ6ICdkaWdpdCcsXG4gIG51bWJlcnBhZDogJ251bWJlcnBhZCcsXG4gIGRpZ2l0cGFkOiAnZGlnaXRwYWQnLFxuICBpZGNhcmRwYWQ6ICdpZGNhcmRwYWQnXG59O1xuZXhwb3J0IGRlZmF1bHQga2V5Ym9hcmRUeXBlTWFwOyIsImltcG9ydCB7IGlzV2ViLCBpc1dlZXgsIGlzTWluaUFwcCwgaXNXZUNoYXRNaW5pUHJvZ3JhbSwgaXNCeXRlRGFuY2VNaWNyb0FwcCwgaXNCYWlkdVNtYXJ0UHJvZ3JhbSwgaXNLdWFpU2hvdU1pbmlQcm9ncmFtIH0gZnJvbSAndW5pdmVyc2FsLWVudic7XG5pbXBvcnQgVmlkZW9XZWIgZnJvbSAnLi93ZWInO1xuaW1wb3J0IFZpZGVvTWluaUFwcCBmcm9tICcuL21pbmlhcHAtcnVudGltZSc7XG5pbXBvcnQgVmlkZW9XZWV4IGZyb20gJy4vd2VleCc7XG52YXIgVmlkZW8gPSBudWxsO1xuXG5pZiAoaXNXZWIpIHtcbiAgVmlkZW8gPSBWaWRlb1dlYjtcbn0gZWxzZSBpZiAoaXNNaW5pQXBwIHx8IGlzV2VDaGF0TWluaVByb2dyYW0gfHwgaXNCeXRlRGFuY2VNaWNyb0FwcCB8fCBpc0JhaWR1U21hcnRQcm9ncmFtIHx8IGlzS3VhaVNob3VNaW5pUHJvZ3JhbSkge1xuICBWaWRlbyA9IFZpZGVvTWluaUFwcDtcbn0gZWxzZSBpZiAoaXNXZWV4KSB7XG4gIFZpZGVvID0gVmlkZW9XZWV4O1xufSBlbHNlIHtcbiAgVmlkZW8gPSBWaWRlb1dlYjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlkZW87XG5leHBvcnQgKiBmcm9tICcuL3R5cGVzJzsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50LCB1c2VSZWYsIHVzZUVmZmVjdCwgZm9yd2FyZFJlZiwgdXNlSW1wZXJhdGl2ZUhhbmRsZSB9IGZyb20gJ3JheCc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcy9kZWR1cGUnO1xuaW1wb3J0IG9taXQgZnJvbSAnb21pdC5qcyc7XG5pbXBvcnQgd3JhcERlZmF1bHRQcm9wZXJ0aWVzIGZyb20gJy4uL3V0aWxzL3dyYXBEZWZhdWx0UHJvcGVydGllcyc7XG5pbXBvcnQgeyBjcmVhdGVWaWRlb0NvbnRleHQgfSBmcm9tICdAdW5pL3ZpZGVvJztcbnZhciBtaW5pYXBwVmlkZW9Qcm9wc01hcCA9IHtcbiAgc2hvd011dGVCdG46ICdzaG93LW11dGUtYnRuJyxcbiAgc2hvd1BsYXlCdG46ICdzaG93LXBsYXktYnRuJyxcbiAgc2hvd0Z1bGxzY3JlZW5CdG46ICdzaG93LWZ1bGxzY3JlZW4tYnRuJyxcbiAgc2hvd0NlbnRlclBsYXlCdG46ICdzaG93LWNlbnRlci1wbGF5LWJ0bicsXG4gIHNob3dUaGluUHJvZ3Jlc3NCYXI6ICdzaG93LXRoaW4tcHJvZ3Jlc3MtYmFyJyxcbiAgb2JqZWN0Rml0OiAnb2JqZWN0LWZpdCdcbn07XG52YXIgVmlkZW8gPSBmb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBpZCA9IHByb3BzLmlkLFxuICAgICAgX3Byb3BzJGNsYXNzTmFtZSA9IHByb3BzLmNsYXNzTmFtZSxcbiAgICAgIGNsYXNzTmFtZSA9IF9wcm9wcyRjbGFzc05hbWUgPT09IHZvaWQgMCA/ICcnIDogX3Byb3BzJGNsYXNzTmFtZSxcbiAgICAgIHN0eWxlID0gcHJvcHMuc3R5bGUsXG4gICAgICBjb250cm9scyA9IHByb3BzLmNvbnRyb2xzLFxuICAgICAgcGxheUNvbnRyb2wgPSBwcm9wcy5wbGF5Q29udHJvbCxcbiAgICAgIGF1dG9QbGF5ID0gcHJvcHMuYXV0b1BsYXk7XG4gIHZhciByZWZFbCA9IHVzZVJlZihudWxsKTtcbiAgdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gcmVmRWwuY3VycmVudDtcbiAgfSk7XG4gIHZhciBjb21tb24gPSBvbWl0KHByb3BzLCBbJ2NsYXNzTmFtZScsICdjb250cm9scycsICdzdHlsZScsICdwbGF5Q29udHJvbCcsICdhdXRvUGxheSddKTsgLy8gRGVmYXVsdCBjb250cm9scyBpcyB0cnVlXG5cbiAgY29tbW9uLmNvbnRyb2xzID0gY29udHJvbHMgPT09IHVuZGVmaW5lZCB8fCBjb250cm9scyA9PT0gdHJ1ZTtcbiAgY29tbW9uLmF1dG9wbGF5ID0gcGxheUNvbnRyb2wgPT09ICdwbGF5JyB8fCBhdXRvUGxheTtcbiAgT2JqZWN0LmtleXMobWluaWFwcFZpZGVvUHJvcHNNYXApLmZvckVhY2goZnVuY3Rpb24gKHByb3ApIHtcbiAgICBjb21tb25bbWluaWFwcFZpZGVvUHJvcHNNYXBbcHJvcF1dID0gY29tbW9uW3Byb3BdO1xuICAgIGRlbGV0ZSBjb21tb25bcHJvcF07XG4gIH0pO1xuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChwbGF5Q29udHJvbCAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICBpZiAoIWlkKSB7XG4gICAgICAgIGNvbnNvbGUud2FybignaWQgaXMgcmVxdWlyZWQgaWYgdXNpbmcgcGxheUNvbnRyb2wgaW4gbWluaWFwcCEnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB2YXIgY2FjaGVWaWRlb0NvbnRleHQgPSBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJlZkVsLmN1cnJlbnQgPSBjcmVhdGVWaWRlb0NvbnRleHQoaWQpO1xuICAgICAgICB3aW5kb3cucmVtb3ZlRXZlbnRMaXN0ZW5lcignc2V0RGF0YUZpbmlzaGVkJywgY2FjaGVWaWRlb0NvbnRleHQpO1xuICAgICAgfTtcblxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3NldERhdGFGaW5pc2hlZCcsIGNhY2hlVmlkZW9Db250ZXh0KTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICBpZiAocGxheUNvbnRyb2wgIT09IHVuZGVmaW5lZCAmJiByZWZFbC5jdXJyZW50KSB7XG4gICAgICBwbGF5Q29udHJvbCA9PT0gJ3BsYXknID8gcmVmRWwuY3VycmVudC5wbGF5KCkgOiByZWZFbC5jdXJyZW50LnBhdXNlKCk7XG4gICAgfVxuICB9LCBbcGxheUNvbnRyb2xdKTtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXCJ2aWRlb1wiLCBfZXh0ZW5kcyh7fSwgY29tbW9uLCB7XG4gICAgY2xhc3NOYW1lOiBjeCgncmF4LXZpZGVvJywgY2xhc3NOYW1lKSxcbiAgICBzdHlsZTogc3R5bGUsXG4gICAgXCJ3ZWJraXQtcGxheXNpbmxpbmVcIjogdHJ1ZSxcbiAgICBwbGF5c2lubGluZTogdHJ1ZSxcbiAgICBzcmM6IHByb3BzLnNyY1xuICB9KSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IHdyYXBEZWZhdWx0UHJvcGVydGllcyhWaWRlbyk7IiwiZXhwb3J0IHt9OyIsImV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHdyYXBEZWZhdWx0UHJvcGVydGllcyhWaWRlbykge1xuICBWaWRlby5kaXNwbGF5TmFtZSA9ICdWaWRlbyc7XG4gIHJldHVybiBWaWRlbztcbn0iLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50LCB1c2VSZWYsIHVzZUVmZmVjdCwgZm9yd2FyZFJlZiwgdXNlSW1wZXJhdGl2ZUhhbmRsZSB9IGZyb20gJ3JheCc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcy9kZWR1cGUnO1xuaW1wb3J0IG9taXQgZnJvbSAnb21pdC5qcyc7XG5pbXBvcnQgd3JhcERlZmF1bHRQcm9wZXJ0aWVzIGZyb20gJy4uL3V0aWxzL3dyYXBEZWZhdWx0UHJvcGVydGllcyc7XG52YXIgVmlkZW8gPSBmb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBzdHlsZSA9IHByb3BzLnN0eWxlLFxuICAgICAgY29udHJvbHMgPSBwcm9wcy5jb250cm9scyxcbiAgICAgIHBsYXlDb250cm9sID0gcHJvcHMucGxheUNvbnRyb2wsXG4gICAgICBhdXRvUGxheSA9IHByb3BzLmF1dG9QbGF5LFxuICAgICAgb25QbGF5RXJyb3IgPSBwcm9wcy5vblBsYXlFcnJvcjtcbiAgdmFyIHJlZkVsID0gdXNlUmVmKG51bGwpO1xuICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiByZWZFbC5jdXJyZW50O1xuICB9KTtcbiAgdmFyIGNvbW1vbiA9IG9taXQocHJvcHMsIFsnY2xhc3NOYW1lJywgJ2NvbnRyb2xzJywgJ3N0eWxlJywgJ3BsYXlDb250cm9sJ10pOyAvLyBEZWZhdWx0IGNvbnRyb2xzIGlzIHRydWVcblxuICBpZiAoY29udHJvbHMgPT0gdW5kZWZpbmVkIHx8IGNvbnRyb2xzID09PSB0cnVlKSB7XG4gICAgY29tbW9uLmNvbnRyb2xzID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb21tb24uY29udHJvbHMgPSBmYWxzZTtcbiAgfVxuXG4gIGNvbW1vbi5hdXRvUGxheSA9IHBsYXlDb250cm9sID09PSAncGxheScgfHwgYXV0b1BsYXk7XG5cbiAgaWYgKGNvbW1vbi5hdXRvUGxheSA9PT0gZmFsc2UpIHtcbiAgICBkZWxldGUgY29tbW9uLmF1dG9QbGF5OyAvLyBJbiBXM0Mgc3RhbmRhcmQsIGlmIHRoZSBhdHRyaWJ1dGUgaXMgc2V0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgYXMgdHJ1ZSByZWdhcmRsZXNzIG9mIGl0cyB2YWx1ZVxuICB9XG5cbiAgdXNlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICB2YXIgbm9kZSA9IHJlZkVsLmN1cnJlbnQ7XG5cbiAgICBpZiAocGxheUNvbnRyb2wgIT09IHVuZGVmaW5lZCkge1xuICAgICAgaWYgKHBsYXlDb250cm9sID09PSAncGxheScpIHtcbiAgICAgICAgdmFyIHBsYXlQcm9taXNlID0gbm9kZS5wbGF5KCk7IC8vIFNob3VsZCByZXR1cm4gYSBQcm9taXNlIGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9IVE1MTWVkaWFFbGVtZW50L3BsYXlcblxuICAgICAgICBpZiAocGxheVByb21pc2UgIT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgIHBsYXlQcm9taXNlLmNhdGNoKGZ1bmN0aW9uIChlcnJvcikge1xuICAgICAgICAgICAgb25QbGF5RXJyb3IoZXJyb3IpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBub2RlLnBhdXNlKCk7XG4gICAgICB9XG4gICAgfVxuICB9LCBbcGxheUNvbnRyb2xdKTtcbiAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQoXCJ2aWRlb1wiLCBfZXh0ZW5kcyh7fSwgY29tbW9uLCB7XG4gICAgcmVmOiByZWZFbCxcbiAgICBjbGFzc05hbWU6IGN4KCdyYXgtdmlkZW8nLCBjbGFzc05hbWUpLFxuICAgIHN0eWxlOiBzdHlsZSxcbiAgICBcIndlYmtpdC1wbGF5c2lubGluZVwiOiB0cnVlLFxuICAgIHBsYXlzaW5saW5lOiB0cnVlLFxuICAgIHNyYzogcHJvcHMuc3JjXG4gIH0pKTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgd3JhcERlZmF1bHRQcm9wZXJ0aWVzKFZpZGVvKTsiLCJmdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50LCB1c2VSZWYsIGZvcndhcmRSZWYsIHVzZUltcGVyYXRpdmVIYW5kbGUgfSBmcm9tICdyYXgnO1xuaW1wb3J0IGN4IGZyb20gJ2NsYXNzbmFtZXMvZGVkdXBlJztcbmltcG9ydCBvbWl0IGZyb20gJ29taXQuanMnO1xuaW1wb3J0IHdyYXBEZWZhdWx0UHJvcGVydGllcyBmcm9tICcuLi91dGlscy93cmFwRGVmYXVsdFByb3BlcnRpZXMnO1xudmFyIFZpZGVvID0gZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgc3R5bGUgPSBwcm9wcy5zdHlsZSxcbiAgICAgIGNvbnRyb2xzID0gcHJvcHMuY29udHJvbHMsXG4gICAgICBwbGF5Q29udHJvbCA9IHByb3BzLnBsYXlDb250cm9sLFxuICAgICAgYXV0b1BsYXkgPSBwcm9wcy5hdXRvUGxheTtcbiAgdmFyIHJlZkVsID0gdXNlUmVmKG51bGwpO1xuICB1c2VJbXBlcmF0aXZlSGFuZGxlKHJlZiwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiByZWZFbC5jdXJyZW50O1xuICB9KTtcbiAgdmFyIGNvbW1vbiA9IG9taXQocHJvcHMsIFsnY2xhc3NOYW1lJywgJ2NvbnRyb2xzJywgJ3N0eWxlJywgJ3BsYXlDb250cm9sJ10pOyAvLyBEZWZhdWx0IGNvbnRyb2xzIGlzIHRydWVcblxuICBpZiAoY29udHJvbHMgPT0gdW5kZWZpbmVkIHx8IGNvbnRyb2xzID09PSB0cnVlKSB7XG4gICAgY29tbW9uLmNvbnRyb2xzID0gdHJ1ZTtcbiAgfSBlbHNlIHtcbiAgICBjb21tb24uY29udHJvbHMgPSAnbm9jb250cm9scyc7XG4gIH1cblxuICBjb21tb24uYXV0b1BsYXkgPSBwbGF5Q29udHJvbCA9PT0gJ3BsYXknIHx8IGF1dG9QbGF5O1xuICByZXR1cm4gY3JlYXRlRWxlbWVudChcInZpZGVvXCIsIF9leHRlbmRzKHt9LCBjb21tb24sIHtcbiAgICByZWY6IHJlZkVsLFxuICAgIGNsYXNzTmFtZTogY3goJ3JheC12aWRlbycsIGNsYXNzTmFtZSksXG4gICAgc3R5bGU6IHN0eWxlLFxuICAgIHBsYXlTdGF0dXM6IHBsYXlDb250cm9sXG4gIH0pKTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgd3JhcERlZmF1bHRQcm9wZXJ0aWVzKFZpZGVvKTsiLCJ2YXIgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwic3R5bGVcIiwgXCJvbkZpcnN0QXBwZWFyXCIsIFwib25BcHBlYXJcIl07XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgdXNlUmVmLCBmb3J3YXJkUmVmIH0gZnJvbSAncmF4JztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzL2RlZHVwZSc7XG5pbXBvcnQgeyBpc1dlZXggfSBmcm9tICd1bml2ZXJzYWwtZW52JztcbmltcG9ydCB3cmFwRGVmYXVsdFByb3BlcnRpZXMgZnJvbSAnLi4vdXRpbHMvd3JhcERlZmF1bHRQcm9wZXJ0aWVzJztcbmltcG9ydCBpbmRleFN0eWxlU2hlZXQgZnJvbSAnLi4vaW5kZXguY3NzJztcbnZhciBfc3R5bGVTaGVldCA9IGluZGV4U3R5bGVTaGVldDtcblxuZnVuY3Rpb24gX2dldENsYXNzTmFtZSgpIHtcbiAgdmFyIGNsYXNzTmFtZSA9IFtdO1xuICB2YXIgYXJncyA9IGFyZ3VtZW50c1swXTtcbiAgdmFyIHR5cGUgPSBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmNhbGwoYXJncykuc2xpY2UoOCwgLTEpLnRvTG93ZXJDYXNlKCk7XG5cbiAgaWYgKHR5cGUgPT09ICdzdHJpbmcnKSB7XG4gICAgYXJncyA9IGFyZ3MudHJpbSgpO1xuICAgIGFyZ3MgJiYgY2xhc3NOYW1lLnB1c2goYXJncyk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ2FycmF5Jykge1xuICAgIGFyZ3MuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7XG4gICAgICBjbHMgPSBfZ2V0Q2xhc3NOYW1lKGNscykudHJpbSgpO1xuICAgICAgY2xzICYmIGNsYXNzTmFtZS5wdXNoKGNscyk7XG4gICAgfSk7XG4gIH0gZWxzZSBpZiAodHlwZSA9PT0gJ29iamVjdCcpIHtcbiAgICBmb3IgKHZhciBrIGluIGFyZ3MpIHtcbiAgICAgIGsgPSBrLnRyaW0oKTtcblxuICAgICAgaWYgKGsgJiYgYXJncy5oYXNPd25Qcm9wZXJ0eShrKSAmJiBhcmdzW2tdKSB7XG4gICAgICAgIGNsYXNzTmFtZS5wdXNoKGspO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBjbGFzc05hbWUuam9pbignICcpLnRyaW0oKTtcbn1cblxuZnVuY3Rpb24gX2dldFN0eWxlKGNsYXNzTmFtZUV4cHJlc3Npb24pIHtcbiAgdmFyIGNhY2hlID0gX3N0eWxlU2hlZXQuX19jYWNoZSB8fCAoX3N0eWxlU2hlZXQuX19jYWNoZSA9IHt9KTtcblxuICB2YXIgY2xhc3NOYW1lID0gX2dldENsYXNzTmFtZShjbGFzc05hbWVFeHByZXNzaW9uKTtcblxuICB2YXIgY2xhc3NOYW1lQXJyID0gY2xhc3NOYW1lLnNwbGl0KC9cXHMrLyk7XG4gIHZhciBzdHlsZSA9IGNhY2hlW2NsYXNzTmFtZV07XG5cbiAgaWYgKCFzdHlsZSkge1xuICAgIHN0eWxlID0ge307XG5cbiAgICBpZiAoY2xhc3NOYW1lQXJyLmxlbmd0aCA9PT0gMSkge1xuICAgICAgc3R5bGUgPSBfc3R5bGVTaGVldFtjbGFzc05hbWVBcnJbMF0udHJpbSgpXTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2xhc3NOYW1lQXJyLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgICB2YXIgdmFsdWUgPSBfc3R5bGVTaGVldFtjbHMudHJpbSgpXTtcblxuICAgICAgICBpZiAodHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgICAgIHN0eWxlID0gT2JqZWN0LmFzc2lnbihzdHlsZSwgX3N0eWxlU2hlZXRbY2xzLnRyaW0oKV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBjYWNoZVtjbGFzc05hbWVdID0gc3R5bGU7XG4gIH1cblxuICByZXR1cm4gc3R5bGU7XG59XG5cbnZhciBWaWV3ID0gZm9yd2FyZFJlZihmdW5jdGlvbiAocHJvcHMsIHJlZikge1xuICB2YXIgc2VsZlJlZiA9IHVzZVJlZihudWxsKTtcblxuICB2YXIgY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgc3R5bGUgPSBwcm9wcy5zdHlsZSxcbiAgICAgIG9uRmlyc3RBcHBlYXIgPSBwcm9wcy5vbkZpcnN0QXBwZWFyLFxuICAgICAgb25BcHBlYXIgPSBwcm9wcy5vbkFwcGVhcixcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcblxuICB2YXIgaGFuZGxlQXBwZWFyID0gb25BcHBlYXI7XG5cbiAgaWYgKG9uRmlyc3RBcHBlYXIpIHtcbiAgICBoYW5kbGVBcHBlYXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIG9uQXBwZWFyICYmIG9uQXBwZWFyKGV2ZW50KTtcblxuICAgICAgaWYgKCFzZWxmUmVmLmN1cnJlbnQgfHwgIXNlbGZSZWYuY3VycmVudC50cmlnZ2VyZWRBcHBlYXIpIHtcbiAgICAgICAgb25GaXJzdEFwcGVhciAmJiBvbkZpcnN0QXBwZWFyKGV2ZW50KTtcbiAgICAgICAgc2VsZlJlZi5jdXJyZW50ID0ge1xuICAgICAgICAgIHRyaWdnZXJlZEFwcGVhcjogdHJ1ZVxuICAgICAgICB9O1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICByZXR1cm4gY3JlYXRlRWxlbWVudChcImRpdlwiLCBfZXh0ZW5kcyh7fSwgcmVzdCwge1xuICAgIG9uQXBwZWFyOiBoYW5kbGVBcHBlYXIsXG4gICAgcmVmOiByZWYsXG4gICAgY2xhc3NOYW1lOiBjeChpc1dlZXggPyAnJyA6ICdyYXgtdmlldy12MicsIGNsYXNzTmFtZSksXG4gICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIF9nZXRTdHlsZShjeChpc1dlZXggPyAnJyA6ICdyYXgtdmlldy12MicsIGNsYXNzTmFtZSkpLCBzdHlsZSlcbiAgfSkpO1xufSk7XG5leHBvcnQgZGVmYXVsdCB3cmFwRGVmYXVsdFByb3BlcnRpZXMoVmlldyk7IiwiLy8gZXh0cmFjdGVkIGJ5IG1pbmktY3NzLWV4dHJhY3QtcGx1Z2luIiwiaW1wb3J0IHsgaXNNaW5pQXBwLCBpc1dlYiwgaXNXZUNoYXRNaW5pUHJvZ3JhbSB9IGZyb20gJ3VuaXZlcnNhbC1lbnYnO1xuaW1wb3J0IFZpZXdDb21tb24gZnJvbSAnLi9jb21tb24nO1xuaW1wb3J0IFZpZXdBbGlNaW5pQXBwIGZyb20gJy4vbWluaWFwcC9hbGknO1xuaW1wb3J0IFZpZXdXZWNoYXRNaW5pUHJvZ3JhbSBmcm9tICcuL21pbmlhcHAvd2VjaGF0JztcbnZhciBWaWV3ID0gbnVsbDtcblxuaWYgKGlzV2ViKSB7XG4gIFZpZXcgPSBWaWV3Q29tbW9uO1xufSBlbHNlIGlmIChpc01pbmlBcHApIHtcbiAgVmlldyA9IFZpZXdBbGlNaW5pQXBwO1xufSBlbHNlIGlmIChpc1dlQ2hhdE1pbmlQcm9ncmFtKSB7XG4gIFZpZXcgPSBWaWV3V2VjaGF0TWluaVByb2dyYW07XG59IGVsc2Uge1xuICBWaWV3ID0gVmlld0NvbW1vbjtcbn1cblxuZXhwb3J0IGRlZmF1bHQgVmlldzsiLCJ2YXIgX2V4Y2x1ZGVkID0gW1wiY2xhc3NOYW1lXCIsIFwic3R5bGVcIiwgXCJvbkZpcnN0QXBwZWFyXCIsIFwib25BcHBlYXJcIl07XG5cbmZ1bmN0aW9uIF9leHRlbmRzKCkgeyBfZXh0ZW5kcyA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24gKHRhcmdldCkgeyBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykgeyB2YXIgc291cmNlID0gYXJndW1lbnRzW2ldOyBmb3IgKHZhciBrZXkgaW4gc291cmNlKSB7IGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoc291cmNlLCBrZXkpKSB7IHRhcmdldFtrZXldID0gc291cmNlW2tleV07IH0gfSB9IHJldHVybiB0YXJnZXQ7IH07IHJldHVybiBfZXh0ZW5kcy5hcHBseSh0aGlzLCBhcmd1bWVudHMpOyB9XG5cbmZ1bmN0aW9uIF9vYmplY3RXaXRob3V0UHJvcGVydGllc0xvb3NlKHNvdXJjZSwgZXhjbHVkZWQpIHsgaWYgKHNvdXJjZSA9PSBudWxsKSByZXR1cm4ge307IHZhciB0YXJnZXQgPSB7fTsgdmFyIHNvdXJjZUtleXMgPSBPYmplY3Qua2V5cyhzb3VyY2UpOyB2YXIga2V5LCBpOyBmb3IgKGkgPSAwOyBpIDwgc291cmNlS2V5cy5sZW5ndGg7IGkrKykgeyBrZXkgPSBzb3VyY2VLZXlzW2ldOyBpZiAoZXhjbHVkZWQuaW5kZXhPZihrZXkpID49IDApIGNvbnRpbnVlOyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IHJldHVybiB0YXJnZXQ7IH1cblxuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgZm9yd2FyZFJlZiB9IGZyb20gJ3JheCc7XG5pbXBvcnQgY3ggZnJvbSAnY2xhc3NuYW1lcy9kZWR1cGUnO1xuaW1wb3J0IHdyYXBEZWZhdWx0UHJvcGVydGllcyBmcm9tICcuLi91dGlscy93cmFwRGVmYXVsdFByb3BlcnRpZXMnO1xuaW1wb3J0IGluZGV4U3R5bGVTaGVldCBmcm9tICcuLi9pbmRleC5jc3MnO1xudmFyIF9zdHlsZVNoZWV0ID0gaW5kZXhTdHlsZVNoZWV0O1xuXG5mdW5jdGlvbiBfZ2V0Q2xhc3NOYW1lKCkge1xuICB2YXIgY2xhc3NOYW1lID0gW107XG4gIHZhciBhcmdzID0gYXJndW1lbnRzWzBdO1xuICB2YXIgdHlwZSA9IE9iamVjdC5wcm90b3R5cGUudG9TdHJpbmcuY2FsbChhcmdzKS5zbGljZSg4LCAtMSkudG9Mb3dlckNhc2UoKTtcblxuICBpZiAodHlwZSA9PT0gJ3N0cmluZycpIHtcbiAgICBhcmdzID0gYXJncy50cmltKCk7XG4gICAgYXJncyAmJiBjbGFzc05hbWUucHVzaChhcmdzKTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnYXJyYXknKSB7XG4gICAgYXJncy5mb3JFYWNoKGZ1bmN0aW9uIChjbHMpIHtcbiAgICAgIGNscyA9IF9nZXRDbGFzc05hbWUoY2xzKS50cmltKCk7XG4gICAgICBjbHMgJiYgY2xhc3NOYW1lLnB1c2goY2xzKTtcbiAgICB9KTtcbiAgfSBlbHNlIGlmICh0eXBlID09PSAnb2JqZWN0Jykge1xuICAgIGZvciAodmFyIGsgaW4gYXJncykge1xuICAgICAgayA9IGsudHJpbSgpO1xuXG4gICAgICBpZiAoayAmJiBhcmdzLmhhc093blByb3BlcnR5KGspICYmIGFyZ3Nba10pIHtcbiAgICAgICAgY2xhc3NOYW1lLnB1c2goayk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGNsYXNzTmFtZS5qb2luKCcgJykudHJpbSgpO1xufVxuXG5mdW5jdGlvbiBfZ2V0U3R5bGUoY2xhc3NOYW1lRXhwcmVzc2lvbikge1xuICB2YXIgY2FjaGUgPSBfc3R5bGVTaGVldC5fX2NhY2hlIHx8IChfc3R5bGVTaGVldC5fX2NhY2hlID0ge30pO1xuXG4gIHZhciBjbGFzc05hbWUgPSBfZ2V0Q2xhc3NOYW1lKGNsYXNzTmFtZUV4cHJlc3Npb24pO1xuXG4gIHZhciBjbGFzc05hbWVBcnIgPSBjbGFzc05hbWUuc3BsaXQoL1xccysvKTtcbiAgdmFyIHN0eWxlID0gY2FjaGVbY2xhc3NOYW1lXTtcblxuICBpZiAoIXN0eWxlKSB7XG4gICAgc3R5bGUgPSB7fTtcblxuICAgIGlmIChjbGFzc05hbWVBcnIubGVuZ3RoID09PSAxKSB7XG4gICAgICBzdHlsZSA9IF9zdHlsZVNoZWV0W2NsYXNzTmFtZUFyclswXS50cmltKCldO1xuICAgIH0gZWxzZSB7XG4gICAgICBjbGFzc05hbWVBcnIuZm9yRWFjaChmdW5jdGlvbiAoY2xzKSB7XG4gICAgICAgIHZhciB2YWx1ZSA9IF9zdHlsZVNoZWV0W2Nscy50cmltKCldO1xuXG4gICAgICAgIGlmICh0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgc3R5bGUgPSBPYmplY3QuYXNzaWduKHN0eWxlLCBfc3R5bGVTaGVldFtjbHMudHJpbSgpXSk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNhY2hlW2NsYXNzTmFtZV0gPSBzdHlsZTtcbiAgfVxuXG4gIHJldHVybiBzdHlsZTtcbn1cblxudmFyIFZpZXcgPSBmb3J3YXJkUmVmKGZ1bmN0aW9uIChwcm9wcywgcmVmKSB7XG4gIHZhciBfcHJvcHMkY2xhc3NOYW1lID0gcHJvcHMuY2xhc3NOYW1lLFxuICAgICAgY2xhc3NOYW1lID0gX3Byb3BzJGNsYXNzTmFtZSA9PT0gdm9pZCAwID8gJycgOiBfcHJvcHMkY2xhc3NOYW1lLFxuICAgICAgc3R5bGUgPSBwcm9wcy5zdHlsZSxcbiAgICAgIG9uRmlyc3RBcHBlYXIgPSBwcm9wcy5vbkZpcnN0QXBwZWFyLFxuICAgICAgb25BcHBlYXIgPSBwcm9wcy5vbkFwcGVhcixcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTsgLy8gRm9yIG1pbmlhcHAgcnVudGltZSBwcmUtY29tcGlsZVxuICAvLyBAdHMtaWdub3JlXG5cblxuICByZXR1cm4gY3JlYXRlRWxlbWVudChcInZpZXdcIiwgX2V4dGVuZHMoe30sIHJlc3QsIHtcbiAgICBvbkFwcGVhcjogb25BcHBlYXIsXG4gICAgb25EaXNhcHBlYXI6IHJlc3Qub25EaXNhcHBlYXIsXG4gICAgb25GaXJzdEFwcGVhcjogb25GaXJzdEFwcGVhcixcbiAgICByZWY6IHJlZixcbiAgICBjbGFzc05hbWU6IGN4KCdyYXgtdmlldy12MicsIGNsYXNzTmFtZSksXG4gICAgc3R5bGU6IE9iamVjdC5hc3NpZ24oe30sIF9nZXRTdHlsZShjeCgncmF4LXZpZXctdjInLCBjbGFzc05hbWUpKSwgc3R5bGUpXG4gIH0pKTtcbn0pO1xuZXhwb3J0IGRlZmF1bHQgd3JhcERlZmF1bHRQcm9wZXJ0aWVzKFZpZXcpOyIsInZhciBfZXhjbHVkZWQgPSBbXCJjbGFzc05hbWVcIiwgXCJzdHlsZVwiLCBcIm9uRmlyc3RBcHBlYXJcIiwgXCJvbkFwcGVhclwiLCBcIm9uRGlzYXBwZWFyXCJdO1xuXG5mdW5jdGlvbiBfZXh0ZW5kcygpIHsgX2V4dGVuZHMgPSBPYmplY3QuYXNzaWduIHx8IGZ1bmN0aW9uICh0YXJnZXQpIHsgZm9yICh2YXIgaSA9IDE7IGkgPCBhcmd1bWVudHMubGVuZ3RoOyBpKyspIHsgdmFyIHNvdXJjZSA9IGFyZ3VtZW50c1tpXTsgZm9yICh2YXIga2V5IGluIHNvdXJjZSkgeyBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHNvdXJjZSwga2V5KSkgeyB0YXJnZXRba2V5XSA9IHNvdXJjZVtrZXldOyB9IH0gfSByZXR1cm4gdGFyZ2V0OyB9OyByZXR1cm4gX2V4dGVuZHMuYXBwbHkodGhpcywgYXJndW1lbnRzKTsgfVxuXG5mdW5jdGlvbiBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShzb3VyY2UsIGV4Y2x1ZGVkKSB7IGlmIChzb3VyY2UgPT0gbnVsbCkgcmV0dXJuIHt9OyB2YXIgdGFyZ2V0ID0ge307IHZhciBzb3VyY2VLZXlzID0gT2JqZWN0LmtleXMoc291cmNlKTsgdmFyIGtleSwgaTsgZm9yIChpID0gMDsgaSA8IHNvdXJjZUtleXMubGVuZ3RoOyBpKyspIHsga2V5ID0gc291cmNlS2V5c1tpXTsgaWYgKGV4Y2x1ZGVkLmluZGV4T2Yoa2V5KSA+PSAwKSBjb250aW51ZTsgdGFyZ2V0W2tleV0gPSBzb3VyY2Vba2V5XTsgfSByZXR1cm4gdGFyZ2V0OyB9XG5cbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZVJlZiwgZm9yd2FyZFJlZiwgdXNlRWZmZWN0IH0gZnJvbSAncmF4JztcbmltcG9ydCBjeCBmcm9tICdjbGFzc25hbWVzL2RlZHVwZSc7XG5pbXBvcnQgd3JhcERlZmF1bHRQcm9wZXJ0aWVzIGZyb20gJy4uL3V0aWxzL3dyYXBEZWZhdWx0UHJvcGVydGllcyc7XG5pbXBvcnQgaW5kZXhTdHlsZVNoZWV0IGZyb20gJy4uL2luZGV4LmNzcyc7XG52YXIgX3N0eWxlU2hlZXQgPSBpbmRleFN0eWxlU2hlZXQ7XG5cbmZ1bmN0aW9uIF9nZXRDbGFzc05hbWUoKSB7XG4gIHZhciBjbGFzc05hbWUgPSBbXTtcbiAgdmFyIGFyZ3MgPSBhcmd1bWVudHNbMF07XG4gIHZhciB0eXBlID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKGFyZ3MpLnNsaWNlKDgsIC0xKS50b0xvd2VyQ2FzZSgpO1xuXG4gIGlmICh0eXBlID09PSAnc3RyaW5nJykge1xuICAgIGFyZ3MgPSBhcmdzLnRyaW0oKTtcbiAgICBhcmdzICYmIGNsYXNzTmFtZS5wdXNoKGFyZ3MpO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdhcnJheScpIHtcbiAgICBhcmdzLmZvckVhY2goZnVuY3Rpb24gKGNscykge1xuICAgICAgY2xzID0gX2dldENsYXNzTmFtZShjbHMpLnRyaW0oKTtcbiAgICAgIGNscyAmJiBjbGFzc05hbWUucHVzaChjbHMpO1xuICAgIH0pO1xuICB9IGVsc2UgaWYgKHR5cGUgPT09ICdvYmplY3QnKSB7XG4gICAgZm9yICh2YXIgayBpbiBhcmdzKSB7XG4gICAgICBrID0gay50cmltKCk7XG5cbiAgICAgIGlmIChrICYmIGFyZ3MuaGFzT3duUHJvcGVydHkoaykgJiYgYXJnc1trXSkge1xuICAgICAgICBjbGFzc05hbWUucHVzaChrKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gY2xhc3NOYW1lLmpvaW4oJyAnKS50cmltKCk7XG59XG5cbmZ1bmN0aW9uIF9nZXRTdHlsZShjbGFzc05hbWVFeHByZXNzaW9uKSB7XG4gIHZhciBjYWNoZSA9IF9zdHlsZVNoZWV0Ll9fY2FjaGUgfHwgKF9zdHlsZVNoZWV0Ll9fY2FjaGUgPSB7fSk7XG5cbiAgdmFyIGNsYXNzTmFtZSA9IF9nZXRDbGFzc05hbWUoY2xhc3NOYW1lRXhwcmVzc2lvbik7XG5cbiAgdmFyIGNsYXNzTmFtZUFyciA9IGNsYXNzTmFtZS5zcGxpdCgvXFxzKy8pO1xuICB2YXIgc3R5bGUgPSBjYWNoZVtjbGFzc05hbWVdO1xuXG4gIGlmICghc3R5bGUpIHtcbiAgICBzdHlsZSA9IHt9O1xuXG4gICAgaWYgKGNsYXNzTmFtZUFyci5sZW5ndGggPT09IDEpIHtcbiAgICAgIHN0eWxlID0gX3N0eWxlU2hlZXRbY2xhc3NOYW1lQXJyWzBdLnRyaW0oKV07XG4gICAgfSBlbHNlIHtcbiAgICAgIGNsYXNzTmFtZUFyci5mb3JFYWNoKGZ1bmN0aW9uIChjbHMpIHtcbiAgICAgICAgdmFyIHZhbHVlID0gX3N0eWxlU2hlZXRbY2xzLnRyaW0oKV07XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBzdHlsZSA9IE9iamVjdC5hc3NpZ24oc3R5bGUsIF9zdHlsZVNoZWV0W2Nscy50cmltKCldKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuXG4gICAgY2FjaGVbY2xhc3NOYW1lXSA9IHN0eWxlO1xuICB9XG5cbiAgcmV0dXJuIHN0eWxlO1xufVxuXG52YXIgVmlldyA9IGZvcndhcmRSZWYoZnVuY3Rpb24gKHByb3BzLCByZWYpIHtcbiAgdmFyIHNlbGZSZWYgPSB1c2VSZWYobnVsbCk7XG5cbiAgdmFyIF9wcm9wcyRjbGFzc05hbWUgPSBwcm9wcy5jbGFzc05hbWUsXG4gICAgICBjbGFzc05hbWUgPSBfcHJvcHMkY2xhc3NOYW1lID09PSB2b2lkIDAgPyAnJyA6IF9wcm9wcyRjbGFzc05hbWUsXG4gICAgICBzdHlsZSA9IHByb3BzLnN0eWxlLFxuICAgICAgb25GaXJzdEFwcGVhciA9IHByb3BzLm9uRmlyc3RBcHBlYXIsXG4gICAgICBvbkFwcGVhciA9IHByb3BzLm9uQXBwZWFyLFxuICAgICAgb25EaXNhcHBlYXIgPSBwcm9wcy5vbkRpc2FwcGVhcixcbiAgICAgIHJlc3QgPSBfb2JqZWN0V2l0aG91dFByb3BlcnRpZXNMb29zZShwcm9wcywgX2V4Y2x1ZGVkKTtcblxuICB1c2VFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmICghKHR5cGVvZiBvbkFwcGVhciA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb25GaXJzdEFwcGVhciA9PT0gJ2Z1bmN0aW9uJyB8fCB0eXBlb2Ygb25EaXNhcHBlYXIgPT09ICdmdW5jdGlvbicpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGlmICghcHJvcHMuaWQpIHtcbiAgICAgIGNvbnNvbGUud2FybignaWQgaXMgcmVxdWlyZWQgaWYgdXNpbmcgb25BcHBlYXIgaW4gd2VjaGF0IG1pbmlwcm9ncmFtIScpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG5cbiAgICB2YXIgZWxlID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQocHJvcHMuaWQpO1xuXG4gICAgaWYgKGVsZSAhPSBudWxsICYmIGVsZS5faW50ZXJuYWwpIHtcbiAgICAgIHZhciBvYnNlcnZlID0gZnVuY3Rpb24gKCkge1xuICAgICAgICBzZWxmUmVmLm9ic2VydmVyID0gZWxlLl9pbnRlcm5hbC5jcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlcigpLnJlbGF0aXZlVG9WaWV3cG9ydCgpO1xuICAgICAgICBzZWxmUmVmLm9ic2VydmVyLm9ic2VydmUoXCIjXCIgKyBwcm9wcy5pZCwgZnVuY3Rpb24gKHJlcykge1xuICAgICAgICAgIHZhciBfcmVzJGludGVyc2VjdGlvblJhdGkgPSByZXMuaW50ZXJzZWN0aW9uUmF0aW8sXG4gICAgICAgICAgICAgIGludGVyc2VjdGlvblJhdGlvID0gX3JlcyRpbnRlcnNlY3Rpb25SYXRpID09PSB2b2lkIDAgPyAwIDogX3JlcyRpbnRlcnNlY3Rpb25SYXRpO1xuXG4gICAgICAgICAgaWYgKGludGVyc2VjdGlvblJhdGlvID4gMCkge1xuICAgICAgICAgICAgdHlwZW9mIG9uQXBwZWFyID09PSAnZnVuY3Rpb24nICYmIG9uQXBwZWFyKHJlcyk7XG5cbiAgICAgICAgICAgIGlmICh0eXBlb2Ygb25GaXJzdEFwcGVhciA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgICBpZiAoIXNlbGZSZWYudHJpZ2dlcmVkQXBwZWFyKSB7XG4gICAgICAgICAgICAgICAgb25GaXJzdEFwcGVhcihyZXMpO1xuICAgICAgICAgICAgICAgIHNlbGZSZWYudHJpZ2dlcmVkQXBwZWFyID0gdHJ1ZTtcblxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb25BcHBlYXIgIT09ICdmdW5jdGlvbicgJiYgdHlwZW9mIG9uRGlzYXBwZWFyICE9PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgICAgICBzZWxmUmVmLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdHlwZW9mIG9uRGlzYXBwZWFyID09PSAnZnVuY3Rpb24nICYmIG9uRGlzYXBwZWFyKHJlcyk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgd2luZG93LnJlbW92ZUV2ZW50TGlzdGVuZXIoJ3NldERhdGFGaW5pc2hlZCcsIG9ic2VydmUpO1xuICAgICAgfTtcblxuICAgICAgd2luZG93LmFkZEV2ZW50TGlzdGVuZXIoJ3NldERhdGFGaW5pc2hlZCcsIG9ic2VydmUpO1xuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoc2VsZlJlZi5vYnNlcnZlcikge1xuICAgICAgICBzZWxmUmVmLm9ic2VydmVyLmRpc2Nvbm5lY3QoKTtcbiAgICAgIH1cbiAgICB9O1xuICB9LCBbcHJvcHMuaWQsIG9uQXBwZWFyLCBvbkRpc2FwcGVhcl0pO1xuICB2YXIgaGFuZGxlQXBwZWFyID0gb25BcHBlYXI7XG5cbiAgaWYgKG9uRmlyc3RBcHBlYXIpIHtcbiAgICBoYW5kbGVBcHBlYXIgPSBmdW5jdGlvbiAoZXZlbnQpIHtcbiAgICAgIG9uQXBwZWFyICYmIG9uQXBwZWFyKGV2ZW50KTtcblxuICAgICAgaWYgKCFzZWxmUmVmLnRyaWdnZXJlZEFwcGVhcikge1xuICAgICAgICBvbkZpcnN0QXBwZWFyICYmIG9uRmlyc3RBcHBlYXIoZXZlbnQpO1xuICAgICAgICBzZWxmUmVmLnRyaWdnZXJlZEFwcGVhciA9IHRydWU7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIHJldHVybiBjcmVhdGVFbGVtZW50KFwiZGl2XCIsIF9leHRlbmRzKHt9LCByZXN0LCB7XG4gICAgb25BcHBlYXI6IGhhbmRsZUFwcGVhcixcbiAgICBvbkRpc2FwcGVhcjogb25EaXNhcHBlYXIsXG4gICAgcmVmOiByZWYsXG4gICAgY2xhc3NOYW1lOiBjeCgncmF4LXZpZXctdjInLCBjbGFzc05hbWUpLFxuICAgIHN0eWxlOiBPYmplY3QuYXNzaWduKHt9LCBfZ2V0U3R5bGUoY3goJ3JheC12aWV3LXYyJywgY2xhc3NOYW1lKSksIHN0eWxlKVxuICB9KSk7XG59KTtcbmV4cG9ydCBkZWZhdWx0IHdyYXBEZWZhdWx0UHJvcGVydGllcyhWaWV3KTsiLCJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB3cmFwRGVmYXVsdFByb3BlcnRpZXMoVmlldykge1xuICBWaWV3LmRpc3BsYXlOYW1lID0gJ1ZpZXcnO1xuICByZXR1cm4gVmlldztcbn0iLCIvKlxuICogU3RhdGVmdWwgdGhpbmdzIGluIHJ1bnRpbWVcbiAqL1xudmFyIEhvc3QgPSB7XG4gIF9fbW91bnRJRDogMSxcbiAgX19pc1VwZGF0aW5nOiBmYWxzZSxcbiAgLy8gSW5qZWN0XG4gIGRyaXZlcjogbnVsbCxcbiAgLy8gUm9vdHNcbiAgcm9vdENvbXBvbmVudHM6IHt9LFxuICByb290SW5zdGFuY2VzOiB7fSxcbiAgLy8gQ3VycmVudCBvd25lciBjb21wb25lbnRcbiAgb3duZXI6IG51bGxcbn07XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxudmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0JDEgPSAnU0VDUkVUX0RPX05PVF9QQVNTX1RISVNfT1JfWU9VX1dJTExfQkVfRklSRUQnO1xuXG52YXIgUmVhY3RQcm9wVHlwZXNTZWNyZXRfMSA9IFJlYWN0UHJvcFR5cGVzU2VjcmV0JDE7XG5cbi8qKlxuICogQ29weXJpZ2h0IChjKSAyMDEzLXByZXNlbnQsIEZhY2Vib29rLCBJbmMuXG4gKlxuICogVGhpcyBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciB0aGUgTUlUIGxpY2Vuc2UgZm91bmQgaW4gdGhlXG4gKiBMSUNFTlNFIGZpbGUgaW4gdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoaXMgc291cmNlIHRyZWUuXG4gKi9cblxudmFyIHByaW50V2FybmluZyA9IGZ1bmN0aW9uKCkge307XG5cbntcbiAgdmFyIFJlYWN0UHJvcFR5cGVzU2VjcmV0ID0gUmVhY3RQcm9wVHlwZXNTZWNyZXRfMTtcbiAgdmFyIGxvZ2dlZFR5cGVGYWlsdXJlcyA9IHt9O1xuICB2YXIgaGFzID0gRnVuY3Rpb24uY2FsbC5iaW5kKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkpO1xuXG4gIHByaW50V2FybmluZyA9IGZ1bmN0aW9uKHRleHQpIHtcbiAgICB2YXIgbWVzc2FnZSA9ICdXYXJuaW5nOiAnICsgdGV4dDtcbiAgICBpZiAodHlwZW9mIGNvbnNvbGUgIT09ICd1bmRlZmluZWQnKSB7XG4gICAgICBjb25zb2xlLmVycm9yKG1lc3NhZ2UpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgLy8gLS0tIFdlbGNvbWUgdG8gZGVidWdnaW5nIFJlYWN0IC0tLVxuICAgICAgLy8gVGhpcyBlcnJvciB3YXMgdGhyb3duIGFzIGEgY29udmVuaWVuY2Ugc28gdGhhdCB5b3UgY2FuIHVzZSB0aGlzIHN0YWNrXG4gICAgICAvLyB0byBmaW5kIHRoZSBjYWxsc2l0ZSB0aGF0IGNhdXNlZCB0aGlzIHdhcm5pbmcgdG8gZmlyZS5cbiAgICAgIHRocm93IG5ldyBFcnJvcihtZXNzYWdlKTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9O1xufVxuXG4vKipcbiAqIEFzc2VydCB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2ggd2l0aCB0aGUgdHlwZSBzcGVjcy5cbiAqIEVycm9yIG1lc3NhZ2VzIGFyZSBtZW1vcml6ZWQgYW5kIHdpbGwgb25seSBiZSBzaG93biBvbmNlLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSB0eXBlU3BlY3MgTWFwIG9mIG5hbWUgdG8gYSBSZWFjdFByb3BUeXBlXG4gKiBAcGFyYW0ge29iamVjdH0gdmFsdWVzIFJ1bnRpbWUgdmFsdWVzIHRoYXQgbmVlZCB0byBiZSB0eXBlLWNoZWNrZWRcbiAqIEBwYXJhbSB7c3RyaW5nfSBsb2NhdGlvbiBlLmcuIFwicHJvcFwiLCBcImNvbnRleHRcIiwgXCJjaGlsZCBjb250ZXh0XCJcbiAqIEBwYXJhbSB7c3RyaW5nfSBjb21wb25lbnROYW1lIE5hbWUgb2YgdGhlIGNvbXBvbmVudCBmb3IgZXJyb3IgbWVzc2FnZXMuXG4gKiBAcGFyYW0gez9GdW5jdGlvbn0gZ2V0U3RhY2sgUmV0dXJucyB0aGUgY29tcG9uZW50IHN0YWNrLlxuICogQHByaXZhdGVcbiAqL1xuZnVuY3Rpb24gY2hlY2tQcm9wVHlwZXModHlwZVNwZWNzLCB2YWx1ZXMsIGxvY2F0aW9uLCBjb21wb25lbnROYW1lLCBnZXRTdGFjaykge1xuICB7XG4gICAgZm9yICh2YXIgdHlwZVNwZWNOYW1lIGluIHR5cGVTcGVjcykge1xuICAgICAgaWYgKGhhcyh0eXBlU3BlY3MsIHR5cGVTcGVjTmFtZSkpIHtcbiAgICAgICAgdmFyIGVycm9yO1xuICAgICAgICAvLyBQcm9wIHR5cGUgdmFsaWRhdGlvbiBtYXkgdGhyb3cuIEluIGNhc2UgdGhleSBkbywgd2UgZG9uJ3Qgd2FudCB0b1xuICAgICAgICAvLyBmYWlsIHRoZSByZW5kZXIgcGhhc2Ugd2hlcmUgaXQgZGlkbid0IGZhaWwgYmVmb3JlLiBTbyB3ZSBsb2cgaXQuXG4gICAgICAgIC8vIEFmdGVyIHRoZXNlIGhhdmUgYmVlbiBjbGVhbmVkIHVwLCB3ZSdsbCBsZXQgdGhlbSB0aHJvdy5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAvLyBUaGlzIGlzIGludGVudGlvbmFsbHkgYW4gaW52YXJpYW50IHRoYXQgZ2V0cyBjYXVnaHQuIEl0J3MgdGhlIHNhbWVcbiAgICAgICAgICAvLyBiZWhhdmlvciBhcyB3aXRob3V0IHRoaXMgc3RhdGVtZW50IGV4Y2VwdCB3aXRoIGEgYmV0dGVyIG1lc3NhZ2UuXG4gICAgICAgICAgaWYgKHR5cGVvZiB0eXBlU3BlY3NbdHlwZVNwZWNOYW1lXSAhPT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdmFyIGVyciA9IEVycm9yKFxuICAgICAgICAgICAgICAoY29tcG9uZW50TmFtZSB8fCAnUmVhY3QgY2xhc3MnKSArICc6ICcgKyBsb2NhdGlvbiArICcgdHlwZSBgJyArIHR5cGVTcGVjTmFtZSArICdgIGlzIGludmFsaWQ7ICcgK1xuICAgICAgICAgICAgICAnaXQgbXVzdCBiZSBhIGZ1bmN0aW9uLCB1c3VhbGx5IGZyb20gdGhlIGBwcm9wLXR5cGVzYCBwYWNrYWdlLCBidXQgcmVjZWl2ZWQgYCcgKyB0eXBlb2YgdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0gKyAnYC4nXG4gICAgICAgICAgICApO1xuICAgICAgICAgICAgZXJyLm5hbWUgPSAnSW52YXJpYW50IFZpb2xhdGlvbic7XG4gICAgICAgICAgICB0aHJvdyBlcnI7XG4gICAgICAgICAgfVxuICAgICAgICAgIGVycm9yID0gdHlwZVNwZWNzW3R5cGVTcGVjTmFtZV0odmFsdWVzLCB0eXBlU3BlY05hbWUsIGNvbXBvbmVudE5hbWUsIGxvY2F0aW9uLCBudWxsLCBSZWFjdFByb3BUeXBlc1NlY3JldCk7XG4gICAgICAgIH0gY2F0Y2ggKGV4KSB7XG4gICAgICAgICAgZXJyb3IgPSBleDtcbiAgICAgICAgfVxuICAgICAgICBpZiAoZXJyb3IgJiYgIShlcnJvciBpbnN0YW5jZW9mIEVycm9yKSkge1xuICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgIChjb21wb25lbnROYW1lIHx8ICdSZWFjdCBjbGFzcycpICsgJzogdHlwZSBzcGVjaWZpY2F0aW9uIG9mICcgK1xuICAgICAgICAgICAgbG9jYXRpb24gKyAnIGAnICsgdHlwZVNwZWNOYW1lICsgJ2AgaXMgaW52YWxpZDsgdGhlIHR5cGUgY2hlY2tlciAnICtcbiAgICAgICAgICAgICdmdW5jdGlvbiBtdXN0IHJldHVybiBgbnVsbGAgb3IgYW4gYEVycm9yYCBidXQgcmV0dXJuZWQgYSAnICsgdHlwZW9mIGVycm9yICsgJy4gJyArXG4gICAgICAgICAgICAnWW91IG1heSBoYXZlIGZvcmdvdHRlbiB0byBwYXNzIGFuIGFyZ3VtZW50IHRvIHRoZSB0eXBlIGNoZWNrZXIgJyArXG4gICAgICAgICAgICAnY3JlYXRvciAoYXJyYXlPZiwgaW5zdGFuY2VPZiwgb2JqZWN0T2YsIG9uZU9mLCBvbmVPZlR5cGUsIGFuZCAnICtcbiAgICAgICAgICAgICdzaGFwZSBhbGwgcmVxdWlyZSBhbiBhcmd1bWVudCkuJ1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgRXJyb3IgJiYgIShlcnJvci5tZXNzYWdlIGluIGxvZ2dlZFR5cGVGYWlsdXJlcykpIHtcbiAgICAgICAgICAvLyBPbmx5IG1vbml0b3IgdGhpcyBmYWlsdXJlIG9uY2UgYmVjYXVzZSB0aGVyZSB0ZW5kcyB0byBiZSBhIGxvdCBvZiB0aGVcbiAgICAgICAgICAvLyBzYW1lIGVycm9yLlxuICAgICAgICAgIGxvZ2dlZFR5cGVGYWlsdXJlc1tlcnJvci5tZXNzYWdlXSA9IHRydWU7XG5cbiAgICAgICAgICB2YXIgc3RhY2sgPSBnZXRTdGFjayA/IGdldFN0YWNrKCkgOiAnJztcblxuICAgICAgICAgIHByaW50V2FybmluZyhcbiAgICAgICAgICAgICdGYWlsZWQgJyArIGxvY2F0aW9uICsgJyB0eXBlOiAnICsgZXJyb3IubWVzc2FnZSArIChzdGFjayAhPSBudWxsID8gc3RhY2sgOiAnJylcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8qKlxuICogUmVzZXRzIHdhcm5pbmcgY2FjaGUgd2hlbiB0ZXN0aW5nLlxuICpcbiAqIEBwcml2YXRlXG4gKi9cbmNoZWNrUHJvcFR5cGVzLnJlc2V0V2FybmluZ0NhY2hlID0gZnVuY3Rpb24oKSB7XG4gIHtcbiAgICBsb2dnZWRUeXBlRmFpbHVyZXMgPSB7fTtcbiAgfVxufTtcblxudmFyIGNoZWNrUHJvcFR5cGVzXzEgPSBjaGVja1Byb3BUeXBlcztcblxuZnVuY3Rpb24gRWxlbWVudCh0eXBlLCBrZXksIHJlZiwgcHJvcHMsIG93bmVyKSB7XG4gIHZhciBlbGVtZW50ID0ge1xuICAgIC8vIEJ1aWx0LWluIHByb3BlcnRpZXMgdGhhdCBiZWxvbmcgb24gdGhlIGVsZW1lbnRcbiAgICB0eXBlOiB0eXBlLFxuICAgIGtleToga2V5LFxuICAgIHJlZjogcmVmLFxuICAgIHByb3BzOiBwcm9wcyxcbiAgICAvLyBSZWNvcmQgdGhlIGNvbXBvbmVudCByZXNwb25zaWJsZSBmb3IgY3JlYXRpbmcgdGhpcyBlbGVtZW50LlxuICAgIF9vd25lcjogb3duZXJcbiAgfTtcblxuICB7XG4gICAgdmFyIHByb3BUeXBlcyA9IHR5cGUucHJvcFR5cGVzOyAvLyBWYWxpZGF0ZSBpdHMgcHJvcHMgcHJvdmlkZWQgYnkgdGhlIHByb3BUeXBlcyBkZWZpbml0aW9uXG5cbiAgICBpZiAocHJvcFR5cGVzKSB7XG4gICAgICB2YXIgZGlzcGxheU5hbWUgPSB0eXBlLmRpc3BsYXlOYW1lIHx8IHR5cGUubmFtZTtcbiAgICAgIGNoZWNrUHJvcFR5cGVzXzEocHJvcFR5cGVzLCBwcm9wcywgJ3Byb3AnLCBkaXNwbGF5TmFtZSk7XG4gICAgfSAvLyBXZSBtYWtlIHZhbGlkYXRpb24gZmxhZyBub24tZW51bWVyYWJsZSwgc28gdGhlIHRlc3QgZnJhbWV3b3JrIGNvdWxkIGlnbm9yZSBpdFxuXG5cbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkoZWxlbWVudCwgJ19fdmFsaWRhdGVkJywge1xuICAgICAgY29uZmlndXJhYmxlOiBmYWxzZSxcbiAgICAgIGVudW1lcmFibGU6IGZhbHNlLFxuICAgICAgd3JpdGFibGU6IHRydWUsXG4gICAgICB2YWx1ZTogZmFsc2VcbiAgICB9KTsgLy8gUHJvcHMgaXMgaW1tdXRhYmxlXG5cbiAgICBpZiAoT2JqZWN0LmZyZWV6ZSkge1xuICAgICAgT2JqZWN0LmZyZWV6ZShwcm9wcyk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGVsZW1lbnQ7XG59XG5cbmZ1bmN0aW9uIGlzTnVsbChvYmopIHtcbiAgcmV0dXJuIG9iaiA9PT0gbnVsbDtcbn1cbmZ1bmN0aW9uIGlzRnVuY3Rpb24ob2JqKSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqID09PSAnZnVuY3Rpb24nO1xufVxuZnVuY3Rpb24gaXNPYmplY3Qob2JqKSB7XG4gIHJldHVybiB0eXBlb2Ygb2JqID09PSAnb2JqZWN0Jztcbn1cbmZ1bmN0aW9uIGlzUGxhaW5PYmplY3Qob2JqKSB7XG4gIHJldHVybiBFTVBUWV9PQkpFQ1QudG9TdHJpbmcuY2FsbChvYmopID09PSAnW29iamVjdCBPYmplY3RdJztcbn1cbmZ1bmN0aW9uIGlzQXJyYXkoYXJyYXkpIHtcbiAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJyYXkpO1xufVxuZnVuY3Rpb24gaXNTdHJpbmcoc3RyaW5nKSB7XG4gIHJldHVybiB0eXBlb2Ygc3RyaW5nID09PSAnc3RyaW5nJztcbn1cbmZ1bmN0aW9uIGlzTnVtYmVyKHN0cmluZykge1xuICByZXR1cm4gdHlwZW9mIHN0cmluZyA9PT0gJ251bWJlcic7XG59XG52YXIgTk9PUCA9IGZ1bmN0aW9uIE5PT1AoKSB7fTtcbnZhciBFTVBUWV9PQkpFQ1QgPSB7fTtcblxuZnVuY3Rpb24gdHJhdmVyc2VDaGlsZHJlbihjaGlsZHJlbiwgcmVzdWx0KSB7XG4gIGlmIChpc0FycmF5KGNoaWxkcmVuKSkge1xuICAgIGZvciAodmFyIGkgPSAwLCBsID0gY2hpbGRyZW4ubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICB0cmF2ZXJzZUNoaWxkcmVuKGNoaWxkcmVuW2ldLCByZXN1bHQpO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICByZXN1bHQucHVzaChjaGlsZHJlbik7XG4gIH1cbn1cblxuZnVuY3Rpb24gZmxhdHRlbkNoaWxkcmVuKGNoaWxkcmVuKSB7XG4gIGlmIChjaGlsZHJlbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuIGNoaWxkcmVuO1xuICB9XG5cbiAgdmFyIHJlc3VsdCA9IFtdO1xuICB0cmF2ZXJzZUNoaWxkcmVuKGNoaWxkcmVuLCByZXN1bHQpOyAvLyBJZiBsZW5ndGggZXF1YWwgMSwgcmV0dXJuIHRoZSBvbmx5IG9uZS5cblxuICByZXR1cm4gcmVzdWx0Lmxlbmd0aCAtIDEgPyByZXN1bHQgOiByZXN1bHRbMF07XG59XG5cbnZhciB1cGRhdGVDYWxsYmFja3MgPSBbXTtcbnZhciBlZmZlY3RDYWxsYmFja3MgPSBbXTtcbnZhciBsYXlvdXRDYWxsYmFja3MgPSBbXTtcbnZhciBzY2hlZHVsZXIgPSBzZXRUaW1lb3V0O1xuXG57XG4gIC8vIFdyYXBwZXIgdGltZXIgZm9yIGhpamFjayB0aW1lcnMgaW4gamVzdFxuICBzY2hlZHVsZXIgPSBmdW5jdGlvbiBzY2hlZHVsZXIoY2FsbGJhY2spIHtcbiAgICBzZXRUaW1lb3V0KGNhbGxiYWNrKTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gaW52b2tlRnVuY3Rpb25zV2l0aENsZWFyKGNhbGxiYWNrcykge1xuICB2YXIgY2FsbGJhY2s7XG5cbiAgd2hpbGUgKGNhbGxiYWNrID0gY2FsbGJhY2tzLnNoaWZ0KCkpIHtcbiAgICBjYWxsYmFjaygpO1xuICB9XG59IC8vIFNjaGVkdWxlIGJlZm9yZSBuZXh0IHJlbmRlclxuXG5cbmZ1bmN0aW9uIHNjaGVkdWxlKGNhbGxiYWNrKSB7XG4gIGlmICh1cGRhdGVDYWxsYmFja3MubGVuZ3RoID09PSAwKSB7XG4gICAgc2NoZWR1bGVyKGZsdXNoKTtcbiAgfVxuXG4gIHVwZGF0ZUNhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbn0gLy8gRmx1c2ggYmVmb3JlIG5leHQgcmVuZGVyXG5cbmZ1bmN0aW9uIGZsdXNoKCkge1xuICBpbnZva2VGdW5jdGlvbnNXaXRoQ2xlYXIodXBkYXRlQ2FsbGJhY2tzKTtcbn1cbmZ1bmN0aW9uIHNjaGVkdWxlRWZmZWN0KGNhbGxiYWNrKSB7XG4gIGlmIChlZmZlY3RDYWxsYmFja3MubGVuZ3RoID09PSAwKSB7XG4gICAgc2NoZWR1bGVyKGZsdXNoRWZmZWN0KTtcbiAgfVxuXG4gIGVmZmVjdENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbn1cbmZ1bmN0aW9uIGZsdXNoRWZmZWN0KCkge1xuICBpbnZva2VGdW5jdGlvbnNXaXRoQ2xlYXIoZWZmZWN0Q2FsbGJhY2tzKTtcbn1cbmZ1bmN0aW9uIHNjaGVkdWxlTGF5b3V0KGNhbGxiYWNrKSB7XG4gIGxheW91dENhbGxiYWNrcy5wdXNoKGNhbGxiYWNrKTtcbn1cbmZ1bmN0aW9uIGZsdXNoTGF5b3V0KCkge1xuICBpbnZva2VGdW5jdGlvbnNXaXRoQ2xlYXIobGF5b3V0Q2FsbGJhY2tzKTtcbn1cblxuZnVuY3Rpb24gY3JlYXRlTWluaWZpZWRFcnJvcih0eXBlLCBjb2RlLCBvYmopIHtcbiAgdmFyIHR5cGVJbmZvID0gb2JqID09PSB1bmRlZmluZWQgPyAnJyA6ICcgZ290OiAnICsgZ2V0VHlwZUluZm8ob2JqKTtcbiAgcmV0dXJuIG5ldyBFcnJvcih0eXBlICsgXCI6ICNcIiArIGNvZGUgKyBcIiwgXCIgKyBnZXRSZW5kZXJFcnJvckluZm8oKSArIFwiLlwiICsgdHlwZUluZm8pO1xufVxuXG5mdW5jdGlvbiBnZXRUeXBlSW5mbyhvYmopIHtcbiAgcmV0dXJuIGlzUGxhaW5PYmplY3Qob2JqKSA/IE9iamVjdC5rZXlzKG9iaikgOiBvYmo7XG59XG5mdW5jdGlvbiBnZXRSZW5kZXJFcnJvckluZm8oKSB7XG4gIHZhciBvd25lckNvbXBvbmVudCA9IEhvc3Qub3duZXI7XG4gIHJldHVybiBvd25lckNvbXBvbmVudCA/IFwiY2hlY2sgPFwiICsgb3duZXJDb21wb25lbnQuX19nZXROYW1lKCkgKyBcIj5cIiA6ICdubyBvd25lcic7XG59XG4vKipcbiAqIE1pbmlmaWVkIGNvZGU6XG4gKiAgMTogSG9va3MgY2FsbGVkIG91dHNpZGUgYSBjb21wb25lbnQsIG9yIG11bHRpcGxlIHZlcnNpb24gb2YgUmF4IGFyZSB1c2VkLlxuICogIDY6IEludmFsaWQgY29tcG9uZW50IHR5cGUsIGV4cGVjdGVkIGEgY2xhc3Mgb3IgZnVuY3Rpb24gY29tcG9uZW50LlxuICogIDQ6IFRvbyBtYW55IHJlLXJlbmRlcnMsIHRoZSBudW1iZXIgb2YgcmVuZGVycyBpcyBsaW1pdGVkIHRvIHByZXZlbnQgYW4gaW5maW5pdGUgbG9vcC5cbiAqICA1OiBSYXggZHJpdmVyIG5vdCBmb3VuZC5cbiAqIEBwYXJhbSBjb2RlIHtOdW1iZXJ9XG4gKiBAcGFyYW0gb2JqIHtPYmplY3R9XG4gKi9cblxuZnVuY3Rpb24gdGhyb3dNaW5pZmllZEVycm9yKGNvZGUsIG9iaikge1xuICB0aHJvdyBjcmVhdGVNaW5pZmllZEVycm9yKCdFcnJvcicsIGNvZGUsIG9iaik7XG59XG5mdW5jdGlvbiB0aHJvd0Vycm9yKG1lc3NhZ2UsIG9iaikge1xuICB2YXIgdHlwZUluZm8gPSBvYmogPT09IHVuZGVmaW5lZCA/ICcnIDogJyhmb3VuZDogJyArIChpc1BsYWluT2JqZWN0KG9iaikgPyBcIm9iamVjdCB3aXRoIGtleXMge1wiICsgT2JqZWN0LmtleXMob2JqKSArIFwifVwiIDogb2JqKSArICcpJztcbiAgdGhyb3cgRXJyb3IobWVzc2FnZSArIFwiIFwiICsgdHlwZUluZm8pO1xufVxudmFyIHdhcm5pbmcgPSBOT09QO1xuXG57XG4gIHdhcm5pbmcgPSBmdW5jdGlvbiB3YXJuaW5nKHRlbXBsYXRlKSB7XG4gICAgZm9yICh2YXIgX2xlbiA9IGFyZ3VtZW50cy5sZW5ndGgsIGFyZ3MgPSBuZXcgQXJyYXkoX2xlbiA+IDEgPyBfbGVuIC0gMSA6IDApLCBfa2V5ID0gMTsgX2tleSA8IF9sZW47IF9rZXkrKykge1xuICAgICAgYXJnc1tfa2V5IC0gMV0gPSBhcmd1bWVudHNbX2tleV07XG4gICAgfVxuXG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgdmFyIGFyZ3NXaXRoRm9ybWF0ID0gYXJncy5tYXAoZnVuY3Rpb24gKGl0ZW0pIHtcbiAgICAgICAgcmV0dXJuICcnICsgaXRlbTtcbiAgICAgIH0pO1xuICAgICAgYXJnc1dpdGhGb3JtYXQudW5zaGlmdCgnV2FybmluZzogJyArIHRlbXBsYXRlKTsgLy8gRG9uJ3QgdXNlIHNwcmVhZCAob3IgLmFwcGx5KSBkaXJlY3RseSBiZWNhdXNlIGl0IGJyZWFrcyBJRTlcblxuICAgICAgRnVuY3Rpb24ucHJvdG90eXBlLmFwcGx5LmNhbGwoY29uc29sZS5lcnJvciwgY29uc29sZSwgYXJnc1dpdGhGb3JtYXQpO1xuICAgIH0gLy8gRm9yIHdvcmtzIGluIERldlRvb2xzIHdoZW4gZW5hYmxlIGBQYXVzZSBvbiBjYXVnaHQgZXhjZXB0aW9uc2BcbiAgICAvLyB0aGF0IGNhbiBmaW5kIHRoZSBjb21wb25lbnQgd2hlcmUgY2F1c2VkIHRoaXMgd2FybmluZ1xuXG5cbiAgICB0cnkge1xuICAgICAgdmFyIGFyZ0luZGV4ID0gMDtcbiAgICAgIHZhciBtZXNzYWdlID0gJ1dhcm5pbmc6ICcgKyB0ZW1wbGF0ZS5yZXBsYWNlKC8lcy9nLCBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBhcmdzW2FyZ0luZGV4KytdO1xuICAgICAgfSk7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IobWVzc2FnZSk7XG4gICAgfSBjYXRjaCAoZSkge31cbiAgfTtcbn1cblxuLyoqXG4gKiBXYXJuIGlmIHRoZXJlJ3Mgbm8ga2V5IGV4cGxpY2l0bHkgc2V0IG9uIGR5bmFtaWMgYXJyYXlzIG9mIGNoaWxkcmVuIG9yXG4gKiBvYmplY3Qga2V5cyBhcmUgbm90IHZhbGlkLiBUaGlzIGFsbG93cyB1cyB0byBrZWVwIHRyYWNrIG9mIGNoaWxkcmVuIGJldHdlZW5cbiAqIHVwZGF0ZXMuXG4gKi9cblxudmFyIG93bmVySGFzS2V5VXNlV2FybmluZyA9IHt9O1xuXG5mdW5jdGlvbiBnZXRDdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvKHBhcmVudFR5cGUpIHtcbiAgdmFyIGluZm8gPSAnJztcbiAgdmFyIG93bmVyQ29tcG9uZW50ID0gSG9zdC5vd25lcjtcblxuICBpZiAob3duZXJDb21wb25lbnQpIHtcbiAgICB2YXIgbmFtZSA9IG93bmVyQ29tcG9uZW50Ll9fZ2V0TmFtZSgpO1xuXG4gICAgaWYgKG5hbWUpIHtcbiAgICAgIGluZm8gPSBcIiBDaGVjayB0aGUgcmVuZGVyIG1ldGhvZCBvZiA8XCIgKyBuYW1lICsgXCI+LlwiO1xuICAgIH1cbiAgfVxuXG4gIGlmICghaW5mbykge1xuICAgIHZhciBwYXJlbnROYW1lID0gdHlwZW9mIHBhcmVudFR5cGUgPT09ICdzdHJpbmcnID8gcGFyZW50VHlwZSA6IHBhcmVudFR5cGUuZGlzcGxheU5hbWUgfHwgcGFyZW50VHlwZS5uYW1lO1xuXG4gICAgaWYgKHBhcmVudE5hbWUpIHtcbiAgICAgIGluZm8gPSBcIiBDaGVjayB0aGUgdG9wLWxldmVsIHJlbmRlciBjYWxsIHVzaW5nIDxcIiArIHBhcmVudE5hbWUgKyBcIj4uXCI7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGluZm87XG59XG5cbmZ1bmN0aW9uIGlzVmFsaWRFbGVtZW50KG9iamVjdCkge1xuICByZXR1cm4gdHlwZW9mIG9iamVjdCA9PT0gJ29iamVjdCcgJiYgb2JqZWN0ICE9PSBudWxsICYmIG9iamVjdC50eXBlICYmICEhb2JqZWN0LnByb3BzO1xufVxuXG5mdW5jdGlvbiB2YWxpZGF0ZUV4cGxpY2l0S2V5KGVsZW1lbnQsIHBhcmVudFR5cGUpIHtcbiAgaWYgKGVsZW1lbnQuX192YWxpZGF0ZWQgfHwgZWxlbWVudC5rZXkgIT0gbnVsbCkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGVsZW1lbnQuX192YWxpZGF0ZWQgPSB0cnVlO1xuICB2YXIgY3VycmVudENvbXBvbmVudEVycm9ySW5mbyA9IGdldEN1cnJlbnRDb21wb25lbnRFcnJvckluZm8ocGFyZW50VHlwZSk7XG5cbiAgaWYgKG93bmVySGFzS2V5VXNlV2FybmluZ1tjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSkge1xuICAgIHJldHVybjtcbiAgfVxuXG4gIG93bmVySGFzS2V5VXNlV2FybmluZ1tjdXJyZW50Q29tcG9uZW50RXJyb3JJbmZvXSA9IHRydWU7IC8vIFVzdWFsbHkgdGhlIGN1cnJlbnQgb3duZXIgaXMgdGhlIG9mZmVuZGVyLCBidXQgaWYgaXQgYWNjZXB0cyBjaGlsZHJlbiBhcyBhXG4gIC8vIHByb3BlcnR5LCBpdCBtYXkgYmUgdGhlIGNyZWF0b3Igb2YgdGhlIGNoaWxkIHRoYXQncyByZXNwb25zaWJsZSBmb3JcbiAgLy8gYXNzaWduaW5nIGl0IGEga2V5LlxuXG4gIHZhciBjaGlsZE93bmVyID0gJyc7XG5cbiAgaWYgKGVsZW1lbnQgJiYgZWxlbWVudC5fb3duZXIgJiYgZWxlbWVudC5fb3duZXIgIT09IEhvc3Qub3duZXIpIHtcbiAgICAvLyBHaXZlIHRoZSBjb21wb25lbnQgdGhhdCBvcmlnaW5hbGx5IGNyZWF0ZWQgdGhpcyBjaGlsZC5cbiAgICBjaGlsZE93bmVyID0gXCIgSXQgd2FzIHBhc3NlZCBhIGNoaWxkIGZyb20gPFwiICsgZWxlbWVudC5fb3duZXIuX19nZXROYW1lKCkgKyBcIj4uXCI7XG4gIH1cblxuICB3YXJuaW5nKFwiRWFjaCBjaGlsZCBpbiBhIGxpc3Qgc2hvdWxkIGhhdmUgYSB1bmlxdWUgXFxcImtleVxcXCIgcHJvcC5cIiArIGN1cnJlbnRDb21wb25lbnRFcnJvckluZm8gKyBjaGlsZE93bmVyKTtcbn1cblxuZnVuY3Rpb24gdmFsaWRhdGVDaGlsZEtleXMobm9kZSwgcGFyZW50VHlwZSkge1xuICAvLyBPbmx5IGFycmF5IG9yIGVsZW1lbnQgb2JqZWN0IGlzIHZhbGlkIGNoaWxkXG4gIGlmICh0eXBlb2Ygbm9kZSAhPT0gJ29iamVjdCcpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBpZiAoaXNBcnJheShub2RlKSkge1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIGNoaWxkID0gbm9kZVtpXTtcblxuICAgICAgaWYgKGlzVmFsaWRFbGVtZW50KGNoaWxkKSkge1xuICAgICAgICB2YWxpZGF0ZUV4cGxpY2l0S2V5KGNoaWxkLCBwYXJlbnRUeXBlKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gZWxzZSBpZiAoaXNWYWxpZEVsZW1lbnQobm9kZSkpIHtcbiAgICBub2RlLl9fdmFsaWRhdGVkID0gdHJ1ZTtcbiAgfSAvLyBSYXggZG9uJ3Qgc3VwcG9ydCBpdGVyYXRvciBvYmplY3QgYXMgZWxlbWVudCBjaGlsZHJlblxuICAvLyBUT0RPOiBhZGQgdmFsaWRhdGUgd2hlbiByYXggc3VwcG9ydCBpdGVyYXRvciBvYmplY3QgYXMgZWxlbWVudC5cblxufVxuXG52YXIgUkVTRVJWRURfUFJPUFMgPSB7XG4gIGtleTogdHJ1ZSxcbiAgcmVmOiB0cnVlXG59O1xuZnVuY3Rpb24gY3JlYXRlRWxlbWVudCh0eXBlLCBjb25maWcsIGNoaWxkcmVuKSB7XG4gIC8vIFJlc2VydmVkIG5hbWVzIGFyZSBleHRyYWN0ZWRcbiAgdmFyIHByb3BzID0ge307XG4gIHZhciBwcm9wTmFtZTtcbiAgdmFyIGtleSA9IG51bGw7XG4gIHZhciByZWYgPSBudWxsO1xuXG4gIGlmIChjb25maWcgIT0gbnVsbCkge1xuICAgIHJlZiA9IGNvbmZpZy5yZWYgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjb25maWcucmVmO1xuICAgIGtleSA9IGNvbmZpZy5rZXkgPT09IHVuZGVmaW5lZCA/IG51bGwgOiAnJyArIGNvbmZpZy5rZXk7IC8vIFJlbWFpbmluZyBwcm9wZXJ0aWVzIGFyZSBhZGRlZCB0byBhIG5ldyBwcm9wcyBvYmplY3RcblxuICAgIGZvciAocHJvcE5hbWUgaW4gY29uZmlnKSB7XG4gICAgICBpZiAoIVJFU0VSVkVEX1BST1BTW3Byb3BOYW1lXSkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBjb25maWdbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfSAvLyBDaGlsZHJlbiBhcmd1bWVudHMgY2FuIGJlIG1vcmUgdGhhbiBvbmVcblxuXG4gIHZhciBjaGlsZHJlbkxlbmd0aCA9IGFyZ3VtZW50cy5sZW5ndGggLSAyO1xuXG4gIGlmIChjaGlsZHJlbkxlbmd0aCA+IDApIHtcbiAgICBpZiAoY2hpbGRyZW5MZW5ndGggPT09IDEgJiYgIWlzQXJyYXkoY2hpbGRyZW4pKSB7XG4gICAgICBwcm9wcy5jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY2hpbGRBcnJheSA9IGNoaWxkcmVuO1xuXG4gICAgICBpZiAoY2hpbGRyZW5MZW5ndGggPiAxKSB7XG4gICAgICAgIGNoaWxkQXJyYXkgPSBuZXcgQXJyYXkoY2hpbGRyZW5MZW5ndGgpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2hpbGRyZW5MZW5ndGg7IGkrKykge1xuICAgICAgICAgIGNoaWxkQXJyYXlbaV0gPSBhcmd1bWVudHNbaSArIDJdO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHByb3BzLmNoaWxkcmVuID0gZmxhdHRlbkNoaWxkcmVuKGNoaWxkQXJyYXkpO1xuICAgIH1cbiAgfSAvLyBSZXNvbHZlIGRlZmF1bHQgcHJvcHNcblxuXG4gIGlmICh0eXBlICYmIHR5cGUuZGVmYXVsdFByb3BzKSB7XG4gICAgdmFyIGRlZmF1bHRQcm9wcyA9IHR5cGUuZGVmYXVsdFByb3BzO1xuXG4gICAgZm9yIChwcm9wTmFtZSBpbiBkZWZhdWx0UHJvcHMpIHtcbiAgICAgIGlmIChwcm9wc1twcm9wTmFtZV0gPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBwcm9wc1twcm9wTmFtZV0gPSBkZWZhdWx0UHJvcHNbcHJvcE5hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIGlmICh0eXBlID09IG51bGwpIHtcbiAgICB7XG4gICAgICB0aHJvd0Vycm9yKFwiSW52YWxpZCBlbGVtZW50IHR5cGUsIGV4cGVjdGVkIGEgc3RyaW5nIG9yIGEgY2xhc3MvZnVuY3Rpb24gY29tcG9uZW50IGJ1dCBnb3QgXFxcIlwiICsgdHlwZSArIFwiXFxcIi5cIik7XG4gICAgfVxuICB9XG5cbiAge1xuICAgIGlmIChpc1N0cmluZyhyZWYpICYmICFIb3N0Lm93bmVyKSB7XG4gICAgICB3YXJuaW5nKFwiQWRkaW5nIGEgc3RyaW5nIHJlZiBcXFwiXCIgKyByZWYgKyBcIlxcXCIgdGhhdCB3YXMgbm90IGNyZWF0ZWQgaW5zaWRlIHJlbmRlciBtZXRob2QsIG9yIG11bHRpcGxlIGNvcGllcyBvZiBSYXggYXJlIHVzZWQuXCIpO1xuICAgIH1cblxuICAgIGZvciAodmFyIF9pID0gMjsgX2kgPCBhcmd1bWVudHMubGVuZ3RoOyBfaSsrKSB7XG4gICAgICB2YWxpZGF0ZUNoaWxkS2V5cyhhcmd1bWVudHNbX2ldLCB0eXBlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3IEVsZW1lbnQodHlwZSwga2V5LCByZWYsIHByb3BzLCBIb3N0Lm93bmVyKTtcbn1cblxuZnVuY3Rpb24gaW52b2tlRnVuY3Rpb25zV2l0aENvbnRleHQoZm5zLCBjb250ZXh0LCB2YWx1ZSkge1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGZucyAmJiBmbnMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgZm5zW2ldLmNhbGwoY29udGV4dCwgdmFsdWUpO1xuICB9XG59XG5cbnZhciBoYXNPd25Qcm9wZXJ0eSA9IEVNUFRZX09CSkVDVC5oYXNPd25Qcm9wZXJ0eTtcbi8qKlxuICogaW5saW5lZCBPYmplY3QuaXMgcG9seWZpbGwgdG8gYXZvaWQgcmVxdWlyaW5nIGNvbnN1bWVycyBzaGlwIHRoZWlyIG93blxuICogaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvSmF2YVNjcmlwdC9SZWZlcmVuY2UvR2xvYmFsX09iamVjdHMvT2JqZWN0L2lzXG4gKi9cblxuZnVuY3Rpb24gaXMoeCwgeSkge1xuICAvLyBTYW1lVmFsdWUgYWxnb3JpdGhtXG4gIGlmICh4ID09PSB5KSB7XG4gICAgLy8gU3RlcHMgMS01LCA3LTEwXG4gICAgLy8gU3RlcHMgNi5iLTYuZTogKzAgIT0gLTBcbiAgICByZXR1cm4geCAhPT0gMCB8fCAxIC8geCA9PT0gMSAvIHk7XG4gIH0gZWxzZSB7XG4gICAgLy8gU3RlcCA2LmE6IE5hTiA9PSBOYU5cbiAgICByZXR1cm4geCAhPT0geCAmJiB5ICE9PSB5OyAvLyBlc2xpbnQtZGlzYWJsZS1saW5lIG5vLXNlbGYtY29tcGFyZVxuICB9XG59XG4vKipcbiAqIFBlcmZvcm1zIGVxdWFsaXR5IGJ5IGl0ZXJhdGluZyB0aHJvdWdoIGtleXMgb24gYW4gb2JqZWN0IGFuZCByZXR1cm5pbmcgZmFsc2VcbiAqIHdoZW4gYW55IGtleSBoYXMgdmFsdWVzIHdoaWNoIGFyZSBub3Qgc3RyaWN0bHkgZXF1YWwgYmV0d2VlbiB0aGUgYXJndW1lbnRzLlxuICogUmV0dXJucyB0cnVlIHdoZW4gdGhlIHZhbHVlcyBvZiBhbGwga2V5cyBhcmUgc3RyaWN0bHkgZXF1YWwuXG4gKi9cblxuZnVuY3Rpb24gc2hhbGxvd0VxdWFsKG9iakEsIG9iakIpIHtcbiAgaWYgKGlzKG9iakEsIG9iakIpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBpZiAoIWlzT2JqZWN0KG9iakEpIHx8IGlzTnVsbChvYmpBKSB8fCAhaXNPYmplY3Qob2JqQikgfHwgaXNOdWxsKG9iakIpKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgdmFyIGtleXNBID0gT2JqZWN0LmtleXMob2JqQSk7XG4gIHZhciBrZXlzQiA9IE9iamVjdC5rZXlzKG9iakIpO1xuXG4gIGlmIChrZXlzQS5sZW5ndGggIT09IGtleXNCLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfSAvLyBUZXN0IGZvciBBJ3Mga2V5cyBkaWZmZXJlbnQgZnJvbSBCLlxuXG5cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBrZXlzQS5sZW5ndGg7IGkrKykge1xuICAgIGlmICghaGFzT3duUHJvcGVydHkuY2FsbChvYmpCLCBrZXlzQVtpXSkgfHwgIWlzKG9iakFba2V5c0FbaV1dLCBvYmpCW2tleXNBW2ldXSkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdHJ1ZTtcbn1cblxuLyogQ29tbW9uIGNvbnN0YW50IHZhcmlhYmxlcyBmb3IgcmF4ICovXG52YXIgSU5URVJOQUwgPSAnX2ludGVybmFsJztcbnZhciBJTlNUQU5DRSA9ICdfaW5zdGFuY2UnO1xudmFyIE5BVElWRV9OT0RFID0gJ19uYXRpdmVOb2RlJztcbnZhciBSRU5ERVJFRF9DT01QT05FTlQgPSAnX3JlbmRlcmVkQ29tcG9uZW50JztcblxuZnVuY3Rpb24gZ2V0Q3VycmVudEluc3RhbmNlKCkge1xuICByZXR1cm4gSG9zdC5vd25lciAmJiBIb3N0Lm93bmVyW0lOU1RBTkNFXTtcbn1cblxuZnVuY3Rpb24gZ2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKCkge1xuICB2YXIgY3VycmVudEluc3RhbmNlID0gZ2V0Q3VycmVudEluc3RhbmNlKCk7XG5cbiAgaWYgKGN1cnJlbnRJbnN0YW5jZSkge1xuICAgIHJldHVybiBjdXJyZW50SW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAge1xuICAgICAgdGhyb3dFcnJvcignSG9va3MgY2FsbGVkIG91dHNpZGUgYSBjb21wb25lbnQsIG9yIG11bHRpcGxlIHZlcnNpb24gb2YgUmF4IGFyZSB1c2VkLicpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBhcmVJbnB1dHNFcXVhbChpbnB1dHMsIHByZXZJbnB1dHMpIHtcbiAgaWYgKGlzTnVsbChwcmV2SW5wdXRzKSB8fCBpbnB1dHMubGVuZ3RoICE9PSBwcmV2SW5wdXRzLmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgaWYgKGlzKGlucHV0c1tpXSwgcHJldklucHV0c1tpXSkpIHtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiB1c2VTdGF0ZShpbml0aWFsU3RhdGUpIHtcbiAgdmFyIGN1cnJlbnRJbnN0YW5jZSA9IGdldEN1cnJlbnRSZW5kZXJpbmdJbnN0YW5jZSgpO1xuICB2YXIgaG9va0lEID0gY3VycmVudEluc3RhbmNlLmdldEhvb2tJRCgpO1xuICB2YXIgaG9va3MgPSBjdXJyZW50SW5zdGFuY2UuZ2V0SG9va3MoKTtcblxuICBpZiAoIWhvb2tzW2hvb2tJRF0pIHtcbiAgICAvLyBJZiB0aGUgaW5pdGlhbCBzdGF0ZSBpcyB0aGUgcmVzdWx0IG9mIGFuIGV4cGVuc2l2ZSBjb21wdXRhdGlvbixcbiAgICAvLyB5b3UgbWF5IHByb3ZpZGUgYSBmdW5jdGlvbiBpbnN0ZWFkIGZvciBsYXp5IGluaXRpYWwgc3RhdGUuXG4gICAgaWYgKGlzRnVuY3Rpb24oaW5pdGlhbFN0YXRlKSkge1xuICAgICAgaW5pdGlhbFN0YXRlID0gaW5pdGlhbFN0YXRlKCk7XG4gICAgfVxuXG4gICAgdmFyIHNldFN0YXRlID0gZnVuY3Rpb24gc2V0U3RhdGUobmV3U3RhdGUpIHtcbiAgICAgIC8vIEZsdXNoIGFsbCBlZmZlY3RzIGZpcnN0IGJlZm9yZSB1cGRhdGUgc3RhdGVcbiAgICAgIGlmICghSG9zdC5fX2lzVXBkYXRpbmcpIHtcbiAgICAgICAgZmx1c2hFZmZlY3QoKTtcbiAgICAgIH1cblxuICAgICAgdmFyIGhvb2sgPSBob29rc1tob29rSURdO1xuICAgICAgdmFyIGVhZ2VyU3RhdGUgPSBob29rWzJdOyAvLyBmdW5jdGlvbiB1cGRhdGVyXG5cbiAgICAgIGlmIChpc0Z1bmN0aW9uKG5ld1N0YXRlKSkge1xuICAgICAgICBuZXdTdGF0ZSA9IG5ld1N0YXRlKGVhZ2VyU3RhdGUpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIWlzKG5ld1N0YXRlLCBlYWdlclN0YXRlKSkge1xuICAgICAgICAvLyBDdXJyZW50IGluc3RhbmNlIGlzIGluIHJlbmRlciB1cGRhdGUgcGhhc2UuXG4gICAgICAgIC8vIEFmdGVyIHRoaXMgb25lIHJlbmRlciBmaW5pc2gsIHdpbGwgY29udGludWUgcnVuLlxuICAgICAgICBob29rWzJdID0gbmV3U3RhdGU7XG5cbiAgICAgICAgaWYgKGdldEN1cnJlbnRJbnN0YW5jZSgpID09PSBjdXJyZW50SW5zdGFuY2UpIHtcbiAgICAgICAgICAvLyBNYXJrZWQgYXMgaXMgc2NoZWR1bGVkIHRoYXQgY291bGQgZmluaXNoIGhvb2tzLlxuICAgICAgICAgIGN1cnJlbnRJbnN0YW5jZS5fX2lzU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjdXJyZW50SW5zdGFuY2UuX191cGRhdGUoKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICBob29rc1tob29rSURdID0gW2luaXRpYWxTdGF0ZSwgc2V0U3RhdGUsIGluaXRpYWxTdGF0ZV07XG4gIH1cblxuICB2YXIgaG9vayA9IGhvb2tzW2hvb2tJRF07XG5cbiAgaWYgKCFpcyhob29rWzBdLCBob29rWzJdKSkge1xuICAgIGhvb2tbMF0gPSBob29rWzJdO1xuICAgIGN1cnJlbnRJbnN0YW5jZS5fX3Nob3VsZFVwZGF0ZSA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gaG9vaztcbn1cbmZ1bmN0aW9uIHVzZUNvbnRleHQoY29udGV4dCkge1xuICB2YXIgY3VycmVudEluc3RhbmNlID0gZ2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKCk7XG4gIHJldHVybiBjdXJyZW50SW5zdGFuY2UudXNlQ29udGV4dChjb250ZXh0KTtcbn1cbmZ1bmN0aW9uIHVzZUVmZmVjdChlZmZlY3QsIGlucHV0cykge1xuICB1c2VFZmZlY3RJbXBsKGVmZmVjdCwgaW5wdXRzLCB0cnVlKTtcbn1cbmZ1bmN0aW9uIHVzZUxheW91dEVmZmVjdChlZmZlY3QsIGlucHV0cykge1xuICB1c2VFZmZlY3RJbXBsKGVmZmVjdCwgaW5wdXRzKTtcbn1cblxuZnVuY3Rpb24gdXNlRWZmZWN0SW1wbChlZmZlY3QsIGlucHV0cywgZGVmZXJlZCkge1xuICB2YXIgY3VycmVudEluc3RhbmNlID0gZ2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKCk7XG4gIHZhciBob29rSUQgPSBjdXJyZW50SW5zdGFuY2UuZ2V0SG9va0lEKCk7XG4gIHZhciBob29rcyA9IGN1cnJlbnRJbnN0YW5jZS5nZXRIb29rcygpO1xuICBpbnB1dHMgPSBpbnB1dHMgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBpbnB1dHM7XG5cbiAgaWYgKCFob29rc1tob29rSURdKSB7XG4gICAgdmFyIF9fY3JlYXRlID0gZnVuY3Rpb24gX19jcmVhdGUoaW1tZWRpYXRlbHkpIHtcbiAgICAgIGlmICghaW1tZWRpYXRlbHkgJiYgZGVmZXJlZCkgcmV0dXJuIHNjaGVkdWxlRWZmZWN0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmV0dXJuIF9fY3JlYXRlKHRydWUpO1xuICAgICAgfSk7XG4gICAgICB2YXIgY3VycmVudCA9IF9fY3JlYXRlLmN1cnJlbnQ7XG5cbiAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgIF9fZGVzdG9yeS5jdXJyZW50ID0gY3VycmVudCgpO1xuICAgICAgICBfX2NyZWF0ZS5jdXJyZW50ID0gbnVsbDtcblxuICAgICAgICB7XG4gICAgICAgICAgdmFyIGN1cnJlbnREZXN0b3J5ID0gX19kZXN0b3J5LmN1cnJlbnQ7XG5cbiAgICAgICAgICBpZiAoY3VycmVudERlc3RvcnkgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgY3VycmVudERlc3RvcnkgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgICAgIHZhciBtc2c7XG5cbiAgICAgICAgICAgIGlmIChjdXJyZW50RGVzdG9yeSA9PT0gbnVsbCkge1xuICAgICAgICAgICAgICBtc2cgPSAnIFlvdSByZXR1cm5lZCBudWxsLiBJZiB5b3VyIGVmZmVjdCBkb2VzIG5vdCByZXF1aXJlIGNsZWFuICcgKyAndXAsIHJldHVybiB1bmRlZmluZWQgKG9yIG5vdGhpbmcpLic7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHR5cGVvZiBjdXJyZW50RGVzdG9yeS50aGVuID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICAgIG1zZyA9ICdcXG5cXG5JdCBsb29rcyBsaWtlIHlvdSB3cm90ZSB1c2VFZmZlY3QoYXN5bmMgKCkgPT4gLi4uKSBvciByZXR1cm5lZCBhIFByb21pc2UuICcgKyAnSW5zdGVhZCwgd3JpdGUgdGhlIGFzeW5jIGZ1bmN0aW9uIGluc2lkZSB5b3VyIGVmZmVjdCAnICsgJ2FuZCBjYWxsIGl0IGltbWVkaWF0ZWx5OlxcblxcbicgKyAndXNlRWZmZWN0KCgpID0+IHtcXG4nICsgJyAgYXN5bmMgZnVuY3Rpb24gZmV0Y2hEYXRhKCkge1xcbicgKyAnICAgIC8vIFlvdSBjYW4gYXdhaXQgaGVyZVxcbicgKyAnICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgTXlBUEkuZ2V0RGF0YShzb21lSWQpO1xcbicgKyAnICAgIC8vIC4uLlxcbicgKyAnICB9XFxuJyArICcgIGZldGNoRGF0YSgpO1xcbicgKyAnfSwgW3NvbWVJZF0pOyAvLyBPciBbXSBpZiBlZmZlY3QgZG9lc25cXCd0IG5lZWQgcHJvcHMgb3Igc3RhdGUuJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIG1zZyA9ICcgWW91IHJldHVybmVkOiAnICsgY3VycmVudERlc3Rvcnk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHdhcm5pbmcoJ0FuIGVmZmVjdCBmdW5jdGlvbiBtdXN0IG5vdCByZXR1cm4gYW55dGhpbmcgYmVzaWRlcyBhIGZ1bmN0aW9uLCAnICsgJ3doaWNoIGlzIHVzZWQgZm9yIGNsZWFuLXVwLicgKyBtc2cpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH07XG5cbiAgICB2YXIgX19kZXN0b3J5ID0gZnVuY3Rpb24gX19kZXN0b3J5KGltbWVkaWF0ZWx5KSB7XG4gICAgICBpZiAoIWltbWVkaWF0ZWx5ICYmIGRlZmVyZWQpIHJldHVybiBzY2hlZHVsZUVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiBfX2Rlc3RvcnkodHJ1ZSk7XG4gICAgICB9KTtcbiAgICAgIHZhciBjdXJyZW50ID0gX19kZXN0b3J5LmN1cnJlbnQ7XG5cbiAgICAgIGlmIChjdXJyZW50KSB7XG4gICAgICAgIGN1cnJlbnQoKTtcbiAgICAgICAgX19kZXN0b3J5LmN1cnJlbnQgPSBudWxsO1xuICAgICAgfVxuICAgIH07XG5cbiAgICBfX2NyZWF0ZS5jdXJyZW50ID0gZWZmZWN0O1xuICAgIGhvb2tzW2hvb2tJRF0gPSB7XG4gICAgICBfX2NyZWF0ZTogX19jcmVhdGUsXG4gICAgICBfX2Rlc3Rvcnk6IF9fZGVzdG9yeSxcbiAgICAgIF9fcHJldklucHV0czogaW5wdXRzLFxuICAgICAgX19pbnB1dHM6IGlucHV0c1xuICAgIH07XG4gICAgY3VycmVudEluc3RhbmNlLmRpZE1vdW50LnB1c2goX19jcmVhdGUpO1xuICAgIGN1cnJlbnRJbnN0YW5jZS53aWxsVW5tb3VudC5wdXNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHJldHVybiBfX2Rlc3RvcnkodHJ1ZSk7XG4gICAgfSk7XG4gICAgY3VycmVudEluc3RhbmNlLmRpZFVwZGF0ZS5wdXNoKGZ1bmN0aW9uICgpIHtcbiAgICAgIHZhciBfaG9va3MkaG9va0lEID0gaG9va3NbaG9va0lEXSxcbiAgICAgICAgICBfX3ByZXZJbnB1dHMgPSBfaG9va3MkaG9va0lELl9fcHJldklucHV0cyxcbiAgICAgICAgICBfX2lucHV0cyA9IF9ob29rcyRob29rSUQuX19pbnB1dHMsXG4gICAgICAgICAgX19jcmVhdGUgPSBfaG9va3MkaG9va0lELl9fY3JlYXRlO1xuXG4gICAgICBpZiAoX19pbnB1dHMgPT0gbnVsbCB8fCAhYXJlSW5wdXRzRXF1YWwoX19pbnB1dHMsIF9fcHJldklucHV0cykpIHtcbiAgICAgICAgX19kZXN0b3J5KCk7XG5cbiAgICAgICAgX19jcmVhdGUoKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfSBlbHNlIHtcbiAgICB2YXIgaG9vayA9IGhvb2tzW2hvb2tJRF07XG4gICAgdmFyIF9jcmVhdGUgPSBob29rLl9fY3JlYXRlLFxuICAgICAgICBwcmV2SW5wdXRzID0gaG9vay5fX2lucHV0cztcbiAgICBob29rLl9faW5wdXRzID0gaW5wdXRzO1xuICAgIGhvb2suX19wcmV2SW5wdXRzID0gcHJldklucHV0cztcbiAgICBfY3JlYXRlLmN1cnJlbnQgPSBlZmZlY3Q7XG4gIH1cbn1cblxuZnVuY3Rpb24gdXNlSW1wZXJhdGl2ZUhhbmRsZShyZWYsIGNyZWF0ZSwgaW5wdXRzKSB7XG4gIHZhciBuZXh0SW5wdXRzID0gaXNBcnJheShpbnB1dHMpID8gaW5wdXRzLmNvbmNhdChbcmVmXSkgOiBudWxsO1xuICB1c2VMYXlvdXRFZmZlY3QoZnVuY3Rpb24gKCkge1xuICAgIGlmIChpc0Z1bmN0aW9uKHJlZikpIHtcbiAgICAgIHJlZihjcmVhdGUoKSk7XG4gICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICByZXR1cm4gcmVmKG51bGwpO1xuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHJlZiAhPSBudWxsKSB7XG4gICAgICByZWYuY3VycmVudCA9IGNyZWF0ZSgpO1xuICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgcmVmLmN1cnJlbnQgPSBudWxsO1xuICAgICAgfTtcbiAgICB9XG4gIH0sIG5leHRJbnB1dHMpO1xufVxuZnVuY3Rpb24gdXNlUmVmKGluaXRpYWxWYWx1ZSkge1xuICB2YXIgY3VycmVudEluc3RhbmNlID0gZ2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKCk7XG4gIHZhciBob29rSUQgPSBjdXJyZW50SW5zdGFuY2UuZ2V0SG9va0lEKCk7XG4gIHZhciBob29rcyA9IGN1cnJlbnRJbnN0YW5jZS5nZXRIb29rcygpO1xuXG4gIGlmICghaG9va3NbaG9va0lEXSkge1xuICAgIGhvb2tzW2hvb2tJRF0gPSB7XG4gICAgICBjdXJyZW50OiBpbml0aWFsVmFsdWVcbiAgICB9O1xuICB9XG5cbiAgcmV0dXJuIGhvb2tzW2hvb2tJRF07XG59XG5mdW5jdGlvbiB1c2VDYWxsYmFjayhjYWxsYmFjaywgaW5wdXRzKSB7XG4gIHJldHVybiB1c2VNZW1vKGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gY2FsbGJhY2s7XG4gIH0sIGlucHV0cyk7XG59XG5mdW5jdGlvbiB1c2VNZW1vKGNyZWF0ZSwgaW5wdXRzKSB7XG4gIHZhciBjdXJyZW50SW5zdGFuY2UgPSBnZXRDdXJyZW50UmVuZGVyaW5nSW5zdGFuY2UoKTtcbiAgdmFyIGhvb2tJRCA9IGN1cnJlbnRJbnN0YW5jZS5nZXRIb29rSUQoKTtcbiAgdmFyIGhvb2tzID0gY3VycmVudEluc3RhbmNlLmdldEhvb2tzKCk7XG4gIGlucHV0cyA9IGlucHV0cyA9PT0gdW5kZWZpbmVkID8gbnVsbCA6IGlucHV0cztcblxuICBpZiAoIWhvb2tzW2hvb2tJRF0pIHtcbiAgICBob29rc1tob29rSURdID0gW2NyZWF0ZSgpLCBpbnB1dHNdO1xuICB9IGVsc2Uge1xuICAgIHZhciBwcmV2SW5wdXRzID0gaG9va3NbaG9va0lEXVsxXTtcblxuICAgIGlmIChpc051bGwoaW5wdXRzKSB8fCAhYXJlSW5wdXRzRXF1YWwoaW5wdXRzLCBwcmV2SW5wdXRzKSkge1xuICAgICAgaG9va3NbaG9va0lEXSA9IFtjcmVhdGUoKSwgaW5wdXRzXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gaG9va3NbaG9va0lEXVswXTtcbn1cbmZ1bmN0aW9uIHVzZVJlZHVjZXIocmVkdWNlciwgaW5pdGlhbEFyZywgaW5pdCkge1xuICB2YXIgY3VycmVudEluc3RhbmNlID0gZ2V0Q3VycmVudFJlbmRlcmluZ0luc3RhbmNlKCk7XG4gIHZhciBob29rSUQgPSBjdXJyZW50SW5zdGFuY2UuZ2V0SG9va0lEKCk7XG4gIHZhciBob29rcyA9IGN1cnJlbnRJbnN0YW5jZS5nZXRIb29rcygpO1xuICB2YXIgaG9vayA9IGhvb2tzW2hvb2tJRF07XG5cbiAgaWYgKCFob29rKSB7XG4gICAgdmFyIGluaXRpYWxTdGF0ZSA9IGlzRnVuY3Rpb24oaW5pdCkgPyBpbml0KGluaXRpYWxBcmcpIDogaW5pdGlhbEFyZztcblxuICAgIHZhciBkaXNwYXRjaCA9IGZ1bmN0aW9uIGRpc3BhdGNoKGFjdGlvbikge1xuICAgICAgLy8gRmx1c2ggYWxsIGVmZmVjdHMgZmlyc3QgYmVmb3JlIHVwZGF0ZSBzdGF0ZVxuICAgICAgaWYgKCFIb3N0Ll9faXNVcGRhdGluZykge1xuICAgICAgICBmbHVzaEVmZmVjdCgpO1xuICAgICAgfVxuXG4gICAgICB2YXIgaG9vayA9IGhvb2tzW2hvb2tJRF07IC8vIFJlZHVjZXIgd2lsbCB1cGRhdGUgaW4gdGhlIG5leHQgcmVuZGVyLCBiZWZvcmUgdGhhdCB3ZSBhZGQgYWxsXG4gICAgICAvLyBhY3Rpb25zIHRvIHRoZSBxdWV1ZVxuXG4gICAgICB2YXIgcXVldWUgPSBob29rWzJdO1xuXG4gICAgICBpZiAoZ2V0Q3VycmVudEluc3RhbmNlKCkgPT09IGN1cnJlbnRJbnN0YW5jZSkge1xuICAgICAgICBxdWV1ZS5fX2FjdGlvbnMucHVzaChhY3Rpb24pO1xuXG4gICAgICAgIGN1cnJlbnRJbnN0YW5jZS5fX2lzU2NoZWR1bGVkID0gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciBjdXJyZW50U3RhdGUgPSBxdWV1ZS5fX2VhZ2VyU3RhdGU7XG4gICAgICAgIHZhciBlYWdlclJlZHVjZXIgPSBxdWV1ZS5fX2VhZ2VyUmVkdWNlcjtcbiAgICAgICAgdmFyIGVhZ2VyU3RhdGUgPSBlYWdlclJlZHVjZXIoY3VycmVudFN0YXRlLCBhY3Rpb24pO1xuXG4gICAgICAgIGlmIChpcyhlYWdlclN0YXRlLCBjdXJyZW50U3RhdGUpKSB7XG4gICAgICAgICAgcmV0dXJuO1xuICAgICAgICB9XG5cbiAgICAgICAgcXVldWUuX19lYWdlclN0YXRlID0gZWFnZXJTdGF0ZTtcblxuICAgICAgICBxdWV1ZS5fX2FjdGlvbnMucHVzaChhY3Rpb24pO1xuXG4gICAgICAgIGN1cnJlbnRJbnN0YW5jZS5fX3VwZGF0ZSgpO1xuICAgICAgfVxuICAgIH07XG5cbiAgICByZXR1cm4gaG9va3NbaG9va0lEXSA9IFtpbml0aWFsU3RhdGUsIGRpc3BhdGNoLCB7XG4gICAgICBfX2FjdGlvbnM6IFtdLFxuICAgICAgX19lYWdlclJlZHVjZXI6IHJlZHVjZXIsXG4gICAgICBfX2VhZ2VyU3RhdGU6IGluaXRpYWxTdGF0ZVxuICAgIH1dO1xuICB9XG5cbiAgdmFyIHF1ZXVlID0gaG9va1syXTtcbiAgdmFyIG5leHQgPSBob29rWzBdO1xuXG4gIGlmIChjdXJyZW50SW5zdGFuY2UuX19yZVJlbmRlcnMgPiAwKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5fX2FjdGlvbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIG5leHQgPSByZWR1Y2VyKG5leHQsIHF1ZXVlLl9fYWN0aW9uc1tpXSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIG5leHQgPSBxdWV1ZS5fX2VhZ2VyU3RhdGU7XG4gIH1cblxuICBpZiAoIWlzKG5leHQsIGhvb2tbMF0pKSB7XG4gICAgaG9va1swXSA9IG5leHQ7XG4gICAgY3VycmVudEluc3RhbmNlLl9fc2hvdWxkVXBkYXRlID0gdHJ1ZTtcbiAgfVxuXG4gIHF1ZXVlLl9fZWFnZXJSZWR1Y2VyID0gcmVkdWNlcjtcbiAgcXVldWUuX19lYWdlclN0YXRlID0gbmV4dDtcbiAgcXVldWUuX19hY3Rpb25zLmxlbmd0aCA9IDA7XG4gIHJldHVybiBob29rc1tob29rSURdO1xufVxuXG5mdW5jdGlvbiB0b0FycmF5KG9iaikge1xuICByZXR1cm4gaXNBcnJheShvYmopID8gb2JqIDogW29ial07XG59XG5cbmZ1bmN0aW9uIGdldE5lYXJlc3RQYXJlbnQoaW5zdGFuY2UsIG1hdGNoZXIpIHtcbiAgdmFyIHBhcmVudDtcblxuICB3aGlsZSAoaW5zdGFuY2UgJiYgaW5zdGFuY2VbSU5URVJOQUxdKSB7XG4gICAgaWYgKG1hdGNoZXIoaW5zdGFuY2UpKSB7XG4gICAgICBwYXJlbnQgPSBpbnN0YW5jZTtcbiAgICAgIGJyZWFrO1xuICAgIH1cblxuICAgIGluc3RhbmNlID0gaW5zdGFuY2VbSU5URVJOQUxdLl9fcGFyZW50SW5zdGFuY2U7XG4gIH1cblxuICByZXR1cm4gcGFyZW50O1xufVxuXG52YXIgaWQgPSAwO1xuZnVuY3Rpb24gY3JlYXRlQ29udGV4dChkZWZhdWx0VmFsdWUpIHtcbiAgdmFyIGNvbnRleHRJRCA9ICdfYycgKyBpZCsrOyAvLyBQcm92aWRlciBDb21wb25lbnRcblxuICB2YXIgUHJvdmlkZXIgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKCkge1xuICAgIGZ1bmN0aW9uIFByb3ZpZGVyKCkge1xuICAgICAgdGhpcy5fX2NvbnRleHRJRCA9IGNvbnRleHRJRDtcbiAgICAgIHRoaXMuX19oYW5kbGVycyA9IFtdO1xuICAgIH1cblxuICAgIHZhciBfcHJvdG8gPSBQcm92aWRlci5wcm90b3R5cGU7XG5cbiAgICBfcHJvdG8uX19vbiA9IGZ1bmN0aW9uIF9fb24oaGFuZGxlcikge1xuICAgICAgdGhpcy5fX2hhbmRsZXJzLnB1c2goaGFuZGxlcik7XG4gICAgfTtcblxuICAgIF9wcm90by5fX29mZiA9IGZ1bmN0aW9uIF9fb2ZmKGhhbmRsZXIpIHtcbiAgICAgIHRoaXMuX19oYW5kbGVycyA9IHRoaXMuX19oYW5kbGVycy5maWx0ZXIoZnVuY3Rpb24gKGgpIHtcbiAgICAgICAgcmV0dXJuIGggIT09IGhhbmRsZXI7XG4gICAgICB9KTtcbiAgICB9IC8vIExpa2UgZ2V0Q2hpbGRDb250ZXh0IGJ1dCBjYWxsZWQgaW4gU1NSXG4gICAgO1xuXG4gICAgX3Byb3RvLl9nZXRDaGlsZENvbnRleHQgPSBmdW5jdGlvbiBfZ2V0Q2hpbGRDb250ZXh0KCkge1xuICAgICAgdmFyIF9yZWY7XG5cbiAgICAgIHJldHVybiBfcmVmID0ge30sIF9yZWZbY29udGV4dElEXSA9IHRoaXMsIF9yZWY7XG4gICAgfSAvLyBgZ2V0VmFsdWUoKWAgY2FsbGVkIGluIHJheC1zZXJ2ZXItcmVuZGVyZXJcbiAgICA7XG5cbiAgICBfcHJvdG8uZ2V0VmFsdWUgPSBmdW5jdGlvbiBnZXRWYWx1ZSgpIHtcbiAgICAgIHJldHVybiB0aGlzLnByb3BzLnZhbHVlICE9PSB1bmRlZmluZWQgPyB0aGlzLnByb3BzLnZhbHVlIDogZGVmYXVsdFZhbHVlO1xuICAgIH07XG5cbiAgICBfcHJvdG8uY29tcG9uZW50RGlkVXBkYXRlID0gZnVuY3Rpb24gY29tcG9uZW50RGlkVXBkYXRlKHByZXZQcm9wcykge1xuICAgICAgaWYgKHRoaXMucHJvcHMudmFsdWUgIT09IHByZXZQcm9wcy52YWx1ZSkge1xuICAgICAgICBpbnZva2VGdW5jdGlvbnNXaXRoQ29udGV4dCh0aGlzLl9faGFuZGxlcnMsIG51bGwsIHRoaXMuZ2V0VmFsdWUoKSk7XG4gICAgICB9XG4gICAgfTtcblxuICAgIF9wcm90by5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgICByZXR1cm4gdGhpcy5wcm9wcy5jaGlsZHJlbjtcbiAgICB9O1xuXG4gICAgcmV0dXJuIFByb3ZpZGVyO1xuICB9KCk7XG5cbiAgZnVuY3Rpb24gZ2V0TmVhcmVzdFBhcmVudFByb3ZpZGVyKGluc3RhbmNlKSB7XG4gICAgcmV0dXJuIGdldE5lYXJlc3RQYXJlbnQoaW5zdGFuY2UsIGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICAgIHJldHVybiBwYXJlbnQuX19jb250ZXh0SUQgPT09IGNvbnRleHRJRDtcbiAgICB9KTtcbiAgfSAvLyBDb25zdW1lciBDb21wb25lbnRcblxuXG4gIGZ1bmN0aW9uIENvbnN1bWVyKHByb3BzLCBjb250ZXh0KSB7XG4gICAgdmFyIF90aGlzID0gdGhpcztcblxuICAgIC8vIEN1cnJlbnQgYGNvbnRleHRbY29udGV4dElEXWAgb25seSB3b3JrcyBpbiBTU1JcbiAgICB2YXIgX3VzZVN0YXRlID0gdXNlU3RhdGUoZnVuY3Rpb24gKCkge1xuICAgICAgcmV0dXJuIGNvbnRleHRbY29udGV4dElEXSB8fCBnZXROZWFyZXN0UGFyZW50UHJvdmlkZXIoX3RoaXMpO1xuICAgIH0pLFxuICAgICAgICBwcm92aWRlciA9IF91c2VTdGF0ZVswXTtcblxuICAgIHZhciB2YWx1ZSA9IHByb3ZpZGVyID8gcHJvdmlkZXIuZ2V0VmFsdWUoKSA6IGRlZmF1bHRWYWx1ZTtcblxuICAgIHZhciBfdXNlU3RhdGUyID0gdXNlU3RhdGUodmFsdWUpLFxuICAgICAgICBwcmV2VmFsdWUgPSBfdXNlU3RhdGUyWzBdLFxuICAgICAgICBzZXRWYWx1ZSA9IF91c2VTdGF0ZTJbMV07XG5cbiAgICBpZiAodmFsdWUgIT09IHByZXZWYWx1ZSkge1xuICAgICAgc2V0VmFsdWUodmFsdWUpO1xuICAgICAgcmV0dXJuOyAvLyBJbnRlcnJ1cHQgZXhlY3V0aW9uIG9mIGNvbnN1bWVyLlxuICAgIH1cblxuICAgIHVzZUxheW91dEVmZmVjdChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAocHJvdmlkZXIpIHtcbiAgICAgICAgcHJvdmlkZXIuX19vbihzZXRWYWx1ZSk7XG5cbiAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBwcm92aWRlci5fX29mZihzZXRWYWx1ZSk7XG4gICAgICAgIH07XG4gICAgICB9XG4gICAgfSwgW10pOyAvLyBDb25zdW1lciByZXF1aXJlcyBhIGZ1bmN0aW9uIGFzIGEgY2hpbGQuXG4gICAgLy8gVGhlIGZ1bmN0aW9uIHJlY2VpdmVzIHRoZSBjdXJyZW50IGNvbnRleHQgdmFsdWUuXG5cbiAgICB2YXIgY29uc3VtZXIgPSB0b0FycmF5KHByb3BzLmNoaWxkcmVuKVswXTtcblxuICAgIGlmIChpc0Z1bmN0aW9uKGNvbnN1bWVyKSkge1xuICAgICAgcmV0dXJuIGNvbnN1bWVyKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIFByb3ZpZGVyOiBQcm92aWRlcixcbiAgICBDb25zdW1lcjogQ29uc3VtZXIsXG4gICAgLy8gYF9jb250ZXh0SURgIGFuZCBgX2RlZmF1bHRWYWx1ZWAgYWNjZXNzZWQgaW4gcmF4LXNlcnZlci1yZW5kZXJlclxuICAgIF9jb250ZXh0SUQ6IGNvbnRleHRJRCxcbiAgICBfZGVmYXVsdFZhbHVlOiBkZWZhdWx0VmFsdWUsXG4gICAgX19nZXROZWFyZXN0UGFyZW50UHJvdmlkZXI6IGdldE5lYXJlc3RQYXJlbnRQcm92aWRlclxuICB9O1xufVxuXG5mdW5jdGlvbiBjcmVhdGVSZWYoKSB7XG4gIHJldHVybiB7XG4gICAgY3VycmVudDogbnVsbFxuICB9O1xufVxuXG5mdW5jdGlvbiBmb3J3YXJkUmVmIChyZW5kZXIpIHtcbiAgLy8gX2ZvcndhcmRSZWYgaXMgYWxzbyB1c2UgaW4gcmF4IHNlcnZlciByZW5kZXJlclxuICByZW5kZXIuX2ZvcndhcmRSZWYgPSB0cnVlO1xuICByZXR1cm4gcmVuZGVyO1xufVxuXG5mdW5jdGlvbiBtZW1vKHR5cGUsIGNvbXBhcmUpIHtcbiAgY29tcGFyZSA9IGNvbXBhcmUgfHwgc2hhbGxvd0VxdWFsOyAvLyBNZW1vIGNvdWxkIGNvbXBvc2VkXG5cbiAgaWYgKHR5cGUuX19jb21wYXJlcykge1xuICAgIHR5cGUuX19jb21wYXJlcy5wdXNoKGNvbXBhcmUpO1xuICB9IGVsc2Uge1xuICAgIHR5cGUuX19jb21wYXJlcyA9IFtjb21wYXJlXTtcbiAgfVxuXG4gIHJldHVybiB0eXBlO1xufVxuXG5mdW5jdGlvbiBGcmFnbWVudChwcm9wcykge1xuICByZXR1cm4gcHJvcHMuY2hpbGRyZW47XG59XG5cbmZ1bmN0aW9uIF9pbmhlcml0c0xvb3NlKHN1YkNsYXNzLCBzdXBlckNsYXNzKSB7XG4gIHN1YkNsYXNzLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoc3VwZXJDbGFzcy5wcm90b3R5cGUpO1xuICBzdWJDbGFzcy5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBzdWJDbGFzcztcblxuICBfc2V0UHJvdG90eXBlT2Yoc3ViQ2xhc3MsIHN1cGVyQ2xhc3MpO1xufVxuXG5mdW5jdGlvbiBfc2V0UHJvdG90eXBlT2YobywgcCkge1xuICBfc2V0UHJvdG90eXBlT2YgPSBPYmplY3Quc2V0UHJvdG90eXBlT2YgfHwgZnVuY3Rpb24gX3NldFByb3RvdHlwZU9mKG8sIHApIHtcbiAgICBvLl9fcHJvdG9fXyA9IHA7XG4gICAgcmV0dXJuIG87XG4gIH07XG5cbiAgcmV0dXJuIF9zZXRQcm90b3R5cGVPZihvLCBwKTtcbn1cblxuLyoqXG4gKiBCYXNlIENvbXBvbmVudFxuICovXG5cbnZhciBCYXNlQ29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQmFzZUNvbXBvbmVudChlbGVtZW50KSB7XG4gICAgdGhpcy5fX2N1cnJlbnRFbGVtZW50ID0gZWxlbWVudDtcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBCYXNlQ29tcG9uZW50LnByb3RvdHlwZTtcblxuICBfcHJvdG8uX19pbml0Q29tcG9uZW50ID0gZnVuY3Rpb24gX19pbml0Q29tcG9uZW50KHBhcmVudCwgcGFyZW50SW5zdGFuY2UsIGNvbnRleHQpIHtcbiAgICB0aGlzLl9wYXJlbnQgPSBwYXJlbnQ7XG4gICAgdGhpcy5fX3BhcmVudEluc3RhbmNlID0gcGFyZW50SW5zdGFuY2U7XG4gICAgdGhpcy5fY29udGV4dCA9IGNvbnRleHQ7XG4gICAgdGhpcy5fbW91bnRJRCA9IEhvc3QuX19tb3VudElEKys7XG4gIH07XG5cbiAgX3Byb3RvLl9fZGVzdG9yeUNvbXBvbmVudCA9IGZ1bmN0aW9uIF9fZGVzdG9yeUNvbXBvbmVudCgpIHtcbiAgICB7XG4gICAgICBIb3N0LnJlY29uY2lsZXIudW5tb3VudENvbXBvbmVudCh0aGlzKTtcbiAgICB9XG5cbiAgICB0aGlzLl9fY3VycmVudEVsZW1lbnQgPSB0aGlzW05BVElWRV9OT0RFXSA9IHRoaXMuX3BhcmVudCA9IHRoaXMuX19wYXJlbnRJbnN0YW5jZSA9IHRoaXMuX2NvbnRleHQgPSBudWxsO1xuXG4gICAgaWYgKHRoaXNbSU5TVEFOQ0VdKSB7XG4gICAgICB0aGlzW0lOU1RBTkNFXSA9IHRoaXNbSU5TVEFOQ0VdW0lOVEVSTkFMXSA9IG51bGw7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5fX21vdW50Q29tcG9uZW50ID0gZnVuY3Rpb24gX19tb3VudENvbXBvbmVudChwYXJlbnQsIHBhcmVudEluc3RhbmNlLCBjb250ZXh0LCBuYXRpdmVOb2RlTW91bnRlcikge1xuICAgIHRoaXMuX19pbml0Q29tcG9uZW50KHBhcmVudCwgcGFyZW50SW5zdGFuY2UsIGNvbnRleHQpO1xuXG4gICAgdGhpcy5fX21vdW50TmF0aXZlTm9kZShuYXRpdmVOb2RlTW91bnRlcik7XG5cbiAgICB7XG4gICAgICBIb3N0LnJlY29uY2lsZXIubW91bnRDb21wb25lbnQodGhpcyk7XG4gICAgfVxuXG4gICAgdmFyIGluc3RhbmNlID0ge307XG4gICAgaW5zdGFuY2VbSU5URVJOQUxdID0gdGhpcztcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG5cbiAgX3Byb3RvLnVubW91bnRDb21wb25lbnQgPSBmdW5jdGlvbiB1bm1vdW50Q29tcG9uZW50KHNob3VsZE5vdFJlbW92ZUNoaWxkKSB7XG4gICAgaWYgKHRoaXNbTkFUSVZFX05PREVdICYmICFzaG91bGROb3RSZW1vdmVDaGlsZCkge1xuICAgICAgSG9zdC5kcml2ZXIucmVtb3ZlQ2hpbGQodGhpc1tOQVRJVkVfTk9ERV0sIHRoaXMuX3BhcmVudCk7XG4gICAgfVxuXG4gICAgdGhpcy5fX2Rlc3RvcnlDb21wb25lbnQoKTtcbiAgfTtcblxuICBfcHJvdG8uX19nZXROYW1lID0gZnVuY3Rpb24gX19nZXROYW1lKCkge1xuICAgIHZhciBjdXJyZW50RWxlbWVudCA9IHRoaXMuX19jdXJyZW50RWxlbWVudDtcbiAgICB2YXIgdHlwZSA9IGN1cnJlbnRFbGVtZW50ICYmIGN1cnJlbnRFbGVtZW50LnR5cGU7XG4gICAgcmV0dXJuIHR5cGUgJiYgdHlwZS5kaXNwbGF5TmFtZSB8fCB0eXBlICYmIHR5cGUubmFtZSB8fCB0eXBlIHx8IC8vIE5hdGl2ZSBjb21wb25lbnQncyBuYW1lIGlzIHR5cGVcbiAgICBjdXJyZW50RWxlbWVudDtcbiAgfTtcblxuICBfcHJvdG8uX19tb3VudE5hdGl2ZU5vZGUgPSBmdW5jdGlvbiBfX21vdW50TmF0aXZlTm9kZShuYXRpdmVOb2RlTW91bnRlcikge1xuICAgIHZhciBuYXRpdmVOb2RlID0gdGhpcy5fX2dldE5hdGl2ZU5vZGUoKTtcblxuICAgIHZhciBwYXJlbnQgPSB0aGlzLl9wYXJlbnQ7XG5cbiAgICBpZiAobmF0aXZlTm9kZU1vdW50ZXIpIHtcbiAgICAgIG5hdGl2ZU5vZGVNb3VudGVyKG5hdGl2ZU5vZGUsIHBhcmVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIEhvc3QuZHJpdmVyLmFwcGVuZENoaWxkKG5hdGl2ZU5vZGUsIHBhcmVudCk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5fX2dldE5hdGl2ZU5vZGUgPSBmdW5jdGlvbiBfX2dldE5hdGl2ZU5vZGUoKSB7XG4gICAgcmV0dXJuIHRoaXNbTkFUSVZFX05PREVdID09IG51bGwgPyB0aGlzW05BVElWRV9OT0RFXSA9IHRoaXMuX19jcmVhdGVOYXRpdmVOb2RlKCkgOiB0aGlzW05BVElWRV9OT0RFXTtcbiAgfTtcblxuICBfcHJvdG8uX19nZXRQdWJsaWNJbnN0YW5jZSA9IGZ1bmN0aW9uIF9fZ2V0UHVibGljSW5zdGFuY2UoKSB7XG4gICAgcmV0dXJuIHRoaXMuX19nZXROYXRpdmVOb2RlKCk7XG4gIH07XG5cbiAgcmV0dXJuIEJhc2VDb21wb25lbnQ7XG59KCk7XG5cbi8qKlxuICogRW1wdHkgQ29tcG9uZW50XG4gKi9cblxudmFyIEVtcHR5Q29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQmFzZUNvbXBvbmVudCkge1xuICBfaW5oZXJpdHNMb29zZShFbXB0eUNvbXBvbmVudCwgX0Jhc2VDb21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIEVtcHR5Q29tcG9uZW50KCkge1xuICAgIHJldHVybiBfQmFzZUNvbXBvbmVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gRW1wdHlDb21wb25lbnQucHJvdG90eXBlO1xuXG4gIF9wcm90by5fX2NyZWF0ZU5hdGl2ZU5vZGUgPSBmdW5jdGlvbiBfX2NyZWF0ZU5hdGl2ZU5vZGUoKSB7XG4gICAgcmV0dXJuIEhvc3QuZHJpdmVyLmNyZWF0ZUVtcHR5KHRoaXMpO1xuICB9O1xuXG4gIF9wcm90by5fX3VwZGF0ZUNvbXBvbmVudCA9IGZ1bmN0aW9uIF9fdXBkYXRlQ29tcG9uZW50KCkge1xuICAgIHJldHVybjtcbiAgfTtcblxuICByZXR1cm4gRW1wdHlDb21wb25lbnQ7XG59KEJhc2VDb21wb25lbnQpO1xuXG4vKlxuICogUmVmIG1hbmFnZXJcbiAqL1xuZnVuY3Rpb24gdXBkYXRlUmVmKHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgY29tcG9uZW50KSB7XG4gIHZhciBwcmV2UmVmID0gcHJldkVsZW1lbnQgPyBwcmV2RWxlbWVudC5yZWYgOiBudWxsO1xuICB2YXIgbmV4dFJlZiA9IG5leHRFbGVtZW50ID8gbmV4dEVsZW1lbnQucmVmIDogbnVsbDsgLy8gVXBkYXRlIHJlZnMgaW4gb3duZXIgY29tcG9uZW50XG5cbiAgaWYgKHByZXZSZWYgIT09IG5leHRSZWYpIHtcbiAgICAvLyBEZXRhY2ggcHJldiBSZW5kZXJlZEVsZW1lbnQncyByZWZcbiAgICBwcmV2UmVmICYmIGRldGFjaFJlZihwcmV2RWxlbWVudC5fb3duZXIsIHByZXZSZWYsIGNvbXBvbmVudCk7IC8vIEF0dGFjaCBuZXh0IFJlbmRlcmVkRWxlbWVudCdzIHJlZlxuXG4gICAgbmV4dFJlZiAmJiBhdHRhY2hSZWYobmV4dEVsZW1lbnQuX293bmVyLCBuZXh0UmVmLCBjb21wb25lbnQpO1xuICB9XG59XG5mdW5jdGlvbiBhdHRhY2hSZWYob3duZXJDb21wb25lbnQsIHJlZiwgY29tcG9uZW50KSB7XG4gIGlmICghb3duZXJDb21wb25lbnQpIHtcbiAgICB7XG4gICAgICB3YXJuaW5nKCdSZWYgY2FuIG5vdCBhdHRhY2ggYmVjYXVzZSBtdWx0aXBsZSBjb3BpZXMgb2YgUmF4IGFyZSB1c2VkLicpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIHZhciBpbnN0YW5jZSA9IGNvbXBvbmVudC5fX2dldFB1YmxpY0luc3RhbmNlKCk7XG5cbiAge1xuICAgIGlmIChpbnN0YW5jZSA9PSBudWxsKSB7XG4gICAgICB3YXJuaW5nKCdEbyBub3QgYXR0YWNoIHJlZiB0byBmdW5jdGlvbiBjb21wb25lbnQgYmVjYXVzZSB0aGV5IGRvbuKAmXQgaGF2ZSBpbnN0YW5jZXMuJyk7XG4gICAgfVxuICB9XG5cbiAgaWYgKGlzRnVuY3Rpb24ocmVmKSkge1xuICAgIHJlZihpbnN0YW5jZSk7XG4gIH0gZWxzZSBpZiAoaXNPYmplY3QocmVmKSkge1xuICAgIHJlZi5jdXJyZW50ID0gaW5zdGFuY2U7XG4gIH0gZWxzZSB7XG4gICAgb3duZXJDb21wb25lbnRbSU5TVEFOQ0VdLnJlZnNbcmVmXSA9IGluc3RhbmNlO1xuICB9XG59XG5mdW5jdGlvbiBkZXRhY2hSZWYob3duZXJDb21wb25lbnQsIHJlZiwgY29tcG9uZW50KSB7XG4gIGlmIChpc0Z1bmN0aW9uKHJlZikpIHtcbiAgICAvLyBXaGVuIHRoZSByZWZlcmVuY2VkIGNvbXBvbmVudCBpcyB1bm1vdW50ZWQgYW5kIHdoZW5ldmVyIHRoZSByZWYgY2hhbmdlcywgdGhlIG9sZCByZWYgd2lsbCBiZSBjYWxsZWQgd2l0aCBudWxsIGFzIGFuIGFyZ3VtZW50LlxuICAgIHJlZihudWxsKTtcbiAgfSBlbHNlIHtcbiAgICAvLyBNdXN0IG1hdGNoIGNvbXBvbmVudCBhbmQgcmVmIGNvdWxkIGRldGFjaCB0aGUgcmVmIG9uIG93bmVyIHdoZW4gQSdzIGJlZm9yZSByZWYgaXMgQidzIGN1cnJlbnQgcmVmXG4gICAgdmFyIGluc3RhbmNlID0gY29tcG9uZW50Ll9fZ2V0UHVibGljSW5zdGFuY2UoKTtcblxuICAgIGlmIChpc09iamVjdChyZWYpICYmIHJlZi5jdXJyZW50ID09PSBpbnN0YW5jZSkge1xuICAgICAgcmVmLmN1cnJlbnQgPSBudWxsO1xuICAgIH0gZWxzZSBpZiAob3duZXJDb21wb25lbnRbSU5TVEFOQ0VdLnJlZnNbcmVmXSA9PT0gaW5zdGFuY2UpIHtcbiAgICAgIGRlbGV0ZSBvd25lckNvbXBvbmVudFtJTlNUQU5DRV0ucmVmc1tyZWZdO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBpbnN0YW50aWF0ZUNvbXBvbmVudChlbGVtZW50KSB7XG4gIHZhciBpbnN0YW5jZTtcblxuICBpZiAoaXNQbGFpbk9iamVjdChlbGVtZW50KSAmJiBlbGVtZW50ICE9PSBudWxsICYmIGVsZW1lbnQudHlwZSkge1xuICAgIC8vIFNwZWNpYWwgY2FzZSBzdHJpbmcgdmFsdWVzXG4gICAgaWYgKGlzU3RyaW5nKGVsZW1lbnQudHlwZSkpIHtcbiAgICAgIGluc3RhbmNlID0gbmV3IEhvc3QuX19OYXRpdmUoZWxlbWVudCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGluc3RhbmNlID0gbmV3IEhvc3QuX19Db21wb3NpdGUoZWxlbWVudCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGlzU3RyaW5nKGVsZW1lbnQpIHx8IGlzTnVtYmVyKGVsZW1lbnQpKSB7XG4gICAgaW5zdGFuY2UgPSBuZXcgSG9zdC5fX1RleHQoU3RyaW5nKGVsZW1lbnQpKTtcbiAgfSBlbHNlIGlmIChpc0FycmF5KGVsZW1lbnQpKSB7XG4gICAgaW5zdGFuY2UgPSBuZXcgSG9zdC5fX0ZyYWdtZW50KGVsZW1lbnQpO1xuICB9IGVsc2Uge1xuICAgIGlmICghKGVsZW1lbnQgPT09IHVuZGVmaW5lZCB8fCBpc051bGwoZWxlbWVudCkgfHwgZWxlbWVudCA9PT0gZmFsc2UgfHwgZWxlbWVudCA9PT0gdHJ1ZSkpIHtcbiAgICAgIHtcbiAgICAgICAgdGhyb3dFcnJvcignSW52YWxpZCBjaGlsZCB0eXBlLCBleHBlY3RlZCB0eXBlczogRWxlbWVudCBpbnN0YW5jZSwgc3RyaW5nLCBib29sZWFuLCBhcnJheSwgbnVsbCwgdW5kZWZpbmVkLicsIGVsZW1lbnQpO1xuICAgICAgfVxuICAgIH1cblxuICAgIGluc3RhbmNlID0gbmV3IEhvc3QuX19FbXB0eShlbGVtZW50KTtcbiAgfVxuXG4gIHJldHVybiBpbnN0YW5jZTtcbn1cblxuZnVuY3Rpb24gc2hvdWxkVXBkYXRlQ29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkge1xuICB2YXIgcHJldkVtcHR5ID0gaXNOdWxsKHByZXZFbGVtZW50KTtcbiAgdmFyIG5leHRFbXB0eSA9IGlzTnVsbChuZXh0RWxlbWVudCk7XG5cbiAgaWYgKHByZXZFbXB0eSB8fCBuZXh0RW1wdHkpIHtcbiAgICByZXR1cm4gcHJldkVtcHR5ID09PSBuZXh0RW1wdHk7XG4gIH1cblxuICBpZiAoaXNBcnJheShwcmV2RWxlbWVudCkgJiYgaXNBcnJheShuZXh0RWxlbWVudCkpIHtcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHZhciBpc1ByZXZTdHJpbmdPck51bWJlciA9IGlzU3RyaW5nKHByZXZFbGVtZW50KSB8fCBpc051bWJlcihwcmV2RWxlbWVudCk7XG5cbiAgaWYgKGlzUHJldlN0cmluZ09yTnVtYmVyKSB7XG4gICAgcmV0dXJuIGlzU3RyaW5nKG5leHRFbGVtZW50KSB8fCBpc051bWJlcihuZXh0RWxlbWVudCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcHJldkVsZW1lbnQgYW5kIG5leHRFbGVtZW50IGNvdWxkIGJlIGFycmF5LCB0eXBlb2YgW10gaXMgXCJvYmplY3RcIlxuICAgIHJldHVybiBpc09iamVjdChwcmV2RWxlbWVudCkgJiYgaXNPYmplY3QobmV4dEVsZW1lbnQpICYmIHByZXZFbGVtZW50LnR5cGUgPT09IG5leHRFbGVtZW50LnR5cGUgJiYgcHJldkVsZW1lbnQua2V5ID09PSBuZXh0RWxlbWVudC5rZXk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZ2V0RWxlbWVudEtleU5hbWUoY2hpbGRyZW4sIGVsZW1lbnQsIGluZGV4KSB7XG4gIHZhciBlbGVtZW50S2V5ID0gZWxlbWVudCAmJiBlbGVtZW50LmtleTtcbiAgdmFyIGRlZmF1bHROYW1lID0gJy4nICsgaW5kZXgudG9TdHJpbmcoMzYpOyAvLyBJbm5lciBjaGlsZCBuYW1lIGRlZmF1bHQgZm9ybWF0IGZhbGxiYWNrXG4gIC8vIEtleSBzaG91bGQgbXVzdCBiZSBzdHJpbmcgdHlwZVxuXG4gIGlmIChpc1N0cmluZyhlbGVtZW50S2V5KSkge1xuICAgIHZhciBrZXlOYW1lID0gJyQnICsgZWxlbWVudEtleTsgLy8gQ2hpbGQga2V5cyBtdXN0IGJlIHVuaXF1ZS5cblxuICAgIHZhciBrZXlVbmlxdWUgPSBjaGlsZHJlbltrZXlOYW1lXSA9PT0gdW5kZWZpbmVkO1xuXG4gICAge1xuICAgICAgaWYgKCFrZXlVbmlxdWUpIHtcbiAgICAgICAgLy8gT25seSB0aGUgZmlyc3QgY2hpbGQgd2lsbCBiZSB1c2VkIHdoZW4gZW5jb3VudGVyZWQgdHdvIGNoaWxkcmVuIHdpdGggdGhlIHNhbWUga2V5XG4gICAgICAgIHdhcm5pbmcoXCJFbmNvdW50ZXJlZCB0d28gY2hpbGRyZW4gd2l0aCB0aGUgc2FtZSBrZXkgXFxcIlwiICsgZWxlbWVudEtleSArIFwiXFxcIi5cIik7XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGtleVVuaXF1ZSA/IGtleU5hbWUgOiBkZWZhdWx0TmFtZTtcbiAgfSBlbHNlIHtcbiAgICByZXR1cm4gZGVmYXVsdE5hbWU7XG4gIH1cbn1cblxuLyoqXG4gKiBUaGlzIGZ1bmN0aW9uIGlzIHVzdWFsbHkgYmVlbiB1c2VkIHRvIGZpbmQgdGhlIGNsb3NldCBwcmV2aW91cyBzaWJsaW5nIG5hdGl2ZSBub2RlIG9mIEZyYWdtZW50Q29tcG9uZW50LlxuICogRnJhZ21lbnRDb21wb25lbnQgZG9lcyBub3QgaGF2ZSBhIG5hdGl2ZSBub2RlIGluIHRoZSBET00gdHJlZSwgc28gd2hlbiBpdCBpcyByZXBsYWNlZCwgdGhlIG5ldyBub2RlIGhhcyBubyBjb3JyZXNwb25kaW5nIGxvY2F0aW9uIHRvIGluc2VydC5cbiAqIFNvIHdlIG5lZWQgdG8gbG9vayBmb3J3YXJkIGZyb20gdGhlIGN1cnJlbnQgbW91bnQgcG9zaXRpb24gb2YgdGhlIEZyYWdtZW50Q29tcG9uZW50IHRvIHRoZSBuZWFyZXN0IGNvbXBvbmVudCB3aGljaCBoYXZlIHRoZSBuYXRpdmUgbm9kZS5cbiAqIEBwYXJhbSBjb21wb25lbnRcbiAqIEByZXR1cm4gbmF0aXZlTm9kZVxuICovXG5cbmZ1bmN0aW9uIGdldFByZXZTaWJsaW5nTmF0aXZlTm9kZShjb21wb25lbnQpIHtcbiAgdmFyIHBhcmVudCA9IGNvbXBvbmVudDtcblxuICB3aGlsZSAocGFyZW50ID0gY29tcG9uZW50Ll9fcGFyZW50SW5zdGFuY2UgJiYgY29tcG9uZW50Ll9fcGFyZW50SW5zdGFuY2VbSU5URVJOQUxdKSB7XG4gICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIEhvc3QuX19Db21wb3NpdGUpIHtcbiAgICAgIGNvbXBvbmVudCA9IHBhcmVudDtcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIHZhciBrZXlzID0gT2JqZWN0LmtleXMocGFyZW50Ll9fcmVuZGVyZWRDaGlsZHJlbik7IC8vIEZpbmQgcHJldmlvdXMgc2libGluZyBuYXRpdmUgbm9kZSBmcm9tIGN1cnJlbnQgbW91bnQgaW5kZXhcblxuICAgIGZvciAodmFyIGkgPSBjb21wb25lbnQuX19tb3VudEluZGV4IC0gMTsgaSA+PSAwOyBpLS0pIHtcbiAgICAgIHZhciBuYXRpdmVOb2RlID0gcGFyZW50Ll9fcmVuZGVyZWRDaGlsZHJlbltrZXlzW2ldXS5fX2dldE5hdGl2ZU5vZGUoKTsgLy8gRnJhZ21lbnQgY29tcG9uZW50IGFsd2F5cyByZXR1cm4gYXJyYXlcblxuXG4gICAgICBpZiAoaXNBcnJheShuYXRpdmVOb2RlKSkge1xuICAgICAgICBpZiAobmF0aXZlTm9kZS5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgLy8gR2V0IHRoZSBsYXN0IG9uZVxuICAgICAgICAgIHJldHVybiBuYXRpdmVOb2RlW25hdGl2ZU5vZGUubGVuZ3RoIC0gMV07XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIE90aGVycyBtYXliZSBuYXRpdmUgbm9kZSBvciBlbXB0eSBub2RlXG4gICAgICAgIHJldHVybiBuYXRpdmVOb2RlO1xuICAgICAgfVxuICAgIH0gLy8gRmluZCBwYXJlbnQgb3ZlciBwYXJlbnRcblxuXG4gICAgaWYgKHBhcmVudCBpbnN0YW5jZW9mIEhvc3QuX19GcmFnbWVudCkge1xuICAgICAgY29tcG9uZW50ID0gcGFyZW50O1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cblxuLyoqXG4gKiBCYXNlIGNvbXBvbmVudCBjbGFzcy5cbiAqL1xudmFyIENvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcywgY29udGV4dCkge1xuICAgIHRoaXMucHJvcHMgPSBwcm9wcztcbiAgICB0aGlzLmNvbnRleHQgPSBjb250ZXh0O1xuICAgIHRoaXMucmVmcyA9IHt9O1xuICB9XG5cbiAgdmFyIF9wcm90byA9IENvbXBvbmVudC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLnNldFN0YXRlID0gZnVuY3Rpb24gc2V0U3RhdGUocGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xuICAgIC8vIFRoZSB1cGRhdGVyIHByb3BlcnR5IGlzIGluamVjdGVkIHdoZW4gY29tcG9zaXRlIGNvbXBvbmVudCBtb3VudGluZ1xuICAgIHRoaXMudXBkYXRlci5zZXRTdGF0ZSh0aGlzLCBwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKTtcbiAgfTtcblxuICBfcHJvdG8uZm9yY2VVcGRhdGUgPSBmdW5jdGlvbiBmb3JjZVVwZGF0ZShjYWxsYmFjaykge1xuICAgIHRoaXMudXBkYXRlci5mb3JjZVVwZGF0ZSh0aGlzLCBjYWxsYmFjayk7XG4gIH07XG5cbiAgcmV0dXJuIENvbXBvbmVudDtcbn0oKTtcbnZhciBQdXJlQ29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0c0xvb3NlKFB1cmVDb21wb25lbnQsIF9Db21wb25lbnQpO1xuXG4gIGZ1bmN0aW9uIFB1cmVDb21wb25lbnQocHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfdGhpcyA9IF9Db21wb25lbnQuY2FsbCh0aGlzLCBwcm9wcywgY29udGV4dCkgfHwgdGhpcztcbiAgICBfdGhpcy5fX2lzUHVyZUNvbXBvbmVudCA9IHRydWU7XG4gICAgcmV0dXJuIF90aGlzO1xuICB9XG5cbiAgcmV0dXJuIFB1cmVDb21wb25lbnQ7XG59KENvbXBvbmVudCk7XG5cbnZhciByb290SUQgPSAxO1xuXG52YXIgUm9vdCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0NvbXBvbmVudCkge1xuICBfaW5oZXJpdHNMb29zZShSb290LCBfQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBSb290KCkge1xuICAgIHZhciBfdGhpcztcblxuICAgIF90aGlzID0gX0NvbXBvbmVudC5jYWxsKHRoaXMpIHx8IHRoaXM7IC8vIFVzaW5nIGZyYWdtZW50IGluc3RlYWQgb2YgbnVsbCBmb3IgYXZvaWQgY3JlYXRlIGEgY29tbWVudCBub2RlIHdoZW4gaW5pdCBtb3VudFxuXG4gICAgX3RoaXMuX19lbGVtZW50ID0gW107XG4gICAgX3RoaXMuX19yb290SUQgPSByb290SUQrKztcbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gUm9vdC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLl9fZ2V0UHVibGljSW5zdGFuY2UgPSBmdW5jdGlvbiBfX2dldFB1YmxpY0luc3RhbmNlKCkge1xuICAgIHJldHVybiB0aGlzLl9fZ2V0UmVuZGVyZWRDb21wb25lbnQoKS5fX2dldFB1YmxpY0luc3RhbmNlKCk7XG4gIH07XG5cbiAgX3Byb3RvLl9fZ2V0UmVuZGVyZWRDb21wb25lbnQgPSBmdW5jdGlvbiBfX2dldFJlbmRlcmVkQ29tcG9uZW50KCkge1xuICAgIHJldHVybiB0aGlzW0lOVEVSTkFMXVtSRU5ERVJFRF9DT01QT05FTlRdO1xuICB9O1xuXG4gIF9wcm90by5fX3VwZGF0ZSA9IGZ1bmN0aW9uIF9fdXBkYXRlKGVsZW1lbnQpIHtcbiAgICB0aGlzLl9fZWxlbWVudCA9IGVsZW1lbnQ7XG4gICAgdGhpcy5mb3JjZVVwZGF0ZSgpO1xuICB9O1xuXG4gIF9wcm90by5yZW5kZXIgPSBmdW5jdGlvbiByZW5kZXIoKSB7XG4gICAgcmV0dXJuIHRoaXMuX19lbGVtZW50O1xuICB9O1xuXG4gIHJldHVybiBSb290O1xufShDb21wb25lbnQpO1xuXG4vKipcbiAqIEluc3RhbmNlIG1hbmFnZXJcbiAqIEBOT1RFIEtleSBzaG91bGQgbm90IGJlIGNvbXByZXNzZWQsIGZvciB0aGF0IHdpbGwgYmUgYWRkZWQgdG8gbmF0aXZlIG5vZGUgYW5kIGNhdXNlIERPTSBFeGNlcHRpb24uXG4gKi9cblxudmFyIEtFWSA9ICdfcic7XG52YXIgSW5zdGFuY2UgPSB7XG4gIHNldDogZnVuY3Rpb24gc2V0KG5vZGUsIGluc3RhbmNlKSB7XG4gICAgaWYgKCFub2RlW0tFWV0pIHtcbiAgICAgIG5vZGVbS0VZXSA9IGluc3RhbmNlOyAvLyBSZWNvcmQgcm9vdCBpbnN0YW5jZSB0byByb290cyBtYXBcblxuICAgICAgaWYgKGluc3RhbmNlLl9fcm9vdElEKSB7XG4gICAgICAgIEhvc3Qucm9vdEluc3RhbmNlc1tpbnN0YW5jZS5fX3Jvb3RJRF0gPSBpbnN0YW5jZTtcbiAgICAgICAgSG9zdC5yb290Q29tcG9uZW50c1tpbnN0YW5jZS5fX3Jvb3RJRF0gPSBpbnN0YW5jZVtJTlRFUk5BTF07XG4gICAgICB9XG4gICAgfVxuICB9LFxuICBnZXQ6IGZ1bmN0aW9uIGdldChub2RlKSB7XG4gICAgcmV0dXJuIG5vZGVbS0VZXTtcbiAgfSxcbiAgcmVtb3ZlOiBmdW5jdGlvbiByZW1vdmUobm9kZSkge1xuICAgIHZhciBpbnN0YW5jZSA9IHRoaXMuZ2V0KG5vZGUpO1xuXG4gICAgaWYgKGluc3RhbmNlKSB7XG4gICAgICBub2RlW0tFWV0gPSBudWxsO1xuXG4gICAgICBpZiAoaW5zdGFuY2UuX19yb290SUQpIHtcbiAgICAgICAgZGVsZXRlIEhvc3Qucm9vdENvbXBvbmVudHNbaW5zdGFuY2UuX19yb290SURdO1xuICAgICAgICBkZWxldGUgSG9zdC5yb290SW5zdGFuY2VzW2luc3RhbmNlLl9fcm9vdElEXTtcbiAgICAgIH1cbiAgICB9XG4gIH0sXG4gIG1vdW50OiBmdW5jdGlvbiBtb3VudChlbGVtZW50LCBjb250YWluZXIsIF9yZWYpIHtcbiAgICB2YXIgcGFyZW50ID0gX3JlZi5wYXJlbnQsXG4gICAgICAgIGh5ZHJhdGUgPSBfcmVmLmh5ZHJhdGU7XG5cbiAgICB7XG4gICAgICBIb3N0Lm1lYXN1cmVyICYmIEhvc3QubWVhc3VyZXIuYmVmb3JlUmVuZGVyKCk7XG4gICAgfVxuXG4gICAgdmFyIGRyaXZlciA9IEhvc3QuZHJpdmVyOyAvLyBSZWFsIG5hdGl2ZSByb290IG5vZGUgaXMgYm9keVxuXG4gICAgaWYgKGNvbnRhaW5lciA9PSBudWxsKSB7XG4gICAgICBjb250YWluZXIgPSBkcml2ZXIuY3JlYXRlQm9keSgpO1xuICAgIH1cblxuICAgIHZhciByZW5kZXJPcHRpb25zID0ge1xuICAgICAgZWxlbWVudDogZWxlbWVudCxcbiAgICAgIGNvbnRhaW5lcjogY29udGFpbmVyLFxuICAgICAgaHlkcmF0ZTogaHlkcmF0ZVxuICAgIH07IC8vIEJlZm9yZSByZW5kZXIgY2FsbGJhY2tcblxuICAgIGRyaXZlci5iZWZvcmVSZW5kZXIgJiYgZHJpdmVyLmJlZm9yZVJlbmRlcihyZW5kZXJPcHRpb25zKTsgLy8gR2V0IHRoZSBjb250ZXh0IGZyb20gdGhlIGNvbmNlcHR1YWwgcGFyZW50IGNvbXBvbmVudC5cblxuICAgIHZhciBwYXJlbnRDb250ZXh0O1xuXG4gICAgaWYgKHBhcmVudCkge1xuICAgICAgdmFyIHBhcmVudEludGVybmFsID0gcGFyZW50W0lOVEVSTkFMXTtcbiAgICAgIHBhcmVudENvbnRleHQgPSBwYXJlbnRJbnRlcm5hbC5fX3Byb2Nlc3NDaGlsZENvbnRleHQocGFyZW50SW50ZXJuYWwuX2NvbnRleHQpO1xuICAgIH0gLy8gVXBkYXRlIHJvb3QgY29tcG9uZW50XG5cblxuICAgIHZhciBwcmV2Um9vdEluc3RhbmNlID0gdGhpcy5nZXQoY29udGFpbmVyKTtcblxuICAgIGlmIChwcmV2Um9vdEluc3RhbmNlICYmIHByZXZSb290SW5zdGFuY2UuX19yb290SUQpIHtcbiAgICAgIGlmIChwYXJlbnRDb250ZXh0KSB7XG4gICAgICAgIC8vIFVzaW5nIF9fcGVuZGRpbmdDb250ZXh0IHRvIHBhc3MgbmV3IGNvbnRleHRcbiAgICAgICAgcHJldlJvb3RJbnN0YW5jZVtJTlRFUk5BTF0uX19wZW5kZGluZ0NvbnRleHQgPSBwYXJlbnRDb250ZXh0O1xuICAgICAgfVxuXG4gICAgICBwcmV2Um9vdEluc3RhbmNlLl9fdXBkYXRlKGVsZW1lbnQpOyAvLyBBZnRlciByZW5kZXIgY2FsbGJhY2tcblxuXG4gICAgICBkcml2ZXIuYWZ0ZXJSZW5kZXIgJiYgZHJpdmVyLmFmdGVyUmVuZGVyKHJlbmRlck9wdGlvbnMpO1xuICAgICAgcmV0dXJuIHByZXZSb290SW5zdGFuY2U7XG4gICAgfSAvLyBJbml0IHJvb3QgY29tcG9uZW50IHdpdGggZW1wdHkgY2hpbGRyZW5cblxuXG4gICAgdmFyIHJlbmRlcmVkQ29tcG9uZW50ID0gaW5zdGFudGlhdGVDb21wb25lbnQoY3JlYXRlRWxlbWVudChSb290KSk7XG4gICAgdmFyIGRlZmF1bHRDb250ZXh0ID0gcGFyZW50Q29udGV4dCB8fCB7fTtcblxuICAgIHZhciByb290SW5zdGFuY2UgPSByZW5kZXJlZENvbXBvbmVudC5fX21vdW50Q29tcG9uZW50KGNvbnRhaW5lciwgcGFyZW50LCBkZWZhdWx0Q29udGV4dCk7XG5cbiAgICB0aGlzLnNldChjb250YWluZXIsIHJvb3RJbnN0YW5jZSk7IC8vIE1vdW50IG5ldyBlbGVtZW50IHRocm91Z2ggdXBkYXRlIHF1ZXVlIGF2b2lkIHdoZW4gdGhlcmUgaXMgaW4gcmVuZGVyaW5nIHBoYXNlXG5cbiAgICByb290SW5zdGFuY2UuX191cGRhdGUoZWxlbWVudCk7IC8vIEFmdGVyIHJlbmRlciBjYWxsYmFja1xuXG5cbiAgICBkcml2ZXIuYWZ0ZXJSZW5kZXIgJiYgZHJpdmVyLmFmdGVyUmVuZGVyKHJlbmRlck9wdGlvbnMpO1xuXG4gICAge1xuICAgICAgLy8gRGV2dG9vbCByZW5kZXIgbmV3IHJvb3QgaG9va1xuICAgICAgSG9zdC5yZWNvbmNpbGVyLnJlbmRlck5ld1Jvb3RDb21wb25lbnQocm9vdEluc3RhbmNlW0lOVEVSTkFMXVtSRU5ERVJFRF9DT01QT05FTlRdKTtcbiAgICAgIEhvc3QubWVhc3VyZXIgJiYgSG9zdC5tZWFzdXJlci5hZnRlclJlbmRlcigpO1xuICAgIH1cblxuICAgIHJldHVybiByb290SW5zdGFuY2U7XG4gIH1cbn07XG5cbnZhciBhc3NpZ24gPSBPYmplY3QuYXNzaWduO1xuXG52YXIgU1RZTEUgPSAnc3R5bGUnO1xudmFyIENISUxEUkVOID0gJ2NoaWxkcmVuJztcbnZhciBUUkVFID0gJ3RyZWUnO1xudmFyIEVWRU5UX1BSRUZJWF9SRUdFWFAgPSAvXm9uW0EtWl0vO1xuLyoqXG4gKiBOYXRpdmUgQ29tcG9uZW50XG4gKi9cblxudmFyIE5hdGl2ZUNvbXBvbmVudCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoX0Jhc2VDb21wb25lbnQpIHtcbiAgX2luaGVyaXRzTG9vc2UoTmF0aXZlQ29tcG9uZW50LCBfQmFzZUNvbXBvbmVudCk7XG5cbiAgZnVuY3Rpb24gTmF0aXZlQ29tcG9uZW50KCkge1xuICAgIHJldHVybiBfQmFzZUNvbXBvbmVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gTmF0aXZlQ29tcG9uZW50LnByb3RvdHlwZTtcblxuICBfcHJvdG8uX19tb3VudENvbXBvbmVudCA9IGZ1bmN0aW9uIF9fbW91bnRDb21wb25lbnQocGFyZW50LCBwYXJlbnRJbnN0YW5jZSwgY29udGV4dCwgbmF0aXZlTm9kZU1vdW50ZXIpIHtcbiAgICB0aGlzLl9faW5pdENvbXBvbmVudChwYXJlbnQsIHBhcmVudEluc3RhbmNlLCBjb250ZXh0KTtcblxuICAgIHZhciBjdXJyZW50RWxlbWVudCA9IHRoaXMuX19jdXJyZW50RWxlbWVudDtcbiAgICB2YXIgcHJvcHMgPSBjdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICB2YXIgdHlwZSA9IGN1cnJlbnRFbGVtZW50LnR5cGU7XG4gICAgdmFyIGNoaWxkcmVuID0gcHJvcHNbQ0hJTERSRU5dO1xuICAgIHZhciBhcHBlbmRUeXBlID0gcHJvcHMuYXBwZW5kIHx8IFRSRUU7IC8vIERlZmF1bHQgaXMgdHJlZVxuICAgIC8vIENsb25lIGEgY29weSBmb3Igc3R5bGUgZGlmZlxuXG4gICAgdGhpcy5fX3ByZXZTdHlsZUNvcHkgPSBhc3NpZ24oe30sIHByb3BzW1NUWUxFXSk7XG4gICAgdmFyIGluc3RhbmNlID0ge1xuICAgICAgdHlwZTogdHlwZSxcbiAgICAgIHByb3BzOiBwcm9wc1xuICAgIH07XG4gICAgaW5zdGFuY2VbSU5URVJOQUxdID0gdGhpcztcbiAgICB0aGlzW0lOU1RBTkNFXSA9IGluc3RhbmNlO1xuXG4gICAgaWYgKGFwcGVuZFR5cGUgPT09IFRSRUUpIHtcbiAgICAgIC8vIFNob3VsZCBhZnRlciBwcm9jZXNzIGNoaWxkcmVuIHdoZW4gbW91bnQgYnkgdHJlZSBtb2RlXG4gICAgICB0aGlzLl9fbW91bnRDaGlsZHJlbihjaGlsZHJlbiwgY29udGV4dCk7XG5cbiAgICAgIHRoaXMuX19tb3VudE5hdGl2ZU5vZGUobmF0aXZlTm9kZU1vdW50ZXIpO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBTaG91bGQgYmVmb3JlIHByb2Nlc3MgY2hpbGRyZW4gd2hlbiBtb3VudCBieSBub2RlIG1vZGVcbiAgICAgIHRoaXMuX19tb3VudE5hdGl2ZU5vZGUobmF0aXZlTm9kZU1vdW50ZXIpO1xuXG4gICAgICB0aGlzLl9fbW91bnRDaGlsZHJlbihjaGlsZHJlbiwgY29udGV4dCk7XG4gICAgfSAvLyBSZWYgYWN0dGFjaFxuXG5cbiAgICBpZiAoY3VycmVudEVsZW1lbnQgJiYgY3VycmVudEVsZW1lbnQucmVmKSB7XG4gICAgICBhdHRhY2hSZWYoY3VycmVudEVsZW1lbnQuX293bmVyLCBjdXJyZW50RWxlbWVudC5yZWYsIHRoaXMpO1xuICAgIH1cblxuICAgIHtcbiAgICAgIEhvc3QucmVjb25jaWxlci5tb3VudENvbXBvbmVudCh0aGlzKTtcbiAgICB9XG5cbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG5cbiAgX3Byb3RvLl9fbW91bnRDaGlsZHJlbiA9IGZ1bmN0aW9uIF9fbW91bnRDaGlsZHJlbihjaGlsZHJlbiwgY29udGV4dCkge1xuICAgIGlmIChjaGlsZHJlbiA9PSBudWxsKSByZXR1cm4gY2hpbGRyZW47XG5cbiAgICB2YXIgbmF0aXZlTm9kZSA9IHRoaXMuX19nZXROYXRpdmVOb2RlKCk7XG5cbiAgICByZXR1cm4gdGhpcy5fX21vdW50Q2hpbGRyZW5JbXBsKG5hdGl2ZU5vZGUsIHRvQXJyYXkoY2hpbGRyZW4pLCBjb250ZXh0KTtcbiAgfTtcblxuICBfcHJvdG8uX19tb3VudENoaWxkcmVuSW1wbCA9IGZ1bmN0aW9uIF9fbW91bnRDaGlsZHJlbkltcGwocGFyZW50LCBjaGlsZHJlbiwgY29udGV4dCwgbmF0aXZlTm9kZU1vdW50ZXIpIHtcbiAgICB2YXIgcmVuZGVyZWRDaGlsZHJlbiA9IHRoaXMuX19yZW5kZXJlZENoaWxkcmVuID0ge307XG4gICAgdmFyIHJlbmRlcmVkQ2hpbGRyZW5JbWFnZSA9IFtdO1xuXG4gICAgZm9yICh2YXIgaSA9IDAsIGwgPSBjaGlsZHJlbi5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgIHZhciBlbGVtZW50ID0gY2hpbGRyZW5baV07XG4gICAgICB2YXIgcmVuZGVyZWRDaGlsZCA9IGluc3RhbnRpYXRlQ29tcG9uZW50KGVsZW1lbnQpO1xuICAgICAgdmFyIG5hbWUgPSBnZXRFbGVtZW50S2V5TmFtZShyZW5kZXJlZENoaWxkcmVuLCBlbGVtZW50LCBpKTtcbiAgICAgIHJlbmRlcmVkQ2hpbGRyZW5bbmFtZV0gPSByZW5kZXJlZENoaWxkO1xuICAgICAgcmVuZGVyZWRDaGlsZC5fX21vdW50SW5kZXggPSBpOyAvLyBNb3VudCBjaGlsZHJlblxuXG4gICAgICB2YXIgbW91bnRJbWFnZSA9IHJlbmRlcmVkQ2hpbGQuX19tb3VudENvbXBvbmVudChwYXJlbnQsIHRoaXNbSU5TVEFOQ0VdLCBjb250ZXh0LCBuYXRpdmVOb2RlTW91bnRlcik7XG5cbiAgICAgIHJlbmRlcmVkQ2hpbGRyZW5JbWFnZS5wdXNoKG1vdW50SW1hZ2UpO1xuICAgIH1cblxuICAgIHJldHVybiByZW5kZXJlZENoaWxkcmVuSW1hZ2U7XG4gIH07XG5cbiAgX3Byb3RvLl9fdW5tb3VudENoaWxkcmVuID0gZnVuY3Rpb24gX191bm1vdW50Q2hpbGRyZW4oc2hvdWxkTm90UmVtb3ZlQ2hpbGQpIHtcbiAgICB2YXIgcmVuZGVyZWRDaGlsZHJlbiA9IHRoaXMuX19yZW5kZXJlZENoaWxkcmVuO1xuXG4gICAgaWYgKHJlbmRlcmVkQ2hpbGRyZW4pIHtcbiAgICAgIGZvciAodmFyIG5hbWUgaW4gcmVuZGVyZWRDaGlsZHJlbikge1xuICAgICAgICB2YXIgcmVuZGVyZWRDaGlsZCA9IHJlbmRlcmVkQ2hpbGRyZW5bbmFtZV07XG4gICAgICAgIHJlbmRlcmVkQ2hpbGQudW5tb3VudENvbXBvbmVudChzaG91bGROb3RSZW1vdmVDaGlsZCk7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuX19yZW5kZXJlZENoaWxkcmVuID0gbnVsbDtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLnVubW91bnRDb21wb25lbnQgPSBmdW5jdGlvbiB1bm1vdW50Q29tcG9uZW50KHNob3VsZE5vdFJlbW92ZUNoaWxkKSB7XG4gICAgaWYgKHRoaXNbTkFUSVZFX05PREVdKSB7XG4gICAgICB2YXIgcmVmID0gdGhpcy5fX2N1cnJlbnRFbGVtZW50LnJlZjtcblxuICAgICAgaWYgKHJlZikge1xuICAgICAgICBkZXRhY2hSZWYodGhpcy5fX2N1cnJlbnRFbGVtZW50Ll9vd25lciwgcmVmLCB0aGlzKTtcbiAgICAgIH1cblxuICAgICAgSW5zdGFuY2UucmVtb3ZlKHRoaXNbTkFUSVZFX05PREVdKTtcblxuICAgICAgaWYgKCFzaG91bGROb3RSZW1vdmVDaGlsZCkge1xuICAgICAgICBIb3N0LmRyaXZlci5yZW1vdmVDaGlsZCh0aGlzW05BVElWRV9OT0RFXSwgdGhpcy5fcGFyZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB0aGlzLl9fdW5tb3VudENoaWxkcmVuKHRydWUpO1xuXG4gICAgdGhpcy5fX3ByZXZTdHlsZUNvcHkgPSBudWxsO1xuXG4gICAgdGhpcy5fX2Rlc3RvcnlDb21wb25lbnQoKTtcbiAgfTtcblxuICBfcHJvdG8uX191cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiBfX3VwZGF0ZUNvbXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIHByZXZDb250ZXh0LCBuZXh0Q29udGV4dCkge1xuICAgIC8vIFJlcGxhY2UgY3VycmVudCBlbGVtZW50XG4gICAgdGhpcy5fX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG4gICAgdXBkYXRlUmVmKHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgdGhpcyk7XG4gICAgdmFyIHByZXZQcm9wcyA9IHByZXZFbGVtZW50LnByb3BzO1xuICAgIHZhciBuZXh0UHJvcHMgPSBuZXh0RWxlbWVudC5wcm9wcztcblxuICAgIHRoaXMuX191cGRhdGVQcm9wZXJ0aWVzKHByZXZQcm9wcywgbmV4dFByb3BzKTsgLy8gSWYgdGhlIHByZXZFbGVtZW50IGhhcyBubyBjaGlsZCwgbW91bnQgY2hpbGRyZW4gZGlyZWN0bHlcblxuXG4gICAgaWYgKHByZXZQcm9wc1tDSElMRFJFTl0gPT0gbnVsbCB8fCBpc0FycmF5KHByZXZQcm9wc1tDSElMRFJFTl0pICYmIHByZXZQcm9wc1tDSElMRFJFTl0ubGVuZ3RoID09PSAwKSB7XG4gICAgICB0aGlzLl9fbW91bnRDaGlsZHJlbihuZXh0UHJvcHNbQ0hJTERSRU5dLCBuZXh0Q29udGV4dCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuX191cGRhdGVDaGlsZHJlbihuZXh0UHJvcHNbQ0hJTERSRU5dLCBuZXh0Q29udGV4dCk7XG4gICAgfVxuXG4gICAge1xuICAgICAgSG9zdC5yZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQodGhpcyk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5fX3VwZGF0ZVByb3BlcnRpZXMgPSBmdW5jdGlvbiBfX3VwZGF0ZVByb3BlcnRpZXMocHJldlByb3BzLCBuZXh0UHJvcHMpIHtcbiAgICB2YXIgcHJvcEtleTtcbiAgICB2YXIgc3R5bGVOYW1lO1xuICAgIHZhciBzdHlsZVVwZGF0ZXM7XG4gICAgdmFyIGRyaXZlciA9IEhvc3QuZHJpdmVyO1xuXG4gICAgdmFyIG5hdGl2ZU5vZGUgPSB0aGlzLl9fZ2V0TmF0aXZlTm9kZSgpO1xuXG4gICAgZm9yIChwcm9wS2V5IGluIHByZXZQcm9wcykge1xuICAgICAgLy8gQ29udGludWUgY2hpbGRyZW4gYW5kIG51bGwgdmFsdWUgcHJvcCBvciBuZXh0UHJvcHMgaGFzIHNvbWUgcHJvcEtleSB0aGF0IGRvIG5vdGluZ1xuICAgICAgaWYgKHByb3BLZXkgPT09IENISUxEUkVOIHx8IHByZXZQcm9wc1twcm9wS2V5XSA9PSBudWxsIHx8IC8vIFVzZSBoYXNPd25Qcm9wZXJ0eSBoZXJlIGZvciBhdm9pZCBwcm9wS2V5IG5hbWUgaXMgc29tZSB3aXRoIG1ldGhvZCBuYW1lIGluIG9iamVjdCBwcm9wdG90eXBlXG4gICAgICBuZXh0UHJvcHMuaGFzT3duUHJvcGVydHkocHJvcEtleSkpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICAvLyBSZW1vdmUgYWxsIHN0eWxlXG4gICAgICAgIHZhciBsYXN0U3R5bGUgPSB0aGlzLl9fcHJldlN0eWxlQ29weTtcblxuICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBsYXN0U3R5bGUpIHtcbiAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307XG4gICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuX19wcmV2U3R5bGVDb3B5ID0gbnVsbDtcbiAgICAgIH0gZWxzZSBpZiAoRVZFTlRfUFJFRklYX1JFR0VYUC50ZXN0KHByb3BLZXkpKSB7XG4gICAgICAgIC8vIFJlbW92ZSBldmVudFxuICAgICAgICB2YXIgZXZlbnRMaXN0ZW5lciA9IHByZXZQcm9wc1twcm9wS2V5XTtcblxuICAgICAgICBpZiAoaXNGdW5jdGlvbihldmVudExpc3RlbmVyKSkge1xuICAgICAgICAgIGRyaXZlci5yZW1vdmVFdmVudExpc3RlbmVyKG5hdGl2ZU5vZGUsIHByb3BLZXkuc2xpY2UoMikudG9Mb3dlckNhc2UoKSwgZXZlbnRMaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIFJlbW92ZSBhdHRyaWJ1dGVcbiAgICAgICAgZHJpdmVyLnJlbW92ZUF0dHJpYnV0ZShuYXRpdmVOb2RlLCBwcm9wS2V5LCBwcmV2UHJvcHNbcHJvcEtleV0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIGZvciAocHJvcEtleSBpbiBuZXh0UHJvcHMpIHtcbiAgICAgIHZhciBuZXh0UHJvcCA9IG5leHRQcm9wc1twcm9wS2V5XTtcbiAgICAgIHZhciBwcmV2UHJvcCA9IHByb3BLZXkgPT09IFNUWUxFID8gdGhpcy5fX3ByZXZTdHlsZUNvcHkgOiBwcmV2UHJvcHMgIT0gbnVsbCA/IHByZXZQcm9wc1twcm9wS2V5XSA6IHVuZGVmaW5lZDsgLy8gQ29udGludWUgY2hpbGRyZW4gb3IgcHJldlByb3AgZXF1YWwgbmV4dFByb3BcblxuICAgICAgaWYgKHByb3BLZXkgPT09IENISUxEUkVOIHx8IHByZXZQcm9wID09PSBuZXh0UHJvcCB8fCBuZXh0UHJvcCA9PSBudWxsICYmIHByZXZQcm9wID09IG51bGwpIHtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9IC8vIFVwZGF0ZSBzdHlsZVxuXG5cbiAgICAgIGlmIChwcm9wS2V5ID09PSBTVFlMRSkge1xuICAgICAgICBpZiAobmV4dFByb3ApIHtcbiAgICAgICAgICAvLyBDbG9uZSBwcm9wZXJ0eVxuICAgICAgICAgIG5leHRQcm9wID0gdGhpcy5fX3ByZXZTdHlsZUNvcHkgPSBhc3NpZ24oe30sIG5leHRQcm9wKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLl9fcHJldlN0eWxlQ29weSA9IG51bGw7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAocHJldlByb3AgIT0gbnVsbCkge1xuICAgICAgICAgIC8vIFVuc2V0IHN0eWxlcyBvbiBgcHJldlByb3BgIGJ1dCBub3Qgb24gYG5leHRQcm9wYC5cbiAgICAgICAgICBmb3IgKHN0eWxlTmFtZSBpbiBwcmV2UHJvcCkge1xuICAgICAgICAgICAgaWYgKCFuZXh0UHJvcCB8fCAhbmV4dFByb3Bbc3R5bGVOYW1lXSAmJiBuZXh0UHJvcFtzdHlsZU5hbWVdICE9PSAwKSB7XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IHN0eWxlVXBkYXRlcyB8fCB7fTtcbiAgICAgICAgICAgICAgc3R5bGVVcGRhdGVzW3N0eWxlTmFtZV0gPSAnJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IC8vIFVwZGF0ZSBzdHlsZXMgdGhhdCBjaGFuZ2VkIHNpbmNlIGBwcmV2UHJvcGAuXG5cblxuICAgICAgICAgIGZvciAoc3R5bGVOYW1lIGluIG5leHRQcm9wKSB7XG4gICAgICAgICAgICBpZiAocHJldlByb3Bbc3R5bGVOYW1lXSAhPT0gbmV4dFByb3Bbc3R5bGVOYW1lXSkge1xuICAgICAgICAgICAgICBzdHlsZVVwZGF0ZXMgPSBzdHlsZVVwZGF0ZXMgfHwge307XG4gICAgICAgICAgICAgIHN0eWxlVXBkYXRlc1tzdHlsZU5hbWVdID0gbmV4dFByb3Bbc3R5bGVOYW1lXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gQXNzaWduIG5leHQgcHJvcCB3aGVuIHByZXYgc3R5bGUgaXMgbnVsbFxuICAgICAgICAgIHN0eWxlVXBkYXRlcyA9IG5leHRQcm9wO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKEVWRU5UX1BSRUZJWF9SRUdFWFAudGVzdChwcm9wS2V5KSkge1xuICAgICAgICAvLyBVcGRhdGUgZXZlbnQgYmluZGluZ1xuICAgICAgICB2YXIgZXZlbnROYW1lID0gcHJvcEtleS5zbGljZSgyKS50b0xvd2VyQ2FzZSgpO1xuXG4gICAgICAgIGlmIChpc0Z1bmN0aW9uKHByZXZQcm9wKSkge1xuICAgICAgICAgIGRyaXZlci5yZW1vdmVFdmVudExpc3RlbmVyKG5hdGl2ZU5vZGUsIGV2ZW50TmFtZSwgcHJldlByb3AsIG5leHRQcm9wcyk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoaXNGdW5jdGlvbihuZXh0UHJvcCkpIHtcbiAgICAgICAgICBkcml2ZXIuYWRkRXZlbnRMaXN0ZW5lcihuYXRpdmVOb2RlLCBldmVudE5hbWUsIG5leHRQcm9wLCBuZXh0UHJvcHMpO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICAvLyBVcGRhdGUgb3RoZXIgcHJvcGVydHlcbiAgICAgICAgaWYgKG5leHRQcm9wICE9IG51bGwpIHtcbiAgICAgICAgICBkcml2ZXIuc2V0QXR0cmlidXRlKG5hdGl2ZU5vZGUsIHByb3BLZXksIG5leHRQcm9wKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBkcml2ZXIucmVtb3ZlQXR0cmlidXRlKG5hdGl2ZU5vZGUsIHByb3BLZXksIHByZXZQcm9wc1twcm9wS2V5XSk7XG4gICAgICAgIH1cblxuICAgICAgICB7XG4gICAgICAgICAgdmFyIF9wYXlsb2FkO1xuXG4gICAgICAgICAgSG9zdC5tZWFzdXJlciAmJiBIb3N0Lm1lYXN1cmVyLnJlY29yZE9wZXJhdGlvbih7XG4gICAgICAgICAgICBpbnN0YW5jZUlEOiB0aGlzLl9tb3VudElELFxuICAgICAgICAgICAgdHlwZTogJ3VwZGF0ZSBhdHRyaWJ1dGUnLFxuICAgICAgICAgICAgcGF5bG9hZDogKF9wYXlsb2FkID0ge30sIF9wYXlsb2FkW3Byb3BLZXldID0gbmV4dFByb3AsIF9wYXlsb2FkKVxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHN0eWxlVXBkYXRlcykge1xuICAgICAge1xuICAgICAgICBIb3N0Lm1lYXN1cmVyICYmIEhvc3QubWVhc3VyZXIucmVjb3JkT3BlcmF0aW9uKHtcbiAgICAgICAgICBpbnN0YW5jZUlEOiB0aGlzLl9tb3VudElELFxuICAgICAgICAgIHR5cGU6ICd1cGRhdGUgc3R5bGUnLFxuICAgICAgICAgIHBheWxvYWQ6IHN0eWxlVXBkYXRlc1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgZHJpdmVyLnNldFN0eWxlKG5hdGl2ZU5vZGUsIHN0eWxlVXBkYXRlcyk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5fX3VwZGF0ZUNoaWxkcmVuID0gZnVuY3Rpb24gX191cGRhdGVDaGlsZHJlbihuZXh0Q2hpbGRyZW5FbGVtZW50cywgY29udGV4dCkge1xuICAgIC8vIHByZXYgcmVuZGVyZWQgY2hpbGRyZW5cbiAgICB2YXIgcHJldkNoaWxkcmVuID0gdGhpcy5fX3JlbmRlcmVkQ2hpbGRyZW47XG4gICAgdmFyIGRyaXZlciA9IEhvc3QuZHJpdmVyO1xuXG4gICAgaWYgKG5leHRDaGlsZHJlbkVsZW1lbnRzID09IG51bGwgJiYgcHJldkNoaWxkcmVuID09IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbmV4dENoaWxkcmVuID0ge307XG5cbiAgICBpZiAobmV4dENoaWxkcmVuRWxlbWVudHMgIT0gbnVsbCkge1xuICAgICAgbmV4dENoaWxkcmVuRWxlbWVudHMgPSB0b0FycmF5KG5leHRDaGlsZHJlbkVsZW1lbnRzKTsgLy8gVXBkYXRlIG5leHQgY2hpbGRyZW4gZWxlbWVudHNcblxuICAgICAgZm9yICh2YXIgaW5kZXggPSAwLCBsZW5ndGggPSBuZXh0Q2hpbGRyZW5FbGVtZW50cy5sZW5ndGg7IGluZGV4IDwgbGVuZ3RoOyBpbmRleCsrKSB7XG4gICAgICAgIHZhciBuZXh0RWxlbWVudCA9IG5leHRDaGlsZHJlbkVsZW1lbnRzW2luZGV4XTtcbiAgICAgICAgdmFyIG5hbWUgPSBnZXRFbGVtZW50S2V5TmFtZShuZXh0Q2hpbGRyZW4sIG5leHRFbGVtZW50LCBpbmRleCk7XG4gICAgICAgIHZhciBwcmV2Q2hpbGQgPSBwcmV2Q2hpbGRyZW4gJiYgcHJldkNoaWxkcmVuW25hbWVdO1xuICAgICAgICB2YXIgcHJldkVsZW1lbnQgPSBwcmV2Q2hpbGQgJiYgcHJldkNoaWxkLl9fY3VycmVudEVsZW1lbnQ7XG4gICAgICAgIHZhciBwcmV2Q29udGV4dCA9IHByZXZDaGlsZCAmJiBwcmV2Q2hpbGQuX2NvbnRleHQ7IC8vIFRyeSB0byB1cGRhdGUgYmV0d2VlbiB0aGUgdHdvIG9mIHNvbWUgbmFtZSB0aGF0IGhhcyBzb21lIGVsZW1lbnQgdHlwZSxcbiAgICAgICAgLy8gYW5kIG1vdmUgY2hpbGQgaW4gbmV4dCBjaGlsZHJlbiBsb29wIGlmIG5lZWRcblxuICAgICAgICBpZiAocHJldkNoaWxkICE9IG51bGwgJiYgc2hvdWxkVXBkYXRlQ29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCkpIHtcbiAgICAgICAgICBpZiAocHJldkVsZW1lbnQgIT09IG5leHRFbGVtZW50IHx8IHByZXZDb250ZXh0ICE9PSBjb250ZXh0KSB7XG4gICAgICAgICAgICAvLyBQYXNzIHRoZSBzYW1lIGNvbnRleHQgd2hlbiB1cGRhdGluZyBjaGlsZHJlblxuICAgICAgICAgICAgcHJldkNoaWxkLl9fdXBkYXRlQ29tcG9uZW50KHByZXZFbGVtZW50LCBuZXh0RWxlbWVudCwgY29udGV4dCwgY29udGV4dCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dENoaWxkcmVuW25hbWVdID0gcHJldkNoaWxkO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIFVubW91bnQgdGhlIHByZXZDaGlsZCB3aGVuIHNvbWUgbmFtZSB3aXRoIG5leHRDaGlsZCBidXQgZGlmZmVyZW50IGVsZW1lbnQgdHlwZSxcbiAgICAgICAgICAvLyBhbmQgbW92ZSBjaGlsZCBub2RlIGluIG5leHQgY2hpbGRyZW4gbG9vcFxuICAgICAgICAgIGlmIChwcmV2Q2hpbGQpIHtcbiAgICAgICAgICAgIHByZXZDaGlsZC5fX3VubW91bnQgPSB0cnVlO1xuICAgICAgICAgIH0gLy8gVGhlIGNoaWxkIG11c3QgYmUgaW5zdGFudGlhdGVkIGJlZm9yZSBpdCdzIG1vdW50ZWQuXG5cblxuICAgICAgICAgIG5leHRDaGlsZHJlbltuYW1lXSA9IGluc3RhbnRpYXRlQ29tcG9uZW50KG5leHRFbGVtZW50KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwYXJlbnQgPSB0aGlzLl9fZ2V0TmF0aXZlTm9kZSgpO1xuXG4gICAgdmFyIGlzRnJhZ21lbnRQYXJlbnQgPSBpc0FycmF5KHBhcmVudCk7XG4gICAgdmFyIHByZXZGaXJzdENoaWxkID0gbnVsbDtcbiAgICB2YXIgcHJldkZpcnN0TmF0aXZlTm9kZSA9IG51bGw7XG4gICAgdmFyIGlzUHJldkZpcnN0RW1wdHlGcmFnbWVudCA9IGZhbHNlO1xuICAgIHZhciBzaG91bGRVbm1vdW50UHJldkZpcnN0Q2hpbGQgPSBmYWxzZTtcbiAgICB2YXIgbGFzdFBsYWNlZE5vZGUgPSBudWxsOyAvLyBEaXJlY3RseSByZW1vdmUgYWxsIGNoaWxkcmVuIGZyb20gY29tcG9uZW50LCBpZiBuZXh0Q2hpbGRyZW4gaXMgZW1wdHkgKG51bGwsIFtdLCAnJykuXG4gICAgLy8gYGRyaXZlci5yZW1vdmVDaGlsZHJlbmAgaXMgb3B0aW9uYWwgZHJpdmVyIHByb3RvY29sLlxuXG4gICAgdmFyIHNob3VsZFJlbW92ZUFsbENoaWxkcmVuID0gQm9vbGVhbihkcml2ZXIucmVtb3ZlQ2hpbGRyZW4gLy8gbmV4dENoaWxkRWxlbWVudHMgPT0gbnVsbCBvciBuZXh0Q2hpbGRFbGVtZW50cyBpcyBlbXB0eVxuICAgICYmIChpc051bGwobmV4dENoaWxkcmVuRWxlbWVudHMpIHx8IG5leHRDaGlsZHJlbkVsZW1lbnRzICYmICFuZXh0Q2hpbGRyZW5FbGVtZW50cy5sZW5ndGgpIC8vIEZyYWdtZW50IHBhcmVudCBjYW4gbm90IHJlbW92ZSBwYXJlbnROb2RlJ3MgYWxsIGNoaWxkIG5vZGVzIGRpcmVjdGx5LlxuICAgICYmICFpc0ZyYWdtZW50UGFyZW50KTsgLy8gVW5tb3VudCBjaGlsZHJlbiB0aGF0IGFyZSBubyBsb25nZXIgcHJlc2VudC5cblxuICAgIGlmIChwcmV2Q2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgZm9yICh2YXIgX25hbWUgaW4gcHJldkNoaWxkcmVuKSB7XG4gICAgICAgIHZhciBfcHJldkNoaWxkID0gcHJldkNoaWxkcmVuW19uYW1lXTtcbiAgICAgICAgdmFyIHNob3VsZFVubW91bnQgPSBfcHJldkNoaWxkLl9fdW5tb3VudCB8fCAhbmV4dENoaWxkcmVuW19uYW1lXTsgLy8gU3RvcmUgb2xkIGZpcnN0IGNoaWxkIHJlZiBmb3IgYXBwZW5kIG5vZGUgYWhlYWQgYW5kIG1heWJlIGRlbGF5IHJlbW92ZSBpdFxuXG4gICAgICAgIGlmICghcHJldkZpcnN0Q2hpbGQpIHtcbiAgICAgICAgICBzaG91bGRVbm1vdW50UHJldkZpcnN0Q2hpbGQgPSBzaG91bGRVbm1vdW50O1xuICAgICAgICAgIHByZXZGaXJzdENoaWxkID0gX3ByZXZDaGlsZDtcbiAgICAgICAgICBwcmV2Rmlyc3ROYXRpdmVOb2RlID0gcHJldkZpcnN0Q2hpbGQuX19nZXROYXRpdmVOb2RlKCk7XG5cbiAgICAgICAgICBpZiAoaXNBcnJheShwcmV2Rmlyc3ROYXRpdmVOb2RlKSkge1xuICAgICAgICAgICAgaXNQcmV2Rmlyc3RFbXB0eUZyYWdtZW50ID0gcHJldkZpcnN0TmF0aXZlTm9kZS5sZW5ndGggPT09IDA7XG4gICAgICAgICAgICBwcmV2Rmlyc3ROYXRpdmVOb2RlID0gcHJldkZpcnN0TmF0aXZlTm9kZVswXTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoc2hvdWxkVW5tb3VudCkge1xuICAgICAgICAgIF9wcmV2Q2hpbGQudW5tb3VudENvbXBvbmVudChzaG91bGRSZW1vdmVBbGxDaGlsZHJlbik7XG4gICAgICAgIH1cbiAgICAgIH0gLy8gMS4gV2hlbiBmcmFnbWVudCBlbWJlZCBmcmFnbWVudCB1cGRhdGVkIGJ1dCBwcmV2IGZyYWdtZW50IGlzIGVtcHR5XG4gICAgICAvLyB0aGF0IG5lZWQgdG8gZ2V0IHRoZSBwcmV2IHNpYmxpbmcgbmF0aXZlIG5vZGUuXG4gICAgICAvLyBsaWtlOiBbIFtdIF0gLT4gWyBbMSwgMl0gXVxuICAgICAgLy8gMi4gV2hlbiBwcmV2IGZyYWdtZW50IGlzIGVtcHR5IGFuZCB1cGRhdGUgdG8gb3RoZXIgdHlwZVxuICAgICAgLy8gbGlrZTogWyBbXSwgMSBdIC0+IFsgMSwgMiBdXG5cblxuICAgICAgaWYgKGlzRnJhZ21lbnRQYXJlbnQgJiYgcGFyZW50Lmxlbmd0aCA9PT0gMCB8fCBpc1ByZXZGaXJzdEVtcHR5RnJhZ21lbnQpIHtcbiAgICAgICAgbGFzdFBsYWNlZE5vZGUgPSBnZXRQcmV2U2libGluZ05hdGl2ZU5vZGUodGhpcyk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG5leHRDaGlsZHJlbiAhPSBudWxsKSB7XG4gICAgICB2YXIgaW5zZXJ0Tm9kZXMgPSBmdW5jdGlvbiBpbnNlcnROb2RlcyhuYXRpdmVOb2RlcywgcGFyZW50Tm9kZSkge1xuICAgICAgICAvLyBUaGUgbmF0aXZlTm9kZXMgbWF5YmUgZnJhZ21lbnQsIHNvIGNvbnZlcnQgdG8gYXJyYXkgdHlwZVxuICAgICAgICBuYXRpdmVOb2RlcyA9IHRvQXJyYXkobmF0aXZlTm9kZXMpO1xuXG4gICAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gbmF0aXZlTm9kZXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgICAgICAgaWYgKGxhc3RQbGFjZWROb2RlKSB7XG4gICAgICAgICAgICAvLyBTaG91bGQgcmV2ZXJzZSBvcmRlciB3aGVuIGluc2VydCBuZXcgY2hpbGQgYWZ0ZXIgbGFzdFBsYWNlZE5vZGU6XG4gICAgICAgICAgICAvLyBbbGFzdFBsYWNlZE5vZGUsICpuZXdDaGlsZDEsICpuZXdDaGlsZDJdLFxuICAgICAgICAgICAgLy8gQW5kIGlmIHByZXYgaXMgZW1wdHkgZnJhZ21lbnQsIGxhc3RQbGFjZWROb2RlIGlzIHRoZSBwcmV2U2libGluZ05hdGl2ZU5vZGUgZm91bmQuXG4gICAgICAgICAgICBkcml2ZXIuaW5zZXJ0QWZ0ZXIobmF0aXZlTm9kZXNbbCAtIDEgLSBpXSwgbGFzdFBsYWNlZE5vZGUpO1xuICAgICAgICAgIH0gZWxzZSBpZiAocHJldkZpcnN0TmF0aXZlTm9kZSkge1xuICAgICAgICAgICAgLy8gWypuZXdDaGlsZDEsICpuZXdDaGlsZDIsIHByZXZGaXJzdE5hdGl2ZU5vZGVdXG4gICAgICAgICAgICBkcml2ZXIuaW5zZXJ0QmVmb3JlKG5hdGl2ZU5vZGVzW2ldLCBwcmV2Rmlyc3ROYXRpdmVOb2RlKTtcbiAgICAgICAgICB9IGVsc2UgaWYgKHBhcmVudE5vZGUpIHtcbiAgICAgICAgICAgIC8vIFsqbmV3Q2hpbGQxLCAqbmV3Q2hpbGQyXVxuICAgICAgICAgICAgZHJpdmVyLmFwcGVuZENoaWxkKG5hdGl2ZU5vZGVzW2ldLCBwYXJlbnROb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH07XG5cbiAgICAgIC8vIGBuZXh0SW5kZXhgIHdpbGwgaW5jcmVtZW50IGZvciBlYWNoIGNoaWxkIGluIGBuZXh0Q2hpbGRyZW5gXG4gICAgICB2YXIgbmV4dEluZGV4ID0gMDtcblxuICAgICAgZm9yICh2YXIgX25hbWUyIGluIG5leHRDaGlsZHJlbikge1xuICAgICAgICB2YXIgbmV4dENoaWxkID0gbmV4dENoaWxkcmVuW19uYW1lMl07XG5cbiAgICAgICAgdmFyIF9wcmV2Q2hpbGQyID0gcHJldkNoaWxkcmVuICYmIHByZXZDaGlsZHJlbltfbmFtZTJdOyAvLyBUcnkgdG8gbW92ZSB0aGUgc29tZSBrZXkgcHJldkNoaWxkIGJ1dCBjdXJyZW50IG5vdCBhdCB0aGUgc29tZSBwb3NpdGlvblxuXG5cbiAgICAgICAgaWYgKF9wcmV2Q2hpbGQyID09PSBuZXh0Q2hpbGQpIHtcbiAgICAgICAgICB2YXIgcHJldkNoaWxkTmF0aXZlTm9kZSA9IF9wcmV2Q2hpbGQyLl9fZ2V0TmF0aXZlTm9kZSgpO1xuXG4gICAgICAgICAgaWYgKF9wcmV2Q2hpbGQyLl9fbW91bnRJbmRleCAhPT0gbmV4dEluZGV4KSB7XG4gICAgICAgICAgICBpbnNlcnROb2RlcyhwcmV2Q2hpbGROYXRpdmVOb2RlKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgLy8gTW91bnQgbmV4dENoaWxkIHRoYXQgaW4gcHJldkNoaWxkcmVuIHRoZXJlIGhhcyBubyBzb21lIG5hbWVcbiAgICAgICAgICAvLyBGcmFnbWVudCBleHRlbmRlZCBuYXRpdmUgY29tcG9uZW50LCBzbyBpZiBwYXJlbnQgaXMgZnJhZ21lbnQgc2hvdWxkIGdldCB0aGlzLl9wYXJlbnRcbiAgICAgICAgICBpZiAoaXNGcmFnbWVudFBhcmVudCkge1xuICAgICAgICAgICAgcGFyZW50ID0gdGhpcy5fcGFyZW50O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIG5leHRDaGlsZC5fX21vdW50Q29tcG9uZW50KHBhcmVudCwgdGhpc1tJTlNUQU5DRV0sIGNvbnRleHQsIGluc2VydE5vZGVzIC8vIEluc2VydCBub2RlcyBtb3VudGVyXG4gICAgICAgICAgKTtcbiAgICAgICAgfSAvLyBVcGRhdGUgdG8gdGhlIGxhdGVzdCBtb3VudCBvcmRlclxuXG5cbiAgICAgICAgbmV4dENoaWxkLl9fbW91bnRJbmRleCA9IG5leHRJbmRleCsrOyAvLyBHZXQgdGhlIGxhc3QgY2hpbGRcblxuICAgICAgICBsYXN0UGxhY2VkTm9kZSA9IG5leHRDaGlsZC5fX2dldE5hdGl2ZU5vZGUoKTtcblxuICAgICAgICBpZiAoaXNBcnJheShsYXN0UGxhY2VkTm9kZSkpIHtcbiAgICAgICAgICBsYXN0UGxhY2VkTm9kZSA9IGxhc3RQbGFjZWROb2RlW2xhc3RQbGFjZWROb2RlLmxlbmd0aCAtIDFdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFVubW91bnRQcmV2Rmlyc3RDaGlsZCkge1xuICAgICAgcHJldkZpcnN0Q2hpbGQudW5tb3VudENvbXBvbmVudChzaG91bGRSZW1vdmVBbGxDaGlsZHJlbik7XG4gICAgfVxuXG4gICAgaWYgKHNob3VsZFJlbW92ZUFsbENoaWxkcmVuKSB7XG4gICAgICBkcml2ZXIucmVtb3ZlQ2hpbGRyZW4odGhpc1tOQVRJVkVfTk9ERV0pO1xuICAgIH1cblxuICAgIHRoaXMuX19yZW5kZXJlZENoaWxkcmVuID0gbmV4dENoaWxkcmVuO1xuICB9O1xuXG4gIF9wcm90by5fX2NyZWF0ZU5hdGl2ZU5vZGUgPSBmdW5jdGlvbiBfX2NyZWF0ZU5hdGl2ZU5vZGUoKSB7XG4gICAgdmFyIGluc3RhbmNlID0gdGhpc1tJTlNUQU5DRV07XG4gICAgdmFyIG5hdGl2ZU5vZGUgPSBIb3N0LmRyaXZlci5jcmVhdGVFbGVtZW50KGluc3RhbmNlLnR5cGUsIGluc3RhbmNlLnByb3BzLCB0aGlzKTtcbiAgICBJbnN0YW5jZS5zZXQobmF0aXZlTm9kZSwgaW5zdGFuY2UpO1xuICAgIHJldHVybiBuYXRpdmVOb2RlO1xuICB9O1xuXG4gIHJldHVybiBOYXRpdmVDb21wb25lbnQ7XG59KEJhc2VDb21wb25lbnQpO1xuXG4vKipcbiAqIFRleHQgQ29tcG9uZW50XG4gKi9cblxudmFyIFRleHRDb21wb25lbnQgPSAvKiNfX1BVUkVfXyovZnVuY3Rpb24gKF9CYXNlQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0c0xvb3NlKFRleHRDb21wb25lbnQsIF9CYXNlQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBUZXh0Q29tcG9uZW50KCkge1xuICAgIHJldHVybiBfQmFzZUNvbXBvbmVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gVGV4dENvbXBvbmVudC5wcm90b3R5cGU7XG5cbiAgX3Byb3RvLl9fdXBkYXRlQ29tcG9uZW50ID0gZnVuY3Rpb24gX191cGRhdGVDb21wb25lbnQocHJldkVsZW1lbnQsIG5leHRFbGVtZW50LCBjb250ZXh0KSB7XG4gICAgbmV4dEVsZW1lbnQgPSAnJyArIG5leHRFbGVtZW50OyAvLyBJZiB0ZXh0IGlzIHNvbWUgdmFsdWUgdGhhdCBkbyBub3QgdXBkYXRlIGV2ZW4gdGhlcmUgbnVtYmVyIDEgYW5kIHN0cmluZyBcIjFcIlxuXG4gICAgaWYgKHByZXZFbGVtZW50ICE9PSBuZXh0RWxlbWVudCkge1xuICAgICAgLy8gUmVwbGFjZSBjdXJyZW50IGVsZW1lbnRcbiAgICAgIHRoaXMuX19jdXJyZW50RWxlbWVudCA9IG5leHRFbGVtZW50O1xuICAgICAgSG9zdC5kcml2ZXIudXBkYXRlVGV4dCh0aGlzLl9fZ2V0TmF0aXZlTm9kZSgpLCBuZXh0RWxlbWVudCk7XG5cbiAgICAgIHtcbiAgICAgICAgdGhpcy5fc3RyaW5nVGV4dCA9IHRoaXMuX19jdXJyZW50RWxlbWVudDtcbiAgICAgICAgSG9zdC5yZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQodGhpcyk7XG4gICAgICB9XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5fX2NyZWF0ZU5hdGl2ZU5vZGUgPSBmdW5jdGlvbiBfX2NyZWF0ZU5hdGl2ZU5vZGUoKSB7XG4gICAge1xuICAgICAgdGhpcy5fc3RyaW5nVGV4dCA9IHRoaXMuX19jdXJyZW50RWxlbWVudDtcbiAgICB9XG5cbiAgICByZXR1cm4gSG9zdC5kcml2ZXIuY3JlYXRlVGV4dCh0aGlzLl9fY3VycmVudEVsZW1lbnQsIHRoaXMpO1xuICB9O1xuXG4gIHJldHVybiBUZXh0Q29tcG9uZW50O1xufShCYXNlQ29tcG9uZW50KTtcblxudmFyIFJFX1JFTkRFUl9MSU1JVCA9IDI0O1xuLyoqXG4gKiBGdW5jdGlvbmFsIFJlYWN0aXZlIENvbXBvbmVudCBDbGFzcyBXcmFwcGVyXG4gKi9cblxudmFyIFJlYWN0aXZlQ29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0c0xvb3NlKFJlYWN0aXZlQ29tcG9uZW50LCBfQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBSZWFjdGl2ZUNvbXBvbmVudChwdXJlUmVuZGVyLCByZWYpIHtcbiAgICB2YXIgX3RoaXM7XG5cbiAgICBfdGhpcyA9IF9Db21wb25lbnQuY2FsbCh0aGlzKSB8fCB0aGlzOyAvLyBNYXJrZWQgUmVhY3RpdmVDb21wb25lbnQuXG5cbiAgICBfdGhpcy5fX2lzUmVhY3RpdmVDb21wb25lbnQgPSB0cnVlOyAvLyBBIHB1cmUgZnVuY3Rpb25cblxuICAgIF90aGlzLl9fcmVuZGVyID0gcHVyZVJlbmRlcjtcbiAgICBfdGhpcy5fX2hvb2tJRCA9IDA7IC8vIE51bWJlciBvZiByZXJlbmRlcnNcblxuICAgIF90aGlzLl9fcmVSZW5kZXJzID0gMDtcbiAgICBfdGhpcy5fX2hvb2tzID0ge307IC8vIElzIHJlbmRlciBzY2hlZHVsZWRcblxuICAgIF90aGlzLl9faXNTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICBfdGhpcy5fX3Nob3VsZFVwZGF0ZSA9IGZhbHNlO1xuICAgIF90aGlzLl9fY2hpbGRyZW4gPSBudWxsO1xuICAgIF90aGlzLl9fY29udGV4dHMgPSB7fTsgLy8gSGFuZGxlcyBzdG9yZVxuXG4gICAgX3RoaXMuZGlkTW91bnQgPSBbXTtcbiAgICBfdGhpcy5kaWRVcGRhdGUgPSBbXTtcbiAgICBfdGhpcy53aWxsVW5tb3VudCA9IFtdO1xuICAgIF90aGlzLnN0YXRlID0gRU1QVFlfT0JKRUNUO1xuXG4gICAgaWYgKHB1cmVSZW5kZXIuX2ZvcndhcmRSZWYpIHtcbiAgICAgIF90aGlzLl9fcHJldkZvcndhcmRSZWYgPSBfdGhpcy5fZm9yd2FyZFJlZiA9IHJlZjtcbiAgICB9XG5cbiAgICB2YXIgY29tcGFyZXMgPSBwdXJlUmVuZGVyLl9fY29tcGFyZXM7XG5cbiAgICBpZiAoY29tcGFyZXMpIHtcbiAgICAgIF90aGlzLnNob3VsZENvbXBvbmVudFVwZGF0ZSA9IGZ1bmN0aW9uIChuZXh0UHJvcHMpIHtcbiAgICAgICAgLy8gUHJvY2VzcyBjb21wb3NlZCBjb21wYXJlXG4gICAgICAgIHZhciBhcmVQcm9wc0VxdWFsID0gdHJ1ZTsgLy8gQ29tcGFyZSBwdXNoIGluIGFuZCBwb3Agb3V0XG5cbiAgICAgICAgZm9yICh2YXIgaSA9IGNvbXBhcmVzLmxlbmd0aCAtIDE7IGkgPiAtMTsgaS0tKSB7XG4gICAgICAgICAgaWYgKGFyZVByb3BzRXF1YWwgPSBjb21wYXJlc1tpXShfdGhpcy5wcm9wcywgbmV4dFByb3BzKSkge1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICFhcmVQcm9wc0VxdWFsIHx8IF90aGlzLl9fcHJldkZvcndhcmRSZWYgIT09IF90aGlzLl9mb3J3YXJkUmVmO1xuICAgICAgfTtcbiAgICB9XG5cbiAgICByZXR1cm4gX3RoaXM7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gUmVhY3RpdmVDb21wb25lbnQucHJvdG90eXBlO1xuXG4gIF9wcm90by5nZXRIb29rcyA9IGZ1bmN0aW9uIGdldEhvb2tzKCkge1xuICAgIHJldHVybiB0aGlzLl9faG9va3M7XG4gIH07XG5cbiAgX3Byb3RvLmdldEhvb2tJRCA9IGZ1bmN0aW9uIGdldEhvb2tJRCgpIHtcbiAgICByZXR1cm4gKyt0aGlzLl9faG9va0lEO1xuICB9O1xuXG4gIF9wcm90by51c2VDb250ZXh0ID0gZnVuY3Rpb24gdXNlQ29udGV4dChjb250ZXh0KSB7XG4gICAgdmFyIF90aGlzMiA9IHRoaXM7XG5cbiAgICB2YXIgY29udGV4dElEID0gY29udGV4dC5fY29udGV4dElEO1xuICAgIHZhciBjb250ZXh0SXRlbSA9IHRoaXMuX19jb250ZXh0c1tjb250ZXh0SURdO1xuXG4gICAgaWYgKCFjb250ZXh0SXRlbSkge1xuICAgICAgdmFyIHByb3ZpZGVyID0gY29udGV4dC5fX2dldE5lYXJlc3RQYXJlbnRQcm92aWRlcih0aGlzKTtcblxuICAgICAgY29udGV4dEl0ZW0gPSB0aGlzLl9fY29udGV4dHNbY29udGV4dElEXSA9IHtcbiAgICAgICAgX19wcm92aWRlcjogcHJvdmlkZXJcbiAgICAgIH07XG5cbiAgICAgIGlmIChwcm92aWRlcikge1xuICAgICAgICB2YXIgaGFuZGxlQ29udGV4dENoYW5nZSA9IGZ1bmN0aW9uIGhhbmRsZUNvbnRleHRDaGFuZ2UodmFsdWUpIHtcbiAgICAgICAgICAvLyBDaGVjayB0aGUgbGFzdCB2YWx1ZSB0aGF0IG1heWJlIGFscmVhZCByZXJlbmRlclxuICAgICAgICAgIC8vIGF2b2lkIHJlcmVuZGVyIHR3aWNlIHdoZW4gcHJvdmlkZXIgdmFsdWUgY2hhbmdlZFxuICAgICAgICAgIGlmIChjb250ZXh0SXRlbS5fX2xhc3RWYWx1ZSAhPT0gdmFsdWUpIHtcbiAgICAgICAgICAgIF90aGlzMi5fX3Nob3VsZFVwZGF0ZSA9IHRydWU7XG5cbiAgICAgICAgICAgIF90aGlzMi5fX3VwZGF0ZSgpO1xuICAgICAgICAgIH1cbiAgICAgICAgfTtcblxuICAgICAgICBwcm92aWRlci5fX29uKGhhbmRsZUNvbnRleHRDaGFuZ2UpO1xuXG4gICAgICAgIHRoaXMud2lsbFVubW91bnQucHVzaChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmV0dXJuIHByb3ZpZGVyLl9fb2ZmKGhhbmRsZUNvbnRleHRDaGFuZ2UpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gY29udGV4dEl0ZW0uX19sYXN0VmFsdWUgPSBjb250ZXh0SXRlbS5fX3Byb3ZpZGVyID8gY29udGV4dEl0ZW0uX19wcm92aWRlci5nZXRWYWx1ZSgpIDogY29udGV4dC5fZGVmYXVsdFZhbHVlO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnRXaWxsTW91bnQgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsTW91bnQoKSB7XG4gICAgdGhpcy5fX3Nob3VsZFVwZGF0ZSA9IHRydWU7XG4gIH07XG5cbiAgX3Byb3RvLmNvbXBvbmVudERpZE1vdW50ID0gZnVuY3Rpb24gY29tcG9uZW50RGlkTW91bnQoKSB7XG4gICAgaW52b2tlRnVuY3Rpb25zV2l0aENvbnRleHQodGhpcy5kaWRNb3VudCk7XG4gIH07XG5cbiAgX3Byb3RvLmNvbXBvbmVudFdpbGxSZWNlaXZlUHJvcHMgPSBmdW5jdGlvbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKCkge1xuICAgIHRoaXMuX19zaG91bGRVcGRhdGUgPSB0cnVlO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnREaWRVcGRhdGUgPSBmdW5jdGlvbiBjb21wb25lbnREaWRVcGRhdGUoKSB7XG4gICAgaW52b2tlRnVuY3Rpb25zV2l0aENvbnRleHQodGhpcy5kaWRVcGRhdGUpO1xuICB9O1xuXG4gIF9wcm90by5jb21wb25lbnRXaWxsVW5tb3VudCA9IGZ1bmN0aW9uIGNvbXBvbmVudFdpbGxVbm1vdW50KCkge1xuICAgIGludm9rZUZ1bmN0aW9uc1dpdGhDb250ZXh0KHRoaXMud2lsbFVubW91bnQpO1xuICB9O1xuXG4gIF9wcm90by5fX3VwZGF0ZSA9IGZ1bmN0aW9uIF9fdXBkYXRlKCkge1xuICAgIHRoaXMuc2V0U3RhdGUoRU1QVFlfT0JKRUNUKTtcbiAgfTtcblxuICBfcHJvdG8ucmVuZGVyID0gZnVuY3Rpb24gcmVuZGVyKCkge1xuICAgIHtcbiAgICAgIEhvc3QubWVhc3VyZXIgJiYgSG9zdC5tZWFzdXJlci5iZWZvcmVSZW5kZXIoKTtcbiAgICB9XG5cbiAgICB0aGlzLl9faG9va0lEID0gMDtcbiAgICB0aGlzLl9fcmVSZW5kZXJzID0gMDtcbiAgICB0aGlzLl9faXNTY2hlZHVsZWQgPSBmYWxzZTtcblxuICAgIHZhciBjaGlsZHJlbiA9IHRoaXMuX19yZW5kZXIodGhpcy5wcm9wcywgdGhpcy5fZm9yd2FyZFJlZiA/IHRoaXMuX2ZvcndhcmRSZWYgOiB0aGlzLmNvbnRleHQpO1xuXG4gICAgd2hpbGUgKHRoaXMuX19pc1NjaGVkdWxlZCkge1xuICAgICAgdGhpcy5fX3JlUmVuZGVycysrO1xuXG4gICAgICBpZiAodGhpcy5fX3JlUmVuZGVycyA+IFJFX1JFTkRFUl9MSU1JVCkge1xuICAgICAgICB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdUb28gbWFueSByZS1yZW5kZXJzLCB0aGUgbnVtYmVyIG9mIHJlbmRlcnMgaXMgbGltaXRlZCB0byBwcmV2ZW50IGFuIGluZmluaXRlIGxvb3AuJyk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgdGhpcy5fX2hvb2tJRCA9IDA7XG4gICAgICB0aGlzLl9faXNTY2hlZHVsZWQgPSBmYWxzZTtcbiAgICAgIGNoaWxkcmVuID0gdGhpcy5fX3JlbmRlcih0aGlzLnByb3BzLCB0aGlzLl9mb3J3YXJkUmVmID8gdGhpcy5fZm9yd2FyZFJlZiA6IHRoaXMuY29udGV4dCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuX19zaG91bGRVcGRhdGUpIHtcbiAgICAgIHRoaXMuX19jaGlsZHJlbiA9IGNoaWxkcmVuO1xuICAgICAgdGhpcy5fX3Nob3VsZFVwZGF0ZSA9IGZhbHNlO1xuICAgIH1cblxuICAgIHJldHVybiB0aGlzLl9fY2hpbGRyZW47XG4gIH07XG5cbiAgcmV0dXJuIFJlYWN0aXZlQ29tcG9uZW50O1xufShDb21wb25lbnQpO1xuXG52YXIgZGlydHlDb21wb25lbnRzID0gW107XG5cbmZ1bmN0aW9uIGdldFBlbmRpbmdDYWxsYmFja3MoaW50ZXJuYWwpIHtcbiAgcmV0dXJuIGludGVybmFsLl9fcGVuZGluZ0NhbGxiYWNrcztcbn1cblxuZnVuY3Rpb24gc2V0UGVuZGluZ0NhbGxiYWNrcyhpbnRlcm5hbCwgY2FsbGJhY2tzKSB7XG4gIHJldHVybiBpbnRlcm5hbC5fX3BlbmRpbmdDYWxsYmFja3MgPSBjYWxsYmFja3M7XG59XG5cbmZ1bmN0aW9uIGdldFBlbmRpbmdTdGF0ZVF1ZXVlKGludGVybmFsKSB7XG4gIHJldHVybiBpbnRlcm5hbC5fX3BlbmRpbmdTdGF0ZVF1ZXVlO1xufVxuXG5mdW5jdGlvbiBzZXRQZW5kaW5nU3RhdGVRdWV1ZShpbnRlcm5hbCwgcGFydGlhbFN0YXRlKSB7XG4gIHJldHVybiBpbnRlcm5hbC5fX3BlbmRpbmdTdGF0ZVF1ZXVlID0gcGFydGlhbFN0YXRlO1xufVxuXG5mdW5jdGlvbiBlbnF1ZXVlQ2FsbGJhY2soaW50ZXJuYWwsIGNhbGxiYWNrKSB7XG4gIHZhciBjYWxsYmFja1F1ZXVlID0gZ2V0UGVuZGluZ0NhbGxiYWNrcyhpbnRlcm5hbCkgfHwgc2V0UGVuZGluZ0NhbGxiYWNrcyhpbnRlcm5hbCwgW10pO1xuICBjYWxsYmFja1F1ZXVlLnB1c2goY2FsbGJhY2spO1xufVxuXG5mdW5jdGlvbiBlbnF1ZXVlU3RhdGUoaW50ZXJuYWwsIHBhcnRpYWxTdGF0ZSkge1xuICB2YXIgc3RhdGVRdWV1ZSA9IGdldFBlbmRpbmdTdGF0ZVF1ZXVlKGludGVybmFsKSB8fCBzZXRQZW5kaW5nU3RhdGVRdWV1ZShpbnRlcm5hbCwgW10pO1xuICBzdGF0ZVF1ZXVlLnB1c2gocGFydGlhbFN0YXRlKTtcbn1cblxuZnVuY3Rpb24gcnVuVXBkYXRlKGNvbXBvbmVudCkge1xuICB2YXIgaW50ZXJuYWwgPSBjb21wb25lbnRbSU5URVJOQUxdO1xuXG4gIGlmICghaW50ZXJuYWwpIHtcbiAgICByZXR1cm47XG4gIH1cblxuICBIb3N0Ll9faXNVcGRhdGluZyA9IHRydWU7XG4gIHZhciBwcmV2RWxlbWVudCA9IGludGVybmFsLl9fY3VycmVudEVsZW1lbnQ7XG4gIHZhciBwcmV2VW5tYXNrZWRDb250ZXh0ID0gaW50ZXJuYWwuX2NvbnRleHQ7XG4gIHZhciBuZXh0VW5tYXNrZWRDb250ZXh0ID0gaW50ZXJuYWwuX19wZW5kZGluZ0NvbnRleHQgfHwgcHJldlVubWFza2VkQ29udGV4dDtcbiAgaW50ZXJuYWwuX19wZW5kZGluZ0NvbnRleHQgPSB1bmRlZmluZWQ7XG5cbiAgaWYgKGdldFBlbmRpbmdTdGF0ZVF1ZXVlKGludGVybmFsKSB8fCBpbnRlcm5hbC5fX2lzUGVuZGluZ0ZvcmNlVXBkYXRlKSB7XG4gICAgaW50ZXJuYWwuX191cGRhdGVDb21wb25lbnQocHJldkVsZW1lbnQsIHByZXZFbGVtZW50LCBwcmV2VW5tYXNrZWRDb250ZXh0LCBuZXh0VW5tYXNrZWRDb250ZXh0KTtcblxuICAgIGZsdXNoTGF5b3V0KCk7XG4gIH1cblxuICBIb3N0Ll9faXNVcGRhdGluZyA9IGZhbHNlO1xufVxuXG5mdW5jdGlvbiBtb3VudE9yZGVyQ29tcGFyYXRvcihjMSwgYzIpIHtcbiAgcmV0dXJuIGMyW0lOVEVSTkFMXS5fbW91bnRJRCAtIGMxW0lOVEVSTkFMXS5fbW91bnRJRDtcbn1cblxuZnVuY3Rpb24gcGVyZm9ybVVwZGF0ZSgpIHtcbiAgaWYgKEhvc3QuX19pc1VwZGF0aW5nKSB7XG4gICAgcmV0dXJuIHNjaGVkdWxlKHBlcmZvcm1VcGRhdGUpO1xuICB9XG5cbiAgdmFyIGNvbXBvbmVudDtcbiAgdmFyIGRpcnRpZXMgPSBkaXJ0eUNvbXBvbmVudHM7XG5cbiAgaWYgKGRpcnRpZXMubGVuZ3RoID4gMCkge1xuICAgIC8vIEJlZm9yZSBuZXh0IHJlbmRlciwgd2Ugd2lsbCBmbHVzaCBhbGwgdGhlIGVmZmVjdHNcbiAgICBmbHVzaEVmZmVjdCgpO1xuICAgIGRpcnR5Q29tcG9uZW50cyA9IFtdOyAvLyBTaW5jZSByZWNvbmNpbGluZyBhIGNvbXBvbmVudCBoaWdoZXIgaW4gdGhlIG93bmVyIGhpZXJhcmNoeSB1c3VhbGx5IChub3RcbiAgICAvLyBhbHdheXMgLS0gc2VlIHNob3VsZENvbXBvbmVudFVwZGF0ZSgpKSB3aWxsIHJlY29uY2lsZSBjaGlsZHJlbiwgcmVjb25jaWxlXG4gICAgLy8gdGhlbSBiZWZvcmUgdGhlaXIgY2hpbGRyZW4gYnkgc29ydGluZyB0aGUgYXJyYXkuXG5cbiAgICBpZiAoZGlydGllcy5sZW5ndGggPiAxKSB7XG4gICAgICBkaXJ0aWVzID0gZGlydGllcy5maWx0ZXIoZnVuY3Rpb24gKGMpIHtcbiAgICAgICAgcmV0dXJuICEhY1tJTlRFUk5BTF07XG4gICAgICB9KS5zb3J0KG1vdW50T3JkZXJDb21wYXJhdG9yKTtcbiAgICB9XG5cbiAgICB3aGlsZSAoY29tcG9uZW50ID0gZGlydGllcy5wb3AoKSkge1xuICAgICAgcnVuVXBkYXRlKGNvbXBvbmVudCk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNjaGVkdWxlVXBkYXRlKGNvbXBvbmVudCwgc2hvdWxkQXN5bmNVcGRhdGUpIHtcbiAgaWYgKGRpcnR5Q29tcG9uZW50cy5pbmRleE9mKGNvbXBvbmVudCkgPCAwKSB7XG4gICAgZGlydHlDb21wb25lbnRzLnB1c2goY29tcG9uZW50KTtcbiAgfVxuXG4gIGlmIChzaG91bGRBc3luY1VwZGF0ZSkge1xuICAgIC8vIElmIGhhdmUgYmVlbiBzY2hlZHVsZWQgYmVmb3JlLCBkbyBub3QgbmVlZCBzY2hlZHVsZSBhZ2FpblxuICAgIGlmIChkaXJ0eUNvbXBvbmVudHMubGVuZ3RoID4gMSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHNjaGVkdWxlKHBlcmZvcm1VcGRhdGUpO1xuICB9IGVsc2Uge1xuICAgIHBlcmZvcm1VcGRhdGUoKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXF1ZXN0VXBkYXRlKGNvbXBvbmVudCwgcGFydGlhbFN0YXRlLCBjYWxsYmFjaykge1xuICB2YXIgaW50ZXJuYWwgPSBjb21wb25lbnRbSU5URVJOQUxdO1xuXG4gIGlmICghaW50ZXJuYWwpIHtcbiAgICB7XG4gICAgICAvLyBCbG9jayBvdGhlciByZW5kZXJcbiAgICAgIEhvc3QuX19pc1VwZGF0aW5nID0gZmFsc2U7XG4gICAgICBjb25zb2xlLmVycm9yKFwiV2FybmluZzogQ2FuJ3QgcGVyZm9ybSBhIFJheCBzdGF0ZSB1cGRhdGUgb24gYW4gdW5tb3VudGVkIGNvbXBvbmVudC4gVGhpcyBcIiArICdpcyBhIG5vLW9wLCBidXQgaXQgaW5kaWNhdGVzIGEgbWVtb3J5IGxlYWsgaW4geW91ciBhcHBsaWNhdGlvbi4gVG8gJyArICdmaXgsIGNhbmNlbCBhbGwgc3Vic2NyaXB0aW9ucyBhbmQgYXN5bmNocm9ub3VzIHRhc2tzIGluICVzLicsIGNvbXBvbmVudC5fX2lzUmVhY3RpdmVDb21wb25lbnQgPyAnYSB1c2VFZmZlY3QgY2xlYW51cCBmdW5jdGlvbicgOiAndGhlIGNvbXBvbmVudFdpbGxVbm1vdW50IG1ldGhvZCcpO1xuICAgIH1cblxuICAgIHJldHVybjtcbiAgfVxuXG4gIGlmIChjYWxsYmFjaykge1xuICAgIGVucXVldWVDYWxsYmFjayhpbnRlcm5hbCwgY2FsbGJhY2spO1xuICB9XG5cbiAgdmFyIGhhc0NvbXBvbmVudFJlbmRlcmVkID0gaW50ZXJuYWxbUkVOREVSRURfQ09NUE9ORU5UXTsgLy8gc2V0U3RhdGVcblxuICBpZiAocGFydGlhbFN0YXRlKSB7XG4gICAgLy8gRnVuY3Rpb24gQ29tcG9uZW50IHNob3VsZCBmb3JjZSB1cGRhdGVcbiAgICBpZiAoY29tcG9uZW50Ll9faXNSZWFjdGl2ZUNvbXBvbmVudCkge1xuICAgICAgaW50ZXJuYWwuX19pc1BlbmRpbmdGb3JjZVVwZGF0ZSA9IHRydWU7XG4gICAgfVxuXG4gICAgZW5xdWV1ZVN0YXRlKGludGVybmFsLCBwYXJ0aWFsU3RhdGUpOyAvLyBTdGF0ZSBwZW5kaW5nIHdoZW4gcmVxdWVzdCB1cGRhdGUgaW4gY29tcG9uZW50V2lsbE1vdW50IGFuZCBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzLFxuICAgIC8vIGlzUGVuZGluZ1N0YXRlIGRlZmF1bHQgaXMgZmFsc2UgdmFsdWUgKGZhbHNlIG9yIG51bGwpIGFuZCBzZXQgdG8gdHJ1ZSBhZnRlciBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzLFxuICAgIC8vIF9yZW5kZXJlZENvbXBvbmVudCBpcyBudWxsIHdoZW4gY29tcG9uZW50V2lsbE1vdW50IGV4ZWMuXG5cbiAgICBpZiAoIWludGVybmFsLl9faXNQZW5kaW5nU3RhdGUgJiYgaGFzQ29tcG9uZW50UmVuZGVyZWQpIHtcbiAgICAgIHNjaGVkdWxlVXBkYXRlKGNvbXBvbmVudCwgdHJ1ZSk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIC8vIGZvcmNlVXBkYXRlXG4gICAgaW50ZXJuYWwuX19pc1BlbmRpbmdGb3JjZVVwZGF0ZSA9IHRydWU7XG5cbiAgICBpZiAoaGFzQ29tcG9uZW50UmVuZGVyZWQpIHtcbiAgICAgIHNjaGVkdWxlVXBkYXRlKGNvbXBvbmVudCk7XG4gICAgfVxuICB9XG59XG5cbnZhciBVcGRhdGVyID0ge1xuICBzZXRTdGF0ZTogZnVuY3Rpb24gc2V0U3RhdGUoY29tcG9uZW50LCBwYXJ0aWFsU3RhdGUsIGNhbGxiYWNrKSB7XG4gICAgLy8gRmx1c2ggYWxsIGVmZmVjdHMgZmlyc3QgYmVmb3JlIHVwZGF0ZSBzdGF0ZVxuICAgIGlmICghSG9zdC5fX2lzVXBkYXRpbmcpIHtcbiAgICAgIGZsdXNoRWZmZWN0KCk7XG4gICAgfVxuXG4gICAgcmVxdWVzdFVwZGF0ZShjb21wb25lbnQsIHBhcnRpYWxTdGF0ZSwgY2FsbGJhY2spO1xuICB9LFxuICBmb3JjZVVwZGF0ZTogZnVuY3Rpb24gZm9yY2VVcGRhdGUoY29tcG9uZW50LCBjYWxsYmFjaykge1xuICAgIHJlcXVlc3RVcGRhdGUoY29tcG9uZW50LCBudWxsLCBjYWxsYmFjayk7XG4gIH1cbn07XG5cbmZ1bmN0aW9uIHBlcmZvcm1JblNhbmRib3goZm4sIGluc3RhbmNlLCBjYWxsYmFjaykge1xuICB0cnkge1xuICAgIHJldHVybiBmbigpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICBjYWxsYmFjayhlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgaGFuZGxlRXJyb3IoaW5zdGFuY2UsIGUpO1xuICAgIH1cbiAgfVxufVxuLyoqXG4gKiBBIGNsYXNzIGNvbXBvbmVudCBiZWNvbWVzIGFuIGVycm9yIGJvdW5kYXJ5IGlmXG4gKiBpdCBkZWZpbmVzIGVpdGhlciAob3IgYm90aCkgb2YgdGhlIGxpZmVjeWNsZSBtZXRob2RzIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoKSBvciBjb21wb25lbnREaWRDYXRjaCgpLlxuICogVXNlIHN0YXRpYyBnZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IoKSB0byByZW5kZXIgYSBmYWxsYmFjayBVSSBhZnRlciBhbiBlcnJvciBoYXMgYmVlbiB0aHJvd24uXG4gKiBVc2UgY29tcG9uZW50RGlkQ2F0Y2goKSB0byBsb2cgZXJyb3IgaW5mb3JtYXRpb24uXG4gKiBAcGFyYW0geyp9IGluc3RhbmNlXG4gKiBAcGFyYW0geyp9IGVycm9yXG4gKi9cblxuZnVuY3Rpb24gaGFuZGxlRXJyb3IoaW5zdGFuY2UsIGVycm9yKSB7XG4gIHZhciBib3VuZGFyeSA9IGdldE5lYXJlc3RQYXJlbnQoaW5zdGFuY2UsIGZ1bmN0aW9uIChwYXJlbnQpIHtcbiAgICByZXR1cm4gcGFyZW50LmNvbXBvbmVudERpZENhdGNoIHx8IHBhcmVudC5jb25zdHJ1Y3RvciAmJiBwYXJlbnQuY29uc3RydWN0b3IuZ2V0RGVyaXZlZFN0YXRlRnJvbUVycm9yO1xuICB9KTtcblxuICBpZiAoYm91bmRhcnkpIHtcbiAgICBzY2hlZHVsZUxheW91dChmdW5jdGlvbiAoKSB7XG4gICAgICB2YXIgYm91bmRhcnlJbnRlcm5hbCA9IGJvdW5kYXJ5W0lOVEVSTkFMXTsgLy8gU2hvdWxkIG5vdCBhdHRlbXB0IHRvIHJlY292ZXIgYW4gdW5tb3VudGluZyBlcnJvciBib3VuZGFyeVxuXG4gICAgICBpZiAoYm91bmRhcnlJbnRlcm5hbCkge1xuICAgICAgICBwZXJmb3JtSW5TYW5kYm94KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBpZiAoYm91bmRhcnkuY29tcG9uZW50RGlkQ2F0Y2gpIHtcbiAgICAgICAgICAgIGJvdW5kYXJ5LmNvbXBvbmVudERpZENhdGNoKGVycm9yKTtcbiAgICAgICAgICB9IC8vIFVwZGF0ZSBzdGF0ZSB0byB0aGUgbmV4dCByZW5kZXIgdG8gc2hvdyB0aGUgZmFsbGJhY2sgVUkuXG5cblxuICAgICAgICAgIGlmIChib3VuZGFyeS5jb25zdHJ1Y3RvciAmJiBib3VuZGFyeS5jb25zdHJ1Y3Rvci5nZXREZXJpdmVkU3RhdGVGcm9tRXJyb3IpIHtcbiAgICAgICAgICAgIHZhciBzdGF0ZSA9IGJvdW5kYXJ5LmNvbnN0cnVjdG9yLmdldERlcml2ZWRTdGF0ZUZyb21FcnJvcihlcnJvcik7XG4gICAgICAgICAgICBib3VuZGFyeS5zZXRTdGF0ZShzdGF0ZSk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCBib3VuZGFyeUludGVybmFsLl9fcGFyZW50SW5zdGFuY2UpO1xuICAgICAgfVxuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIC8vIERvIG5vdCBicmVhayB3aGVuIGVycm9yIGhhcHBlbnNcbiAgICBzY2hlZHVsZXIoZnVuY3Rpb24gKCkge1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfSwgMCk7XG4gIH1cbn1cblxudmFyIG1lYXN1cmVMaWZlQ3ljbGU7XG5cbntcbiAgbWVhc3VyZUxpZmVDeWNsZSA9IGZ1bmN0aW9uIG1lYXN1cmVMaWZlQ3ljbGUoY2FsbGJhY2ssIGluc3RhbmNlSUQsIHR5cGUpIHtcbiAgICBIb3N0Lm1lYXN1cmVyICYmIEhvc3QubWVhc3VyZXIuYmVmb3JlTGlmZUN5Y2xlKGluc3RhbmNlSUQsIHR5cGUpO1xuICAgIGNhbGxiYWNrKCk7XG4gICAgSG9zdC5tZWFzdXJlciAmJiBIb3N0Lm1lYXN1cmVyLmFmdGVyTGlmZUN5Y2xlKGluc3RhbmNlSUQsIHR5cGUpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzY2hlZHVsZUxheW91dEluU2FuZGJveChmbiwgaW5zdGFuY2UpIHtcbiAgc2NoZWR1bGVMYXlvdXQoZnVuY3Rpb24gKCkge1xuICAgIHBlcmZvcm1JblNhbmRib3goZm4sIGluc3RhbmNlKTtcbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHNjaGVkdWxlTGF5b3V0Q2FsbGJhY2tzSW5TYW5kYm94KGNhbGxiYWNrcywgaW5zdGFuY2UpIHtcbiAgaWYgKGNhbGxiYWNrcykge1xuICAgIHNjaGVkdWxlTGF5b3V0SW5TYW5kYm94KGZ1bmN0aW9uICgpIHtcbiAgICAgIGludm9rZUZ1bmN0aW9uc1dpdGhDb250ZXh0KGNhbGxiYWNrcywgaW5zdGFuY2UpO1xuICAgIH0sIGluc3RhbmNlKTtcbiAgfVxufVxuLyoqXG4gKiBDb21wb3NpdGUgQ29tcG9uZW50XG4gKi9cblxuXG52YXIgQ29tcG9zaXRlQ29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfQmFzZUNvbXBvbmVudCkge1xuICBfaW5oZXJpdHNMb29zZShDb21wb3NpdGVDb21wb25lbnQsIF9CYXNlQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBDb21wb3NpdGVDb21wb25lbnQoKSB7XG4gICAgcmV0dXJuIF9CYXNlQ29tcG9uZW50LmFwcGx5KHRoaXMsIGFyZ3VtZW50cykgfHwgdGhpcztcbiAgfVxuXG4gIHZhciBfcHJvdG8gPSBDb21wb3NpdGVDb21wb25lbnQucHJvdG90eXBlO1xuXG4gIF9wcm90by5fX21vdW50Q29tcG9uZW50ID0gZnVuY3Rpb24gX19tb3VudENvbXBvbmVudChwYXJlbnQsIHBhcmVudEluc3RhbmNlLCBjb250ZXh0LCBuYXRpdmVOb2RlTW91bnRlcikge1xuICAgIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgICB0aGlzLl9faW5pdENvbXBvbmVudChwYXJlbnQsIHBhcmVudEluc3RhbmNlLCBjb250ZXh0KTtcblxuICAgIHtcbiAgICAgIHRoaXMuX3VwZGF0ZUNvdW50ID0gMDtcbiAgICAgIEhvc3QubWVhc3VyZXIgJiYgSG9zdC5tZWFzdXJlci5iZWZvcmVNb3VudENvbXBvbmVudCh0aGlzLl9tb3VudElELCB0aGlzKTtcbiAgICB9XG5cbiAgICB2YXIgY3VycmVudEVsZW1lbnQgPSB0aGlzLl9fY3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIENvbXBvbmVudCA9IGN1cnJlbnRFbGVtZW50LnR5cGU7XG4gICAgdmFyIHJlZiA9IGN1cnJlbnRFbGVtZW50LnJlZjtcbiAgICB2YXIgcHVibGljUHJvcHMgPSBjdXJyZW50RWxlbWVudC5wcm9wcztcbiAgICB2YXIgY29tcG9uZW50UHJvdG90eXBlID0gQ29tcG9uZW50LnByb3RvdHlwZTsgLy8gQ29udGV4dCBwcm9jZXNzXG5cbiAgICB2YXIgcHVibGljQ29udGV4dCA9IHRoaXMuX19wcm9jZXNzQ29udGV4dChjb250ZXh0KTsgLy8gSW5pdGlhbGl6ZSB0aGUgcHVibGljIGNsYXNzXG5cblxuICAgIHZhciBpbnN0YW5jZTtcbiAgICB2YXIgcmVuZGVyZWRFbGVtZW50O1xuICAgIHBlcmZvcm1JblNhbmRib3goZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKGNvbXBvbmVudFByb3RvdHlwZSAmJiBjb21wb25lbnRQcm90b3R5cGUucmVuZGVyKSB7XG4gICAgICAgIC8vIENsYXNzIENvbXBvbmVudCBpbnN0YW5jZVxuICAgICAgICBpbnN0YW5jZSA9IG5ldyBDb21wb25lbnQocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQpO1xuICAgICAgfSBlbHNlIGlmIChpc0Z1bmN0aW9uKENvbXBvbmVudCkpIHtcbiAgICAgICAgLy8gRnVuY3Rpb25hbCByZWFjdGl2ZSBjb21wb25lbnQgd2l0aCBob29rc1xuICAgICAgICBpbnN0YW5jZSA9IG5ldyBSZWFjdGl2ZUNvbXBvbmVudChDb21wb25lbnQsIHJlZik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpZiAoXCJkZXZlbG9wbWVudFwiICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICB0aHJvd0Vycm9yKCdJbnZhbGlkIGNvbXBvbmVudCB0eXBlLCBleHBlY3RlZCBhIGNsYXNzIG9yIGZ1bmN0aW9uIGNvbXBvbmVudC4nLCBDb21wb25lbnQpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSwgcGFyZW50SW5zdGFuY2UpO1xuXG4gICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH0gLy8gVGhlc2Ugc2hvdWxkIGJlIHNldCB1cCBpbiB0aGUgY29uc3RydWN0b3IsIGJ1dCBhcyBhIGNvbnZlbmllbmNlIGZvclxuICAgIC8vIHNpbXBsZXIgY2xhc3MgYWJzdHJhY3Rpb25zLCB3ZSBzZXQgdGhlbSB1cCBhZnRlciB0aGUgZmFjdC5cblxuXG4gICAgaW5zdGFuY2UucHJvcHMgPSBwdWJsaWNQcm9wcztcbiAgICBpbnN0YW5jZS5jb250ZXh0ID0gcHVibGljQ29udGV4dDtcbiAgICBpbnN0YW5jZS5yZWZzID0ge307IC8vIEluamVjdCB0aGUgdXBkYXRlciBpbnRvIGluc3RhbmNlXG5cbiAgICBpbnN0YW5jZS51cGRhdGVyID0gVXBkYXRlcjtcbiAgICBpbnN0YW5jZVtJTlRFUk5BTF0gPSB0aGlzO1xuICAgIHRoaXNbSU5TVEFOQ0VdID0gaW5zdGFuY2U7IC8vIEluaXQgc3RhdGUsIG11c3QgYmUgc2V0IHRvIGFuIG9iamVjdCBvciBudWxsXG5cbiAgICB2YXIgaW5pdGlhbFN0YXRlID0gaW5zdGFuY2Uuc3RhdGU7XG5cbiAgICBpZiAoaW5pdGlhbFN0YXRlID09PSB1bmRlZmluZWQpIHtcbiAgICAgIC8vIFRPRE8gY2xvbmUgdGhlIHN0YXRlP1xuICAgICAgaW5zdGFuY2Uuc3RhdGUgPSBpbml0aWFsU3RhdGUgPSBudWxsO1xuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5jb21wb25lbnRXaWxsTW91bnQpIHtcbiAgICAgIHBlcmZvcm1JblNhbmRib3goZnVuY3Rpb24gKCkge1xuICAgICAgICBpZiAoXCJkZXZlbG9wbWVudFwiICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICBtZWFzdXJlTGlmZUN5Y2xlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgIGluc3RhbmNlLmNvbXBvbmVudFdpbGxNb3VudCgpO1xuICAgICAgICAgIH0sIF90aGlzLl9tb3VudElELCAnY29tcG9uZW50V2lsbE1vdW50Jyk7XG4gICAgICAgIH1cbiAgICAgIH0sIGluc3RhbmNlKTtcbiAgICB9XG5cbiAgICBIb3N0Lm93bmVyID0gdGhpczsgLy8gUHJvY2VzcyBwZW5kaW5nIHN0YXRlIHdoZW4gY2FsbCBzZXRTdGF0ZSBpbiBjb21wb25lbnRXaWxsTW91bnRcblxuICAgIGluc3RhbmNlLnN0YXRlID0gdGhpcy5fX3Byb2Nlc3NQZW5kaW5nU3RhdGUocHVibGljUHJvcHMsIHB1YmxpY0NvbnRleHQpO1xuICAgIHZhciBjYWxsYmFja3MgPSB0aGlzLl9fcGVuZGluZ0NhbGxiYWNrcztcbiAgICB0aGlzLl9fcGVuZGluZ0NhbGxiYWNrcyA9IG51bGw7XG4gICAgcGVyZm9ybUluU2FuZGJveChmdW5jdGlvbiAoKSB7XG4gICAgICBpZiAoXCJkZXZlbG9wbWVudFwiICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgbWVhc3VyZUxpZmVDeWNsZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgcmVuZGVyZWRFbGVtZW50ID0gaW5zdGFuY2UucmVuZGVyKCk7XG4gICAgICAgIH0sIF90aGlzLl9tb3VudElELCAncmVuZGVyJyk7XG4gICAgICB9XG4gICAgfSwgaW5zdGFuY2UpO1xuXG4gICAge1xuICAgICAgdmFsaWRhdGVDaGlsZEtleXMocmVuZGVyZWRFbGVtZW50LCB0aGlzLl9fY3VycmVudEVsZW1lbnQudHlwZSk7XG4gICAgfVxuXG4gICAgSG9zdC5vd25lciA9IG51bGw7XG4gICAgdGhpc1tSRU5ERVJFRF9DT01QT05FTlRdID0gaW5zdGFudGlhdGVDb21wb25lbnQocmVuZGVyZWRFbGVtZW50KTtcblxuICAgIHRoaXNbUkVOREVSRURfQ09NUE9ORU5UXS5fX21vdW50Q29tcG9uZW50KHRoaXMuX3BhcmVudCwgaW5zdGFuY2UsIHRoaXMuX19wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpLCBuYXRpdmVOb2RlTW91bnRlcik7XG5cbiAgICBpZiAoIWN1cnJlbnRFbGVtZW50LnR5cGUuX2ZvcndhcmRSZWYgJiYgcmVmKSB7XG4gICAgICBhdHRhY2hSZWYoY3VycmVudEVsZW1lbnQuX293bmVyLCByZWYsIHRoaXMpO1xuICAgIH1cblxuICAgIGlmIChpbnN0YW5jZS5jb21wb25lbnREaWRNb3VudCkge1xuICAgICAgc2NoZWR1bGVMYXlvdXRJblNhbmRib3goZnVuY3Rpb24gKCkge1xuICAgICAgICB7XG4gICAgICAgICAgbWVhc3VyZUxpZmVDeWNsZShmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS5jb21wb25lbnREaWRNb3VudCgpO1xuICAgICAgICAgIH0sIF90aGlzLl9tb3VudElELCAnY29tcG9uZW50RGlkTW91bnQnKTtcbiAgICAgICAgfVxuICAgICAgfSwgaW5zdGFuY2UpO1xuICAgIH0gLy8gVHJpZ2dlciBzZXRTdGF0ZSBjYWxsYmFja1xuXG5cbiAgICBzY2hlZHVsZUxheW91dENhbGxiYWNrc0luU2FuZGJveChjYWxsYmFja3MsIGluc3RhbmNlKTtcblxuICAgIHtcbiAgICAgIHNjaGVkdWxlTGF5b3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgSG9zdC5yZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KF90aGlzKTtcbiAgICAgICAgSG9zdC5tZWFzdXJlciAmJiBIb3N0Lm1lYXN1cmVyLmFmdGVyTW91bnRDb21wb25lbnQoX3RoaXMuX21vdW50SUQpO1xuICAgICAgfSk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGluc3RhbmNlO1xuICB9O1xuXG4gIF9wcm90by51bm1vdW50Q29tcG9uZW50ID0gZnVuY3Rpb24gdW5tb3VudENvbXBvbmVudChzaG91bGROb3RSZW1vdmVDaGlsZCkge1xuICAgIHZhciBpbnN0YW5jZSA9IHRoaXNbSU5TVEFOQ0VdOyAvLyBVbm1vdW50aW5nIGEgY29tcG9zaXRlIGNvbXBvbmVudCBtYXliZSBub3QgY29tcGxldGUgbW91bnRlZFxuICAgIC8vIHdoZW4gdGhyb3cgZXJyb3IgaW4gY29tcG9uZW50IGNvbnN0cnVjdG9yIHN0YWdlXG5cbiAgICBpZiAoaW5zdGFuY2UgJiYgaW5zdGFuY2UuY29tcG9uZW50V2lsbFVubW91bnQpIHtcbiAgICAgIHBlcmZvcm1JblNhbmRib3goZnVuY3Rpb24gKCkge1xuICAgICAgICBpbnN0YW5jZS5jb21wb25lbnRXaWxsVW5tb3VudCgpO1xuICAgICAgfSwgaW5zdGFuY2UpO1xuICAgIH1cblxuICAgIGlmICh0aGlzW1JFTkRFUkVEX0NPTVBPTkVOVF0gIT0gbnVsbCkge1xuICAgICAgdmFyIGN1cnJlbnRFbGVtZW50ID0gdGhpcy5fX2N1cnJlbnRFbGVtZW50O1xuICAgICAgdmFyIHJlZiA9IGN1cnJlbnRFbGVtZW50LnJlZjtcblxuICAgICAgaWYgKCFjdXJyZW50RWxlbWVudC50eXBlLl9mb3J3YXJkUmVmICYmIHJlZikge1xuICAgICAgICBkZXRhY2hSZWYoY3VycmVudEVsZW1lbnQuX293bmVyLCByZWYsIHRoaXMpO1xuICAgICAgfVxuXG4gICAgICB0aGlzW1JFTkRFUkVEX0NPTVBPTkVOVF0udW5tb3VudENvbXBvbmVudChzaG91bGROb3RSZW1vdmVDaGlsZCk7XG4gICAgICB0aGlzW1JFTkRFUkVEX0NPTVBPTkVOVF0gPSBudWxsO1xuICAgIH0gLy8gUmVzZXQgcGVuZGluZyBmaWVsZHNcbiAgICAvLyBFdmVuIGlmIHRoaXMgY29tcG9uZW50IGlzIHNjaGVkdWxlZCBmb3IgYW5vdGhlciBhc3luYyB1cGRhdGUsXG4gICAgLy8gaXQgd291bGQgc3RpbGwgYmUgaWdub3JlZCBiZWNhdXNlIHRoZXNlIGZpZWxkcyBhcmUgcmVzZXQuXG5cblxuICAgIHRoaXMuX19wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG4gICAgdGhpcy5fX2lzUGVuZGluZ0ZvcmNlVXBkYXRlID0gZmFsc2U7XG5cbiAgICB0aGlzLl9fZGVzdG9yeUNvbXBvbmVudCgpO1xuICB9XG4gIC8qKlxuICAgKiBGaWx0ZXJzIHRoZSBjb250ZXh0IG9iamVjdCB0byBvbmx5IGNvbnRhaW4ga2V5cyBzcGVjaWZpZWQgaW5cbiAgICogYGNvbnRleHRUeXBlc2BcbiAgICovXG4gIDtcblxuICBfcHJvdG8uX19wcm9jZXNzQ29udGV4dCA9IGZ1bmN0aW9uIF9fcHJvY2Vzc0NvbnRleHQoY29udGV4dCkge1xuICAgIHZhciBtYXNrZWRDb250ZXh0ID0ge307XG4gICAgdmFyIENvbXBvbmVudCA9IHRoaXMuX19jdXJyZW50RWxlbWVudC50eXBlO1xuICAgIHZhciBjb250ZXh0VHlwZXMgPSBDb21wb25lbnQuY29udGV4dFR5cGVzO1xuXG4gICAgaWYgKGNvbnRleHRUeXBlcykge1xuICAgICAgZm9yICh2YXIgY29udGV4dE5hbWUgaW4gY29udGV4dFR5cGVzKSB7XG4gICAgICAgIG1hc2tlZENvbnRleHRbY29udGV4dE5hbWVdID0gY29udGV4dFtjb250ZXh0TmFtZV07XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIG1hc2tlZENvbnRleHQ7XG4gIH07XG5cbiAgX3Byb3RvLl9fcHJvY2Vzc0NoaWxkQ29udGV4dCA9IGZ1bmN0aW9uIF9fcHJvY2Vzc0NoaWxkQ29udGV4dChjdXJyZW50Q29udGV4dCkge1xuICAgIHZhciBpbnN0YW5jZSA9IHRoaXNbSU5TVEFOQ0VdOyAvLyBUaGUgZ2V0Q2hpbGRDb250ZXh0IG1ldGhvZCBjb250ZXh0IHNob3VsZCBiZSBjdXJyZW50IGluc3RhbmNlXG5cbiAgICB2YXIgY2hpbGRDb250ZXh0ID0gaW5zdGFuY2UuZ2V0Q2hpbGRDb250ZXh0ICYmIGluc3RhbmNlLmdldENoaWxkQ29udGV4dCgpO1xuXG4gICAgaWYgKGNoaWxkQ29udGV4dCkge1xuICAgICAgcmV0dXJuIGFzc2lnbih7fSwgY3VycmVudENvbnRleHQsIGNoaWxkQ29udGV4dCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIGN1cnJlbnRDb250ZXh0O1xuICB9O1xuXG4gIF9wcm90by5fX3Byb2Nlc3NQZW5kaW5nU3RhdGUgPSBmdW5jdGlvbiBfX3Byb2Nlc3NQZW5kaW5nU3RhdGUocHJvcHMsIGNvbnRleHQpIHtcbiAgICB2YXIgaW5zdGFuY2UgPSB0aGlzW0lOU1RBTkNFXTtcbiAgICB2YXIgcXVldWUgPSB0aGlzLl9fcGVuZGluZ1N0YXRlUXVldWU7XG5cbiAgICBpZiAoIXF1ZXVlKSB7XG4gICAgICByZXR1cm4gaW5zdGFuY2Uuc3RhdGU7XG4gICAgfSAvLyBSZXNldCBwZW5kaW5nIHF1ZXVlXG5cblxuICAgIHRoaXMuX19wZW5kaW5nU3RhdGVRdWV1ZSA9IG51bGw7XG4gICAgdmFyIG5leHRTdGF0ZSA9IGFzc2lnbih7fSwgaW5zdGFuY2Uuc3RhdGUpO1xuXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBxdWV1ZS5sZW5ndGg7IGkrKykge1xuICAgICAgdmFyIHBhcnRpYWwgPSBxdWV1ZVtpXTtcbiAgICAgIGFzc2lnbihuZXh0U3RhdGUsIGlzRnVuY3Rpb24ocGFydGlhbCkgPyBwYXJ0aWFsLmNhbGwoaW5zdGFuY2UsIG5leHRTdGF0ZSwgcHJvcHMsIGNvbnRleHQpIDogcGFydGlhbCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIG5leHRTdGF0ZTtcbiAgfTtcblxuICBfcHJvdG8uX191cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiBfX3VwZGF0ZUNvbXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIHByZXZVbm1hc2tlZENvbnRleHQsIG5leHRVbm1hc2tlZENvbnRleHQpIHtcbiAgICB2YXIgX3RoaXMyID0gdGhpcztcblxuICAgIHZhciBpbnN0YW5jZSA9IHRoaXNbSU5TVEFOQ0VdOyAvLyBNYXliZSB1cGRhdGUgY29tcG9uZW50IHRoYXQgaGFzIGFscmVhZHkgYmVlbiB1bm1vdW50ZWQgb3IgZmFpbGVkIG1vdW50LlxuXG4gICAgaWYgKCFpbnN0YW5jZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHBlcmZvcm1JblNhbmRib3goZnVuY3Rpb24gKCkge1xuICAgICAgaWYgKFwiZGV2ZWxvcG1lbnRcIiAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIEhvc3QubWVhc3VyZXIgJiYgSG9zdC5tZWFzdXJlci5iZWZvcmVVcGRhdGVDb21wb25lbnQoX3RoaXMyLl9tb3VudElELCBfdGhpczIpO1xuICAgICAgfVxuXG4gICAgICB2YXIgd2lsbFJlY2VpdmU7XG4gICAgICB2YXIgbmV4dENvbnRleHQ7XG4gICAgICB2YXIgbmV4dFByb3BzOyAvLyBEZXRlcm1pbmUgaWYgdGhlIGNvbnRleHQgaGFzIGNoYW5nZWQgb3Igbm90XG5cbiAgICAgIGlmIChfdGhpczIuX2NvbnRleHQgPT09IG5leHRVbm1hc2tlZENvbnRleHQpIHtcbiAgICAgICAgbmV4dENvbnRleHQgPSBpbnN0YW5jZS5jb250ZXh0O1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbmV4dENvbnRleHQgPSBfdGhpczIuX19wcm9jZXNzQ29udGV4dChuZXh0VW5tYXNrZWRDb250ZXh0KTtcbiAgICAgICAgd2lsbFJlY2VpdmUgPSB0cnVlO1xuICAgICAgfSAvLyBEaXN0aW5ndWlzaCBiZXR3ZWVuIGEgcHJvcHMgdXBkYXRlIHZlcnN1cyBhIHNpbXBsZSBzdGF0ZSB1cGRhdGVcbiAgICAgIC8vIFNraXAgY2hlY2tpbmcgcHJvcCB0eXBlcyBhZ2FpbiAtLSB3ZSBkb24ndCByZWFkIGNvbXBvbmVudC5wcm9wcyB0byBhdm9pZFxuICAgICAgLy8gd2FybmluZyBmb3IgRE9NIGNvbXBvbmVudCBwcm9wcyBpbiB0aGlzIHVwZ3JhZGVcblxuXG4gICAgICBuZXh0UHJvcHMgPSBuZXh0RWxlbWVudC5wcm9wcztcblxuICAgICAgaWYgKHByZXZFbGVtZW50ICE9PSBuZXh0RWxlbWVudCkge1xuICAgICAgICB3aWxsUmVjZWl2ZSA9IHRydWU7XG4gICAgICB9XG5cbiAgICAgIGlmICh3aWxsUmVjZWl2ZSAmJiBpbnN0YW5jZS5jb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzKSB7XG4gICAgICAgIC8vIENhbGxpbmcgdGhpcy5zZXRTdGF0ZSgpIHdpdGhpbiBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIHdpbGwgbm90IHRyaWdnZXIgYW4gYWRkaXRpb25hbCByZW5kZXIuXG4gICAgICAgIF90aGlzMi5fX2lzUGVuZGluZ1N0YXRlID0gdHJ1ZTtcbiAgICAgICAgaW5zdGFuY2UuY29tcG9uZW50V2lsbFJlY2VpdmVQcm9wcyhuZXh0UHJvcHMsIG5leHRDb250ZXh0KTtcbiAgICAgICAgX3RoaXMyLl9faXNQZW5kaW5nU3RhdGUgPSBmYWxzZTtcbiAgICAgIH0gLy8gVXBkYXRlIHJlZnNcblxuXG4gICAgICBpZiAoX3RoaXMyLl9fY3VycmVudEVsZW1lbnQudHlwZS5fZm9yd2FyZFJlZikge1xuICAgICAgICBpbnN0YW5jZS5fX3ByZXZGb3J3YXJkUmVmID0gcHJldkVsZW1lbnQucmVmO1xuICAgICAgICBpbnN0YW5jZS5fZm9yd2FyZFJlZiA9IG5leHRFbGVtZW50LnJlZjtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHVwZGF0ZVJlZihwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIF90aGlzMik7XG4gICAgICB9IC8vIFNob3VkIHVwZGF0ZSBkZWZhdWx0XG5cblxuICAgICAgdmFyIHNob3VsZFVwZGF0ZSA9IHRydWU7XG4gICAgICB2YXIgcHJldlByb3BzID0gaW5zdGFuY2UucHJvcHM7XG4gICAgICB2YXIgcHJldlN0YXRlID0gaW5zdGFuY2Uuc3RhdGU7IC8vIFRPRE86IGNvdWxkIGRlbGF5IGV4ZWN1dGlvbiBwcm9jZXNzUGVuZGluZ1N0YXRlXG5cbiAgICAgIHZhciBuZXh0U3RhdGUgPSBfdGhpczIuX19wcm9jZXNzUGVuZGluZ1N0YXRlKG5leHRQcm9wcywgbmV4dENvbnRleHQpO1xuXG4gICAgICB2YXIgY2FsbGJhY2tzID0gX3RoaXMyLl9fcGVuZGluZ0NhbGxiYWNrcztcbiAgICAgIF90aGlzMi5fX3BlbmRpbmdDYWxsYmFja3MgPSBudWxsOyAvLyBTaG91bGRDb21wb25lbnRVcGRhdGUgaXMgbm90IGNhbGxlZCB3aGVuIGZvcmNlVXBkYXRlIGlzIHVzZWRcblxuICAgICAgaWYgKCFfdGhpczIuX19pc1BlbmRpbmdGb3JjZVVwZGF0ZSkge1xuICAgICAgICBpZiAoaW5zdGFuY2Uuc2hvdWxkQ29tcG9uZW50VXBkYXRlKSB7XG4gICAgICAgICAgc2hvdWxkVXBkYXRlID0gaW5zdGFuY2Uuc2hvdWxkQ29tcG9uZW50VXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAgICAgIH0gZWxzZSBpZiAoaW5zdGFuY2UuX19pc1B1cmVDb21wb25lbnQpIHtcbiAgICAgICAgICAvLyBQdXJlIENvbXBvbmVudFxuICAgICAgICAgIHNob3VsZFVwZGF0ZSA9ICFzaGFsbG93RXF1YWwocHJldlByb3BzLCBuZXh0UHJvcHMpIHx8ICFzaGFsbG93RXF1YWwocHJldlN0YXRlLCBuZXh0U3RhdGUpO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChzaG91bGRVcGRhdGUpIHtcbiAgICAgICAgX3RoaXMyLl9faXNQZW5kaW5nRm9yY2VVcGRhdGUgPSBmYWxzZTsgLy8gV2lsbCBzZXQgYHRoaXMucHJvcHNgLCBgdGhpcy5zdGF0ZWAgYW5kIGB0aGlzLmNvbnRleHRgLlxuXG4gICAgICAgIHZhciBwcmV2Q29udGV4dCA9IGluc3RhbmNlLmNvbnRleHQ7IC8vIENhbm5vdCB1c2UgdGhpcy5zZXRTdGF0ZSgpIGluIGNvbXBvbmVudFdpbGxVcGRhdGUuXG4gICAgICAgIC8vIElmIG5lZWQgdG8gdXBkYXRlIHN0YXRlIGluIHJlc3BvbnNlIHRvIGEgcHJvcCBjaGFuZ2UsIHVzZSBjb21wb25lbnRXaWxsUmVjZWl2ZVByb3BzIGluc3RlYWQuXG5cbiAgICAgICAgaWYgKGluc3RhbmNlLmNvbXBvbmVudFdpbGxVcGRhdGUpIHtcbiAgICAgICAgICBpbnN0YW5jZS5jb21wb25lbnRXaWxsVXBkYXRlKG5leHRQcm9wcywgbmV4dFN0YXRlLCBuZXh0Q29udGV4dCk7XG4gICAgICAgIH0gLy8gUmVwbGFjZSB3aXRoIG5leHRcblxuXG4gICAgICAgIF90aGlzMi5fX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG4gICAgICAgIF90aGlzMi5fY29udGV4dCA9IG5leHRVbm1hc2tlZENvbnRleHQ7XG4gICAgICAgIGluc3RhbmNlLnByb3BzID0gbmV4dFByb3BzO1xuICAgICAgICBpbnN0YW5jZS5zdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICAgICAgaW5zdGFuY2UuY29udGV4dCA9IG5leHRDb250ZXh0O1xuXG4gICAgICAgIF90aGlzMi5fX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50KG5leHRVbm1hc2tlZENvbnRleHQpO1xuXG4gICAgICAgIGlmIChpbnN0YW5jZS5jb21wb25lbnREaWRVcGRhdGUpIHtcbiAgICAgICAgICBzY2hlZHVsZUxheW91dEluU2FuZGJveChmdW5jdGlvbiAoKSB7XG4gICAgICAgICAgICBpbnN0YW5jZS5jb21wb25lbnREaWRVcGRhdGUocHJldlByb3BzLCBwcmV2U3RhdGUsIHByZXZDb250ZXh0KTtcbiAgICAgICAgICB9LCBpbnN0YW5jZSk7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoXCJkZXZlbG9wbWVudFwiICE9PSAncHJvZHVjdGlvbicpIHtcbiAgICAgICAgICAvLyBDYWxjIHVwZGF0ZSBjb3VudC5cbiAgICAgICAgICBfdGhpczIuX3VwZGF0ZUNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIC8vIElmIGl0J3MgZGV0ZXJtaW5lZCB0aGF0IGEgY29tcG9uZW50IHNob3VsZCBub3QgdXBkYXRlLCB3ZSBzdGlsbCB3YW50XG4gICAgICAgIC8vIHRvIHNldCBwcm9wcyBhbmQgc3RhdGUgYnV0IHdlIHNob3J0Y3V0IHRoZSByZXN0IG9mIHRoZSB1cGRhdGUuXG4gICAgICAgIF90aGlzMi5fX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG4gICAgICAgIF90aGlzMi5fY29udGV4dCA9IG5leHRVbm1hc2tlZENvbnRleHQ7XG4gICAgICAgIGluc3RhbmNlLnByb3BzID0gbmV4dFByb3BzO1xuICAgICAgICBpbnN0YW5jZS5zdGF0ZSA9IG5leHRTdGF0ZTtcbiAgICAgICAgaW5zdGFuY2UuY29udGV4dCA9IG5leHRDb250ZXh0O1xuICAgICAgfVxuXG4gICAgICBzY2hlZHVsZUxheW91dENhbGxiYWNrc0luU2FuZGJveChjYWxsYmFja3MsIGluc3RhbmNlKTtcblxuICAgICAgaWYgKFwiZGV2ZWxvcG1lbnRcIiAhPT0gJ3Byb2R1Y3Rpb24nKSB7XG4gICAgICAgIHNjaGVkdWxlTGF5b3V0KGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICBIb3N0Lm1lYXN1cmVyICYmIEhvc3QubWVhc3VyZXIuYWZ0ZXJVcGRhdGVDb21wb25lbnQoX3RoaXMyLl9tb3VudElEKTtcbiAgICAgICAgICBIb3N0LnJlY29uY2lsZXIucmVjZWl2ZUNvbXBvbmVudChfdGhpczIpO1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9LCBpbnN0YW5jZSk7XG4gIH1cbiAgLyoqXG4gICAqIENhbGwgdGhlIGNvbXBvbmVudCdzIGByZW5kZXJgIG1ldGhvZCBhbmQgdXBkYXRlIHRoZSBET00gYWNjb3JkaW5nbHkuXG4gICAqL1xuICA7XG5cbiAgX3Byb3RvLl9fdXBkYXRlUmVuZGVyZWRDb21wb25lbnQgPSBmdW5jdGlvbiBfX3VwZGF0ZVJlbmRlcmVkQ29tcG9uZW50KGNvbnRleHQpIHtcbiAgICB2YXIgcHJldlJlbmRlcmVkQ29tcG9uZW50ID0gdGhpc1tSRU5ERVJFRF9DT01QT05FTlRdO1xuICAgIHZhciBwcmV2UmVuZGVyZWRFbGVtZW50ID0gcHJldlJlbmRlcmVkQ29tcG9uZW50Ll9fY3VycmVudEVsZW1lbnQ7XG4gICAgdmFyIGluc3RhbmNlID0gdGhpc1tJTlNUQU5DRV07XG4gICAgdmFyIG5leHRSZW5kZXJlZEVsZW1lbnQ7XG4gICAgSG9zdC5vd25lciA9IHRoaXM7XG5cbiAgICB7XG4gICAgICBtZWFzdXJlTGlmZUN5Y2xlKGZ1bmN0aW9uICgpIHtcbiAgICAgICAgbmV4dFJlbmRlcmVkRWxlbWVudCA9IGluc3RhbmNlLnJlbmRlcigpO1xuICAgICAgfSwgdGhpcy5fbW91bnRJRCwgJ3JlbmRlcicpO1xuICAgIH1cblxuICAgIEhvc3Qub3duZXIgPSBudWxsO1xuXG4gICAgaWYgKHNob3VsZFVwZGF0ZUNvbXBvbmVudChwcmV2UmVuZGVyZWRFbGVtZW50LCBuZXh0UmVuZGVyZWRFbGVtZW50KSkge1xuICAgICAgdmFyIHByZXZSZW5kZXJlZFVubWFza2VkQ29udGV4dCA9IHByZXZSZW5kZXJlZENvbXBvbmVudC5fY29udGV4dDtcblxuICAgICAgdmFyIG5leHRSZW5kZXJlZFVubWFza2VkQ29udGV4dCA9IHRoaXMuX19wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpOyAvLyBJZiBnZXRDaGlsZENvbnRleHQgZXhpc3RlZCBhbmQgaW52b2tlZCB3aGVuIGNvbXBvbmVudCB1cGRhdGVkIHRoYXQgd2lsbCBtYWtlXG4gICAgICAvLyBwcmV2UmVuZGVyZWRVbm1hc2tlZENvbnRleHQgbm90IGVxdWFsIG5leHRSZW5kZXJlZFVubWFza2VkQ29udGV4dCB1bmRlciB0aGUgdHJlZVxuXG5cbiAgICAgIGlmIChwcmV2UmVuZGVyZWRFbGVtZW50ICE9PSBuZXh0UmVuZGVyZWRFbGVtZW50IHx8IHByZXZSZW5kZXJlZFVubWFza2VkQ29udGV4dCAhPT0gbmV4dFJlbmRlcmVkVW5tYXNrZWRDb250ZXh0KSB7XG4gICAgICAgIC8vIElmIGVsZW1lbnQgdHlwZSBpcyBpbGxlZ2FsIGNhdGNoIHRoZSBlcnJvclxuICAgICAgICBwcmV2UmVuZGVyZWRDb21wb25lbnQuX191cGRhdGVDb21wb25lbnQocHJldlJlbmRlcmVkRWxlbWVudCwgbmV4dFJlbmRlcmVkRWxlbWVudCwgcHJldlJlbmRlcmVkVW5tYXNrZWRDb250ZXh0LCBuZXh0UmVuZGVyZWRVbm1hc2tlZENvbnRleHQpO1xuICAgICAgfVxuXG4gICAgICB7XG4gICAgICAgIEhvc3QubWVhc3VyZXIgJiYgSG9zdC5tZWFzdXJlci5yZWNvcmRPcGVyYXRpb24oe1xuICAgICAgICAgIGluc3RhbmNlSUQ6IHRoaXMuX21vdW50SUQsXG4gICAgICAgICAgdHlwZTogJ3VwZGF0ZSBjb21wb25lbnQnLFxuICAgICAgICAgIHBheWxvYWQ6IHt9XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgbGFzdE5hdGl2ZU5vZGUgPSBudWxsO1xuXG4gICAgICB2YXIgcHJldk5hdGl2ZU5vZGUgPSBwcmV2UmVuZGVyZWRDb21wb25lbnQuX19nZXROYXRpdmVOb2RlKCk7IC8vIE9ubHkgcHJldk5hdGl2ZU5vZGUgaXMgZW1wdHkgZnJhZ21lbnQgc2hvdWxkIGZpbmQgdGhlIHByZXZTbGliaW5nTmF0aXZlTm9kZVxuICAgICAgLy8gQW5kIGN1cnJlbnQgcm9vdCBjb21wb25lbnQgaXMgZnJhZ21lbnQsIGJ1dCBub3QgbmVlZCBmaW5kIHRoZSBwcmV2U2xpYmluZ05hdGl2ZU5vZGUgd2hlbiBpbml0IG1vdW50aW5nXG5cblxuICAgICAgaWYgKGlzQXJyYXkocHJldk5hdGl2ZU5vZGUpICYmIHByZXZOYXRpdmVOb2RlLmxlbmd0aCA9PT0gMCAmJiBpbnN0YW5jZS5fX3Jvb3RJRCA9PSBudWxsKSB7XG4gICAgICAgIGxhc3ROYXRpdmVOb2RlID0gZ2V0UHJldlNpYmxpbmdOYXRpdmVOb2RlKHByZXZSZW5kZXJlZENvbXBvbmVudCk7XG4gICAgICB9XG5cbiAgICAgIHByZXZSZW5kZXJlZENvbXBvbmVudC51bm1vdW50Q29tcG9uZW50KHRydWUpO1xuICAgICAgdGhpc1tSRU5ERVJFRF9DT01QT05FTlRdID0gaW5zdGFudGlhdGVDb21wb25lbnQobmV4dFJlbmRlcmVkRWxlbWVudCk7XG5cbiAgICAgIHRoaXNbUkVOREVSRURfQ09NUE9ORU5UXS5fX21vdW50Q29tcG9uZW50KHRoaXMuX3BhcmVudCwgaW5zdGFuY2UsIHRoaXMuX19wcm9jZXNzQ2hpbGRDb250ZXh0KGNvbnRleHQpLCBmdW5jdGlvbiAobmV3TmF0aXZlTm9kZSwgcGFyZW50KSB7XG4gICAgICAgIHZhciBkcml2ZXIgPSBIb3N0LmRyaXZlcjtcbiAgICAgICAgcHJldk5hdGl2ZU5vZGUgPSB0b0FycmF5KHByZXZOYXRpdmVOb2RlKTtcbiAgICAgICAgbmV3TmF0aXZlTm9kZSA9IHRvQXJyYXkobmV3TmF0aXZlTm9kZSk7IC8vIElmIHRoZSBuZXcgbGVuZ3RoIGxhcmdlIHRoZW4gcHJldlxuXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmV3TmF0aXZlTm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIHZhciBuYXRpdmVOb2RlID0gbmV3TmF0aXZlTm9kZVtpXTtcblxuICAgICAgICAgIGlmIChwcmV2TmF0aXZlTm9kZVtpXSkge1xuICAgICAgICAgICAgZHJpdmVyLnJlcGxhY2VDaGlsZChuYXRpdmVOb2RlLCBwcmV2TmF0aXZlTm9kZVtpXSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChsYXN0TmF0aXZlTm9kZSkge1xuICAgICAgICAgICAgZHJpdmVyLmluc2VydEFmdGVyKG5hdGl2ZU5vZGUsIGxhc3ROYXRpdmVOb2RlKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgZHJpdmVyLmFwcGVuZENoaWxkKG5hdGl2ZU5vZGUsIHBhcmVudCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbGFzdE5hdGl2ZU5vZGUgPSBuYXRpdmVOb2RlO1xuICAgICAgICB9IC8vIElmIHRoZSBuZXcgbGVuZ3RoIGxlc3MgdGhlbiBwcmV2XG5cblxuICAgICAgICBmb3IgKHZhciBfaSA9IG5ld05hdGl2ZU5vZGUubGVuZ3RoOyBfaSA8IHByZXZOYXRpdmVOb2RlLmxlbmd0aDsgX2krKykge1xuICAgICAgICAgIGRyaXZlci5yZW1vdmVDaGlsZChwcmV2TmF0aXZlTm9kZVtfaV0pO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLl9fZ2V0TmF0aXZlTm9kZSA9IGZ1bmN0aW9uIF9fZ2V0TmF0aXZlTm9kZSgpIHtcbiAgICB2YXIgcmVuZGVyZWRDb21wb25lbnQgPSB0aGlzW1JFTkRFUkVEX0NPTVBPTkVOVF07XG5cbiAgICBpZiAocmVuZGVyZWRDb21wb25lbnQpIHtcbiAgICAgIHJldHVybiByZW5kZXJlZENvbXBvbmVudC5fX2dldE5hdGl2ZU5vZGUoKTtcbiAgICB9XG4gIH07XG5cbiAgX3Byb3RvLl9fZ2V0UHVibGljSW5zdGFuY2UgPSBmdW5jdGlvbiBfX2dldFB1YmxpY0luc3RhbmNlKCkge1xuICAgIHZhciBpbnN0YW5jZSA9IHRoaXNbSU5TVEFOQ0VdOyAvLyBUaGUgZnVuY3Rpb25hbCBjb21wb25lbnRzIGNhbm5vdCBiZSBnaXZlbiByZWZzXG5cbiAgICBpZiAoaW5zdGFuY2UuX19pc1JlYWN0aXZlQ29tcG9uZW50KSByZXR1cm4gbnVsbDtcbiAgICByZXR1cm4gaW5zdGFuY2U7XG4gIH07XG5cbiAgcmV0dXJuIENvbXBvc2l0ZUNvbXBvbmVudDtcbn0oQmFzZUNvbXBvbmVudCk7XG5cbi8qKlxuICogRnJhZ21lbnQgQ29tcG9uZW50XG4gKi9cblxudmFyIEZyYWdtZW50Q29tcG9uZW50ID0gLyojX19QVVJFX18qL2Z1bmN0aW9uIChfTmF0aXZlQ29tcG9uZW50KSB7XG4gIF9pbmhlcml0c0xvb3NlKEZyYWdtZW50Q29tcG9uZW50LCBfTmF0aXZlQ29tcG9uZW50KTtcblxuICBmdW5jdGlvbiBGcmFnbWVudENvbXBvbmVudCgpIHtcbiAgICByZXR1cm4gX05hdGl2ZUNvbXBvbmVudC5hcHBseSh0aGlzLCBhcmd1bWVudHMpIHx8IHRoaXM7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gRnJhZ21lbnRDb21wb25lbnQucHJvdG90eXBlO1xuXG4gIF9wcm90by5fX21vdW50Q29tcG9uZW50ID0gZnVuY3Rpb24gX19tb3VudENvbXBvbmVudChwYXJlbnQsIHBhcmVudEluc3RhbmNlLCBjb250ZXh0LCBuYXRpdmVOb2RlTW91bnRlcikge1xuICAgIHRoaXMuX19pbml0Q29tcG9uZW50KHBhcmVudCwgcGFyZW50SW5zdGFuY2UsIGNvbnRleHQpO1xuXG4gICAgdmFyIGluc3RhbmNlID0gdGhpc1tJTlNUQU5DRV0gPSB7fTtcbiAgICBpbnN0YW5jZVtJTlRFUk5BTF0gPSB0aGlzO1xuICAgIHZhciBmcmFnbWVudCA9IFtdO1xuXG4gICAgdGhpcy5fX21vdW50Q2hpbGRyZW5JbXBsKHRoaXMuX3BhcmVudCwgdGhpcy5fX2N1cnJlbnRFbGVtZW50LCBjb250ZXh0LCBmdW5jdGlvbiAobmF0aXZlTm9kZSkge1xuICAgICAgbmF0aXZlTm9kZSA9IHRvQXJyYXkobmF0aXZlTm9kZSk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbmF0aXZlTm9kZS5sZW5ndGg7IGkrKykge1xuICAgICAgICBmcmFnbWVudC5wdXNoKG5hdGl2ZU5vZGVbaV0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgaWYgKG5hdGl2ZU5vZGVNb3VudGVyKSB7XG4gICAgICBuYXRpdmVOb2RlTW91bnRlcihmcmFnbWVudCwgcGFyZW50KTtcbiAgICB9IGVsc2Uge1xuICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBmcmFnbWVudC5sZW5ndGg7IGkrKykge1xuICAgICAgICBIb3N0LmRyaXZlci5hcHBlbmRDaGlsZChmcmFnbWVudFtpXSwgcGFyZW50KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICB7XG4gICAgICB0aGlzLl9fY3VycmVudEVsZW1lbnQudHlwZSA9IEZyYWdtZW50Q29tcG9uZW50O1xuICAgICAgSG9zdC5yZWNvbmNpbGVyLm1vdW50Q29tcG9uZW50KHRoaXMpO1xuICAgIH1cblxuICAgIHJldHVybiBpbnN0YW5jZTtcbiAgfTtcblxuICBfcHJvdG8udW5tb3VudENvbXBvbmVudCA9IGZ1bmN0aW9uIHVubW91bnRDb21wb25lbnQoc2hvdWxkTm90UmVtb3ZlQ2hpbGQpIHtcbiAgICBpZiAoIXNob3VsZE5vdFJlbW92ZUNoaWxkKSB7XG4gICAgICB2YXIgbmF0aXZlTm9kZSA9IHRoaXMuX19nZXROYXRpdmVOb2RlKCk7XG5cbiAgICAgIGZvciAodmFyIGkgPSAwLCBsID0gbmF0aXZlTm9kZS5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICAgICAgSG9zdC5kcml2ZXIucmVtb3ZlQ2hpbGQobmF0aXZlTm9kZVtpXSk7XG4gICAgICB9XG4gICAgfSAvLyBEbyBub3QgbmVlZCByZW1vdmUgY2hpbGQgd2hlbiB0aGVpciBwYXJlbnQgaXMgcmVtb3ZlZFxuXG5cbiAgICB0aGlzLl9fdW5tb3VudENoaWxkcmVuKHRydWUpO1xuXG4gICAgdGhpcy5fX2Rlc3RvcnlDb21wb25lbnQoKTtcbiAgfTtcblxuICBfcHJvdG8uX191cGRhdGVDb21wb25lbnQgPSBmdW5jdGlvbiBfX3VwZGF0ZUNvbXBvbmVudChwcmV2RWxlbWVudCwgbmV4dEVsZW1lbnQsIHByZXZDb250ZXh0LCBuZXh0Q29udGV4dCkge1xuICAgIC8vIFJlcGxhY2UgY3VycmVudCBlbGVtZW50XG4gICAgdGhpcy5fX2N1cnJlbnRFbGVtZW50ID0gbmV4dEVsZW1lbnQ7XG5cbiAgICB0aGlzLl9fdXBkYXRlQ2hpbGRyZW4odGhpcy5fX2N1cnJlbnRFbGVtZW50LCBuZXh0Q29udGV4dCk7XG5cbiAgICB7XG4gICAgICB0aGlzLl9fY3VycmVudEVsZW1lbnQudHlwZSA9IEZyYWdtZW50Q29tcG9uZW50O1xuICAgICAgSG9zdC5yZWNvbmNpbGVyLnJlY2VpdmVDb21wb25lbnQodGhpcyk7XG4gICAgfVxuICB9O1xuXG4gIF9wcm90by5fX2dldE5hdGl2ZU5vZGUgPSBmdW5jdGlvbiBfX2dldE5hdGl2ZU5vZGUoKSB7XG4gICAgdmFyIHJlbmRlcmVkQ2hpbGRyZW4gPSB0aGlzLl9fcmVuZGVyZWRDaGlsZHJlbiB8fCB7fTtcbiAgICByZXR1cm4gW10uY29uY2F0LmFwcGx5KFtdLCBPYmplY3Qua2V5cyhyZW5kZXJlZENoaWxkcmVuKS5tYXAoZnVuY3Rpb24gKGtleSkge1xuICAgICAgcmV0dXJuIHJlbmRlcmVkQ2hpbGRyZW5ba2V5XS5fX2dldE5hdGl2ZU5vZGUoKTtcbiAgICB9KSk7XG4gIH07XG5cbiAgcmV0dXJuIEZyYWdtZW50Q29tcG9uZW50O1xufShOYXRpdmVDb21wb25lbnQpO1xuXG57XG4gIEZyYWdtZW50Q29tcG9uZW50LmRpc3BsYXlOYW1lID0gJ0ZyYWdtZW50Jztcbn1cblxudmFyIFJlY29uY2lsZXIgPSB7XG4gIC8vIFN0dWJzIC0gRGV2VG9vbHMgZXhwZWN0cyB0byBmaW5kIHRoZXNlIG1ldGhvZHMgYW5kIHJlcGxhY2UgdGhlbVxuICAvLyB3aXRoIHdyYXBwZXJzIGluIG9yZGVyIHRvIG9ic2VydmUgY29tcG9uZW50cyBiZWluZyBtb3VudGVkLCB1cGRhdGVkIGFuZFxuICAvLyB1bm1vdW50ZWRcbiAgbW91bnRDb21wb25lbnQ6IGZ1bmN0aW9uIG1vdW50Q29tcG9uZW50KCkge30sXG4gIHJlY2VpdmVDb21wb25lbnQ6IGZ1bmN0aW9uIHJlY2VpdmVDb21wb25lbnQoKSB7fSxcbiAgdW5tb3VudENvbXBvbmVudDogZnVuY3Rpb24gdW5tb3VudENvbXBvbmVudCgpIHt9LFxuICAvLyBTdHViIC0gRGV2VG9vbHMgZXhwZWN0cyB0byBmaW5kIHRoaXMgbWV0aG9kIGFuZCByZXBsYWNlIGl0XG4gIC8vIHdpdGggYSB3cmFwcGVyIGluIG9yZGVyIHRvIG9ic2VydmUgbmV3IHJvb3QgY29tcG9uZW50cyBiZWluZyBhZGRlZFxuICByZW5kZXJOZXdSb290Q29tcG9uZW50OiBmdW5jdGlvbiByZW5kZXJOZXdSb290Q29tcG9uZW50KCkge31cbn07XG5cbmZ1bmN0aW9uIGluamVjdChfcmVmKSB7XG4gIHZhciBkcml2ZXIgPSBfcmVmLmRyaXZlcixcbiAgICAgIG1lYXN1cmVyID0gX3JlZi5tZWFzdXJlcjtcbiAgLy8gSW5qZWN0IGNvbXBvbmVudCBjbGFzc1xuICBIb3N0Ll9fRW1wdHkgPSBFbXB0eUNvbXBvbmVudDtcbiAgSG9zdC5fX05hdGl2ZSA9IE5hdGl2ZUNvbXBvbmVudDtcbiAgSG9zdC5fX1RleHQgPSBUZXh0Q29tcG9uZW50O1xuICBIb3N0Ll9fRnJhZ21lbnQgPSBGcmFnbWVudENvbXBvbmVudDtcbiAgSG9zdC5fX0NvbXBvc2l0ZSA9IENvbXBvc2l0ZUNvbXBvbmVudDsgLy8gSW5qZWN0IHJlbmRlciBkcml2ZXJcblxuICBpZiAoIShIb3N0LmRyaXZlciA9IGRyaXZlciB8fCBIb3N0LmRyaXZlcikpIHtcbiAgICB7XG4gICAgICB0aHJvd0Vycm9yKCdSYXggZHJpdmVyIG5vdCBmb3VuZC4nKTtcbiAgICB9XG4gIH1cblxuICB7XG4gICAgLy8gSW5qZWN0IGRldnRvb2wgcmVuZGVyZXIgaG9va1xuICAgIEhvc3QucmVjb25jaWxlciA9IFJlY29uY2lsZXI7IC8vIEluamVjdCBwZXJmb3JtYW5jZSBtZWFzdXJlclxuXG4gICAgSG9zdC5tZWFzdXJlciA9IG1lYXN1cmVyO1xuICB9XG59XG5cbmZ1bmN0aW9uIHJlbmRlcihlbGVtZW50LCBjb250YWluZXIsIG9wdGlvbnMsIGNhbGxiYWNrKSB7XG4gIC8vIENvbXBhdGlibGUgd2l0aCBgcmVuZGVyKGVsZW1lbnQsIGNvbnRhaW5lciwgY2FsbGJhY2spYFxuICBpZiAoaXNGdW5jdGlvbihvcHRpb25zKSkge1xuICAgIGNhbGxiYWNrID0gb3B0aW9ucztcbiAgICBvcHRpb25zID0gbnVsbDtcbiAgfVxuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IEVNUFRZX09CSkVDVDsgLy8gSW5pdCBpbmplY3RcblxuICBpbmplY3Qob3B0aW9ucyk7XG4gIHZhciByb290Q29tcG9uZW50ID0gSW5zdGFuY2UubW91bnQoZWxlbWVudCwgY29udGFpbmVyLCBvcHRpb25zKTtcblxuICB2YXIgY29tcG9uZW50SW5zdGFuY2UgPSByb290Q29tcG9uZW50Ll9fZ2V0UHVibGljSW5zdGFuY2UoKTtcblxuICBpZiAoY2FsbGJhY2spIHtcbiAgICBjYWxsYmFjay5jYWxsKGNvbXBvbmVudEluc3RhbmNlKTtcbiAgfVxuXG4gIHJldHVybiBjb21wb25lbnRJbnN0YW5jZTtcbn1cblxudmFyIHZlcnNpb24gPSBcIjEuMi4yXCI7XG5cbnZhciBEZXZ0b29sc0hvb2sgPSB7XG4gIENvbXBvbmVudFRyZWU6IHtcbiAgICBnZXRDbG9zZXN0SW5zdGFuY2VGcm9tTm9kZTogZnVuY3Rpb24gZ2V0Q2xvc2VzdEluc3RhbmNlRnJvbU5vZGUobm9kZSkge1xuICAgICAgcmV0dXJuIEluc3RhbmNlLmdldChub2RlKTtcbiAgICB9LFxuICAgIGdldE5vZGVGcm9tSW5zdGFuY2U6IGZ1bmN0aW9uIGdldE5vZGVGcm9tSW5zdGFuY2UoaW5zdCkge1xuICAgICAgLy8gaW5zdCBpcyBhbiBpbnRlcm5hbCBpbnN0YW5jZSAoYnV0IGNvdWxkIGJlIGEgY29tcG9zaXRlKVxuICAgICAgd2hpbGUgKGluc3RbUkVOREVSRURfQ09NUE9ORU5UXSkge1xuICAgICAgICBpbnN0ID0gaW5zdFtSRU5ERVJFRF9DT01QT05FTlRdO1xuICAgICAgfVxuXG4gICAgICBpZiAoaW5zdCkge1xuICAgICAgICByZXR1cm4gaW5zdC5fbmF0aXZlTm9kZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiBudWxsO1xuICAgICAgfVxuICAgIH1cbiAgfSxcbiAgTW91bnQ6IHtcbiAgICBnZXQgX2luc3RhbmNlc0J5UmVhY3RSb290SUQoKSB7XG4gICAgICB2YXIgcm9vdENvbXBvbmVudHMgPSB7fTsgLy8gSWdub3JlIGRpc3BsYXkgdG9wLWxldmVsIHJvb3QgY29tcG9uZW50XG5cbiAgICAgIGZvciAodmFyIHJvb3RJRCBpbiBIb3N0LnJvb3RDb21wb25lbnRzKSB7XG4gICAgICAgIHJvb3RDb21wb25lbnRzW3Jvb3RJRF0gPSBIb3N0LnJvb3RDb21wb25lbnRzW3Jvb3RJRF1bUkVOREVSRURfQ09NUE9ORU5UXTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJvb3RDb21wb25lbnRzO1xuICAgIH0sXG5cbiAgICBfcmVuZGVyTmV3Um9vdENvbXBvbmVudDogUmVjb25jaWxlci5yZW5kZXJOZXdSb290Q29tcG9uZW50XG4gIH0sXG4gIFJlY29uY2lsZXI6IFJlY29uY2lsZXIsXG4gIC8vIG1vbml0b3IgdGhlIGluZm8gb2YgYWxsIGNvbXBvbmVudHNcbiAgbW9uaXRvcjogbnVsbFxufTtcblxudmFyIHNoYXJlZCA9IHtcbiAgSG9zdDogSG9zdCxcbiAgSW5zdGFuY2U6IEluc3RhbmNlLFxuICBFbGVtZW50OiBFbGVtZW50LFxuICBmbGF0dGVuQ2hpbGRyZW46IGZsYXR0ZW5DaGlsZHJlblxufTtcblxue1xuICAvKiBnbG9iYWwgX19SQVhfREVWVE9PTFNfR0xPQkFMX0hPT0tfXyAqL1xuICBpZiAodHlwZW9mIF9fUkFYX0RFVlRPT0xTX0dMT0JBTF9IT09LX18gIT09ICd1bmRlZmluZWQnICYmIHR5cGVvZiBfX1JBWF9ERVZUT09MU19HTE9CQUxfSE9PS19fLmluamVjdCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIF9fUkFYX0RFVlRPT0xTX0dMT0JBTF9IT09LX18uaW5qZWN0KERldnRvb2xzSG9vayk7XG4gIH1cblxuICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICBpZiAod2luZG93Ll9fUkFYX0lOSVRJQUxJU0VEX18pIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ1dhcm5pbmc6IG1vcmUgdGhhbiBvbmUgaW5zdGFuY2Ugb2YgUmF4IGhhcyBiZWVuIGluaXRpYWxpc2VkLCB0aGlzIGNvdWxkIGxlYWQgdG8gdW5leHBlY3RlZCBiZWhhdmlvdXIuJyk7XG4gICAgfVxuXG4gICAgd2luZG93Ll9fUkFYX0lOSVRJQUxJU0VEX18gPSB0cnVlO1xuICB9XG59XG5cbmV4cG9ydHMuQ29tcG9uZW50ID0gQ29tcG9uZW50O1xuZXhwb3J0cy5GcmFnbWVudCA9IEZyYWdtZW50O1xuZXhwb3J0cy5QdXJlQ29tcG9uZW50ID0gUHVyZUNvbXBvbmVudDtcbmV4cG9ydHMuY3JlYXRlQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ7XG5leHBvcnRzLmNyZWF0ZUVsZW1lbnQgPSBjcmVhdGVFbGVtZW50O1xuZXhwb3J0cy5jcmVhdGVSZWYgPSBjcmVhdGVSZWY7XG5leHBvcnRzLmZvcndhcmRSZWYgPSBmb3J3YXJkUmVmO1xuZXhwb3J0cy5tZW1vID0gbWVtbztcbmV4cG9ydHMucmVuZGVyID0gcmVuZGVyO1xuZXhwb3J0cy5zaGFyZWQgPSBzaGFyZWQ7XG5leHBvcnRzLnVzZUNhbGxiYWNrID0gdXNlQ2FsbGJhY2s7XG5leHBvcnRzLnVzZUNvbnRleHQgPSB1c2VDb250ZXh0O1xuZXhwb3J0cy51c2VFZmZlY3QgPSB1c2VFZmZlY3Q7XG5leHBvcnRzLnVzZUltcGVyYXRpdmVIYW5kbGUgPSB1c2VJbXBlcmF0aXZlSGFuZGxlO1xuZXhwb3J0cy51c2VMYXlvdXRFZmZlY3QgPSB1c2VMYXlvdXRFZmZlY3Q7XG5leHBvcnRzLnVzZU1lbW8gPSB1c2VNZW1vO1xuZXhwb3J0cy51c2VSZWR1Y2VyID0gdXNlUmVkdWNlcjtcbmV4cG9ydHMudXNlUmVmID0gdXNlUmVmO1xuZXhwb3J0cy51c2VTdGF0ZSA9IHVzZVN0YXRlO1xuZXhwb3J0cy52ZXJzaW9uID0gdmVyc2lvbjtcbiIsImlmIChwcm9jZXNzLmVudi5OT0RFX0VOViA9PT0gJ3Byb2R1Y3Rpb24nKSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kaXN0L3JheC5taW4uanMnKTtcbn0gZWxzZSB7XG4gIG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9kaXN0L3JheC5qcycpO1xufVxuIiwiLyoqXG4gKiBDb3B5cmlnaHQgKGMpIDIwMTQtcHJlc2VudCwgRmFjZWJvb2ssIEluYy5cbiAqXG4gKiBUaGlzIHNvdXJjZSBjb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSBmb3VuZCBpbiB0aGVcbiAqIExJQ0VOU0UgZmlsZSBpbiB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhpcyBzb3VyY2UgdHJlZS5cbiAqL1xuXG52YXIgcnVudGltZSA9IChmdW5jdGlvbiAoZXhwb3J0cykge1xuICBcInVzZSBzdHJpY3RcIjtcblxuICB2YXIgT3AgPSBPYmplY3QucHJvdG90eXBlO1xuICB2YXIgaGFzT3duID0gT3AuaGFzT3duUHJvcGVydHk7XG4gIHZhciB1bmRlZmluZWQ7IC8vIE1vcmUgY29tcHJlc3NpYmxlIHRoYW4gdm9pZCAwLlxuICB2YXIgJFN5bWJvbCA9IHR5cGVvZiBTeW1ib2wgPT09IFwiZnVuY3Rpb25cIiA/IFN5bWJvbCA6IHt9O1xuICB2YXIgaXRlcmF0b3JTeW1ib2wgPSAkU3ltYm9sLml0ZXJhdG9yIHx8IFwiQEBpdGVyYXRvclwiO1xuICB2YXIgYXN5bmNJdGVyYXRvclN5bWJvbCA9ICRTeW1ib2wuYXN5bmNJdGVyYXRvciB8fCBcIkBAYXN5bmNJdGVyYXRvclwiO1xuICB2YXIgdG9TdHJpbmdUYWdTeW1ib2wgPSAkU3ltYm9sLnRvU3RyaW5nVGFnIHx8IFwiQEB0b1N0cmluZ1RhZ1wiO1xuXG4gIGZ1bmN0aW9uIGRlZmluZShvYmosIGtleSwgdmFsdWUpIHtcbiAgICBPYmplY3QuZGVmaW5lUHJvcGVydHkob2JqLCBrZXksIHtcbiAgICAgIHZhbHVlOiB2YWx1ZSxcbiAgICAgIGVudW1lcmFibGU6IHRydWUsXG4gICAgICBjb25maWd1cmFibGU6IHRydWUsXG4gICAgICB3cml0YWJsZTogdHJ1ZVxuICAgIH0pO1xuICAgIHJldHVybiBvYmpba2V5XTtcbiAgfVxuICB0cnkge1xuICAgIC8vIElFIDggaGFzIGEgYnJva2VuIE9iamVjdC5kZWZpbmVQcm9wZXJ0eSB0aGF0IG9ubHkgd29ya3Mgb24gRE9NIG9iamVjdHMuXG4gICAgZGVmaW5lKHt9LCBcIlwiKTtcbiAgfSBjYXRjaCAoZXJyKSB7XG4gICAgZGVmaW5lID0gZnVuY3Rpb24ob2JqLCBrZXksIHZhbHVlKSB7XG4gICAgICByZXR1cm4gb2JqW2tleV0gPSB2YWx1ZTtcbiAgICB9O1xuICB9XG5cbiAgZnVuY3Rpb24gd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCkge1xuICAgIC8vIElmIG91dGVyRm4gcHJvdmlkZWQgYW5kIG91dGVyRm4ucHJvdG90eXBlIGlzIGEgR2VuZXJhdG9yLCB0aGVuIG91dGVyRm4ucHJvdG90eXBlIGluc3RhbmNlb2YgR2VuZXJhdG9yLlxuICAgIHZhciBwcm90b0dlbmVyYXRvciA9IG91dGVyRm4gJiYgb3V0ZXJGbi5wcm90b3R5cGUgaW5zdGFuY2VvZiBHZW5lcmF0b3IgPyBvdXRlckZuIDogR2VuZXJhdG9yO1xuICAgIHZhciBnZW5lcmF0b3IgPSBPYmplY3QuY3JlYXRlKHByb3RvR2VuZXJhdG9yLnByb3RvdHlwZSk7XG4gICAgdmFyIGNvbnRleHQgPSBuZXcgQ29udGV4dCh0cnlMb2NzTGlzdCB8fCBbXSk7XG5cbiAgICAvLyBUaGUgLl9pbnZva2UgbWV0aG9kIHVuaWZpZXMgdGhlIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzLlxuICAgIGdlbmVyYXRvci5faW52b2tlID0gbWFrZUludm9rZU1ldGhvZChpbm5lckZuLCBzZWxmLCBjb250ZXh0KTtcblxuICAgIHJldHVybiBnZW5lcmF0b3I7XG4gIH1cbiAgZXhwb3J0cy53cmFwID0gd3JhcDtcblxuICAvLyBUcnkvY2F0Y2ggaGVscGVyIHRvIG1pbmltaXplIGRlb3B0aW1pemF0aW9ucy4gUmV0dXJucyBhIGNvbXBsZXRpb25cbiAgLy8gcmVjb3JkIGxpa2UgY29udGV4dC50cnlFbnRyaWVzW2ldLmNvbXBsZXRpb24uIFRoaXMgaW50ZXJmYWNlIGNvdWxkXG4gIC8vIGhhdmUgYmVlbiAoYW5kIHdhcyBwcmV2aW91c2x5KSBkZXNpZ25lZCB0byB0YWtlIGEgY2xvc3VyZSB0byBiZVxuICAvLyBpbnZva2VkIHdpdGhvdXQgYXJndW1lbnRzLCBidXQgaW4gYWxsIHRoZSBjYXNlcyB3ZSBjYXJlIGFib3V0IHdlXG4gIC8vIGFscmVhZHkgaGF2ZSBhbiBleGlzdGluZyBtZXRob2Qgd2Ugd2FudCB0byBjYWxsLCBzbyB0aGVyZSdzIG5vIG5lZWRcbiAgLy8gdG8gY3JlYXRlIGEgbmV3IGZ1bmN0aW9uIG9iamVjdC4gV2UgY2FuIGV2ZW4gZ2V0IGF3YXkgd2l0aCBhc3N1bWluZ1xuICAvLyB0aGUgbWV0aG9kIHRha2VzIGV4YWN0bHkgb25lIGFyZ3VtZW50LCBzaW5jZSB0aGF0IGhhcHBlbnMgdG8gYmUgdHJ1ZVxuICAvLyBpbiBldmVyeSBjYXNlLCBzbyB3ZSBkb24ndCBoYXZlIHRvIHRvdWNoIHRoZSBhcmd1bWVudHMgb2JqZWN0LiBUaGVcbiAgLy8gb25seSBhZGRpdGlvbmFsIGFsbG9jYXRpb24gcmVxdWlyZWQgaXMgdGhlIGNvbXBsZXRpb24gcmVjb3JkLCB3aGljaFxuICAvLyBoYXMgYSBzdGFibGUgc2hhcGUgYW5kIHNvIGhvcGVmdWxseSBzaG91bGQgYmUgY2hlYXAgdG8gYWxsb2NhdGUuXG4gIGZ1bmN0aW9uIHRyeUNhdGNoKGZuLCBvYmosIGFyZykge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcIm5vcm1hbFwiLCBhcmc6IGZuLmNhbGwob2JqLCBhcmcpIH07XG4gICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICByZXR1cm4geyB0eXBlOiBcInRocm93XCIsIGFyZzogZXJyIH07XG4gICAgfVxuICB9XG5cbiAgdmFyIEdlblN0YXRlU3VzcGVuZGVkU3RhcnQgPSBcInN1c3BlbmRlZFN0YXJ0XCI7XG4gIHZhciBHZW5TdGF0ZVN1c3BlbmRlZFlpZWxkID0gXCJzdXNwZW5kZWRZaWVsZFwiO1xuICB2YXIgR2VuU3RhdGVFeGVjdXRpbmcgPSBcImV4ZWN1dGluZ1wiO1xuICB2YXIgR2VuU3RhdGVDb21wbGV0ZWQgPSBcImNvbXBsZXRlZFwiO1xuXG4gIC8vIFJldHVybmluZyB0aGlzIG9iamVjdCBmcm9tIHRoZSBpbm5lckZuIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXNcbiAgLy8gYnJlYWtpbmcgb3V0IG9mIHRoZSBkaXNwYXRjaCBzd2l0Y2ggc3RhdGVtZW50LlxuICB2YXIgQ29udGludWVTZW50aW5lbCA9IHt9O1xuXG4gIC8vIER1bW15IGNvbnN0cnVjdG9yIGZ1bmN0aW9ucyB0aGF0IHdlIHVzZSBhcyB0aGUgLmNvbnN0cnVjdG9yIGFuZFxuICAvLyAuY29uc3RydWN0b3IucHJvdG90eXBlIHByb3BlcnRpZXMgZm9yIGZ1bmN0aW9ucyB0aGF0IHJldHVybiBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0cy4gRm9yIGZ1bGwgc3BlYyBjb21wbGlhbmNlLCB5b3UgbWF5IHdpc2ggdG8gY29uZmlndXJlIHlvdXJcbiAgLy8gbWluaWZpZXIgbm90IHRvIG1hbmdsZSB0aGUgbmFtZXMgb2YgdGhlc2UgdHdvIGZ1bmN0aW9ucy5cbiAgZnVuY3Rpb24gR2VuZXJhdG9yKCkge31cbiAgZnVuY3Rpb24gR2VuZXJhdG9yRnVuY3Rpb24oKSB7fVxuICBmdW5jdGlvbiBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSgpIHt9XG5cbiAgLy8gVGhpcyBpcyBhIHBvbHlmaWxsIGZvciAlSXRlcmF0b3JQcm90b3R5cGUlIGZvciBlbnZpcm9ubWVudHMgdGhhdFxuICAvLyBkb24ndCBuYXRpdmVseSBzdXBwb3J0IGl0LlxuICB2YXIgSXRlcmF0b3JQcm90b3R5cGUgPSB7fTtcbiAgZGVmaW5lKEl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcblxuICB2YXIgZ2V0UHJvdG8gPSBPYmplY3QuZ2V0UHJvdG90eXBlT2Y7XG4gIHZhciBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSA9IGdldFByb3RvICYmIGdldFByb3RvKGdldFByb3RvKHZhbHVlcyhbXSkpKTtcbiAgaWYgKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlICYmXG4gICAgICBOYXRpdmVJdGVyYXRvclByb3RvdHlwZSAhPT0gT3AgJiZcbiAgICAgIGhhc093bi5jYWxsKE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlLCBpdGVyYXRvclN5bWJvbCkpIHtcbiAgICAvLyBUaGlzIGVudmlyb25tZW50IGhhcyBhIG5hdGl2ZSAlSXRlcmF0b3JQcm90b3R5cGUlOyB1c2UgaXQgaW5zdGVhZFxuICAgIC8vIG9mIHRoZSBwb2x5ZmlsbC5cbiAgICBJdGVyYXRvclByb3RvdHlwZSA9IE5hdGl2ZUl0ZXJhdG9yUHJvdG90eXBlO1xuICB9XG5cbiAgdmFyIEdwID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUucHJvdG90eXBlID1cbiAgICBHZW5lcmF0b3IucHJvdG90eXBlID0gT2JqZWN0LmNyZWF0ZShJdGVyYXRvclByb3RvdHlwZSk7XG4gIEdlbmVyYXRvckZ1bmN0aW9uLnByb3RvdHlwZSA9IEdlbmVyYXRvckZ1bmN0aW9uUHJvdG90eXBlO1xuICBkZWZpbmUoR3AsIFwiY29uc3RydWN0b3JcIiwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICBkZWZpbmUoR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUsIFwiY29uc3RydWN0b3JcIiwgR2VuZXJhdG9yRnVuY3Rpb24pO1xuICBHZW5lcmF0b3JGdW5jdGlvbi5kaXNwbGF5TmFtZSA9IGRlZmluZShcbiAgICBHZW5lcmF0b3JGdW5jdGlvblByb3RvdHlwZSxcbiAgICB0b1N0cmluZ1RhZ1N5bWJvbCxcbiAgICBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgKTtcblxuICAvLyBIZWxwZXIgZm9yIGRlZmluaW5nIHRoZSAubmV4dCwgLnRocm93LCBhbmQgLnJldHVybiBtZXRob2RzIG9mIHRoZVxuICAvLyBJdGVyYXRvciBpbnRlcmZhY2UgaW4gdGVybXMgb2YgYSBzaW5nbGUgLl9pbnZva2UgbWV0aG9kLlxuICBmdW5jdGlvbiBkZWZpbmVJdGVyYXRvck1ldGhvZHMocHJvdG90eXBlKSB7XG4gICAgW1wibmV4dFwiLCBcInRocm93XCIsIFwicmV0dXJuXCJdLmZvckVhY2goZnVuY3Rpb24obWV0aG9kKSB7XG4gICAgICBkZWZpbmUocHJvdG90eXBlLCBtZXRob2QsIGZ1bmN0aW9uKGFyZykge1xuICAgICAgICByZXR1cm4gdGhpcy5faW52b2tlKG1ldGhvZCwgYXJnKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG5cbiAgZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgdmFyIGN0b3IgPSB0eXBlb2YgZ2VuRnVuID09PSBcImZ1bmN0aW9uXCIgJiYgZ2VuRnVuLmNvbnN0cnVjdG9yO1xuICAgIHJldHVybiBjdG9yXG4gICAgICA/IGN0b3IgPT09IEdlbmVyYXRvckZ1bmN0aW9uIHx8XG4gICAgICAgIC8vIEZvciB0aGUgbmF0aXZlIEdlbmVyYXRvckZ1bmN0aW9uIGNvbnN0cnVjdG9yLCB0aGUgYmVzdCB3ZSBjYW5cbiAgICAgICAgLy8gZG8gaXMgdG8gY2hlY2sgaXRzIC5uYW1lIHByb3BlcnR5LlxuICAgICAgICAoY3Rvci5kaXNwbGF5TmFtZSB8fCBjdG9yLm5hbWUpID09PSBcIkdlbmVyYXRvckZ1bmN0aW9uXCJcbiAgICAgIDogZmFsc2U7XG4gIH07XG5cbiAgZXhwb3J0cy5tYXJrID0gZnVuY3Rpb24oZ2VuRnVuKSB7XG4gICAgaWYgKE9iamVjdC5zZXRQcm90b3R5cGVPZikge1xuICAgICAgT2JqZWN0LnNldFByb3RvdHlwZU9mKGdlbkZ1biwgR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGUpO1xuICAgIH0gZWxzZSB7XG4gICAgICBnZW5GdW4uX19wcm90b19fID0gR2VuZXJhdG9yRnVuY3Rpb25Qcm90b3R5cGU7XG4gICAgICBkZWZpbmUoZ2VuRnVuLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JGdW5jdGlvblwiKTtcbiAgICB9XG4gICAgZ2VuRnVuLnByb3RvdHlwZSA9IE9iamVjdC5jcmVhdGUoR3ApO1xuICAgIHJldHVybiBnZW5GdW47XG4gIH07XG5cbiAgLy8gV2l0aGluIHRoZSBib2R5IG9mIGFueSBhc3luYyBmdW5jdGlvbiwgYGF3YWl0IHhgIGlzIHRyYW5zZm9ybWVkIHRvXG4gIC8vIGB5aWVsZCByZWdlbmVyYXRvclJ1bnRpbWUuYXdyYXAoeClgLCBzbyB0aGF0IHRoZSBydW50aW1lIGNhbiB0ZXN0XG4gIC8vIGBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpYCB0byBkZXRlcm1pbmUgaWYgdGhlIHlpZWxkZWQgdmFsdWUgaXNcbiAgLy8gbWVhbnQgdG8gYmUgYXdhaXRlZC5cbiAgZXhwb3J0cy5hd3JhcCA9IGZ1bmN0aW9uKGFyZykge1xuICAgIHJldHVybiB7IF9fYXdhaXQ6IGFyZyB9O1xuICB9O1xuXG4gIGZ1bmN0aW9uIEFzeW5jSXRlcmF0b3IoZ2VuZXJhdG9yLCBQcm9taXNlSW1wbCkge1xuICAgIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZywgcmVzb2x2ZSwgcmVqZWN0KSB7XG4gICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goZ2VuZXJhdG9yW21ldGhvZF0sIGdlbmVyYXRvciwgYXJnKTtcbiAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHJlamVjdChyZWNvcmQuYXJnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHZhciByZXN1bHQgPSByZWNvcmQuYXJnO1xuICAgICAgICB2YXIgdmFsdWUgPSByZXN1bHQudmFsdWU7XG4gICAgICAgIGlmICh2YWx1ZSAmJlxuICAgICAgICAgICAgdHlwZW9mIHZhbHVlID09PSBcIm9iamVjdFwiICYmXG4gICAgICAgICAgICBoYXNPd24uY2FsbCh2YWx1ZSwgXCJfX2F3YWl0XCIpKSB7XG4gICAgICAgICAgcmV0dXJuIFByb21pc2VJbXBsLnJlc29sdmUodmFsdWUuX19hd2FpdCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICAgICAgaW52b2tlKFwibmV4dFwiLCB2YWx1ZSwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgICAgIGludm9rZShcInRocm93XCIsIGVyciwgcmVzb2x2ZSwgcmVqZWN0KTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBQcm9taXNlSW1wbC5yZXNvbHZlKHZhbHVlKS50aGVuKGZ1bmN0aW9uKHVud3JhcHBlZCkge1xuICAgICAgICAgIC8vIFdoZW4gYSB5aWVsZGVkIFByb21pc2UgaXMgcmVzb2x2ZWQsIGl0cyBmaW5hbCB2YWx1ZSBiZWNvbWVzXG4gICAgICAgICAgLy8gdGhlIC52YWx1ZSBvZiB0aGUgUHJvbWlzZTx7dmFsdWUsZG9uZX0+IHJlc3VsdCBmb3IgdGhlXG4gICAgICAgICAgLy8gY3VycmVudCBpdGVyYXRpb24uXG4gICAgICAgICAgcmVzdWx0LnZhbHVlID0gdW53cmFwcGVkO1xuICAgICAgICAgIHJlc29sdmUocmVzdWx0KTtcbiAgICAgICAgfSwgZnVuY3Rpb24oZXJyb3IpIHtcbiAgICAgICAgICAvLyBJZiBhIHJlamVjdGVkIFByb21pc2Ugd2FzIHlpZWxkZWQsIHRocm93IHRoZSByZWplY3Rpb24gYmFja1xuICAgICAgICAgIC8vIGludG8gdGhlIGFzeW5jIGdlbmVyYXRvciBmdW5jdGlvbiBzbyBpdCBjYW4gYmUgaGFuZGxlZCB0aGVyZS5cbiAgICAgICAgICByZXR1cm4gaW52b2tlKFwidGhyb3dcIiwgZXJyb3IsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cblxuICAgIHZhciBwcmV2aW91c1Byb21pc2U7XG5cbiAgICBmdW5jdGlvbiBlbnF1ZXVlKG1ldGhvZCwgYXJnKSB7XG4gICAgICBmdW5jdGlvbiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpIHtcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlSW1wbChmdW5jdGlvbihyZXNvbHZlLCByZWplY3QpIHtcbiAgICAgICAgICBpbnZva2UobWV0aG9kLCBhcmcsIHJlc29sdmUsIHJlamVjdCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcHJldmlvdXNQcm9taXNlID1cbiAgICAgICAgLy8gSWYgZW5xdWV1ZSBoYXMgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIHdlIHdhbnQgdG8gd2FpdCB1bnRpbFxuICAgICAgICAvLyBhbGwgcHJldmlvdXMgUHJvbWlzZXMgaGF2ZSBiZWVuIHJlc29sdmVkIGJlZm9yZSBjYWxsaW5nIGludm9rZSxcbiAgICAgICAgLy8gc28gdGhhdCByZXN1bHRzIGFyZSBhbHdheXMgZGVsaXZlcmVkIGluIHRoZSBjb3JyZWN0IG9yZGVyLiBJZlxuICAgICAgICAvLyBlbnF1ZXVlIGhhcyBub3QgYmVlbiBjYWxsZWQgYmVmb3JlLCB0aGVuIGl0IGlzIGltcG9ydGFudCB0b1xuICAgICAgICAvLyBjYWxsIGludm9rZSBpbW1lZGlhdGVseSwgd2l0aG91dCB3YWl0aW5nIG9uIGEgY2FsbGJhY2sgdG8gZmlyZSxcbiAgICAgICAgLy8gc28gdGhhdCB0aGUgYXN5bmMgZ2VuZXJhdG9yIGZ1bmN0aW9uIGhhcyB0aGUgb3Bwb3J0dW5pdHkgdG8gZG9cbiAgICAgICAgLy8gYW55IG5lY2Vzc2FyeSBzZXR1cCBpbiBhIHByZWRpY3RhYmxlIHdheS4gVGhpcyBwcmVkaWN0YWJpbGl0eVxuICAgICAgICAvLyBpcyB3aHkgdGhlIFByb21pc2UgY29uc3RydWN0b3Igc3luY2hyb25vdXNseSBpbnZva2VzIGl0c1xuICAgICAgICAvLyBleGVjdXRvciBjYWxsYmFjaywgYW5kIHdoeSBhc3luYyBmdW5jdGlvbnMgc3luY2hyb25vdXNseVxuICAgICAgICAvLyBleGVjdXRlIGNvZGUgYmVmb3JlIHRoZSBmaXJzdCBhd2FpdC4gU2luY2Ugd2UgaW1wbGVtZW50IHNpbXBsZVxuICAgICAgICAvLyBhc3luYyBmdW5jdGlvbnMgaW4gdGVybXMgb2YgYXN5bmMgZ2VuZXJhdG9ycywgaXQgaXMgZXNwZWNpYWxseVxuICAgICAgICAvLyBpbXBvcnRhbnQgdG8gZ2V0IHRoaXMgcmlnaHQsIGV2ZW4gdGhvdWdoIGl0IHJlcXVpcmVzIGNhcmUuXG4gICAgICAgIHByZXZpb3VzUHJvbWlzZSA/IHByZXZpb3VzUHJvbWlzZS50aGVuKFxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnLFxuICAgICAgICAgIC8vIEF2b2lkIHByb3BhZ2F0aW5nIGZhaWx1cmVzIHRvIFByb21pc2VzIHJldHVybmVkIGJ5IGxhdGVyXG4gICAgICAgICAgLy8gaW52b2NhdGlvbnMgb2YgdGhlIGl0ZXJhdG9yLlxuICAgICAgICAgIGNhbGxJbnZva2VXaXRoTWV0aG9kQW5kQXJnXG4gICAgICAgICkgOiBjYWxsSW52b2tlV2l0aE1ldGhvZEFuZEFyZygpO1xuICAgIH1cblxuICAgIC8vIERlZmluZSB0aGUgdW5pZmllZCBoZWxwZXIgbWV0aG9kIHRoYXQgaXMgdXNlZCB0byBpbXBsZW1lbnQgLm5leHQsXG4gICAgLy8gLnRocm93LCBhbmQgLnJldHVybiAoc2VlIGRlZmluZUl0ZXJhdG9yTWV0aG9kcykuXG4gICAgdGhpcy5faW52b2tlID0gZW5xdWV1ZTtcbiAgfVxuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSk7XG4gIGRlZmluZShBc3luY0l0ZXJhdG9yLnByb3RvdHlwZSwgYXN5bmNJdGVyYXRvclN5bWJvbCwgZnVuY3Rpb24gKCkge1xuICAgIHJldHVybiB0aGlzO1xuICB9KTtcbiAgZXhwb3J0cy5Bc3luY0l0ZXJhdG9yID0gQXN5bmNJdGVyYXRvcjtcblxuICAvLyBOb3RlIHRoYXQgc2ltcGxlIGFzeW5jIGZ1bmN0aW9ucyBhcmUgaW1wbGVtZW50ZWQgb24gdG9wIG9mXG4gIC8vIEFzeW5jSXRlcmF0b3Igb2JqZWN0czsgdGhleSBqdXN0IHJldHVybiBhIFByb21pc2UgZm9yIHRoZSB2YWx1ZSBvZlxuICAvLyB0aGUgZmluYWwgcmVzdWx0IHByb2R1Y2VkIGJ5IHRoZSBpdGVyYXRvci5cbiAgZXhwb3J0cy5hc3luYyA9IGZ1bmN0aW9uKGlubmVyRm4sIG91dGVyRm4sIHNlbGYsIHRyeUxvY3NMaXN0LCBQcm9taXNlSW1wbCkge1xuICAgIGlmIChQcm9taXNlSW1wbCA9PT0gdm9pZCAwKSBQcm9taXNlSW1wbCA9IFByb21pc2U7XG5cbiAgICB2YXIgaXRlciA9IG5ldyBBc3luY0l0ZXJhdG9yKFxuICAgICAgd3JhcChpbm5lckZuLCBvdXRlckZuLCBzZWxmLCB0cnlMb2NzTGlzdCksXG4gICAgICBQcm9taXNlSW1wbFxuICAgICk7XG5cbiAgICByZXR1cm4gZXhwb3J0cy5pc0dlbmVyYXRvckZ1bmN0aW9uKG91dGVyRm4pXG4gICAgICA/IGl0ZXIgLy8gSWYgb3V0ZXJGbiBpcyBhIGdlbmVyYXRvciwgcmV0dXJuIHRoZSBmdWxsIGl0ZXJhdG9yLlxuICAgICAgOiBpdGVyLm5leHQoKS50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xuICAgICAgICAgIHJldHVybiByZXN1bHQuZG9uZSA/IHJlc3VsdC52YWx1ZSA6IGl0ZXIubmV4dCgpO1xuICAgICAgICB9KTtcbiAgfTtcblxuICBmdW5jdGlvbiBtYWtlSW52b2tlTWV0aG9kKGlubmVyRm4sIHNlbGYsIGNvbnRleHQpIHtcbiAgICB2YXIgc3RhdGUgPSBHZW5TdGF0ZVN1c3BlbmRlZFN0YXJ0O1xuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIGludm9rZShtZXRob2QsIGFyZykge1xuICAgICAgaWYgKHN0YXRlID09PSBHZW5TdGF0ZUV4ZWN1dGluZykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJHZW5lcmF0b3IgaXMgYWxyZWFkeSBydW5uaW5nXCIpO1xuICAgICAgfVxuXG4gICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlQ29tcGxldGVkKSB7XG4gICAgICAgIGlmIChtZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHRocm93IGFyZztcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEJlIGZvcmdpdmluZywgcGVyIDI1LjMuMy4zLjMgb2YgdGhlIHNwZWM6XG4gICAgICAgIC8vIGh0dHBzOi8vcGVvcGxlLm1vemlsbGEub3JnL35qb3JlbmRvcmZmL2VzNi1kcmFmdC5odG1sI3NlYy1nZW5lcmF0b3JyZXN1bWVcbiAgICAgICAgcmV0dXJuIGRvbmVSZXN1bHQoKTtcbiAgICAgIH1cblxuICAgICAgY29udGV4dC5tZXRob2QgPSBtZXRob2Q7XG4gICAgICBjb250ZXh0LmFyZyA9IGFyZztcblxuICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgdmFyIGRlbGVnYXRlID0gY29udGV4dC5kZWxlZ2F0ZTtcbiAgICAgICAgaWYgKGRlbGVnYXRlKSB7XG4gICAgICAgICAgdmFyIGRlbGVnYXRlUmVzdWx0ID0gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG4gICAgICAgICAgaWYgKGRlbGVnYXRlUmVzdWx0KSB7XG4gICAgICAgICAgICBpZiAoZGVsZWdhdGVSZXN1bHQgPT09IENvbnRpbnVlU2VudGluZWwpIGNvbnRpbnVlO1xuICAgICAgICAgICAgcmV0dXJuIGRlbGVnYXRlUmVzdWx0O1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgICAvLyBTZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgICAgICAvLyBmdW5jdGlvbi5zZW50IGltcGxlbWVudGF0aW9uLlxuICAgICAgICAgIGNvbnRleHQuc2VudCA9IGNvbnRleHQuX3NlbnQgPSBjb250ZXh0LmFyZztcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgICBpZiAoc3RhdGUgPT09IEdlblN0YXRlU3VzcGVuZGVkU3RhcnQpIHtcbiAgICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgICB0aHJvdyBjb250ZXh0LmFyZztcbiAgICAgICAgICB9XG5cbiAgICAgICAgICBjb250ZXh0LmRpc3BhdGNoRXhjZXB0aW9uKGNvbnRleHQuYXJnKTtcblxuICAgICAgICB9IGVsc2UgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInJldHVyblwiKSB7XG4gICAgICAgICAgY29udGV4dC5hYnJ1cHQoXCJyZXR1cm5cIiwgY29udGV4dC5hcmcpO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUgPSBHZW5TdGF0ZUV4ZWN1dGluZztcblxuICAgICAgICB2YXIgcmVjb3JkID0gdHJ5Q2F0Y2goaW5uZXJGbiwgc2VsZiwgY29udGV4dCk7XG4gICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJub3JtYWxcIikge1xuICAgICAgICAgIC8vIElmIGFuIGV4Y2VwdGlvbiBpcyB0aHJvd24gZnJvbSBpbm5lckZuLCB3ZSBsZWF2ZSBzdGF0ZSA9PT1cbiAgICAgICAgICAvLyBHZW5TdGF0ZUV4ZWN1dGluZyBhbmQgbG9vcCBiYWNrIGZvciBhbm90aGVyIGludm9jYXRpb24uXG4gICAgICAgICAgc3RhdGUgPSBjb250ZXh0LmRvbmVcbiAgICAgICAgICAgID8gR2VuU3RhdGVDb21wbGV0ZWRcbiAgICAgICAgICAgIDogR2VuU3RhdGVTdXNwZW5kZWRZaWVsZDtcblxuICAgICAgICAgIGlmIChyZWNvcmQuYXJnID09PSBDb250aW51ZVNlbnRpbmVsKSB7XG4gICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdmFsdWU6IHJlY29yZC5hcmcsXG4gICAgICAgICAgICBkb25lOiBjb250ZXh0LmRvbmVcbiAgICAgICAgICB9O1xuXG4gICAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgIHN0YXRlID0gR2VuU3RhdGVDb21wbGV0ZWQ7XG4gICAgICAgICAgLy8gRGlzcGF0Y2ggdGhlIGV4Y2VwdGlvbiBieSBsb29waW5nIGJhY2sgYXJvdW5kIHRvIHRoZVxuICAgICAgICAgIC8vIGNvbnRleHQuZGlzcGF0Y2hFeGNlcHRpb24oY29udGV4dC5hcmcpIGNhbGwgYWJvdmUuXG4gICAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIC8vIENhbGwgZGVsZWdhdGUuaXRlcmF0b3JbY29udGV4dC5tZXRob2RdKGNvbnRleHQuYXJnKSBhbmQgaGFuZGxlIHRoZVxuICAvLyByZXN1bHQsIGVpdGhlciBieSByZXR1cm5pbmcgYSB7IHZhbHVlLCBkb25lIH0gcmVzdWx0IGZyb20gdGhlXG4gIC8vIGRlbGVnYXRlIGl0ZXJhdG9yLCBvciBieSBtb2RpZnlpbmcgY29udGV4dC5tZXRob2QgYW5kIGNvbnRleHQuYXJnLFxuICAvLyBzZXR0aW5nIGNvbnRleHQuZGVsZWdhdGUgdG8gbnVsbCwgYW5kIHJldHVybmluZyB0aGUgQ29udGludWVTZW50aW5lbC5cbiAgZnVuY3Rpb24gbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCkge1xuICAgIHZhciBtZXRob2QgPSBkZWxlZ2F0ZS5pdGVyYXRvcltjb250ZXh0Lm1ldGhvZF07XG4gICAgaWYgKG1ldGhvZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAvLyBBIC50aHJvdyBvciAucmV0dXJuIHdoZW4gdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBubyAudGhyb3dcbiAgICAgIC8vIG1ldGhvZCBhbHdheXMgdGVybWluYXRlcyB0aGUgeWllbGQqIGxvb3AuXG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgaWYgKGNvbnRleHQubWV0aG9kID09PSBcInRocm93XCIpIHtcbiAgICAgICAgLy8gTm90ZTogW1wicmV0dXJuXCJdIG11c3QgYmUgdXNlZCBmb3IgRVMzIHBhcnNpbmcgY29tcGF0aWJpbGl0eS5cbiAgICAgICAgaWYgKGRlbGVnYXRlLml0ZXJhdG9yW1wicmV0dXJuXCJdKSB7XG4gICAgICAgICAgLy8gSWYgdGhlIGRlbGVnYXRlIGl0ZXJhdG9yIGhhcyBhIHJldHVybiBtZXRob2QsIGdpdmUgaXQgYVxuICAgICAgICAgIC8vIGNoYW5jZSB0byBjbGVhbiB1cC5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgICAgY29udGV4dC5hcmcgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgbWF5YmVJbnZva2VEZWxlZ2F0ZShkZWxlZ2F0ZSwgY29udGV4dCk7XG5cbiAgICAgICAgICBpZiAoY29udGV4dC5tZXRob2QgPT09IFwidGhyb3dcIikge1xuICAgICAgICAgICAgLy8gSWYgbWF5YmVJbnZva2VEZWxlZ2F0ZShjb250ZXh0KSBjaGFuZ2VkIGNvbnRleHQubWV0aG9kIGZyb21cbiAgICAgICAgICAgIC8vIFwicmV0dXJuXCIgdG8gXCJ0aHJvd1wiLCBsZXQgdGhhdCBvdmVycmlkZSB0aGUgVHlwZUVycm9yIGJlbG93LlxuICAgICAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICAgIGNvbnRleHQuYXJnID0gbmV3IFR5cGVFcnJvcihcbiAgICAgICAgICBcIlRoZSBpdGVyYXRvciBkb2VzIG5vdCBwcm92aWRlIGEgJ3Rocm93JyBtZXRob2RcIik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciByZWNvcmQgPSB0cnlDYXRjaChtZXRob2QsIGRlbGVnYXRlLml0ZXJhdG9yLCBjb250ZXh0LmFyZyk7XG5cbiAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgY29udGV4dC5tZXRob2QgPSBcInRocm93XCI7XG4gICAgICBjb250ZXh0LmFyZyA9IHJlY29yZC5hcmc7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIHZhciBpbmZvID0gcmVjb3JkLmFyZztcblxuICAgIGlmICghIGluZm8pIHtcbiAgICAgIGNvbnRleHQubWV0aG9kID0gXCJ0aHJvd1wiO1xuICAgICAgY29udGV4dC5hcmcgPSBuZXcgVHlwZUVycm9yKFwiaXRlcmF0b3IgcmVzdWx0IGlzIG5vdCBhbiBvYmplY3RcIik7XG4gICAgICBjb250ZXh0LmRlbGVnYXRlID0gbnVsbDtcbiAgICAgIHJldHVybiBDb250aW51ZVNlbnRpbmVsO1xuICAgIH1cblxuICAgIGlmIChpbmZvLmRvbmUpIHtcbiAgICAgIC8vIEFzc2lnbiB0aGUgcmVzdWx0IG9mIHRoZSBmaW5pc2hlZCBkZWxlZ2F0ZSB0byB0aGUgdGVtcG9yYXJ5XG4gICAgICAvLyB2YXJpYWJsZSBzcGVjaWZpZWQgYnkgZGVsZWdhdGUucmVzdWx0TmFtZSAoc2VlIGRlbGVnYXRlWWllbGQpLlxuICAgICAgY29udGV4dFtkZWxlZ2F0ZS5yZXN1bHROYW1lXSA9IGluZm8udmFsdWU7XG5cbiAgICAgIC8vIFJlc3VtZSBleGVjdXRpb24gYXQgdGhlIGRlc2lyZWQgbG9jYXRpb24gKHNlZSBkZWxlZ2F0ZVlpZWxkKS5cbiAgICAgIGNvbnRleHQubmV4dCA9IGRlbGVnYXRlLm5leHRMb2M7XG5cbiAgICAgIC8vIElmIGNvbnRleHQubWV0aG9kIHdhcyBcInRocm93XCIgYnV0IHRoZSBkZWxlZ2F0ZSBoYW5kbGVkIHRoZVxuICAgICAgLy8gZXhjZXB0aW9uLCBsZXQgdGhlIG91dGVyIGdlbmVyYXRvciBwcm9jZWVkIG5vcm1hbGx5LiBJZlxuICAgICAgLy8gY29udGV4dC5tZXRob2Qgd2FzIFwibmV4dFwiLCBmb3JnZXQgY29udGV4dC5hcmcgc2luY2UgaXQgaGFzIGJlZW5cbiAgICAgIC8vIFwiY29uc3VtZWRcIiBieSB0aGUgZGVsZWdhdGUgaXRlcmF0b3IuIElmIGNvbnRleHQubWV0aG9kIHdhc1xuICAgICAgLy8gXCJyZXR1cm5cIiwgYWxsb3cgdGhlIG9yaWdpbmFsIC5yZXR1cm4gY2FsbCB0byBjb250aW51ZSBpbiB0aGVcbiAgICAgIC8vIG91dGVyIGdlbmVyYXRvci5cbiAgICAgIGlmIChjb250ZXh0Lm1ldGhvZCAhPT0gXCJyZXR1cm5cIikge1xuICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICBjb250ZXh0LmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgIH0gZWxzZSB7XG4gICAgICAvLyBSZS15aWVsZCB0aGUgcmVzdWx0IHJldHVybmVkIGJ5IHRoZSBkZWxlZ2F0ZSBtZXRob2QuXG4gICAgICByZXR1cm4gaW5mbztcbiAgICB9XG5cbiAgICAvLyBUaGUgZGVsZWdhdGUgaXRlcmF0b3IgaXMgZmluaXNoZWQsIHNvIGZvcmdldCBpdCBhbmQgY29udGludWUgd2l0aFxuICAgIC8vIHRoZSBvdXRlciBnZW5lcmF0b3IuXG4gICAgY29udGV4dC5kZWxlZ2F0ZSA9IG51bGw7XG4gICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gIH1cblxuICAvLyBEZWZpbmUgR2VuZXJhdG9yLnByb3RvdHlwZS57bmV4dCx0aHJvdyxyZXR1cm59IGluIHRlcm1zIG9mIHRoZVxuICAvLyB1bmlmaWVkIC5faW52b2tlIGhlbHBlciBtZXRob2QuXG4gIGRlZmluZUl0ZXJhdG9yTWV0aG9kcyhHcCk7XG5cbiAgZGVmaW5lKEdwLCB0b1N0cmluZ1RhZ1N5bWJvbCwgXCJHZW5lcmF0b3JcIik7XG5cbiAgLy8gQSBHZW5lcmF0b3Igc2hvdWxkIGFsd2F5cyByZXR1cm4gaXRzZWxmIGFzIHRoZSBpdGVyYXRvciBvYmplY3Qgd2hlbiB0aGVcbiAgLy8gQEBpdGVyYXRvciBmdW5jdGlvbiBpcyBjYWxsZWQgb24gaXQuIFNvbWUgYnJvd3NlcnMnIGltcGxlbWVudGF0aW9ucyBvZiB0aGVcbiAgLy8gaXRlcmF0b3IgcHJvdG90eXBlIGNoYWluIGluY29ycmVjdGx5IGltcGxlbWVudCB0aGlzLCBjYXVzaW5nIHRoZSBHZW5lcmF0b3JcbiAgLy8gb2JqZWN0IHRvIG5vdCBiZSByZXR1cm5lZCBmcm9tIHRoaXMgY2FsbC4gVGhpcyBlbnN1cmVzIHRoYXQgZG9lc24ndCBoYXBwZW4uXG4gIC8vIFNlZSBodHRwczovL2dpdGh1Yi5jb20vZmFjZWJvb2svcmVnZW5lcmF0b3IvaXNzdWVzLzI3NCBmb3IgbW9yZSBkZXRhaWxzLlxuICBkZWZpbmUoR3AsIGl0ZXJhdG9yU3ltYm9sLCBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gdGhpcztcbiAgfSk7XG5cbiAgZGVmaW5lKEdwLCBcInRvU3RyaW5nXCIsIGZ1bmN0aW9uKCkge1xuICAgIHJldHVybiBcIltvYmplY3QgR2VuZXJhdG9yXVwiO1xuICB9KTtcblxuICBmdW5jdGlvbiBwdXNoVHJ5RW50cnkobG9jcykge1xuICAgIHZhciBlbnRyeSA9IHsgdHJ5TG9jOiBsb2NzWzBdIH07XG5cbiAgICBpZiAoMSBpbiBsb2NzKSB7XG4gICAgICBlbnRyeS5jYXRjaExvYyA9IGxvY3NbMV07XG4gICAgfVxuXG4gICAgaWYgKDIgaW4gbG9jcykge1xuICAgICAgZW50cnkuZmluYWxseUxvYyA9IGxvY3NbMl07XG4gICAgICBlbnRyeS5hZnRlckxvYyA9IGxvY3NbM107XG4gICAgfVxuXG4gICAgdGhpcy50cnlFbnRyaWVzLnB1c2goZW50cnkpO1xuICB9XG5cbiAgZnVuY3Rpb24gcmVzZXRUcnlFbnRyeShlbnRyeSkge1xuICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uIHx8IHt9O1xuICAgIHJlY29yZC50eXBlID0gXCJub3JtYWxcIjtcbiAgICBkZWxldGUgcmVjb3JkLmFyZztcbiAgICBlbnRyeS5jb21wbGV0aW9uID0gcmVjb3JkO1xuICB9XG5cbiAgZnVuY3Rpb24gQ29udGV4dCh0cnlMb2NzTGlzdCkge1xuICAgIC8vIFRoZSByb290IGVudHJ5IG9iamVjdCAoZWZmZWN0aXZlbHkgYSB0cnkgc3RhdGVtZW50IHdpdGhvdXQgYSBjYXRjaFxuICAgIC8vIG9yIGEgZmluYWxseSBibG9jaykgZ2l2ZXMgdXMgYSBwbGFjZSB0byBzdG9yZSB2YWx1ZXMgdGhyb3duIGZyb21cbiAgICAvLyBsb2NhdGlvbnMgd2hlcmUgdGhlcmUgaXMgbm8gZW5jbG9zaW5nIHRyeSBzdGF0ZW1lbnQuXG4gICAgdGhpcy50cnlFbnRyaWVzID0gW3sgdHJ5TG9jOiBcInJvb3RcIiB9XTtcbiAgICB0cnlMb2NzTGlzdC5mb3JFYWNoKHB1c2hUcnlFbnRyeSwgdGhpcyk7XG4gICAgdGhpcy5yZXNldCh0cnVlKTtcbiAgfVxuXG4gIGV4cG9ydHMua2V5cyA9IGZ1bmN0aW9uKG9iamVjdCkge1xuICAgIHZhciBrZXlzID0gW107XG4gICAgZm9yICh2YXIga2V5IGluIG9iamVjdCkge1xuICAgICAga2V5cy5wdXNoKGtleSk7XG4gICAgfVxuICAgIGtleXMucmV2ZXJzZSgpO1xuXG4gICAgLy8gUmF0aGVyIHRoYW4gcmV0dXJuaW5nIGFuIG9iamVjdCB3aXRoIGEgbmV4dCBtZXRob2QsIHdlIGtlZXBcbiAgICAvLyB0aGluZ3Mgc2ltcGxlIGFuZCByZXR1cm4gdGhlIG5leHQgZnVuY3Rpb24gaXRzZWxmLlxuICAgIHJldHVybiBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgd2hpbGUgKGtleXMubGVuZ3RoKSB7XG4gICAgICAgIHZhciBrZXkgPSBrZXlzLnBvcCgpO1xuICAgICAgICBpZiAoa2V5IGluIG9iamVjdCkge1xuICAgICAgICAgIG5leHQudmFsdWUgPSBrZXk7XG4gICAgICAgICAgbmV4dC5kb25lID0gZmFsc2U7XG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgLy8gVG8gYXZvaWQgY3JlYXRpbmcgYW4gYWRkaXRpb25hbCBvYmplY3QsIHdlIGp1c3QgaGFuZyB0aGUgLnZhbHVlXG4gICAgICAvLyBhbmQgLmRvbmUgcHJvcGVydGllcyBvZmYgdGhlIG5leHQgZnVuY3Rpb24gb2JqZWN0IGl0c2VsZi4gVGhpc1xuICAgICAgLy8gYWxzbyBlbnN1cmVzIHRoYXQgdGhlIG1pbmlmaWVyIHdpbGwgbm90IGFub255bWl6ZSB0aGUgZnVuY3Rpb24uXG4gICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuICAgICAgcmV0dXJuIG5leHQ7XG4gICAgfTtcbiAgfTtcblxuICBmdW5jdGlvbiB2YWx1ZXMoaXRlcmFibGUpIHtcbiAgICBpZiAoaXRlcmFibGUpIHtcbiAgICAgIHZhciBpdGVyYXRvck1ldGhvZCA9IGl0ZXJhYmxlW2l0ZXJhdG9yU3ltYm9sXTtcbiAgICAgIGlmIChpdGVyYXRvck1ldGhvZCkge1xuICAgICAgICByZXR1cm4gaXRlcmF0b3JNZXRob2QuY2FsbChpdGVyYWJsZSk7XG4gICAgICB9XG5cbiAgICAgIGlmICh0eXBlb2YgaXRlcmFibGUubmV4dCA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgICAgIHJldHVybiBpdGVyYWJsZTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFpc05hTihpdGVyYWJsZS5sZW5ndGgpKSB7XG4gICAgICAgIHZhciBpID0gLTEsIG5leHQgPSBmdW5jdGlvbiBuZXh0KCkge1xuICAgICAgICAgIHdoaWxlICgrK2kgPCBpdGVyYWJsZS5sZW5ndGgpIHtcbiAgICAgICAgICAgIGlmIChoYXNPd24uY2FsbChpdGVyYWJsZSwgaSkpIHtcbiAgICAgICAgICAgICAgbmV4dC52YWx1ZSA9IGl0ZXJhYmxlW2ldO1xuICAgICAgICAgICAgICBuZXh0LmRvbmUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgbmV4dC52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgICBuZXh0LmRvbmUgPSB0cnVlO1xuXG4gICAgICAgICAgcmV0dXJuIG5leHQ7XG4gICAgICAgIH07XG5cbiAgICAgICAgcmV0dXJuIG5leHQubmV4dCA9IG5leHQ7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gUmV0dXJuIGFuIGl0ZXJhdG9yIHdpdGggbm8gdmFsdWVzLlxuICAgIHJldHVybiB7IG5leHQ6IGRvbmVSZXN1bHQgfTtcbiAgfVxuICBleHBvcnRzLnZhbHVlcyA9IHZhbHVlcztcblxuICBmdW5jdGlvbiBkb25lUmVzdWx0KCkge1xuICAgIHJldHVybiB7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfTtcbiAgfVxuXG4gIENvbnRleHQucHJvdG90eXBlID0ge1xuICAgIGNvbnN0cnVjdG9yOiBDb250ZXh0LFxuXG4gICAgcmVzZXQ6IGZ1bmN0aW9uKHNraXBUZW1wUmVzZXQpIHtcbiAgICAgIHRoaXMucHJldiA9IDA7XG4gICAgICB0aGlzLm5leHQgPSAwO1xuICAgICAgLy8gUmVzZXR0aW5nIGNvbnRleHQuX3NlbnQgZm9yIGxlZ2FjeSBzdXBwb3J0IG9mIEJhYmVsJ3NcbiAgICAgIC8vIGZ1bmN0aW9uLnNlbnQgaW1wbGVtZW50YXRpb24uXG4gICAgICB0aGlzLnNlbnQgPSB0aGlzLl9zZW50ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5kb25lID0gZmFsc2U7XG4gICAgICB0aGlzLmRlbGVnYXRlID0gbnVsbDtcblxuICAgICAgdGhpcy5tZXRob2QgPSBcIm5leHRcIjtcbiAgICAgIHRoaXMuYXJnID0gdW5kZWZpbmVkO1xuXG4gICAgICB0aGlzLnRyeUVudHJpZXMuZm9yRWFjaChyZXNldFRyeUVudHJ5KTtcblxuICAgICAgaWYgKCFza2lwVGVtcFJlc2V0KSB7XG4gICAgICAgIGZvciAodmFyIG5hbWUgaW4gdGhpcykge1xuICAgICAgICAgIC8vIE5vdCBzdXJlIGFib3V0IHRoZSBvcHRpbWFsIG9yZGVyIG9mIHRoZXNlIGNvbmRpdGlvbnM6XG4gICAgICAgICAgaWYgKG5hbWUuY2hhckF0KDApID09PSBcInRcIiAmJlxuICAgICAgICAgICAgICBoYXNPd24uY2FsbCh0aGlzLCBuYW1lKSAmJlxuICAgICAgICAgICAgICAhaXNOYU4oK25hbWUuc2xpY2UoMSkpKSB7XG4gICAgICAgICAgICB0aGlzW25hbWVdID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBzdG9wOiBmdW5jdGlvbigpIHtcbiAgICAgIHRoaXMuZG9uZSA9IHRydWU7XG5cbiAgICAgIHZhciByb290RW50cnkgPSB0aGlzLnRyeUVudHJpZXNbMF07XG4gICAgICB2YXIgcm9vdFJlY29yZCA9IHJvb3RFbnRyeS5jb21wbGV0aW9uO1xuICAgICAgaWYgKHJvb3RSZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgIHRocm93IHJvb3RSZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gdGhpcy5ydmFsO1xuICAgIH0sXG5cbiAgICBkaXNwYXRjaEV4Y2VwdGlvbjogZnVuY3Rpb24oZXhjZXB0aW9uKSB7XG4gICAgICBpZiAodGhpcy5kb25lKSB7XG4gICAgICAgIHRocm93IGV4Y2VwdGlvbjtcbiAgICAgIH1cblxuICAgICAgdmFyIGNvbnRleHQgPSB0aGlzO1xuICAgICAgZnVuY3Rpb24gaGFuZGxlKGxvYywgY2F1Z2h0KSB7XG4gICAgICAgIHJlY29yZC50eXBlID0gXCJ0aHJvd1wiO1xuICAgICAgICByZWNvcmQuYXJnID0gZXhjZXB0aW9uO1xuICAgICAgICBjb250ZXh0Lm5leHQgPSBsb2M7XG5cbiAgICAgICAgaWYgKGNhdWdodCkge1xuICAgICAgICAgIC8vIElmIHRoZSBkaXNwYXRjaGVkIGV4Y2VwdGlvbiB3YXMgY2F1Z2h0IGJ5IGEgY2F0Y2ggYmxvY2ssXG4gICAgICAgICAgLy8gdGhlbiBsZXQgdGhhdCBjYXRjaCBibG9jayBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBub3JtYWxseS5cbiAgICAgICAgICBjb250ZXh0Lm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICAgIGNvbnRleHQuYXJnID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG5cbiAgICAgICAgcmV0dXJuICEhIGNhdWdodDtcbiAgICAgIH1cblxuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuXG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IFwicm9vdFwiKSB7XG4gICAgICAgICAgLy8gRXhjZXB0aW9uIHRocm93biBvdXRzaWRlIG9mIGFueSB0cnkgYmxvY2sgdGhhdCBjb3VsZCBoYW5kbGVcbiAgICAgICAgICAvLyBpdCwgc28gc2V0IHRoZSBjb21wbGV0aW9uIHZhbHVlIG9mIHRoZSBlbnRpcmUgZnVuY3Rpb24gdG9cbiAgICAgICAgICAvLyB0aHJvdyB0aGUgZXhjZXB0aW9uLlxuICAgICAgICAgIHJldHVybiBoYW5kbGUoXCJlbmRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldikge1xuICAgICAgICAgIHZhciBoYXNDYXRjaCA9IGhhc093bi5jYWxsKGVudHJ5LCBcImNhdGNoTG9jXCIpO1xuICAgICAgICAgIHZhciBoYXNGaW5hbGx5ID0gaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKTtcblxuICAgICAgICAgIGlmIChoYXNDYXRjaCAmJiBoYXNGaW5hbGx5KSB7XG4gICAgICAgICAgICBpZiAodGhpcy5wcmV2IDwgZW50cnkuY2F0Y2hMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5jYXRjaExvYywgdHJ1ZSk7XG4gICAgICAgICAgICB9IGVsc2UgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzQ2F0Y2gpIHtcbiAgICAgICAgICAgIGlmICh0aGlzLnByZXYgPCBlbnRyeS5jYXRjaExvYykge1xuICAgICAgICAgICAgICByZXR1cm4gaGFuZGxlKGVudHJ5LmNhdGNoTG9jLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSBpZiAoaGFzRmluYWxseSkge1xuICAgICAgICAgICAgaWYgKHRoaXMucHJldiA8IGVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgICAgICAgcmV0dXJuIGhhbmRsZShlbnRyeS5maW5hbGx5TG9jKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXCJ0cnkgc3RhdGVtZW50IHdpdGhvdXQgY2F0Y2ggb3IgZmluYWxseVwiKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9LFxuXG4gICAgYWJydXB0OiBmdW5jdGlvbih0eXBlLCBhcmcpIHtcbiAgICAgIGZvciAodmFyIGkgPSB0aGlzLnRyeUVudHJpZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHtcbiAgICAgICAgdmFyIGVudHJ5ID0gdGhpcy50cnlFbnRyaWVzW2ldO1xuICAgICAgICBpZiAoZW50cnkudHJ5TG9jIDw9IHRoaXMucHJldiAmJlxuICAgICAgICAgICAgaGFzT3duLmNhbGwoZW50cnksIFwiZmluYWxseUxvY1wiKSAmJlxuICAgICAgICAgICAgdGhpcy5wcmV2IDwgZW50cnkuZmluYWxseUxvYykge1xuICAgICAgICAgIHZhciBmaW5hbGx5RW50cnkgPSBlbnRyeTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoZmluYWxseUVudHJ5ICYmXG4gICAgICAgICAgKHR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgICB0eXBlID09PSBcImNvbnRpbnVlXCIpICYmXG4gICAgICAgICAgZmluYWxseUVudHJ5LnRyeUxvYyA8PSBhcmcgJiZcbiAgICAgICAgICBhcmcgPD0gZmluYWxseUVudHJ5LmZpbmFsbHlMb2MpIHtcbiAgICAgICAgLy8gSWdub3JlIHRoZSBmaW5hbGx5IGVudHJ5IGlmIGNvbnRyb2wgaXMgbm90IGp1bXBpbmcgdG8gYVxuICAgICAgICAvLyBsb2NhdGlvbiBvdXRzaWRlIHRoZSB0cnkvY2F0Y2ggYmxvY2suXG4gICAgICAgIGZpbmFsbHlFbnRyeSA9IG51bGw7XG4gICAgICB9XG5cbiAgICAgIHZhciByZWNvcmQgPSBmaW5hbGx5RW50cnkgPyBmaW5hbGx5RW50cnkuY29tcGxldGlvbiA6IHt9O1xuICAgICAgcmVjb3JkLnR5cGUgPSB0eXBlO1xuICAgICAgcmVjb3JkLmFyZyA9IGFyZztcblxuICAgICAgaWYgKGZpbmFsbHlFbnRyeSkge1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwibmV4dFwiO1xuICAgICAgICB0aGlzLm5leHQgPSBmaW5hbGx5RW50cnkuZmluYWxseUxvYztcbiAgICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzLmNvbXBsZXRlKHJlY29yZCk7XG4gICAgfSxcblxuICAgIGNvbXBsZXRlOiBmdW5jdGlvbihyZWNvcmQsIGFmdGVyTG9jKSB7XG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwidGhyb3dcIikge1xuICAgICAgICB0aHJvdyByZWNvcmQuYXJnO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVjb3JkLnR5cGUgPT09IFwiYnJlYWtcIiB8fFxuICAgICAgICAgIHJlY29yZC50eXBlID09PSBcImNvbnRpbnVlXCIpIHtcbiAgICAgICAgdGhpcy5uZXh0ID0gcmVjb3JkLmFyZztcbiAgICAgIH0gZWxzZSBpZiAocmVjb3JkLnR5cGUgPT09IFwicmV0dXJuXCIpIHtcbiAgICAgICAgdGhpcy5ydmFsID0gdGhpcy5hcmcgPSByZWNvcmQuYXJnO1xuICAgICAgICB0aGlzLm1ldGhvZCA9IFwicmV0dXJuXCI7XG4gICAgICAgIHRoaXMubmV4dCA9IFwiZW5kXCI7XG4gICAgICB9IGVsc2UgaWYgKHJlY29yZC50eXBlID09PSBcIm5vcm1hbFwiICYmIGFmdGVyTG9jKSB7XG4gICAgICAgIHRoaXMubmV4dCA9IGFmdGVyTG9jO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICB9LFxuXG4gICAgZmluaXNoOiBmdW5jdGlvbihmaW5hbGx5TG9jKSB7XG4gICAgICBmb3IgKHZhciBpID0gdGhpcy50cnlFbnRyaWVzLmxlbmd0aCAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICAgIHZhciBlbnRyeSA9IHRoaXMudHJ5RW50cmllc1tpXTtcbiAgICAgICAgaWYgKGVudHJ5LmZpbmFsbHlMb2MgPT09IGZpbmFsbHlMb2MpIHtcbiAgICAgICAgICB0aGlzLmNvbXBsZXRlKGVudHJ5LmNvbXBsZXRpb24sIGVudHJ5LmFmdGVyTG9jKTtcbiAgICAgICAgICByZXNldFRyeUVudHJ5KGVudHJ5KTtcbiAgICAgICAgICByZXR1cm4gQ29udGludWVTZW50aW5lbDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG5cbiAgICBcImNhdGNoXCI6IGZ1bmN0aW9uKHRyeUxvYykge1xuICAgICAgZm9yICh2YXIgaSA9IHRoaXMudHJ5RW50cmllcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkge1xuICAgICAgICB2YXIgZW50cnkgPSB0aGlzLnRyeUVudHJpZXNbaV07XG4gICAgICAgIGlmIChlbnRyeS50cnlMb2MgPT09IHRyeUxvYykge1xuICAgICAgICAgIHZhciByZWNvcmQgPSBlbnRyeS5jb21wbGV0aW9uO1xuICAgICAgICAgIGlmIChyZWNvcmQudHlwZSA9PT0gXCJ0aHJvd1wiKSB7XG4gICAgICAgICAgICB2YXIgdGhyb3duID0gcmVjb3JkLmFyZztcbiAgICAgICAgICAgIHJlc2V0VHJ5RW50cnkoZW50cnkpO1xuICAgICAgICAgIH1cbiAgICAgICAgICByZXR1cm4gdGhyb3duO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIFRoZSBjb250ZXh0LmNhdGNoIG1ldGhvZCBtdXN0IG9ubHkgYmUgY2FsbGVkIHdpdGggYSBsb2NhdGlvblxuICAgICAgLy8gYXJndW1lbnQgdGhhdCBjb3JyZXNwb25kcyB0byBhIGtub3duIGNhdGNoIGJsb2NrLlxuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaWxsZWdhbCBjYXRjaCBhdHRlbXB0XCIpO1xuICAgIH0sXG5cbiAgICBkZWxlZ2F0ZVlpZWxkOiBmdW5jdGlvbihpdGVyYWJsZSwgcmVzdWx0TmFtZSwgbmV4dExvYykge1xuICAgICAgdGhpcy5kZWxlZ2F0ZSA9IHtcbiAgICAgICAgaXRlcmF0b3I6IHZhbHVlcyhpdGVyYWJsZSksXG4gICAgICAgIHJlc3VsdE5hbWU6IHJlc3VsdE5hbWUsXG4gICAgICAgIG5leHRMb2M6IG5leHRMb2NcbiAgICAgIH07XG5cbiAgICAgIGlmICh0aGlzLm1ldGhvZCA9PT0gXCJuZXh0XCIpIHtcbiAgICAgICAgLy8gRGVsaWJlcmF0ZWx5IGZvcmdldCB0aGUgbGFzdCBzZW50IHZhbHVlIHNvIHRoYXQgd2UgZG9uJ3RcbiAgICAgICAgLy8gYWNjaWRlbnRhbGx5IHBhc3MgaXQgb24gdG8gdGhlIGRlbGVnYXRlLlxuICAgICAgICB0aGlzLmFyZyA9IHVuZGVmaW5lZDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIENvbnRpbnVlU2VudGluZWw7XG4gICAgfVxuICB9O1xuXG4gIC8vIFJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGlzIHNjcmlwdCBpcyBleGVjdXRpbmcgYXMgYSBDb21tb25KUyBtb2R1bGVcbiAgLy8gb3Igbm90LCByZXR1cm4gdGhlIHJ1bnRpbWUgb2JqZWN0IHNvIHRoYXQgd2UgY2FuIGRlY2xhcmUgdGhlIHZhcmlhYmxlXG4gIC8vIHJlZ2VuZXJhdG9yUnVudGltZSBpbiB0aGUgb3V0ZXIgc2NvcGUsIHdoaWNoIGFsbG93cyB0aGlzIG1vZHVsZSB0byBiZVxuICAvLyBpbmplY3RlZCBlYXNpbHkgYnkgYGJpbi9yZWdlbmVyYXRvciAtLWluY2x1ZGUtcnVudGltZSBzY3JpcHQuanNgLlxuICByZXR1cm4gZXhwb3J0cztcblxufShcbiAgLy8gSWYgdGhpcyBzY3JpcHQgaXMgZXhlY3V0aW5nIGFzIGEgQ29tbW9uSlMgbW9kdWxlLCB1c2UgbW9kdWxlLmV4cG9ydHNcbiAgLy8gYXMgdGhlIHJlZ2VuZXJhdG9yUnVudGltZSBuYW1lc3BhY2UuIE90aGVyd2lzZSBjcmVhdGUgYSBuZXcgZW1wdHlcbiAgLy8gb2JqZWN0LiBFaXRoZXIgd2F5LCB0aGUgcmVzdWx0aW5nIG9iamVjdCB3aWxsIGJlIHVzZWQgdG8gaW5pdGlhbGl6ZVxuICAvLyB0aGUgcmVnZW5lcmF0b3JSdW50aW1lIHZhcmlhYmxlIGF0IHRoZSB0b3Agb2YgdGhpcyBmaWxlLlxuICB0eXBlb2YgbW9kdWxlID09PSBcIm9iamVjdFwiID8gbW9kdWxlLmV4cG9ydHMgOiB7fVxuKSk7XG5cbnRyeSB7XG4gIHJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG59IGNhdGNoIChhY2NpZGVudGFsU3RyaWN0TW9kZSkge1xuICAvLyBUaGlzIG1vZHVsZSBzaG91bGQgbm90IGJlIHJ1bm5pbmcgaW4gc3RyaWN0IG1vZGUsIHNvIHRoZSBhYm92ZVxuICAvLyBhc3NpZ25tZW50IHNob3VsZCBhbHdheXMgd29yayB1bmxlc3Mgc29tZXRoaW5nIGlzIG1pc2NvbmZpZ3VyZWQuIEp1c3RcbiAgLy8gaW4gY2FzZSBydW50aW1lLmpzIGFjY2lkZW50YWxseSBydW5zIGluIHN0cmljdCBtb2RlLCBpbiBtb2Rlcm4gZW5naW5lc1xuICAvLyB3ZSBjYW4gZXhwbGljaXRseSBhY2Nlc3MgZ2xvYmFsVGhpcy4gSW4gb2xkZXIgZW5naW5lcyB3ZSBjYW4gZXNjYXBlXG4gIC8vIHN0cmljdCBtb2RlIHVzaW5nIGEgZ2xvYmFsIEZ1bmN0aW9uIGNhbGwuIFRoaXMgY291bGQgY29uY2VpdmFibHkgZmFpbFxuICAvLyBpZiBhIENvbnRlbnQgU2VjdXJpdHkgUG9saWN5IGZvcmJpZHMgdXNpbmcgRnVuY3Rpb24sIGJ1dCBpbiB0aGF0IGNhc2VcbiAgLy8gdGhlIHByb3BlciBzb2x1dGlvbiBpcyB0byBmaXggdGhlIGFjY2lkZW50YWwgc3RyaWN0IG1vZGUgcHJvYmxlbS4gSWZcbiAgLy8geW91J3ZlIG1pc2NvbmZpZ3VyZWQgeW91ciBidW5kbGVyIHRvIGZvcmNlIHN0cmljdCBtb2RlIGFuZCBhcHBsaWVkIGFcbiAgLy8gQ1NQIHRvIGZvcmJpZCBGdW5jdGlvbiwgYW5kIHlvdSdyZSBub3Qgd2lsbGluZyB0byBmaXggZWl0aGVyIG9mIHRob3NlXG4gIC8vIHByb2JsZW1zLCBwbGVhc2UgZGV0YWlsIHlvdXIgdW5pcXVlIHByZWRpY2FtZW50IGluIGEgR2l0SHViIGlzc3VlLlxuICBpZiAodHlwZW9mIGdsb2JhbFRoaXMgPT09IFwib2JqZWN0XCIpIHtcbiAgICBnbG9iYWxUaGlzLnJlZ2VuZXJhdG9yUnVudGltZSA9IHJ1bnRpbWU7XG4gIH0gZWxzZSB7XG4gICAgRnVuY3Rpb24oXCJyXCIsIFwicmVnZW5lcmF0b3JSdW50aW1lID0gclwiKShydW50aW1lKTtcbiAgfVxufVxuIiwiZnVuY3Rpb24gaXNBYnNvbHV0ZShwYXRobmFtZSkge1xuICByZXR1cm4gcGF0aG5hbWUuY2hhckF0KDApID09PSAnLyc7XG59XG5cbi8vIEFib3V0IDEuNXggZmFzdGVyIHRoYW4gdGhlIHR3by1hcmcgdmVyc2lvbiBvZiBBcnJheSNzcGxpY2UoKVxuZnVuY3Rpb24gc3BsaWNlT25lKGxpc3QsIGluZGV4KSB7XG4gIGZvciAodmFyIGkgPSBpbmRleCwgayA9IGkgKyAxLCBuID0gbGlzdC5sZW5ndGg7IGsgPCBuOyBpICs9IDEsIGsgKz0gMSkge1xuICAgIGxpc3RbaV0gPSBsaXN0W2tdO1xuICB9XG5cbiAgbGlzdC5wb3AoKTtcbn1cblxuLy8gVGhpcyBpbXBsZW1lbnRhdGlvbiBpcyBiYXNlZCBoZWF2aWx5IG9uIG5vZGUncyB1cmwucGFyc2VcbmZ1bmN0aW9uIHJlc29sdmVQYXRobmFtZSh0bywgZnJvbSkge1xuICBpZiAoZnJvbSA9PT0gdW5kZWZpbmVkKSBmcm9tID0gJyc7XG5cbiAgdmFyIHRvUGFydHMgPSAodG8gJiYgdG8uc3BsaXQoJy8nKSkgfHwgW107XG4gIHZhciBmcm9tUGFydHMgPSAoZnJvbSAmJiBmcm9tLnNwbGl0KCcvJykpIHx8IFtdO1xuXG4gIHZhciBpc1RvQWJzID0gdG8gJiYgaXNBYnNvbHV0ZSh0byk7XG4gIHZhciBpc0Zyb21BYnMgPSBmcm9tICYmIGlzQWJzb2x1dGUoZnJvbSk7XG4gIHZhciBtdXN0RW5kQWJzID0gaXNUb0FicyB8fCBpc0Zyb21BYnM7XG5cbiAgaWYgKHRvICYmIGlzQWJzb2x1dGUodG8pKSB7XG4gICAgLy8gdG8gaXMgYWJzb2x1dGVcbiAgICBmcm9tUGFydHMgPSB0b1BhcnRzO1xuICB9IGVsc2UgaWYgKHRvUGFydHMubGVuZ3RoKSB7XG4gICAgLy8gdG8gaXMgcmVsYXRpdmUsIGRyb3AgdGhlIGZpbGVuYW1lXG4gICAgZnJvbVBhcnRzLnBvcCgpO1xuICAgIGZyb21QYXJ0cyA9IGZyb21QYXJ0cy5jb25jYXQodG9QYXJ0cyk7XG4gIH1cblxuICBpZiAoIWZyb21QYXJ0cy5sZW5ndGgpIHJldHVybiAnLyc7XG5cbiAgdmFyIGhhc1RyYWlsaW5nU2xhc2g7XG4gIGlmIChmcm9tUGFydHMubGVuZ3RoKSB7XG4gICAgdmFyIGxhc3QgPSBmcm9tUGFydHNbZnJvbVBhcnRzLmxlbmd0aCAtIDFdO1xuICAgIGhhc1RyYWlsaW5nU2xhc2ggPSBsYXN0ID09PSAnLicgfHwgbGFzdCA9PT0gJy4uJyB8fCBsYXN0ID09PSAnJztcbiAgfSBlbHNlIHtcbiAgICBoYXNUcmFpbGluZ1NsYXNoID0gZmFsc2U7XG4gIH1cblxuICB2YXIgdXAgPSAwO1xuICBmb3IgKHZhciBpID0gZnJvbVBhcnRzLmxlbmd0aDsgaSA+PSAwOyBpLS0pIHtcbiAgICB2YXIgcGFydCA9IGZyb21QYXJ0c1tpXTtcblxuICAgIGlmIChwYXJ0ID09PSAnLicpIHtcbiAgICAgIHNwbGljZU9uZShmcm9tUGFydHMsIGkpO1xuICAgIH0gZWxzZSBpZiAocGFydCA9PT0gJy4uJykge1xuICAgICAgc3BsaWNlT25lKGZyb21QYXJ0cywgaSk7XG4gICAgICB1cCsrO1xuICAgIH0gZWxzZSBpZiAodXApIHtcbiAgICAgIHNwbGljZU9uZShmcm9tUGFydHMsIGkpO1xuICAgICAgdXAtLTtcbiAgICB9XG4gIH1cblxuICBpZiAoIW11c3RFbmRBYnMpIGZvciAoOyB1cC0tOyB1cCkgZnJvbVBhcnRzLnVuc2hpZnQoJy4uJyk7XG5cbiAgaWYgKFxuICAgIG11c3RFbmRBYnMgJiZcbiAgICBmcm9tUGFydHNbMF0gIT09ICcnICYmXG4gICAgKCFmcm9tUGFydHNbMF0gfHwgIWlzQWJzb2x1dGUoZnJvbVBhcnRzWzBdKSlcbiAgKVxuICAgIGZyb21QYXJ0cy51bnNoaWZ0KCcnKTtcblxuICB2YXIgcmVzdWx0ID0gZnJvbVBhcnRzLmpvaW4oJy8nKTtcblxuICBpZiAoaGFzVHJhaWxpbmdTbGFzaCAmJiByZXN1bHQuc3Vic3RyKC0xKSAhPT0gJy8nKSByZXN1bHQgKz0gJy8nO1xuXG4gIHJldHVybiByZXN1bHQ7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHJlc29sdmVQYXRobmFtZTtcbiIsIid1c2Ugc3RyaWN0JztcblxubW9kdWxlLmV4cG9ydHMgPSAoc3RyaW5nLCBzZXBhcmF0b3IpID0+IHtcblx0aWYgKCEodHlwZW9mIHN0cmluZyA9PT0gJ3N0cmluZycgJiYgdHlwZW9mIHNlcGFyYXRvciA9PT0gJ3N0cmluZycpKSB7XG5cdFx0dGhyb3cgbmV3IFR5cGVFcnJvcignRXhwZWN0ZWQgdGhlIGFyZ3VtZW50cyB0byBiZSBvZiB0eXBlIGBzdHJpbmdgJyk7XG5cdH1cblxuXHRpZiAoc2VwYXJhdG9yID09PSAnJykge1xuXHRcdHJldHVybiBbc3RyaW5nXTtcblx0fVxuXG5cdGNvbnN0IHNlcGFyYXRvckluZGV4ID0gc3RyaW5nLmluZGV4T2Yoc2VwYXJhdG9yKTtcblxuXHRpZiAoc2VwYXJhdG9ySW5kZXggPT09IC0xKSB7XG5cdFx0cmV0dXJuIFtzdHJpbmddO1xuXHR9XG5cblx0cmV0dXJuIFtcblx0XHRzdHJpbmcuc2xpY2UoMCwgc2VwYXJhdG9ySW5kZXgpLFxuXHRcdHN0cmluZy5zbGljZShzZXBhcmF0b3JJbmRleCArIHNlcGFyYXRvci5sZW5ndGgpXG5cdF07XG59O1xuIiwiJ3VzZSBzdHJpY3QnO1xubW9kdWxlLmV4cG9ydHMgPSBzdHIgPT4gZW5jb2RlVVJJQ29tcG9uZW50KHN0cikucmVwbGFjZSgvWyEnKCkqXS9nLCB4ID0+IGAlJHt4LmNoYXJDb2RlQXQoMCkudG9TdHJpbmcoMTYpLnRvVXBwZXJDYXNlKCl9YCk7XG4iLCJcInVzZSBzdHJpY3RcIjtcblxudmFyIF9pbnRlcm9wUmVxdWlyZURlZmF1bHQgPSByZXF1aXJlKFwiQGJhYmVsL3J1bnRpbWUvaGVscGVycy9pbnRlcm9wUmVxdWlyZURlZmF1bHRcIik7XG5cbmV4cG9ydHMuX19lc01vZHVsZSA9IHRydWU7XG5leHBvcnRzLmlzUnB4ID0gaXNScHg7XG5leHBvcnRzLmNhbGNScHggPSBjYWxjUnB4O1xuZXhwb3J0cy5nZXRScHggPSBnZXRScHg7XG5leHBvcnRzLnNldFJweCA9IHNldFJweDtcbmV4cG9ydHMuZ2V0Vmlld3BvcnRXaWR0aCA9IGdldFZpZXdwb3J0V2lkdGg7XG5leHBvcnRzLnNldFZpZXdwb3J0V2lkdGggPSBzZXRWaWV3cG9ydFdpZHRoO1xuZXhwb3J0cy5zZXREZWNpbWFsUGl4ZWxUcmFuc2Zvcm1lciA9IHNldERlY2ltYWxQaXhlbFRyYW5zZm9ybWVyO1xuZXhwb3J0cy5zZXRVbml0UHJlY2lzaW9uID0gc2V0VW5pdFByZWNpc2lvbjtcbmV4cG9ydHMuY2FjaGVkID0gY2FjaGVkO1xuZXhwb3J0cy5zZXRUYXJnZXRQbGF0Zm9ybSA9IHNldFRhcmdldFBsYXRmb3JtO1xuZXhwb3J0cy5jb252ZXJ0VW5pdCA9IHZvaWQgMDtcblxudmFyIF9kZWZpbmVQcm9wZXJ0eTIgPSBfaW50ZXJvcFJlcXVpcmVEZWZhdWx0KHJlcXVpcmUoXCJAYmFiZWwvcnVudGltZS9oZWxwZXJzL2RlZmluZVByb3BlcnR5XCIpKTtcblxudmFyIF91bml2ZXJzYWxFbnYgPSByZXF1aXJlKFwidW5pdmVyc2FsLWVudlwiKTtcblxudmFyIFJQWF9SRUcgPSAvXCJbXlwiXStcInwnW14nXSsnfHVybFxcKFteXFwpXStcXCl8KFxcZCpcXC4/XFxkKylycHgvZztcblxudmFyIF9fcnB4X2NvZWZmaWNpZW50X187XG5cbnZhciBfX3ZpZXdwb3J0X3dpZHRoX187IC8vIGNvbnZlcnRVbml0IG1ldGhvZCB0YXJnZXRQbGF0Zm9ybVxuXG5cbnZhciB0YXJnZXRQbGF0Zm9ybSA9IF91bml2ZXJzYWxFbnYuaXNXZWIgPyAnd2ViJyA6IF91bml2ZXJzYWxFbnYuaXNXZWV4ID8gJ3dlZXgnIDogJyc7IC8vIEluaXQgdG9GaXhlZCBtZXRob2RcblxudmFyIHVuaXRQcmVjaXNpb24gPSA0O1xuXG52YXIgdG9GaXhlZCA9IGZ1bmN0aW9uIHRvRml4ZWQobnVtYmVyLCBwcmVjaXNpb24pIHtcbiAgdmFyIG11bHRpcGxpZXIgPSBNYXRoLnBvdygxMCwgcHJlY2lzaW9uICsgMSk7XG4gIHZhciB3aG9sZU51bWJlciA9IE1hdGguZmxvb3IobnVtYmVyICogbXVsdGlwbGllcik7XG4gIHJldHVybiBNYXRoLnJvdW5kKHdob2xlTnVtYmVyIC8gMTApICogMTAgLyBtdWx0aXBsaWVyO1xufTsgLy8gRGVkYXVsdCBkZWNpbWFsIHB4IHRyYW5zZm9ybWVyLlxuXG5cbnZhciBkZWNpbWFsUGl4ZWxUcmFuc2Zvcm1lciA9IGZ1bmN0aW9uIGRlY2ltYWxQaXhlbFRyYW5zZm9ybWVyKHJweCwgJDEpIHtcbiAgcmV0dXJuICQxID8gcGFyc2VGbG9hdChycHgpICogZ2V0UnB4KCkgKyAncHgnIDogcnB4O1xufTsgLy8gRGVmYXVsdCBkZWNpbWFsIHZ3IHRyYW5zZm9ybWVyLlxuXG5cbnZhciBkZWNpbWFsVldUcmFuc2Zvcm1lciA9IGZ1bmN0aW9uIGRlY2ltYWxWV1RyYW5zZm9ybWVyKHJweCwgJDEpIHtcbiAgcmV0dXJuICQxID8gdG9GaXhlZChwYXJzZUZsb2F0KHJweCkgLyAoZ2V0Vmlld3BvcnRXaWR0aCgpIC8gMTAwKSwgdW5pdFByZWNpc2lvbikgKyAndncnIDogcnB4O1xufTsgLy8gRGVmYXVsdCAxIHJweCB0byAxIHB4XG5cblxuaWYgKGdldFJweCgpID09PSB1bmRlZmluZWQpIHtcbiAgc2V0UnB4KDEpO1xufSAvLyBWaWV3cG9ydCB3aWR0aCwgZGVmYXVsdCB0byA3NTAuXG5cblxuaWYgKGdldFZpZXdwb3J0V2lkdGgoKSA9PT0gdW5kZWZpbmVkKSB7XG4gIHNldFZpZXdwb3J0V2lkdGgoNzUwKTtcbn1cblxudmFyIEN1c3RvbU1hcCA9IC8qI19fUFVSRV9fKi9mdW5jdGlvbiAoKSB7XG4gIGZ1bmN0aW9uIEN1c3RvbU1hcCgpIHtcbiAgICAoMCwgX2RlZmluZVByb3BlcnR5MltcImRlZmF1bHRcIl0pKHRoaXMsIFwiX19zdG9yZVwiLCB7fSk7XG4gIH1cblxuICB2YXIgX3Byb3RvID0gQ3VzdG9tTWFwLnByb3RvdHlwZTtcblxuICBfcHJvdG8uc2V0ID0gZnVuY3Rpb24gc2V0KGtleSwgdmFsdWUpIHtcbiAgICB0aGlzLl9fc3RvcmVba2V5ICsgXCJfXCIgKyB0eXBlb2Yga2V5XSA9IHZhbHVlO1xuICB9O1xuXG4gIF9wcm90by5nZXQgPSBmdW5jdGlvbiBnZXQoa2V5KSB7XG4gICAgcmV0dXJuIHRoaXMuX19zdG9yZVtrZXkgKyBcIl9cIiArIHR5cGVvZiBrZXldO1xuICB9O1xuXG4gIF9wcm90by5oYXMgPSBmdW5jdGlvbiBoYXMoa2V5KSB7XG4gICAgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh0aGlzLl9fc3RvcmUsIGtleSArIFwiX1wiICsgdHlwZW9mIGtleSk7XG4gIH07XG5cbiAgcmV0dXJuIEN1c3RvbU1hcDtcbn0oKTtcbi8qKlxuICogSXMgc3RyaW5nIGNvbnRhaW5zIHJweFxuICogbm90ZTogcnB4IGlzIGFuIGFsaWFzIHRvIHJweFxuICogQHBhcmFtIHtTdHJpbmd9IHN0clxuICogQHJldHVybnMge0Jvb2xlYW59XG4gKi9cblxuXG5mdW5jdGlvbiBpc1JweChzdHIpIHtcbiAgcmV0dXJuIHR5cGVvZiBzdHIgPT09ICdzdHJpbmcnICYmIFJQWF9SRUcudGVzdChzdHIpO1xufVxuLyoqXG4gKiBDYWxjdWxhdGUgcnB4XG4gKiBAcGFyYW0ge1N0cmluZ30gc3RyXG4gKiBAcmV0dXJucyB7U3RyaW5nfVxuICovXG5cblxuZnVuY3Rpb24gY2FsY1JweChzdHIpIHtcbiAgaWYgKHRhcmdldFBsYXRmb3JtID09PSAnd2ViJykge1xuICAgIC8vIEluIFdlYiBjb252ZXJ0IHJweCB0byAndncnLCBzYW1lIGFzIGRyaXZlci1kb20gYW5kIGRyaXZlci11bml2ZXJzYWxcbiAgICAvLyAnMzc1cnB4JyA9PiAnNTB2dydcbiAgICByZXR1cm4gc3RyLnJlcGxhY2UoUlBYX1JFRywgZGVjaW1hbFZXVHJhbnNmb3JtZXIpO1xuICB9IGVsc2UgaWYgKHRhcmdldFBsYXRmb3JtID09PSAnd2VleCcpIHtcbiAgICAvLyBJbiBXZWV4IGNvbnZlcnQgcnB4IHRvICdweCdcbiAgICAvLyAnMzc1cnB4JyA9PiAzNzUgKiBweFxuICAgIHJldHVybiBzdHIucmVwbGFjZShSUFhfUkVHLCBkZWNpbWFsUGl4ZWxUcmFuc2Zvcm1lcik7XG4gIH0gZWxzZSB7XG4gICAgLy8gT3RoZXIgcGxhdGZvcm0gcmV0dXJuIG9yaWdpbmFsIHZhbHVlLCBsaWtlIE1pbmktQXBwIGFuZCBXWCBNaW5pLVByb2dyYW0gLi4uXG4gICAgLy8gJzM3NXJweCcgPT4gJzM3NXJweCdcbiAgICByZXR1cm4gc3RyO1xuICB9XG59XG5cbmZ1bmN0aW9uIGdldFJweCgpIHtcbiAgcmV0dXJuIF9fcnB4X2NvZWZmaWNpZW50X187XG59XG5cbmZ1bmN0aW9uIHNldFJweChycHgpIHtcbiAgX19ycHhfY29lZmZpY2llbnRfXyA9IHJweDtcbn1cblxuZnVuY3Rpb24gZ2V0Vmlld3BvcnRXaWR0aCgpIHtcbiAgcmV0dXJuIF9fdmlld3BvcnRfd2lkdGhfXztcbn1cblxuZnVuY3Rpb24gc2V0Vmlld3BvcnRXaWR0aCh2aWV3cG9ydCkge1xuICBfX3ZpZXdwb3J0X3dpZHRoX18gPSB2aWV3cG9ydDtcbn1cbi8qKlxuICogU2V0IGEgZnVuY3Rpb24gdG8gdHJhbnNmb3JtIHVuaXQgb2YgcGl4ZWwsXG4gKiBkZWZhdWx0IHRvIHBhc3N0aHJvdWdoLlxuICogQHBhcmFtIHtGdW5jdGlvbn0gdHJhbnNmb3JtZXIgZnVuY3Rpb25cbiAqL1xuXG5cbmZ1bmN0aW9uIHNldERlY2ltYWxQaXhlbFRyYW5zZm9ybWVyKHRyYW5zZm9ybWVyKSB7XG4gIGRlY2ltYWxQaXhlbFRyYW5zZm9ybWVyID0gdHJhbnNmb3JtZXI7XG59XG4vKipcbiAqIFNldCB1bml0IHByZWNpc2lvbi5cbiAqIEBwYXJhbSBuIHtOdW1iZXJ9IFVuaXQgcHJlY2lzaW9uLCBkZWZhdWx0IHRvIDQuXG4gKi9cblxuXG5mdW5jdGlvbiBzZXRVbml0UHJlY2lzaW9uKG4pIHtcbiAgdW5pdFByZWNpc2lvbiA9IG47XG59XG4vKipcbiAqIENyZWF0ZSBhIGNhY2hlZCB2ZXJzaW9uIG9mIGEgcHVyZSBmdW5jdGlvbi5cbiAqIFVzZSB0aGUgZmlyc3QgcGFyYW1zIGFzIGNhY2hlIGtleS5cbiAqL1xuXG5cbmZ1bmN0aW9uIGNhY2hlZChmbikge1xuICB2YXIgY2FjaGUgPSBuZXcgQ3VzdG9tTWFwKCk7XG4gIHJldHVybiBmdW5jdGlvbiBjYWNoZWRGbigpIHtcbiAgICB2YXIga2V5ID0gYXJndW1lbnRzLmxlbmd0aCA8PSAwID8gdW5kZWZpbmVkIDogYXJndW1lbnRzWzBdO1xuICAgIGlmICghY2FjaGUuaGFzKGtleSkpIGNhY2hlLnNldChrZXksIGZuLmFwcGx5KHZvaWQgMCwgYXJndW1lbnRzKSk7XG4gICAgcmV0dXJuIGNhY2hlLmdldChrZXkpO1xuICB9O1xufVxuXG5mdW5jdGlvbiBzZXRUYXJnZXRQbGF0Zm9ybShwbGF0Zm9ybSkge1xuICB0YXJnZXRQbGF0Zm9ybSA9IHBsYXRmb3JtO1xufVxuLyoqXG4gKiBDb252ZXJ0IHJweC5cbiAqIEBwYXJhbSB2YWx1ZVxuICogQHBhcmFtIHByb3BcbiAqIEBwYXJhbSBwbGF0Zm9ybVxuICogQHJldHVybiB7U3RyaW5nfSBUcmFuc2Zvcm1lZCB2YWx1ZS5cbiAqL1xuXG5cbnZhciBjb252ZXJ0VW5pdCA9IGNhY2hlZChmdW5jdGlvbiAodmFsdWUsIHByb3AsIHBsYXRmb3JtKSB7XG4gIGlmIChwbGF0Zm9ybSkge1xuICAgIHNldFRhcmdldFBsYXRmb3JtKHBsYXRmb3JtKTtcbiAgfVxuXG4gIHJldHVybiBpc1JweCh2YWx1ZSkgPyBjYWxjUnB4KHZhbHVlKSA6IHZhbHVlO1xufSk7XG5leHBvcnRzLmNvbnZlcnRVbml0ID0gY29udmVydFVuaXQ7IiwidmFyIGlzUHJvZHVjdGlvbiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbic7XG52YXIgcHJlZml4ID0gJ0ludmFyaWFudCBmYWlsZWQnO1xuZnVuY3Rpb24gaW52YXJpYW50KGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBpZiAoaXNQcm9kdWN0aW9uKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcihwcmVmaXgpO1xuICAgIH1cbiAgICB0aHJvdyBuZXcgRXJyb3IocHJlZml4ICsgXCI6IFwiICsgKG1lc3NhZ2UgfHwgJycpKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgaW52YXJpYW50O1xuIiwidmFyIGlzUHJvZHVjdGlvbiA9IHByb2Nlc3MuZW52Lk5PREVfRU5WID09PSAncHJvZHVjdGlvbic7XG5mdW5jdGlvbiB3YXJuaW5nKGNvbmRpdGlvbiwgbWVzc2FnZSkge1xuICBpZiAoIWlzUHJvZHVjdGlvbikge1xuICAgIGlmIChjb25kaXRpb24pIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgdGV4dCA9IFwiV2FybmluZzogXCIgKyBtZXNzYWdlO1xuXG4gICAgaWYgKHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJykge1xuICAgICAgY29uc29sZS53YXJuKHRleHQpO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICB0aHJvdyBFcnJvcih0ZXh0KTtcbiAgICB9IGNhdGNoICh4KSB7fVxuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IHdhcm5pbmc7XG4iLCJmdW5jdGlvbiB2YWx1ZU9mKG9iaikge1xuICByZXR1cm4gb2JqLnZhbHVlT2YgPyBvYmoudmFsdWVPZigpIDogT2JqZWN0LnByb3RvdHlwZS52YWx1ZU9mLmNhbGwob2JqKTtcbn1cblxuZnVuY3Rpb24gdmFsdWVFcXVhbChhLCBiKSB7XG4gIC8vIFRlc3QgZm9yIHN0cmljdCBlcXVhbGl0eSBmaXJzdC5cbiAgaWYgKGEgPT09IGIpIHJldHVybiB0cnVlO1xuXG4gIC8vIE90aGVyd2lzZSwgaWYgZWl0aGVyIG9mIHRoZW0gPT0gbnVsbCB0aGV5IGFyZSBub3QgZXF1YWwuXG4gIGlmIChhID09IG51bGwgfHwgYiA9PSBudWxsKSByZXR1cm4gZmFsc2U7XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkoYSkpIHtcbiAgICByZXR1cm4gKFxuICAgICAgQXJyYXkuaXNBcnJheShiKSAmJlxuICAgICAgYS5sZW5ndGggPT09IGIubGVuZ3RoICYmXG4gICAgICBhLmV2ZXJ5KGZ1bmN0aW9uKGl0ZW0sIGluZGV4KSB7XG4gICAgICAgIHJldHVybiB2YWx1ZUVxdWFsKGl0ZW0sIGJbaW5kZXhdKTtcbiAgICAgIH0pXG4gICAgKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgYSA9PT0gJ29iamVjdCcgfHwgdHlwZW9mIGIgPT09ICdvYmplY3QnKSB7XG4gICAgdmFyIGFWYWx1ZSA9IHZhbHVlT2YoYSk7XG4gICAgdmFyIGJWYWx1ZSA9IHZhbHVlT2YoYik7XG5cbiAgICBpZiAoYVZhbHVlICE9PSBhIHx8IGJWYWx1ZSAhPT0gYikgcmV0dXJuIHZhbHVlRXF1YWwoYVZhbHVlLCBiVmFsdWUpO1xuXG4gICAgcmV0dXJuIE9iamVjdC5rZXlzKE9iamVjdC5hc3NpZ24oe30sIGEsIGIpKS5ldmVyeShmdW5jdGlvbihrZXkpIHtcbiAgICAgIHJldHVybiB2YWx1ZUVxdWFsKGFba2V5XSwgYltrZXldKTtcbiAgICB9KTtcbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgdmFsdWVFcXVhbDtcbiIsInZhciBnO1xuXG4vLyBUaGlzIHdvcmtzIGluIG5vbi1zdHJpY3QgbW9kZVxuZyA9IChmdW5jdGlvbigpIHtcblx0cmV0dXJuIHRoaXM7XG59KSgpO1xuXG50cnkge1xuXHQvLyBUaGlzIHdvcmtzIGlmIGV2YWwgaXMgYWxsb3dlZCAoc2VlIENTUClcblx0ZyA9IGcgfHwgbmV3IEZ1bmN0aW9uKFwicmV0dXJuIHRoaXNcIikoKTtcbn0gY2F0Y2ggKGUpIHtcblx0Ly8gVGhpcyB3b3JrcyBpZiB0aGUgd2luZG93IHJlZmVyZW5jZSBpcyBhdmFpbGFibGVcblx0aWYgKHR5cGVvZiB3aW5kb3cgPT09IFwib2JqZWN0XCIpIGcgPSB3aW5kb3c7XG59XG5cbi8vIGcgY2FuIHN0aWxsIGJlIHVuZGVmaW5lZCwgYnV0IG5vdGhpbmcgdG8gZG8gYWJvdXQgaXQuLi5cbi8vIFdlIHJldHVybiB1bmRlZmluZWQsIGluc3RlYWQgb2Ygbm90aGluZyBoZXJlLCBzbyBpdCdzXG4vLyBlYXNpZXIgdG8gaGFuZGxlIHRoaXMgY2FzZS4gaWYoIWdsb2JhbCkgeyAuLi59XG5cbm1vZHVsZS5leHBvcnRzID0gZztcbiIsIi8vIGltcG9ydCBcIi4vQWdyby1Nb2JpbGUvVGhlbWUvZ2xvYmFsLmxlc3NcIjtcbmltcG9ydCB7IHJ1bkFwcCwgdXNlQXBwTGF1bmNoIH0gZnJvbSAncmF4LWFwcCc7XG5pbXBvcnQgYXBwQ29uZmlnIGZyb20gJy4vYXBwLmpzb24nO1xuXG5cbnJ1bkFwcChhcHBDb25maWcpO1xuIiwiXG4gICAgaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3JheCc7XG4gICAgY29uc3Qgcm91dGVzID0gW107XG4gICAgcm91dGVzLnB1c2goXG4gICAgICB7XG4gICAgICAgIC4uLntcInBhdGhcIjpcIi9wYWdlcy9Ib21lL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL0hvbWUvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJ1bmlcIn19LFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+ICgpID0+IHtcbiAgICAgIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcykge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChyZXF1aXJlKCcvVXNlcnMveWl0YW4vRG9jdW1lbnRzL3dvcmtzcGFjZS9jb2RlL3VuaXZlcnNhbC1hcGkvZGVtb3Mvc3JjL3BhZ2VzL0hvbWUvaW5kZXgnKS5kZWZhdWx0LCB7IHBhZ2VDb25maWc6IHtcInBhdGhcIjpcIi9wYWdlcy9Ib21lL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL0hvbWUvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJ1bmlcIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvYXBwbGljYXRpb24vaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvYXBwbGljYXRpb24vaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJhcHBsaWNhdGlvblwifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvYXBwbGljYXRpb24vaW5kZXgnKS5kZWZhdWx0LCB7IHBhZ2VDb25maWc6IHtcInBhdGhcIjpcIi9wYWdlcy9hcHBsaWNhdGlvbi9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9hcHBsaWNhdGlvbi9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImFwcGxpY2F0aW9uXCJ9fSwgLi4ucHJvcHMgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBDb21wb25lbnQ7XG4gICAgfVxuICAgICAgfVxuICAgICk7XG5yb3V0ZXMucHVzaChcbiAgICAgIHtcbiAgICAgICAgLi4ue1wicGF0aFwiOlwiL3BhZ2VzL2Nhbml1c2UvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvY2FuaXVzZS9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImNhbml1c2VcIn19LFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+ICgpID0+IHtcbiAgICAgIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcykge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChyZXF1aXJlKCcvVXNlcnMveWl0YW4vRG9jdW1lbnRzL3dvcmtzcGFjZS9jb2RlL3VuaXZlcnNhbC1hcGkvZGVtb3Mvc3JjL3BhZ2VzL2Nhbml1c2UvaW5kZXgnKS5kZWZhdWx0LCB7IHBhZ2VDb25maWc6IHtcInBhdGhcIjpcIi9wYWdlcy9jYW5pdXNlL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2Nhbml1c2UvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJjYW5pdXNlXCJ9fSwgLi4ucHJvcHMgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBDb21wb25lbnQ7XG4gICAgfVxuICAgICAgfVxuICAgICk7XG5yb3V0ZXMucHVzaChcbiAgICAgIHtcbiAgICAgICAgLi4ue1wicGF0aFwiOlwiL3BhZ2VzL2NhbnZhcy9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9jYW52YXMvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJjYW52YXNcIn19LFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+ICgpID0+IHtcbiAgICAgIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcykge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChyZXF1aXJlKCcvVXNlcnMveWl0YW4vRG9jdW1lbnRzL3dvcmtzcGFjZS9jb2RlL3VuaXZlcnNhbC1hcGkvZGVtb3Mvc3JjL3BhZ2VzL2NhbnZhcy9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL2NhbnZhcy9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9jYW52YXMvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJjYW52YXNcIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvYWNjZWxlcm9tZXRlci9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9hY2NlbGVyb21ldGVyL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiYWNjZWxlcm9tZXRlclwifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvYWNjZWxlcm9tZXRlci9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL2FjY2VsZXJvbWV0ZXIvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvYWNjZWxlcm9tZXRlci9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImFjY2VsZXJvbWV0ZXJcIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvY2xpcGJvYXJkL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2NsaXBib2FyZC9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImNsaXBib2FyZFwifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvY2xpcGJvYXJkL2luZGV4JykuZGVmYXVsdCwgeyBwYWdlQ29uZmlnOiB7XCJwYXRoXCI6XCIvcGFnZXMvY2xpcGJvYXJkL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2NsaXBib2FyZC9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImNsaXBib2FyZFwifX0sIC4uLnByb3BzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgIH1cbiAgICAgIH1cbiAgICApO1xucm91dGVzLnB1c2goXG4gICAgICB7XG4gICAgICAgIC4uLntcInBhdGhcIjpcIi9wYWdlcy9zeXN0ZW0taW5mby9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9zeXN0ZW0taW5mby9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInN5c3RlbS1pbmZvXCJ9fSxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PiAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocmVxdWlyZSgnL1VzZXJzL3lpdGFuL0RvY3VtZW50cy93b3Jrc3BhY2UvY29kZS91bml2ZXJzYWwtYXBpL2RlbW9zL3NyYy9wYWdlcy9zeXN0ZW0taW5mby9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL3N5c3RlbS1pbmZvL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL3N5c3RlbS1pbmZvL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwic3lzdGVtLWluZm9cIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvc2Nhbi9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9zY2FuL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwic2NhblwifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvc2Nhbi9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL3NjYW4vaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvc2Nhbi9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInNjYW5cIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvZmlsZS9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9maWxlL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiZmlsZVwifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvZmlsZS9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL2ZpbGUvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvZmlsZS9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImZpbGVcIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvYWN0aW9uLXNoZWV0L2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2FjdGlvbi1zaGVldC9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImFjdGlvbi1zaGVldFwifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvYWN0aW9uLXNoZWV0L2luZGV4JykuZGVmYXVsdCwgeyBwYWdlQ29uZmlnOiB7XCJwYXRoXCI6XCIvcGFnZXMvYWN0aW9uLXNoZWV0L2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2FjdGlvbi1zaGVldC9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImFjdGlvbi1zaGVldFwifX0sIC4uLnByb3BzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgIH1cbiAgICAgIH1cbiAgICApO1xucm91dGVzLnB1c2goXG4gICAgICB7XG4gICAgICAgIC4uLntcInBhdGhcIjpcIi9wYWdlcy9hbGVydC9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9hbGVydC9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImFsZXJ0XCJ9fSxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PiAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocmVxdWlyZSgnL1VzZXJzL3lpdGFuL0RvY3VtZW50cy93b3Jrc3BhY2UvY29kZS91bml2ZXJzYWwtYXBpL2RlbW9zL3NyYy9wYWdlcy9hbGVydC9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL2FsZXJ0L2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2FsZXJ0L2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiYWxlcnRcIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvYW5pbWF0aW9uL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2FuaW1hdGlvbi9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImFuaW1hdGlvblwifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvYW5pbWF0aW9uL2luZGV4JykuZGVmYXVsdCwgeyBwYWdlQ29uZmlnOiB7XCJwYXRoXCI6XCIvcGFnZXMvYW5pbWF0aW9uL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2FuaW1hdGlvbi9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImFuaW1hdGlvblwifX0sIC4uLnByb3BzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgIH1cbiAgICAgIH1cbiAgICApO1xucm91dGVzLnB1c2goXG4gICAgICB7XG4gICAgICAgIC4uLntcInBhdGhcIjpcIi9wYWdlcy90b2FzdC9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy90b2FzdC9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInRvYXN0XCJ9fSxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PiAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocmVxdWlyZSgnL1VzZXJzL3lpdGFuL0RvY3VtZW50cy93b3Jrc3BhY2UvY29kZS91bml2ZXJzYWwtYXBpL2RlbW9zL3NyYy9wYWdlcy90b2FzdC9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL3RvYXN0L2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL3RvYXN0L2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwidG9hc3RcIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvbG9hZGluZy9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9sb2FkaW5nL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwibG9hZGluZ1wifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvbG9hZGluZy9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL2xvYWRpbmcvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvbG9hZGluZy9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImxvYWRpbmdcIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvbmF2aWdhdGlvbi1iYXIvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvbmF2aWdhdGlvbi1iYXIvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJuYXZpZ2F0aW9uLWJhclwifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvbmF2aWdhdGlvbi1iYXIvaW5kZXgnKS5kZWZhdWx0LCB7IHBhZ2VDb25maWc6IHtcInBhdGhcIjpcIi9wYWdlcy9uYXZpZ2F0aW9uLWJhci9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9uYXZpZ2F0aW9uLWJhci9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcIm5hdmlnYXRpb24tYmFyXCJ9fSwgLi4ucHJvcHMgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBDb21wb25lbnQ7XG4gICAgfVxuICAgICAgfVxuICAgICk7XG5yb3V0ZXMucHVzaChcbiAgICAgIHtcbiAgICAgICAgLi4ue1wicGF0aFwiOlwiL3BhZ2VzL3B1bGwtZG93bi1yZWZyZXNoL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL3B1bGwtZG93bi1yZWZyZXNoL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwicHVsbC1kb3duLXJlZnJlc2hcIn19LFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+ICgpID0+IHtcbiAgICAgIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcykge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChyZXF1aXJlKCcvVXNlcnMveWl0YW4vRG9jdW1lbnRzL3dvcmtzcGFjZS9jb2RlL3VuaXZlcnNhbC1hcGkvZGVtb3Mvc3JjL3BhZ2VzL3B1bGwtZG93bi1yZWZyZXNoL2luZGV4JykuZGVmYXVsdCwgeyBwYWdlQ29uZmlnOiB7XCJwYXRoXCI6XCIvcGFnZXMvcHVsbC1kb3duLXJlZnJlc2gvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvcHVsbC1kb3duLXJlZnJlc2gvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJwdWxsLWRvd24tcmVmcmVzaFwifX0sIC4uLnByb3BzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgIH1cbiAgICAgIH1cbiAgICApO1xucm91dGVzLnB1c2goXG4gICAgICB7XG4gICAgICAgIC4uLntcInBhdGhcIjpcIi9wYWdlcy90YWItYmFyL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL3RhYi1iYXIvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJ0YWItYmFyXCJ9fSxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PiAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocmVxdWlyZSgnL1VzZXJzL3lpdGFuL0RvY3VtZW50cy93b3Jrc3BhY2UvY29kZS91bml2ZXJzYWwtYXBpL2RlbW9zL3NyYy9wYWdlcy90YWItYmFyL2luZGV4JykuZGVmYXVsdCwgeyBwYWdlQ29uZmlnOiB7XCJwYXRoXCI6XCIvcGFnZXMvdGFiLWJhci9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy90YWItYmFyL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwidGFiLWJhclwifX0sIC4uLnByb3BzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgIH1cbiAgICAgIH1cbiAgICApO1xucm91dGVzLnB1c2goXG4gICAgICB7XG4gICAgICAgIC4uLntcInBhdGhcIjpcIi9wYWdlcy9lbGVtZW50L2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2VsZW1lbnQvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJlbGVtZW50XCJ9fSxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PiAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocmVxdWlyZSgnL1VzZXJzL3lpdGFuL0RvY3VtZW50cy93b3Jrc3BhY2UvY29kZS91bml2ZXJzYWwtYXBpL2RlbW9zL3NyYy9wYWdlcy9lbGVtZW50L2luZGV4JykuZGVmYXVsdCwgeyBwYWdlQ29uZmlnOiB7XCJwYXRoXCI6XCIvcGFnZXMvZWxlbWVudC9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9lbGVtZW50L2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiZWxlbWVudFwifX0sIC4uLnByb3BzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgIH1cbiAgICAgIH1cbiAgICApO1xucm91dGVzLnB1c2goXG4gICAgICB7XG4gICAgICAgIC4uLntcInBhdGhcIjpcIi9wYWdlcy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiaW50ZXJzZWN0aW9uLW9ic2VydmVyXCJ9fSxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PiAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocmVxdWlyZSgnL1VzZXJzL3lpdGFuL0RvY3VtZW50cy93b3Jrc3BhY2UvY29kZS91bml2ZXJzYWwtYXBpL2RlbW9zL3NyYy9wYWdlcy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW5kZXgnKS5kZWZhdWx0LCB7IHBhZ2VDb25maWc6IHtcInBhdGhcIjpcIi9wYWdlcy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiaW50ZXJzZWN0aW9uLW9ic2VydmVyXCJ9fSwgLi4ucHJvcHMgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBDb21wb25lbnQ7XG4gICAgfVxuICAgICAgfVxuICAgICk7XG5yb3V0ZXMucHVzaChcbiAgICAgIHtcbiAgICAgICAgLi4ue1wicGF0aFwiOlwiL3BhZ2VzL2NvbmZpcm0vaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvY29uZmlybS9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImNvbmZpcm1cIn19LFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+ICgpID0+IHtcbiAgICAgIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcykge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChyZXF1aXJlKCcvVXNlcnMveWl0YW4vRG9jdW1lbnRzL3dvcmtzcGFjZS9jb2RlL3VuaXZlcnNhbC1hcGkvZGVtb3Mvc3JjL3BhZ2VzL2NvbmZpcm0vaW5kZXgnKS5kZWZhdWx0LCB7IHBhZ2VDb25maWc6IHtcInBhdGhcIjpcIi9wYWdlcy9jb25maXJtL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2NvbmZpcm0vaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJjb25maXJtXCJ9fSwgLi4ucHJvcHMgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBDb21wb25lbnQ7XG4gICAgfVxuICAgICAgfVxuICAgICk7XG5yb3V0ZXMucHVzaChcbiAgICAgIHtcbiAgICAgICAgLi4ue1wicGF0aFwiOlwiL3BhZ2VzL2xvY2F0aW9uL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2xvY2F0aW9uL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwibG9jYXRpb25cIn19LFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+ICgpID0+IHtcbiAgICAgIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcykge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChyZXF1aXJlKCcvVXNlcnMveWl0YW4vRG9jdW1lbnRzL3dvcmtzcGFjZS9jb2RlL3VuaXZlcnNhbC1hcGkvZGVtb3Mvc3JjL3BhZ2VzL2xvY2F0aW9uL2luZGV4JykuZGVmYXVsdCwgeyBwYWdlQ29uZmlnOiB7XCJwYXRoXCI6XCIvcGFnZXMvbG9jYXRpb24vaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvbG9jYXRpb24vaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJsb2NhdGlvblwifX0sIC4uLnByb3BzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgIH1cbiAgICAgIH1cbiAgICApO1xucm91dGVzLnB1c2goXG4gICAgICB7XG4gICAgICAgIC4uLntcInBhdGhcIjpcIi9wYWdlcy9pbWFnZS9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9pbWFnZS9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImltYWdlXCJ9fSxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PiAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocmVxdWlyZSgnL1VzZXJzL3lpdGFuL0RvY3VtZW50cy93b3Jrc3BhY2UvY29kZS91bml2ZXJzYWwtYXBpL2RlbW9zL3NyYy9wYWdlcy9pbWFnZS9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL2ltYWdlL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2ltYWdlL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiaW1hZ2VcIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvYXVkaW8vaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvYXVkaW8vaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJhdWRpb1wifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvYXVkaW8vaW5kZXgnKS5kZWZhdWx0LCB7IHBhZ2VDb25maWc6IHtcInBhdGhcIjpcIi9wYWdlcy9hdWRpby9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9hdWRpby9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImF1ZGlvXCJ9fSwgLi4ucHJvcHMgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBDb21wb25lbnQ7XG4gICAgfVxuICAgICAgfVxuICAgICk7XG5yb3V0ZXMucHVzaChcbiAgICAgIHtcbiAgICAgICAgLi4ue1wicGF0aFwiOlwiL3BhZ2VzL25hdmlnYXRlL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL25hdmlnYXRlL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwibmF2aWdhdGVcIn19LFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+ICgpID0+IHtcbiAgICAgIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcykge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChyZXF1aXJlKCcvVXNlcnMveWl0YW4vRG9jdW1lbnRzL3dvcmtzcGFjZS9jb2RlL3VuaXZlcnNhbC1hcGkvZGVtb3Mvc3JjL3BhZ2VzL25hdmlnYXRlL2luZGV4JykuZGVmYXVsdCwgeyBwYWdlQ29uZmlnOiB7XCJwYXRoXCI6XCIvcGFnZXMvbmF2aWdhdGUvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvbmF2aWdhdGUvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJuYXZpZ2F0ZVwifX0sIC4uLnByb3BzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgIH1cbiAgICAgIH1cbiAgICApO1xucm91dGVzLnB1c2goXG4gICAgICB7XG4gICAgICAgIC4uLntcInBhdGhcIjpcIi9wYWdlcy9yZXF1ZXN0L2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL3JlcXVlc3QvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJyZXF1ZXN0XCJ9fSxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PiAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocmVxdWlyZSgnL1VzZXJzL3lpdGFuL0RvY3VtZW50cy93b3Jrc3BhY2UvY29kZS91bml2ZXJzYWwtYXBpL2RlbW9zL3NyYy9wYWdlcy9yZXF1ZXN0L2luZGV4JykuZGVmYXVsdCwgeyBwYWdlQ29uZmlnOiB7XCJwYXRoXCI6XCIvcGFnZXMvcmVxdWVzdC9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9yZXF1ZXN0L2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwicmVxdWVzdFwifX0sIC4uLnByb3BzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgIH1cbiAgICAgIH1cbiAgICApO1xucm91dGVzLnB1c2goXG4gICAgICB7XG4gICAgICAgIC4uLntcInBhdGhcIjpcIi9wYWdlcy9zdG9yYWdlL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL3N0b3JhZ2UvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJzdG9yYWdlXCJ9fSxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PiAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocmVxdWlyZSgnL1VzZXJzL3lpdGFuL0RvY3VtZW50cy93b3Jrc3BhY2UvY29kZS91bml2ZXJzYWwtYXBpL2RlbW9zL3NyYy9wYWdlcy9zdG9yYWdlL2luZGV4JykuZGVmYXVsdCwgeyBwYWdlQ29uZmlnOiB7XCJwYXRoXCI6XCIvcGFnZXMvc3RvcmFnZS9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9zdG9yYWdlL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwic3RvcmFnZVwifX0sIC4uLnByb3BzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgIH1cbiAgICAgIH1cbiAgICApO1xucm91dGVzLnB1c2goXG4gICAgICB7XG4gICAgICAgIC4uLntcInBhdGhcIjpcIi9wYWdlcy9yZWNvcmRlci9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9yZWNvcmRlci9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInJlY29yZGVyXCJ9fSxcbiAgICAgICAgY29tcG9uZW50OiAoKSA9PiAoKSA9PiB7XG4gICAgICBmdW5jdGlvbiBDb21wb25lbnQocHJvcHMpIHtcbiAgICAgICAgcmV0dXJuIGNyZWF0ZUVsZW1lbnQocmVxdWlyZSgnL1VzZXJzL3lpdGFuL0RvY3VtZW50cy93b3Jrc3BhY2UvY29kZS91bml2ZXJzYWwtYXBpL2RlbW9zL3NyYy9wYWdlcy9yZWNvcmRlci9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL3JlY29yZGVyL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL3JlY29yZGVyL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwicmVjb3JkZXJcIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvdmlkZW8vaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvdmlkZW8vaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJ2aWRlb1wifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvdmlkZW8vaW5kZXgnKS5kZWZhdWx0LCB7IHBhZ2VDb25maWc6IHtcInBhdGhcIjpcIi9wYWdlcy92aWRlby9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy92aWRlby9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInZpZGVvXCJ9fSwgLi4ucHJvcHMgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBDb21wb25lbnQ7XG4gICAgfVxuICAgICAgfVxuICAgICk7XG5yb3V0ZXMucHVzaChcbiAgICAgIHtcbiAgICAgICAgLi4ue1wicGF0aFwiOlwiL3BhZ2VzL21ha2UtcGhvbmUtY2FsbC9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9tYWtlLXBob25lLWNhbGwvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJtYWtlLXBob25lLWNhbGxcIn19LFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+ICgpID0+IHtcbiAgICAgIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcykge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChyZXF1aXJlKCcvVXNlcnMveWl0YW4vRG9jdW1lbnRzL3dvcmtzcGFjZS9jb2RlL3VuaXZlcnNhbC1hcGkvZGVtb3Mvc3JjL3BhZ2VzL21ha2UtcGhvbmUtY2FsbC9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL21ha2UtcGhvbmUtY2FsbC9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9tYWtlLXBob25lLWNhbGwvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJtYWtlLXBob25lLWNhbGxcIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvdmlicmF0ZS9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy92aWJyYXRlL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwidmlicmF0ZVwifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvdmlicmF0ZS9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL3ZpYnJhdGUvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvdmlicmF0ZS9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInZpYnJhdGVcIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvcGFnZS1zY3JvbGwtdG8vaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvcGFnZS1zY3JvbGwtdG8vaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJwYWdlLXNjcm9sbC10b1wifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvcGFnZS1zY3JvbGwtdG8vaW5kZXgnKS5kZWZhdWx0LCB7IHBhZ2VDb25maWc6IHtcInBhdGhcIjpcIi9wYWdlcy9wYWdlLXNjcm9sbC10by9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9wYWdlLXNjcm9sbC10by9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInBhZ2Utc2Nyb2xsLXRvXCJ9fSwgLi4ucHJvcHMgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBDb21wb25lbnQ7XG4gICAgfVxuICAgICAgfVxuICAgICk7XG5yb3V0ZXMucHVzaChcbiAgICAgIHtcbiAgICAgICAgLi4ue1wicGF0aFwiOlwiL3BhZ2VzL2F1dGhvcml6ZS9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9hdXRob3JpemUvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJhdXRob3JpemVcIn19LFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+ICgpID0+IHtcbiAgICAgIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcykge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChyZXF1aXJlKCcvVXNlcnMveWl0YW4vRG9jdW1lbnRzL3dvcmtzcGFjZS9jb2RlL3VuaXZlcnNhbC1hcGkvZGVtb3Mvc3JjL3BhZ2VzL2F1dGhvcml6ZS9pbmRleCcpLmRlZmF1bHQsIHsgcGFnZUNvbmZpZzoge1wicGF0aFwiOlwiL3BhZ2VzL2F1dGhvcml6ZS9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9hdXRob3JpemUvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJhdXRob3JpemVcIn19LCAuLi5wcm9wcyB9KVxuICAgICAgfVxuICAgICAgcmV0dXJuIENvbXBvbmVudDtcbiAgICB9XG4gICAgICB9XG4gICAgKTtcbnJvdXRlcy5wdXNoKFxuICAgICAge1xuICAgICAgICAuLi57XCJwYXRoXCI6XCIvcGFnZXMvc3Vic2NyaWJlLW1lc3NhZ2UvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvc3Vic2NyaWJlLW1lc3NhZ2UvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJzdWJzY3JpYmUtbWVzc2FnZVwifX0sXG4gICAgICAgIGNvbXBvbmVudDogKCkgPT4gKCkgPT4ge1xuICAgICAgZnVuY3Rpb24gQ29tcG9uZW50KHByb3BzKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVFbGVtZW50KHJlcXVpcmUoJy9Vc2Vycy95aXRhbi9Eb2N1bWVudHMvd29ya3NwYWNlL2NvZGUvdW5pdmVyc2FsLWFwaS9kZW1vcy9zcmMvcGFnZXMvc3Vic2NyaWJlLW1lc3NhZ2UvaW5kZXgnKS5kZWZhdWx0LCB7IHBhZ2VDb25maWc6IHtcInBhdGhcIjpcIi9wYWdlcy9zdWJzY3JpYmUtbWVzc2FnZS9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9zdWJzY3JpYmUtbWVzc2FnZS9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInN1YnNjcmliZS1tZXNzYWdlXCJ9fSwgLi4ucHJvcHMgfSlcbiAgICAgIH1cbiAgICAgIHJldHVybiBDb21wb25lbnQ7XG4gICAgfVxuICAgICAgfVxuICAgICk7XG5yb3V0ZXMucHVzaChcbiAgICAgIHtcbiAgICAgICAgLi4ue1wicGF0aFwiOlwiL3BhZ2VzL3NoYXJlL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL3NoYXJlL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwic2hhcmVcIn19LFxuICAgICAgICBjb21wb25lbnQ6ICgpID0+ICgpID0+IHtcbiAgICAgIGZ1bmN0aW9uIENvbXBvbmVudChwcm9wcykge1xuICAgICAgICByZXR1cm4gY3JlYXRlRWxlbWVudChyZXF1aXJlKCcvVXNlcnMveWl0YW4vRG9jdW1lbnRzL3dvcmtzcGFjZS9jb2RlL3VuaXZlcnNhbC1hcGkvZGVtb3Mvc3JjL3BhZ2VzL3NoYXJlL2luZGV4JykuZGVmYXVsdCwgeyBwYWdlQ29uZmlnOiB7XCJwYXRoXCI6XCIvcGFnZXMvc2hhcmUvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvc2hhcmUvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJzaGFyZVwifX0sIC4uLnByb3BzIH0pXG4gICAgICB9XG4gICAgICByZXR1cm4gQ29tcG9uZW50O1xuICAgIH1cbiAgICAgIH1cbiAgICApO1xuICAgIGNvbnN0IGFwcENvbmZpZyA9IHtcbiAgICAgIC4uLntcInJvdXRlc1wiOlt7XCJwYXRoXCI6XCIvcGFnZXMvSG9tZS9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9Ib21lL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwidW5pXCJ9fSx7XCJwYXRoXCI6XCIvcGFnZXMvYXBwbGljYXRpb24vaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvYXBwbGljYXRpb24vaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJhcHBsaWNhdGlvblwifX0se1wicGF0aFwiOlwiL3BhZ2VzL2Nhbml1c2UvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvY2FuaXVzZS9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImNhbml1c2VcIn19LHtcInBhdGhcIjpcIi9wYWdlcy9jYW52YXMvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvY2FudmFzL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiY2FudmFzXCJ9fSx7XCJwYXRoXCI6XCIvcGFnZXMvYWNjZWxlcm9tZXRlci9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9hY2NlbGVyb21ldGVyL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiYWNjZWxlcm9tZXRlclwifX0se1wicGF0aFwiOlwiL3BhZ2VzL2NsaXBib2FyZC9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9jbGlwYm9hcmQvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJjbGlwYm9hcmRcIn19LHtcInBhdGhcIjpcIi9wYWdlcy9zeXN0ZW0taW5mby9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9zeXN0ZW0taW5mby9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInN5c3RlbS1pbmZvXCJ9fSx7XCJwYXRoXCI6XCIvcGFnZXMvc2Nhbi9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9zY2FuL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwic2NhblwifX0se1wicGF0aFwiOlwiL3BhZ2VzL2ZpbGUvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvZmlsZS9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImZpbGVcIn19LHtcInBhdGhcIjpcIi9wYWdlcy9hY3Rpb24tc2hlZXQvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvYWN0aW9uLXNoZWV0L2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiYWN0aW9uLXNoZWV0XCJ9fSx7XCJwYXRoXCI6XCIvcGFnZXMvYWxlcnQvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvYWxlcnQvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJhbGVydFwifX0se1wicGF0aFwiOlwiL3BhZ2VzL2FuaW1hdGlvbi9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9hbmltYXRpb24vaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJhbmltYXRpb25cIn19LHtcInBhdGhcIjpcIi9wYWdlcy90b2FzdC9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy90b2FzdC9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInRvYXN0XCJ9fSx7XCJwYXRoXCI6XCIvcGFnZXMvbG9hZGluZy9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9sb2FkaW5nL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwibG9hZGluZ1wifX0se1wicGF0aFwiOlwiL3BhZ2VzL25hdmlnYXRpb24tYmFyL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL25hdmlnYXRpb24tYmFyL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwibmF2aWdhdGlvbi1iYXJcIn19LHtcInBhdGhcIjpcIi9wYWdlcy9wdWxsLWRvd24tcmVmcmVzaC9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9wdWxsLWRvd24tcmVmcmVzaC9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInB1bGwtZG93bi1yZWZyZXNoXCJ9fSx7XCJwYXRoXCI6XCIvcGFnZXMvdGFiLWJhci9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy90YWItYmFyL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwidGFiLWJhclwifX0se1wicGF0aFwiOlwiL3BhZ2VzL2VsZW1lbnQvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvZWxlbWVudC9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImVsZW1lbnRcIn19LHtcInBhdGhcIjpcIi9wYWdlcy9pbnRlcnNlY3Rpb24tb2JzZXJ2ZXIvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvaW50ZXJzZWN0aW9uLW9ic2VydmVyL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiaW50ZXJzZWN0aW9uLW9ic2VydmVyXCJ9fSx7XCJwYXRoXCI6XCIvcGFnZXMvY29uZmlybS9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9jb25maXJtL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiY29uZmlybVwifX0se1wicGF0aFwiOlwiL3BhZ2VzL2xvY2F0aW9uL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2xvY2F0aW9uL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwibG9jYXRpb25cIn19LHtcInBhdGhcIjpcIi9wYWdlcy9pbWFnZS9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9pbWFnZS9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImltYWdlXCJ9fSx7XCJwYXRoXCI6XCIvcGFnZXMvYXVkaW8vaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvYXVkaW8vaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJhdWRpb1wifX0se1wicGF0aFwiOlwiL3BhZ2VzL25hdmlnYXRlL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL25hdmlnYXRlL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwibmF2aWdhdGVcIn19LHtcInBhdGhcIjpcIi9wYWdlcy9yZXF1ZXN0L2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL3JlcXVlc3QvaW5kZXhcIixcIndpbmRvd1wiOntcInRpdGxlXCI6XCJyZXF1ZXN0XCJ9fSx7XCJwYXRoXCI6XCIvcGFnZXMvc3RvcmFnZS9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9zdG9yYWdlL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwic3RvcmFnZVwifX0se1wicGF0aFwiOlwiL3BhZ2VzL3JlY29yZGVyL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL3JlY29yZGVyL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwicmVjb3JkZXJcIn19LHtcInBhdGhcIjpcIi9wYWdlcy92aWRlby9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy92aWRlby9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInZpZGVvXCJ9fSx7XCJwYXRoXCI6XCIvcGFnZXMvbWFrZS1waG9uZS1jYWxsL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL21ha2UtcGhvbmUtY2FsbC9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcIm1ha2UtcGhvbmUtY2FsbFwifX0se1wicGF0aFwiOlwiL3BhZ2VzL3ZpYnJhdGUvaW5kZXhcIixcInNvdXJjZVwiOlwicGFnZXMvdmlicmF0ZS9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInZpYnJhdGVcIn19LHtcInBhdGhcIjpcIi9wYWdlcy9wYWdlLXNjcm9sbC10by9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9wYWdlLXNjcm9sbC10by9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInBhZ2Utc2Nyb2xsLXRvXCJ9fSx7XCJwYXRoXCI6XCIvcGFnZXMvYXV0aG9yaXplL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL2F1dGhvcml6ZS9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcImF1dGhvcml6ZVwifX0se1wicGF0aFwiOlwiL3BhZ2VzL3N1YnNjcmliZS1tZXNzYWdlL2luZGV4XCIsXCJzb3VyY2VcIjpcInBhZ2VzL3N1YnNjcmliZS1tZXNzYWdlL2luZGV4XCIsXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwic3Vic2NyaWJlLW1lc3NhZ2VcIn19LHtcInBhdGhcIjpcIi9wYWdlcy9zaGFyZS9pbmRleFwiLFwic291cmNlXCI6XCJwYWdlcy9zaGFyZS9pbmRleFwiLFwid2luZG93XCI6e1widGl0bGVcIjpcInNoYXJlXCJ9fV0sXCJ3aW5kb3dcIjp7XCJ0aXRsZVwiOlwiXCJ9LFwicGVybWlzc2lvblwiOntcInNjb3BlLnVzZXJMb2NhdGlvblwiOntcImRlc2NcIjpcIuS9oOeahOS9jee9ruS/oeaBr+WwhueUqOS6juWwj+eoi+W6j+S9jee9ruaOpeWPo+eahOaViOaenOWxleekulwifX0sXCJ0YWJCYXJcIjp7XCJ0ZXh0Q29sb3JcIjpcIiM5OTlcIixcInNlbGVjdGVkQ29sb3JcIjpcIiM2NjZcIixcImJhY2tncm91bmRDb2xvclwiOlwiI2Y4ZjhmOFwiLFwiaXRlbXNcIjpbe1wicGFnZVBhdGhcIjpcInBhZ2VzL0hvbWUvaW5kZXhcIixcImljb25cIjpcImh0dHBzOi8vZ3cuYWxpY2RuLmNvbS9pbWdleHRyYS9pMi9PMUNOMDFSNFZBR3AyOGR0blNMQUtNN18hITYwMDAwMDAwMDc5NTYtMi10cHMtNTAtNTAucG5nXCIsXCJhY3RpdmVJY29uXCI6XCJodHRwczovL2d3LmFsaWNkbi5jb20vaW1nZXh0cmEvaTIvTzFDTjAxSkZTeFR0MXh6MEhCNGpPMExfISE2MDAwMDAwMDA2NTEzLTItdHBzLTUwLTUwLnBuZ1wiLFwidGV4dFwiOlwiaG9tZVwifSx7XCJwYWdlUGF0aFwiOlwicGFnZXMvdGFiLWJhci9pbmRleFwiLFwiaWNvblwiOlwiaHR0cHM6Ly9ndy5hbGljZG4uY29tL2ltZ2V4dHJhL2k0L08xQ04wMVRKUWpHQjFKT2tId1JvR1ZhXyEhNjAwMDAwMDAwMTAxOS0yLXRwcy0zMC0zMC5wbmdcIixcImFjdGl2ZUljb25cIjpcImh0dHBzOi8vZ3cuYWxpY2RuLmNvbS9pbWdleHRyYS9pMi9PMUNOMDFJQURrZkcyMEw2Y2d4SUM1al8hITYwMDAwMDAwMDY4MzItMi10cHMtNTAtNTAucG5nXCIsXCJ0ZXh0XCI6XCJ0YWJCYXJcIn1dLFwibGlzdFwiOlt7XCJwYWdlUGF0aFwiOlwicGFnZXMvSG9tZS9pbmRleFwiLFwidGV4dFwiOlwiaG9tZVwifSx7XCJwYWdlUGF0aFwiOlwicGFnZXMvdGFiLWJhci9pbmRleFwiLFwidGV4dFwiOlwidGFiQmFyXCJ9XX19LFxuICAgICAgcm91dGVzXG4gICAgfTtcbiAgICBleHBvcnQgZGVmYXVsdCBhcHBDb25maWc7XG4gICIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQgfSBmcm9tICdyYXgnO1xuaW1wb3J0IFZpZXcgZnJvbSAncmF4LXZpZXcnO1xuaW1wb3J0IGFwcEpzb24gZnJvbSAnLi4vLi4vYXBwLmpzb24nO1xuaW1wb3J0IG5hdmlnYXRlIGZyb20gJ0B1bmkvbmF2aWdhdGUnO1xuY29uc3Qgc3R5bGVzID0ge1xuICBmbGV4OiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdydcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgbWFyZ2luOiAnMTBycHgnLFxuICAgIHBhZGRpbmc6ICcyMHJweCcsXG4gICAgYmFja2dyb3VuZDogJyMxN0JEODgnLFxuICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgZm9udFNpemU6ICcyNnJweCdcbiAgfSxcbiAgaW5wdXQ6IHtcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2VlZScsXG4gICAgbWFyZ2luOiAnMTBycHgnXG4gIH1cbn07XG5cbmNvbnN0IEluZGV4ID0gKHtcbiAgaGlzdG9yeVxufSkgPT4ge1xuICBjb25zdCBjbGlja0hhbmRsZXIgPSBwYXRoID0+IHtcbiAgICBuYXZpZ2F0ZS5wdXNoKHtcbiAgICAgIHVybDogcGF0aCxcbiAgICAgIGlzSGFzaDogdHJ1ZSxcbiAgICAgIHJlZnJlc2g6IHRydWVcbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gPFZpZXc+XG4gICAgICB7YXBwSnNvbi5yb3V0ZXMuZmlsdGVyKGkgPT4gaS5wYXRoICE9ICcvcGFnZXMvSG9tZS9pbmRleCcpLm1hcChpID0+IDxWaWV3IGtleT17aS5wYXRofSBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4gY2xpY2tIYW5kbGVyKGkucGF0aCl9PlxuICAgICAgICAgIHtpLndpbmRvdy50aXRsZX1cbiAgICAgICAgPC9WaWV3Pil9XG4gICAgPC9WaWV3Pjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEluZGV4OyIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyYXgnO1xuaW1wb3J0IFZpZXcgZnJvbSAncmF4LXZpZXcnO1xuaW1wb3J0IFRleHQgZnJvbSAncmF4LXRleHQnO1xuaW1wb3J0IEFjY2VsZXJvbWV0ZXIgZnJvbSAnQHVuaS9hY2NlbGVyb21ldGVyJztcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgW3Jlcywgc2V0UmVzXSA9IHVzZVN0YXRlKHtcbiAgICB4OiAwLFxuICAgIHk6IDAsXG4gICAgejogMFxuICB9KTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBBY2NlbGVyb21ldGVyLm9uQ2hhbmdlKHJlcyA9PiB7XG4gICAgICBzZXRSZXMocmVzKTtcbiAgICAgIGNvbnNvbGUubG9nKHJlcy54KTtcbiAgICAgIGNvbnNvbGUubG9nKHJlcy55KTtcbiAgICAgIGNvbnNvbGUubG9nKHJlcy56KTtcbiAgICB9KTsgLy8gQWNjZWxlcm9tZXRlci5vZmZDaGFuZ2UoKTtcbiAgfSwgW10pO1xuICByZXR1cm4gPFZpZXc+XG4gICAgICA8VGV4dD7liqDpgJ/mmYPliqjmiYvmnLo8L1RleHQ+XG4gICAgICA8Vmlldz546L205Yqg6YCf5bqmOiB7cmVzLnh9PC9WaWV3PlxuICAgICAgPFZpZXc+eei9tOWKoOmAn+W6pjoge3Jlcy55fTwvVmlldz5cbiAgICAgIDxWaWV3PnrovbTliqDpgJ/luqY6IHtyZXMuen08L1ZpZXc+XG4gICAgPC9WaWV3Pjtcbn0iLCIvLyBAdHMtbm9jaGVja1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3JheCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgVGV4dCBmcm9tICdyYXgtdGV4dCc7XG5pbXBvcnQgc2hvd0FjdGlvblNoZWV0IGZyb20gJ0B1bmkvYWN0aW9uLXNoZWV0JztcbmltcG9ydCBUb2FzdCBmcm9tICdAdW5pL3RvYXN0JztcbmNvbnN0IHN0eWxlcyA9IHtcbiAgZmxleDoge1xuICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnXG4gIH0sXG4gIGJ1dHRvbjoge1xuICAgIG1hcmdpbjogJzEwcnB4JyxcbiAgICBwYWRkaW5nOiAnMjBycHgnLFxuICAgIGJhY2tncm91bmQ6ICcjMTdCRDg4JyxcbiAgICBjb2xvcjogJyNmZmYnLFxuICAgIGZvbnRTaXplOiAnMjZycHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgfSxcbiAgaW5wdXQ6IHtcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2VlZScsXG4gICAgbWFyZ2luOiAnMTBycHgnXG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gIHJldHVybiA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgIHNob3dBY3Rpb25TaGVldCh7XG4gICAgICBpdGVtTGlzdDogWydBJywgJ0InLCAnQyddLFxuICAgICAgX2V4dDoge1xuICAgICAgICBhbGlNaW5pQXBwOiB7XG4gICAgICAgICAgdGl0bGU6ICfmiJHmmK/pop3lpJblj4LmlbDmoIfpophfZXh0LmFsaU1pbmlBcHAnLFxuICAgICAgICAgIGNhbmNlbEJ1dHRvblRleHQ6ICfpmL/ph4zmjInpkq7mlofmoYgnXG4gICAgICAgIH0sXG4gICAgICAgIHdlY2hhdE1pbmlQcm9ncmFtOiB7XG4gICAgICAgICAgaXRlbUNvbG9yOiAnI2ZmMTIxNCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgIFRvYXN0LnNob3coYOmAieS4remhuUluZGV4OiR7cmVzLnRhcEluZGV4fWApO1xuICAgIH0pO1xuICB9fT5cbiAgICAgIHNob3dBY3Rpb25TaGVldFxuICAgIDwvVmlldz47XG59IiwiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3JheCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgVGV4dCBmcm9tICdyYXgtdGV4dCc7XG5pbXBvcnQgYWxlcnQgZnJvbSAnQHVuaS9hbGVydCc7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sXG4gIGlucHV0OiB7XG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlZWUnLFxuICAgIG1hcmdpbjogJzEwcnB4J1xuICB9XG59O1xuXG5jb25zdCBJbmRleCA9ICgpID0+IHtcbiAgcmV0dXJuIDxWaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IGFsZXJ0KHtcbiAgICAgIGNvbnRlbnQ6ICfmiJHmmK/kuIDkuKrlvLnnqpcnLFxuICAgICAgdGl0bGU6ICflvLnnqpcnLFxuICAgICAgYnV0dG9uVGV4dDogJ+ehruWumicsXG4gICAgICBfZXh0OiB7XG4gICAgICAgIHdlY2hhdE1pbmlQcm9ncmFtOiB7XG4gICAgICAgICAgY29uZmlybUNvbG9yOiAnI2ZmMTIxNCdcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0pfT5cbiAgICAgICAg54K55Ye75by55Ye65pmu6YCa5by556qXXG4gICAgICA8L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4gYWxlcnQoe1xuICAgICAgY29udGVudDogJ+aIkeaYr+S4gOS4quW8ueeqlycsXG4gICAgICB0aXRsZTogJ+W8ueeqlycsXG4gICAgICBidXR0b25UZXh0OiAn56Gu5a6aJyxcbiAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgICAgYWxlcnQoe1xuICAgICAgICAgIGNvbnRlbnQ6ICfkvaDngrnlh7vkuobnoa7lrponLFxuICAgICAgICAgIHRpdGxlOiAn5by556qXJyxcbiAgICAgICAgICBidXR0b25UZXh0OiAn56Gu5a6aJ1xuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KX0+XG4gICAgICAg54K55Ye755uR5ZCs54K55Ye7XG4gICAgICA8L1ZpZXc+XG4gICAgPC9WaWV3Pjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEluZGV4OyIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZVJlZiwgdXNlU3RhdGUgfSBmcm9tICdyYXgnO1xuaW1wb3J0IFZpZXcgZnJvbSAncmF4LXZpZXcnO1xuaW1wb3J0IHsgY3JlYXRlQW5pbWF0aW9uLCBjcmVhdGVUcmFuc2l0aW9uIH0gZnJvbSAnQHVuaS9hbmltYXRpb24nO1xuY29uc3Qgc3R5bGVzID0ge1xuICBib3g6IHtcbiAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICB0b3A6ICcxMDBycHgnLFxuICAgIGxlZnQ6ICcxMDBycHgnLFxuICAgIHdpZHRoOiAnMzAwcnB4JyxcbiAgICBoZWlnaHQ6ICcxODBycHgnLFxuICAgIGJhY2tncm91bmQ6ICcjZjdjOGM4J1xuICB9LFxuICBidXR0b25XcmFwcGVyOiB7XG4gICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgdG9wOiAnNDAwcnB4JyxcbiAgICBsZWZ0OiAnMTZycHgnLFxuICAgIHJpZ2h0OiAnMTZycHgnLFxuICAgIHpJbmRleDogJzInLFxuICAgIGZvbnRTaXplOiAnMjZycHgnLFxuICAgIGNvbG9yOiAnIzMzMydcbiAgfSxcbiAgYnV0dG9uR3JvdXA6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICBmbGV4V3JhcDogJ3dyYXAnXG4gIH0sXG4gIGJ1dHRvbjoge1xuICAgIG1hcmdpbjogJzJycHgnLFxuICAgIHBhZGRpbmc6ICcxMnJweCAxNnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sXG4gIGRlc2M6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93JyxcbiAgICBhbGlnbkl0ZW1zOiAnY2VudGVyJyxcbiAgICBtYXJnaW5Ub3A6ICcyMHJweCdcbiAgfVxufTtcblxuY29uc3QgcmFuZG9tID0gKG1pbiwgbWF4LCBkaWdpdCA9IDApID0+IHtcbiAgY29uc3QgciA9IE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSArIG1pbjtcbiAgcmV0dXJuIE51bWJlcihyLnRvRml4ZWQoZGlnaXQpKTtcbn07XG5cbmNvbnN0IEluZGV4ID0gKCkgPT4ge1xuICBjb25zdCBbdmlzaWJsZSwgc2V0VmlzaWJsZV0gPSB1c2VTdGF0ZSh0cnVlKTtcbiAgY29uc3QgW3NlbGVjdGVkLCBzZXRTZWxlY3RlZF0gPSB1c2VTdGF0ZShbXSk7XG4gIGNvbnN0IFthbmltYXRpb25EYXRhLCBzZXRBbmltYXRpb25EYXRhXSA9IHVzZVN0YXRlKHt9KTtcbiAgY29uc3QgYm94UmVmID0gdXNlUmVmPGFueT4oKTtcbiAgY29uc3QgYW5pID0gdXNlUmVmPGFueT4oKTtcblxuICBpZiAoIWFuaS5jdXJyZW50KSB7XG4gICAgYW5pLmN1cnJlbnQgPSBjcmVhdGVBbmltYXRpb24oKTtcbiAgfVxuXG4gIGNvbnN0IHB1dCA9IG5hbWUgPT4ge1xuICAgIGxldCBjdXJyZW50ID0gc2VsZWN0ZWQucG9wKCk7XG4gICAgaWYgKCFjdXJyZW50KSBjdXJyZW50ID0gW107XG4gICAgY3VycmVudC5wdXNoKG5hbWUpO1xuICAgIHNlbGVjdGVkLnB1c2goY3VycmVudCk7XG4gICAgc2V0U2VsZWN0ZWQoc2VsZWN0ZWQuc2xpY2UoKSk7XG4gIH07XG5cbiAgY29uc3QgcmVzZXQgPSAoKSA9PiB7XG4gICAgYW5pLmN1cnJlbnQgPSBjcmVhdGVBbmltYXRpb24oKTtcbiAgICBzZXRWaXNpYmxlKGZhbHNlKTtcbiAgICBzZXRTZWxlY3RlZChbXSk7XG4gICAgc2V0QW5pbWF0aW9uRGF0YSh7fSk7XG4gICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICBzZXRWaXNpYmxlKHRydWUpO1xuICAgIH0sIDApO1xuICB9O1xuXG4gIGNvbnN0IHBsYXkgPSAoKSA9PiB7XG4gICAgbGV0IGluc3QgPSBhbmkuY3VycmVudDtcbiAgICBzZWxlY3RlZC5mb3JFYWNoKHN0ZXAgPT4ge1xuICAgICAgaWYgKHN0ZXAubGVuZ3RoID09PSAwKSByZXR1cm47XG4gICAgICBzdGVwLmZvckVhY2goaXRlbSA9PiB7XG4gICAgICAgIHN3aXRjaCAoaXRlbSkge1xuICAgICAgICAgIGNhc2UgJ+aXi+i9rCc6XG4gICAgICAgICAgICBpbnN0LnJvdGF0ZShyYW5kb20oLTMwLCAzMCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICfnvKnmlL4nOlxuICAgICAgICAgICAgaW5zdC5zY2FsZShyYW5kb20oMC41LCAxLjUsIDIpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAn5bmz56e7JzpcbiAgICAgICAgICAgIGluc3QudHJhbnNsYXRlKHJhbmRvbSgtNTAsIDUwKSwgcmFuZG9tKC01MCwgNTApKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAn5YC+5pacJzpcbiAgICAgICAgICAgIGluc3Quc2tldyhyYW5kb20oLTMwLCAzMCksIHJhbmRvbSgtMzAsIDMwKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJzNE5Y+Y5o2iJzpcbiAgICAgICAgICAgIGluc3Qucm90YXRlM2QocmFuZG9tKC0yLCAyLCAyKSwgcmFuZG9tKC0yLCAyLCAyKSwgcmFuZG9tKC0yLCAyLCAyKSwgcmFuZG9tKC05MCwgOTApKTtcbiAgICAgICAgICAgIGluc3QudHJhbnNsYXRlM2QocmFuZG9tKC01MCwgNTApLCByYW5kb20oLTUwLCA1MCksIHJhbmRvbSgtNTAsIDUwKSk7XG4gICAgICAgICAgICBicmVhaztcblxuICAgICAgICAgIGNhc2UgJ+aUueWPmOWkp+Wwjyc6XG4gICAgICAgICAgICBpbnN0LndpZHRoKHJhbmRvbSgxMDAsIDMwMCkpLmhlaWdodChyYW5kb20oNTAsIDE0MCkpO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICfmlLnlj5jog4zmma/oibInOlxuICAgICAgICAgICAgaW5zdC5iYWNrZ3JvdW5kQ29sb3IoYHJnYigke3JhbmRvbSgwLCAyNTUpfSwgJHtyYW5kb20oMCwgMjU1KX0sICR7cmFuZG9tKDAsIDI1NSl9KWApO1xuICAgICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgICBjYXNlICfmlLnlj5jpgI/mmI7luqYnOlxuICAgICAgICAgICAgaW5zdC5vcGFjaXR5KHJhbmRvbSgwLjIsIDEsIDIpKTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgY2FzZSAn5bu26L+fNTAwbXMnOlxuICAgICAgICAgICAgaW5zdC5zdGVwKCkuc3RlcCh7XG4gICAgICAgICAgICAgIGR1cmF0aW9uOiAwLFxuICAgICAgICAgICAgICBkZWxheTogNTAwXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgICBpbnN0LnN0ZXAoKTtcbiAgICB9KTtcbiAgICBjb25zdCBkYXRhID0gaW5zdC5leHBvcnQoYm94UmVmLmN1cnJlbnQpO1xuICAgIGNvbnNvbGUubG9nKCdhbmltYXRpb25EYXRhJywgZGF0YSk7XG4gICAgc2V0QW5pbWF0aW9uRGF0YShkYXRhKTtcbiAgfTtcblxuICBjb25zdCBhZGRHcm91cCA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdTZWxlY3RlZCA9IHNlbGVjdGVkLnNsaWNlKCk7XG4gICAgbmV3U2VsZWN0ZWQucHVzaChbXSk7XG4gICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0ZWQpO1xuICB9O1xuXG4gIGNvbnN0IGNvcHlHcm91cCA9ICgpID0+IHtcbiAgICBjb25zdCBuZXdTZWxlY3RlZCA9IHNlbGVjdGVkLnNsaWNlKCk7XG4gICAgY29uc3QgdGFyZ2V0ID0gbmV3U2VsZWN0ZWRbbmV3U2VsZWN0ZWQubGVuZ3RoIC0gMV0gfHwgW107XG4gICAgbmV3U2VsZWN0ZWQucHVzaCh0YXJnZXQuc2xpY2UoKSk7XG4gICAgc2V0U2VsZWN0ZWQobmV3U2VsZWN0ZWQpO1xuICB9O1xuXG4gIGNvbnN0IHBsYXlUcmFuc2l0aW9uID0gKCkgPT4ge1xuICAgIGNvbnN0IHRyYW5zaXRpb24gPSBjcmVhdGVUcmFuc2l0aW9uKHtcbiAgICAgIGZyb206IHtcbiAgICAgICAgdHJhbnNmb3JtOiAndHJhbnNsYXRlKDEwcHgsIDEwcHgpIHNjYWxlKDEpJ1xuICAgICAgfSxcbiAgICAgIHRvOiB7XG4gICAgICAgIHRyYW5zZm9ybTogJ3RyYW5zbGF0ZSgxMDBweCwgNTBweCkgc2NhbGUoMS40LCAxLjIpJ1xuICAgICAgfVxuICAgIH0pO1xuICAgIGNvbnN0IGRhdGEgPSB0cmFuc2l0aW9uLmV4cG9ydChib3hSZWYuY3VycmVudCk7XG4gICAgY29uc29sZS5sb2coJ3RyYW5zaXRpb25EYXRhJywgZGF0YSk7XG4gICAgc2V0QW5pbWF0aW9uRGF0YShkYXRhKTtcbiAgfTtcblxuICByZXR1cm4gPFZpZXc+XG4gICAgICB7dmlzaWJsZSAmJiA8VmlldyBzdHlsZT17c3R5bGVzLmJveH0gcmVmPXtib3hSZWZ9IGFuaW1hdGlvbj17YW5pbWF0aW9uRGF0YX0gLz59XG5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9uV3JhcHBlcn0+XG4gICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9uR3JvdXB9PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiBwdXQoJ+aXi+i9rCcpfT7ml4vovaw8L1ZpZXc+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IHB1dCgn57yp5pS+Jyl9Pue8qeaUvjwvVmlldz5cbiAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4gcHV0KCflubPnp7snKX0+5bmz56e7PC9WaWV3PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiBwdXQoJ+WAvuaWnCcpfT7lgL7mlpw8L1ZpZXc+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IHB1dCgnM0Tlj5jmjaInKX0+M0Tlj5jmjaI8L1ZpZXc+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IHB1dCgn5pS55Y+Y5aSn5bCPJyl9PuaUueWPmOWkp+WwjzwvVmlldz5cbiAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4gcHV0KCfmlLnlj5jog4zmma/oibInKX0+5pS55Y+Y6IOM5pmv6ImyPC9WaWV3PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiBwdXQoJ+aUueWPmOmAj+aYjuW6picpfT7mlLnlj5jpgI/mmI7luqY8L1ZpZXc+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IHB1dCgn5bu26L+fNTAwbXMnKX0+5bu26L+fNTAwbXM8L1ZpZXc+XG4gICAgICAgIDwvVmlldz5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5kZXNjfT5cbiAgICAgICAgICDlt7Lmt7vliqDnmoTliqjnlLvmlYjmnpzvvJpcbiAgICAgICAgICA8VmlldyBzdHlsZT17eyAuLi5zdHlsZXMuYnV0dG9uLFxuICAgICAgICAgIHBhZGRpbmc6ICc0cnB4JyxcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAnIzM1YjBjZSdcbiAgICAgICAgfX0gb25DbGljaz17YWRkR3JvdXB9Pua3u+WKoOWKqOeUu+e7hDwvVmlldz5cbiAgICAgICAgICA8VmlldyBzdHlsZT17eyAuLi5zdHlsZXMuYnV0dG9uLFxuICAgICAgICAgIHBhZGRpbmc6ICc0cnB4JyxcbiAgICAgICAgICBiYWNrZ3JvdW5kOiAnIzM1YjBjZSdcbiAgICAgICAgfX0gb25DbGljaz17Y29weUdyb3VwfT7mi7fotJ3lvZPliY3liqjnlLvnu4Q8L1ZpZXc+XG4gICAgICAgIDwvVmlldz5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3tcbiAgICAgICAgY29sb3I6ICcjMTdCRDg4JyxcbiAgICAgICAgbWFyZ2luOiAnMjBycHggMCdcbiAgICAgIH19PlxuICAgICAgICAgIHtzZWxlY3RlZC5tYXAoKGl0ZW0sIGluZGV4KSA9PiA8Vmlldz57aW5kZXggKyAxfToge2l0ZW0uam9pbignLCAnKX08L1ZpZXc+KX1cbiAgICAgICAgPC9WaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17eyAuLi5zdHlsZXMuYnV0dG9uLFxuICAgICAgICBtYXJnaW5Ub3A6ICczMHJweCdcbiAgICAgIH19IG9uQ2xpY2s9e3BsYXl9PuaSreaUvuWKqOeUuzwvVmlldz5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3sgLi4uc3R5bGVzLmJ1dHRvbixcbiAgICAgICAgbWFyZ2luVG9wOiAnMTBycHgnXG4gICAgICB9fSBvbkNsaWNrPXtyZXNldH0+6YeN572uPC9WaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17eyAuLi5zdHlsZXMuYnV0dG9uLFxuICAgICAgICBtYXJnaW5Ub3A6ICczMHJweCdcbiAgICAgIH19IG9uQ2xpY2s9e3BsYXlUcmFuc2l0aW9ufT5jcmVhdGVUcmFuc2l0aW9uIOa8lOekuu+8iOW5s+enuyvnvKnmlL7vvIk8L1ZpZXc+XG4gICAgICA8L1ZpZXc+XG5cbiAgICA8L1ZpZXc+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW5kZXg7IiwiLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZUVmZmVjdCwgdXNlU3RhdGUsIHVzZVJlZiB9IGZyb20gJ3JheCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgVGV4dCBmcm9tICdyYXgtdGV4dCc7XG5pbXBvcnQgeyBvbkVycm9yLCBvZmZFcnJvciwgZ2V0QXBwLCBnZXRDdXJyZW50UGFnZXMgfSBmcm9tICdAdW5pL2FwcGxpY2F0aW9uJztcbmltcG9ydCB7IHNob3cgfSBmcm9tICdAdW5pL3RvYXN0JztcbmNvbnN0IHN0eWxlcyA9IHtcbiAgZmxleDoge1xuICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnXG4gIH0sXG4gIGJ1dHRvbjoge1xuICAgIG1hcmdpbjogJzEwcnB4JyxcbiAgICBwYWRkaW5nOiAnMjBycHgnLFxuICAgIGJhY2tncm91bmQ6ICcjMTdCRDg4JyxcbiAgICBjb2xvcjogJyNmZmYnLFxuICAgIGZvbnRTaXplOiAnMjZycHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgfSxcbiAgaW5wdXQ6IHtcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2VlZScsXG4gICAgbWFyZ2luOiAnMTBycHgnXG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IHJlZiA9IHVzZVJlZihyZXMgPT4ge1xuICAgIHNob3coJ+aNleiOt+WIsOS4gOS4qumUmeivrycpO1xuICB9KTtcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGUoe1xuICAgIGZpcnN0UGFnZToge30sXG4gICAgY3VycmVudFBhZ2U6IHt9XG4gIH0pO1xuICBjb25zdCBbYSwgc2V0QV0gPSB1c2VTdGF0ZSgxKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBvbkVycm9yKHJlZi5jdXJyZW50KTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgb2ZmRXJyb3IocmVmLmN1cnJlbnQpO1xuICAgIH07XG4gIH0sIFtdKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ+aIkeaYr+S4gOS4qumUmeivrycpO1xuICB9LCBbYV0pO1xuXG4gIGNvbnN0IHNob3dFcnJvciA9ICgpID0+IHtcbiAgICBzZXRBKGEgPT4gYSArIDEpO1xuICB9O1xuXG4gIHJldHVybiA8Vmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBnZXRBcHAoKS5nbG9iYWxEYXRhID0gJ0kgYW0gZ2xvYmFsIGRhdGEnO1xuICAgIH19Puiuvue9ruWFqOWxgOWxnuaApzwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBzaG93KGdldEFwcCgpLmdsb2JhbERhdGEpO1xuICAgIH19PuiOt+WPluWFqOWxgOWxnuaApzwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBvbkVycm9yKHJlZi5jdXJyZW50KTtcbiAgICB9fT7nm5HlkKzplJnor688L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17c2hvd0Vycm9yfT7op6blj5HplJnor688L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgb2ZmRXJyb3IocmVmLmN1cnJlbnQpO1xuICAgIH19PuWPlua2iOebkeWQrDwvVmlldz5cbiAgICAgIDxWaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgICBsZXQgcGFnZUluZm8gPSBnZXRDdXJyZW50UGFnZXMoKTtcbiAgICAgICAgc2V0RGF0YSh7XG4gICAgICAgICAgZmlyc3RQYWdlOiB7XG4gICAgICAgICAgICBwYWdlSWQ6IHBhZ2VJbmZvWzBdLnBhZ2VJZFxuICAgICAgICAgIH0sXG4gICAgICAgICAgY3VycmVudFBhZ2U6IHtcbiAgICAgICAgICAgIHBhZ2VJZDogcGFnZUluZm9bcGFnZUluZm8ubGVuZ3RoIC0gMV0ucGFnZUlkXG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgIH19PuiOt+WPlumhtemdouWghuagiOS/oeaBrzwvVmlldz5cbiAgICAgICAgPFZpZXc+5b2T5YmN6aG16Z2iaWTmmK/vvJp7ZGF0YS5jdXJyZW50UGFnZS5wYWdlSWR9PC9WaWV3PlxuICAgICAgPC9WaWV3PlxuICAgIDwvVmlldz47XG59IiwiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBzZXRTdGF0ZSwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JheCc7XG5pbXBvcnQgeyByZWdpc3Rlck5hdGl2ZUV2ZW50TGlzdGVuZXJzLCBhZGROYXRpdmVFdmVudExpc3RlbmVyLCByZW1vdmVOYXRpdmVFdmVudExpc3RlbmVyLCB1c2VQYWdlU2hvdyB9IGZyb20gJ3JheC1hcHAnO1xuaW1wb3J0IFZpZXcgZnJvbSAncmF4LXZpZXcnO1xuaW1wb3J0IFRleHQgZnJvbSAncmF4LXRleHQnO1xuaW1wb3J0IFRleHRJbnB1dCBmcm9tICdyYXgtdGV4dGlucHV0JztcbmltcG9ydCBBdWRpbyBmcm9tICdAdW5pL2F1ZGlvJztcbmltcG9ydCBUb2FzdCBmcm9tICdAdW5pL3RvYXN0JztcbmltcG9ydCB7IGlzV2ViLCBpc01pbmlBcHAgfSBmcm9tICdAdW5pL2Vudic7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBtYXJnaW5Ub3A6ICcxMDBycHgnLFxuICAgIHBhZGRpbmc6ICcyMHJweCcsXG4gICAgZm9udFNpemU6ICcyNnJweCcsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICBjb2xvcjogJ2dyZWVuJ1xuICB9LFxuICBjb250YWluZXI6IHtcbiAgICBtYXJnaW5Ub3A6ICcxMDBycHgnXG4gIH0sXG4gIGlucHV0OiB7XG4gICAgbWFyZ2luOiAnMjBycHgnLFxuICAgIGJvcmRlckJvdHRvbTogJ3NvbGlkICMzMmExY2UnLFxuICAgIGNvbG9yOiAnIzMyYTFjZSdcbiAgfVxufTtcblxuY29uc3QgSW5kZXggPSAoKSA9PiB7XG4gIGNvbnN0IFtpbm5lckF1ZGlvQ29udGV4dCwgc2V0SW5uZXJBdWRpb0NvbnRleHRdID0gdXNlU3RhdGUoKTtcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAoaXNNaW5pQXBwKSB7XG4gICAgICBUb2FzdC5zaG93VG9hc3Qoe1xuICAgICAgICBjb250ZW50OiAnSURFIOaooeaLn+WZqOaaguS4jeaUr+aMgeiwg+ivle+8jOivt+S7peecn+acuuiwg+ivlee7k+aenOS4uuWHhidcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IGlubmVyQXVkaW9Db250ZXh0ID0gQXVkaW8uY3JlYXRlQXVkaW9Db250ZXh0KCk7IC8vIOazqOaEjyB4aHIg6I635Y+Wc3Jj5pe2aHR0cOi3qOWfn+mXrumimFxuICAgIC8vIGlubmVyQXVkaW9Db250ZXh0LnNyYyA9ICdodHRwczovL2IuYmRzdGF0aWMuY29tL21pbmlhcHAvaW1hZ2VzL3lhbnl1YW4ubXAzJztcbiAgICAvLyBpbm5lckF1ZGlvQ29udGV4dC5zcmMgPSAnaHR0cDovL211c2ljLjE2My5jb20vc29uZy9tZWRpYS9vdXRlci91cmw/aWQ9Mjg4MTUyNTAubXAzJztcbiAgICAvLyBpbm5lckF1ZGlvQ29udGV4dC5zcmMgPSAnaHR0cDovL3ZkMy5iZHN0YXRpYy5jb20vbWRhLWljN214enQ1Y3Z6NmY0eTUvbWRhLWljN214enQ1Y3Z6NmY0eTUubXAzJztcblxuICAgIGlubmVyQXVkaW9Db250ZXh0LnNyYyA9ICdodHRwczovL3N0YXRpYy55eGltZ3MuY29tL3VkYXRhL3BrZy9taW5pcHJvZ3JhbS1vdXRlci90ZXN0Lm00YSc7XG4gICAgaW5uZXJBdWRpb0NvbnRleHQuYXV0b3BsYXkgPSBmYWxzZTsgLy8gaW5uZXJBdWRpb0NvbnRleHQubG9vcCA9IHRydWU7XG5cbiAgICBpbm5lckF1ZGlvQ29udGV4dC5zdGFydFRpbWUgPSAwO1xuICAgIGlubmVyQXVkaW9Db250ZXh0LnBsYXliYWNrUmF0ZSA9IDI7XG4gICAgaW5uZXJBdWRpb0NvbnRleHQub25QbGF5KHJlcyA9PiB7XG4gICAgICBUb2FzdC5zaG93VG9hc3Qoe1xuICAgICAgICBjb250ZW50OiAn6Z+z6aKR5pKt5pS+J1xuICAgICAgfSk7XG4gICAgICBjb25zb2xlLmxvZygnb25QbGF5JywgcmVzKTtcbiAgICB9KTtcbiAgICBpbm5lckF1ZGlvQ29udGV4dC5vbkNhbnBsYXkocmVzID0+IHtcbiAgICAgIFRvYXN0LnNob3dUb2FzdCh7XG4gICAgICAgIGNvbnRlbnQ6ICfpn7PpopHov5vlhaXlj6/mkq3mlL7nirbmgIEnXG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUubG9nKCdvbkNhbnBsYXknLCByZXMpO1xuICAgICAgaW5uZXJBdWRpb0NvbnRleHQub2ZmQ2FucGxheShyZXMgPT4ge1xuICAgICAgICBUb2FzdC5zaG93VG9hc3Qoe1xuICAgICAgICAgIGNvbnRlbnQ6ICflhbPpl63nm5HlkKzpn7PpopHov5vlhaXlj6/mkq3mlL7nirbmgIEnXG4gICAgICAgIH0pO1xuICAgICAgICBjb25zb2xlLmxvZygnb2ZmQ2FucGxheScsIHJlcyk7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgICBpbm5lckF1ZGlvQ29udGV4dC5vblBhdXNlKHJlcyA9PiB7XG4gICAgICBUb2FzdC5zaG93VG9hc3Qoe1xuICAgICAgICBjb250ZW50OiAn6Z+z6aKR5pqC5YGcJ1xuICAgICAgfSk7XG4gICAgICBjb25zb2xlLmxvZygnb25QYXVzZScsIHJlcyk7XG4gICAgfSk7XG4gICAgaW5uZXJBdWRpb0NvbnRleHQub25TdG9wKHJlcyA9PiB7XG4gICAgICBUb2FzdC5zaG93VG9hc3Qoe1xuICAgICAgICBjb250ZW50OiAn6Z+z6aKR5YGc5q2iJ1xuICAgICAgfSk7XG4gICAgICBjb25zb2xlLmxvZygnb25TdG9wJywgcmVzKTtcbiAgICB9KTtcbiAgICBpbm5lckF1ZGlvQ29udGV4dC5vbkVuZGVkKHJlcyA9PiB7XG4gICAgICBUb2FzdC5zaG93VG9hc3Qoe1xuICAgICAgICBjb250ZW50OiAn6Z+z6aKR6Ieq54S25pKt5pS+57uT5p2fJ1xuICAgICAgfSk7XG4gICAgICBjb25zb2xlLmxvZygnb25FbmRlZCcsIHJlcyk7XG4gICAgfSk7IC8vIGlubmVyQXVkaW9Db250ZXh0Lm9uVGltZVVwZGF0ZShyZXMgPT4ge1xuICAgIC8vICAgY29uc29sZS5sb2coJ29uVGltZVVwZGF0ZScsIHJlcyk7XG4gICAgLy8gfSk7XG5cbiAgICBpbm5lckF1ZGlvQ29udGV4dC5vbkVycm9yKGVyciA9PiB7XG4gICAgICBUb2FzdC5zaG93VG9hc3Qoe1xuICAgICAgICBjb250ZW50OiBKU09OLnN0cmluZ2lmeShlcnIpXG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUubG9nKCdvbkVycm9yJywgZXJyKTtcbiAgICB9KTtcbiAgICBpbm5lckF1ZGlvQ29udGV4dC5vbldhaXRpbmcocmVzID0+IHtcbiAgICAgIFRvYXN0LnNob3dUb2FzdCh7XG4gICAgICAgIGNvbnRlbnQ6ICfpn7PpopHliqDovb3kuK0uLi4uLi4nXG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUubG9nKCdvbldhaXRpbmcnLCByZXMpO1xuICAgIH0pO1xuICAgIHNldElubmVyQXVkaW9Db250ZXh0KGlubmVyQXVkaW9Db250ZXh0KTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHBsYXkgPSAoKSA9PiB7XG4gICAgaW5uZXJBdWRpb0NvbnRleHQucGxheSgpO1xuICB9O1xuXG4gIGNvbnN0IHBhdXNlID0gKCkgPT4ge1xuICAgIGlubmVyQXVkaW9Db250ZXh0LnBhdXNlKCk7XG4gIH07XG5cbiAgY29uc3Qgc3RvcCA9ICgpID0+IHtcbiAgICBpbm5lckF1ZGlvQ29udGV4dC5zdG9wKCk7XG4gIH07XG5cbiAgY29uc3Qgc2VlayA9ICgpID0+IHtcbiAgICBpbm5lckF1ZGlvQ29udGV4dC5zZWVrKDMwKTtcbiAgICBUb2FzdC5zaG93VG9hc3Qoe1xuICAgICAgY29udGVudDogJ+i3s+i9rOWIsOmfs+mikTMwc+WkhCdcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBkZXN0cm95ID0gKCkgPT4ge1xuICAgIGlubmVyQXVkaW9Db250ZXh0LmRlc3Ryb3koKTtcbiAgICBUb2FzdC5zaG93VG9hc3Qoe1xuICAgICAgY29udGVudDogJ+mfs+mikemUgOavge+8jOmcgOimgemHjeaWsOinpuWPkeWIm+W7uuaXtuacnydcbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBvZmZUaW1lVXBkYXRlID0gKCkgPT4ge1xuICAgIGlubmVyQXVkaW9Db250ZXh0Lm9mZlRpbWVVcGRhdGUocmVzID0+IHtcbiAgICAgIFRvYXN0LnNob3dUb2FzdCh7XG4gICAgICAgIGNvbnRlbnQ6ICdvZmZUaW1lVXBkYXRlJ1xuICAgICAgfSk7XG4gICAgICBjb25zb2xlLmxvZygnb2ZmVGltZVVwZGF0ZScsIHJlcyk7XG4gICAgfSk7XG4gIH07XG5cbiAgcmV0dXJuIDxWaWV3IHN0eWxlPXtzdHlsZXMuY29udGFpbmVyfT5cbiAgICAgIDxWaWV3IHN0eWxlPXt7XG4gICAgICBtYXJnaW5Ub3A6ICcyMHJweCdcbiAgICB9fT5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9e3BsYXl9PlxuICAgICAgICAgIDxUZXh0PnBsYXk8L1RleHQ+XG4gICAgICAgIDwvVmlldz5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9e3BhdXNlfT5cbiAgICAgICAgICA8VGV4dD5wYXVzZTwvVGV4dD5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17c3RvcH0+XG4gICAgICAgICAgPFRleHQ+c3RvcDwvVGV4dD5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17c2Vla30+XG4gICAgICAgICAgPFRleHQ+c2VlazwvVGV4dD5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17ZGVzdHJveX0+XG4gICAgICAgICAgPFRleHQ+ZGVzdHJveTwvVGV4dD5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgPC9WaWV3PlxuICAgIDwvVmlldz47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbmRleDsiLCIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbi8vIEB0cy1ub2NoZWNrXG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50LCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmF4JztcbmltcG9ydCBWaWV3IGZyb20gJ3JheC12aWV3JztcbmltcG9ydCBhdXRob3JpemUgZnJvbSAnQHVuaS9hdXRob3JpemUnO1xuaW1wb3J0IHsgc2hvd1RvYXN0LCBoaWRlVG9hc3QgfSBmcm9tICdAdW5pL3RvYXN0JztcbmNvbnN0IHN0eWxlcyA9IHtcbiAgZmxleDoge1xuICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnXG4gIH0sXG4gIGJ1dHRvbjoge1xuICAgIG1hcmdpbjogJzEwcnB4JyxcbiAgICBwYWRkaW5nOiAnMjBycHgnLFxuICAgIGJhY2tncm91bmQ6ICcjMTdCRDg4JyxcbiAgICBjb2xvcjogJyNmZmYnLFxuICAgIGZvbnRTaXplOiAnMjZycHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgfSxcbiAgYmc6IHtcbiAgICBiYWNrZ3JvdW5kOiAnIzMzMycsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2VlZScsXG4gICAgbWFyZ2luOiAnMTBycHgnXG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCAoKCkgPT4ge1xuICBjb25zdCBjbGlja0hhbmRsZXIgPSAoKSA9PiB7XG4gICAgYXV0aG9yaXplKHtcbiAgICAgIHNjb3BlOiAnc2NvcGUudXNlckxvY2F0aW9uJyxcbiAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgICAgc2hvd1RvYXN0KCfmjojmnYPmiJDlip8nKTtcbiAgICAgIH0sXG4gICAgICBmYWlsOiAoKSA9PiB7XG4gICAgICAgIHNob3dUb2FzdCgn5o6I5p2D5aSx6LSlJyk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgY2xpY2tIYW5kbGVyMSA9ICgpID0+IHtcbiAgICBhdXRob3JpemUoe1xuICAgICAgc2NvcGU6ICdzY29wZS5jYW1lcmEnLFxuICAgICAgc3VjY2VzczogKCkgPT4ge1xuICAgICAgICBzaG93VG9hc3QoJ+aOiOadg+aIkOWKnycpO1xuICAgICAgfSxcbiAgICAgIGZhaWw6ICgpID0+IHtcbiAgICAgICAgc2hvd1RvYXN0KCfmjojmnYPlpLHotKUnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gPFZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17Y2xpY2tIYW5kbGVyfT7ojrflj5blnLDnkIbkvY3nva7mjojmnYM8L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17Y2xpY2tIYW5kbGVyMX0+6I635Y+W5pGE5YOP5aS05o6I5p2DPC9WaWV3PlxuICAgIDwvVmlldz47XG59KTsiLCJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCB1c2VTdGF0ZSB9IGZyb20gJ3JheCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgVGV4dElucHV0IGZyb20gJ3JheC10ZXh0aW5wdXQnO1xuaW1wb3J0IGNhbklVc2UgZnJvbSAnQHVuaS9jYW5pdXNlJztcbmNvbnN0IHN0eWxlcyA9IHtcbiAgZmxleDoge1xuICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnXG4gIH0sXG4gIGJ1dHRvbjoge1xuICAgIG1hcmdpbjogJzEwcnB4JyxcbiAgICBwYWRkaW5nOiAnMjBycHgnLFxuICAgIGJhY2tncm91bmQ6ICcjMTdCRDg4JyxcbiAgICBjb2xvcjogJyNmZmYnLFxuICAgIGZvbnRTaXplOiAnMjZycHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgfSxcbiAgaW5wdXQ6IHtcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2VlZScsXG4gICAgbWFyZ2luOiAnMTBycHgnXG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IFt2YWx1ZSwgc2V0VmFsdWVdID0gdXNlU3RhdGUoJycpO1xuICByZXR1cm4gPFZpZXc+XG4gICAgICA8Vmlldz7or7fovpPlhaVhcGnmiJbljIXlkI3vvIzlpoInY2xpcGJvYXJkLmdldENsaXBib2FyZCfmiJYnY2xpcGJvYXJkJzwvVmlldz5cbiAgICAgIDxUZXh0SW5wdXQgc3R5bGU9e3N0eWxlcy5pbnB1dH0gcGxhY2Vob2xkZXI9XCLovpPlhaXpqozor4HnmoRhcGlcIiB2YWx1ZT17dmFsdWV9IG9uSW5wdXQ9eyh7XG4gICAgICB2YWx1ZVxuICAgIH0pID0+IHtcbiAgICAgIGNvbnNvbGUubG9nKHZhbHVlKTtcbiAgICAgIHNldFZhbHVlKHZhbHVlKTtcbiAgICB9fSAvPlxuICAgICAgPFZpZXc+57uT5p6c77yae2NhbklVc2UodmFsdWUpICsgJyd9PC9WaWV3PlxuICAgIDwvVmlldz47XG59IiwiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgdXNlRWZmZWN0LCB1c2VSZWYgfSBmcm9tICdyYXgnO1xuaW1wb3J0IFZpZXcgZnJvbSAncmF4LXZpZXcnO1xuaW1wb3J0IGNhbnZhcyBmcm9tICdAdW5pL2NhbnZhcyc7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sXG4gIGlucHV0OiB7XG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlZWUnLFxuICAgIG1hcmdpbjogJzEwcnB4J1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICBjb25zdCBjYW52YXNDb250ZXh0UmVmID0gdXNlUmVmKG51bGwpO1xuXG4gIGNvbnN0IHF1ZXJ5Tm9kZSA9IGNvbG9yID0+IHtcbiAgICBjb25zdCBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2NhbnZhcycpO1xuICAgIGNhbnZhcy5jcmVhdGVDb250ZXh0KHtcbiAgICAgIGNhbnZhc0lkOiAnY2FudmFzJyxcbiAgICAgIGNvbnRleHQ6IG5vZGUuX2ludGVybmFsXG4gICAgfSkudGhlbihjYW52YXNDb250ZXh0ID0+IHtcbiAgICAgIGNhbnZhc0NvbnRleHRSZWYuY3VycmVudCA9IGNhbnZhc0NvbnRleHQ7XG4gICAgICBjYW52YXNDb250ZXh0LmZpbGxTdHlsZSA9IGNvbG9yO1xuICAgICAgY2FudmFzQ29udGV4dC5maWxsUmVjdCgwLCAwLCAyMDAsIDIwMCk7XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3QgZHJhdyA9ICgpID0+IHtcbiAgICBpZiAoIWNhbnZhc0NvbnRleHRSZWYuY3VycmVudCkge1xuICAgICAgcXVlcnlOb2RlKCdyZWQnKTtcbiAgICB9IGVsc2Uge1xuICAgICAgY2FudmFzQ29udGV4dFJlZi5jdXJyZW50LmZpbGxTdHlsZSA9ICdyZWQnO1xuICAgICAgY2FudmFzQ29udGV4dFJlZi5jdXJyZW50LmZpbGxSZWN0KDAsIDAsIDIwMCwgMjAwKTtcbiAgICB9XG4gIH07XG5cbiAgY29uc3QgZHJhdzIgPSAoKSA9PiB7XG4gICAgaWYgKCFjYW52YXNDb250ZXh0UmVmLmN1cnJlbnQpIHtcbiAgICAgIHF1ZXJ5Tm9kZSgneWVsbG93Jyk7XG4gICAgfSBlbHNlIGlmIChjYW52YXNDb250ZXh0UmVmLmN1cnJlbnQpIHtcbiAgICAgIGNhbnZhc0NvbnRleHRSZWYuY3VycmVudC5maWxsU3R5bGUgPSAneWVsbG93JztcbiAgICAgIGNhbnZhc0NvbnRleHRSZWYuY3VycmVudC5maWxsUmVjdCgwLCAwLCAyMDAsIDIwMCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiA8Vmlldz5cbiAgICAgIDxjYW52YXMgaWQ9XCJjYW52YXNcIiBjYW52YXMtaWQ9XCJjYW52YXNcIiB0eXBlPVwiMmRcIiB3aWR0aD1cIjQwMFwiIGhlaWdodD1cIjQwMFwiIC8+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17ZHJhd30+XG4gICAgICAg54K55Ye755Sf5oiQMjAwKjIwMOeahOefqeW9olxuICAgICAgPC9WaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9e2RyYXcyfT5cbiAgICAgICDngrnlh7vnlJ/miJDpu4ToibLnmoTnn6nlvaJcbiAgICAgIDwvVmlldz5cbiAgICA8L1ZpZXc+O1xufSIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZVN0YXRlIH0gZnJvbSAncmF4JztcbmltcG9ydCBWaWV3IGZyb20gJ3JheC12aWV3JztcbmltcG9ydCBUZXh0IGZyb20gJ3JheC10ZXh0JztcbmltcG9ydCBUZXh0SW5wdXQgZnJvbSAncmF4LXRleHRpbnB1dCc7XG5pbXBvcnQgeyBnZXRDbGlwYm9hcmQsIHNldENsaXBib2FyZCB9IGZyb20gJ0B1bmkvY2xpcGJvYXJkJztcbmltcG9ydCBjb25maXJtIGZyb20gJ0B1bmkvY29uZmlybSc7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sXG4gIGlucHV0OiB7XG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlZWUnLFxuICAgIG1hcmdpbjogJzEwcnB4J1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICBjb25zdCBbdmFsdWUsIHNldFZhbHVlXSA9IHVzZVN0YXRlKCcnKTtcbiAgcmV0dXJuIDxWaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgIGdldENsaXBib2FyZCgpLnRoZW4oKHtcbiAgICAgICAgdGV4dFxuICAgICAgfSkgPT4ge1xuICAgICAgICBjb25maXJtKHtcbiAgICAgICAgICBjb250ZW50OiB0ZXh0XG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfX0+6I635Y+W5Ymq5YiH5p2/5pWw5o2uPC9WaWV3PlxuICAgICAgPFRleHRJbnB1dCBzdHlsZT17c3R5bGVzLmlucHV0fSBwbGFjZWhvbGRlcj1cIui+k+WFpeiuvue9ruWJquWIh+adv+aVsOaNrlwiIHZhbHVlPXt2YWx1ZX0gb25JbnB1dD17KHtcbiAgICAgIHZhbHVlXG4gICAgfSkgPT4ge1xuICAgICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAgc2V0VmFsdWUodmFsdWUpO1xuICAgIH19IC8+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgY29uc29sZS5sb2codmFsdWUpO1xuICAgICAgc2V0Q2xpcGJvYXJkKHtcbiAgICAgICAgdGV4dDogdmFsdWVcbiAgICAgIH0pLnRoZW4oKCkgPT4ge1xuICAgICAgICBjb25maXJtKHtcbiAgICAgICAgICB0aXRsZTogJ+iuvue9ruWJquWIh+adv+aVsOaNricsXG4gICAgICAgICAgY29udGVudDogdmFsdWVcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9fT7orr7nva7liarliIfmnb/mlbDmja48L1ZpZXc+XG4gICAgPC9WaWV3Pjtcbn0iLCJpbXBvcnQgeyBjcmVhdGVFbGVtZW50IH0gZnJvbSAncmF4JztcbmltcG9ydCBWaWV3IGZyb20gJ3JheC12aWV3JztcbmltcG9ydCBUZXh0IGZyb20gJ3JheC10ZXh0JztcbmltcG9ydCBjb25maXJtIGZyb20gJ0B1bmkvY29uZmlybSc7XG5pbXBvcnQgdG9hc3QgZnJvbSAnQHVuaS90b2FzdCc7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sXG4gIGlucHV0OiB7XG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlZWUnLFxuICAgIG1hcmdpbjogJzEwcnB4J1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gPFZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgY29uZmlybSh7XG4gICAgICAgIGNvbnRlbnQ6ICfmmL7npLptb2RhbCdcbiAgICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgICAgaWYgKHJlcy5jb25maXJtKSB7XG4gICAgICAgICAgdG9hc3Quc2hvdygn54K55Ye75LqG56Gu6K6kJyk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgdG9hc3Quc2hvdygn54K55Ye75LqG5Y+W5raIJyk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH19PlxuICAgICAgICBjb25maXJt5pegdGl0bGVcbiAgICAgIDwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBjb25maXJtKHtcbiAgICAgICAgdGl0bGU6ICfmoIfpopgnLFxuICAgICAgICBjb250ZW50OiAn5pi+56S6bW9kYWzlhoXlrrknXG4gICAgICB9KS50aGVuKHJlcyA9PiB7XG4gICAgICAgIGlmIChyZXMuY29uZmlybSkge1xuICAgICAgICAgIHRvYXN0LnNob3coJ+eCueWHu+S6huehruiupCcpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRvYXN0LnNob3coJ+eCueWHu+S6huWPlua2iCcpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9fT5cbiAgICAgICAgY29uZmlybeaciXRpdGxlXG4gICAgICA8L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgY29uZmlybSh7XG4gICAgICAgIHRpdGxlOiAn5qCH6aKYJyxcbiAgICAgICAgY29udGVudDogJ+aYvuekum1vZGFs5YaF5a65JyxcbiAgICAgICAgY29uZmlybVRleHQ6ICfnu6fnu60nLFxuICAgICAgICBjYW5jZWxUZXh0OiAn6L+U5ZueJ1xuICAgICAgfSkudGhlbihyZXMgPT4ge1xuICAgICAgICBpZiAocmVzLmNvbmZpcm0pIHtcbiAgICAgICAgICB0b2FzdC5zaG93KCfngrnlh7vkuobnoa7orqQnKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0b2FzdC5zaG93KCfngrnlh7vkuoblj5bmtognKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfX0+XG4gICAgICAgIGNvbmZpcm3oh6rlrprkuYnmjInpkq7mlofmoYhcbiAgICAgIDwvVmlldz5cbiAgICA8L1ZpZXc+O1xufSIsIi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZVN0YXRlIH0gZnJvbSAncmF4JztcbmltcG9ydCBWaWV3IGZyb20gJ3JheC12aWV3JztcbmltcG9ydCBUZXh0IGZyb20gJ3JheC10ZXh0JztcbmltcG9ydCB7IGdldFNjcm9sbE9mZnNldCwgZ2V0Qm91bmRpbmdDbGllbnRSZWN0IH0gZnJvbSAnQHVuaS9lbGVtZW50JztcbmNvbnN0IHN0eWxlcyA9IHtcbiAgZmxleDoge1xuICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnXG4gIH0sXG4gIGJ1dHRvbjoge1xuICAgIG1hcmdpbjogJzEwcnB4JyxcbiAgICBwYWRkaW5nOiAnMjBycHgnLFxuICAgIGJhY2tncm91bmQ6ICcjMTdCRDg4JyxcbiAgICBjb2xvcjogJyNmZmYnLFxuICAgIGZvbnRTaXplOiAnMjZycHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgfSxcbiAgZGVtbzE6IHtcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2VlZScsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgIG1hcmdpbjogJzIwcnB4J1xuICB9LFxuICBwcmV2aWV3OiB7XG4gICAgcGFkZGluZzogJzIwcnB4J1xuICB9XG59O1xuXG5jb25zdCBJbmRleCA9ICgpID0+IHtcbiAgY29uc3QgW2RlbW9JbmZvLCBzZXREZW1vSW5mb10gPSB1c2VTdGF0ZSh7XG4gICAgc2Nyb2xsVG9wOiAnJyxcbiAgICBzY3JvbGxMZWZ0OiAnJ1xuICB9KTtcbiAgcmV0dXJuIDxWaWV3PlxuICAgICAgPFZpZXcgaWQ9XCJkZW1vMVwiIHN0eWxlPXtzdHlsZXMuZGVtbzF9PlxuICAgICAgICA8VGV4dD7miJHmmK9kZW1vMTwvVGV4dD5cbiAgICAgIDwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBjb25zdCBub2RlID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2RlbW8xJyk7XG4gICAgICBnZXRTY3JvbGxPZmZzZXQoJyNkZW1vMScsIG5vZGUuX2ludGVybmFsKS50aGVuKHJldCA9PiB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICBzY3JvbGxUb3AsXG4gICAgICAgICAgc2Nyb2xsTGVmdFxuICAgICAgICB9ID0gcmV0WzBdO1xuICAgICAgICBjb25zb2xlLmxvZyhzY3JvbGxUb3AsIHNjcm9sbExlZnQpO1xuICAgICAgICBzZXREZW1vSW5mbyhzdGF0ZSA9PiAoeyAuLi5zdGF0ZSxcbiAgICAgICAgICBzY3JvbGxUb3AsXG4gICAgICAgICAgc2Nyb2xsTGVmdFxuICAgICAgICB9KSk7XG4gICAgICB9KTtcbiAgICB9fT5cbiAgICAgICAg54K55Ye76I635Y+WZGVtbzHnmoRzY3JvbGxUb3DlkoxzY3JvbGxMZWZ0XG4gICAgICA8L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNkZW1vMScpO1xuICAgICAgZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCcjZGVtbzEnLCBub2RlLl9pbnRlcm5hbCkudGhlbihyZXQgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhyZXRbMF0pO1xuICAgICAgICBzZXREZW1vSW5mbyhzdGF0ZSA9PiAoeyAuLi5zdGF0ZSxcbiAgICAgICAgICAuLi5yZXRbMF1cbiAgICAgICAgfSkpO1xuICAgICAgfSk7XG4gICAgfX0+XG4gICAgICAgIOeCueWHu+iOt+WPlmRlbW8x55qEYm91bmRpbmdDbGllbnRSZWN0XG4gICAgICA8L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnByZXZpZXd9PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnByZXZpZXd9PnNjcm9sbFRvcDoge2RlbW9JbmZvLnNjcm9sbFRvcH08L1ZpZXc+XG4gICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMucHJldmlld30+c2Nyb2xsTGVmdDoge2RlbW9JbmZvLnNjcm9sbExlZnR9PC9WaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnByZXZpZXd9PndpZHRoOiB7ZGVtb0luZm8ud2lkdGh9PC9WaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnByZXZpZXd9PmhlaWdodDoge2RlbW9JbmZvLmhlaWdodH08L1ZpZXc+XG4gICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMucHJldmlld30+bGVmdDoge2RlbW9JbmZvLmxlZnR9PC9WaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnByZXZpZXd9PnJpZ2h0OiB7ZGVtb0luZm8ucmlnaHR9PC9WaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLnByZXZpZXd9PnRvcDoge2RlbW9JbmZvLnRvcH08L1ZpZXc+XG4gICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMucHJldmlld30+Ym90dG9tOiB7ZGVtb0luZm8uYm90dG9tfTwvVmlldz5cbiAgICAgIDwvVmlldz5cbiAgICA8L1ZpZXc+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW5kZXg7IiwiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgdXNlU3RhdGUgfSBmcm9tICdyYXgnO1xuaW1wb3J0IFZpZXcgZnJvbSAncmF4LXZpZXcnO1xuaW1wb3J0IFRleHQgZnJvbSAncmF4LXRleHQnO1xuaW1wb3J0IEltYWdlIGZyb20gJ3JheC1pbWFnZSc7XG5pbXBvcnQgeyBkb3dubG9hZCwgZ2V0SW5mbywgc2F2ZSwgb3BlbkRvY3VtZW50LCB1cGxvYWQgfSBmcm9tICdAdW5pL2ZpbGUnO1xuaW1wb3J0IGFsZXJ0IGZyb20gJ0B1bmkvYWxlcnQnO1xuaW1wb3J0IHsgY2hvb3NlSW1hZ2UgfSBmcm9tICdAdW5pL2ltYWdlJztcbmNvbnN0IHN0eWxlcyA9IHtcbiAgZmxleDoge1xuICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnXG4gIH0sXG4gIGJ1dHRvbjoge1xuICAgIG1hcmdpbjogJzEwcnB4JyxcbiAgICBwYWRkaW5nOiAnMjBycHgnLFxuICAgIGJhY2tncm91bmQ6ICcjMTdCRDg4JyxcbiAgICBjb2xvcjogJyNmZmYnLFxuICAgIGZvbnRTaXplOiAnMjZycHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgfSxcbiAgaW5wdXQ6IHtcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2VlZScsXG4gICAgbWFyZ2luOiAnMTBycHgnXG4gIH1cbn07XG5cbmNvbnN0IEluZGV4ID0gKCkgPT4ge1xuICBjb25zdCBbaW1nMiwgc2V0SW1nMl0gPSB1c2VTdGF0ZSgnJyk7XG5cbiAgY29uc3QgZ2V0RmlsZUluZm9IYW5kbGVyID0gKCkgPT4ge1xuICAgIGlmICghaW1nMikge1xuICAgICAgYWxlcnQoe1xuICAgICAgICB0aXRsZTogJ+aPkOekuicsXG4gICAgICAgIGNvbnRlbnQ6ICfor7flhYjkuIvovb3lm77niYcnXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBnZXRJbmZvKHtcbiAgICAgIGZpbGVQYXRoOiBpbWcyLFxuICAgICAgc3VjY2VzczogcmVzID0+IHtcbiAgICAgICAgYWxlcnQoe1xuICAgICAgICAgIHRpdGxlOiAn5o+Q56S6JyxcbiAgICAgICAgICBjb250ZW50OiBg5LiL6L295paH5Lu255qE5L+h5oGv5Li6JHtKU09OLnN0cmluZ2lmeShyZXMpfWBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSk7XG4gIH07XG5cbiAgY29uc3Qgc2F2ZUhhbmRsZXIgPSAoKSA9PiB7XG4gICAgY2hvb3NlSW1hZ2Uoe1xuICAgICAgc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgLy8g6I635Y+W5Zu+54mHLCBjaG9vc2VJbWFnZSDojrflj5bnmoTmlofku7blnKjkuLTml7bmlofku7bnm67lvZXlhoVcbiAgICAgICAgY29uc3Qge1xuICAgICAgICAgIHRlbXBGaWxlUGF0aHNcbiAgICAgICAgfSA9IHJlcztcblxuICAgICAgICBpZiAodGVtcEZpbGVQYXRoc1swXSkge1xuICAgICAgICAgIC8vIOS/neWtmOWIsOeUqOaIt+ebruW9lVxuICAgICAgICAgIHNhdmUoe1xuICAgICAgICAgICAgdGVtcEZpbGVQYXRoOiB0ZW1wRmlsZVBhdGhzWzBdLFxuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcbiAgICAgICAgICAgICAgYWxlcnQoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAn5o+Q56S6JyxcbiAgICAgICAgICAgICAgICBjb250ZW50OiBg5paH5Lu25L+d5a2Y5oiQ5Yqf77yaJHtyZXMuc2F2ZWRGaWxlUGF0aH1gXG4gICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSxcbiAgICAgICAgICAgIGZhaWw6IGUgPT4ge1xuICAgICAgICAgICAgICBhbGVydCh7XG4gICAgICAgICAgICAgICAgdGl0bGU6ICfmj5DnpLonLFxuICAgICAgICAgICAgICAgIGNvbnRlbnQ6IGDmlofku7bkv53lrZjlpLHotKXvvJoke0pTT04uc3RyaW5naWZ5KGUpfWBcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sXG5cbiAgICAgIGZhaWw6IGUgPT4ge1xuICAgICAgICBhbGVydCh7XG4gICAgICAgICAgdGl0bGU6ICfmj5DnpLonLFxuICAgICAgICAgIGNvbnRlbnQ6IGDmlofku7bkv53lrZjlpLHotKXvvJoke0pTT04uc3RyaW5naWZ5KGUpfWBcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfSkudGhlbihlID0+IGNvbnNvbGUubG9nKGUpKS5jYXRjaChlID0+IGNvbnNvbGUubG9nKGUpKTtcbiAgfTtcblxuICBjb25zdCB1cGxvYWRIYW5kbGVyID0gKCkgPT4ge1xuICAgIGNob29zZUltYWdlKHtcbiAgICAgIHN1Y2Nlc3MocmVzKSB7XG4gICAgICAgIGNvbnN0IHtcbiAgICAgICAgICB0ZW1wRmlsZVBhdGhzLFxuICAgICAgICAgIGZpbGVzXG4gICAgICAgIH0gPSByZXM7XG5cbiAgICAgICAgaWYgKGZpbGVzIHx8IHRlbXBGaWxlUGF0aHMpIHtcbiAgICAgICAgICBjb25zdCB0YXNrID0gdXBsb2FkKHtcbiAgICAgICAgICAgIHVybDogXCJodHRwczovL2h0dHBiaW4ub3JnL3Bvc3RcIixcbiAgICAgICAgICAgIGZpbGVQYXRoOiBmaWxlcyA/IGZpbGVzWzBdIDogdGVtcEZpbGVQYXRoc1swXSxcbiAgICAgICAgICAgIGZpbGVOYW1lOiAnZmlsZScsXG4gICAgICAgICAgICBmaWxlVHlwZTogJ2ltYWdlJ1xuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgaWYgKHRhc2sgJiYgdGFzay5vblByb2dyZXNzVXBkYXRlKSB7XG4gICAgICAgICAgICB0YXNrLm9uUHJvZ3Jlc3NVcGRhdGUoKHtcbiAgICAgICAgICAgICAgcHJvZ3Jlc3MsXG4gICAgICAgICAgICAgIHRvdGFsQnl0ZXNTZW50LFxuICAgICAgICAgICAgICB0b3RhbEJ5dGVzRXhwZWN0ZWRUb1NlbmRcbiAgICAgICAgICAgIH0pID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5sb2coXCJVcGxvYWQgb25Qcm9ncmVzc1VwZGF0ZTogXCIsIHByb2dyZXNzLCB0b3RhbEJ5dGVzU2VudCwgdG90YWxCeXRlc0V4cGVjdGVkVG9TZW5kKTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh0YXNrICYmIHRhc2sub25IZWFkZXJzUmVjZWl2ZWQpIHtcbiAgICAgICAgICAgIHRhc2sub25IZWFkZXJzUmVjZWl2ZWQoaGVhZGVycyA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKFwiVXBsb2FkIG9uSGVhZGVyc1JlY2VpdmVkOiBcIiwgSlNPTi5zdHJpbmdpZnkoaGVhZGVycykpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBkb3dubG9hZEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgZG93bmxvYWQoe1xuICAgICAgdXJsOiAnaHR0cHM6Ly9ndy5hbGljZG4uY29tL3Rmcy9UQjE4RXVEakdOajB1NGpTWkZ5WFhYZ01WWGEtMjI1LTIyNS5qcGcnLFxuXG4gICAgICBzdWNjZXNzKHJlcykge1xuICAgICAgICBjb25zdCBmaWxlUGF0aCA9IHJlcy50ZW1wRmlsZVBhdGg7XG4gICAgICAgIHNldEltZzIoZmlsZVBhdGgpO1xuICAgICAgICBhbGVydCh7XG4gICAgICAgICAgdGl0bGU6ICfmj5DnpLonLFxuICAgICAgICAgIGNvbnRlbnQ6IGDkuIvovb3miJDlip8ke3Jlcy50ZW1wRmlsZVBhdGh9YFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgIH0pO1xuICB9O1xuXG4gIGNvbnN0IG9wZW5Eb2N1bWVudEhhbmRsZXIgPSAoKSA9PiB7XG4gICAgZG93bmxvYWQoe1xuICAgICAgLy8g5LuF5Li656S65L6LIHVybO+8jOW5tumdnuecn+WunuWcsOWdgFxuICAgICAgdXJsOiAnaHR0cHM6Ly9naXRodWIuY29tL0RPQkVFRS9hc3NldHMvcmF3L21hc3Rlci8lRTglQkYlOTklRTYlOTglQUYlRTQlQjglODAlRTQlQjglQUElRTclQTQlQkElRTQlQkUlOEIlRTYlOTYlODclRTQlQkIlQjYucGRmJyxcblxuICAgICAgc3VjY2VzcyhyZXMpIHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGggPSByZXMudGVtcEZpbGVQYXRoO1xuICAgICAgICBvcGVuRG9jdW1lbnQoe1xuICAgICAgICAgIGZpbGVQYXRoLFxuXG4gICAgICAgICAgc3VjY2VzcygpIHtcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCfmiZPlvIDmlofmoaPmiJDlip8nKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gPFZpZXc+XG4gICAgICA8VmlldyB4LWlmPXtpbWcyfSBzdHlsZT17e1xuICAgICAgZmxleERpcmVjdGlvbjogJ3JvdycsXG4gICAgICBqdXN0aWZ5Q29udGVudDogJ2NlbnRlcidcbiAgICB9fT5cbiAgICAgICAgPEltYWdlIHJlc2l6ZU1vZGU9XCJjb3ZlclwiIG1vZGU9XCJhc3BlY3RGaWxsXCIgc291cmNlPXt7XG4gICAgICAgIHVyaTogaW1nMlxuICAgICAgfX0gLz5cbiAgICAgIDwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXt1cGxvYWRIYW5kbGVyfT5cbiAgICAgICAg54K55Ye75LiK5Lyg5Zu+54mH77yIdXBsb2Fk77yJXG4gICAgICA8L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17ZG93bmxvYWRIYW5kbGVyfT5cbiAgICAgICAg54K55Ye75LiL6L295Zu+54mH77yIZG93bmxvYWTvvIlcbiAgICAgIDwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXtnZXRGaWxlSW5mb0hhbmRsZXJ9PlxuICAgICAgICDngrnlh7vojrflj5bkuIvovb3lm77niYfnmoTkv6Hmga/vvIhnZXRGaWxlSW5mb++8iVxuICAgICAgPC9WaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9e3NhdmVIYW5kbGVyfT5cbiAgICAgICAg54K55Ye75L+d5a2Y5Li05pe25paH5Lu277yIc2F2Ze+8iVxuICAgICAgPC9WaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9e29wZW5Eb2N1bWVudEhhbmRsZXJ9PlxuICAgICAgICDngrnlh7vmiZPlvIBwZGbmlofku7bvvIhvcGVuRG9jdW1lbnTvvIlcbiAgICAgIDwvVmlldz5cbiAgICA8L1ZpZXc+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW5kZXg7IiwiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgdXNlU3RhdGUgfSBmcm9tICdyYXgnO1xuaW1wb3J0IFZpZXcgZnJvbSAncmF4LXZpZXcnO1xuaW1wb3J0IFRleHRJbnB1dCBmcm9tICdyYXgtdGV4dGlucHV0JztcbmltcG9ydCBpbWFnZSBmcm9tICdAdW5pL2ltYWdlJztcbmltcG9ydCBjb25maXJtIGZyb20gJ0B1bmkvY29uZmlybSc7XG5pbXBvcnQgc2hvd0FjdGlvblNoZWV0IGZyb20gJ0B1bmkvYWN0aW9uLXNoZWV0JztcbmltcG9ydCBJbWFnZSBmcm9tICdyYXgtaW1hZ2UnO1xuY29uc3Qgc3R5bGVzID0ge1xuICBmbGV4OiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdydcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgbWFyZ2luOiAnMTBycHgnLFxuICAgIHBhZGRpbmc6ICcyMHJweCcsXG4gICAgYmFja2dyb3VuZDogJyMxN0JEODgnLFxuICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgZm9udFNpemU6ICcyNnJweCcsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LFxuICBpbnB1dDoge1xuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZWVlJyxcbiAgICBtYXJnaW46ICcxMHJweCdcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgW2NvdW50LCBzZXRDb3VudF0gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW3F1YWxpdHksIHNldFF1YWxpdHldID0gdXNlU3RhdGUobnVsbCk7XG4gIGNvbnN0IFt0ZW1wRmlsZVBhdGhzLCBzZXRUZW1wRmlsZVBhdGhzXSA9IHVzZVN0YXRlKFtdKTtcbiAgcmV0dXJuIDxWaWV3PlxuICAgICAgPFRleHRJbnB1dCBzdHlsZT17c3R5bGVzLmlucHV0fSB2YWx1ZT17Y291bnR9IHBsYWNlaG9sZGVyPVwi6L6T5YWl5pyA5aSn5Y+v6YCJ5Zu+54mH5pWwXCIgdHlwZT1cIm51bWJlclwiIG9uSW5wdXQ9eyh7XG4gICAgICB2YWx1ZVxuICAgIH0pID0+IHtcbiAgICAgIHNldENvdW50KE1hdGgubWluKDksIE1hdGgubWF4KDEsICt2YWx1ZSkpKTtcbiAgICB9fSAvPlxuICAgICAgPFRleHRJbnB1dCBzdHlsZT17c3R5bGVzLmlucHV0fSB2YWx1ZT17cXVhbGl0eX0gcGxhY2Vob2xkZXI9XCLovpPlhaXljovnvKnotKjph48wfjNcIiB0eXBlPVwibnVtYmVyXCIgb25JbnB1dD17KHtcbiAgICAgIHZhbHVlXG4gICAgfSkgPT4ge1xuICAgICAgc2V0UXVhbGl0eSgrdmFsdWUpO1xuICAgIH19IC8+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgaW1hZ2UuY2hvb3NlSW1hZ2Uoe1xuICAgICAgICBjb3VudDogY291bnQgfHwgMSxcbiAgICAgICAgc291cmNlVHlwZTogWydhbGJ1bScsICdjYW1lcmEnXVxuICAgICAgfSkudGhlbihyZXMgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgICBzZXRUZW1wRmlsZVBhdGhzKHJlcy50ZW1wRmlsZVBhdGhzKTtcbiAgICAgIH0pO1xuICAgIH19PlxuICAgICAg6YCJ5oup5Zu+54mHXG4gICAgICA8L1ZpZXc+XG5cbiAgICAgIHshIXRlbXBGaWxlUGF0aHMubGVuZ3RoICYmIDxWaWV3PueCueWHu+WbvueJh+inpuWPkeaTjeS9nDwvVmlldz59XG4gICAgICB7dGVtcEZpbGVQYXRocy5tYXAoKHVyaSwgaW5kZXgpID0+IDxWaWV3IGtleT17dXJpfT5cbiAgICAgICAgICA8Vmlldz57dXJpfTwvVmlldz5cbiAgICAgICAgICA8SW1hZ2Ugc3R5bGU9e3tcbiAgICAgICAgd2lkdGg6ICcxMDAlJyxcbiAgICAgICAgaGVpZ2h0OiAnNDAwcnB4J1xuICAgICAgfX0gc291cmNlPXt7XG4gICAgICAgIHVyaVxuICAgICAgfX0gb25DbGljaz17KCkgPT4ge1xuICAgICAgICBzaG93QWN0aW9uU2hlZXQoe1xuICAgICAgICAgIGl0ZW1MaXN0OiBbJ+WOi+e8qeWbvueJhycsICfojrflj5blm77niYfkv6Hmga8nLCAn54K55Ye76aKE6KeI5Zu+54mHJywgJ+S/neWtmOWbvueJh+WIsOebuOWGjCddXG4gICAgICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICBpZiAocmVzLnRhcEluZGV4ID09PSAwKSB7XG4gICAgICAgICAgICBpbWFnZS5jb21wcmVzc0ltYWdlKHtcbiAgICAgICAgICAgICAgc3JjOiB1cmksXG4gICAgICAgICAgICAgIHF1YWxpdHk6IHF1YWxpdHkgfHwgNFxuICAgICAgICAgICAgfSkudGhlbihyZXMgPT4ge1xuICAgICAgICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgICAgICAgICBjb25maXJtKHtcbiAgICAgICAgICAgICAgICBjb250ZW50OiAn5Y6L57yp5Zyw5Z2AJyArIHJlcy50ZW1wRmlsZVBhdGhcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KS5jYXRjaChlcnIgPT4gY29uc29sZS5sb2coZXJyKSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMudGFwSW5kZXggPT09IDEpIHtcbiAgICAgICAgICAgIGltYWdlLmdldEltYWdlSW5mbyh7XG4gICAgICAgICAgICAgIHNyYzogdXJpXG4gICAgICAgICAgICB9KS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICAgIGNvbnNvbGUubG9nKHJlcyk7XG4gICAgICAgICAgICAgIGNvbmZpcm0oe1xuICAgICAgICAgICAgICAgIGNvbnRlbnQ6ICflm77niYfkv6Hmga/vvIzlrr3luqbvvJonICsgcmVzLndpZHRoICsgJ++8m+mrmOW6pu+8micgKyByZXMuaGVpZ2h0ICsgJ++8m+acrOWcsOi3r+W+hO+8micgKyByZXMucGF0aFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgIH0gZWxzZSBpZiAocmVzLnRhcEluZGV4ID09PSAyKSB7XG4gICAgICAgICAgICBpbWFnZS5wcmV2aWV3SW1hZ2Uoe1xuICAgICAgICAgICAgICB1cmxzOiB0ZW1wRmlsZVBhdGhzLFxuICAgICAgICAgICAgICBjdXJyZW50OiBpbmRleFxuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgfSBlbHNlIGlmIChyZXMudGFwSW5kZXggPT09IDMpIHtcbiAgICAgICAgICAgIGltYWdlLnNhdmVJbWFnZSh7XG4gICAgICAgICAgICAgIHVybDogdXJpXG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgfX0gLz5cbiAgICAgICAgPC9WaWV3Pil9XG4gICAgPC9WaWV3Pjtcbn0iLCJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmF4JztcbmltcG9ydCBWaWV3IGZyb20gJ3JheC12aWV3JztcbmltcG9ydCBUZXh0IGZyb20gJ3JheC10ZXh0JztcbmltcG9ydCBTY3JvbGxWaWV3IGZyb20gJ3JheC1zY3JvbGx2aWV3JztcbmltcG9ydCB7IGlzV2VDaGF0TWluaVByb2dyYW0sIGlzS3VhaVNob3VNaW5pUHJvZ3JhbSB9IGZyb20gJ0B1bmkvZW52JztcbmltcG9ydCBjcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlciBmcm9tICdAdW5pL2ludGVyc2VjdGlvbi1vYnNlcnZlcic7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGJsb2NrOiB7XG4gICAgd2lkdGg6ICcxMDAlJyxcbiAgICBoZWlnaHQ6ICc0MDBycHgnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZWVlJ1xuICB9LFxuICBpbm5lcjoge1xuICAgIGhlaWdodDogJzEwMDBycHgnLFxuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnLFxuICAgIGFsaWduSXRlbXM6ICdjZW50ZXInXG4gIH0sXG4gIGZpbGw6IHtcbiAgICBoZWlnaHQ6ICc0NTBycHgnXG4gIH0sXG4gIGNpcmNsZToge1xuICAgIGJhY2tncm91bmQ6ICdyZWQnLFxuICAgIGJvcmRlclJhZGl1czogJzUwJScsXG4gICAgd2lkdGg6ICcxMDBycHgnLFxuICAgIGhlaWdodDogJzEwMHJweCcsXG4gICAgbWFyZ2luVG9wOiAnMTAwcnB4J1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICBjb25zdCBbYXBwZWFyLCBzZXRBcHBlYXJdID0gdXNlU3RhdGUoZmFsc2UpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgY29uc3Qgbm9kZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJy5wYXJlbnQnKTtcbiAgICAgIGxldCBpbnRlcnNlY3Rpb25PYnNlcnZlcjtcblxuICAgICAgaWYgKGlzV2VDaGF0TWluaVByb2dyYW0pIHtcbiAgICAgICAgaW50ZXJzZWN0aW9uT2JzZXJ2ZXIgPSBjcmVhdGVJbnRlcnNlY3Rpb25PYnNlcnZlcihudWxsLCBub2RlLl9pbnRlcm5hbCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBpbnRlcnNlY3Rpb25PYnNlcnZlciA9IGNyZWF0ZUludGVyc2VjdGlvbk9ic2VydmVyKCk7XG4gICAgICB9IC8vIOeUseS6jnJheOi/kOihjOaXtuWcqOW+ruS/oeWtmOWcqHNoYWRvdyBkb23pl67popjvvIzmiYDku6Xph4fnlKjmt7HluqbpgInmi6nlmahcblxuXG4gICAgICBjb25zdCBjbHNQcmUgPSBpc1dlQ2hhdE1pbmlQcm9ncmFtID8gJy5wYXJlbnQgPj4+ICcgOiAnJztcbiAgICAgIGludGVyc2VjdGlvbk9ic2VydmVyLnJlbGF0aXZlVG8oY2xzUHJlICsgJy5ibG9jaycpLm9ic2VydmUoY2xzUHJlICsgJy5jaXJjbGUnLCByZXMgPT4ge1xuICAgICAgICBjb25zb2xlLmxvZyhyZXMpO1xuICAgICAgICBzZXRBcHBlYXIocmVzLmludGVyc2VjdGlvblJhdGlvID4gMCk7XG4gICAgICB9KTtcbiAgICB9LCAwKTtcbiAgfSwgW10pO1xuICByZXR1cm4gPFZpZXcgY2xhc3NOYW1lPVwicGFyZW50XCI+XG4gICAgICA8U2Nyb2xsVmlldyBzdHlsZT17c3R5bGVzLmJsb2NrfSBjbGFzc05hbWU9XCJibG9ja1wiPlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmlubmVyfT5cbiAgICAgICAgICA8Vmlldz7lkJHkuIrmu5Hliqg8L1ZpZXc+XG4gICAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5maWxsfSAvPlxuICAgICAgICAgIDxWaWV3PnthcHBlYXIgPyAn5bCP55CD5Ye6546wJyA6ICflsI/nkIPmtojlpLEnfTwvVmlldz5cbiAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmNpcmNsZX0gY2xhc3NOYW1lPVwiY2lyY2xlXCIgLz5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgPC9TY3JvbGxWaWV3PlxuICAgIDwvVmlldz47XG59IiwiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50IH0gZnJvbSAncmF4JztcbmltcG9ydCBWaWV3IGZyb20gJ3JheC12aWV3JztcbmltcG9ydCBUZXh0IGZyb20gJ3JheC10ZXh0JztcbmltcG9ydCBsb2FkaW5nIGZyb20gJ0B1bmkvbG9hZGluZyc7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH1cbn07XG5cbmNvbnN0IEluZGV4ID0gKCkgPT4ge1xuICBjb25zdCBoYW5kbGVDbGljayA9ICgpID0+IHtcbiAgICBsb2FkaW5nLnNob3dMb2FkaW5nKHtcbiAgICAgIGNvbnRlbnQ6ICdMb2FkaW5nLCBwbGVhc2Ugd2FpdCdcbiAgICB9KTtcbiAgICBzZXRUaW1lb3V0KCgpID0+IGxvYWRpbmcuaGlkZUxvYWRpbmcoKSwgMzAwMCk7XG4gIH07XG5cbiAgcmV0dXJuIDxWaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9e2hhbmRsZUNsaWNrfT5cbiAgICAgICAgPFRleHQ+54K55Ye75by55Ye6bG9hZGluZzwvVGV4dD5cbiAgICAgIDwvVmlldz5cbiAgICA8L1ZpZXc+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW5kZXg7IiwiLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZVN0YXRlIH0gZnJvbSAncmF4JztcbmltcG9ydCBWaWV3IGZyb20gJ3JheC12aWV3JztcbmltcG9ydCBUZXh0IGZyb20gJ3JheC10ZXh0JztcbmltcG9ydCB7IGdldExvY2F0aW9uLCBvcGVuTG9jYXRpb24sIGNob29zZUxvY2F0aW9uIH0gZnJvbSAnQHVuaS9sb2NhdGlvbic7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sXG4gIGlucHV0OiB7XG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlZWUnLFxuICAgIG1hcmdpbjogJzEwcnB4J1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICBjb25zdCBbbG9jYXRpb24sIHNldExvY2F0aW9uXSA9IHVzZVN0YXRlKHt9KTtcbiAgY29uc3QgW2Nob29zZVJlcywgc2V0Q2hvb3NlUmVzXSA9IHVzZVN0YXRlKCcnKTtcbiAgcmV0dXJuIDxWaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgIGdldExvY2F0aW9uKHtcbiAgICAgICAgX2V4dDoge1xuICAgICAgICAgIGFsaU1pbmlBcHA6IHtcbiAgICAgICAgICAgIHR5cGU6IDFcbiAgICAgICAgICB9LFxuICAgICAgICAgIHdlY2hhdE1pbmlQcm9ncmFtOiB7XG4gICAgICAgICAgICBhbHRpdHVkZTogdHJ1ZVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfSkudGhlbihyZXMgPT4ge1xuICAgICAgICBzZXRMb2NhdGlvbihyZXMpO1xuICAgICAgfSk7XG4gICAgfX0+6I635Y+W5b2T5YmN5a6a5L2NXG4gICAgICA8L1ZpZXc+XG4gICAgICB7T2JqZWN0LmtleXMobG9jYXRpb24pLm1hcChrZXkgPT4gPFZpZXcga2V5PXtrZXl9IHN0eWxlPXtzdHlsZXMuZmxleH0+XG4gICAgICAgIDxWaWV3PntrZXl9OiA8L1ZpZXc+XG4gICAgICAgIDxWaWV3Pntsb2NhdGlvbltrZXldfTwvVmlldz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L1ZpZXc+KX1cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBvcGVuTG9jYXRpb24oe1xuICAgICAgICBsb25naXR1ZGU6ICcxMjAuMTI2MjkzJyxcbiAgICAgICAgbGF0aXR1ZGU6ICczMC4yNzQ2NTMnLFxuICAgICAgICBuYW1lOiAn6buE6b6Z5LiH56eR5Lit5b+DJyxcbiAgICAgICAgYWRkcmVzczogJ+WtpumZoui3rzc35Y+3J1xuICAgICAgfSk7XG4gICAgfX0+5omT5byA5YaF572u5Zyw5Zu+XG4gICAgICA8L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgY2hvb3NlTG9jYXRpb24oe1xuICAgICAgICBsb25naXR1ZGU6IDEyMC4xMjYyOTMsXG4gICAgICAgIGxhdGl0dWRlOiAzMC4yNzQ2NTNcbiAgICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgICAgY29uc29sZS5sb2cocmVzKTtcbiAgICAgICAgc2V0Q2hvb3NlUmVzKEpTT04uc3RyaW5naWZ5KHJlcykpO1xuICAgICAgfSk7XG4gICAgfX0+6YCJ5oup5L2N572uXG4gICAgICA8L1ZpZXc+XG4gICAgICA8Vmlldz7pgInmi6nkvY3nva7mlbDmja7vvJp7Y2hvb3NlUmVzfTwvVmlldz5cbiAgICA8L1ZpZXc+O1xufSIsIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgdXNlU3RhdGUgfSBmcm9tICdyYXgnO1xuaW1wb3J0IFZpZXcgZnJvbSAncmF4LXZpZXcnO1xuaW1wb3J0IFRleHQgZnJvbSAncmF4LXRleHQnO1xuaW1wb3J0IElucHV0IGZyb20gJ3JheC10ZXh0aW5wdXQnO1xuaW1wb3J0IG1ha2VQaG9uZUNhbGwgZnJvbSAnQHVuaS9tYWtlLXBob25lLWNhbGwnO1xuY29uc3Qgc3R5bGVzID0ge1xuICBmbGV4OiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdydcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgbWFyZ2luTGVmdDogJzEwcnB4JyxcbiAgICBwYWRkaW5nOiAnMTBycHggMjBycHgnLFxuICAgIGJhY2tncm91bmQ6ICcjMTdCRDg4JyxcbiAgICBjb2xvcjogJyNmZmYnLFxuICAgIGZvbnRTaXplOiAnMjZycHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgfVxufTtcblxuY29uc3QgSW5kZXggPSAoKSA9PiB7XG4gIGNvbnN0IFtwaG9uZSwgc2V0UGhvbmVdID0gdXNlU3RhdGUoJzEwMDg2Jyk7XG4gIHJldHVybiA8VmlldyBzdHlsZT17eyAuLi5zdHlsZXMuZmxleCxcbiAgICBtYXJnaW5Ub3A6IDMwXG4gIH19PlxuICAgICAgPElucHV0IHN0eWxlPXt7XG4gICAgICBib3JkZXI6ICcxcHggc29saWQgI2VlZScsXG4gICAgICBmbGV4OiAnMSAxIDAnXG4gICAgfX0gdmFsdWU9e3Bob25lfSBwbGFjZWhvbGRlcj1cIui+k+WFpeaJi+acuuWPt+eggVwiIG9uSW5wdXQ9e2UgPT4gc2V0UGhvbmUoZS50YXJnZXQudmFsdWUpfSAvPlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9e2FzeW5jICgpID0+IHtcbiAgICAgIGF3YWl0IG1ha2VQaG9uZUNhbGwoe1xuICAgICAgICBwaG9uZU51bWJlcjogcGhvbmVcbiAgICAgIH0pO1xuICAgICAgY29uc29sZS5sb2coJ+aLqOWPt+WujOaIkCcpO1xuICAgIH19PueCueWHu+aLqOWPtzwvVmlldz5cbiAgICA8L1ZpZXc+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW5kZXg7IiwiLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZUVmZmVjdCwgdXNlU3RhdGUsIHVzZVJlZiB9IGZyb20gJ3JheCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgVGV4dCBmcm9tICdyYXgtdGV4dCc7XG5pbXBvcnQgbmF2aWdhdGUgZnJvbSAnQHVuaS9uYXZpZ2F0ZSc7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sXG4gIGlucHV0OiB7XG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlZWUnLFxuICAgIG1hcmdpbjogJzEwcnB4J1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gPFZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgbmF2aWdhdGUucHVzaCh7XG4gICAgICAgIHVybDogJy9wYWdlcy90b2FzdC9pbmRleCcsXG4gICAgICAgIGlzSGFzaDogdHJ1ZSxcbiAgICAgICAgcmVmcmVzaDogdHJ1ZVxuICAgICAgfSk7XG4gICAgfX0+cHVzaDwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBuYXZpZ2F0ZS5yZXBsYWNlKHtcbiAgICAgICAgdXJsOiAnL3BhZ2VzL3RvYXN0L2luZGV4JyxcbiAgICAgICAgaXNIYXNoOiB0cnVlLFxuICAgICAgICByZWZyZXNoOiB0cnVlXG4gICAgICB9KTtcbiAgICB9fT5yZXBsYWNlPC9WaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgIG5hdmlnYXRlLnJlTGF1bmNoKHtcbiAgICAgICAgdXJsOiAnL3BhZ2VzL3RvYXN0L2luZGV4JyxcbiAgICAgICAgaXNIYXNoOiB0cnVlLFxuICAgICAgICByZWZyZXNoOiB0cnVlXG4gICAgICB9KTtcbiAgICB9fT5yZUxhdW5jaDwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBuYXZpZ2F0ZS5iYWNrKCk7XG4gICAgfX0+YmFjazwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBuYXZpZ2F0ZS5nbyh7XG4gICAgICAgIHN0ZXA6IC0xXG4gICAgICB9KTtcbiAgICB9fT5nbygtMSk8L1ZpZXc+XG4gICAgPC9WaWV3Pjtcbn0iLCIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHNldFN0YXRlLCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmF4JztcbmltcG9ydCB7IHJlZ2lzdGVyTmF0aXZlRXZlbnRMaXN0ZW5lcnMsIGFkZE5hdGl2ZUV2ZW50TGlzdGVuZXIsIHJlbW92ZU5hdGl2ZUV2ZW50TGlzdGVuZXIsIHVzZVBhZ2VTaG93IH0gZnJvbSAncmF4LWFwcCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgVGV4dCBmcm9tICdyYXgtdGV4dCc7XG5pbXBvcnQgVGV4dElucHV0IGZyb20gJ3JheC10ZXh0aW5wdXQnO1xuaW1wb3J0IG5hdmlnYXRpb25CYXIgZnJvbSAnQHVuaS9uYXZpZ2F0aW9uLWJhcic7XG5pbXBvcnQgeyBpc1dlYiB9IGZyb20gJ0B1bmkvZW52JztcbmNvbnN0IHN0eWxlcyA9IHtcbiAgZmxleDoge1xuICAgIGZsZXhEaXJlY3Rpb246ICdyb3cnXG4gIH0sXG4gIGJ1dHRvbjoge1xuICAgIG1hcmdpbjogJzEwcnB4JyxcbiAgICBwYWRkaW5nOiAnMjBycHgnLFxuICAgIGJhY2tncm91bmQ6ICcjMTdCRDg4JyxcbiAgICBjb2xvcjogJyNmZmYnLFxuICAgIGZvbnRTaXplOiAnMjZycHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcidcbiAgfSxcbiAgdGV4dDoge1xuICAgIG1hcmdpblRvcDogJzEwMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInLFxuICAgIGNvbG9yOiAnZ3JlZW4nXG4gIH0sXG4gIGNvbnRhaW5lcjoge1xuICAgIG1hcmdpblRvcDogJzEwMHJweCdcbiAgfSxcbiAgaW5wdXQ6IHtcbiAgICBtYXJnaW46ICcyMHJweCcsXG4gICAgYm9yZGVyQm90dG9tOiAnc29saWQgIzMyYTFjZScsXG4gICAgY29sb3I6ICcjMzJhMWNlJ1xuICB9XG59O1xuXG5jb25zdCBJbmRleCA9ICgpID0+IHtcbiAgY29uc3QgW29wdHMsIHNldE9wdHNdID0gdXNlU3RhdGUoe1xuICAgIHRpdGxlOiAn5qCH6aKYJyxcbiAgICBiYWNrZ3JvdW5kQ29sb3I6ICflr7zoiKrmoI/og4zmma/oibInXG4gIH0pO1xuICBjb25zdCBbbWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdCwgc2V0TWVudUJ1dHRvbkJvdW5kaW5nQ2xpZW50UmVjdF0gPSB1c2VTdGF0ZSh7fSk7XG5cbiAgY29uc3QgaGFuZGxlU3VibWl0ID0gKCkgPT4ge1xuICAgIGNvbnNvbGUubG9nKCd0aXRsZSwgY29sb3I6ICcsIG9wdHMpO1xuICAgIG5hdmlnYXRpb25CYXIuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHtcbiAgICAgIHRpdGxlOiBvcHRzLnRpdGxlXG4gICAgfSk7XG4gICAgIWlzV2ViICYmIG5hdmlnYXRpb25CYXIuc2V0TmF2aWdhdGlvbkJhckNvbG9yKHtcbiAgICAgIGJhY2tncm91bmRDb2xvcjogb3B0cy5iYWNrZ3JvdW5kQ29sb3JcbiAgICB9KTsgLy8gbmF2aWdhdGlvbkJhci5zZXROYXZpZ2F0aW9uQmFyQ29sb3IoeyBiYWNrZ3JvdW5kQ29sb3I6IG9wdHMuYmFja2dyb3VuZENvbG9yLCBmcm9udENvbG9yOiAnIzAwMDAwMCcgfSk7XG4gIH07XG5cbiAgY29uc3QgaGFuZGxlUmVzZXQgPSAoKSA9PiBzZXRPcHRzKHtcbiAgICB0aXRsZTogJ+agh+mimCcsXG4gICAgYmFja2dyb3VuZENvbG9yOiAn5a+86Iiq5qCP6IOM5pmv6ImyJ1xuICB9KTtcblxuICBjb25zdCBoYW5kbGVHZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0ID0gKCkgPT4ge1xuICAgIGNvbnN0IG1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3QgPSBuYXZpZ2F0aW9uQmFyLmdldE1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3QoKTtcbiAgICBzZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0KG1lbnVCdXR0b25Cb3VuZGluZ0NsaWVudFJlY3QpO1xuICB9O1xuXG4gIHJldHVybiA8VmlldyBzdHlsZT17c3R5bGVzLmNvbnRhaW5lcn0+XG4gICAgICA8VmlldyBvblN1Ym1pdD17aGFuZGxlU3VibWl0fT5cbiAgICAgICAgPFZpZXc+XG4gICAgICAgICAgPFRleHRJbnB1dCBzdHlsZT17c3R5bGVzLmlucHV0fSB2YWx1ZT17b3B0cy50aXRsZX0gdHlwZT1cInRleHRcIiBwbGFjZWhvbGRlcj1cIuagh+mimFwiIG5hbWU9XCJ0aXRsZVwiIG9uSW5wdXQ9eyh7XG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgfSkgPT4ge1xuICAgICAgICAgIHNldE9wdHMoeyAuLi5vcHRzLFxuICAgICAgICAgICAgdGl0bGU6IHZhbHVlXG4gICAgICAgICAgfSk7XG4gICAgICAgIH19PjwvVGV4dElucHV0PlxuICAgICAgICAgIDxUZXh0SW5wdXQgc3R5bGU9e3N0eWxlcy5pbnB1dH0gdmFsdWU9e29wdHMuYmFja2dyb3VuZENvbG9yfSB0eXBlPVwidGV4dFwiIHBsYWNlaG9sZGVyPVwi5a+86Iiq5qCP6IOM5pmv6ImyXCIgbmFtZT1cImJhY2tncm91bmRDb2xvclwiIG9uSW5wdXQ9eyh7XG4gICAgICAgICAgdmFsdWVcbiAgICAgICAgfSkgPT4ge1xuICAgICAgICAgIHNldE9wdHMoeyAuLi5vcHRzLFxuICAgICAgICAgICAgYmFja2dyb3VuZENvbG9yOiB2YWx1ZVxuICAgICAgICAgIH0pO1xuICAgICAgICB9fT48L1RleHRJbnB1dD5cbiAgICAgICAgPC9WaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17e1xuICAgICAgICBtYXJnaW5Ub3A6ICcyMHJweCdcbiAgICAgIH19PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXtoYW5kbGVTdWJtaXR9PlxuICAgICAgICAgICAgPFRleHQ+U3VibWl0PC9UZXh0PlxuICAgICAgICAgIDwvVmlldz5cbiAgICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17aGFuZGxlUmVzZXR9PlxuICAgICAgICAgICAgPFRleHQ+UmVzZXQ8L1RleHQ+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXtoYW5kbGVHZXRNZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0fT5cbiAgICAgICAgICAgIDxUZXh0PuiOt+WPluiDtuWbiuaMiemSruS/oeaBrzwvVGV4dD5cbiAgICAgICAgICA8L1ZpZXc+XG4gICAgICAgIDwvVmlldz5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3tcbiAgICAgICAgbWFyZ2luOiAnMjBycHgnXG4gICAgICB9fT5cbiAgICAgICAgICA8VGV4dD5cbiAgICAgICAgICAgIHtPYmplY3QuZW50cmllcyhtZW51QnV0dG9uQm91bmRpbmdDbGllbnRSZWN0KS5tYXAoYXJyYXkgPT4gYFxcbiR7YXJyYXk/LlswXX06ICR7YXJyYXk/LlsxXX1gKX1cbiAgICAgICAgICA8L1RleHQ+XG4gICAgICAgIDwvVmlldz5cbiAgICAgIDwvVmlldz5cbiAgICA8L1ZpZXc+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW5kZXg7IiwiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50IH0gZnJvbSAncmF4JztcbmltcG9ydCBWaWV3IGZyb20gJ3JheC12aWV3JztcbmltcG9ydCBUZXh0IGZyb20gJ3JheC10ZXh0JztcbmltcG9ydCBwYWdlU2Nyb2xsVG8gZnJvbSAnQHVuaS9wYWdlLXNjcm9sbC10byc7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH1cbn07XG5cbmNvbnN0IEluZGV4ID0gKCkgPT4ge1xuICBjb25zdCBwb3NpdGlvbnMgPSBbMzAwLCA2MDAsIDkwMCwgMTIwMCwgMTUwMCwgMTgwMCwgMjEwMF07XG4gIHJldHVybiA8VmlldyBzdHlsZT17e1xuICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gIH19PlxuICAgICAgPFZpZXcgc3R5bGU9e3tcbiAgICAgIHBvc2l0aW9uOiAncmVsYXRpdmUnXG4gICAgfX0+XG4gICAgICAgIHtwb3NpdGlvbnMubWFwKGl0ZW0gPT4gPFZpZXcga2V5PXtpdGVtfSBzdHlsZT17e1xuICAgICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgICAgdG9wOiBgJHtpdGVtfXB4YCxcbiAgICAgICAgZm9udFNpemU6ICcxM3B4JyxcbiAgICAgICAgY29sb3I6ICcjOTk5J1xuICAgICAgfX0+e2l0ZW19PC9WaWV3Pil9XG4gICAgICA8L1ZpZXc+XG5cbiAgICAgIDxWaWV3IHN0eWxlPXt7IC4uLnN0eWxlcy5idXR0b24sXG4gICAgICBwb3NpdGlvbjogJ2Fic29sdXRlJyxcbiAgICAgIHRvcDogJzIwcHgnXG4gICAgfX0gb25DbGljaz17YXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgcGFnZVNjcm9sbFRvKHtcbiAgICAgICAgc2Nyb2xsVG9wOiA5MDBcbiAgICAgIH0pO1xuICAgICAgY29uc29sZS5sb2coJ+a7muWKqOWujOaIkCcpO1xuICAgIH19PlxuICAgICAgICA8VGV4dD7mu5rliqjliLDpobbpg6ggOTAwcHgg5L2N572uPC9UZXh0PlxuICAgICAgPC9WaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3sgLi4uc3R5bGVzLmJ1dHRvbixcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdG9wOiAnODBweCdcbiAgICB9fSBvbkNsaWNrPXthc3luYyAoKSA9PiB7XG4gICAgICBhd2FpdCBwYWdlU2Nyb2xsVG8oe1xuICAgICAgICBzZWxlY3RvcjogJy5ib3gnXG4gICAgICB9KTtcbiAgICAgIGNvbnNvbGUubG9nKCfmu5rliqjlrozmiJAnKTtcbiAgICB9fT5cbiAgICAgICAgPFRleHQ+5rua5Yqo5YiwIC5ib3gg5YWD57Sg5L2N572uICjpnIDlubPlj7DmlK/mjIEpPC9UZXh0PlxuICAgICAgPC9WaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3sgLi4uc3R5bGVzLmJ1dHRvbixcbiAgICAgIHBvc2l0aW9uOiAnYWJzb2x1dGUnLFxuICAgICAgdG9wOiAnOTQwcHgnXG4gICAgfX0gb25DbGljaz17YXN5bmMgKCkgPT4ge1xuICAgICAgYXdhaXQgcGFnZVNjcm9sbFRvKHtcbiAgICAgICAgc2Nyb2xsVG9wOiAzMDBcbiAgICAgIH0pO1xuICAgICAgY29uc29sZS5sb2coJ+a7muWKqOWujOaIkCcpO1xuICAgIH19PlxuICAgICAgICA8VGV4dD7mu5rliqjliLDpobbpg6ggMzAwcHgg5L2N572uPC9UZXh0PlxuICAgICAgPC9WaWV3PlxuXG4gICAgICA8VmlldyBjbGFzc05hbWU9XCJib3hcIiBzdHlsZT17e1xuICAgICAgcG9zaXRpb246ICdhYnNvbHV0ZScsXG4gICAgICB0b3A6ICcxMjQwcHgnLFxuICAgICAgYmFja2dyb3VuZDogJyNmZmYxZmYnLFxuICAgICAgY29sb3I6ICcjYzAyMWMxJyxcbiAgICAgIHBhZGRpbmc6ICcxMHB4IDIwcHgnXG4gICAgfX0+XG4gICAgICAgIC5ib3hcbiAgICAgIDwvVmlldz5cbiAgICA8L1ZpZXc+O1xufTtcblxuZXhwb3J0IGRlZmF1bHQgSW5kZXg7IiwiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG4vLyBAdHMtaWdub3JlXG5pbXBvcnQgeyBjcmVhdGVFbGVtZW50LCBzZXRTdGF0ZSwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JheCc7XG5pbXBvcnQgeyByZWdpc3Rlck5hdGl2ZUV2ZW50TGlzdGVuZXJzLCBhZGROYXRpdmVFdmVudExpc3RlbmVyLCByZW1vdmVOYXRpdmVFdmVudExpc3RlbmVyLCB1c2VQYWdlU2hvdyB9IGZyb20gJ3JheC1hcHAnO1xuaW1wb3J0IFZpZXcgZnJvbSAncmF4LXZpZXcnO1xuaW1wb3J0IFRleHQgZnJvbSAncmF4LXRleHQnO1xuaW1wb3J0IHB1bGxEb3duUmVmcmVzaCBmcm9tICdAdW5pL3B1bGwtZG93bi1yZWZyZXNoJztcbmltcG9ydCB7IGlzV2ViIH0gZnJvbSAnQHVuaS9lbnYnO1xuY29uc3Qgc3R5bGVzID0ge1xuICBmbGV4OiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdydcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgbWFyZ2luOiAnMTBycHgnLFxuICAgIHBhZGRpbmc6ICcyMHJweCcsXG4gICAgYmFja2dyb3VuZDogJyMxN0JEODgnLFxuICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgZm9udFNpemU6ICcyNnJweCcsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LFxuICB0ZXh0OiB7XG4gICAgbWFyZ2luVG9wOiAnMTAwcnB4JyxcbiAgICBwYWRkaW5nOiAnMjBycHgnLFxuICAgIGZvbnRTaXplOiAnMjZycHgnLFxuICAgIHRleHRBbGlnbjogJ2NlbnRlcicsXG4gICAgY29sb3I6ICdncmVlbidcbiAgfSxcbiAgY29udGFpbmVyOiB7XG4gICAgbWFyZ2luVG9wOiAnMTAwcnB4J1xuICB9XG59O1xuXG5jb25zdCBJbmRleCA9ICgpID0+IHtcbiAgY29uc3QgW3B1bGxSZWZyZXNoLCBzZXRQdWxsUmVmcmVzaF0gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgaWYgKGlzV2ViKSB7XG4gICAgICAvL+i/kOihjOS7peS4i+WRveS7pOaJk+W8gHdlYuerr2g155WM6Z2i55qE5omL5Yqo5Yi35pawXG4gICAgICBwdWxsRG93blJlZnJlc2gub25QdWxsRG93blJlZnJlc2goe1xuICAgICAgICBwdWxsUmVmcmVzaDogdHJ1ZSxcbiAgICAgICAgdHJpZ2dlckRpc3RhbmNlOiAxMDAsXG4gICAgICAgIGV2ZW50Q2FsbGJhY2s6ICgpID0+IHtcbiAgICAgICAgICBjb25zb2xlLmxvZyhcInB1bGxkb3ducmVmcmVzaOinpuWPkeS6hlwiKTtcbiAgICAgICAgICBzZXRQdWxsUmVmcmVzaCghcHVsbFJlZnJlc2gpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICBjb25zdCBoYW5kbGVDbGlja1N0YXJ0ID0gKCkgPT4ge1xuICAgIHB1bGxEb3duUmVmcmVzaC5zdGFydFB1bGxEb3duUmVmcmVzaCgpO1xuICAgICFwdWxsUmVmcmVzaCAmJiBzZXRQdWxsUmVmcmVzaCh0cnVlKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVDbGlja1N0b3AgPSAoKSA9PiB7XG4gICAgcHVsbERvd25SZWZyZXNoLnN0b3BQdWxsRG93blJlZnJlc2goKTtcbiAgICBwdWxsUmVmcmVzaCAmJiBzZXRQdWxsUmVmcmVzaChmYWxzZSk7XG4gIH07XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBjb25zdCBoYW5kbGVQdWxsRG93blJlZnJlc2ggPSAoKSA9PiBjb25zb2xlLmxvZygnb25QdWxsRG93blJlZnJlc2gnKTtcblxuICAgIGFkZE5hdGl2ZUV2ZW50TGlzdGVuZXIoJ29uUHVsbERvd25SZWZyZXNoJywgaGFuZGxlUHVsbERvd25SZWZyZXNoKTtcbiAgICByZXR1cm4gKCkgPT4ge1xuICAgICAgcmVtb3ZlTmF0aXZlRXZlbnRMaXN0ZW5lcignb25QdWxsRG93blJlZnJlc2gnLCBoYW5kbGVQdWxsRG93blJlZnJlc2gpO1xuICAgIH07XG4gIH0sIFtwdWxsUmVmcmVzaF0pO1xuICByZXR1cm4gPFZpZXcgc3R5bGU9e3N0eWxlcy5jb250YWluZXJ9PlxuICAgICAge1xuICAgICAgLyogPFRleHQ+5LiL5ruR6aG16Z2i5Y2z5Y+v5Yi35pawPC9UZXh0PiAqL1xuICAgIH1cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXtoYW5kbGVDbGlja1N0YXJ0fT5cbiAgICAgICAgPFRleHQ+5byA5aeL5Yi35pawPC9UZXh0PlxuICAgICAgPC9WaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9e2hhbmRsZUNsaWNrU3RvcH0+XG4gICAgICAgIDxUZXh0PuWBnOatouWIt+aWsDwvVGV4dD5cbiAgICAgIDwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMudGV4dH0+XG4gICAgICAgIDxUZXh0PntwdWxsUmVmcmVzaCA/IFwi5Yi35paw5LqGXCIgOiBcIlwifTwvVGV4dD5cbiAgICAgIDwvVmlldz5cbiAgICA8L1ZpZXc+O1xufTtcblxucmVnaXN0ZXJOYXRpdmVFdmVudExpc3RlbmVycyhJbmRleCwgWydvblB1bGxEb3duUmVmcmVzaCddKTtcbmV4cG9ydCBkZWZhdWx0IEluZGV4OyIsImltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZUVmZmVjdCB9IGZyb20gJ3JheCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgZ2V0UmVjb3JkZXJNYW5hZ2VyIGZyb20gJ0B1bmkvcmVjb3JkZXInO1xuaW1wb3J0IHRvYXN0IGZyb20gJ0B1bmkvdG9hc3QnO1xuaW1wb3J0IGFsZXJ0IGZyb20gJ0B1bmkvYWxlcnQnO1xuY29uc3Qgc3R5bGVzID0ge1xuICBmbGV4OiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdydcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgbWFyZ2luOiAnMTBycHgnLFxuICAgIHBhZGRpbmc6ICcyMHJweCcsXG4gICAgYmFja2dyb3VuZDogJyMxN0JEODgnLFxuICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgZm9udFNpemU6ICcyNnJweCcsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LFxuICBpbnB1dDoge1xuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZWVlJyxcbiAgICBtYXJnaW46ICcxMHJweCdcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgbGV0IHJlY29yZGVyTWFuYWdlciA9IG51bGw7XG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgcmVjb3JkZXJNYW5hZ2VyID0gZ2V0UmVjb3JkZXJNYW5hZ2VyKCk7XG4gICAgcmVjb3JkZXJNYW5hZ2VyLm9uU3RhcnQoKCkgPT4ge1xuICAgICAgdG9hc3Quc2hvd1RvYXN0KCfnm5HlkKzliLDlvIDlp4vlvZXpn7MnKTtcbiAgICB9KTtcbiAgICByZWNvcmRlck1hbmFnZXIub25QYXVzZSgoKSA9PiB7XG4gICAgICB0b2FzdC5zaG93VG9hc3QoJ+ebkeWQrOWIsOaaguWBnOW9lemfsycpO1xuICAgIH0pO1xuICAgIHJlY29yZGVyTWFuYWdlci5vblJlc3VtZSgoKSA9PiB7XG4gICAgICB0b2FzdC5zaG93VG9hc3QoJ+ebkeWQrOWIsOe7p+e7reW9lemfsycpO1xuICAgIH0pO1xuICAgIHJlY29yZGVyTWFuYWdlci5vblN0b3AocmVzID0+IHtcbiAgICAgIGFsZXJ0KHtcbiAgICAgICAgY29udGVudDogYOmfs+mikeW9leWItue7k+aenO+8miR7SlNPTi5zdHJpbmdpZnkocmVzKX1gLFxuICAgICAgICB0aXRsZTogJ+WBnOatouW9lemfsycsXG4gICAgICAgIGJ1dHRvblRleHQ6ICfnoa7lrponXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSwgW10pO1xuICByZXR1cm4gPFZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgcmVjb3JkZXJNYW5hZ2VyLnN0YXJ0KCk7XG4gICAgfX0+XG4gICAgICAgIOW8gOWni+W9lemfs1xuICAgICAgPC9WaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgIHJlY29yZGVyTWFuYWdlci5wYXVzZSgpO1xuICAgIH19PlxuICAgICAgICDmmoLlgZzlvZXpn7NcbiAgICAgIDwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICByZWNvcmRlck1hbmFnZXIucmVzdW1lKCk7XG4gICAgfX0+XG4gICAgICAgIOe7p+e7reW9lemfs1xuICAgICAgPC9WaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgIHJlY29yZGVyTWFuYWdlci5zdG9wKCk7XG4gICAgfX0+XG4gICAgICAgIOWBnOatouW9lemfs1xuICAgICAgPC9WaWV3PlxuICAgIDwvVmlldz47XG59IiwiLyogZXNsaW50LWRpc2FibGUgaW1wb3J0L25vLWV4dHJhbmVvdXMtZGVwZW5kZW5jaWVzICovXG4vLyBAdHMtbm9jaGVja1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JheCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgcmVxdWVzdCBmcm9tICdAdW5pL3JlcXVlc3QnO1xuY29uc3Qgc3R5bGVzID0ge1xuICBmbGV4OiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdydcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgbWFyZ2luOiAnMTBycHgnLFxuICAgIHBhZGRpbmc6ICcyMHJweCcsXG4gICAgYmFja2dyb3VuZDogJyMxN0JEODgnLFxuICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgZm9udFNpemU6ICcyNnJweCcsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LFxuICBiZzoge1xuICAgIGJhY2tncm91bmQ6ICcjMzMzJyxcbiAgICBjb2xvcjogJyNmZmYnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZWVlJyxcbiAgICBtYXJnaW46ICcxMHJweCdcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0ICgoKSA9PiB7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGUoJycpO1xuICBjb25zdCBbZXJyb3IsIHNldEVycm9yXSA9IHVzZVN0YXRlKCcnKTtcblxuICBjb25zdCBjbGlja0hhbmRsZXIgPSAoKSA9PiB7XG4gICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICByZXF1ZXN0KHtcbiAgICAgIHVybDogJ2h0dHBzOi8vaHR0cGJpbi5vcmcvcG9zdCcsXG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGhlYWRlcnM6IHsvLyAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcbiAgICAgIH0sXG4gICAgICBkYXRhOiB7XG4gICAgICAgIHRlc3Q6ICcxJ1xuICAgICAgfSxcbiAgICAgIHRpbWVvdXQ6IDUwMDAsXG4gICAgICBzdWNjZXNzOiBkYXRhID0+IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdkYXRhJywgZGF0YSk7XG4gICAgICAgIHNldERhdGEoe1xuICAgICAgICAgIGRhdGEsXG4gICAgICAgICAgdXJsOiAnaHR0cHM6Ly9odHRwYmluLm9yZy9wb3N0J1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBmYWlsOiBlcnJvciA9PiB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICBzZXRFcnJvcihlcnJvcik7XG4gICAgICB9IC8vIGRhdGFUeXBlOiAndGV4dCcgYXMgYW55XG5cbiAgICB9KTtcbiAgfTtcblxuICBjb25zdCBjbGlja0hhbmRsZXIxID0gKCkgPT4ge1xuICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgcmVxdWVzdCh7XG4gICAgICB1cmw6ICdodHRwOi8vc3VnZ2VzdC50YW9iYW8uY29tL3N1ZycsXG4gICAgICBtZXRob2Q6ICdKU09OUCcsXG4gICAgICBoZWFkZXJzOiB7Ly8gJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXG4gICAgICB9LFxuICAgICAgZGF0YToge1xuICAgICAgICBjb2RlOiAndXRmLTgnLFxuICAgICAgICBxOiAn5Y2r6KGjJ1xuICAgICAgfSxcbiAgICAgIGpzb25wQ2FsbGJhY2s6ICdjYicsXG4gICAgICBqc29ucENhbGxiYWNrUHJvcDogJ2NhbGxiYWNrJyxcbiAgICAgIHRpbWVvdXQ6IDUwMDAsXG4gICAgICBzdWNjZXNzOiBkYXRhID0+IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgIGNvbnNvbGUubG9nKCdkYXRhJywgZGF0YSk7XG4gICAgICAgIHNldERhdGEoeyAuLi5kYXRhLFxuICAgICAgICAgIHVybDogJ2h0dHA6Ly9zdWdnZXN0LnRhb2Jhby5jb20vc3VnJ1xuICAgICAgICB9KTtcbiAgICAgIH0sXG4gICAgICBmYWlsOiBlcnJvciA9PiB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICBzZXRFcnJvcihlcnJvcik7XG4gICAgICB9IC8vIGRhdGFUeXBlOiAndGV4dCcgYXMgYW55XG5cbiAgICB9KTtcbiAgfTtcblxuICByZXR1cm4gPFZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17Y2xpY2tIYW5kbGVyfT7lj5HpgIHor7fmsYI8L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17Y2xpY2tIYW5kbGVyMX0+5Y+R6YCBSlNPTlDor7fmsYI8L1ZpZXc+XG4gICAgICB7bG9hZGluZyA/IDxWaWV3IHN0eWxlPXtzdHlsZXMuYmd9PmxvYWRpbmc8L1ZpZXc+IDogbnVsbH1cbiAgICAgIHtkYXRhID8gPFZpZXcgc3R5bGU9e3N0eWxlcy5iZ30+XG4gICAgICAgIDxwPjx0ZXh0PntgdXJsOiAke0pTT04uc3RyaW5naWZ5KGRhdGEudXJsKX1gfTwvdGV4dD48L3A+XG4gICAgICAgIDxwPjx0ZXh0PntgZGF0YTogJHtKU09OLnN0cmluZ2lmeShkYXRhLmRhdGEpfWB9PC90ZXh0PjwvcD5cbiAgICAgICAgPHA+PHRleHQ+e2BoZWFkZXJzOiAke0pTT04uc3RyaW5naWZ5KGRhdGEuZGF0YT8uaGVhZGVycyl9YH08L3RleHQ+PC9wPlxuICAgICAgICA8cD48dGV4dD57YHN0YXR1czogJHtKU09OLnN0cmluZ2lmeShkYXRhLmRhdGE/LnN0YXR1cyl9YH08L3RleHQ+PC9wPlxuICAgICAgPC9WaWV3PiA6IG51bGx9XG4gICAgICB7ZXJyb3IgPyA8VmlldyBzdHlsZT17c3R5bGVzLmJnfT57SlNPTi5zdHJpbmdpZnkoZXJyb3IpfTwvVmlldz4gOiBudWxsfVxuICAgIDwvVmlldz47XG59KTsiLCIvLyBAdHMtbm9jaGVja1xuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3JheCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgVGV4dCBmcm9tICdyYXgtdGV4dCc7XG5pbXBvcnQgYWxlcnQgZnJvbSAnQHVuaS9hbGVydCc7XG5pbXBvcnQgc2NhbiBmcm9tICdAdW5pL3NjYW4nO1xuY29uc3Qgc3R5bGVzID0ge1xuICBmbGV4OiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdydcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgbWFyZ2luOiAnMTBycHgnLFxuICAgIHBhZGRpbmc6ICcyMHJweCcsXG4gICAgYmFja2dyb3VuZDogJyMxN0JEODgnLFxuICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgZm9udFNpemU6ICcyNnJweCcsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LFxuICBpbnB1dDoge1xuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZWVlJyxcbiAgICBtYXJnaW46ICcxMHJweCdcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgcmV0dXJuIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgc2Nhbih7XG4gICAgICBzY2FuVHlwZTogWydxckNvZGUnLCAnYmFyQ29kZSddXG4gICAgfSkudGhlbihyZXMgPT4ge1xuICAgICAgYWxlcnQoe1xuICAgICAgICB0aXRsZTogYCR7cmVzLnJlc3VsdH1gXG4gICAgICB9KTtcbiAgICB9KTtcbiAgfX0+XG4gICAgICDmiavnoIFcbiAgICA8L1ZpZXc+O1xufSIsIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyYXgnO1xuaW1wb3J0IFZpZXcgZnJvbSAncmF4LXZpZXcnO1xuaW1wb3J0IHsgc2hvd1NoYXJlTWVudSwgaGlkZVNoYXJlTWVudSB9IGZyb20gJ0B1bmkvc2hhcmUnO1xuY29uc3Qgc3R5bGVzID0ge1xuICBmbGV4OiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdydcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgbWFyZ2luOiAnMTBycHgnLFxuICAgIHBhZGRpbmc6ICcyMHJweCcsXG4gICAgYmFja2dyb3VuZDogJyMxN0JEODgnLFxuICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgZm9udFNpemU6ICcyNnJweCcsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LFxuICBiZzoge1xuICAgIGJhY2tncm91bmQ6ICcjMzMzJyxcbiAgICBjb2xvcjogJyNmZmYnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZWVlJyxcbiAgICBtYXJnaW46ICcxMHJweCdcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0ICgoKSA9PiB7XG4gIGNvbnN0IGNsaWNrSGFuZGxlciA9ICgpID0+IHtcbiAgICBzaG93U2hhcmVNZW51KCk7XG4gIH07XG5cbiAgY29uc3QgY2xpY2tIYW5kbGVyMSA9ICgpID0+IHtcbiAgICBoaWRlU2hhcmVNZW51KCk7XG4gIH07XG5cbiAgcmV0dXJuIDxWaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9e2NsaWNrSGFuZGxlcn0+5omT5byA5YiG5Lqr6Z2i5p2/PC9WaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9e2NsaWNrSGFuZGxlcjF9PuWFs+mXreWIhuS6q+mdouadvzwvVmlldz5cbiAgICA8L1ZpZXc+O1xufSk7IiwiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgdXNlU3RhdGUgfSBmcm9tICdyYXgnO1xuaW1wb3J0IFZpZXcgZnJvbSAncmF4LXZpZXcnO1xuaW1wb3J0IFRleHQgZnJvbSAncmF4LXRleHQnO1xuaW1wb3J0IFRleHRJbnB1dCBmcm9tICdyYXgtdGV4dGlucHV0JztcbmltcG9ydCBzdG9yYWdlIGZyb20gJ0B1bmkvc3RvcmFnZSc7XG5pbXBvcnQgY29uZmlybSBmcm9tICdAdW5pL2NvbmZpcm0nO1xuY29uc3Qgc3R5bGVzID0ge1xuICBmbGV4OiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdydcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgbWFyZ2luOiAnMTBycHgnLFxuICAgIHBhZGRpbmc6ICcyMHJweCcsXG4gICAgYmFja2dyb3VuZDogJyMxN0JEODgnLFxuICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgZm9udFNpemU6ICcyNnJweCdcbiAgfSxcbiAgaW5wdXQ6IHtcbiAgICBib3JkZXI6ICcxcHggc29saWQgI2VlZScsXG4gICAgbWFyZ2luOiAnMTBycHgnXG4gIH1cbn07XG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiAoKSB7XG4gIGNvbnN0IFtrZXksIHNldEtleV0gPSB1c2VTdGF0ZSgnJyk7XG4gIGNvbnN0IFtkYXRhLCBzZXREYXRhXSA9IHVzZVN0YXRlKCcnKTtcbiAgcmV0dXJuIDxWaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5mbGV4fT5cbiAgICAgICAgPFZpZXc+a2V5OiA8L1ZpZXc+XG4gICAgICAgIDxUZXh0SW5wdXQgc3R5bGU9e3N0eWxlcy5pbnB1dH0gdmFsdWU9e2tleX0gcGxhY2Vob2xkZXI9XCLovpPlhaXlrZjlgqjplK5cIiBvbklucHV0PXsoe1xuICAgICAgICB2YWx1ZVxuICAgICAgfSkgPT4ge1xuICAgICAgICBzZXRLZXkodmFsdWUpO1xuICAgICAgfX0gLz5cbiAgICAgIDwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuZmxleH0+XG4gICAgICAgIDxWaWV3PmRhdGE6IDwvVmlldz5cbiAgICAgICAgPFRleHRJbnB1dCBzdHlsZT17c3R5bGVzLmlucHV0fSB2YWx1ZT17ZGF0YX0gcGxhY2Vob2xkZXI9XCLovpPlhaXlrZjlgqjlgLxcIiBvbklucHV0PXsoe1xuICAgICAgICB2YWx1ZVxuICAgICAgfSkgPT4ge1xuICAgICAgICBzZXREYXRhKHZhbHVlKTtcbiAgICAgIH19IC8+XG4gICAgICA8L1ZpZXc+XG4gICAgICA8Vmlldz7lvILmraXlrZjlgqg8L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmZsZXh9PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgICBzdG9yYWdlLnNldFN0b3JhZ2Uoe1xuICAgICAgICAgIGtleSxcbiAgICAgICAgICBkYXRhXG4gICAgICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICBjb25maXJtKHtcbiAgICAgICAgICAgIHRpdGxlOiAn5a2Y5YKo5oiQ5YqfJyxcbiAgICAgICAgICAgIHNob3dDYW5jZWw6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDoga2V5ICsgJzonICsgZGF0YVxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgIH19PnNldFN0b3JhZ2U8L1ZpZXc+XG4gICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgIHN0b3JhZ2UuZ2V0U3RvcmFnZSh7XG4gICAgICAgICAga2V5XG4gICAgICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICBjb25maXJtKHtcbiAgICAgICAgICAgIHRpdGxlOiAn6I635Y+W57yT5a2YJyxcbiAgICAgICAgICAgIHNob3dDYW5jZWw6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDoga2V5ICsgJzonICsgcmVzLmRhdGFcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7IC8vIHN0b3JhZ2UuZ2V0U3RvcmFnZSh7a2V5LCBmYWlsOiBlcnIgPT4ge2NvbnNvbGUubG9nKGVycil9LCBzdWNjZXNzOiAocmVzKSA9PiB7Y29uc29sZS5sb2cocmVzLCAnc3VjJyl9fSlcbiAgICAgIH19PmdldFN0b3JhZ2U8L1ZpZXc+XG4gICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgIHN0b3JhZ2UucmVtb3ZlU3RvcmFnZSh7XG4gICAgICAgICAga2V5XG4gICAgICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICBjb25maXJtKHtcbiAgICAgICAgICAgIHRpdGxlOiAn5Yig6Zmk57yT5a2YJyxcbiAgICAgICAgICAgIHNob3dDYW5jZWw6IGZhbHNlLFxuICAgICAgICAgICAgY29udGVudDoga2V5XG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgfX0+cmVtb3ZlU3RvcmFnZTwvVmlldz5cbiAgICAgIDwvVmlldz5cbiAgICAgIDxWaWV3PuWQjOatpeWtmOWCqDwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuZmxleH0+XG4gICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgIGxldCByZXMgPSBzdG9yYWdlLnNldFN0b3JhZ2VTeW5jKHtcbiAgICAgICAgICBrZXksXG4gICAgICAgICAgZGF0YVxuICAgICAgICB9KTtcbiAgICAgICAgY29uZmlybSh7XG4gICAgICAgICAgdGl0bGU6ICflrZjlgqjmiJDlip8nLFxuICAgICAgICAgIHNob3dDYW5jZWw6IGZhbHNlLFxuICAgICAgICAgIGNvbnRlbnQ6IGtleSArICc6JyArIGRhdGFcbiAgICAgICAgfSk7XG4gICAgICB9fT5zZXRTdG9yYWdlU3luYzwvVmlldz5cbiAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgbGV0IHJlcyA9IHN0b3JhZ2UuZ2V0U3RvcmFnZVN5bmMoe1xuICAgICAgICAgIGtleVxuICAgICAgICB9KTtcbiAgICAgICAgY29uZmlybSh7XG4gICAgICAgICAgdGl0bGU6ICfojrflj5bnvJPlrZgnLFxuICAgICAgICAgIHNob3dDYW5jZWw6IGZhbHNlLFxuICAgICAgICAgIGNvbnRlbnQ6IGtleSArICc6JyArIHJlcy5kYXRhXG4gICAgICAgIH0pO1xuICAgICAgfX0+Z2V0U3RvcmFnZVN5bmM8L1ZpZXc+XG4gICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICAgIGxldCByZXMgPSBzdG9yYWdlLnJlbW92ZVN0b3JhZ2VTeW5jKHtcbiAgICAgICAgICBrZXlcbiAgICAgICAgfSk7XG4gICAgICAgIGNvbmZpcm0oe1xuICAgICAgICAgIHRpdGxlOiAn5Yig6Zmk57yT5a2YJyxcbiAgICAgICAgICBzaG93Q2FuY2VsOiBmYWxzZSxcbiAgICAgICAgICBjb250ZW50OiBrZXlcbiAgICAgICAgfSk7XG4gICAgICB9fT5yZW1vdmVTdG9yYWdlU3luYzwvVmlldz5cbiAgICAgIDwvVmlldz5cbiAgICA8L1ZpZXc+O1xufSIsIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZVN0YXRlLCB1c2VFZmZlY3QgfSBmcm9tICdyYXgnO1xuaW1wb3J0IFZpZXcgZnJvbSAncmF4LXZpZXcnO1xuaW1wb3J0IGF1dGhvcml6ZSBmcm9tICdAdW5pL2F1dGhvcml6ZSc7XG5pbXBvcnQgeyBzaG93VG9hc3QsIGhpZGVUb2FzdCB9IGZyb20gJ0B1bmkvdG9hc3QnO1xuY29uc3Qgc3R5bGVzID0ge1xuICBmbGV4OiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdydcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgbWFyZ2luOiAnMTBycHgnLFxuICAgIHBhZGRpbmc6ICcyMHJweCcsXG4gICAgYmFja2dyb3VuZDogJyMxN0JEODgnLFxuICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgZm9udFNpemU6ICcyNnJweCcsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LFxuICBiZzoge1xuICAgIGJhY2tncm91bmQ6ICcjMzMzJyxcbiAgICBjb2xvcjogJyNmZmYnLFxuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZWVlJyxcbiAgICBtYXJnaW46ICcxMHJweCdcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0ICgoKSA9PiB7XG4gIGNvbnN0IGNsaWNrSGFuZGxlciA9ICgpID0+IHtcbiAgICBzdWJzY3JpYmVNZXNzYWdlKHtcbiAgICAgIHRtcGxJZHM6IFsnJ11cbiAgICB9KS50aGVuKChyZXM/KSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnc3VjY2VzcycpO1xuICAgIH0pO1xuICB9O1xuXG4gIHJldHVybiA8Vmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXtjbGlja0hhbmRsZXJ9PueCueW8gOiuoumYhemdouadvzwvVmlldz5cbiAgICA8L1ZpZXc+O1xufSk7IiwiLy8gQHRzLW5vY2hlY2tcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHVzZVN0YXRlIH0gZnJvbSAncmF4JztcbmltcG9ydCBWaWV3IGZyb20gJ3JheC12aWV3JztcbmltcG9ydCBUZXh0IGZyb20gJ3JheC10ZXh0JztcbmltcG9ydCB7IGdldEluZm8sIGdldEluZm9TeW5jIH0gZnJvbSAnQHVuaS9zeXN0ZW0taW5mbyc7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sXG4gIGlucHV0OiB7XG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlZWUnLFxuICAgIG1hcmdpbjogJzEwcnB4J1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICBjb25zdCBbc3lzdGVtSW5mbywgc2V0U3lzdGVtSW5mb10gPSB1c2VTdGF0ZSh7fSk7XG4gIHJldHVybiA8Vmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBjb25zdCByZXMgPSBnZXRJbmZvU3luYygpO1xuICAgICAgc2V0U3lzdGVtSW5mbyhyZXMpO1xuICAgIH19PuiOt+WPluezu+e7n+S/oeaBr1xuICAgICAgPC9WaWV3PlxuICAgICAge09iamVjdC5rZXlzKHN5c3RlbUluZm8pLm1hcCgoa2V5LCBpKSA9PiA8VmlldyBrZXk9e2l9IHN0eWxlPXtzdHlsZXMuZmxleH0+XG4gICAgICAgICAgPFZpZXc+e2tleX06IDwvVmlldz5cbiAgICAgICAgICA8Vmlldz57c3lzdGVtSW5mb1trZXldfTwvVmlldz5cbiAgICAgICAgPC9WaWV3Pil9XG4gICAgPC9WaWV3Pjtcbn0iLCIvKiBlc2xpbnQtZGlzYWJsZSBpbXBvcnQvbm8tZXh0cmFuZW91cy1kZXBlbmRlbmNpZXMgKi9cbi8vIEB0cy1pZ25vcmVcbmltcG9ydCB7IGNyZWF0ZUVsZW1lbnQsIHNldFN0YXRlLCB1c2VTdGF0ZSwgdXNlRWZmZWN0IH0gZnJvbSAncmF4JztcbmltcG9ydCB7IHJlZ2lzdGVyTmF0aXZlRXZlbnRMaXN0ZW5lcnMsIGFkZE5hdGl2ZUV2ZW50TGlzdGVuZXIsIHJlbW92ZU5hdGl2ZUV2ZW50TGlzdGVuZXIsIHVzZVBhZ2VTaG93IH0gZnJvbSAncmF4LWFwcCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgVGV4dCBmcm9tICdyYXgtdGV4dCc7XG5pbXBvcnQgVGV4dElucHV0IGZyb20gJ3JheC10ZXh0aW5wdXQnO1xuaW1wb3J0IHRhYkJhciBmcm9tICdAdW5pL3RhYi1iYXInO1xuaW1wb3J0IHsgaXNXZWIgfSBmcm9tICdAdW5pL2Vudic7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sXG4gIHRleHQ6IHtcbiAgICBtYXJnaW5Ub3A6ICcxMDBycHgnLFxuICAgIHBhZGRpbmc6ICcyMHJweCcsXG4gICAgZm9udFNpemU6ICcyNnJweCcsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJyxcbiAgICBjb2xvcjogJ2dyZWVuJ1xuICB9LFxuICBjb250YWluZXI6IHtcbiAgICBtYXJnaW5Ub3A6ICcxMDBycHgnXG4gIH0sXG4gIGlucHV0OiB7XG4gICAgbWFyZ2luOiAnMjBycHgnLFxuICAgIGJvcmRlckJvdHRvbTogJ3NvbGlkICMzMmExY2UnLFxuICAgIGNvbG9yOiAnIzMyYTFjZSdcbiAgfVxufTtcblxuY29uc3QgSW5kZXggPSAoKSA9PiB7XG4gIC8vIGNvbnN0IFtvcHRzLCBzZXRPcHRzXSA9IHVzZVN0YXRlKHtcbiAgLy8gICB0aXRsZTogJ+agh+mimCcsXG4gIC8vICAgYmFja2dyb3VuZENvbG9yOiAn5a+86Iiq5qCP6IOM5pmv6ImyJyxcbiAgLy8gfSk7XG4gIGNvbnN0IGhhbmRsZVNob3cgPSAoKSA9PiB7XG4gICAgdGFiQmFyLnNob3dUYWJCYXIoKTtcbiAgfTtcblxuICBjb25zdCBoYW5kbGVIaWRlID0gKCkgPT4ge1xuICAgIHRhYkJhci5oaWRlVGFiQmFyKCk7XG4gIH07XG5cbiAgcmV0dXJuIDxWaWV3IHN0eWxlPXtzdHlsZXMuY29udGFpbmVyfT5cbiAgICAgIDxWaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17e1xuICAgICAgICBtYXJnaW5Ub3A6ICcyMHJweCdcbiAgICAgIH19PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXtoYW5kbGVTaG93fT5cbiAgICAgICAgICAgIDxUZXh0PlNob3c8L1RleHQ+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXtoYW5kbGVIaWRlfT5cbiAgICAgICAgICAgIDxUZXh0PkhpZGU8L1RleHQ+XG4gICAgICAgICAgPC9WaWV3PlxuICAgICAgICA8L1ZpZXc+XG4gICAgICA8L1ZpZXc+XG4gICAgPC9WaWV3Pjtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IEluZGV4OyIsIi8qIGVzbGludC1kaXNhYmxlIGltcG9ydC9uby1leHRyYW5lb3VzLWRlcGVuZGVuY2llcyAqL1xuLy8gQHRzLWlnbm9yZVxuaW1wb3J0IHsgY3JlYXRlRWxlbWVudCB9IGZyb20gJ3JheCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgVGV4dCBmcm9tICdyYXgtdGV4dCc7XG5pbXBvcnQgVG9hc3QgZnJvbSAnQHVuaS90b2FzdCc7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sXG4gIGlucHV0OiB7XG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlZWUnLFxuICAgIG1hcmdpbjogJzEwcnB4J1xuICB9XG59O1xuXG5jb25zdCBJbmRleCA9ICgpID0+IHtcbiAgcmV0dXJuIDxWaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IFRvYXN0LnNob3dUb2FzdCgn6buY6K6k5o+Q56S6Jyl9PlxuICAgICAgICA8VGV4dD7ngrnlh7vlvLnlh7rmma7pgJrlvLnnqpc8L1RleHQ+XG4gICAgICA8L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4gVG9hc3Quc2hvd1RvYXN0KHtcbiAgICAgIHR5cGU6ICdzdWNjZXNzJyxcbiAgICAgIGNvbnRlbnQ6ICdzdWNjZXNz5o+Q56S6J1xuICAgIH0pfT5cbiAgICAgICAgPFRleHQ+54K55Ye75by55Ye6c3VjY2Vzc+W8ueeqlzwvVGV4dD5cbiAgICAgIDwvVmlldz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiBUb2FzdC5zaG93VG9hc3Qoe1xuICAgICAgdHlwZTogJ2ZhaWwnLFxuICAgICAgY29udGVudDogJ2ZhaWzmj5DnpLonXG4gICAgfSl9PlxuICAgICAgICA8VGV4dD7ngrnlh7vlvLnlh7pmYWls5by556qXPC9UZXh0PlxuICAgICAgPC9WaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IFRvYXN0LnNob3dUb2FzdCh7XG4gICAgICB0eXBlOiAnbm9uZScsXG4gICAgICBjb250ZW50OiAnNXPmj5DnpLonLFxuICAgICAgZHVyYXRpb246IDUwMDBcbiAgICB9KX0+XG4gICAgICAgIDxUZXh0PueCueWHu+W8ueWHujVz5by556qXPC9UZXh0PlxuICAgICAgPC9WaWV3PlxuICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IFRvYXN0LmhpZGVUb2FzdCgpfT5cbiAgICAgICAgPFRleHQ+54K55Ye75YWz6Zet5by556qXPC9UZXh0PlxuICAgICAgPC9WaWV3PlxuICAgIDwvVmlldz47XG59O1xuXG5leHBvcnQgZGVmYXVsdCBJbmRleDsiLCJpbXBvcnQgeyBjcmVhdGVFbGVtZW50LCB1c2VTdGF0ZSB9IGZyb20gJ3JheCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgeyB2aWJyYXRlU2hvcnQsIHZpYnJhdGVMb25nIH0gZnJvbSAnQHVuaS92aWJyYXRlJztcbmltcG9ydCBjb25maXJtIGZyb20gJ0B1bmkvY29uZmlybSc7XG5jb25zdCBzdHlsZXMgPSB7XG4gIGZsZXg6IHtcbiAgICBmbGV4RGlyZWN0aW9uOiAncm93J1xuICB9LFxuICBidXR0b246IHtcbiAgICBtYXJnaW46ICcxMHJweCcsXG4gICAgcGFkZGluZzogJzIwcnB4JyxcbiAgICBiYWNrZ3JvdW5kOiAnIzE3QkQ4OCcsXG4gICAgY29sb3I6ICcjZmZmJyxcbiAgICBmb250U2l6ZTogJzI2cnB4JyxcbiAgICB0ZXh0QWxpZ246ICdjZW50ZXInXG4gIH0sXG4gIGlucHV0OiB7XG4gICAgYm9yZGVyOiAnMXB4IHNvbGlkICNlZWUnLFxuICAgIG1hcmdpbjogJzEwcnB4J1xuICB9XG59O1xuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gKCkge1xuICByZXR1cm4gPFZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgdmlicmF0ZUxvbmcoKS50aGVuKCgpID0+IHtcbiAgICAgICAgY29uZmlybSh7XG4gICAgICAgICAgY29udGVudDogJ+iwg+eUqOaIkOWKnydcbiAgICAgICAgfSk7XG4gICAgICB9KTtcbiAgICB9fT7plb/nmoTpnIfliqg8L1ZpZXc+XG4gICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgdmlicmF0ZVNob3J0KCkudGhlbigoKSA9PiB7XG4gICAgICAgIGNvbmZpcm0oe1xuICAgICAgICAgIGNvbnRlbnQ6ICfosIPnlKjmiJDlip8nXG4gICAgICAgIH0pO1xuICAgICAgfSk7XG4gICAgfX0+55+t55qE6ZyH5YqoPC9WaWV3PlxuICAgIDwvVmlldz47XG59IiwiaW1wb3J0IHsgY3JlYXRlRWxlbWVudCwgdXNlU3RhdGUsIHVzZUVmZmVjdCwgdXNlUmVmLCBGcmFnbWVudCB9IGZyb20gJ3JheCc7XG5pbXBvcnQgVmlldyBmcm9tICdyYXgtdmlldyc7XG5pbXBvcnQgVGV4dElucHV0IGZyb20gJ3JheC10ZXh0aW5wdXQnO1xuaW1wb3J0IHsgY2hvb3NlVmlkZW8sIGNyZWF0ZVZpZGVvQ29udGV4dCwgY2hvb3NlTWVkaWEgfSBmcm9tICdAdW5pL3ZpZGVvJztcbmltcG9ydCBWaWRlbyBmcm9tICdyYXgtdmlkZW8nO1xuY29uc3Qgc3R5bGVzID0ge1xuICBmbGV4OiB7XG4gICAgZmxleERpcmVjdGlvbjogJ3JvdydcbiAgfSxcbiAgYnV0dG9uOiB7XG4gICAgbWFyZ2luOiAnMTBycHgnLFxuICAgIHBhZGRpbmc6ICcyMHJweCcsXG4gICAgYmFja2dyb3VuZDogJyMxN0JEODgnLFxuICAgIGNvbG9yOiAnI2ZmZicsXG4gICAgZm9udFNpemU6ICcyNnJweCcsXG4gICAgdGV4dEFsaWduOiAnY2VudGVyJ1xuICB9LFxuICBpbnB1dDoge1xuICAgIGJvcmRlcjogJzFweCBzb2xpZCAjZWVlJyxcbiAgICBtYXJnaW46ICcxMHJweCdcbiAgfVxufTtcbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uICgpIHtcbiAgY29uc3QgW21heER1cmF0aW9uLCBzZXRNYXhEdXJhdGlvbl0gPSB1c2VTdGF0ZSg2MCk7XG4gIGNvbnN0IFt2aWRlb0luZm8sIHNldFZpZGVvSW5mb10gPSB1c2VTdGF0ZShudWxsKTtcbiAgY29uc3QgW21lZGlhcywgc2V0TWVkaWFzXSA9IHVzZVN0YXRlKG51bGwpO1xuICBsZXQgdmlkZW9Db250ZXh0ID0gdXNlUmVmKG51bGwpO1xuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICghdmlkZW9Db250ZXh0LmN1cnJlbnQpIHtcbiAgICAgIHZpZGVvQ29udGV4dC5jdXJyZW50ID0gY3JlYXRlVmlkZW9Db250ZXh0KCdkZW1vVmlkZW8nKTtcbiAgICB9XG4gIH0sIFtdKTtcbiAgcmV0dXJuIDxWaWV3PlxuICAgICAgPFRleHRJbnB1dCBzdHlsZT17c3R5bGVzLmlucHV0fSB2YWx1ZT17bWF4RHVyYXRpb259IHBsYWNlaG9sZGVyPVwi6L6T5YWl6KeG6aKR5pyA5aSn5pe26ZW/XCIgdHlwZT1cIm51bWJlclwiIG9uSW5wdXQ9eyh7XG4gICAgICB2YWx1ZVxuICAgIH0pID0+IHtcbiAgICAgIHNldE1heER1cmF0aW9uKCt2YWx1ZSk7XG4gICAgfX0gLz5cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBjaG9vc2VWaWRlbyh7XG4gICAgICAgIG1heER1cmF0aW9uXG4gICAgICB9KS50aGVuKHJlcyA9PiB7XG4gICAgICAgIHNldFZpZGVvSW5mbyhyZXMpO1xuICAgICAgfSkuY2F0Y2goZSA9PiB7XG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgfSk7XG4gICAgfX0+XG4gICAgICDpgInmi6nop4bpopFcbiAgICAgIDwvVmlldz5cbiAgICAgIHt2aWRlb0luZm8gJiYgPEZyYWdtZW50PlxuICAgICAgICA8Vmlldz7op4bpopHkv6Hmga/vvJp7SlNPTi5zdHJpbmdpZnkodmlkZW9JbmZvKX08L1ZpZXc+XG4gICAgICAgIDxWaWRlbyBpZD1cImRlbW9WaWRlb1wiIHNyYz17dmlkZW9JbmZvLnRlbXBGaWxlUGF0aH0gc3R5bGU9e3tcbiAgICAgICAgd2lkdGg6IHZpZGVvSW5mby53aWR0aCB8fCAzMDAsXG4gICAgICAgIGhlaWdodDogdmlkZW9JbmZvLmhlaWdodCB8fCAzMDBcbiAgICAgIH19IC8+ICBcbiAgICAgICAgPFZpZXcgc3R5bGU9e3N0eWxlcy5idXR0b259IG9uQ2xpY2s9eygpID0+IHtcbiAgICAgICAgdmlkZW9Db250ZXh0LmN1cnJlbnQucGxheSgpO1xuICAgICAgfX0+5pKt5pS+6KeG6aKRPC9WaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgICB2aWRlb0NvbnRleHQuY3VycmVudC5wYXVzZSgpO1xuICAgICAgfX0+5pqC5YGc6KeG6aKRPC9WaWV3PlxuICAgICAgICA8VmlldyBzdHlsZT17c3R5bGVzLmJ1dHRvbn0gb25DbGljaz17KCkgPT4ge1xuICAgICAgICB2aWRlb0NvbnRleHQuY3VycmVudC5zdG9wKCk7XG4gICAgICB9fT7lgZzmraLop4bpopE8L1ZpZXc+XG4gICAgICA8L0ZyYWdtZW50Pn1cbiAgICAgIDxWaWV3IHN0eWxlPXtzdHlsZXMuYnV0dG9ufSBvbkNsaWNrPXsoKSA9PiB7XG4gICAgICBjaG9vc2VNZWRpYSgpLnRoZW4ocmVzID0+IHtcbiAgICAgICAgc2V0TWVkaWFzKHJlcyk7XG4gICAgICB9KS5jYXRjaChlID0+IHtcbiAgICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICB9KTtcbiAgICB9fT5cbiAgICAgICAg6YCJ5oup5paH5Lu2XG4gICAgICA8L1ZpZXc+XG4gICAgICB7bWVkaWFzICYmIDxWaWV3PuaWh+S7tuS/oeaBr++8mntKU09OLnN0cmluZ2lmeShtZWRpYXMpfTwvVmlldz59XG4gICAgPC9WaWV3Pjtcbn0iXSwic291cmNlUm9vdCI6IiJ9","config.js":"module.exports = {\"usingComponents\":{},\"usingPlugins\":{},\"pages\":[]}","default.acss":".h5-body {\n display: block;\n}\n\n.h5-p {\n display: block;\n -webkit-margin-before: 1em;\n -webkit-margin-after: 1em;\n -webkit-margin-start: 0;\n -webkit-margin-end: 0;\n}\n\n.h5-address,\n.h5-article,\n.h5-aside,\n.h5-div,\n.h5-footer,\n.h5-header,\n.h5-hgroup,\n.h5-main,\n.h5-nav,\n.h5-section {\n display: block;\n}\n\n.h5-blockquote {\n display: block;\n -webkit-margin-before: 1em;\n -webkit-margin-after: 1em;\n -webkit-margin-start: 40px;\n -webkit-margin-end: 40px;\n}\n\n.h5-figcaption {\n display: block;\n}\n\n.h5-figure {\n display: block;\n -webkit-margin-before: 1em;\n -webkit-margin-after: 1em;\n -webkit-margin-start: 40px;\n -webkit-margin-end: 40px;\n}\n\n.h5-q {\n display: inline;\n}\n\n.h5-center {\n display: block;\n text-align: center;\n}\n\n.h5-hr {\n display: block;\n -webkit-margin-before: 0.5em;\n -webkit-margin-after: 0.5em;\n -webkit-margin-start: auto;\n -webkit-margin-end: auto;\n border-style: inset;\n border-width: 1px;\n}\n\n.h5-video {\n object-fit: contain;\n -webkit-tap-highlight-color: transparent;\n}\n\n/* Heading elements */\n\n.h5-h1 {\n display: block;\n font-size: 2em;\n -webkit-margin-before: 0.67em;\n -webkit-margin-after: 0.67em;\n -webkit-margin-start: 0;\n -webkit-margin-end: 0;\n font-weight: bold;\n}\n\n.h5-h2 {\n display: block;\n font-size: 1.5em;\n -webkit-margin-before: 0.83em;\n -webkit-margin-after: 0.83em;\n -webkit-margin-start: 0;\n -webkit-margin-end: 0;\n font-weight: bold;\n}\n\n.h5-h3 {\n display: block;\n font-size: 1.17em;\n -webkit-margin-before: 1em;\n -webkit-margin-after: 1em;\n -webkit-margin-start: 0;\n -webkit-margin-end: 0;\n font-weight: bold;\n}\n\n.h5-h4 {\n display: block;\n -webkit-margin-before: 1.33em;\n -webkit-margin-after: 1.33em;\n -webkit-margin-start: 0;\n -webkit-margin-end: 0;\n font-weight: bold;\n}\n\n.h5-h5 {\n display: block;\n font-size: 0.83em;\n -webkit-margin-before: 1.67em;\n -webkit-margin-after: 1.67em;\n -webkit-margin-start: 0;\n -webkit-margin-end: 0;\n font-weight: bold;\n}\n\n.h5-h6 {\n display: block;\n font-size: 0.67em;\n -webkit-margin-before: 2.33em;\n -webkit-margin-after: 2.33em;\n -webkit-margin-start: 0;\n -webkit-margin-end: 0;\n font-weight: bold;\n}\n\n/* Tables */\n\n.h5-table {\n display: table;\n border-collapse: separate;\n border-spacing: 2px;\n border-color: gray;\n}\n\n.h5-thead {\n display: table-header-group;\n vertical-align: middle;\n border-color: inherit;\n}\n\n.h5-tbody {\n display: table-row-group;\n vertical-align: middle;\n border-color: inherit;\n}\n\n.h5-tfoot {\n display: table-footer-group;\n vertical-align: middle;\n border-color: inherit;\n}\n\n/* For tables without table section elements (can happen with XHTML or dynamically created tables) */\n.h5-table > .h5-tr {\n vertical-align: middle;\n}\n\n.h5-col {\n display: table-column;\n}\n\n.h5-colgroup {\n display: table-column-group;\n}\n\n.h5-tr {\n display: table-row;\n vertical-align: inherit;\n border-color: inherit;\n}\n\n.h5-td,\n.h5-th {\n display: table-cell;\n vertical-align: inherit;\n}\n\n.h5-th {\n font-weight: bold;\n}\n\n.h5-caption {\n display: table-caption;\n text-align: center;\n}\n\n/* Lists */\n\n.h5-ul,\n.h5-menu,\n.h5-dir {\n display: block;\n list-style-type: disc;\n -webkit-margin-before: 1em;\n -webkit-margin-after: 1em;\n -webkit-margin-start: 0;\n -webkit-margin-end: 0;\n -webkit-padding-start: 40px;\n}\n\n.h5-ol {\n display: block;\n list-style-type: decimal;\n -webkit-margin-before: 1em;\n -webkit-margin-after: 1em;\n -webkit-margin-start: 0;\n -webkit-margin-end: 0;\n -webkit-padding-start: 40px;\n}\n\n.h5-li {\n display: list-item;\n text-align: -webkit-match-parent;\n}\n\n.h5-dd {\n display: block;\n -webkit-margin-start: 40px;\n}\n\n.h5-dl {\n display: block;\n -webkit-margin-before: 1em;\n -webkit-margin-after: 1em;\n -webkit-margin-start: 0;\n -webkit-margin-end: 0;\n}\n\n.h5-dt {\n display: block;\n}\n\n/* Form elements */\n\n.h5-legend {\n display: block;\n -webkit-padding-start: 2px;\n -webkit-padding-end: 2px;\n border: none;\n}\n\n.h5-fieldset {\n display: block;\n -webkit-margin-start: 2px;\n -webkit-margin-end: 2px;\n -webkit-padding-before: 0.35em;\n -webkit-padding-start: 0.75em;\n -webkit-padding-end: 0.75em;\n -webkit-padding-after: 0.625em;\n border: 2px groove ThreeDFace;\n min-width: min-content;\n}\n\n/* Form controls don't go vertical. */\n.h5-input,\n.h5-textarea,\nkeygen,\n.h5-select {\n -webkit-writing-mode: horizontal-tb !important;\n}\n\n.h5-input,\n.h5-textarea,\nkeygen,\n.h5-select {\n margin: 0em;\n font: -webkit-small-control;\n color: initial;\n letter-spacing: normal;\n word-spacing: normal;\n line-height: normal;\n text-transform: none;\n text-indent: 0;\n text-shadow: none;\n display: inline-block;\n text-align: start;\n}\n\n.h5-datalist {\n display: none;\n}\n\nkeygen,\n.h5-select {\n border-radius: 5px;\n}\n\n.h5-area,\n.h5-param {\n display: none;\n}\n\n.h5-select {\n box-sizing: border-box;\n letter-spacing: normal;\n word-spacing: normal;\n line-height: normal;\n border: 1px solid #4c4c4c;\n /* We want to be as close to background:transparent as possible without actually being transparent */\n background-color: rgba(255, 255, 255, 0.01);\n font: 11px Helvetica;\n padding: 0 0.4em 0 0.4em;\n border: 1px solid;\n color: text;\n background-color: -apple-system-control-background;\n color: black;\n background-color: white;\n align-items: center;\n white-space: pre;\n -webkit-rtl-ordering: logical;\n cursor: default;\n}\n\n.h5-optgroup {\n font-weight: bolder;\n}\n\n.h5-option {\n font-weight: normal;\n}\n\n.h5-output {\n display: inline;\n}\n\n/* Inline elements */\n\n.h5-u,\n.h5-ins {\n text-decoration: underline;\n}\n\n.h5-strong,\n.h5-b {\n font-weight: bold;\n}\n\n.h5-i,\n.h5-cite,\n.h5-em,\nvar,\n.h5-address,\n.h5-dfn {\n font-style: italic;\n}\n\n.h5-tt,\n.h5-code,\n.h5-kbd,\n.h5-samp {\n font-family: monospace;\n}\n\n.h5-pre {\n display: block;\n font-family: monospace;\n white-space: pre;\n margin: 1em 0;\n}\n\n.h5-mark {\n background-color: yellow;\n color: black;\n}\n\n.h5-big {\n font-size: larger;\n}\n\n.h5-small {\n font-size: smaller;\n}\n\n.h5-s,\n.h5-strike,\n.h5-del {\n text-decoration: line-through;\n}\n\n.h5-sub {\n vertical-align: sub;\n font-size: smaller;\n}\n\n.h5-sup {\n vertical-align: super;\n font-size: smaller;\n}\n\n/* Other elements */\n\n.h5-iframe {\n border: 2px inset;\n}\n\n.h5-details {\n display: block;\n}\n\n.h5-summary {\n display: block;\n}\n\ntemplate {\n display: none;\n}\n\n.h5-bdi,\n.h5-output {\n unicode-bidi: isolate;\n}\n\n.h5-bdo {\n unicode-bidi: bidi-override;\n}\n\n.h5-img {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n background-size: 100% 100%;\n}\n\n/**\n * Compatible tag style\n */\n.h5-img {\n display: inline-block;\n}\n\n.h5-br {\n display: inline-block;\n}\n\n.h5-a,\n.h5-abbr,\n.h5-b,\n.h5-code,\n.h5-i,\n.h5-small,\n.h5-span,\n.h5-strong,\n.h5-time {\n display: inline;\n}\n\n.__rax-view {\n border: 0 solid black;\n display:flex;\n flex-direction:column;\n align-content:flex-start;\n flex-shrink:0;\n box-sizing:border-box;\n}\n\n.__rax-text {\n box-sizing: border-box;\n display: block;\n font-size: 32rpx;\n}\n","mini.project.json":"{}\n","pages/accelerometer/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/accelerometer/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/accelerometer/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/accelerometer/index', [], init, ''))","pages/accelerometer/index.json":"{\n \"defaultTitle\": \"accelerometer\",\n \"usingComponents\": {}\n}","pages/action-sheet/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/action-sheet/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/action-sheet/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/action-sheet/index', [], init, ''))","pages/action-sheet/index.json":"{\n \"defaultTitle\": \"action-sheet\",\n \"usingComponents\": {}\n}","pages/alert/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/alert/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/alert/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/alert/index', [], init, ''))","pages/alert/index.json":"{\n \"defaultTitle\": \"alert\",\n \"usingComponents\": {}\n}","pages/animation/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/animation/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/animation/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/animation/index', [], init, ''))","pages/animation/index.json":"{\n \"defaultTitle\": \"animation\",\n \"usingComponents\": {}\n}","pages/application/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/application/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/application/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/application/index', [], init, ''))","pages/application/index.json":"{\n \"defaultTitle\": \"application\",\n \"usingComponents\": {}\n}","pages/audio/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/audio/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/audio/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/audio/index', [], init, ''))","pages/audio/index.json":"{\n \"defaultTitle\": \"audio\",\n \"usingComponents\": {}\n}","pages/authorize/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/authorize/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/authorize/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/authorize/index', [], init, ''))","pages/authorize/index.json":"{\n \"defaultTitle\": \"authorize\",\n \"usingComponents\": {}\n}","pages/caniuse/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/caniuse/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/caniuse/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/caniuse/index', [], init, ''))","pages/caniuse/index.json":"{\n \"defaultTitle\": \"caniuse\",\n \"usingComponents\": {}\n}","pages/canvas/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/canvas/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/canvas/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/canvas/index', [], init, ''))","pages/canvas/index.json":"{\n \"defaultTitle\": \"canvas\",\n \"usingComponents\": {}\n}","pages/clipboard/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/clipboard/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/clipboard/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/clipboard/index', [], init, ''))","pages/clipboard/index.json":"{\n \"defaultTitle\": \"clipboard\",\n \"usingComponents\": {}\n}","pages/confirm/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/confirm/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/confirm/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/confirm/index', [], init, ''))","pages/confirm/index.json":"{\n \"defaultTitle\": \"confirm\",\n \"usingComponents\": {}\n}","pages/element/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/element/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/element/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/element/index', [], init, ''))","pages/element/index.json":"{\n \"defaultTitle\": \"element\",\n \"usingComponents\": {}\n}","pages/file/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/file/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/file/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/file/index', [], init, ''))","pages/file/index.json":"{\n \"defaultTitle\": \"file\",\n \"usingComponents\": {}\n}","pages/Home/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/Home/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/Home/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/Home/index', [], init, ''))","pages/Home/index.json":"{\n \"defaultTitle\": \"uni\",\n \"usingComponents\": {}\n}","pages/image/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/image/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/image/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/image/index', [], init, ''))","pages/image/index.json":"{\n \"defaultTitle\": \"image\",\n \"usingComponents\": {}\n}","pages/intersection-observer/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/intersection-observer/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/intersection-observer/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/intersection-observer/index', [], init, ''))","pages/intersection-observer/index.json":"{\n \"defaultTitle\": \"intersection-observer\",\n \"usingComponents\": {}\n}","pages/loading/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/loading/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/loading/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/loading/index', [], init, ''))","pages/loading/index.json":"{\n \"defaultTitle\": \"loading\",\n \"usingComponents\": {}\n}","pages/location/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/location/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/location/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/location/index', [], init, ''))","pages/location/index.json":"{\n \"defaultTitle\": \"location\",\n \"usingComponents\": {}\n}","pages/make-phone-call/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/make-phone-call/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/make-phone-call/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/make-phone-call/index', [], init, ''))","pages/make-phone-call/index.json":"{\n \"defaultTitle\": \"make-phone-call\",\n \"usingComponents\": {}\n}","pages/navigate/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/navigate/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/navigate/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/navigate/index', [], init, ''))","pages/navigate/index.json":"{\n \"defaultTitle\": \"navigate\",\n \"usingComponents\": {}\n}","pages/navigation-bar/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/navigation-bar/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/navigation-bar/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/navigation-bar/index', [], init, ''))","pages/navigation-bar/index.json":"{\n \"defaultTitle\": \"navigation-bar\",\n \"usingComponents\": {}\n}","pages/page-scroll-to/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/page-scroll-to/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/page-scroll-to/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/page-scroll-to/index', [], init, ''))","pages/page-scroll-to/index.json":"{\n \"defaultTitle\": \"page-scroll-to\",\n \"usingComponents\": {}\n}","pages/pull-down-refresh/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/pull-down-refresh/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/pull-down-refresh/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/pull-down-refresh/index', ['onPullDownRefresh'], init, ''))","pages/pull-down-refresh/index.json":"{\n \"defaultTitle\": \"pull-down-refresh\",\n \"usingComponents\": {}\n}","pages/recorder/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/recorder/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/recorder/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/recorder/index', [], init, ''))","pages/recorder/index.json":"{\n \"defaultTitle\": \"recorder\",\n \"usingComponents\": {}\n}","pages/request/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/request/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/request/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/request/index', [], init, ''))","pages/request/index.json":"{\n \"defaultTitle\": \"request\",\n \"usingComponents\": {}\n}","pages/scan/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/scan/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/scan/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/scan/index', [], init, ''))","pages/scan/index.json":"{\n \"defaultTitle\": \"scan\",\n \"usingComponents\": {}\n}","pages/share/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/share/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/share/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/share/index', [], init, ''))","pages/share/index.json":"{\n \"defaultTitle\": \"share\",\n \"usingComponents\": {}\n}","pages/storage/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/storage/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/storage/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/storage/index', [], init, ''))","pages/storage/index.json":"{\n \"defaultTitle\": \"storage\",\n \"usingComponents\": {}\n}","pages/subscribe-message/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/subscribe-message/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/subscribe-message/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/subscribe-message/index', [], init, ''))","pages/subscribe-message/index.json":"{\n \"defaultTitle\": \"subscribe-message\",\n \"usingComponents\": {}\n}","pages/system-info/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/system-info/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/system-info/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/system-info/index', [], init, ''))","pages/system-info/index.json":"{\n \"defaultTitle\": \"system-info\",\n \"usingComponents\": {}\n}","pages/tab-bar/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/tab-bar/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/tab-bar/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/tab-bar/index', [], init, ''))","pages/tab-bar/index.json":"{\n \"defaultTitle\": \"tab-bar\",\n \"usingComponents\": {}\n}","pages/toast/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/toast/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/toast/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/toast/index', [], init, ''))","pages/toast/index.json":"{\n \"defaultTitle\": \"toast\",\n \"usingComponents\": {}\n}","pages/vibrate/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/vibrate/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/vibrate/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/vibrate/index', [], init, ''))","pages/vibrate/index.json":"{\n \"defaultTitle\": \"vibrate\",\n \"usingComponents\": {}\n}","pages/video/index.acss":"/* required by usingComponents */\n@import \"./../../bundle.css.acss\";","pages/video/index.axml":"<import src=\"./../../root.axml\"/>\n<template is=\"RAX_TMPL_ROOT_CONTAINER\" data=\"{{r: root}}\" />","pages/video/index.js":"\nconst render = require('./../../render');\n\nfunction init(window, document) {require('./../../bundle.js')(window, document);}\nPage(render.createPageConfig('pages/video/index', [], init, ''))","pages/video/index.json":"{\n \"defaultTitle\": \"video\",\n \"usingComponents\": {}\n}","render.js":"/*!\n * miniapp-render v2.8.3\n * (c) 2019-2021 Rax Team\n * Released under the BSD-3-Clause License.\n */\n(function (global, factory) {\n\ttypeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n\ttypeof define === 'function' && define.amd ? define(factory) :\n\t(global = global || self, global['miniapp-render'] = factory());\n}(this, (function () { 'use strict';\n\n\tfunction unwrapExports (x) {\n\t\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n\t}\n\n\tfunction createCommonjsModule(fn, module) {\n\t\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n\t}\n\n\tvar objectWithoutPropertiesLoose = createCommonjsModule(function (module) {\n\t function _objectWithoutPropertiesLoose(source, excluded) {\n\t if (source == null) return {};\n\t var target = {};\n\t var sourceKeys = Object.keys(source);\n\t var key, i;\n\n\t for (i = 0; i < sourceKeys.length; i++) {\n\t key = sourceKeys[i];\n\t if (excluded.indexOf(key) >= 0) continue;\n\t target[key] = source[key];\n\t }\n\n\t return target;\n\t }\n\n\t module.exports = _objectWithoutPropertiesLoose;\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t});\n\tvar _objectWithoutPropertiesLoose = unwrapExports(objectWithoutPropertiesLoose);\n\n\tvar _extends_1 = createCommonjsModule(function (module) {\n\t function _extends() {\n\t module.exports = _extends = Object.assign || function (target) {\n\t for (var i = 1; i < arguments.length; i++) {\n\t var source = arguments[i];\n\n\t for (var key in source) {\n\t if (Object.prototype.hasOwnProperty.call(source, key)) {\n\t target[key] = source[key];\n\t }\n\t }\n\t }\n\n\t return target;\n\t };\n\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t return _extends.apply(this, arguments);\n\t }\n\n\t module.exports = _extends;\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t});\n\n\tvar _extends = unwrapExports(_extends_1);\n\n\tvar setPrototypeOf = createCommonjsModule(function (module) {\n\t function _setPrototypeOf(o, p) {\n\t module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n\t o.__proto__ = p;\n\t return o;\n\t };\n\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t return _setPrototypeOf(o, p);\n\t }\n\n\t module.exports = _setPrototypeOf;\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t});\n\tunwrapExports(setPrototypeOf);\n\n\tvar isNativeReflectConstruct = createCommonjsModule(function (module) {\n\t function _isNativeReflectConstruct() {\n\t if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n\t if (Reflect.construct.sham) return false;\n\t if (typeof Proxy === \"function\") return true;\n\n\t try {\n\t Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n\t return true;\n\t } catch (e) {\n\t return false;\n\t }\n\t }\n\n\t module.exports = _isNativeReflectConstruct;\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t});\n\tunwrapExports(isNativeReflectConstruct);\n\n\tvar construct = createCommonjsModule(function (module) {\n\t function _construct(Parent, args, Class) {\n\t if (isNativeReflectConstruct()) {\n\t module.exports = _construct = Reflect.construct;\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t } else {\n\t module.exports = _construct = function _construct(Parent, args, Class) {\n\t var a = [null];\n\t a.push.apply(a, args);\n\t var Constructor = Function.bind.apply(Parent, a);\n\t var instance = new Constructor();\n\t if (Class) setPrototypeOf(instance, Class.prototype);\n\t return instance;\n\t };\n\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t }\n\n\t return _construct.apply(null, arguments);\n\t }\n\n\t module.exports = _construct;\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t});\n\tvar _construct = unwrapExports(construct);\n\n\tvar createClass = createCommonjsModule(function (module) {\n\t function _defineProperties(target, props) {\n\t for (var i = 0; i < props.length; i++) {\n\t var descriptor = props[i];\n\t descriptor.enumerable = descriptor.enumerable || false;\n\t descriptor.configurable = true;\n\t if (\"value\" in descriptor) descriptor.writable = true;\n\t Object.defineProperty(target, descriptor.key, descriptor);\n\t }\n\t }\n\n\t function _createClass(Constructor, protoProps, staticProps) {\n\t if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n\t if (staticProps) _defineProperties(Constructor, staticProps);\n\t return Constructor;\n\t }\n\n\t module.exports = _createClass;\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t});\n\tvar _createClass = unwrapExports(createClass);\n\n\tvar inheritsLoose = createCommonjsModule(function (module) {\n\t function _inheritsLoose(subClass, superClass) {\n\t subClass.prototype = Object.create(superClass.prototype);\n\t subClass.prototype.constructor = subClass;\n\t setPrototypeOf(subClass, superClass);\n\t }\n\n\t module.exports = _inheritsLoose;\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t});\n\tvar _inheritsLoose = unwrapExports(inheritsLoose);\n\n\t/**\n\t * Hump to hyphen\n\t */\n\tfunction toDash(str) {\n\t return str.replace(/[A-Z]/g, function (all) {\n\t return \"-\" + all.toLowerCase();\n\t });\n\t}\n\t/**\n\t * Hyphen to hump\n\t */\n\n\n\tfunction toCamel(str) {\n\t return str.replace(/-([a-zA-Z])/g, function (all, $1) {\n\t return $1.toUpperCase();\n\t });\n\t}\n\t/**\n\t * Get unique id\n\t */\n\n\n\tvar seed = 0;\n\n\tfunction getId() {\n\t return seed++;\n\t}\n\t/**\n\t * Check whether the variable is undefined\n\t * @param {*} variable\n\t * @returns boolean\n\t */\n\n\n\tfunction isUndef(variable) {\n\t return variable === undefined;\n\t}\n\t/**\n\t * Check whether the variable is a function\n\t * @param {*} variable\n\t * @returns boolean\n\t */\n\n\n\tfunction isFunction(variable) {\n\t return typeof variable === 'function';\n\t}\n\t/**\n\t * Drop fields which value is falsy from obj\n\t *\n\t * @param {object} obj\n\t * @param {array} fields\n\t * @returns {object}\n\t */\n\n\n\tfunction omitFalsyFields(obj, fields) {\n\t var shallowCopy = Object.assign({}, obj);\n\n\t for (var i = 0; i < fields.length; i++) {\n\t var key = fields[i];\n\n\t if (shallowCopy.hasOwnProperty(key) && !shallowCopy[key]) {\n\t delete shallowCopy[key];\n\t }\n\t }\n\n\t return shallowCopy;\n\t}\n\t/**\n\t * join classNames together\n\t * @returns {string}\n\t */\n\n\n\tfunction joinClassNames() {\n\t for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\n\t return args.filter(function (v) {\n\t return !!v;\n\t }).join(' ');\n\t}\n\n\t/**\n\t * Check the relationships between nodes\n\t */\n\n\tfunction checkRelation(node1, node2) {\n\t if (node1 === node2) return true;\n\n\t while (node1) {\n\t if (node1 === node2) return true;\n\t node1 = node1.parentNode;\n\t }\n\n\t return false;\n\t}\n\n\tvar Event = /*#__PURE__*/function () {\n\t function Event(options) {\n\t var _this = this;\n\n\t this.__name = options.name.toLowerCase();\n\t this.__target = options.target;\n\t this.__timeStamp = options.timeStamp || Date.now();\n\t this.__currentTarget = options.currentTarget || options.target;\n\t this.__eventPhase = options.eventPhase || Event.NONE;\n\t this.__detail = options.detail || null;\n\t this.__immediateStop = false;\n\t this.__canBubble = true;\n\t this.__bubbles = options.bubbles || false;\n\t this.__touches = null;\n\t this.__targetTouches = null;\n\t this.__changedTouches = null;\n\t this.__cancelable = false; // Add fields\n\n\t var extra = options.__extra;\n\n\t if (extra) {\n\t Object.keys(extra).forEach(function (key) {\n\t _this[key] = extra[key];\n\t });\n\t } // Handle touches\n\n\n\t if (options.touches && options.touches.length) {\n\t this.__touches = options.touches.map(function (touch) {\n\t return _extends({}, touch, {\n\t target: options.target\n\t });\n\t });\n\n\t this._checkTargetTouches();\n\t } // Handle changedTouches\n\n\n\t if (options.changedTouches && options.changedTouches.length) {\n\t this.__changedTouches = options.changedTouches.map(function (touch) {\n\t return _extends({}, touch, {\n\t target: options.target\n\t });\n\t });\n\t }\n\t } // Whether the event is stopped immediately\n\n\n\t var _proto = Event.prototype;\n\n\t // Set currentTarget\n\t _proto._setCurrentTarget = function _setCurrentTarget(currentTarget) {\n\t this.__currentTarget = currentTarget;\n\n\t this._checkTargetTouches();\n\t } // Set the stage of the event\n\t ;\n\n\t _proto._setEventPhase = function _setEventPhase(eventPhase) {\n\t this.__eventPhase = eventPhase;\n\t } // Check targetTouches\n\t ;\n\n\t _proto._checkTargetTouches = function _checkTargetTouches() {\n\t var _this2 = this;\n\n\t if (this.__touches && this.__touches.length) {\n\t this.__targetTouches = this.__touches.filter(function (touch) {\n\t return checkRelation(touch.target, _this2.__currentTarget);\n\t });\n\t }\n\t };\n\n\t _proto.preventDefault = function preventDefault() {\n\t this.__cancelable = true;\n\t };\n\n\t _proto.stopPropagation = function stopPropagation() {\n\t if (this.eventPhase === Event.NONE) return;\n\t this.__canBubble = false;\n\t };\n\n\t _proto.stopImmediatePropagation = function stopImmediatePropagation() {\n\t if (this.eventPhase === Event.NONE) return;\n\t this.__immediateStop = true;\n\t this.__canBubble = false;\n\t };\n\n\t _proto.initEvent = function initEvent(name, bubbles) {\n\t if (name === void 0) {\n\t name = '';\n\t }\n\n\t if (typeof name !== 'string') return;\n\t this.__name = name.toLowerCase();\n\t this.__bubbles = isUndef(bubbles) ? this.__bubbles : !!bubbles;\n\t };\n\n\t _createClass(Event, [{\n\t key: \"_immediateStop\",\n\t get: function get() {\n\t return this.__immediateStop;\n\t } // Whether can bubble\n\n\t }, {\n\t key: \"_canBubble\",\n\t get: function get() {\n\t return this.__canBubble;\n\t }\n\t }, {\n\t key: \"bubbles\",\n\t get: function get() {\n\t return this.__bubbles;\n\t }\n\t }, {\n\t key: \"cancelable\",\n\t get: function get() {\n\t return this.__cancelable;\n\t }\n\t }, {\n\t key: \"target\",\n\t get: function get() {\n\t return this.__target;\n\t }\n\t }, {\n\t key: \"currentTarget\",\n\t get: function get() {\n\t return this.__currentTarget;\n\t }\n\t }, {\n\t key: \"eventPhase\",\n\t get: function get() {\n\t return this.__eventPhase;\n\t }\n\t }, {\n\t key: \"type\",\n\t get: function get() {\n\t return this.__name;\n\t }\n\t }, {\n\t key: \"timeStamp\",\n\t get: function get() {\n\t return this.__timeStamp;\n\t }\n\t }, {\n\t key: \"touches\",\n\t get: function get() {\n\t return this.__touches;\n\t }\n\t }, {\n\t key: \"targetTouches\",\n\t get: function get() {\n\t return this.__targetTouches;\n\t }\n\t }, {\n\t key: \"changedTouches\",\n\t get: function get() {\n\t return this.__changedTouches;\n\t }\n\t }, {\n\t key: \"detail\",\n\t get: function get() {\n\t return this.__detail;\n\t },\n\t set: function set(value) {\n\t this.__detail = value;\n\t }\n\t }]);\n\n\t return Event;\n\t}(); // Static props\n\n\n\tEvent.NONE = 0;\n\tEvent.CAPTURING_PHASE = 1;\n\tEvent.AT_TARGET = 2;\n\tEvent.BUBBLING_PHASE = 3;\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tvar pageMap = {};\n\tvar routeMap = new Map();\n\tvar nodeIdMap = new Map();\n\tvar config = {};\n\tvar windowMap = new Map();\n\tvar elementsCache = [];\n\tvar elementMethodsCache = new Map(); // Init\n\n\tfunction init(pageId, document) {\n\t pageMap[pageId] = document;\n\t} // Destroy\n\n\n\tfunction destroy(pageId) {\n\t delete pageMap[pageId];\n\t}\n\t/**\n\t * Get document by pageId\n\t */\n\n\n\tfunction getDocument(pageId) {\n\t return pageMap[pageId];\n\t} // Set window\n\n\n\tfunction setWindow(packageName, value) {\n\t if (packageName === void 0) {\n\t packageName = '';\n\t }\n\n\t windowMap.set(packageName, value);\n\t}\n\t/**\n\t * Get window\n\t */\n\n\n\tfunction getWindow(packageName) {\n\t if (packageName === void 0) {\n\t packageName = '';\n\t }\n\n\t return windowMap.get(packageName);\n\t}\n\n\tfunction hasWindow(packageName) {\n\t if (packageName === void 0) {\n\t packageName = '';\n\t }\n\n\t return windowMap.has(packageName);\n\t}\n\t/**\n\t * Save domNode map\n\t */\n\n\n\tfunction setNode(nodeId, domNode) {\n\t if (domNode === void 0) {\n\t domNode = null;\n\t }\n\n\t nodeIdMap.set(nodeId, domNode);\n\t} // Get the domNode by nodeId\n\n\n\tfunction getNode(nodeId) {\n\t return nodeIdMap.get(nodeId);\n\t}\n\t/**\n\t * Get all nodes\n\t */\n\n\n\tfunction getAllNodes() {\n\t return nodeIdMap;\n\t} // Store global config\n\n\n\tfunction setConfig(value) {\n\t config = value;\n\t} // Get global config\n\n\n\tfunction getConfig() {\n\t return config;\n\t}\n\n\tfunction getRouteId(route) {\n\t var routeId = routeMap.get(route) || 0;\n\t routeMap.set(route, routeId + 1);\n\t return routeId + 1;\n\t}\n\n\tfunction setElementInstance(instance) {\n\t elementsCache.push(instance);\n\n\t if (elementMethodsCache.size > 0) {\n\t elementMethodsCache.forEach(function (methodFn, methodName) {\n\t if (!instance[methodName]) {\n\t instance[methodName] = methodFn;\n\t }\n\t });\n\t }\n\t}\n\n\tfunction setPageInstance(instance) {\n\t}\n\n\tfunction setCustomComponentMethods(methodName, methodFn) {\n\t if (elementsCache.length > 0) {\n\t elementsCache.forEach(function (element) {\n\t element[methodName] = methodFn;\n\t });\n\t }\n\n\t elementMethodsCache.set(methodName, methodFn);\n\t}\n\n\tvar cache = {\n\t init: init,\n\t destroy: destroy,\n\t getDocument: getDocument,\n\t setWindow: setWindow,\n\t getWindow: getWindow,\n\t hasWindow: hasWindow,\n\t setNode: setNode,\n\t getNode: getNode,\n\t getAllNodes: getAllNodes,\n\t setConfig: setConfig,\n\t getConfig: getConfig,\n\t getRouteId: getRouteId,\n\t setElementInstance: setElementInstance,\n\t setCustomComponentMethods: setCustomComponentMethods,\n\t setPageInstance: setPageInstance\n\t};\n\n\tvar CustomEvent = /*#__PURE__*/function (_Event) {\n\t _inheritsLoose(CustomEvent, _Event);\n\n\t function CustomEvent(name, options) {\n\t if (name === void 0) {\n\t name = '';\n\t }\n\n\t if (options === void 0) {\n\t options = {};\n\t }\n\n\t return _Event.call(this, _extends({\n\t name: name\n\t }, options)) || this;\n\t }\n\n\t return CustomEvent;\n\t}(Event);\n\n\tfunction _createForOfIteratorHelperLoose(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\n\tfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\n\tfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\t/**\n\t * Compare touch list\n\t */\n\n\tfunction compareTouchList(a, b) {\n\t if (a.length !== b.length) return false;\n\n\t for (var i, len = a.length; i < len; i++) {\n\t var aItem = a[i];\n\t var bItem = b[i];\n\t if (aItem.identifier !== bItem.identifier) return false;\n\t if (aItem.pageX !== bItem.pageX || aItem.pageY !== bItem.pageY || aItem.clientX !== bItem.clientX || aItem.clientY !== bItem.clientY) return false;\n\t }\n\n\t return true;\n\t}\n\t/**\n\t * Compare event detail\n\t * @param {object} a\n\t * @param {object} b\n\t */\n\n\n\tfunction compareDetail(a, b) {\n\t if (a.pageX === b.pageX && a.pageY === b.pageY && a.clientX === b.clientX && a.clientY === b.clientY) {\n\t return true;\n\t }\n\n\t return false;\n\t}\n\t/**\n\t *\n\t * @param {string} property 'touches' or 'changedTouches' or 'detail'\n\t * @param {object} last last event\n\t * @param {object} now current event\n\t */\n\n\n\tfunction compareEventProperty(property, last, now) {\n\t var compareFn = property === 'detail' ? compareDetail : compareTouchList;\n\n\t if (last[property] && now[property] && !compareFn(last[property], now[property])) {\n\t // property are different\n\t return true;\n\t }\n\n\t if (!last[property] && now[property] || last[property] && !now[property]) {\n\t // One of them doesn't have property\n\t return true;\n\t }\n\n\t return false;\n\t}\n\n\tfunction compareEventWithUncertainty(last, now) {\n\t // In Alipay, timestamps of the same event may have slight differences when bubbling\n\t // Set the D-value threshold to 10\n\t if (!last || now.timeStamp - last.timeStamp > 10) {\n\t return true;\n\t } // Tap event has no touches or changedTouches in Alipay, so use detail property to check\n\n\n\t return compareEventProperty('detail', last, now) || compareEventProperty('touches', last, now) || compareEventProperty('changedTouches', last, now);\n\t}\n\n\tvar EventTarget = /*#__PURE__*/function () {\n\t function EventTarget() {\n\t // Supplement the instance's properties for the 'XXX' in XXX judgment\n\t this.ontouchstart = null;\n\t this.ontouchmove = null;\n\t this.ontouchend = null;\n\t this.ontouchcancel = null;\n\t this.oninput = null;\n\t this.onfocus = null;\n\t this.onblur = null;\n\t this.onchange = null; // Logs the triggered miniapp events\n\n\t this.__miniappEvent = null;\n\t this.__eventHandlerMap = new Map();\n\t this.__hasEventBinded = false;\n\t this.__hasAppearEventBinded = false;\n\t this.__hasTouchEventBinded = false;\n\t } // Destroy instance\n\n\n\t var _proto = EventTarget.prototype;\n\n\t _proto._destroy = function _destroy() {\n\t this.__miniappEvent = null;\n\t this.__eventHandlerMap = null;\n\t this.__hasEventBinded = null;\n\t this.__hasTouchEventBinded = null;\n\t this.__hasAppearEventBinded = false;\n\t } // Trigger event capture, bubble flow\n\t ;\n\n\t EventTarget._process = function _process(target, eventName, miniprogramEvent, extra, callback) {\n\t var event;\n\n\t if (eventName instanceof CustomEvent || eventName instanceof Event) {\n\t // The event object is passed in\n\t event = eventName;\n\t eventName = event.type;\n\t }\n\n\t eventName = eventName.toLowerCase();\n\t var path = [target];\n\t var parentNode = target.parentNode;\n\n\t while (parentNode && parentNode.ownerDocument) {\n\t path.push(parentNode);\n\t parentNode = parentNode.parentNode;\n\t }\n\n\t if (!event) {\n\t // Special handling here, not directly return the applet's event object\n\t var targetNodeId = miniprogramEvent.target.targetDataset.privateNodeId ; // If different and native event target contains dataset, use native event target first\n\n\t var realTarget = targetNodeId && targetNodeId !== target.__nodeId ? cache.getNode(targetNodeId) : target;\n\t event = new Event({\n\t name: eventName,\n\t target: realTarget,\n\t detail: miniprogramEvent.detail || _extends({}, miniprogramEvent),\n\t // Some info doesn't exist in event.detail but in event directly, like Alibaba MiniApp\n\t timeStamp: miniprogramEvent.timeStamp,\n\t touches: miniprogramEvent.touches,\n\t changedTouches: miniprogramEvent.changedTouches,\n\t bubbles: true,\n\t __extra: extra\n\t });\n\t } // Capture\n\n\n\t for (var i = path.length - 1; i >= 0; i--) {\n\t var currentTarget = path[i]; // Determine if the bubble is over\n\n\t if (!event._canBubble) break;\n\t if (currentTarget === target) continue;\n\n\t event._setCurrentTarget(currentTarget);\n\n\t event._setEventPhase(Event.CAPTURING_PHASE);\n\n\t currentTarget._trigger(eventName, {\n\t event: event,\n\t isCapture: true\n\t });\n\n\t if (callback) callback(currentTarget, event, true);\n\t }\n\n\t if (event._canBubble) {\n\t event._setCurrentTarget(target);\n\n\t event._setEventPhase(Event.AT_TARGET); // Both capture and bubble phase listening events are triggered\n\n\n\t target._trigger(eventName, {\n\t event: event,\n\t isCapture: true,\n\t isTarget: true\n\t });\n\n\t if (callback) callback(target, event, true);\n\n\t target._trigger(eventName, {\n\t event: event,\n\t isCapture: false,\n\t isTarget: true\n\t });\n\n\t if (callback) callback(target, event, false);\n\t }\n\n\t if (event.bubbles) {\n\t for (var _iterator = _createForOfIteratorHelperLoose(path), _step; !(_step = _iterator()).done;) {\n\t var _currentTarget = _step.value;\n\t // Determine if the bubble is over\n\t if (!event._canBubble) break;\n\t if (_currentTarget === target) continue;\n\n\t event._setCurrentTarget(_currentTarget);\n\n\t event._setEventPhase(Event.BUBBLING_PHASE);\n\n\t _currentTarget._trigger(eventName, {\n\t event: event,\n\t isCapture: false\n\t });\n\n\t if (callback) callback(_currentTarget, event, false);\n\t }\n\t } // Reset event\n\n\n\t event._setCurrentTarget(null);\n\n\t event._setEventPhase(Event.NONE);\n\n\t return event;\n\t } // Get handlers\n\t ;\n\n\t _proto.__getHandles = function __getHandles(eventName, isCapture, isInit) {\n\t if (isInit) {\n\t var handlerObj = this.__eventHandlerMap.get(eventName);\n\n\t if (!handlerObj) {\n\t this.__eventHandlerMap.set(eventName, handlerObj = {});\n\t }\n\n\t handlerObj.capture = handlerObj.capture || [];\n\t handlerObj.bubble = handlerObj.bubble || [];\n\t return isCapture ? handlerObj.capture : handlerObj.bubble;\n\t } else {\n\t var _handlerObj = this.__eventHandlerMap.get(eventName);\n\n\t if (!_handlerObj) return null;\n\t return isCapture ? _handlerObj.capture : _handlerObj.bubble;\n\t }\n\t } // Trigger node event\n\t ;\n\n\t _proto._trigger = function _trigger(eventName, _temp) {\n\t var _this = this;\n\n\t var _ref = _temp === void 0 ? {} : _temp,\n\t event = _ref.event,\n\t _ref$args = _ref.args,\n\t args = _ref$args === void 0 ? [] : _ref$args,\n\t isCapture = _ref.isCapture,\n\t isTarget = _ref.isTarget;\n\n\t eventName = eventName.toLowerCase();\n\t var handlers = this.__getHandles(eventName, isCapture) || [];\n\n\t if (eventName === 'onshareappmessage') {\n\t if ( handlers.length > 1) {\n\t console.warn('onShareAppMessage can only be listened with one callback function.');\n\t }\n\n\t return handlers[0] && handlers[0].call(this || null, event);\n\t }\n\n\t var onEventName = \"on\" + eventName;\n\n\t if ((!isCapture || !isTarget) && typeof this[onEventName] === 'function') {\n\t // The event that triggers the onXXX binding\n\t if (event && event._immediateStop) return;\n\n\t try {\n\t var _this$onEventName;\n\n\t (_this$onEventName = this[onEventName]).call.apply(_this$onEventName, [this || null, event].concat(args));\n\t } catch (err) {\n\t console.error(err);\n\t }\n\t }\n\n\t if (handlers && handlers.length) {\n\t var result; // Trigger addEventListener binded events\n\n\t handlers.forEach(function (handler) {\n\t if (event && event._immediateStop) return;\n\n\t try {\n\t var processedArgs = event ? [event].concat(args) : [].concat(args);\n\t result = handler.call.apply(handler, [_this || null].concat(processedArgs)); // Only the last result will be returned\n\t } catch (err) {\n\t console.error(err);\n\t }\n\t });\n\t return result;\n\t }\n\t } // Check if the event can be triggered\n\t ;\n\n\t _proto.__checkEvent = function __checkEvent(miniprogramEvent) {\n\t var last = this.__miniappEvent;\n\t var now = miniprogramEvent;\n\t var flag = false;\n\n\t {\n\t flag = compareEventWithUncertainty(last, now);\n\t }\n\n\t if (flag) this.__miniappEvent = now;\n\t return flag;\n\t };\n\n\t _proto.addEventListener = function addEventListener(eventName, handler, options) {\n\t if (typeof eventName !== 'string' || typeof handler !== 'function') return;\n\t var isCapture = false;\n\t if (typeof options === 'boolean') isCapture = options;else if (typeof options === 'object') isCapture = options.capture;\n\t eventName = eventName.toLowerCase();\n\n\t var handlers = this.__getHandles(eventName, isCapture, true);\n\n\t handlers.push(handler);\n\n\t if (!this.__hasEventBinded) {\n\t this.__hasEventBinded = true;\n\t }\n\n\t if (!this.__hasAppearEventBinded && eventName.indexOf('appear') > -1) {\n\t this.__hasAppearEventBinded = true;\n\t }\n\n\t if (!this.__hasTouchEventBinded && eventName.indexOf('touch') > -1) {\n\t this.__hasTouchEventBinded = true;\n\t }\n\t };\n\n\t _proto.removeEventListener = function removeEventListener(eventName, handler, isCapture) {\n\t if (isCapture === void 0) {\n\t isCapture = false;\n\t }\n\n\t if (typeof eventName !== 'string' || typeof handler !== 'function') return;\n\t eventName = eventName.toLowerCase();\n\n\t var handlers = this.__getHandles(eventName, isCapture);\n\n\t if (handlers && handlers.length) handlers.splice(handlers.indexOf(handler), 1);\n\t };\n\n\t _proto.dispatchEvent = function dispatchEvent(evt) {\n\t if (evt instanceof CustomEvent) {\n\t EventTarget._process(this, evt);\n\t } // preventDefault is not supported, so it always returns true\n\n\n\t return true;\n\t };\n\n\t return EventTarget;\n\t}();\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tvar NATIVE_EVENTS_LIST = ['onBack', 'onKeyboardHeight', 'onOptionMenuClick', 'onPopMenuClick', 'onPullDownRefresh', 'onPullIntercept', 'onTitleClick', 'onTabItemTap', 'beforeTabItemTap', 'onResize'];\n\tvar NATIVE_EVENTS_WITH_RETURN_INFO = ['onShareAppMessage', 'onShareTimeline'];\n\tvar BUILTIN_COMPONENT_LIST = new Set(['movable-view', 'cover-image', 'cover-view', 'movable-area', 'scroll-view', 'swiper', 'swiper-item', 'view', 'icon', 'progress', 'rich-text', 'text', 'button', 'checkbox', 'checkbox-group', 'editor', 'form', 'input', 'label', 'picker', 'picker-view', 'picker-view-column', 'radio', 'radio-group', 'slider', 'switch', 'textarea', 'functional-page-navigator', 'navigator', 'audio', 'camera', 'image', 'live-player', 'live-pusher', 'video', 'map', 'canvas', 'ad', 'official-account', 'open-data', 'web-view', 'open-avatar', 'lottie', 'contact-button']);\n\tvar BODY_NODE_ID = 'e-body';\n\tvar INDEX_PAGE = 'index-page';\n\t/**\n\t * In Baidu SmartProgram and KuaiShou MiniProgram, view and h-element template are modified to support flex, so pure, static and catch elements are omitted\n\t */\n\n\tvar STATIC_COMPONENTS = new Set( ['view', 'text', 'image']); // With no events components\n\n\tvar PURE_COMPONENTS = new Set( ['view', 'h-element']); // With no events or props && equal to TOUCH_COMPONENTS\n\n\tvar CATCH_COMPONENTS = new Set( ['view', 'h-element']); // With catchTouchMove events\n\n\tvar APPEAR_COMPONENT = 'view'; // Without appear event components\n\t // Components which only use scrollIntoView to scroll\n\n\tvar Node = /*#__PURE__*/function (_EventTarget) {\n\t _inheritsLoose(Node, _EventTarget);\n\n\t function Node(options) {\n\t var _this;\n\n\t _this = _EventTarget.call(this) || this; // unique node id\n\n\t _this.__nodeId = \"n_\" + getId();\n\t _this.__type = options.type;\n\t _this.parentNode = null;\n\t _this.__rendered = false;\n\t _this.__ownerDocument = options.document;\n\t return _this;\n\t }\n\n\t var _proto = Node.prototype;\n\n\t /**\n\t * Override parent class _destroy method\n\t */\n\t _proto._destroy = function _destroy() {\n\t _EventTarget.prototype._destroy.call(this);\n\n\t this.__nodeId = null;\n\t this.__type = null;\n\t this.parentNode = null;\n\t this.__rendered = false;\n\t };\n\n\t _proto._isRendered = function _isRendered() {\n\t if (this.__rendered) return true;\n\n\t if (this.parentNode) {\n\t this.__rendered = this.parentNode._isRendered();\n\t }\n\n\t return this.__rendered;\n\t };\n\n\t _proto.hasChildNodes = function hasChildNodes() {\n\t return false;\n\t };\n\n\t _proto.remove = function remove() {\n\t if (!this.parentNode || !this.parentNode.removeChild) return this;\n\t return this.parentNode.removeChild(this);\n\t };\n\n\t _createClass(Node, [{\n\t key: \"__pageId\",\n\t get: function get() {\n\t return this.__ownerDocument.__pageId;\n\t }\n\t }, {\n\t key: \"ownerDocument\",\n\t get: function get() {\n\t return this.__ownerDocument;\n\t }\n\t }, {\n\t key: \"_path\",\n\t get: function get() {\n\t if (this.parentNode !== null) {\n\t var childIndex = this.parentNode.childNodes.indexOf(this);\n\t var index = \"[\" + childIndex + \"]\";\n\t return this.parentNode._path + \".children.\" + index;\n\t }\n\n\t return '';\n\t }\n\t }, {\n\t key: \"_root\",\n\t get: function get() {\n\t return cache.getNode(BODY_NODE_ID + \"-\" + this.__pageId);\n\t }\n\t }, {\n\t key: \"nodeValue\",\n\t get: function get() {\n\t return null;\n\t }\n\t }, {\n\t key: \"previousSibling\",\n\t get: function get() {\n\t var childNodes = this.parentNode && this.parentNode.childNodes || [];\n\t var index = childNodes.indexOf(this);\n\n\t if (index > 0) {\n\t return childNodes[index - 1];\n\t }\n\n\t return null;\n\t }\n\t }, {\n\t key: \"previousElementSibling\",\n\t get: function get() {\n\t var childNodes = this.parentNode && this.parentNode.childNodes || [];\n\t var index = childNodes.indexOf(this);\n\n\t if (index > 0) {\n\t for (var i = index - 1; i >= 0; i--) {\n\t if (childNodes[i].nodeType === Node.ELEMENT_NODE) {\n\t return childNodes[i];\n\t }\n\t }\n\t }\n\n\t return null;\n\t }\n\t }, {\n\t key: \"nextSibling\",\n\t get: function get() {\n\t var childNodes = this.parentNode && this.parentNode.childNodes || [];\n\t var index = childNodes.indexOf(this);\n\t return childNodes[index + 1] || null;\n\t }\n\t }, {\n\t key: \"nextElementSibling\",\n\t get: function get() {\n\t var childNodes = this.parentNode && this.parentNode.childNodes || [];\n\t var index = childNodes.indexOf(this);\n\n\t if (index < childNodes.length - 1) {\n\t for (var i = index + 1, len = childNodes.length; i < len; i++) {\n\t if (childNodes[i].nodeType === Node.ELEMENT_NODE) {\n\t return childNodes[i];\n\t }\n\t }\n\t }\n\n\t return null;\n\t }\n\t }]);\n\n\t return Node;\n\t}(EventTarget); // static props\n\n\n\tNode.ELEMENT_NODE = 1;\n\tNode.TEXT_NODE = 3;\n\tNode.CDATA_SECTION_NODE = 4;\n\tNode.PROCESSING_INSTRUCTION_NODE = 7;\n\tNode.COMMENT_NODE = 8;\n\tNode.DOCUMENT_NODE = 9;\n\tNode.DOCUMENT_TYPE_NODE = 10;\n\tNode.DOCUMENT_FRAGMENT_NODE = 11;\n\n\tvar assertThisInitialized = createCommonjsModule(function (module) {\n\t function _assertThisInitialized(self) {\n\t if (self === void 0) {\n\t throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n\t }\n\n\t return self;\n\t }\n\n\t module.exports = _assertThisInitialized;\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t});\n\tvar _assertThisInitialized = unwrapExports(assertThisInitialized);\n\n\tvar getPrototypeOf = createCommonjsModule(function (module) {\n\t function _getPrototypeOf(o) {\n\t module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n\t return o.__proto__ || Object.getPrototypeOf(o);\n\t };\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t return _getPrototypeOf(o);\n\t }\n\n\t module.exports = _getPrototypeOf;\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t});\n\tunwrapExports(getPrototypeOf);\n\n\tvar isNativeFunction = createCommonjsModule(function (module) {\n\t function _isNativeFunction(fn) {\n\t return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n\t }\n\n\t module.exports = _isNativeFunction;\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t});\n\tunwrapExports(isNativeFunction);\n\n\tvar wrapNativeSuper = createCommonjsModule(function (module) {\n\t function _wrapNativeSuper(Class) {\n\t var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n\t module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n\t if (Class === null || !isNativeFunction(Class)) return Class;\n\n\t if (typeof Class !== \"function\") {\n\t throw new TypeError(\"Super expression must either be null or a function\");\n\t }\n\n\t if (typeof _cache !== \"undefined\") {\n\t if (_cache.has(Class)) return _cache.get(Class);\n\n\t _cache.set(Class, Wrapper);\n\t }\n\n\t function Wrapper() {\n\t return construct(Class, arguments, getPrototypeOf(this).constructor);\n\t }\n\n\t Wrapper.prototype = Object.create(Class.prototype, {\n\t constructor: {\n\t value: Wrapper,\n\t enumerable: false,\n\t writable: true,\n\t configurable: true\n\t }\n\t });\n\t return setPrototypeOf(Wrapper, Class);\n\t };\n\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t return _wrapNativeSuper(Class);\n\t }\n\n\t module.exports = _wrapNativeSuper;\n\t module.exports[\"default\"] = module.exports, module.exports.__esModule = true;\n\t});\n\tvar _wrapNativeSuper = unwrapExports(wrapNativeSuper);\n\n\tfunction _createForOfIteratorHelperLoose$1(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray$1(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\n\tfunction _unsupportedIterableToArray$1(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$1(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$1(o, minLen); }\n\n\tfunction _arrayLikeToArray$1(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\tvar ClassList = /*#__PURE__*/function (_Set) {\n\t _inheritsLoose(ClassList, _Set);\n\n\t function ClassList() {\n\t return _Set.apply(this, arguments) || this;\n\t }\n\n\t ClassList._create = function _create(className, element) {\n\t var instance = new Set();\n\t instance.__proto__ = ClassList.prototype;\n\t instance.__element = element;\n\t className.trim().split(/\\s+/).forEach(function (s) {\n\t return s !== '' && instance.add(s, false);\n\t });\n\t return instance;\n\t };\n\n\t var _proto = ClassList.prototype;\n\n\t _proto.add = function add(s, triggerUpdate) {\n\t if (triggerUpdate === void 0) {\n\t triggerUpdate = true;\n\t }\n\n\t if (typeof s === 'string' && s !== '') {\n\t _Set.prototype.add.call(this, s);\n\n\t if (triggerUpdate) {\n\t this._update();\n\t }\n\t }\n\n\t return this;\n\t };\n\n\t _proto.remove = function remove(s) {\n\t _Set.prototype.delete.call(this, s);\n\n\t this._update();\n\t };\n\n\t _proto.replace = function replace(s1, s2) {\n\t _Set.prototype.delete.call(this, s1);\n\n\t _Set.prototype.add.call(this, s2);\n\n\t this._update();\n\t };\n\n\t _proto.contains = function contains(s) {\n\t return this.has(s);\n\t };\n\n\t _proto.item = function item(index) {\n\t var count = 0;\n\n\t for (var _iterator = _createForOfIteratorHelperLoose$1(this), _step; !(_step = _iterator()).done;) {\n\t var i = _step.value;\n\n\t if (count === index) {\n\t return i;\n\t }\n\n\t count++;\n\t }\n\n\t return undefined;\n\t };\n\n\t _proto.toggle = function toggle(token, force) {\n\t if (!isUndef(force)) {\n\t force === true ? this.add(token) : this.remove(token);\n\t return force;\n\t }\n\n\t if (this.has(token)) {\n\t this.remove(token);\n\t return false;\n\t } else {\n\t this.add(token);\n\t return true;\n\t }\n\t };\n\n\t _proto.toString = function toString() {\n\t return this.value;\n\t };\n\n\t _proto._update = function _update() {\n\t this.__element.className = this.value;\n\t };\n\n\t _createClass(ClassList, [{\n\t key: \"value\",\n\t get: function get() {\n\t var classArray = [];\n\t this.forEach(function (item) {\n\t return classArray.push(item);\n\t });\n\t return classArray.join(' ');\n\t }\n\t }]);\n\n\t return ClassList;\n\t}( /*#__PURE__*/_wrapNativeSuper(Set));\n\n\t/**\n\t * A list of supported style properties that by default contain only commonly used style properties\n\t */\n\tvar styleList = {\n\t position: 'position',\n\t top: 'top',\n\t bottom: 'bottom',\n\t right: 'right',\n\t left: 'left',\n\t float: 'float',\n\t clear: 'clear',\n\t display: 'display',\n\t width: 'width',\n\t height: 'height',\n\t maxHeight: 'max-height',\n\t maxWidth: 'max-width',\n\t minHeight: 'min-height',\n\t minWidth: 'min-width',\n\t flex: 'flex',\n\t flexBasis: 'flex-basis',\n\t flexGrow: 'flex-grow',\n\t flexShrink: 'flex-shrink',\n\t flexDirection: 'flex-direction',\n\t flexWrap: 'flex-wrap',\n\t justifyContent: 'justify-content',\n\t justifySelf: 'justify-self',\n\t alignItems: 'align-items',\n\t alignSelf: 'align-self',\n\t padding: 'padding',\n\t paddingBottom: 'padding-bottom',\n\t paddingLeft: 'padding-left',\n\t paddingRight: 'padding-right',\n\t paddingTop: 'padding-top',\n\t margin: 'margin',\n\t marginBottom: 'margin-bottom',\n\t marginLeft: 'margin-left',\n\t marginRight: 'margin-right',\n\t marginTop: 'margin-top',\n\t background: 'background',\n\t backgroundClip: 'background-clip',\n\t backgroundColor: 'background-color',\n\t backgroundImage: 'background-image',\n\t backgroundOrigin: 'background-origin',\n\t backgroundPosition: 'background-position',\n\t backgroundRepeat: 'background-repeat',\n\t backgroundSize: 'background-size',\n\t border: 'border',\n\t borderRadius: 'border-radius',\n\t borderBottomColor: 'border-bottom-color',\n\t borderBottomLeftRadius: 'border-bottom-left-radius',\n\t borderBottomRightRadius: 'border-bottom-right-radius',\n\t borderBottomStyle: 'border-bottom-style',\n\t borderBottomWidth: 'border-bottom-width',\n\t borderCollapse: 'border-collapse',\n\t borderImageOutset: 'border-image-outset',\n\t borderImageRepeat: 'border-image-repeat',\n\t borderImageSlice: 'border-image-slice',\n\t borderImageSource: 'border-image-source',\n\t borderImageWidth: 'border-image-width',\n\t borderLeftColor: 'border-left-color',\n\t borderLeftStyle: 'border-left-style',\n\t borderLeftWidth: 'border-left-width',\n\t borderRightColor: 'border-right-color',\n\t borderRightStyle: 'border-right-style',\n\t borderRightWidth: 'border-right-width',\n\t borderTopColor: 'border-top-color',\n\t borderTopLeftRadius: 'border-top-left-radius',\n\t borderTopRightRadius: 'border-top-right-radius',\n\t borderTopStyle: 'border-top-style',\n\t borderTopWidth: 'border-top-width',\n\t outline: 'outline',\n\t borderWidth: 'border-width',\n\t borderStyle: 'border-style',\n\t borderColor: 'border-color',\n\t animation: 'animation',\n\t animationDelay: 'animation-delay',\n\t animationDirection: 'animation-direction',\n\t animationDuration: 'animation-duration',\n\t animationFillMode: 'animation-fill-mode',\n\t animationIterationCount: 'animation-iteration-count',\n\t animationName: 'animation-name',\n\t animationPlayState: 'animation-play-state',\n\t animationTimingFunction: 'animation-timing-function',\n\t transition: 'transition',\n\t transitionDelay: 'transition-delay',\n\t transitionDuration: 'transition-duration',\n\t transitionProperty: 'transition-property',\n\t transitionTimingFunction: 'transition-timing-function',\n\t transform: 'transform',\n\t transformOrigin: 'transform-origin',\n\t perspective: 'perspective',\n\t perspectiveOrigin: 'perspective-origin',\n\t backfaceVisibility: 'backface-visibility',\n\t font: 'font',\n\t fontFamily: 'font-family',\n\t fontSize: 'font-size',\n\t fontStyle: 'font-style',\n\t fontWeight: 'font-weight',\n\t color: 'color',\n\t textAlign: 'text-align',\n\t textDecoration: 'text-decoration',\n\t textIndent: 'text-indent',\n\t textRendering: 'text-rendering',\n\t textShadow: 'text-shadow',\n\t textOverflow: 'text-overflow',\n\t textTransform: 'text-transform',\n\t wordBreak: 'word-break',\n\t wordSpacing: 'word-spacing',\n\t wordWrap: 'word-wrap',\n\t lineHeight: 'line-height',\n\t letterSpacing: 'letter-spacing',\n\t whiteSpace: 'white-space',\n\t userSelect: 'user-select',\n\t visibility: 'visibility',\n\t opacity: 'opacity',\n\t zIndex: 'z-index',\n\t zoom: 'zoom',\n\t overflow: 'overflow',\n\t overflowX: 'overflow-x',\n\t overflowY: 'overflow-y',\n\t boxShadow: 'box-shadow',\n\t boxSizing: 'box-sizing',\n\t content: 'content',\n\t cursor: 'cursor',\n\t direction: 'direction',\n\t listStyle: 'list-style',\n\t objectFit: 'object-fit',\n\t pointerEvents: 'pointer-events',\n\t resize: 'resize',\n\t verticalAlign: 'vertical-align',\n\t willChange: 'will-change',\n\t clip: 'clip',\n\t clipPath: 'clip-path',\n\t fill: 'fill',\n\t touchAction: 'touch-action',\n\t gridArea: 'grid-area',\n\t gridAutoColumns: 'grid-auto-columns',\n\t gridAutoFlow: 'grid-auto-flow',\n\t gridAutoRows: 'grid-auto-rows',\n\t gridColumn: 'grid-column',\n\t gridColumnEnd: 'grid-column-end',\n\t gridColumnGap: 'grid-column-gap',\n\t gridColumnStart: 'grid-column-start',\n\t gridGap: 'grid-gap',\n\t gridRow: 'grid-row',\n\t gridRowEnd: 'grid-row-end',\n\t gridRowGap: 'grid-row-gap',\n\t gridRowStart: 'grid-row-start',\n\t gridTemplate: 'grid-template',\n\t gridTemplateAreas: 'grid-template-areas',\n\t gridTemplateColumns: 'grid-template-columns',\n\t gridTemplateRows: 'grid-template-rows',\n\t WebkitLineClamp: '-webkit-line-clamp'\n\t};\n\n\tvar Style = /*#__PURE__*/function () {\n\t function Style(element) {\n\t this.__settedStyle = new Set();\n\t this.__value = new Map();\n\t this.__element = element;\n\t }\n\n\t var _proto = Style.prototype;\n\n\t _proto.setStyle = function setStyle(val, styleKey) {\n\t var old = this[styleKey];\n\n\t if (!isUndef(val)) {\n\t this.__settedStyle.add(styleKey);\n\t }\n\n\t this.__value.set(styleKey, val);\n\n\t if (old !== val && this.__element._isRendered()) {\n\t var payload = {\n\t path: this.__element._path + \".style\",\n\t value: this.cssText\n\t };\n\n\t this.__element._triggerUpdate(payload);\n\t }\n\t };\n\n\t _proto.setCssVariables = function setCssVariables(styleKey) {\n\t var _this = this;\n\n\t this.hasOwnProperty(styleKey) || Object.defineProperty(this, styleKey, {\n\t enumerable: true,\n\t configurable: true,\n\t get: function get() {\n\t return _this.__value.get(styleKey) || '';\n\t },\n\t set: function set(val) {\n\t _this.setStyle(val, styleKey);\n\t }\n\t });\n\t };\n\n\t _proto.setProperty = function setProperty(name, value) {\n\t if (name[0] === '-') {\n\t this.setCssVariables(name);\n\t } else {\n\t name = styleMap.get(name);\n\t }\n\n\t if (typeof value === undefined) {\n\t return;\n\t }\n\n\t if (!value) {\n\t this.removeProperty(name);\n\t } else {\n\t this[name] = value;\n\t }\n\t };\n\n\t _proto.removeProperty = function removeProperty(name) {\n\t name = styleMap.get(name);\n\n\t if (!this.__settedStyle.has(name)) {\n\t return '';\n\t }\n\n\t var value = this[name];\n\t this[name] = '';\n\n\t this.__settedStyle.delete(name);\n\n\t return value;\n\t };\n\n\t _proto.getPropertyValue = function getPropertyValue(name) {\n\t if (typeof name !== 'string') return '';\n\t name = styleMap.get(name);\n\t return this[name] || '';\n\t };\n\n\t _createClass(Style, [{\n\t key: \"cssText\",\n\t get: function get() {\n\t var _this2 = this;\n\n\t var cssText = '';\n\n\t this.__settedStyle.forEach(function (key) {\n\t var val = _this2[key];\n\t if (isUndef(val)) return;\n\t cssText += (styleMap.get(key) || key) + \": \" + val + \";\";\n\t });\n\n\t return cssText;\n\t },\n\t set: function set(styleText) {\n\t var _this3 = this;\n\n\t if (styleText === void 0) {\n\t styleText = '';\n\t }\n\n\t this.__settedStyle.forEach(function (prop) {\n\t _this3.removeProperty(prop);\n\t });\n\n\t if (styleText === '') {\n\t return;\n\t }\n\n\t var rules = styleText.split(';');\n\n\t for (var i = 0; i < rules.length; i++) {\n\t var rule = rules[i].trim();\n\n\t if (rule === '') {\n\t continue;\n\t }\n\n\t var _rule$split = rule.split(':'),\n\t propName = _rule$split[0],\n\t val = _rule$split[1];\n\n\t if (typeof val === undefined) {\n\t continue;\n\t }\n\n\t this.setProperty(propName.trim(), val.trim());\n\t }\n\t }\n\t }]);\n\n\t return Style;\n\t}();\n\t/**\n\t * Set the getters and setters for each property\n\t */\n\n\n\tvar properties = {};\n\tvar styleMap = new Map();\n\tObject.keys(styleList).forEach(function (name) {\n\t styleMap.set(name, styleList[name]);\n\t styleMap.set(styleList[name], name);\n\t properties[name] = {\n\t get: function get() {\n\t var val = this.__value.get(name);\n\n\t return isUndef(val) ? '' : val;\n\t },\n\t set: function set(value) {\n\t this.setStyle(value, name);\n\t }\n\t };\n\t});\n\tObject.defineProperties(Style.prototype, properties);\n\n\tvar Attribute = /*#__PURE__*/function () {\n\t function Attribute(element) {\n\t this.__element = element;\n\t this.__value = {};\n\t }\n\n\t var _proto = Attribute.prototype;\n\n\t _proto.setWithoutUpdate = function setWithoutUpdate(name, value) {\n\t this.__value[name] = value;\n\t };\n\n\t _proto.set = function set(name, value, immediate) {\n\t if (immediate === void 0) {\n\t immediate = true;\n\t }\n\n\t var element = this.__element;\n\t this.__value[name] = value;\n\n\t if (name === 'style') {\n\t element.style.cssText = value;\n\t } else {\n\t if (name.indexOf('data-') === 0) {\n\t var datasetName = toCamel(name.substr(5));\n\t element.dataset[datasetName] = value;\n\t }\n\n\t if (!element.__hasExtraAttribute && name !== 'id' && name !== 'class') {\n\t element.__hasExtraAttribute = true; // Indicates that the element has extra attributes besides id/style/class\n\t }\n\n\t if (element._isRendered()) {\n\t var payload = {\n\t // In baidu smartprogram, setData path supports like: root.children.0['scroll-into-view']\n\t // While in wechat miniprogram, the same setData path muse be: root.children.[0].scroll-into-view\n\t path: element._path + \".\" + name,\n\t value: value\n\t };\n\n\t element._triggerUpdate(payload, immediate);\n\t }\n\t }\n\t };\n\n\t _proto.get = function get(name) {\n\t var element = this.__element;\n\n\t if (name === 'style') {\n\t return element.style.cssText || null;\n\t } else if (name.indexOf('data-') === 0) {\n\t var datasetName = toCamel(name.substr(5));\n\t return element.dataset[datasetName];\n\t }\n\n\t return this.__value[name] || null;\n\t };\n\n\t _proto.has = function has(name) {\n\t return Object.prototype.hasOwnProperty.call(this.__value, name);\n\t };\n\n\t _proto.remove = function remove(name) {\n\t var element = this.__element;\n\t delete this.__value[name];\n\t delete this[name];\n\n\t if (name === 'style') {\n\t element.style.cssText = '';\n\t } else if (name === 'id') {\n\t element.id = '';\n\t } else {\n\t if (name.indexOf('data-') === 0) {\n\t var datasetName = toCamel(name.substr(5));\n\t delete element.dataset[datasetName];\n\t }\n\n\t var payload = {\n\t path: element._path + \".\" + name,\n\t value: ''\n\t };\n\n\t element._triggerUpdate(payload);\n\t }\n\t };\n\n\t _createClass(Attribute, [{\n\t key: \"style\",\n\t get: function get() {\n\t return this.__element.style.cssText || undefined;\n\t }\n\t }, {\n\t key: \"class\",\n\t get: function get() {\n\t return this.__value.class || undefined;\n\t }\n\t }, {\n\t key: \"id\",\n\t get: function get() {\n\t return this.__value.id || undefined;\n\t }\n\t }, {\n\t key: \"src\",\n\t get: function get() {\n\t return this.__value.src || undefined;\n\t }\n\t }]);\n\n\t return Attribute;\n\t}();\n\n\tvar LEAF_NODE = ['h-text', 'h-comment', 'image']; // The most common used node type\n\n\tfunction simplify(node) {\n\t return node._renderInfo;\n\t}\n\n\tfunction traverse(node, action) {\n\t if (!node) {\n\t return;\n\t }\n\n\t var copiedNode;\n\t var queue = [];\n\t queue.push(node);\n\n\t var _loop = function _loop() {\n\t var curNode = queue.shift();\n\t var result = action(curNode);\n\n\t if (!copiedNode) {\n\t copiedNode = result;\n\n\t if (!LEAF_NODE.includes(result.nodeType)) {\n\t copiedNode.children = [];\n\t }\n\t } else {\n\t curNode.__parent.children = curNode.__parent.children || [];\n\n\t curNode.__parent.children.push(result);\n\t }\n\n\t if (curNode.childNodes && curNode.childNodes.length) {\n\t curNode.childNodes.forEach(function (n) {\n\t return n.__parent = result;\n\t });\n\t queue = queue.concat(curNode.childNodes);\n\t }\n\n\t if (!result.children && !LEAF_NODE.includes(result.nodeType)) {\n\t result.children = [];\n\t }\n\t };\n\n\t while (queue.length) {\n\t _loop();\n\t }\n\n\t return copiedNode;\n\t}\n\tfunction simplifyDomTree(node) {\n\t return traverse(node, simplify);\n\t}\n\n\tfunction _createForOfIteratorHelperLoose$2(o, allowArrayLike) { var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"]; if (it) return (it = it.call(o)).next.bind(it); if (Array.isArray(o) || (it = _unsupportedIterableToArray$2(o)) || allowArrayLike && o && typeof o.length === \"number\") { if (it) o = it; var i = 0; return function () { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }; } throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\"); }\n\n\tfunction _unsupportedIterableToArray$2(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray$2(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray$2(o, minLen); }\n\n\tfunction _arrayLikeToArray$2(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\n\tvar Element = /*#__PURE__*/function (_Node) {\n\t _inheritsLoose(Element, _Node);\n\n\t function Element(options) {\n\t var _this;\n\n\t options.type = 'element';\n\t _this = _Node.call(this, options) || this;\n\t var _options$tagName = options.tagName,\n\t tagName = _options$tagName === void 0 ? '' : _options$tagName,\n\t _options$attrs = options.attrs,\n\t attrs = _options$attrs === void 0 ? {} : _options$attrs,\n\t _options$nodeType = options.nodeType,\n\t nodeType = _options$nodeType === void 0 ? Node.ELEMENT_NODE : _options$nodeType;\n\t _this.__tagName = tagName;\n\t _this.__isBuiltinComponent = BUILTIN_COMPONENT_LIST.has(_this.__tagName);\n\t _this.__tmplName = _this.__isBuiltinComponent ? _this.__tagName : 'h-element';\n\t _this.childNodes = [];\n\t _this.__nodeType = nodeType;\n\t _this.style = new Style(_assertThisInitialized(_this));\n\t _this.__hasExtraAttribute = false; // Indicates that the element has extra attributes besides id/style/class\n\n\t _this.__attrs = new Attribute(_assertThisInitialized(_this));\n\t cache.setNode(_this.__nodeId, _assertThisInitialized(_this));\n\t _this.dataset = {};\n\t _this.__internal = null; // Save miniapp native page or custom component instance\n\n\t _this._initAttributes(attrs);\n\n\t if (_this.id && !_this.ownerDocument.__idMap.has(_this.id)) {\n\t _this.ownerDocument.__idMap.set(_this.id, _assertThisInitialized(_this));\n\t }\n\n\t return _this;\n\t } // Override the _destroy method of the parent class\n\n\n\t var _proto = Element.prototype;\n\n\t _proto._destroy = function _destroy() {\n\t this.childNodes.forEach(function (child) {\n\t return child._destroy();\n\t });\n\t cache.setNode(this.__nodeId, null);\n\n\t this.ownerDocument.__idMap.set(this.id, null);\n\n\t _Node.prototype._destroy.call(this);\n\n\t this.__tagName = '';\n\t this.childNodes.length = 0;\n\t this.__nodeType = Node.ELEMENT_NODE;\n\t } // Init attribute\n\t ;\n\n\t _proto._initAttributes = function _initAttributes(attrs) {\n\t var _this2 = this;\n\n\t if (attrs === void 0) {\n\t attrs = {};\n\t }\n\n\t Object.keys(attrs).forEach(function (name) {\n\t _this2._setAttributeWithDelayUpdate(name, attrs[name]);\n\t });\n\t };\n\n\t _proto._triggerUpdate = function _triggerUpdate(payload, immediate) {\n\t if (immediate === void 0) {\n\t immediate = true;\n\t }\n\n\t if (immediate) {\n\t this._enqueueRender(payload);\n\t } else {\n\t this._root.__renderStacks.push(payload);\n\t }\n\t } // Child ownerDocument may be incorrect if the node created during the page hide period\n\t // Here we should adjust its ownerDocument when the node mounted\n\t ;\n\n\t _proto._adjustDocument = function _adjustDocument(child) {\n\t var _this3 = this;\n\n\t if (this.__ownerDocument.__pageId !== child.__ownerDocument.__pageId) {\n\t this._root.__renderCallbacks.push(function () {\n\t traverse(child, function (node) {\n\t // Adjust node's ownerDocument's idMap\n\t if (node.id) {\n\t node.__ownerDocument.__idMap.delete(node.id);\n\n\t _this3.__ownerDocument.__idMap.set(node.id, node);\n\t }\n\n\t node.__ownerDocument = _this3.__ownerDocument;\n\t return {};\n\t });\n\t });\n\t }\n\t };\n\n\t _proto._processNodeType = function _processNodeType() {\n\t var nodeTypePrefix = '';\n\t /*\n\t Explaination:\n\t Static: element in STATIC_OR_PURE_COMPONENTS && without any event binded\n\t Pure: element in STATIC_OR_PURE_COMPONENTS && without any event or prop binded\n\t NoTouch: element in NO_TOUCH_COMPONENTS && without any touch event binded\n\t NoAppearTouch: element in TOUCH_COMPONENTS and APPEAR_COMPONENTS && without any touch or appear event binded\n\t NoAppear: element in APPEAR_COMPONENTS && without any appear event binded\n\t Catch: element in CATCH_COMPONENTS && with catchTouchMove\n\t */\n\n\t var hasEventBinded = this.__hasEventBinded;\n\t var hasAppearEventBinded = this.__hasAppearEventBinded;\n\t var hasTouchEventBinded = this.__hasTouchEventBinded;\n\n\t var hasCatchTouchMoveFlag = this.__attrs.get('catchTouchMove');\n\n\t var hasAnchorScrollFlag = this.__attrs.get('anchorScroll');\n\n\t var hasExtraAttribute = this.__hasExtraAttribute;\n\t var isPureComponent = PURE_COMPONENTS.has(this.__tmplName);\n\n\t if (!hasEventBinded) {\n\t STATIC_COMPONENTS.has(this.__tmplName) && (nodeTypePrefix = 'static-');\n\t isPureComponent && !hasExtraAttribute && (nodeTypePrefix = 'pure-');\n\t } else if (isPureComponent) {\n\t // PURE_COMPONENTS are equal to TOUCH_COMPONENTS\n\t var matchNoAppearTmplFlag = !hasAppearEventBinded && this.__tmplName === APPEAR_COMPONENT;\n\n\t if (matchNoAppearTmplFlag || !hasTouchEventBinded) {\n\t /* Example:\n\t 1. no-appear-touch-view\n\t 2. no-appear-view\n\t 3. no-touch-view\n\t */\n\t nodeTypePrefix = \"no-\" + (matchNoAppearTmplFlag ? 'appear-' : '') + (!hasTouchEventBinded ? 'touch-' : '');\n\t }\n\t }\n\n\t if (hasCatchTouchMoveFlag) {\n\t CATCH_COMPONENTS.has(this.__tmplName) && (nodeTypePrefix = 'catch-');\n\t } // Fix scroll-view shake problem caused by scroll-left or scroll-top\n\n\t return \"\" + nodeTypePrefix + this.__tmplName;\n\t };\n\n\t // The cloneNode interface is called to process additional properties\n\t _proto._dealWithAttrsForCloneNode = function _dealWithAttrsForCloneNode() {\n\t return {};\n\t } // Sets properties, but does not trigger updates\n\t ;\n\n\t _proto._setAttributeWithoutUpdate = function _setAttributeWithoutUpdate(name, value) {\n\t this.__attrs.setWithoutUpdate(name, value);\n\t } // Sets properties, and trigger later\n\t ;\n\n\t _proto._setAttributeWithDelayUpdate = function _setAttributeWithDelayUpdate(name, value) {\n\t this.__attrs.set(name, value, false);\n\t };\n\n\t _proto.cloneNode = function cloneNode(deep) {\n\t var _this4 = this;\n\n\t var dataset = {};\n\t Object.keys(this.dataset).forEach(function (name) {\n\t dataset[\"data-\" + toDash(name)] = _this4.dataset[name];\n\t });\n\n\t var newNode = this.ownerDocument._createElement({\n\t tagName: this.__tagName,\n\t attrs: _extends({\n\t id: this.id,\n\t class: this.className,\n\t style: this.style.cssText,\n\t src: this.src\n\t }, dataset, this._dealWithAttrsForCloneNode()),\n\t document: this.ownerDocument,\n\t nodeType: this.__nodeType\n\t });\n\n\t if (deep) {\n\t // Deep clone\n\t for (var _iterator = _createForOfIteratorHelperLoose$2(this.childNodes), _step; !(_step = _iterator()).done;) {\n\t var child = _step.value;\n\t newNode.appendChild(child.cloneNode(deep));\n\t }\n\t }\n\n\t return newNode;\n\t };\n\n\t _proto.appendChild = function appendChild(node) {\n\t if (node === this) return;\n\t if (node.parentNode) node.parentNode.removeChild(node);\n\t this.childNodes.push(node); // Set parentNode\n\n\t node.parentNode = this;\n\n\t if (this._isRendered()) {\n\t node.__rendered = true; // Trigger update\n\n\t var payload;\n\n\t {\n\t payload = {\n\t type: 'children',\n\t path: this._path + \".children\",\n\t start: this.childNodes.length - 1,\n\t deleteCount: 0,\n\t item: simplifyDomTree(node)\n\t };\n\t }\n\n\t this._triggerUpdate(payload);\n\n\t this._adjustDocument(node);\n\t }\n\n\t return this;\n\t };\n\n\t _proto.removeChild = function removeChild(node) {\n\n\t if (!(node instanceof Node)) return;\n\t var index = this.childNodes.indexOf(node);\n\n\t if (index >= 0) {\n\t // Inserted, need to delete\n\t this.childNodes.splice(index, 1);\n\t node.parentNode = null;\n\t node.__rendered = false;\n\n\t if (this._isRendered()) {\n\t node.__rendered = false; // Trigger update\n\n\t var payload;\n\n\t {\n\t payload = {\n\t type: 'children',\n\t path: this._path + \".children\",\n\t start: index,\n\t deleteCount: 1\n\t };\n\t }\n\n\t this._triggerUpdate(payload);\n\t }\n\t }\n\n\t return node;\n\t };\n\n\t _proto.insertBefore = function insertBefore(node, ref) {\n\n\t if (!(node instanceof Node)) return;\n\t if (ref && !(ref instanceof Node)) return;\n\t if (node === this) return;\n\t if (node.parentNode) node.parentNode.removeChild(node); // Set parentNode\n\n\t node.parentNode = this;\n\t var insertIndex = ref ? this.childNodes.indexOf(ref) : -1;\n\n\t if (insertIndex === -1) {\n\t // Insert to the end\n\t this.childNodes.push(node);\n\t } else {\n\t // Inserted before ref\n\t this.childNodes.splice(insertIndex, 0, node);\n\t }\n\n\t if (this._isRendered()) {\n\t node.__rendered = true;\n\t var payload;\n\n\t {\n\t payload = {\n\t type: 'children',\n\t path: this._path + \".children\",\n\t deleteCount: 0,\n\t item: simplifyDomTree(node),\n\t start: insertIndex === -1 ? this.childNodes.length - 1 : insertIndex\n\t };\n\t } // Trigger update\n\n\n\t this._triggerUpdate(payload);\n\n\t this._adjustDocument(node);\n\t }\n\n\t return node;\n\t };\n\n\t _proto.replaceChild = function replaceChild(node, old) {\n\t if (!(node instanceof Node) || !(old instanceof Node)) return;\n\t var replaceIndex = this.childNodes.indexOf(old);\n\t if (replaceIndex !== -1) this.childNodes.splice(replaceIndex, 1);\n\t if (node === this) return;\n\t if (node.parentNode) node.parentNode.removeChild(node);\n\n\t if (replaceIndex === -1) {\n\t // Insert to the end\n\t this.childNodes.push(node);\n\t } else {\n\t // Replace to old\n\t this.childNodes.splice(replaceIndex, 0, node);\n\t } // Set parentNode\n\n\n\t node.parentNode = this;\n\n\t if (this._isRendered()) {\n\t node.__rendered = true; // Trigger update\n\n\t var payload;\n\n\t {\n\t payload = {\n\t type: 'children',\n\t path: this._path + \".children\",\n\t start: replaceIndex === -1 ? this.childNodes.length - 1 : replaceIndex,\n\t deleteCount: replaceIndex === -1 ? 0 : 1,\n\t item: simplifyDomTree(node)\n\t };\n\t }\n\n\t this._triggerUpdate(payload);\n\n\t this._adjustDocument(node);\n\t }\n\n\t return old;\n\t };\n\n\t _proto.hasChildNodes = function hasChildNodes() {\n\t return this.childNodes.length > 0;\n\t };\n\n\t _proto.getElementsByTagName = function getElementsByTagName(tagName) {\n\t var _this7 = this;\n\n\t if (typeof tagName !== 'string') return [];\n\t var elements = [];\n\t traverse(this, function (element) {\n\t if (element !== _this7 && element && element.__tagName === tagName) {\n\t elements.push(element);\n\t }\n\n\t return {};\n\t });\n\t return elements;\n\t };\n\n\t _proto.getElementsByClassName = function getElementsByClassName(className) {\n\t var _this8 = this;\n\n\t if (typeof className !== 'string') return [];\n\t var elements = [];\n\t traverse(this, function (element) {\n\t var classNames = className.trim().split(/\\s+/);\n\n\t if (element !== _this8 && element && classNames.every(function (c) {\n\t return element.classList && element.classList.contains(c);\n\t })) {\n\t elements.push(element);\n\t }\n\n\t return {};\n\t });\n\t return elements;\n\t };\n\n\t _proto.querySelector = function querySelector(selector) {\n\t if (selector[0] === '.') {\n\t var elements = this.getElementsByClassName(selector.slice(1));\n\t return elements.length > 0 ? elements[0] : null;\n\t } else if (selector[0] === '#') {\n\t return this.ownerDocument.getElementById(selector.slice(1));\n\t } else if (/^[a-zA-Z]/.test(selector)) {\n\t var _elements = this.getElementsByTagName(selector);\n\n\t return _elements.length > 0 ? _elements[0] : null;\n\t }\n\n\t return null;\n\t };\n\n\t _proto.querySelectorAll = function querySelectorAll(selector) {\n\t if (typeof selector !== 'string') return [];\n\n\t if (selector[0] === '.') {\n\t return this.getElementsByClassName(selector.slice(1));\n\t } else if (selector[0] === '#') {\n\t var element = this.ownerDocument.getElementById(selector.slice(1));\n\t return element ? [element] : [];\n\t } else if (/^[a-zA-Z]/.test(selector)) {\n\t return this.getElementsByTagName(selector);\n\t }\n\n\t return null;\n\t };\n\n\t _proto.setAttribute = function setAttribute(name, value, immediate) {\n\t if (immediate === void 0) {\n\t immediate = true;\n\t }\n\n\t if (name === 'id' && value !== this.id) {\n\t this.ownerDocument.__idMap.delete(this.id);\n\n\t this.ownerDocument.__idMap.set(value, this);\n\t }\n\n\t this.__attrs.set(name, value, immediate);\n\t };\n\n\t _proto.getAttribute = function getAttribute(name) {\n\t return this.__attrs.get(name);\n\t };\n\n\t _proto.hasAttribute = function hasAttribute(name) {\n\t if (name === 'style' || name === 'id') {\n\t return !!this.getAttribute(name);\n\t }\n\n\t return this.__attrs.has(name);\n\t };\n\n\t _proto.removeAttribute = function removeAttribute(name) {\n\t return this.__attrs.remove(name);\n\t };\n\n\t _proto.contains = function contains(otherElement) {\n\t var stack = [];\n\t var checkElement = this;\n\n\t while (checkElement) {\n\t if (checkElement === otherElement) return true;\n\t var childNodes = checkElement.childNodes;\n\t if (childNodes && childNodes.length) childNodes.forEach(function (child) {\n\t return stack.push(child);\n\t });\n\t checkElement = stack.pop();\n\t }\n\n\t return false;\n\t };\n\n\t _proto._enqueueRender = function _enqueueRender(payload) {\n\t this._root._enqueueRender(payload);\n\t };\n\n\t _proto.getBoundingClientRect = function getBoundingClientRect() {\n\t // Do not make any implementation, only for compatible use\n\t console.warn('getBoundingClientRect is not supported, please use npm package universal-element to get DOM info in miniapp');\n\t return {};\n\t };\n\n\t _createClass(Element, [{\n\t key: \"_renderInfo\",\n\t get: function get() {\n\t var nodeType = this._processNodeType();\n\n\t return omitFalsyFields(_extends({\n\t nodeType: nodeType,\n\t nodeId: this.__nodeId\n\t }, this.__attrs.__value, {\n\t style: this.style.cssText,\n\t class: joinClassNames(this.__isBuiltinComponent ? '' : \"h5-\" + this.__tagName, this.className)\n\t }), ['class', 'style']);\n\t }\n\t }, {\n\t key: \"_internal\",\n\t get: function get() {\n\t if (this.__isCustomComponentRoot) {\n\t // __isCustomComponentRoot is taged in createElementConfig\n\t return this.__internal;\n\t }\n\n\t if (this.parentNode !== null) {\n\t return this.parentNode._internal;\n\t }\n\n\t return this.__ownerDocument._internal;\n\t },\n\t set: function set(instance) {\n\t this.__internal = instance;\n\t }\n\t }, {\n\t key: \"id\",\n\t get: function get() {\n\t return this.__attrs.get('id') || '';\n\t },\n\t set: function set(id) {\n\t this.setAttribute('id', id);\n\t }\n\t }, {\n\t key: \"tagName\",\n\t get: function get() {\n\t return this.__tagName.toUpperCase();\n\t }\n\t }, {\n\t key: \"className\",\n\t get: function get() {\n\t return this.getAttribute('class') || '';\n\t },\n\t set: function set(className) {\n\t this.setAttribute('class', className);\n\t }\n\t }, {\n\t key: \"classList\",\n\t get: function get() {\n\t return ClassList._create(this.className, this);\n\t }\n\t }, {\n\t key: \"nodeName\",\n\t get: function get() {\n\t return this.tagName;\n\t }\n\t }, {\n\t key: \"nodeType\",\n\t get: function get() {\n\t return this.__nodeType;\n\t }\n\t }, {\n\t key: \"children\",\n\t get: function get() {\n\t return this.childNodes.filter(function (child) {\n\t return child.nodeType === Node.ELEMENT_NODE;\n\t });\n\t }\n\t }, {\n\t key: \"firstChild\",\n\t get: function get() {\n\t return this.childNodes[0];\n\t }\n\t }, {\n\t key: \"lastChild\",\n\t get: function get() {\n\t return this.childNodes[this.childNodes.length - 1];\n\t }\n\t }, {\n\t key: \"innerText\",\n\t get: function get() {\n\t // WARN: this is handled in accordance with the textContent, not to determine whether it will be rendered or not\n\t return this.textContent;\n\t },\n\t set: function set(text) {\n\t this.textContent = text;\n\t }\n\t }, {\n\t key: \"textContent\",\n\t get: function get() {\n\t return this.childNodes.map(function (child) {\n\t return child.textContent;\n\t }).join('');\n\t },\n\t set: function set(text) {\n\t text = '' + text; // An empty string does not add a textNode node\n\n\t if (!text) {\n\t var payload;\n\n\t {\n\t payload = {\n\t type: 'children',\n\t path: this._path + \".children\",\n\t start: 0,\n\t deleteCount: this.childNodes.length\n\t };\n\t }\n\n\t this.childNodes.length = 0;\n\n\t this._triggerUpdate(payload);\n\t } else {\n\t this.childNodes.length = 0;\n\t var child = this.ownerDocument.createTextNode(text);\n\t this.appendChild(child);\n\t }\n\t }\n\t }, {\n\t key: \"attributes\",\n\t get: function get() {\n\t return this.__attrs;\n\t }\n\t }, {\n\t key: \"src\",\n\t get: function get() {\n\t if (!this.__attrs) return '';\n\t return this.__attrs.get('src') || undefined;\n\t },\n\t set: function set(value) {\n\t value = '' + value;\n\n\t this.__attrs.set('src', value);\n\t }\n\t }]);\n\n\t return Element;\n\t}(Node);\n\n\tvar lastRafTime = 0;\n\n\tvar Window = /*#__PURE__*/function (_EventTarget) {\n\t _inheritsLoose(Window, _EventTarget);\n\n\t function Window() {\n\t var _this;\n\n\t _this = _EventTarget.call(this) || this;\n\t var timeOrigin = +new Date();\n\n\t _this._customEventConstructor = /*#__PURE__*/function (_OriginalCustomEvent) {\n\t _inheritsLoose(CustomEvent, _OriginalCustomEvent);\n\n\t function CustomEvent(name, options) {\n\t if (name === void 0) {\n\t name = '';\n\t }\n\n\t if (options === void 0) {\n\t options = {};\n\t }\n\n\t options.timeStamp = +new Date() - timeOrigin;\n\t return _OriginalCustomEvent.call(this, name, options) || this;\n\t }\n\n\t return CustomEvent;\n\t }(CustomEvent); // Collect event handlers which undifferentiated pages\n\n\n\t _this.__sharedHandlers = []; // Simulate for react\n\n\t _this.HTMLIFrameElement = function () {};\n\n\t return _this;\n\t } // Trigger node event\n\n\n\t var _proto = Window.prototype;\n\n\t _proto._trigger = function _trigger(eventName, options) {\n\t var _this2 = this;\n\n\t if (options === void 0) {\n\t options = {};\n\t }\n\n\t if (eventName === 'error' && typeof options.event === 'string') {\n\t var errStack = options.event;\n\t var errLines = errStack.split('\\n');\n\t var message = '';\n\n\t for (var i = 0, len = errLines.length; i < len; i++) {\n\t var line = errLines[i];\n\n\t if (line.trim().indexOf('at') !== 0) {\n\t message += line + '\\n';\n\t } else {\n\t break;\n\t }\n\t }\n\n\t var error = new Error(message);\n\t error.stack = errStack;\n\t options.event = new this._customEventConstructor('error', {\n\t target: this,\n\t __extra: {\n\t message: message,\n\t filename: '',\n\t lineno: 0,\n\t colno: 0,\n\t error: error\n\t }\n\t });\n\t options.args = [message, error];\n\n\t if (typeof this.onerror === 'function' && !this.onerror.__isOfficial) {\n\t var oldOnError = this.onerror;\n\n\t this.onerror = function (event, message, error) {\n\t oldOnError.call(_this2, message, '', 0, 0, error);\n\t };\n\n\t this.onerror.__isOfficial = true;\n\t }\n\t }\n\n\t return _EventTarget.prototype._trigger.call(this, eventName, options);\n\t }\n\t /**\n\t * External properties and methods\n\t */\n\t ;\n\n\t _proto.getComputedStyle = function getComputedStyle() {\n\t // Only for compatible use\n\t console.warn('window.getComputedStyle is not supported.');\n\t };\n\n\t _proto.requestAnimationFrame = function requestAnimationFrame(callback) {\n\t if (typeof callback !== 'function') return;\n\t var now = new Date();\n\t var nextRafTime = Math.max(lastRafTime + 16, now);\n\t return setTimeout(function () {\n\t callback(nextRafTime);\n\t lastRafTime = nextRafTime;\n\t }, nextRafTime - now);\n\t };\n\n\t _proto.cancelAnimationFrame = function cancelAnimationFrame(timeId) {\n\t return clearTimeout(timeId);\n\t };\n\n\t _createClass(Window, [{\n\t key: \"document\",\n\t get: function get() {\n\t return cache.getDocument(this.__pageId);\n\t }\n\t }, {\n\t key: \"CustomEvent\",\n\t get: function get() {\n\t return this._customEventConstructor;\n\t }\n\t }, {\n\t key: \"self\",\n\t get: function get() {\n\t return this;\n\t }\n\t }, {\n\t key: \"setTimeout\",\n\t get: function get() {\n\t return setTimeout.bind(null);\n\t }\n\t }, {\n\t key: \"clearTimeout\",\n\t get: function get() {\n\t return clearTimeout.bind(null);\n\t }\n\t }, {\n\t key: \"setInterval\",\n\t get: function get() {\n\t return setInterval.bind(null);\n\t }\n\t }, {\n\t key: \"clearInterval\",\n\t get: function get() {\n\t return clearInterval.bind(null);\n\t }\n\t }, {\n\t key: \"HTMLElement\",\n\t get: function get() {\n\t return function () {\n\t for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\n\t return _construct(Element, args);\n\t };\n\t }\n\t }, {\n\t key: \"Element\",\n\t get: function get() {\n\t return Element;\n\t }\n\t }, {\n\t key: \"Node\",\n\t get: function get() {\n\t return Node;\n\t }\n\t }, {\n\t key: \"RegExp\",\n\t get: function get() {\n\t return RegExp;\n\t }\n\t }, {\n\t key: \"Math\",\n\t get: function get() {\n\t return Math;\n\t }\n\t }, {\n\t key: \"Number\",\n\t get: function get() {\n\t return Number;\n\t }\n\t }, {\n\t key: \"Boolean\",\n\t get: function get() {\n\t return Boolean;\n\t }\n\t }, {\n\t key: \"String\",\n\t get: function get() {\n\t return String;\n\t }\n\t }, {\n\t key: \"Date\",\n\t get: function get() {\n\t return Date;\n\t }\n\t }, {\n\t key: \"Symbol\",\n\t get: function get() {\n\t return Symbol;\n\t }\n\t }]);\n\n\t return Window;\n\t}(EventTarget);\n\n\tfunction createWindow() {\n\t var _cache$getConfig = cache.getConfig(),\n\t mainPackageName = _cache$getConfig.mainPackageName,\n\t subPackages = _cache$getConfig.subPackages;\n\n\t var _ref = subPackages || {},\n\t shareMemory = _ref.shareMemory;\n\n\t if (mainPackageName === '' || !shareMemory) {\n\t return new Window();\n\t }\n\n\t var mainPackageWindow = cache.getWindow(mainPackageName);\n\t if (mainPackageWindow) return mainPackageWindow;\n\t return new Window();\n\t}\n\n\tvar TextNode = /*#__PURE__*/function (_Node) {\n\t _inheritsLoose(TextNode, _Node);\n\n\t function TextNode(options) {\n\t var _this;\n\n\t options.type = 'text';\n\t _this = _Node.call(this, options) || this;\n\t _this.__content = options.content || '';\n\t return _this;\n\t }\n\n\t var _proto = TextNode.prototype;\n\n\t _proto._destroy = function _destroy() {\n\t _Node.prototype._destroy.call(this);\n\n\t this.__content = '';\n\t };\n\n\t _proto._triggerUpdate = function _triggerUpdate(payload) {\n\t this._root._enqueueRender(payload);\n\t };\n\n\t _proto.cloneNode = function cloneNode() {\n\t return this.ownerDocument.createTextNode(this.__content);\n\t };\n\n\t _createClass(TextNode, [{\n\t key: \"_renderInfo\",\n\t get: function get() {\n\t return {\n\t nodeType: 'h-text',\n\t content: this.__content\n\t };\n\t }\n\t }, {\n\t key: \"nodeName\",\n\t get: function get() {\n\t return '#text';\n\t }\n\t }, {\n\t key: \"nodeType\",\n\t get: function get() {\n\t return Node.TEXT_NODE;\n\t }\n\t }, {\n\t key: \"nodeValue\",\n\t get: function get() {\n\t return this.textContent;\n\t },\n\t set: function set(value) {\n\t this.textContent = value;\n\t }\n\t }, {\n\t key: \"textContent\",\n\t get: function get() {\n\t return this.__content;\n\t },\n\t set: function set(value) {\n\t value += '';\n\t this.__content = value;\n\n\t if (this._isRendered()) {\n\t var payload = {\n\t path: this._path + \".content\",\n\t value: value\n\t };\n\n\t this._triggerUpdate(payload);\n\t }\n\t }\n\t }, {\n\t key: \"data\",\n\t get: function get() {\n\t return this.textContent;\n\t },\n\t set: function set(value) {\n\t this.textContent = value;\n\t }\n\t }]);\n\n\t return TextNode;\n\t}(Node);\n\n\tvar Comment = /*#__PURE__*/function (_Node) {\n\t _inheritsLoose(Comment, _Node);\n\n\t function Comment(options) {\n\t var _this;\n\n\t options.type = 'comment';\n\t _this = _Node.call(this, options) || this;\n\t _this.data = options.data;\n\t return _this;\n\t }\n\n\t var _proto = Comment.prototype;\n\n\t _proto.cloneNode = function cloneNode() {\n\t return this.ownerDocument.createComment({\n\t data: this.data\n\t });\n\t };\n\n\t _createClass(Comment, [{\n\t key: \"_renderInfo\",\n\t get: function get() {\n\t return {\n\t nodeType: 'h-' + this.__type\n\t };\n\t }\n\t }, {\n\t key: \"nodeName\",\n\t get: function get() {\n\t return '#comment';\n\t }\n\t }, {\n\t key: \"nodeType\",\n\t get: function get() {\n\t return Node.COMMENT_NODE;\n\t }\n\t }]);\n\n\t return Comment;\n\t}(Node);\n\n\tvar Image = /*#__PURE__*/function (_Element) {\n\t _inheritsLoose(Image, _Element);\n\n\t function Image(options) {\n\t var _this;\n\n\t var width = options.width;\n\t var height = options.height;\n\t if (typeof width === 'number' && width >= 0) options.attrs.width = width;\n\t if (typeof height === 'number' && height >= 0) options.attrs.height = height;\n\t _this = _Element.call(this, options) || this;\n\t _this.__naturalWidth = 0;\n\t _this.__naturalHeight = 0;\n\n\t _this._initRect();\n\n\t return _this;\n\t } // Override the parent class's destroy instance method\n\n\n\t var _proto = Image.prototype;\n\n\t _proto._destroy = function _destroy() {\n\t _Element.prototype._destroy.call(this);\n\n\t this.__naturalWidth = null;\n\t this.__naturalHeight = null;\n\t } // Init length\n\t ;\n\n\t _proto._initRect = function _initRect() {\n\t var width = parseInt(this.__attrs.get('width'), 10);\n\t var height = parseInt(this.__attrs.get('height'), 10);\n\t if (typeof width === 'number' && width >= 0) this.style.width = width + \"px\";\n\t if (typeof height === 'number' && height >= 0) this.style.height = height + \"px\";\n\t } // Reset width & height\n\t ;\n\n\t _proto._resetRect = function _resetRect(rect) {\n\t if (rect === void 0) {\n\t rect = {};\n\t }\n\n\t this.__naturalWidth = rect.width || 0;\n\t this.__naturalHeight = rect.height || 0;\n\n\t this._initRect();\n\t };\n\n\t _createClass(Image, [{\n\t key: \"_renderInfo\",\n\t get: function get() {\n\t return omitFalsyFields(_extends({\n\t nodeId: this.__nodeId,\n\t nodeType: 'image'\n\t }, this.__attrs.__value, {\n\t style: this.style.cssText,\n\t class: joinClassNames('h5-img', this.className)\n\t }), ['style']);\n\t }\n\t }, {\n\t key: \"src\",\n\t get: function get() {\n\t return this.__attrs.get('src') || '';\n\t },\n\t set: function set(value) {\n\t var _this2 = this;\n\n\t if (!value || typeof value !== 'string') return;\n\n\t this.__attrs.set('src', value);\n\n\t setTimeout(function () {\n\t if (_this2.src.indexOf('data:image') !== 0) {\n\t my.getImageInfo({\n\t src: _this2.src,\n\t success: function success(res) {\n\t // Load successfully, adjust the width and height of the picture\n\t _this2._resetRect(res); // Load event\n\n\n\t _this2._trigger('load', {\n\t event: new Event({\n\t name: 'load',\n\t target: _this2,\n\t eventPhase: Event.AT_TARGET\n\t }),\n\t currentTarget: _this2\n\t });\n\t },\n\t fail: function fail() {\n\t // Load failed, adjust the width and height of the image\n\t _this2._resetRect({\n\t width: 0,\n\t height: 0\n\t }); // Trigger error event\n\n\n\t _this2._trigger('error', {\n\t event: new Event({\n\t name: 'error',\n\t target: _this2,\n\t eventPhase: Event.AT_TARGET\n\t }),\n\t currentTarget: _this2\n\t });\n\t }\n\t });\n\t }\n\t }, 0);\n\t }\n\t }, {\n\t key: \"width\",\n\t get: function get() {\n\t return +this.__attrs.get('width') || 0;\n\t },\n\t set: function set(value) {\n\t if (typeof value !== 'number' || !isFinite(value) || value < 0) return;\n\n\t this.__attrs.set('width', value);\n\n\t this._initRect();\n\t }\n\t }, {\n\t key: \"height\",\n\t get: function get() {\n\t return +this.__attrs.get('height') || 0;\n\t },\n\t set: function set(value) {\n\t if (typeof value !== 'number' || !isFinite(value) || value < 0) return;\n\n\t this.__attrs.set('height', value);\n\n\t this._initRect();\n\t }\n\t }, {\n\t key: \"naturalWidth\",\n\t get: function get() {\n\t return this.__naturalWidth;\n\t }\n\t }, {\n\t key: \"naturalHeight\",\n\t get: function get() {\n\t return this.__naturalHeight;\n\t }\n\t }]);\n\n\t return Image;\n\t}(Element);\n\n\tvar HTMLInputElement = /*#__PURE__*/function (_Element) {\n\t _inheritsLoose(HTMLInputElement, _Element);\n\n\t function HTMLInputElement(options) {\n\t var _this;\n\n\t _this = _Element.call(this, options) || this;\n\t _this.__changed = false;\n\t return _this;\n\t }\n\t /**\n\t * The cloneNode interface is invoked to handle additional properties\n\t */\n\n\n\t var _proto = HTMLInputElement.prototype;\n\n\t _proto._dealWithAttrsForCloneNode = function _dealWithAttrsForCloneNode() {\n\t return {\n\t type: this.type,\n\t value: this.value,\n\t disabled: this.disabled,\n\t maxlength: this.maxlength,\n\t placeholder: this.placeholder,\n\t // Special field\n\t mpplaceholderclass: this.mpplaceholderclass\n\t };\n\t };\n\n\t _proto.setAttribute = function setAttribute(name, value, immediate) {\n\t if (immediate === void 0) {\n\t immediate = true;\n\t }\n\n\t if (name === 'focus' || name === 'autofocus' || name === 'autoFocus') {\n\t // autoFocus is passed by rax-textinput\n\t name = 'focus-state';\n\t }\n\n\t if (name === 'value') {\n\t this.__changed = true;\n\t }\n\n\t _Element.prototype.setAttribute.call(this, name, value, immediate);\n\t } // Sets properties, but does not trigger updates\n\t ;\n\n\t _proto._setAttributeWithDelayUpdate = function _setAttributeWithDelayUpdate(name, value) {\n\t if (name === 'focus' || name === 'autofocus' || name === 'autoFocus') {\n\t // autoFocus is passed by rax-textinput\n\t name = 'focus-state';\n\t }\n\n\t if (name === 'value') {\n\t this.__changed = true;\n\t }\n\n\t _Element.prototype._setAttributeWithDelayUpdate.call(this, name, value);\n\t };\n\n\t _proto.getAttribute = function getAttribute(name) {\n\t if (name === 'focus' || name === 'autofocus' || name === 'autoFocus') {\n\t // autoFocus is passed by rax-textinput\n\t name = 'focus-state';\n\t }\n\n\t return this.__attrs.get(name);\n\t };\n\n\t _proto.blur = function blur() {\n\t this.setAttribute('focus', false);\n\t };\n\n\t _proto.focus = function focus() {\n\t this.setAttribute('focus', true);\n\t };\n\n\t _createClass(HTMLInputElement, [{\n\t key: \"_renderInfo\",\n\t get: function get() {\n\t return omitFalsyFields(_extends({\n\t nodeId: this.__nodeId,\n\t nodeType: 'input'\n\t }, this.__attrs.__value, {\n\t style: this.style.cssText,\n\t class: joinClassNames('h5-input', this.className)\n\t }), ['style']);\n\t } // Attribute\n\n\t }, {\n\t key: \"name\",\n\t get: function get() {\n\t return this.__attrs.get('name');\n\t },\n\t set: function set(value) {\n\t value = '' + value;\n\n\t this.__attrs.set('name', value);\n\t }\n\t }, {\n\t key: \"type\",\n\t get: function get() {\n\t return this.__attrs.get('type') || 'text';\n\t },\n\t set: function set(value) {\n\t value = '' + value;\n\n\t this.__attrs.set('type', value);\n\t }\n\t }, {\n\t key: \"value\",\n\t get: function get() {\n\t var value = this.__attrs.get('value');\n\n\t if (!value && !this.__changed) {\n\t value = this.__attrs.get('defaultValue');\n\t }\n\n\t return value || '';\n\t },\n\t set: function set(value) {\n\t this.__changed = true;\n\t value = '' + value;\n\n\t this.__attrs.set('value', value);\n\t }\n\t }, {\n\t key: \"readOnly\",\n\t get: function get() {\n\t return !!this.__attrs.get('readOnly');\n\t },\n\t set: function set(value) {\n\t this.__attrs.set('readOnly', !!value);\n\t }\n\t }, {\n\t key: \"disabled\",\n\t get: function get() {\n\t return !!this.__attrs.get('disabled');\n\t },\n\t set: function set(value) {\n\t value = !!value;\n\n\t this.__attrs.set('disabled', value);\n\t }\n\t }, {\n\t key: \"maxlength\",\n\t get: function get() {\n\t return this.__attrs.get('maxlength');\n\t },\n\t set: function set(value) {\n\t this.__attrs.set('maxlength', value);\n\t }\n\t }, {\n\t key: \"placeholder\",\n\t get: function get() {\n\t return this.__attrs.get('placeholder') || '';\n\t },\n\t set: function set(value) {\n\t value = '' + value;\n\n\t this.__attrs.set('placeholder', value);\n\t }\n\t }, {\n\t key: \"checked\",\n\t get: function get() {\n\t return this.__attrs.get('checked') || '';\n\t },\n\t set: function set(value) {\n\t this.__attrs.set('checked', value);\n\t }\n\t }]);\n\n\t return HTMLInputElement;\n\t}(Element);\n\n\tvar HTMLTextAreaElement = /*#__PURE__*/function (_Element) {\n\t _inheritsLoose(HTMLTextAreaElement, _Element);\n\n\t function HTMLTextAreaElement(options) {\n\t var _this;\n\n\t _this = _Element.call(this, options) || this;\n\t _this.__changed = false;\n\t return _this;\n\t }\n\t /**\n\t * The cloneNode interface is invoked to handle additional properties\n\t */\n\n\n\t var _proto = HTMLTextAreaElement.prototype;\n\n\t _proto._dealWithAttrsForCloneNode = function _dealWithAttrsForCloneNode() {\n\t return {\n\t type: this.type,\n\t value: this.value,\n\t disabled: this.disabled,\n\t maxlength: this.maxlength,\n\t placeholder: this.placeholder,\n\t // Special field\n\t mpplaceholderclass: this.mpplaceholderclass\n\t };\n\t };\n\n\t _proto.setAttribute = function setAttribute(name, value, immediate) {\n\t if (immediate === void 0) {\n\t immediate = true;\n\t }\n\n\t if (name === 'focus' || name === 'autofocus' || name === 'autoFocus') {\n\t // autoFocus is passed by rax-textinput\n\t name = 'focus-state';\n\t }\n\n\t if (name === 'value') {\n\t this.__changed = true;\n\t }\n\n\t _Element.prototype.setAttribute.call(this, name, value, immediate);\n\t } // Sets properties, but does not trigger updates\n\t ;\n\n\t _proto._setAttributeWithDelayUpdate = function _setAttributeWithDelayUpdate(name, value) {\n\t if (name === 'focus' || name === 'autofocus' || name === 'autoFocus') {\n\t // autoFocus is passed by rax-textinput\n\t name = 'focus-state';\n\t }\n\n\t if (name === 'value') {\n\t this.__changed = true;\n\t }\n\n\t _Element.prototype._setAttributeWithDelayUpdate.call(this, name, value);\n\t };\n\n\t _proto.getAttribute = function getAttribute(name) {\n\t if (name === 'focus' || name === 'autofocus' || name === 'autoFocus') {\n\t // autoFocus is passed by rax-textinput\n\t name = 'focus-state';\n\t }\n\n\t return this.__attrs.get(name);\n\t };\n\n\t _proto.blur = function blur() {\n\t this.setAttribute('focus', false);\n\t };\n\n\t _proto.focus = function focus() {\n\t this.setAttribute('focus', true);\n\t };\n\n\t _createClass(HTMLTextAreaElement, [{\n\t key: \"_renderInfo\",\n\t get: function get() {\n\t return omitFalsyFields(_extends({\n\t nodeId: this.__nodeId,\n\t nodeType: 'textarea'\n\t }, this.__attrs.__value, {\n\t style: this.style.cssText,\n\t class: joinClassNames('h5-textarea', this.className)\n\t }), ['style']);\n\t } // Attribute\n\n\t }, {\n\t key: \"name\",\n\t get: function get() {\n\t return this.__attrs.get('name');\n\t },\n\t set: function set(value) {\n\t value = '' + value;\n\n\t this.__attrs.set('name', value);\n\t } // Attribute\n\n\t }, {\n\t key: \"type\",\n\t get: function get() {\n\t return this.__attrs.get('type') || 'textarea';\n\t },\n\t set: function set(value) {\n\t value = '' + value;\n\n\t this.__attrs.set('type', value);\n\t }\n\t }, {\n\t key: \"value\",\n\t get: function get() {\n\t var value = this.__attrs.get('value');\n\n\t if (!value && !this.__changed) {\n\t value = this.__attrs.get('defaultValue');\n\t }\n\n\t return value || '';\n\t },\n\t set: function set(value) {\n\t this.__changed = true;\n\t value = '' + value;\n\n\t this.__attrs.set('value', value);\n\t }\n\t }, {\n\t key: \"readOnly\",\n\t get: function get() {\n\t return !!this.__attrs.get('readOnly');\n\t },\n\t set: function set(value) {\n\t this.__attrs.set('readOnly', !!value);\n\t }\n\t }, {\n\t key: \"disabled\",\n\t get: function get() {\n\t return !!this.__attrs.get('disabled');\n\t },\n\t set: function set(value) {\n\t value = !!value;\n\n\t this.__attrs.set('disabled', value);\n\t }\n\t }, {\n\t key: \"maxlength\",\n\t get: function get() {\n\t return this.__attrs.get('maxlength');\n\t },\n\t set: function set(value) {\n\t this.__attrs.set('maxlength', value);\n\t }\n\t }, {\n\t key: \"placeholder\",\n\t get: function get() {\n\t return this.__attrs.get('placeholder') || '';\n\t },\n\t set: function set(value) {\n\t value = '' + value;\n\n\t this.__attrs.set('placeholder', value);\n\t }\n\t }, {\n\t key: \"selectionStart\",\n\t get: function get() {\n\t var value = +this.__attrs.get('selection-start');\n\t return !isUndef(value) ? value : -1;\n\t },\n\t set: function set(value) {\n\t this.__attrs.set('selection-start', value);\n\t }\n\t }, {\n\t key: \"selectionEnd\",\n\t get: function get() {\n\t var value = +this.__attrs.get('selection-end');\n\t return !isUndef(value) ? value : -1;\n\t },\n\t set: function set(value) {\n\t this.__attrs.set('selection-end', value);\n\t }\n\t }]);\n\n\t return HTMLTextAreaElement;\n\t}(Element);\n\n\tvar HTMLVideoElement = /*#__PURE__*/function (_Element) {\n\t _inheritsLoose(HTMLVideoElement, _Element);\n\n\t function HTMLVideoElement(options) {\n\t var _this;\n\n\t var width = options.width;\n\t var height = options.height;\n\t if (typeof width === 'number' && width >= 0) options.attrs.width = width;\n\t if (typeof height === 'number' && height >= 0) options.attrs.height = height;\n\t _this = _Element.call(this, options) || this;\n\n\t _this._initRect();\n\n\t return _this;\n\t }\n\n\t var _proto = HTMLVideoElement.prototype;\n\n\t _proto._initRect = function _initRect() {\n\t var width = parseInt(this.__attrs.get('width'), 10);\n\t var height = parseInt(this.__attrs.get('height'), 10);\n\t if (typeof width === 'number' && width >= 0) this.style.width = width + \"px\";\n\t if (typeof height === 'number' && height >= 0) this.style.height = height + \"px\";\n\t };\n\n\t _createClass(HTMLVideoElement, [{\n\t key: \"_renderInfo\",\n\t get: function get() {\n\t return omitFalsyFields(_extends({\n\t nodeId: this.__nodeId,\n\t nodeType: 'video'\n\t }, this.__attrs.__value, {\n\t style: this.style.cssText,\n\t class: joinClassNames('h5-video', this.className)\n\t }), ['style']);\n\t }\n\t }, {\n\t key: \"src\",\n\t get: function get() {\n\t return this.__attrs.get('src') || '';\n\t },\n\t set: function set(value) {\n\t if (!value || typeof value !== 'string') return;\n\n\t this.__attrs.set('src', value);\n\t }\n\t }, {\n\t key: \"width\",\n\t get: function get() {\n\t return +this.__attrs.get('width') || 0;\n\t },\n\t set: function set(value) {\n\t if (typeof value !== 'number' || !isFinite(value) || value < 0) return;\n\n\t this.__attrs.set('width', value);\n\n\t this._initRect();\n\t }\n\t }, {\n\t key: \"height\",\n\t get: function get() {\n\t return +this.__attrs.get('height') || 0;\n\t },\n\t set: function set(value) {\n\t if (typeof value !== 'number' || !isFinite(value) || value < 0) return;\n\n\t this.__attrs.set('height', value);\n\n\t this._initRect();\n\t }\n\t }, {\n\t key: \"autoplay\",\n\t get: function get() {\n\t return !!this.__attrs.get('autoplay');\n\t },\n\t set: function set(value) {\n\t value = !!value;\n\n\t this.__attrs.set('autoplay', value);\n\t }\n\t }, {\n\t key: \"loop\",\n\t get: function get() {\n\t return !!this.__attrs.get('loop');\n\t },\n\t set: function set(value) {\n\t value = !!value;\n\n\t this.__attrs.set('loop', value);\n\t }\n\t }, {\n\t key: \"muted\",\n\t get: function get() {\n\t return !!this.__attrs.get('muted');\n\t },\n\t set: function set(value) {\n\t value = !!value;\n\n\t this.__attrs.set('muted', value);\n\t }\n\t }, {\n\t key: \"controls\",\n\t get: function get() {\n\t var value = this.__attrs.get('controls');\n\n\t return !isUndef(value) ? !!value : true;\n\t },\n\t set: function set(value) {\n\t this.__attrs.set('controls', value);\n\t }\n\t }, {\n\t key: \"poster\",\n\t get: function get() {\n\t return this.__attrs.get('poster');\n\t },\n\t set: function set(value) {\n\t if (!value || typeof value !== 'string') return;\n\n\t this.__attrs.set('poster', value);\n\t }\n\t }, {\n\t key: \"currentTime\",\n\t get: function get() {\n\t return +this.__attrs.get('currentTime') || 0;\n\t }\n\t }, {\n\t key: \"buffered\",\n\t get: function get() {\n\t return this.__attrs.get('buffered');\n\t }\n\t }]);\n\n\t return HTMLVideoElement;\n\t}(Element);\n\n\tvar CustomComponent = /*#__PURE__*/function (_Element) {\n\t _inheritsLoose(CustomComponent, _Element);\n\n\t function CustomComponent(options) {\n\t var _this;\n\n\t _this = _Element.call(this, options) || this;\n\t _this.__nativeType = options.nativeType;\n\t return _this;\n\t }\n\n\t var _proto = CustomComponent.prototype;\n\n\t _proto._destroy = function _destroy() {\n\t _Element.prototype._destroy.call(this);\n\n\t this.__nativeType = null;\n\t };\n\n\t _createClass(CustomComponent, [{\n\t key: \"_renderInfo\",\n\t get: function get() {\n\t var _this2 = this;\n\n\t var renderInfo = omitFalsyFields(_extends({\n\t nodeId: this.__nodeId,\n\t nodeType: this.__tagName,\n\t style: this.style.cssText,\n\t class: this.className\n\t }, this.__attrs.__value), ['class', 'style']);\n\t var config = cache.getConfig();\n\t var nativeInfo = null;\n\n\t if (this.__nativeType === 'customComponent') {\n\t nativeInfo = config.usingComponents[this.__tagName];\n\t } else if (this.__nativeType === 'miniappPlugin') {\n\t nativeInfo = config.usingPlugins[this.__tagName];\n\t }\n\n\t if (nativeInfo) {\n\t // Bind methods to every element which is used recursively to generate dom tree\n\t nativeInfo.events.forEach(function (event) {\n\t var eventName = _this2.__tagName + \"_\" + event + \"_\" + getId();\n\t renderInfo[event] = eventName;\n\t cache.setCustomComponentMethods(eventName, function () {\n\t for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\n\t return _this2._trigger(event, {\n\t args: args\n\t });\n\t });\n\t });\n\t }\n\n\t return renderInfo;\n\t }\n\t }]);\n\n\t return CustomComponent;\n\t}(Element);\n\n\tvar Performance = /*#__PURE__*/function () {\n\t function Performance() {\n\t this.recorder = new Map();\n\t }\n\n\t var _proto = Performance.prototype;\n\n\t _proto.start = function start(id) {\n\t var _cache$getConfig = cache.getConfig(),\n\t debug = _cache$getConfig.debug;\n\n\t if (!debug) {\n\t return;\n\t }\n\n\t this.recorder.set(id, Date.now());\n\t };\n\n\t _proto.stop = function stop(id) {\n\t var _cache$getConfig2 = cache.getConfig(),\n\t debug = _cache$getConfig2.debug;\n\n\t if (!debug) {\n\t return;\n\t }\n\n\t var now = Date.now();\n\t var prev = this.recorder.get(id);\n\n\t if (!prev) {\n\t console.warn(id + \" hasn't invoke start method, please check your code!\");\n\t return;\n\t }\n\n\t var time = now - prev;\n\t console.log(id + \" Take: \" + time + \"ms\");\n\t };\n\n\t return Performance;\n\t}();\n\n\tvar perf = new Performance();\n\n\tvar RootElement = /*#__PURE__*/function (_Element) {\n\t _inheritsLoose(RootElement, _Element);\n\n\t function RootElement(options) {\n\t var _this;\n\n\t _this = _Element.call(this, options) || this;\n\t _this.__nodeId = options.nodeId;\n\t _this.__allowRender = true;\n\t _this.__renderStacks = [];\n\t _this.__renderCallbacks = [];\n\t return _this;\n\t }\n\n\t var _proto = RootElement.prototype;\n\n\t _proto._destroy = function _destroy() {\n\t _Element.prototype._destroy.call(this);\n\n\t this.__allowRender = null;\n\t this.__renderStacks = null;\n\t };\n\n\t _proto._enqueueRender = function _enqueueRender(payload) {\n\t var _this2 = this;\n\n\t clearTimeout(this.__timer);\n\t this.__timer = setTimeout(function () {\n\t _this2._executeRender();\n\t }, 0);\n\n\t this.__renderStacks.push(payload);\n\t };\n\n\t _proto._executeRender = function _executeRender() {\n\t var _this3 = this;\n\n\t if (!this.__allowRender) {\n\t return;\n\t }\n\n\t {\n\t perf.start('setData');\n\t } // type 1: { path, start, deleteCount, item? } => need to simplify item\n\t // type 2: { path, value }\n\n\n\t var internal = cache.getDocument(this.__pageId)._internal;\n\n\t var _cache$getConfig = cache.getConfig(),\n\t mainPackageName = _cache$getConfig.mainPackageName;\n\n\t var window = cache.getWindow(mainPackageName);\n\n\t if (internal.$batchedUpdates) {\n\t var callback; // there is no need to aggregate arrays if $batchedUpdate and $spliceData exist\n\n\t internal.$batchedUpdates(function () {\n\t _this3.__renderStacks.forEach(function (task, index) {\n\t if (index === _this3.__renderStacks.length - 1) {\n\t callback = function callback() {\n\t window._trigger('setDataFinished');\n\n\t {\n\t perf.stop('setData');\n\t }\n\n\t var fn;\n\n\t while (fn = _this3.__renderCallbacks.pop()) {\n\t fn();\n\t }\n\t };\n\n\t internal.firstRenderCallback();\n\t }\n\n\t if (task.type === 'children') {\n\t var _internal$$spliceData;\n\n\t var spliceArgs = [task.start, task.deleteCount];\n\t internal.$spliceData((_internal$$spliceData = {}, _internal$$spliceData[task.path] = task.item ? spliceArgs.concat(task.item) : spliceArgs, _internal$$spliceData), callback);\n\t } else {\n\t var _internal$setData;\n\n\t internal.setData((_internal$setData = {}, _internal$setData[task.path] = task.value, _internal$setData), callback);\n\t }\n\t });\n\t });\n\t } else {\n\t (function () {\n\t var renderObject = Object.create(null);\n\t var childrenValuePaths = [];\n\n\t _this3.__renderStacks.forEach(function (task) {\n\t var path = task.path;\n\n\t if (task.type === 'children') {\n\t childrenValuePaths.push(path);\n\t }\n\n\t renderObject[path] = task.value;\n\t });\n\n\t var _loop = function _loop(path) {\n\t // If the whole father children path is set, then its children path can be deleted\n\t childrenValuePaths.forEach(function (cp) {\n\t if (path.includes(cp) && cp !== path) {\n\t delete renderObject[path];\n\t }\n\t });\n\t var value = renderObject[path];\n\n\t if (isFunction(value)) {\n\t renderObject[path] = value();\n\t }\n\t };\n\n\t for (var path in renderObject) {\n\t _loop(path);\n\t }\n\n\t internal.firstRenderCallback(renderObject);\n\t internal.setData(renderObject, function () {\n\t window._trigger('setDataFinished');\n\n\t var fn;\n\n\t while (fn = _this3.__renderCallbacks.pop()) {\n\t fn();\n\t }\n\n\t {\n\t perf.stop('setData');\n\t }\n\t });\n\t })();\n\t }\n\n\t this.__renderStacks = [];\n\t };\n\n\t _createClass(RootElement, [{\n\t key: \"_path\",\n\t get: function get() {\n\t return 'root';\n\t }\n\t }, {\n\t key: \"_root\",\n\t get: function get() {\n\t return this;\n\t }\n\t }]);\n\n\t return RootElement;\n\t}(Element);\n\n\tvar CONSTRUCTOR_MAP = new Map([['img', Image], ['input', HTMLInputElement], ['textarea', HTMLTextAreaElement], ['video', HTMLVideoElement]]);\n\n\tvar Document = /*#__PURE__*/function (_EventTarget) {\n\t _inheritsLoose(Document, _EventTarget);\n\n\t function Document(pageId) {\n\t var _this;\n\n\t _this = _EventTarget.call(this) || this;\n\n\t var _cache$getConfig = cache.getConfig(),\n\t _cache$getConfig$usin = _cache$getConfig.usingComponents,\n\t usingComponents = _cache$getConfig$usin === void 0 ? {} : _cache$getConfig$usin,\n\t _cache$getConfig$usin2 = _cache$getConfig.usingPlugins,\n\t usingPlugins = _cache$getConfig$usin2 === void 0 ? {} : _cache$getConfig$usin2;\n\n\t _this.usingComponents = usingComponents;\n\t _this.usingPlugins = usingPlugins;\n\t _this.__idMap = new Map();\n\t _this.__pageId = pageId;\n\t var bodyNodeId = BODY_NODE_ID + \"-\" + pageId;\n\t _this.__root = new RootElement({\n\t nodeId: bodyNodeId,\n\t type: 'element',\n\t tagName: 'body',\n\t attrs: {},\n\t children: [],\n\t document: _assertThisInitialized(_this)\n\t });\n\t cache.setNode(bodyNodeId, _this.__root); // update body's parentNode\n\n\t _this.__root.parentNode = _assertThisInitialized(_this);\n\t return _this;\n\t } // Event trigger\n\n\n\t var _proto = Document.prototype;\n\n\t _proto._trigger = function _trigger(eventName, options) {\n\t return this.documentElement._trigger(eventName, options);\n\t };\n\n\t _proto._isRendered = function _isRendered() {\n\t return true;\n\t };\n\n\t _proto._createElement = function _createElement(options) {\n\t var ConstructorClass = CONSTRUCTOR_MAP.get(options.tagName);\n\n\t if (ConstructorClass) {\n\t return new ConstructorClass(options);\n\t }\n\n\t options.attrs = options.attrs || {};\n\n\t if (options.attrs.__native) {\n\t if (this.usingComponents[options.tagName]) {\n\t // Transform to custom-component\n\t options.nativeType = 'customComponent';\n\t return new CustomComponent(options);\n\t } else if (this.usingPlugins[options.tagName]) {\n\t options.nativeType = 'miniappPlugin';\n\t return new CustomComponent(options);\n\t }\n\t } else {\n\t return new Element(options);\n\t }\n\t };\n\n\t _proto._switchPageId = function _switchPageId(pageId) {\n\t this.__pageId = pageId;\n\t var rootNodeId = BODY_NODE_ID + \"-\" + pageId;\n\t cache.setNode(rootNodeId, this.__root);\n\t } // Node type\n\t ;\n\n\t _proto.getElementById = function getElementById(id) {\n\t if (typeof id !== 'string') return;\n\n\t var element = this.__idMap.get(id);\n\n\t if (element && element._isRendered()) {\n\t return element;\n\t }\n\n\t return null;\n\t };\n\n\t _proto.getElementsByTagName = function getElementsByTagName(tagName) {\n\t var _this2 = this;\n\n\t if (typeof tagName !== 'string') return [];\n\t var elements = [];\n\t cache.getAllNodes().forEach(function (element) {\n\t if (element && element.__tagName === tagName && element._isRendered() && element.__pageId === _this2.__pageId) {\n\t elements.push(element);\n\t }\n\t });\n\t return elements;\n\t };\n\n\t _proto.getElementsByClassName = function getElementsByClassName(className) {\n\t var _this3 = this;\n\n\t if (typeof className !== 'string') return [];\n\t var elements = [];\n\t cache.getAllNodes().forEach(function (element) {\n\t var classNames = className.trim().split(/\\s+/);\n\n\t if (element && element._isRendered() && element.__pageId === _this3.__pageId && classNames.every(function (c) {\n\t return element.classList && element.classList.contains(c);\n\t })) {\n\t elements.push(element);\n\t }\n\t });\n\t return elements;\n\t };\n\n\t _proto.querySelector = function querySelector(selector) {\n\t if (typeof selector !== 'string') return;\n\n\t if (selector[0] === '.') {\n\t var elements = this.getElementsByClassName(selector.slice(1));\n\t return elements.length > 0 ? elements[0] : null;\n\t } else if (selector[0] === '#') {\n\t return this.getElementById(selector.slice(1));\n\t } else if (/^[a-zA-Z]/.test(selector)) {\n\t var _elements = this.getElementsByTagName(selector);\n\n\t return _elements.length > 0 ? _elements[0] : null;\n\t }\n\n\t return null;\n\t };\n\n\t _proto.querySelectorAll = function querySelectorAll(selector) {\n\t if (typeof selector !== 'string') return [];\n\n\t if (selector[0] === '.') {\n\t return this.getElementsByClassName(selector.slice(1));\n\t } else if (selector[0] === '#') {\n\t var element = this.getElementById(selector.slice(1));\n\t return element ? [element] : [];\n\t } else if (/^[a-zA-Z]/.test(selector)) {\n\t return this.getElementsByTagName(selector);\n\t }\n\n\t return null;\n\t };\n\n\t _proto.createElement = function createElement(tagName) {\n\t return this._createElement({\n\t document: this,\n\t tagName: tagName\n\t });\n\t };\n\n\t _proto.createElementNS = function createElementNS(ns, tagName) {\n\t // Actually use createElement\n\t return this.createElement(tagName);\n\t };\n\n\t _proto.createTextNode = function createTextNode(content) {\n\t content = '' + content;\n\t return new TextNode({\n\t content: content,\n\t document: this\n\t });\n\t };\n\n\t _proto.createComment = function createComment(data) {\n\t return new Comment({\n\t document: this,\n\t data: data\n\t });\n\t };\n\n\t _proto.createDocumentFragment = function createDocumentFragment() {\n\t return new Element({\n\t tagName: 'documentfragment',\n\t nodeType: Node.DOCUMENT_FRAGMENT_NODE,\n\t document: this\n\t });\n\t };\n\n\t _proto.createEvent = function createEvent() {\n\t var _cache$getConfig2 = cache.getConfig(),\n\t mainPackageName = _cache$getConfig2.mainPackageName;\n\n\t var window = cache.getWindow(mainPackageName);\n\t return new window.CustomEvent();\n\t };\n\n\t _proto.addEventListener = function addEventListener(eventName, handler, options) {\n\t this.documentElement.addEventListener(eventName, handler, options);\n\t };\n\n\t _proto.removeEventListener = function removeEventListener(eventName, handler, isCapture) {\n\t this.documentElement.removeEventListener(eventName, handler, isCapture);\n\t };\n\n\t _proto.dispatchEvent = function dispatchEvent(evt) {\n\t this.documentElement.dispatchEvent(evt);\n\t };\n\n\t _createClass(Document, [{\n\t key: \"nodeType\",\n\t get: function get() {\n\t return Node.DOCUMENT_NODE;\n\t }\n\t }, {\n\t key: \"documentElement\",\n\t get: function get() {\n\t return this.body;\n\t }\n\t }, {\n\t key: \"body\",\n\t get: function get() {\n\t return this.__root;\n\t }\n\t }, {\n\t key: \"nodeName\",\n\t get: function get() {\n\t return '#document';\n\t }\n\t }, {\n\t key: \"defaultView\",\n\t get: function get() {\n\t var _cache$getConfig3 = cache.getConfig(),\n\t mainPackageName = _cache$getConfig3.mainPackageName;\n\n\t return cache.getWindow(mainPackageName) || null;\n\t }\n\t }]);\n\n\t return Document;\n\t}(EventTarget);\n\n\tfunction createDocument(pageId) {\n\t var document = new Document(pageId);\n\t cache.init(pageId, document);\n\t return document;\n\t}\n\n\tvar _excluded = [\"onLaunch\", \"onShow\", \"onHide\", \"onError\", \"onPageNotFound\"];\n\tfunction createAppConfig (init, config, packageName, nativeAppConfig) {\n\t if (packageName === void 0) {\n\t packageName = '';\n\t }\n\n\t if (nativeAppConfig === void 0) {\n\t nativeAppConfig = {};\n\t }\n\n\t cache.setConfig(_extends({}, config, {\n\t mainPackageName: packageName\n\t }));\n\n\t var _nativeAppConfig = nativeAppConfig,\n\t _onLaunch = _nativeAppConfig.onLaunch,\n\t _onShow = _nativeAppConfig.onShow,\n\t _onHide = _nativeAppConfig.onHide,\n\t _onError = _nativeAppConfig.onError,\n\t _onPageNotFound = _nativeAppConfig.onPageNotFound,\n\t rest = _objectWithoutPropertiesLoose(_nativeAppConfig, _excluded);\n\n\t var appConfig = _extends({\n\t onLaunch: function onLaunch(options) {\n\t _onLaunch && _onLaunch.call(this, options);\n\t var window = createWindow();\n\t cache.setWindow(packageName, window); // `getCurrentPages()` can get the first page in app onLaunch in the following situation:\n\t // 1. In alibaba miniapp\n\t // 2. The first page is not from plugin\n\t // eslint-disable-next-line no-undef\n\n\t var currentPageId = getCurrentPages()[0] ? getCurrentPages()[0].route + \"-1\" : INDEX_PAGE;\n\t var currentDocument = createDocument(currentPageId);\n\t this.__pageId = window.__pageId = currentPageId;\n\t init(window, currentDocument, this);\n\n\t window._trigger('launch', {\n\t event: {\n\t options: options,\n\t context: this\n\t }\n\t });\n\n\t this.window = window;\n\t },\n\t onShow: function onShow(options) {\n\t _onShow && _onShow.call(this, options);\n\t this.window && this.window._trigger('appshow', {\n\t event: {\n\t options: options,\n\t context: this\n\t }\n\t });\n\t },\n\t onHide: function onHide() {\n\t _onHide && _onHide.call(this);\n\n\t if (this.window) {\n\t this.window._trigger('apphide', {\n\t event: {\n\t context: this\n\t }\n\t });\n\t }\n\t },\n\t onError: function onError(err) {\n\t _onError && _onError.call(this, err);\n\n\t if (this.window) {\n\t // eslint-disable-next-line no-undef\n\t var pages = getCurrentPages() || [];\n\t var currentPage = pages[pages.length - 1];\n\n\t if (currentPage && currentPage.window) {\n\t currentPage.window._trigger('error', {\n\t event: err\n\t });\n\t }\n\n\t this.window._trigger('apperror', {\n\t event: {\n\t context: this,\n\t error: err\n\t }\n\t });\n\t }\n\t },\n\t onPageNotFound: function onPageNotFound(options) {\n\t _onPageNotFound && _onPageNotFound.call(this, options);\n\n\t if (this.window) {\n\t this.window._trigger('pagenotfound', {\n\t event: {\n\t options: options,\n\t context: this\n\t }\n\t });\n\t }\n\t },\n\t // document modify callback for override context's document\n\t __documentModifyCallbacks: [],\n\t _dispatchDocumentModify: function _dispatchDocumentModify(val) {\n\t // dispatch document modify when page toggle\n\t this.__documentModifyCallbacks.forEach(function (cb) {\n\t cb(val);\n\t });\n\t }\n\t }, rest);\n\n\t {\n\t appConfig.onShareAppMessage = function (options) {\n\t if (this.window) {\n\t var shareInfo = {};\n\n\t this.window._trigger('appshare', {\n\t event: {\n\t options: options,\n\t shareInfo: shareInfo\n\t }\n\t });\n\n\t return shareInfo.content;\n\t }\n\t };\n\t }\n\n\t return appConfig;\n\t}\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\n\tfunction createLifeCycleCallback(lifeCycle) {\n\t if (NATIVE_EVENTS_WITH_RETURN_INFO.includes(lifeCycle)) {\n\t return function (options) {\n\t if (this.document) {\n\t var shareInfo = {};\n\n\t var returnedShareInfo = this.document._trigger(lifeCycle, {\n\t event: {\n\t options: options,\n\t shareInfo: shareInfo\n\t }\n\t });\n\n\t return returnedShareInfo || shareInfo.content;\n\t }\n\t };\n\t }\n\n\t return function (event) {\n\t if (this.document) {\n\t this.document._trigger(lifeCycle, {\n\t event: event\n\t });\n\t }\n\t };\n\t}\n\n\tfunction injectLifeCycle (lifeCycles, config) {\n\t lifeCycles.forEach(function (lifeCycle) {\n\t if (!['onLoad', 'onShow', 'onHide', 'onUnload'].includes(lifeCycle)) {\n\t if ( NATIVE_EVENTS_LIST.includes(lifeCycle)) {\n\t if (!config.events) {\n\t config.events = {};\n\t } // Define special lifecycle in config's events\n\n\n\t config.events[lifeCycle] = createLifeCycleCallback(lifeCycle);\n\t } else {\n\t config[lifeCycle] = createLifeCycleCallback(lifeCycle);\n\t }\n\t }\n\t });\n\t}\n\n\tfunction getDomNodeFromEvt (evt) {\n\t if (!evt) return;\n\t var target = evt.currentTarget;\n\t return cache.getNode(target && target.dataset.privateNodeId);\n\t}\n\n\t// Events which should bubble\n\tvar baseEvents = [{\n\t name: 'onTap',\n\t eventName: 'click',\n\t extra: {\n\t button: 0\n\t }\n\t}, {\n\t name: 'onLongTap',\n\t eventName: 'longtap'\n\t}, {\n\t name: 'onTouchStart',\n\t eventName: 'touchstart'\n\t}, {\n\t name: 'onTouchMove',\n\t eventName: 'touchmove'\n\t}, {\n\t name: 'onTouchEnd',\n\t eventName: 'touchend'\n\t}, {\n\t name: 'onTouchCancel',\n\t eventName: 'touchcancel'\n\t}];\n\n\tvar coverImage = {\n\t name: 'cover-image',\n\t singleEvents: [{\n\t name: 'onCoverImageLoad',\n\t eventName: 'load'\n\t }, {\n\t name: 'onCoverImageError',\n\t eventName: 'error'\n\t }]\n\t};\n\n\tvar coverView = {\n\t name: 'cover-view'\n\t};\n\n\tvar movableArea = {\n\t name: 'movable-area'\n\t};\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tvar ScrollView = {\n\t name: 'scroll-view',\n\t singleEvents: [{\n\t name: 'onScrollViewScrollToUpper',\n\t eventName: 'scrolltoupper'\n\t }, {\n\t name: 'onScrollViewScrollToLower',\n\t eventName: 'scrolltolower'\n\t }],\n\t functionalSingleEvents: [{\n\t name: 'onScrollViewScroll',\n\t eventName: 'scroll',\n\t middleware: function middleware(evt, domNode) {\n\t domNode._setAttributeWithoutUpdate('scroll-into-view', '');\n\n\t domNode._setAttributeWithoutUpdate('scroll-top', evt.detail.scrollTop);\n\n\t domNode._setAttributeWithoutUpdate('scroll-left', evt.detail.scrollLeft);\n\t }\n\t }]\n\t};\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tvar swiper = {\n\t name: 'swiper',\n\t singleEvents: [{\n\t name: 'onSwiperTransition',\n\t eventName: 'transition'\n\t }],\n\t functionalSingleEvents: [{\n\t name: 'onSwiperChange',\n\t eventName: 'change',\n\t middleware: function middleware(evt, domNode) {\n\t domNode._setAttributeWithDelayUpdate('current', evt.detail.current);\n\t }\n\t }]\n\t};\n\n\t{\n\t swiper.singleEvents.push({\n\t name: 'onSwiperAnimationEnd',\n\t eventName: 'animationEnd'\n\t });\n\t}\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tvar view = {\n\t name: 'view'\n\t};\n\n\t{\n\t view.simpleEvents = [{\n\t name: 'onViewAppear',\n\t eventName: 'appear'\n\t }, {\n\t name: 'onViewFirstAppear',\n\t eventName: 'firstappear'\n\t }, {\n\t name: 'onViewDisappear',\n\t eventName: 'disappear'\n\t }, {\n\t name: 'onViewTransitionEnd',\n\t eventName: 'transitionend'\n\t }, {\n\t name: 'onViewAnimationIteration',\n\t eventName: 'animationiteration'\n\t }, {\n\t name: 'onViewAnimationStart',\n\t eventName: 'animationstart'\n\t }, {\n\t name: 'onViewAnimationEnd',\n\t eventName: 'animationend'\n\t }];\n\t}\n\n\tvar icon = {\n\t name: 'icon'\n\t};\n\n\tvar progress = {\n\t name: 'progress',\n\t singleEvents: [{\n\t name: 'onProgressActiveEnd',\n\t eventName: 'activeend'\n\t }]\n\t};\n\n\tvar text = {\n\t name: 'text'\n\t};\n\n\tvar richText = {\n\t name: 'rich-text'\n\t};\n\n\tvar button = {\n\t name: 'button',\n\t singleEvents: [{\n\t name: 'onButtonGetUserInfo',\n\t eventName: 'getuserinfo'\n\t }, {\n\t name: 'onButtonContact',\n\t eventName: 'contact'\n\t }, {\n\t name: 'onButtonGetPhoneNumber',\n\t eventName: 'getphonenumber'\n\t }, {\n\t name: 'onButtonError',\n\t eventName: 'error'\n\t }, {\n\t name: 'onButtonOpenSetting',\n\t eventName: 'opensetting'\n\t }, {\n\t name: 'onButtonLaunchApp',\n\t eventName: 'launchapp'\n\t }, {\n\t name: 'onButtonGetAuthorize',\n\t eventName: 'getauthorize'\n\t }]\n\t};\n\n\tvar editor = {\n\t name: 'editor',\n\t singleEvents: [{\n\t name: 'onEditorReady',\n\t eventName: 'ready'\n\t }, {\n\t name: 'onEditorFocus',\n\t eventName: 'focus'\n\t }, {\n\t name: 'onEditorBlur',\n\t eventName: 'blur'\n\t }, {\n\t name: 'onEditorInput',\n\t eventName: 'input'\n\t }, {\n\t name: 'onEditorStatusChange',\n\t eventName: 'statuschange'\n\t }]\n\t};\n\n\tvar form = {\n\t name: 'form',\n\t singleEvents: [{\n\t name: 'onFormSubmit',\n\t eventName: 'submit'\n\t }, {\n\t name: 'onFormReset',\n\t eventName: 'reset'\n\t }]\n\t};\n\n\tvar label = {\n\t name: 'label'\n\t};\n\n\tvar input = {\n\t name: 'input',\n\t simpleEvents: [{\n\t name: 'onInputConfirm',\n\t eventName: 'confirm'\n\t }],\n\t singleEvents: [{\n\t name: 'onInputKeyBoardHeightChange',\n\t eventName: 'keyboardheightchange'\n\t }],\n\t complexEvents: [{\n\t name: 'onInputInput',\n\t eventName: 'input',\n\t middleware: function middleware(evt, domNode, nodeId) {\n\t var value = '' + evt.detail.value;\n\n\t domNode._setAttributeWithDelayUpdate('value', value);\n\n\t this.callEvent('input', evt, null, nodeId);\n\t }\n\t }, {\n\t name: 'onInputFocus',\n\t eventName: 'focus',\n\t middleware: function middleware(evt, domNode, nodeId) {\n\t domNode.__inputOldValue = domNode.value || '';\n\n\t domNode._setAttributeWithDelayUpdate('focus-state', true);\n\n\t this.callSimpleEvent('focus', evt, domNode);\n\t }\n\t }, {\n\t name: 'onInputBlur',\n\t eventName: 'blur',\n\t middleware: function middleware(evt, domNode, nodeId) {\n\t domNode._setAttributeWithDelayUpdate('focus-state', false);\n\n\t if (!isUndef(domNode.__inputOldValue) && domNode.value !== domNode.__inputOldValue) {\n\t domNode.__inputOldValue = undefined;\n\t this.callEvent('change', evt, null, nodeId);\n\t }\n\n\t this.callSimpleEvent('blur', evt, domNode);\n\t }\n\t }]\n\t};\n\n\tvar radioGroup = {\n\t name: 'radio-group',\n\t singleEvents: [{\n\t name: 'onRadioChange',\n\t eventName: 'change'\n\t }]\n\t};\n\n\tvar radio = {\n\t name: 'radio',\n\t singleEvents: [{\n\t name: 'onRadioChange',\n\t eventName: 'change'\n\t }]\n\t};\n\n\tvar checkboxGroup = {\n\t name: 'checkbox-group',\n\t singleEvents: [{\n\t name: 'onCheckboxChange',\n\t eventName: 'change'\n\t }]\n\t};\n\n\tvar checkbox = {\n\t name: 'checkbox',\n\t singleEvents: [{\n\t name: 'onCheckboxItemChange',\n\t eventName: 'change'\n\t }]\n\t};\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tvar picker = {\n\t name: 'picker',\n\t singleEvents: [{\n\t name: 'onPickerCancel',\n\t eventName: 'cancel'\n\t }],\n\t functionalSingleEvents: [{\n\t name: 'onPickerChange',\n\t eventName: 'change',\n\t middleware: function middleware(evt, domNode) {\n\t domNode._setAttributeWithDelayUpdate('value', evt.detail.value);\n\t }\n\t }]\n\t};\n\n\tvar pickerView = {\n\t name: 'picker-view',\n\t singleEvents: [{\n\t name: 'onPickerViewPickstart',\n\t eventName: 'pickstart'\n\t }, {\n\t name: 'onPickerViewPickend',\n\t eventName: 'pickend'\n\t }],\n\t functionalSingleEvents: [{\n\t name: 'onPickerViewChange',\n\t eventName: 'change',\n\t middleware: function middleware(evt, domNode) {\n\t domNode._setAttributeWithDelayUpdate('value', evt.detail.value);\n\t }\n\t }]\n\t};\n\n\tvar slider = {\n\t name: 'slider',\n\t singleEvents: [{\n\t name: 'onSliderChanging',\n\t eventName: 'changing'\n\t }],\n\t functionalSingleEvents: [{\n\t name: 'onSliderChange',\n\t eventName: 'change',\n\t middleware: function middleware(evt, domNode) {\n\t domNode._setAttributeWithDelayUpdate('value', evt.detail.value);\n\n\t domNode.__oldValues = domNode.__oldValues || {};\n\t domNode.__oldValues.value = evt.detail.value;\n\t }\n\t }]\n\t};\n\n\tvar switchCom = {\n\t name: 'switch',\n\t functionalSingleEvents: [{\n\t name: 'onSwitchChange',\n\t eventName: 'change',\n\t middleware: function middleware(evt, domNode) {\n\t domNode._setAttributeWithDelayUpdate('checked', evt.detail.value);\n\t }\n\t }]\n\t};\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tvar textarea = {\n\t name: 'textarea',\n\t singleEvents: [{\n\t name: 'onTextareaKeyboardHeightChange',\n\t eventName: 'keyboardheightchange'\n\t }],\n\t simpleEvents: [{\n\t name: 'onTextareaConfirm',\n\t eventName: 'confirm'\n\t }],\n\t complexEvents: [{\n\t name: 'onTextareaFocus',\n\t eventName: 'input',\n\t middleware: function middleware(evt, domNode, nodeId) {\n\t domNode.__textareaOldValue = domNode.value || '';\n\n\t domNode._setAttributeWithDelayUpdate('focus-state', true);\n\n\t this.callSimpleEvent('focus', evt, domNode);\n\t }\n\t }, {\n\t name: 'onTextareaBlur',\n\t eventName: 'blur',\n\t middleware: function middleware(evt, domNode, nodeId) {\n\t domNode._setAttributeWithDelayUpdate('focus-state', false);\n\n\t if (!isUndef(domNode.__textareaOldValue) && domNode.value !== domNode.__textareaOldValue) {\n\t domNode.__textareaOldValue = undefined;\n\t this.callEvent('change', evt, null, nodeId);\n\t }\n\n\t this.callSimpleEvent('blur', evt, domNode);\n\t }\n\t }, {\n\t name: 'onTextareaInput',\n\t eventName: 'input',\n\t middleware: function middleware(evt, domNode, nodeId) {\n\t var value = '' + evt.detail.value;\n\n\t domNode._setAttributeWithDelayUpdate('value', value);\n\n\t this.callEvent('input', evt, null, nodeId);\n\t }\n\t }]\n\t};\n\n\tvar navigator = {\n\t name: 'navigator',\n\t singleEvents: [{\n\t name: 'onNavigatorSuccess',\n\t eventName: 'success'\n\t }, {\n\t name: 'onNavigatorFail',\n\t eventName: 'fail'\n\t }, {\n\t name: 'onNavigatorComplete',\n\t eventName: 'complete'\n\t }]\n\t};\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tvar camera = {\n\t name: 'camera',\n\t singleEvents: [{\n\t name: 'onCameraStop',\n\t eventName: 'stop'\n\t }, {\n\t name: 'onCameraError',\n\t eventName: 'error'\n\t }, {\n\t name: 'onCameraScanCode',\n\t eventName: 'scancode'\n\t }]\n\t};\n\n\tvar image = {\n\t name: 'image',\n\t singleEvents: [{\n\t name: 'onImageLoad',\n\t eventName: 'load'\n\t }, {\n\t name: 'onImageError',\n\t eventName: 'error'\n\t }]\n\t};\n\n\tvar video = {\n\t name: 'video',\n\t singleEvents: [{\n\t name: 'onVideoPlay',\n\t eventName: 'play'\n\t }, {\n\t name: 'onVideoPause',\n\t eventName: 'pause'\n\t }, {\n\t name: 'onVideoEnded',\n\t eventName: 'ended'\n\t }, {\n\t name: 'onVideoFullScreenChange',\n\t eventName: 'fullscreenchange'\n\t }, {\n\t name: 'onVideoWaiting',\n\t eventName: 'waiting'\n\t }, {\n\t name: 'onVideoError',\n\t eventName: 'error'\n\t }],\n\t functionalSingleEvents: [{\n\t name: 'onVideoTimeUpdate',\n\t eventName: 'timeupdate',\n\t middleware: function middleware(evt, domNode) {\n\t domNode._setAttributeWithDelayUpdate('currentTime', evt.detail.currentTime);\n\t }\n\t }, {\n\t name: 'onVideoProgress',\n\t eventName: 'progress',\n\t middleware: function middleware(evt, domNode) {\n\t domNode._setAttributeWithDelayUpdate('buffered', evt.detail.buffered);\n\t }\n\t }]\n\t};\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tvar map = {\n\t name: 'map',\n\t singleEvents: [{\n\t name: 'onMapTap',\n\t eventName: 'tap'\n\t }, {\n\t name: 'onMapUpdated',\n\t eventName: 'updated'\n\t }, {\n\t name: 'onMapPoiTap',\n\t eventName: 'poitap'\n\t }],\n\t functionalSingleEvents: [{\n\t name: 'onMapRegionChange',\n\t eventName: 'regionchange',\n\t middleware: function middleware(evt, domNode) {\n\t {\n\t evt.detail = {\n\t type: evt.detail,\n\t latitude: evt.latitude,\n\t longitude: evt.longitude,\n\t scale: evt.scale,\n\t skew: evt.skew,\n\t rotate: evt.rotate,\n\t causedBy: evt.causedBy\n\t };\n\t }\n\t }\n\t }, {\n\t name: 'onMapMarkerTap',\n\t eventName: 'markertap',\n\t middleware: function middleware(evt, domNode) {\n\t {\n\t evt.detail = {\n\t markerId: evt.markerId,\n\t latitude: evt.latitude,\n\t longitude: evt.longitude\n\t };\n\t }\n\t }\n\t }, {\n\t name: 'onMapControlTap',\n\t eventName: 'controltap',\n\t middleware: function middleware(evt, domNode) {\n\t {\n\t evt.detail = {\n\t controlId: evt.controlId\n\t };\n\t }\n\t }\n\t }, {\n\t name: 'onMapCalloutTap',\n\t eventName: 'callouttap',\n\t middleware: function middleware(evt, domNode) {\n\t {\n\t evt.detail = {\n\t markerId: evt.markerId,\n\t latitude: evt.latitude,\n\t longitude: evt.longitude\n\t };\n\t }\n\t }\n\t }, {\n\t name: 'onMapPanelTap',\n\t eventName: 'paneltap',\n\t middleware: function middleware(evt, domNode) {\n\t {\n\t evt.detail = {\n\t panelId: evt.panelId,\n\t layoutId: evt.layoutId\n\t };\n\t }\n\t }\n\t }]\n\t};\n\n\tvar canvas = {\n\t name: 'canvas',\n\t singleEvents: [{\n\t name: 'onCanvasTouchStart',\n\t eventName: 'touchstart'\n\t }, {\n\t name: 'onCanvasTouchMove',\n\t eventName: 'touchmove'\n\t }, {\n\t name: 'onCanvasTouchEnd',\n\t eventName: 'touchend'\n\t }, {\n\t name: 'onCanvasTouchCancel',\n\t eventName: 'touchcancel'\n\t }, {\n\t name: 'onCanvasLongTap',\n\t eventName: 'longtap'\n\t }, {\n\t name: 'onCanvasError',\n\t eventName: 'error'\n\t }]\n\t};\n\n\tvar webView = {\n\t name: 'web-view',\n\t singleEvents: [{\n\t name: 'onWebViewMessage',\n\t eventName: 'message'\n\t }, {\n\t name: 'onWebViewLoad',\n\t eventName: 'load'\n\t }, {\n\t name: 'onWebViewError',\n\t eventName: 'error'\n\t }]\n\t};\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tvar livePlayer = {\n\t name: 'live-player',\n\t singleEvents: [{\n\t name: 'onLivePlayerStateChange',\n\t eventName: 'statechange'\n\t }, {\n\t name: 'onLivePlayerFullScreenChange',\n\t eventName: 'fullscreenchange'\n\t }]\n\t};\n\n\t{\n\t livePlayer.singleEvents = livePlayer.singleEvents.concat([{\n\t name: 'onLivePlayerError',\n\t eventName: 'error'\n\t }, {\n\t name: 'onLiverPlayerUserAction',\n\t eventName: 'useraction'\n\t }]);\n\t}\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tvar livePusher = {\n\t name: 'live-pusher',\n\t singleEvents: [{\n\t name: 'onLivePusherStateChange',\n\t eventName: 'statechange'\n\t }, {\n\t name: 'onLivePusherError',\n\t eventName: 'error'\n\t }, {\n\t name: 'onLivePusherNetStatus',\n\t eventName: 'netstatus'\n\t }]\n\t};\n\n\tvar officialAccount = {\n\t name: 'official-account',\n\t singleEvents: [{\n\t name: 'onOfficialAccountLoad',\n\t eventName: 'load'\n\t }, {\n\t name: 'onOfficialAccountError',\n\t eventName: 'error'\n\t }]\n\t};\n\n\tvar contactButton = {\n\t name: 'contact-button'\n\t};\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tvar movableView = {\n\t name: 'movable-view',\n\t singleEvents: [{\n\t name: 'onMovableViewHtouchmove',\n\t eventName: 'htouchmove'\n\t }, {\n\t name: 'onMovableViewVtouchmove',\n\t eventName: 'vtouchmove'\n\t }],\n\t functionalSingleEvents: [{\n\t name: 'onMovableViewChange',\n\t eventName: 'change',\n\t middleware: function middleware(evt, domNode) {\n\t domNode._setAttributeWithDelayUpdate('x', evt.detail.x);\n\n\t domNode._setAttributeWithDelayUpdate('y', evt.detail.y);\n\t }\n\t }, {\n\t name: 'onMovableViewScale',\n\t eventName: 'scale',\n\t middleware: function middleware(evt, domNode) {\n\t domNode._setAttributeWithDelayUpdate('x', evt.detail.x);\n\n\t domNode._setAttributeWithDelayUpdate('y', evt.detail.y);\n\n\t domNode._setAttributeWithDelayUpdate('scale-value', evt.detail.scale);\n\t }\n\t }]\n\t};\n\n\t{\n\t movableView.functionalSingleEvents.push({\n\t name: 'onMovableViewChangeEnd',\n\t eventName: 'changeend',\n\t middleware: function middleware(evt, domNode) {\n\t domNode._setAttributeWithDelayUpdate('x', evt.detail.x);\n\n\t domNode._setAttributeWithDelayUpdate('y', evt.detail.y);\n\t }\n\t });\n\t}\n\n\tvar swiperItem = {\n\t name: 'swiper-item'\n\t};\n\n\tvar pickerViewColumn = {\n\t name: 'picker-view-column'\n\t};\n\n\t// Components\n\tvar components = [coverImage, coverView, movableArea, ScrollView, swiper, view, icon, progress, text, richText, button, editor, form, label, input, radioGroup, radio, checkboxGroup, checkbox, picker, pickerView, slider, switchCom, textarea, navigator, camera, image, video, map, canvas, webView, livePlayer, livePusher, movableView, swiperItem, pickerViewColumn, officialAccount, contactButton];\n\tvar handlesMap = {\n\t simpleEvents: [],\n\t singleEvents: [],\n\t functionalSingleEvents: [],\n\t complexEvents: []\n\t};\n\tcomponents.forEach(function (_ref) {\n\t var simpleEvents = _ref.simpleEvents,\n\t singleEvents = _ref.singleEvents,\n\t functionalSingleEvents = _ref.functionalSingleEvents,\n\t complexEvents = _ref.complexEvents;\n\n\t if (simpleEvents) {\n\t handlesMap.simpleEvents = handlesMap.simpleEvents.concat(simpleEvents);\n\t }\n\n\t if (singleEvents) {\n\t handlesMap.singleEvents = handlesMap.singleEvents.concat(singleEvents);\n\t }\n\n\t if (functionalSingleEvents) {\n\t handlesMap.functionalSingleEvents = handlesMap.functionalSingleEvents.concat(functionalSingleEvents);\n\t }\n\n\t if (complexEvents) {\n\t handlesMap.complexEvents = handlesMap.complexEvents.concat(complexEvents);\n\t }\n\t});\n\n\tfunction callEvent (eventName, evt, extra, nodeId) {\n\t var originNode = cache.getNode(nodeId);\n\t if (!originNode) return;\n\n\t EventTarget._process(originNode, eventName, evt, extra);\n\t}\n\n\tfunction callSimpleEvent (eventName, evt, domNode) {\n\t if (!domNode) return;\n\n\t EventTarget._process(domNode, new Event({\n\t name: eventName,\n\t target: domNode,\n\t eventPhase: Event.AT_TARGET,\n\t detail: evt && evt.detail,\n\t __extra: evt && evt.extra,\n\t bubbles: false\n\t }));\n\t}\n\n\tfunction callSingleEvent (eventName, evt) {\n\t var domNode = this.getDomNodeFromEvt(evt);\n\t if (!domNode) return;\n\n\t domNode._trigger(eventName, {\n\t event: new Event({\n\t timeStamp: evt && evt.timeStamp,\n\t touches: evt && evt.touches,\n\t changedTouches: evt && evt.changedTouches,\n\t name: eventName,\n\t target: domNode,\n\t eventPhase: Event.AT_TARGET,\n\t detail: evt && evt.detail,\n\t __extra: evt && evt.extra\n\t }),\n\t currentTarget: domNode\n\t });\n\t}\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\n\tfunction createEventProxy () {\n\t var config = {}; // Add get DOM Node from event method\n\n\t config.getDomNodeFromEvt = getDomNodeFromEvt; // Add call event method\n\n\t config.callEvent = callEvent; // Add call simple event method\n\n\t config.callSimpleEvent = callSimpleEvent; // Add call single event method\n\n\t config.callSingleEvent = callSingleEvent; // Add reactive event define which will bubble\n\n\t baseEvents.forEach(function (_ref) {\n\t var name = _ref.name,\n\t _ref$extra = _ref.extra,\n\t extra = _ref$extra === void 0 ? null : _ref$extra,\n\t eventName = _ref.eventName;\n\n\t config[name] = function (evt) {\n\t var domNode = this.getDomNodeFromEvt(evt);\n\t var document = domNode.ownerDocument;\n\n\t if (document && document.__checkEvent(evt)) {\n\t this.callEvent(eventName, evt, extra, evt.currentTarget.dataset.privateNodeId);\n\t }\n\t };\n\t }); // Add reactive event define which won't bubble\n\n\t handlesMap.simpleEvents.forEach(function (_ref2) {\n\t var name = _ref2.name,\n\t eventName = _ref2.eventName;\n\n\t config[name] = function (evt) {\n\t var nodeId = evt.currentTarget.dataset.privateNodeId;\n\t var targetNode = cache.getNode(nodeId);\n\t if (!targetNode) return;\n\t this.callSimpleEvent(eventName, evt, targetNode);\n\t };\n\t }); // Add reactive event define which only trigger once\n\n\t handlesMap.singleEvents.forEach(function (_ref3) {\n\t var name = _ref3.name,\n\t eventName = _ref3.eventName;\n\n\t config[name] = function (evt) {\n\n\t this.callSingleEvent(eventName, evt);\n\t };\n\t }); // Add reactive event define which only trigger once and need middleware\n\n\t handlesMap.functionalSingleEvents.forEach(function (_ref4) {\n\t var name = _ref4.name,\n\t eventName = _ref4.eventName,\n\t middleware = _ref4.middleware;\n\n\t config[name] = function (evt) {\n\t var domNode = this.getDomNodeFromEvt(evt);\n\t if (!domNode) return;\n\t middleware.call(this, evt, domNode);\n\t this.callSingleEvent(eventName, evt);\n\t };\n\t }); // Add reactive event define which complex\n\n\t handlesMap.complexEvents.forEach(function (_ref5) {\n\t var name = _ref5.name,\n\t eventName = _ref5.eventName,\n\t middleware = _ref5.middleware;\n\n\t config[name] = function (evt) {\n\t var domNode = this.getDomNodeFromEvt(evt);\n\t if (!domNode) return;\n\t middleware.call(this, evt, domNode, evt.currentTarget.dataset.privateNodeId);\n\t };\n\t });\n\t return config;\n\t}\n\n\tfunction getBaseLifeCycles(route, init, packageName) {\n\t if (packageName === void 0) {\n\t packageName = '';\n\t }\n\n\t return {\n\t onLoad: function onLoad(query) {\n\t var _this = this;\n\n\t this.pageId = route + '-' + cache.getRouteId(route); // getApp may not exist in situations like plugin project\n\t // eslint-disable-next-line no-undef\n\n\t if (typeof getApp === 'function') {\n\t // eslint-disable-next-line no-undef\n\t var app = getApp(); // In non alibaba miniapp or the first page is from plugin, pageId is set to 'home-page' in app onLaunch\n\n\t if (app.__pageId === INDEX_PAGE) {\n\t this.document = cache.getDocument(INDEX_PAGE);\n\n\t this.document._switchPageId(this.pageId);\n\n\t cache.destroy(INDEX_PAGE);\n\t cache.init(this.pageId, this.document);\n\t app.__pageId = this.pageId;\n\t } else if (this.pageId === app.__pageId) {\n\t this.document = cache.getDocument(this.pageId);\n\t } else {\n\t this.document = createDocument(this.pageId);\n\t }\n\t } else {\n\t this.document = createDocument(this.pageId);\n\t }\n\n\t var isBundleLoaded = cache.hasWindow(packageName);\n\n\t if (isBundleLoaded) {\n\t this.window = cache.getWindow(packageName);\n\t } else {\n\t this.window = createWindow();\n\t cache.setWindow(packageName, this.window);\n\t init(this.window, this.document);\n\t } // Bind page internal to page document\n\n\n\t this.document._internal = this;\n\n\t this.query = query; // Update location page options\n\n\t this.window.history.location.__updatePageOption(query); // Set __pageId to global window object\n\n\n\t this.window.__pageId = this.pageId; // Find self render function\n\t // eslint-disable-next-line no-undef\n\n\t this.renderInfo = this.window.__pagesRenderInfo.find(function (_ref) {\n\t var path = _ref.path;\n\t return _this.pageId.substring(0, _this.pageId.lastIndexOf('-')) === path;\n\t });\n\n\t if (!this.renderInfo && 'development' === 'development') {\n\t throw new Error(\"Could't find target render method.\");\n\t }\n\n\t this.renderInfo.setDocument(this.document);\n\t this.renderInfo.render();\n\n\t this.document._trigger('DOMContentLoaded');\n\t },\n\t onShow: function onShow() {\n\t if (this.window) {\n\t // Update pageId\n\t this.window.__pageId = this.pageId;\n\n\t if (!this.firstRender) {\n\t this.renderInfo && this.renderInfo.setDocument(this.document); // Update location page options\n\n\t this.window.history.location.__updatePageOption(this.query);\n\t }\n\n\t this.document._trigger('miniapp_pageshow'); // compatible with original name\n\n\n\t this.document._trigger('onShow');\n\t }\n\t },\n\t onHide: function onHide() {\n\t if (this.window) {\n\t this.document._trigger('miniapp_pagehide'); // compatible with original name\n\n\n\t this.document._trigger('onHide');\n\t }\n\t },\n\t onUnload: function onUnload() {\n\t // When reLaunch api is invoked, onUnload will be triggered without onShow trigger\n\t this.renderInfo.setDocument(this.document);\n\n\t this.document._trigger('miniapp_pagehide');\n\n\t this.document._trigger('beforeunload');\n\n\t this.document._trigger('pageunload');\n\n\t this.document.__unmount && this.document.__unmount(); // Manually unmount component instance\n\n\t this.document.body._destroy();\n\n\t cache.destroy(this.pageId);\n\t this.pageId = null;\n\t this.window = null;\n\t this.document = null;\n\t this.query = null;\n\t }\n\t };\n\t}\n\tfunction createPageConfig (route, lifeCycles, init, packageName) {\n\t if (lifeCycles === void 0) {\n\t lifeCycles = [];\n\t }\n\n\t if (packageName === void 0) {\n\t packageName = '';\n\t }\n\n\t var pageConfig = _extends({\n\t firstRender: true,\n\t data: {\n\t root: {\n\t nodeId: BODY_NODE_ID,\n\t nodeType: 'h-element',\n\t children: []\n\t }\n\t },\n\t firstRenderCallback: function firstRenderCallback(task) {\n\t if (this.firstRender) {\n\t this.firstRender = false;\n\t var initData = {\n\t 'root.nodeId': BODY_NODE_ID + \"-\" + this.pageId\n\t };\n\n\t if (task) {\n\t Object.assign(task, initData);\n\t } else {\n\t this.setData(initData);\n\t }\n\t }\n\t }\n\t }, getBaseLifeCycles(route, init, packageName), createEventProxy()); // Define page lifecycles, like onReachBottom\n\n\n\t injectLifeCycle(lifeCycles, pageConfig);\n\t return pageConfig;\n\t}\n\n\t// eslint-disable-next-line import/no-extraneous-dependencies\n\tfunction getComponentLifeCycle(_ref) {\n\t var mount = _ref.mount,\n\t unmount = _ref.unmount,\n\t update = _ref.update;\n\n\t {\n\t return {\n\t didMount: function didMount() {\n\t for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n\t args[_key] = arguments[_key];\n\t }\n\n\t mount && mount.apply(this, args);\n\t },\n\t didUpdate: function didUpdate() {\n\t for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n\t args[_key2] = arguments[_key2];\n\t }\n\n\t update && update.apply(this, args);\n\t },\n\t didUnmount: function didUnmount() {\n\t for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n\t args[_key3] = arguments[_key3];\n\t }\n\n\t unmount && unmount.apply(this, args);\n\t }\n\t };\n\t }\n\t}\n\n\tfunction createElementConfig () {\n\t {\n\t return _extends({\n\t props: {\n\t r: {}\n\t },\n\t methods: createEventProxy()\n\t }, getComponentLifeCycle({\n\t mount: function mount() {\n\t cache.setElementInstance(this);\n\t }\n\t }));\n\t }\n\t}\n\n\tvar index = {\n\t createAppConfig: createAppConfig,\n\t createPageConfig: createPageConfig,\n\t createElementConfig: createElementConfig,\n\t createDocument: createDocument,\n\t createWindow: createWindow\n\t};\n\n\treturn index;\n\n})));\n","root.axml":"<import-sjs name=\"tool\" from=\"./tool.sjs\" />\n\n<template name=\"RAX_TMPL_ROOT_CONTAINER\">\n <template is=\"{{tool.c(r.nodeType)}}\" data=\"{{r: r}}\" />\n</template>\n\n<template name=\"RAX_TMPL_CHILDREN_0\">\n <block a:for=\"{{r}}\" a:key=\"nodeId\">\n <block a:if=\"{{item.nodeId}}\">\n <template is=\"{{tool.c(item.nodeType)}}\" data=\"{{r: item}}\" />\n </block>\n <block a:else>\n <block>{{item.content}}</block>\n </block>\n </block>\n</template>\n\n<template name=\"RAX_TMPL_0_view\">\n <view disable-scroll=\"{{tool.a(r['disable-scroll'],false)}}\" hover-class=\"{{r['hover-class']}}\" hover-start-time=\"{{r['hover-start-time']}}\" hover-stay-time=\"{{r['hover-stay-time']}}\" hidden=\"{{tool.a(r['hidden'],false)}}\" hover-stop-propagation=\"{{tool.a(r['hover-stop-propagation'],false)}}\" role=\"{{r['role']}}\" animation=\"{{r['animation']||null}}\" onTransitionEnd=\"onViewTransitionEnd\" onAnimationIteration=\"onViewAnimationIteration\" onAnimationStart=\"onViewAnimationStart\" onAnimationEnd=\"onViewAnimationEnd\" onAppear=\"onViewAppear\" onDisappear=\"onViewDisappear\" onFirstAppear=\"onViewFirstAppear\" onTap=\"onTap\" onLongTap=\"onLongTap\" onTouchStart=\"onTouchStart\" onTouchMove=\"onTouchMove\" onTouchEnd=\"onTouchEnd\" onTouchCancel=\"onTouchCancel\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</view>\n</template>\n\n<template name=\"RAX_TMPL_0_catch-view\">\n <view disable-scroll=\"{{tool.a(r['disable-scroll'],false)}}\" hover-class=\"{{r['hover-class']}}\" hover-start-time=\"{{r['hover-start-time']}}\" hover-stay-time=\"{{r['hover-stay-time']}}\" hidden=\"{{tool.a(r['hidden'],false)}}\" hover-stop-propagation=\"{{tool.a(r['hover-stop-propagation'],false)}}\" role=\"{{r['role']}}\" animation=\"{{r['animation']||null}}\" onTransitionEnd=\"onViewTransitionEnd\" onAnimationIteration=\"onViewAnimationIteration\" onAnimationStart=\"onViewAnimationStart\" onAnimationEnd=\"onViewAnimationEnd\" onAppear=\"onViewAppear\" onDisappear=\"onViewDisappear\" onFirstAppear=\"onViewFirstAppear\" onTap=\"onTap\" onLongTap=\"onLongTap\" onTouchStart=\"onTouchStart\" catchTouchMove=\"onTouchMove\" onTouchEnd=\"onTouchEnd\" onTouchCancel=\"onTouchCancel\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</view>\n</template>\n\n<template name=\"RAX_TMPL_0_static-view\">\n <view disable-scroll=\"{{tool.a(r['disable-scroll'],false)}}\" hover-class=\"{{r['hover-class']}}\" hover-start-time=\"{{r['hover-start-time']}}\" hover-stay-time=\"{{r['hover-stay-time']}}\" hidden=\"{{tool.a(r['hidden'],false)}}\" hover-stop-propagation=\"{{tool.a(r['hover-stop-propagation'],false)}}\" role=\"{{r['role']}}\" animation=\"{{r['animation']||null}}\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</view>\n</template>\n\n<template name=\"RAX_TMPL_0_pure-view\">\n <view style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</view>\n</template>\n\n<template name=\"RAX_TMPL_0_no-appear-view\">\n <view disable-scroll=\"{{tool.a(r['disable-scroll'],false)}}\" hover-class=\"{{r['hover-class']}}\" hover-start-time=\"{{r['hover-start-time']}}\" hover-stay-time=\"{{r['hover-stay-time']}}\" hidden=\"{{tool.a(r['hidden'],false)}}\" hover-stop-propagation=\"{{tool.a(r['hover-stop-propagation'],false)}}\" role=\"{{r['role']}}\" animation=\"{{r['animation']||null}}\" onTransitionEnd=\"onViewTransitionEnd\" onAnimationIteration=\"onViewAnimationIteration\" onAnimationStart=\"onViewAnimationStart\" onAnimationEnd=\"onViewAnimationEnd\" onTap=\"onTap\" onLongTap=\"onLongTap\" onTouchStart=\"onTouchStart\" onTouchMove=\"onTouchMove\" onTouchEnd=\"onTouchEnd\" onTouchCancel=\"onTouchCancel\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</view>\n</template>\n\n<template name=\"RAX_TMPL_0_no-touch-view\">\n <view disable-scroll=\"{{tool.a(r['disable-scroll'],false)}}\" hover-class=\"{{r['hover-class']}}\" hover-start-time=\"{{r['hover-start-time']}}\" hover-stay-time=\"{{r['hover-stay-time']}}\" hidden=\"{{tool.a(r['hidden'],false)}}\" hover-stop-propagation=\"{{tool.a(r['hover-stop-propagation'],false)}}\" role=\"{{r['role']}}\" animation=\"{{r['animation']||null}}\" onTransitionEnd=\"onViewTransitionEnd\" onAnimationIteration=\"onViewAnimationIteration\" onAnimationStart=\"onViewAnimationStart\" onAnimationEnd=\"onViewAnimationEnd\" onAppear=\"onViewAppear\" onDisappear=\"onViewDisappear\" onFirstAppear=\"onViewFirstAppear\" onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</view>\n</template>\n\n<template name=\"RAX_TMPL_0_no-appear-touch-view\">\n <view disable-scroll=\"{{tool.a(r['disable-scroll'],false)}}\" hover-class=\"{{r['hover-class']}}\" hover-start-time=\"{{r['hover-start-time']}}\" hover-stay-time=\"{{r['hover-stay-time']}}\" hidden=\"{{tool.a(r['hidden'],false)}}\" hover-stop-propagation=\"{{tool.a(r['hover-stop-propagation'],false)}}\" role=\"{{r['role']}}\" animation=\"{{r['animation']||null}}\" onTransitionEnd=\"onViewTransitionEnd\" onAnimationIteration=\"onViewAnimationIteration\" onAnimationStart=\"onViewAnimationStart\" onAnimationEnd=\"onViewAnimationEnd\" onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</view>\n</template>\n\n<template name=\"RAX_TMPL_0_swiper\">\n <swiper indicator-dots=\"{{tool.a(r['indicator-dots'],false)}}\" indicator-color=\"{{r['indicator-color']||'rgba(0, 0, 0, .3)'}}\" indicator-active-color=\"{{r['indicator-active-color']||'#000'}}\" active-class=\"{{r['active-class']}}\" changing-class=\"{{r['changing-class']}}\" autoplay=\"{{tool.a(r['autoplay'],false)}}\" current=\"{{tool.a(r['current'],0)}}\" duration=\"{{tool.a(r['duration'],500)}}\" interval=\"{{tool.a(r['interval'],5000)}}\" circular=\"{{tool.a(r['circular'],false)}}\" vertical=\"{{tool.a(r['vertical'],false)}}\" previous-margin=\"{{r['previous-margin']||'0px'}}\" next-margin=\"{{r['next-margin']||'0px'}}\" acceleration=\"{{tool.a(r['acceleration'],false)}}\" disable-programmatic-animation=\"{{tool.a(r['disable-programmatic-animation'],false)}}\" disable-touch=\"{{tool.a(r['disable-touch'],false)}}\" swipe-ratio=\"{{tool.a(r['swipe-ratio'],false)}}\" swipe-speed=\"{{tool.a(r['swipe-speed'],0.05)}}\" touch-angle=\"{{tool.a(r['touch-angle'],45)}}\" onChange=\"onSwiperChange\" onTransition=\"onSwiperTransition\" onAnimationEnd=\"onSwiperAnimationEnd\" onTap=\"onTap\" onLongTap=\"onLongTap\" onTouchStart=\"onTouchStart\" onTouchMove=\"onTouchMove\" onTouchEnd=\"onTouchEnd\" onTouchCancel=\"onTouchCancel\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <swiper-item a:for=\"{{r.children}}\" a:key=\"nodeId\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: item.children}}\" />\n </swiper-item></swiper>\n</template>\n\n<template name=\"RAX_TMPL_0_scroll-view\">\n <scroll-view scroll-x=\"{{tool.a(r['scroll-x'],false)}}\" scroll-y=\"{{tool.a(r['scroll-y'],false)}}\" upper-threshold=\"{{tool.a(r['upper-threshold'],50)}}\" lower-threshold=\"{{tool.a(r['lower-threshold'],50)}}\" scroll-top=\"{{r['scroll-top']}}\" scroll-left=\"{{r['scroll-left']}}\" scroll-into-view=\"{{r['scroll-into-view']}}\" scroll-with-animation=\"{{tool.a(r['scroll-with-animation'],false)}}\" scroll-animation-duration=\"{{r['scroll-animation-duration']}}\" enable-back-to-top=\"{{tool.a(r['enable-back-to-top'],false)}}\" trap-scroll=\"{{tool.a(r['trap-scroll'],false)}}\" onScrollToUpper=\"onScrollViewScrollToUpper\" onScrollToLower=\"onScrollViewScrollToLower\" onScroll=\"onScrollViewScroll\" onTap=\"onTap\" onLongTap=\"onLongTap\" onTouchStart=\"onTouchStart\" onTouchMove=\"onTouchMove\" onTouchEnd=\"onTouchEnd\" onTouchCancel=\"onTouchCancel\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</scroll-view>\n</template>\n\n<template name=\"RAX_TMPL_0_cover-view\">\n <cover-view onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</cover-view>\n</template>\n\n<template name=\"RAX_TMPL_0_cover-image\">\n <cover-image src=\"{{r['src']}}\" onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</cover-image>\n</template>\n\n<template name=\"RAX_TMPL_0_movable-area\">\n <movable-area scale-area=\"{{tool.a(r['scale-area'],false)}}\" onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <movable-view a:for=\"{{r.children}}\" key=\"{{item.nodeId}}\" a:if=\"{{item.nodeType !== 'h-comment'}}\" direction=\"{{item['direction']||'none'}}\" inertia=\"{{tool.a(item['inertia'],false)}}\" out-of-bounds=\"{{tool.a(item['out-of-bounds'],false)}}\" x=\"{{tool.a(item['x'],0)}}\" y=\"{{tool.a(item['y'],0)}}\" damping=\"{{tool.a(item['damping'],20)}}\" friction=\"{{tool.a(item['friction'],2)}}\" disabled=\"{{tool.a(item['disabled'],false)}}\" scale=\"{{tool.a(item['scale'],false)}}\" scale-min=\"{{tool.a(item['scale-min'],0.5)}}\" scale-max=\"{{tool.a(item['scale-max'],10)}}\" scale-value=\"{{tool.a(item['scale-value'],1)}}\" animation=\"{{tool.a(item['animation'],false)}}\" onChange=\"onMovableViewChange\" onChangeEnd=\"onMovableViewChangeEnd\" onScale=\"onMovableViewScale\" onTouchStart=\"onTouchStart\" onTouchMove=\"onTouchMove\" onTouchEnd=\"onTouchEnd\" onTouchCancel=\"onTouchCancel\" onLongTap=\"onLongTap\" style=\"{{item.style}}\" class=\"{{item.class}}\" id=\"{{item.id}}\" data-private-node-id=\"{{item.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: item.children}}\" />\n </movable-view></movable-area>\n</template>\n\n<template name=\"RAX_TMPL_0_text\">\n <text selectable=\"{{tool.a(r['selectable'],false)}}\" space=\"{{r['space']}}\" decode=\"{{tool.a(r['decode'],false)}}\" number-of-lines=\"{{r['number-of-lines']}}\" onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</text>\n</template>\n\n<template name=\"RAX_TMPL_0_static-text\">\n <text selectable=\"{{tool.a(r['selectable'],false)}}\" space=\"{{r['space']}}\" decode=\"{{tool.a(r['decode'],false)}}\" number-of-lines=\"{{r['number-of-lines']}}\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</text>\n</template>\n\n<template name=\"RAX_TMPL_0_icon\">\n <icon type=\"{{r['type']}}\" size=\"{{tool.a(r['size'],23)}}\" color=\"{{r['color']}}\" onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></icon>\n</template>\n\n<template name=\"RAX_TMPL_0_progress\">\n <progress percent=\"{{r['percent']}}\" show-info=\"{{r['show-info']}}\" stroke-width=\"{{tool.a(r['stroke-width'],6)}}\" active=\"{{tool.a(r['active'],false)}}\" background-color=\"{{r['background-color']}}\" active-color=\"{{r['active-color']||'#09BB07'}}\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></progress>\n</template>\n\n<template name=\"RAX_TMPL_0_rich-text\">\n <rich-text nodes=\"{{r['nodes']||[]}}\" onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></rich-text>\n</template>\n\n<template name=\"RAX_TMPL_0_button\">\n <button size=\"{{r['size']||'default'}}\" type=\"{{r['type']||'default'}}\" plain=\"{{tool.a(r['plain'],false)}}\" disabled=\"{{tool.a(r['disabled'],false)}}\" loading=\"{{tool.a(r['loading'],false)}}\" hover-class=\"{{r['hover-class']||'button-hover'}}\" hover-start-time=\"{{tool.a(r['hover-start-time'],20)}}\" hover-stay-time=\"{{tool.a(r['hover-stay-time'],70)}}\" hover-stop-propagation=\"{{tool.a(r['hover-stop-propagation'],false)}}\" form-type=\"{{r['form-type']}}\" open-type=\"{{r['open-type']}}\" scope=\"{{r['scope']}}\" public-id=\"{{r['public-id']}}\" data-params=\"{{r['data-params']}}\" onGetAuthorize=\"onButtonGetAuthorize\" onError=\"onButtonError\" onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</button>\n</template>\n\n<template name=\"RAX_TMPL_0_form\">\n <form report-submit=\"{{r['report-submit']}}\" onSubmit=\"onFormSubmit\" onReset=\"onFormReset\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</form>\n</template>\n\n<template name=\"RAX_TMPL_0_label\">\n <label for=\"{{r['for']}}\" onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</label>\n</template>\n\n<template name=\"RAX_TMPL_0_input\">\n <input id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\" value=\"{{r['value']}}\" name=\"{{r['name']}}\" type=\"{{r['type']||'text'}}\" password=\"{{tool.a(r['password'],false)}}\" placeholder=\"{{r['placeholder']}}\" placeholder-style=\"{{r['placeholder-style']}}\" placeholder-class=\"{{r['placeholder-class']}}\" disabled=\"{{tool.a(r['disabled'],false)}}\" maxlength=\"{{tool.a(r['maxlength'],140)}}\" confirm-type=\"{{r['confirm-type']||'done'}}\" confirm-hold=\"{{tool.a(r['confirm-hold'],false)}}\" cursor=\"{{r['cursor']}}\" selection-start=\"{{tool.a(r['selection-start'],-1)}}\" selection-end=\"{{tool.a(r['selection-end'],-1)}}\" random-number=\"{{tool.a(r['random-number'],false)}}\" controlled=\"{{tool.a(r['controlled'],false)}}\" enableNative=\"{{tool.a(r['enableNative'],true)}}\" onInput=\"onInputInput\" onConfirm=\"onInputConfirm\" onFocus=\"onInputFocus\" onBlur=\"onInputBlur\" style=\"{{r.style}}\" class=\"{{r.class}}\" focus=\"{{r['focus-state'] === undefined ? false : r['focus-state']}}\" />\n</template>\n\n<template name=\"RAX_TMPL_0_textarea\">\n <textarea id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\" value=\"{{r['value']}}\" name=\"{{r['name']}}\" placeholder=\"{{r['placeholder']}}\" placeholder-style=\"{{r['placeholder-style']}}\" placeholder-class=\"{{r['placeholder-class']}}\" disabled=\"{{tool.a(r['disabled'],false)}}\" maxlength=\"{{tool.a(r['maxlength'],140)}}\" auto-height=\"{{tool.a(r['auto-height'],false)}}\" show-count=\"{{tool.a(r['show-count'],true)}}\" controlled=\"{{tool.a(r['controlled'],false)}}\" enableNative=\"{{tool.a(r['enableNative'],true)}}\" onInput=\"onTextareaInput\" onConfirm=\"onTextareaConfirm\" onFocus=\"onTextareaFocus\" onBlur=\"onTextareaBlur\" style=\"{{r.style}}\" class=\"{{r.class}}\" focus=\"{{r['focus-state'] === undefined ? false : r['focus-state']}}\" />\n</template>\n\n<template name=\"RAX_TMPL_0_radio\">\n <radio value=\"{{r['value']}}\" checked=\"{{tool.a(r['checked'],false)}}\" disabled=\"{{tool.a(r['disabled'],false)}}\" color=\"{{r['color']}}\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></radio>\n</template>\n\n<template name=\"RAX_TMPL_0_radio-group\">\n <radio-group name=\"{{r['name']}}\" onChange=\"onRadioGroupChange\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</radio-group>\n</template>\n\n<template name=\"RAX_TMPL_0_checkbox\">\n <checkbox value=\"{{r['value']}}\" checked=\"{{tool.a(r['checked'],false)}}\" disabled=\"{{tool.a(r['disabled'],false)}}\" color=\"{{r['color']}}\" onChange=\"onCheckboxChange\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></checkbox>\n</template>\n\n<template name=\"RAX_TMPL_0_checkbox-group\">\n <checkbox-group name=\"{{r['name']}}\" onChange=\"onCheckboxGroupChange\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</checkbox-group>\n</template>\n\n<template name=\"RAX_TMPL_0_switch\">\n <switch value=\"{{r['value']}}\" checked=\"{{tool.a(r['checked'],false)}}\" disabled=\"{{tool.a(r['disabled'],false)}}\" color=\"{{r['color']}}\" controlled=\"{{tool.a(r['controlled'],false)}}\" onChange=\"onSwitchChange\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></switch>\n</template>\n\n<template name=\"RAX_TMPL_0_slider\">\n <slider name=\"{{r['name']}}\" min=\"{{tool.a(r['min'],0)}}\" max=\"{{tool.a(r['max'],100)}}\" step=\"{{tool.a(r['step'],1)}}\" disabled=\"{{tool.a(r['disabled'],false)}}\" value=\"{{tool.a(r['value'],0)}}\" show-value=\"{{tool.a(r['show-value'],false)}}\" active-color=\"{{r['active-color']||'#108ee9'}}\" background-color=\"{{r['background-color']||'#ddd'}}\" track-size=\"{{tool.a(r['track-size'],4)}}\" handle-size=\"{{tool.a(r['handle-size'],22)}}\" handle-color=\"{{r['handle-color']||'#fff'}}\" onChange=\"onSliderChange\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></slider>\n</template>\n\n<template name=\"RAX_TMPL_0_picker-view\">\n <picker-view value=\"{{r['value']}}\" indicator-style=\"{{r['indicator-style']}}\" indicator-class=\"{{r['indicator-class']}}\" mask-style=\"{{r['mask-style']}}\" mask-class=\"{{r['mask-class']}}\" onChange=\"onPickerViewChange\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <picker-view-column a:for=\"{{r.children}}\" key=\"{{item.nodeId}}\" a:if=\"{{item.nodeType !== 'h-comment'}}\">\n <view a:for=\"{{item.children}}\" a:for-item=\"pickerColumnItem\">\n <block a:if=\"{{pickerColumnItem.nodeId}}\">\n <template is=\"{{tool.c(pickerColumnItem.nodeType)}}\" data=\"{{r: pickerColumnItem}}\" />\n </block>\n <block a:else>\n <block>{{pickerColumnItem.content}}</block>\n </block>\n </view>\n </picker-view-column></picker-view>\n</template>\n\n<template name=\"RAX_TMPL_0_picker\">\n <picker disabled=\"{{tool.a(r['disabled'],false)}}\" range=\"{{r['range']||[]}}\" range-key=\"{{r['range-key']}}\" value=\"{{r['value']}}\" title=\"{{r['title']}}\" onChange=\"onPickerChange\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <view>\n \n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n\n </view></picker>\n</template>\n\n<template name=\"RAX_TMPL_0_navigator\">\n <navigator url=\"{{r['url']}}\" open-type=\"{{r['open-type']||'navigate'}}\" hover-class=\"{{r['hover-class']||'none'}}\" hover-start-time=\"{{r['hover-start-time']}}\" hover-stay-time=\"{{r['hover-stay-time']}}\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</navigator>\n</template>\n\n<template name=\"RAX_TMPL_0_image\">\n <image src=\"{{r['src']}}\" mode=\"{{r['mode']||'scaleToFill'}}\" lazy-load=\"{{tool.a(r['lazy-load'],false)}}\" default-source=\"{{r['default-source']}}\" onLoad=\"onImageLoad\" onError=\"onImageError\" onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></image>\n</template>\n\n<template name=\"RAX_TMPL_0_static-image\">\n <image src=\"{{r['src']}}\" mode=\"{{r['mode']||'scaleToFill'}}\" lazy-load=\"{{tool.a(r['lazy-load'],false)}}\" default-source=\"{{r['default-source']}}\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</image>\n</template>\n\n<template name=\"RAX_TMPL_0_video\">\n <video src=\"{{r['src']}}\" poster=\"{{r['poster']}}\" poster-size=\"{{r['poster-size']}}\" object-fit=\"{{r['object-fit']||'contain'}}\" initial-time=\"{{r['initial-time']}}\" duration=\"{{r['duration']}}\" controls=\"{{tool.a(r['controls'],true)}}\" autoplay=\"{{tool.a(r['autoplay'],false)}}\" direction=\"{{r['direction']}}\" loop=\"{{tool.a(r['loop'],false)}}\" muted=\"{{tool.a(r['muted'],false)}}\" show-fullscreen-btn=\"{{tool.a(r['show-fullscreen-btn'],true)}}\" show-play-btn=\"{{tool.a(r['show-play-btn'],true)}}\" show-center-play-btn=\"{{tool.a(r['show-center-play-btn'],true)}}\" show-mute-btn=\"{{tool.a(r['show-mute-btn'],true)}}\" show-thin-progress-bar=\"{{tool.a(r['show-thin-progress-bar'],false)}}\" enable-progress-gesture=\"{{tool.a(r['enable-progress-gesture'],false)}}\" mobilenet-hint-type=\"{{tool.a(r['mobilenet-hint-type'],1)}}\" floating-mode=\"{{r['floating-mode']||'none'}}\" onPlay=\"onVideoPlay\" onPause=\"onVideoPause\" onEnded=\"onVideoEnded\" onTimeUpdate=\"onVideoTimeUpdate\" onLoading=\"onVideoLoading\" onError=\"onVideoError\" onFullScreenChange=\"onVideoFullScreenChange\" onUserAction=\"onVideoUserAction\" onStop=\"onVideoStop\" onRenderStart=\"onVideoRenderStart\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></video>\n</template>\n\n<template name=\"RAX_TMPL_0_camera\">\n <camera mode=\"{{r['mode']||'normal'}}\" device-position=\"{{r['device-position']||'back'}}\" flash=\"{{r['flash']||'auto'}}\" outputDimension=\"{{r['outputDimension']||'720P'}}\" applyMicPermissionWhenInit=\"{{tool.a(r['applyMicPermissionWhenInit'],true)}}\" frame-size=\"{{r['frame-size']||'medium'}}\" frame-format=\"{{r['frame-format']||'rgba'}}\" max-duration=\"{{tool.a(r['max-duration'],30)}}\" onStop=\"onCameraStop\" onError=\"onCameraError\" onScanCode=\"onCameraScanCode\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></camera>\n</template>\n\n<template name=\"RAX_TMPL_0_lottie\">\n <lottie autoplay=\"{{tool.a(r['autoplay'],false)}}\" path=\"{{r['path']}}\" speed=\"{{tool.a(r['speed'],1.0)}}\" repeatCount=\"{{tool.a(r['repeatCount'],0)}}\" autoReverse=\"{{tool.a(r['autoReverse'],false)}}\" assetsPath=\"{{r['assetsPath']}}\" placeholder=\"{{r['placeholder']}}\" djangoId=\"{{r['djangoId']}}\" md5=\"{{r['md5']}}\" optimize=\"{{tool.a(r['optimize'],false)}}\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></lottie>\n</template>\n\n<template name=\"RAX_TMPL_0_canvas\">\n <canvas width=\"{{r['width']||'300px'}}\" height=\"{{r['height']||'225px'}}\" disable-scroll=\"{{tool.a(r['disable-scroll'],false)}}\" onTouchStart=\"onCanvasTouchStart\" onTouchMove=\"onCanvasTouchMove\" onTouchEnd=\"onCanvasTouchEnd\" onTouchCancel=\"onCanvasTouchCancel\" onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></canvas>\n</template>\n\n<template name=\"RAX_TMPL_0_map\">\n <map longitude=\"{{r['longitude']}}\" latitude=\"{{r['latitude']}}\" scale=\"{{tool.a(r['scale'],16)}}\" skew=\"{{tool.a(r['skew'],0)}}\" rotate=\"{{tool.a(r['rotate'],0)}}\" markers=\"{{r['markers']||[]}}\" polyline=\"{{r['polyline']||[]}}\" circles=\"{{r['circles']||[]}}\" controls=\"{{r['controls']||[]}}\" polygons=\"{{r['polygons']||[]}}\" show-location=\"{{r['show-location']}}\" include-points=\"{{r['include-points']||[]}}\" include-padding=\"{{r['include-padding']||{}}}\" ground-overlays=\"{{r['ground-overlays']||[]}}\" tile-overlay=\"{{r['tile-overlay']||{}}}\" custom-map-style=\"{{r['custom-map-style']}}\" panels=\"{{r['panels']||[]}}\" setting=\"{{r['setting']||{}}}\" onMarkerTap=\"onMapMarkerTap\" onControlTap=\"onMapControlTap\" onCalloutTap=\"onMapCalloutTap\" onRegionChange=\"onMapRegionChange\" onPanelTap=\"onMapPanelTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</map>\n</template>\n\n<template name=\"RAX_TMPL_0_web-view\">\n <web-view src=\"{{r['src']}}\" onMessage=\"onWebViewMessage\" onLoad=\"onWebViewLoad\" onError=\"onWebViewError\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></web-view>\n</template>\n\n<template name=\"RAX_TMPL_0_open-avatar\">\n <open-avatar userId=\"{{r['userId']}}\" openId=\"{{r['openId']}}\" nickName=\"{{r['nickName']}}\" avatar=\"{{r['avatar']}}\" size=\"{{r['size']||'normal'}}\" onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></open-avatar>\n</template>\n\n<template name=\"RAX_TMPL_0_live-player\">\n <live-player src=\"{{r['src']}}\" mode=\"{{r['mode']||'live'}}\" autoplay=\"{{tool.a(r['autoplay'],false)}}\" muted=\"{{tool.a(r['muted'],false)}}\" orientation=\"{{r['orientation']||'vertical'}}\" object-fit=\"{{r['object-fit']||'contain'}}\" min-cache=\"{{tool.a(r['min-cache'],1)}}\" max-cache=\"{{tool.a(r['max-cache'],3)}}\" floating-mode=\"{{r['floating-mode']||'none'}}\" onStateChange=\"onLivePlayerStateChange\" onError=\"onLivePlayerError\" onFullScreenChange=\"onLivePlayerFullScreenChange\" onUserAction=\"onLivePlayerUserAction\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></live-player>\n</template>\n\n<template name=\"RAX_TMPL_0_live-pusher\">\n <live-pusher url=\"{{r['url']}}\" mode=\"{{r['mode']||'SD'}}\" autoFocus=\"{{tool.a(r['autoFocus'],true)}}\" muted=\"{{tool.a(r['muted'],false)}}\" orientation=\"{{r['orientation']||'vertical'}}\" autopush=\"{{tool.a(r['autopush'],true)}}\" beauty=\"{{tool.a(r['beauty'],0)}}\" devicePosition=\"{{r['devicePosition']||'front'}}\" backgroundMute=\"{{tool.a(r['backgroundMute'],false)}}\" local-mirror=\"{{r['local-mirror']||'auto'}}\" remote-mirror=\"{{tool.a(r['remote-mirror'],false)}}\" onStateChange=\"onLivePusherStateChange\" onError=\"onLivePusherError\" onNetStatus=\"onLivePusherNetStatus\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></live-pusher>\n</template>\n\n<template name=\"RAX_TMPL_0_contact-button\">\n <contact-button tnt-inst-id=\"{{r['tnt-inst-id']}}\" scene=\"{{r['scene']}}\" size=\"{{tool.a(r['size'],25)}}\" color=\"{{r['color']||'#00A3FF'}}\" icon=\"{{r['icon']}}\" alipay-card-no=\"{{r['alipay-card-no']}}\" ext-info=\"{{r['ext-info']}}\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\"></contact-button>\n</template>\n\n<template name=\"RAX_TMPL_0_h-element\">\n <view onTap=\"onTap\" onLongTap=\"onLongTap\" onTouchStart=\"onTouchStart\" onTouchMove=\"onTouchMove\" onTouchEnd=\"onTouchEnd\" onTouchCancel=\"onTouchCancel\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</view>\n</template>\n\n<template name=\"RAX_TMPL_0_no-touch-h-element\">\n <view onTap=\"onTap\" onLongTap=\"onLongTap\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</view>\n</template>\n\n<template name=\"RAX_TMPL_0_catch-h-element\">\n <view onTap=\"onTap\" onLongTap=\"onLongTap\" onTouchStart=\"onTouchStart\" catchTouchMove=\"onTouchMove\" onTouchEnd=\"onTouchEnd\" onTouchCancel=\"onTouchCancel\" style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</view>\n</template>\n\n<template name=\"RAX_TMPL_0_pure-h-element\">\n <view style=\"{{r.style}}\" class=\"{{r.class}}\" id=\"{{r.id}}\" data-private-node-id=\"{{r.nodeId}}\">\n <template is=\"RAX_TMPL_CHILDREN_0\" data=\"{{r: r.children}}\" />\n</view>\n</template>\n\n<template name=\"RAX_TMPL_0_h-comment\">\n \n</template>\n","tool.sjs":"export default {\n a: function(v, dv) {\n return v === undefined ? dv : v;\n },\n b: function(level) {\n return 'RAX_TMPL_CHILDREN_' + level;\n },\n c: function(nodeType) {\n if (!nodeType) nodeType = 'h-element';\n var templateName = 'RAX_TMPL_0_' + nodeType;\n return templateName;\n }\n}"},"dist":[{"name":"f1644b583293e4628cdf8724a9221a0b.json","size":3002275,"url":"https://gw.alipayobjects.com/os/uni/670febf9-b725-4c1e-9477-033f5f60757d/uni/dist/herbox/f1644b583293e4628cdf8724a9221a0b.json","ETag":"F1644B583293E4628CDF8724A9221A0B","type":"json"}],"buildVersion":"0.72.7","remaxVersion":"2.0.3","component2":false,"css2":false}