| | |
| | | /***/ (function(module, exports, __webpack_require__) { |
| | | |
| | | "use strict"; |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 57));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 59));\nvar _cmdProgress = _interopRequireDefault(__webpack_require__(/*! @/components/cmd-progress/cmd-progress.vue */ 47));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n// import {\n// \tmapState,\n// \tmapMutations,\n// \tmapActions ,\n// } from 'vuex'\nvar _default = {\n components: {\n cmdProgress: _cmdProgress.default\n },\n data: function data() {\n //获取全局参数:url-服务器地址\n var server = uni.getStorageSync('server');\n var account = uni.getStorageSync('account');\n var password = uni.getStorageSync('password');\n var url = this.$store.state.url;\n var username = this.$store.state.username;\n var userpwd = this.$store.state.userpwd;\n var ischecked = false;\n if (!server) server = url;\n if (!account) account = username;\n if (account && password) ischecked = true;\n // console.log(url);\n return {\n login: \"开始登录\",\n userServer: server,\n userName: account,\n userPwd: password,\n ischecked: ischecked,\n version: \"1.0.0\",\n downloadUrl: \"\",\n //安卓app下载链接\n percentage: 0,\n //下载进度\n showBtns: true\n };\n },\n onShow: function onShow() {\n this.query(); //版本升级\n },\n\n watch: {\n //监听进度条\n percentage: function percentage(e) {\n // console.log(e);\n if (e >= 100) {\n this.$refs.promotion.close();\n }\n }\n },\n // computed: mapState({\n // \t// 从state中拿到数据 箭头函数可使代码更简练\n // \thasLogin: state => state.hasLogin,\n // \tloginprovider: state => state.loginProvider,\n // \tappinfo:state=>state.appInfo\n // }),\n methods: {\n //查询当前版本号\n query: function query() {\n var _this2 = this;\n plus.runtime.getProperty(plus.runtime.appid, function (wgtinfo) {\n __f__(\"log\", wgtinfo, \" at pages/login/index.vue:268\");\n var version = wgtinfo.version; //客户端版本号\n // var versionCode = parseInt(wgtinfo.versionCode); //客户端版本号编码\n _this2.check(version); //检测是否需要更新\n });\n },\n //检测是否需要更新\n check: function check(version) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var dataInfo;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (_this3.userServer) {\n _context.next = 3;\n break;\n }\n uni.showModal({\n title: \"提示\",\n content: \"未输入网站地址,请重新配置输入!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return _context.abrupt(\"return\");\n case 3:\n dataInfo = {\n server: _this3.userServer\n };\n _this3.$store.dispatch('GetApkVersionInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/login/index.vue:290\");\n if (success.code == '00000') {\n var resp = success.data;\n if (resp) {\n // const obj = resp.data.filter(item => {\n // \treturn item.groupName == 'version'\n // })\n //获取当前版本号\n var VersionName = resp.VersionName; //更新包名称\n var VersionCode = resp.VersionCode; //版本编码\n var versionNum = resp.Version; //服务端版本号\n // this.downloadUrl = resp.PdaUrl+\"/\"+VersionName; //app下载链接\n _this3.downloadUrl = \"http://\" + _this3.userServer + \"/Program/\" + VersionName; //app下载链接this.\n var isver = _this3.compare(versionNum, version);\n if (isver) {\n _this3.$refs.promotion.open();\n } else {\n __f__(\"log\", '当前已是最新版本', \" at pages/login/index.vue:307\");\n }\n }\n } else {\n uni.showModal({\n title: \"错误\",\n content: success.msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/login/index.vue:319\");\n uni.showModal({\n title: \"错误\",\n content: ex.errMsg ? ex.errMsg : ex.message,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 5:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n compare: function compare(curV, reqV) {\n var arr1 = curV.toString().split('.');\n var arr2 = reqV.toString().split('.');\n //将两个版本号拆成数字\n var minL = Math.min(arr1.length, arr2.length);\n var pos = 0; //当前比较位\n var diff = 0; //当前为位比较是否相等\n var flag = false;\n //逐个比较如果当前位相等则继续比较下一位\n while (pos < minL) {\n diff = parseInt(arr1[pos]) - parseInt(arr2[pos]);\n if (diff == 0) {\n pos++;\n continue;\n } else if (diff > 0) {\n flag = true;\n break;\n } else {\n flag = false;\n break;\n }\n }\n return flag;\n },\n //确认更新\n sure: function sure() {\n //关闭按钮\n this.showBtns = false;\n var sys = uni.getSystemInfoSync().platform; //检查系统\n if (sys == \"ios\") {\n // this.getIosInfo()\n } else if (sys == \"android\") {\n this.updateAPP(); // 调用下载方法app内下载\n }\n },\n //取消更新\n cancel: function cancel() {\n this.$refs.promotion.close();\n },\n //链接苹果商店下载\n // getIosInfo() {\n // \tlet appleId = \"你的appid\"\n // \tplus.runtime.launchApplication({\n // \t\taction: \"itms-apps://itunes.apple.com/cn/app/id\" + appleId + \"?mt=8\"\n // \t}, function(e) {\n // \t\tconsole.log('Open system default browser failed: ' + e.message);\n // \t});\n // },\n //安卓更新\n updateAPP: function updateAPP() {\n var _this = this;\n var url = this.downloadUrl;\n // 官方API\n var dtask = plus.downloader.createDownload(url, {}, function (d, status) {\n //d为下载的文件对象\n if (status == 200) {\n //下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径\n var fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);\n plus.runtime.openFile(d.filename); //选择软件打开文件\n uni.showToast({\n icon: 'none',\n title: '更新成功'\n });\n _this.$refs.promotion.close();\n } else {\n //下载失败\n plus.downloader.clear(); //清除下载任务\n uni.showToast({\n icon: 'none',\n title: '更新失败'\n });\n _this.showBtns = false;\n }\n });\n //开始下载\n dtask.start();\n //监听下载进度\n dtask.addEventListener('statechanged', function (task) {\n _this.percentage = parseInt(parseFloat(task.downloadedSize) / parseFloat(task.totalSize) * 100);\n if (_this.percentage == 100) {\n _this.$refs.promotion.close();\n }\n __f__(\"log\", '下载进度:' + _this.percentage, \" at pages/login/index.vue:411\");\n });\n },\n // ...mapMutations({\n // \tmutatLogin:'login'\n // }),\n // ...mapActions({\n // \tactionLogin:'login'\n // }),\n inputDialogToggle: function inputDialogToggle() {\n this.$refs.inputDialog.open();\n },\n dialogInputConfirm: function dialogInputConfirm(val) {\n // console.log(val);\n // uni.showLoading({\n // \ttitle: '3秒后会关闭'\n // })\n // setTimeout(() => {\n // uni.hideLoading();\n this.userServer = val;\n uni.setStorageSync('server', val);\n // this.value = val\n // 关闭窗口后,恢复默认内容\n this.$refs.inputDialog.close();\n this.query(); //版本升级\n // }, 3000)\n // }, 3000)\n },\n rememberPwd: function rememberPwd(e) {\n //记住密码\n __f__(\"log\", e.target, \" at pages/login/index.vue:441\");\n uni.setStorageSync('account', '');\n uni.setStorageSync('password', '');\n if (e.target.value[0] == '1') {\n uni.setStorageSync('account', this.userName);\n uni.setStorageSync('password', this.userPwd);\n }\n },\n // getCookie(key){\n // \tif(document.cookie.length>0){\n // \t\tvar start = document.cookie.indexOf(key +'=');\n // \t\tif(start !== -1){\n // \t\t\tstart = start+key.length+1;\n // \t\t\tvar end = document.cookie.indexOf(';',start);\n // \t\t\tif(end === -1) end=document.cookie.length;\n // \t\t\treturn document.cookie.substring(start,end);\n // \t\t}\n // \t}\n // \treturn '';\n // },\n // setCookie(cName,value,expiredays){\n // \tvar exdate = new Date();\n // \texdate.setDate(exdate.getDate(),expiredays)\n // \tdocument.cookie = cName+'='+ documentURLComponent(value)+\n // \t((expiredays==null)?'':';expires='+exdate.toGMTString());\n // },\n logind: function logind() {\n var _this4 = this;\n if (!this.userServer) {\n uni.showModal({\n title: \"提示\",\n content: \"未输入网站地址,请重新配置输入!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n if (!this.userName) {\n uni.showModal({\n title: \"提示\",\n content: \"未输入用户名,请重新输入!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n if (!this.userPwd) {\n uni.showModal({\n title: \"提示\",\n content: \"未输入密码,请重新输入!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n //检查 \"登录状态/锁屏状态\" 结束\n var loginInfo = {\n server: this.userServer,\n uname: this.userName,\n pwd: this.userPwd,\n cname: plus.device.model,\n type: \"0\"\n };\n __f__(\"log\", loginInfo, \" at pages/login/index.vue:504\");\n this.$data.login = \"loading......\";\n //登录\n this.$store.dispatch('login', loginInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/login/index.vue:509\");\n if (success.code == '00000' || success.err_code == 0) {\n //登录成功后清空缓存数据\n _this4.$store.commit(\"areaFunc\", null);\n _this4.$store.commit(\"classAttrList\", null);\n _this4.$store.commit(\"classGridStyleInfo\", null);\n _this4.$store.commit(\"dicValueInfo\", null);\n _this4.$store.commit(\"subClassAttrList\", null);\n _this4.$store.commit(\"subClassGridStyleInfo\", null);\n //设置全局参数:user-用户信息\n uni.setStorageSync('server', loginInfo.server);\n uni.setStorageSync('account', loginInfo.uname);\n uni.setStorageSync('password', loginInfo.pwd);\n // this.mutatLogin({loginid:success});\n _this4.$store.commit('login', {\n loginid: success\n });\n uni.navigateTo({\n url: '../index/index?args=9999999999'\n });\n // uni.redirectTo({\n // \turl:'../index/index?args=9999999999'\n // });\n _this4.login = \"开始登录\";\n } else {\n uni.showModal({\n title: \"错误\",\n content: success.msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n _this4.login = \"开始登录\";\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/login/index.vue:544\");\n uni.showModal({\n title: \"错误\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n _this4.login = \"开始登录\";\n });\n }\n },\n onLoad: function onLoad() {\n var _this5 = this;\n plus.runtime.getProperty(plus.runtime.appid, function (info) {\n // console.log(info);\n _this5.$data.version = info.version;\n });\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbG9naW4vaW5kZXgudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJjbWRQcm9ncmVzcyIsImRhdGEiLCJzZXJ2ZXIiLCJhY2NvdW50IiwiaXNjaGVja2VkIiwibG9naW4iLCJ1c2VyU2VydmVyIiwidXNlck5hbWUiLCJ1c2VyUHdkIiwidmVyc2lvbiIsImRvd25sb2FkVXJsIiwicGVyY2VudGFnZSIsInNob3dCdG5zIiwib25TaG93Iiwid2F0Y2giLCJtZXRob2RzIiwicXVlcnkiLCJwbHVzIiwiY2hlY2siLCJ1bmkiLCJ0aXRsZSIsImNvbnRlbnQiLCJzaG93Q2FuY2VsIiwiY29uZmlybVRleHQiLCJkYXRhSW5mbyIsImNvbXBhcmUiLCJkaWZmIiwicG9zIiwiZmxhZyIsInN1cmUiLCJjYW5jZWwiLCJ1cGRhdGVBUFAiLCJpY29uIiwiX3RoaXMiLCJkdGFzayIsInBhcnNlRmxvYXQiLCJpbnB1dERpYWxvZ1RvZ2dsZSIsImRpYWxvZ0lucHV0Q29uZmlybSIsInJlbWVtYmVyUHdkIiwibG9naW5kIiwidW5hbWUiLCJwd2QiLCJjbmFtZSIsInR5cGUiLCJsb2dpbmlkIiwidXJsIiwib25Mb2FkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUE4TUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBLGVBQ0E7RUFDQUE7SUFDQUM7RUFDQTtFQUNBQztJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQSxhQUNBQztJQUNBLGNBQ0FD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QUM7WUFDQUM7VUFDQTtVQUNBO1FBQ0E7TUFDQTtRQUNBO1FBQ0FKO1VBQ0FDO1VBQ0FDO1VBQ0FDO1VBQ0FDO1FBQ0E7UUFDQTtNQUNBO0lBQ0E7RUFDQTtFQUNBdUI7SUFBQTtJQUNBN0I7TUFDQTtNQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEsMkIiLCJmaWxlIjoiNTYuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8c3R5bGU+XHJcblx0aW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdFx0Zm9udC1zaXplOiAxMnJweDtcclxuXHR9XHJcblxyXG5cdCNoZWFkciB7XHJcblx0XHRiYWNrZ3JvdW5kOiAjNDM0MzQzO1xyXG5cdFx0Lyogd2lkdGg6IDM3NXB4OyAqL1xyXG5cdFx0aGVpZ2h0OiAyNTBycHg7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjNDM4RUI5O1xyXG5cdFx0LyogYmFja2dyb3VuZC1pbWFnZTogdXJsKC4uLy4uL2ltYWdlcy9sb2dpbi9yb290LnBuZykgIWltcG9ydGFudDtcclxuXHRcdGJhY2tncm91bmQtc2l6ZTogY292ZXIgIWltcG9ydGFudDsgXHJcblx0XHRiYWNrZ3JvdW5kLXJlcGVhdDogbm8tcmVwZWF0ICFpbXBvcnRhbnQ7ICovXHJcblx0fVxyXG5cclxuXHQuU2V0U2VydmVyIHtcclxuXHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDIwcnB4O1xyXG5cdH1cclxuXHJcblx0LmNoZWNrX3JlbWVtYmVyUHdkIHtcclxuXHRcdG1hcmdpbi10b3A6IDIwcnB4O1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDIwcnB4O1xyXG5cdH1cclxuXHJcblx0LmxvZ28ge1xyXG5cdFx0aGVpZ2h0OiAxODBycHg7XHJcblx0XHR3aWR0aDogMTgwcnB4O1xyXG5cdFx0bWFyZ2luLXRvcDogMTcwcnB4O1xyXG5cdH1cclxuXHJcblx0LmxvZ29faW5wdXQge1xyXG5cdFx0aGVpZ2h0OiA0MHJweDtcclxuXHRcdHdpZHRoOiA0MHJweDtcclxuXHRcdG1hcmdpbi1sZWZ0OiA0MHJweDtcclxuXHR9XHJcblxyXG5cdC5sb2dvX2ljb24ge1xyXG5cdFx0aGVpZ2h0OiA1MHJweDtcclxuXHRcdHdpZHRoOiA1MHJweDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAxNXJweDtcclxuXHRcdG1hcmdpbi10b3A6IDIwcnB4O1xyXG5cdH1cclxuXHJcblx0Lm11aS1jb250ZW50IHtcclxuXHRcdGhlaWdodDogMTAwJTtcclxuXHRcdHBhZGRpbmctdG9wOiAxNDBycHg7XHJcblx0XHRiYWNrZ3JvdW5kOiAjRkZGRkZGO1xyXG5cdFx0ei1pbmRleDogMTtcclxuXHR9XHJcblxyXG5cdC5tdWktaW5wdXQtZ3JvdXAgLmxhX2ljb24ge1xyXG5cdFx0d2lkdGg6IDEwMHJweDtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XHJcblx0XHRsaW5lLWhlaWdodDogMS41O1xyXG5cdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRwYWRkaW5nOiA3cHggMTNweDtcclxuXHR9XHJcblxyXG5cdC5tdWktaW5wdXQtZ3JvdXAgLm11aS1pbnB1dC1yb3cge1xyXG5cdFx0aGVpZ2h0OiA4NXJweDtcclxuXHRcdHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuXHRcdGNsZWFyOiBsZWZ0O1xyXG5cdFx0b3ZlcmZsb3c6IGhpZGRlbjtcclxuXHR9XHJcblxyXG5cdC5tdWktaW5wdXQtcm93OmZpcnN0LWNoaWxkIHtcclxuXHRcdGJvcmRlci10b3A6IDFweCBzb2xpZCAjYzhjN2NjO1xyXG5cdH1cclxuXHJcblx0Lm11aS1pbnB1dC1yb3c6bGFzdC1jaGlsZCB7XHJcblx0XHRib3JkZXItYm90dG9tOiAxcHggc29saWQgI2M4YzdjYztcclxuXHR9XHJcblxyXG5cdC5tdWktaW5wdXQtZ3JvdXAgLm11aS1pbnB1dC1yb3c6bGFzdC1jaGlsZDphZnRlciB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdH1cclxuXHJcblx0Lm11aS1pbnB1dC1ncm91cCAubXVpLWlucHV0LXJvdzphZnRlciB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHRyaWdodDogMDtcclxuXHRcdGJvdHRvbTogMDtcclxuXHRcdGxlZnQ6IDE1cHg7XHJcblx0XHRoZWlnaHQ6IDFweDtcclxuXHRcdGNvbnRlbnQ6ICcnO1xyXG5cdFx0dHJhbnNmb3JtOiBzY2FsZVkoLjUpO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2M4YzdjYztcclxuXHR9XHJcblxyXG5cdC5tdWktaW5wdXQtcm93IGlucHV0IHtcclxuXHRcdGZvbnQtZmFtaWx5OiAnSGVsdmV0aWNhIE5ldWUnLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XHJcblx0XHRmb250LXNpemU6IDE1cHg7XHJcblx0XHR3aWR0aDogNDgwcnB4O1xyXG5cdFx0LyogZmxvYXQ6IHJpZ2h0OyAqL1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMDtcclxuXHRcdHBhZGRpbmctbGVmdDogMjBycHg7XHJcblx0XHQvKiBwYWRkaW5nLXJpZ2h0OiAxMHJweDsgKi9cclxuXHRcdC8qIGxpbmUtaGVpZ2h0OiAzMHJweDsgKi9cclxuXHRcdGhlaWdodDogODVycHg7XHJcblx0XHQvKiBwYWRkaW5nOiA3cHggNDBweCA3cHggMHB4OyAqL1xyXG5cdFx0LXdlYmtpdC11c2VyLXNlbGVjdDogdGV4dDtcclxuXHRcdC8qIGJvcmRlcjogMDsgKi9cclxuXHRcdC8qIGJvcmRlci1yYWRpdXM6IDA7ICovXHJcblx0XHRib3gtc2hhZG93OiBub25lO1xyXG5cdFx0b3V0bGluZTogMDtcclxuXHRcdGJhY2tncm91bmQ6IDAgMDtcclxuXHRcdC13ZWJraXQtYXBwZWFyYW5jZTogbm9uZTtcclxuXHR9XHJcblxyXG5cdC5tdWktaW5wdXQtZ3JvdXAgbGFiZWwubXVpLW5hdmlnYXRlLXJpZ2h0IHtcclxuXHRcdGZvbnQtc2l6ZTogMjVweDtcclxuXHRcdGZsb2F0OiByaWdodDtcclxuXHRcdHBhZGRpbmc6IDA7XHJcblx0XHR3aWR0aDogODBycHg7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDVycHg7XHJcblx0XHRtYXJnaW4tdG9wOiAtODhycHg7XHJcblx0XHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0fVxyXG5cclxuXHRidXR0b24uYnRuX2xvZ2luIHtcclxuXHRcdG1hcmdpbi10b3A6IDUwcnB4O1xyXG5cdFx0cGFkZGluZzogMjBycHg7XHJcblx0XHRsaW5lLWhlaWdodDogMS41O1xyXG5cdFx0YmFja2dyb3VuZDogIzI3QTZFMTtcclxuXHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdGNvbG9yOiAjZmZmO1xyXG5cdH1cclxuPC9zdHlsZT5cclxuXHJcblxyXG48dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJcIiBzdHlsZT1cIndpZHRoOiAxMDB2dztoZWlnaHQ6IDY0dmg7XCI+XHJcblx0XHQ8ZGl2IGlkPVwiaGVhZHJcIiBjbGFzcz1cIm11aS1iYXIgbXVpLWJhci1uYXZcIj5cclxuXHRcdFx0PGltYWdlIGNsYXNzPVwibG9nb1wiIHNyYz1cIi4uLy4uL2ltYWdlcy9sb2dpbi9tb2JveF9sb2dfMjAwLnBuZ1wiPjwvaW1hZ2U+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDxkaXYgY2xhc3M9XCJtdWktY29udGVudFwiPlxyXG5cdFx0XHQ8Zm9ybSBpZD0nbG9naW4tZm9ybScgY2xhc3M9XCJtdWktaW5wdXQtZ3JvdXBcIj5cclxuXHRcdFx0XHQ8YSBocmVmPVwiamF2YXNjcmlwdDo7XCIgY2xhc3M9XCJTZXRTZXJ2ZXJcIiBAY2xpY2s9XCJpbnB1dERpYWxvZ1RvZ2dsZVwiPumFjee9rjwvYT5cclxuXHRcdFx0XHQ8IS0tIDxkaXYgY2xhc3M9XCJtdWktaW5wdXQtcm93XCI+XHJcblx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJsYV9pY29uXCI+PGltYWdlIGNsYXNzPVwibG9nb19pbnB1dFwiIHNyYz1cIi4uLy4uL2ltYWdlcy9sb2dpbi9zdnJfMzAucG5nXCI+PC9pbWFnZT48L2xhYmVsPlxyXG5cdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtdWktaW5wdXRcIiB2LW1vZGVsPVwidXNlclNlcnZlclwiIHBsYWNlaG9sZGVyPVwi5pyN5Yqh5Zmo5Zyw5Z2AXCI+XHJcblx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJtdWktbmF2aWdhdGUtcmlnaHRcIiBpZD1cInNlcnNlbFwiPjxpbWFnZSBjbGFzcz1cImxvZ29faWNvblwiIHNyYz1cIi4uLy4uL2ltYWdlcy9sb2dpbi9zZWxfbGVmdC5wbmdcIiA+PC9pbWFnZT48L2xhYmVsPlxyXG5cdFx0XHRcdDwvZGl2PiAtLT5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibXVpLWlucHV0LXJvd1wiPlxyXG5cdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFfaWNvblwiPlxyXG5cdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJsb2dvX2lucHV0XCIgc3JjPVwiLi4vLi4vaW1hZ2VzL2xvZ2luL3BlcnNvbl8zMC5wbmdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwibXVpLWlucHV0XCIgdi1tb2RlbD1cInVzZXJOYW1lXCIgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXotKblj7dcIj5cclxuXHRcdFx0XHRcdDwhLS0gPGxhYmVsIGNsYXNzPVwibXVpLW5hdmlnYXRlLXJpZ2h0XCIgaWQ9XCJuYW1zZWxcIj48aW1hZ2UgY2xhc3M9XCJsb2dvX2ljb25cIiBzcmM9XCIuLi8uLi9pbWFnZXMvbG9naW4vdXNlci1waG90by5wbmc8L2ltYWdlPjwvbGFiZWw+IC0tPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtdWktaW5wdXQtcm93XCI+XHJcblx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJsYV9pY29uXCI+XHJcblx0XHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cImxvZ29faW5wdXRcIiBzcmM9XCIuLi8uLi9pbWFnZXMvbG9naW4vbG9ja18zMC5wbmdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBjbGFzcz1cIm11aS1pbnB1dFwiIHYtbW9kZWw9XCJ1c2VyUHdkXCIgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXlr4bnoIFcIj5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8Y2hlY2tib3gtZ3JvdXAgY2xhc3M9XCJjaGVja19yZW1lbWJlclB3ZFwiIEBjaGFuZ2U9XCJyZW1lbWJlclB3ZFwiPlxyXG5cdFx0XHRcdFx0PGxhYmVsPlxyXG5cdFx0XHRcdFx0XHQ8Y2hlY2tib3ggdmFsdWU9XCIxXCIgOmNoZWNrZWQ9XCJpc2NoZWNrZWRcIiAvPlxyXG5cdFx0XHRcdFx0XHQ8dGV4dD7orrDkvY/lr4bnoIE8L3RleHQ+XHJcblx0XHRcdFx0XHQ8L2xhYmVsPlxyXG5cdFx0XHRcdDwvY2hlY2tib3gtZ3JvdXA+XHJcblx0XHRcdDwvZm9ybT5cclxuXHRcdFx0PGJ1dHRvbiBpZD0nbG9naW4nIHR5cGU9XCJkZWZhdWx0XCIgQHRhcD1cImxvZ2luZFwiIGNsYXNzPVwiYnRuX2xvZ2luXCI+e3tsb2dpbn19PC9idXR0b24+XHJcblx0XHRcdDxwIHN0eWxlPVwiZmxvYXQ6cmlnaHQ7IG1hcmdpbjogMTBweCAxMHB4O2NvbG9yOiNjOGM3Y2NcIj5cclxuXHRcdFx0XHQ8c3Bhbj7niYjmnKzlj7fvvJo8L3NwYW4+XHJcblx0XHRcdFx0PHNwYW4+e3t2ZXJzaW9ufX08L3NwYW4+XHJcblx0XHRcdDwvcD5cclxuXHRcdFx0PGRpdiBjbGFzcz1cIlwiXHJcblx0XHRcdFx0c3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7YmFja2dyb3VuZDogd2hpdGU7Ym9yZGVyLXRvcDogMHB4IHNvbGlkICNDMEMwQzA7Y29sb3I6ICM3Y2QwZjg7cG9zaXRpb246IGFic29sdXRlO2JvdHRvbTogMDt3aWR0aDogMTAwJTtoZWlnaHQ6IDI0cHg7cGFkZGluZy10b3A6M3B4O2ZvbnQtc2l6ZTogMTFweDtcIj5cclxuXHRcdFx0PC9kaXY+XHJcblx0XHQ8L2Rpdj5cclxuXHRcdDx2aWV3PlxyXG5cdFx0XHQ8IS0tIOi+k+WFpeahhuekuuS+iyAtLT5cclxuXHRcdFx0PHVuaS1wb3B1cCByZWY9XCJpbnB1dERpYWxvZ1wiIHR5cGU9XCJkaWFsb2dcIj5cclxuXHRcdFx0XHQ8dW5pLXBvcHVwLWRpYWxvZyByZWY9XCJpbnB1dENsb3NlXCIgbW9kZT1cImlucHV0XCIgdGl0bGU9XCLorr7nva5cIiA6dmFsdWU9XCJ1c2VyU2VydmVyXCIgcGxhY2Vob2xkZXI9XCLor7fovpPlhaXlhoXlrrlcIlxyXG5cdFx0XHRcdFx0QGNvbmZpcm09XCJkaWFsb2dJbnB1dENvbmZpcm1cIj48L3VuaS1wb3B1cC1kaWFsb2c+XHJcblx0XHRcdDwvdW5pLXBvcHVwPlxyXG5cdFx0XHQ8IS0tIOeJiOacrOWNh+e6p+W8ueeql+W8gOWniyAtLT5cclxuXHRcdFx0PHVuaS1wb3B1cCByZWY9XCJwcm9tb3Rpb25cIiB0eXBlPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwcm9tb3Rpb25cIiBzdHlsZT1cIndpZHRoOiA3MDBycHg7cGFkZGluZzoyMHJweCA0MHJweDsgYmFja2dyb3VuZDogd2hpdGU7Zm9udC1zaXplOiAzNnJweDtcIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3BlcmF0ZXNcIiB2LWlmPVwic2hvd0J0bnM9PXRydWVcIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXI7cGFkZGluZy10b3A6MjBycHg7cGFkZGluZy1ib3R0b206IDQwcnB4O1wiPlxyXG5cdFx0XHRcdFx0XHRcdOezu+e7n+acieaWsOeJiOacrO+8jOaYr+WQpumcgOimgeabtOaWsFxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDx0ZXh0IEBjbGljaz1cImNhbmNlbFwiXHJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Y29sb3I6ICM3Y2QwZjg7d2lkdGg6IDUwJTsgdGV4dC1hbGlnbjogY2VudGVyO1wiPuWPlua2iDwvdGV4dD5cclxuXHRcdFx0XHRcdFx0PHRleHQgQGNsaWNrPVwic3VyZVwiXHJcblx0XHRcdFx0XHRcdFx0c3R5bGU9XCJkaXNwbGF5OiBpbmxpbmUtYmxvY2s7Y29sb3I6ICM3Y2QwZjg7d2lkdGg6IDUwJTsgdGV4dC1hbGlnbjogY2VudGVyO1wiPuehruiupDwvdGV4dD5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3BlcmF0ZXNcIiB2LWVsc2U+XHJcblx0XHRcdFx0XHRcdDxjbWQtcHJvZ3Jlc3MgOnBlcmNlbnQ9XCJwZXJjZW50YWdlXCIgc3Ryb2tlLWNvbG9yPVwibGluZWFyLWdyYWRpZW50KHRvIHJpZ2h0LCAjZWYzMmQ5LCAjODlmZmZkKVwiPlxyXG5cdFx0XHRcdFx0XHQ8L2NtZC1wcm9ncmVzcz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdW5pLXBvcHVwPlxyXG5cdFx0XHQ8IS0tIOeJiOacrOWNh+e6p+W8ueeql+e7k+adnyAtLT5cclxuXHRcdDwvdmlldz5cclxuXHJcblx0PC92aWV3PlxyXG5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcblx0aW1wb3J0IGNtZFByb2dyZXNzIGZyb20gXCJAL2NvbXBvbmVudHMvY21kLXByb2dyZXNzL2NtZC1wcm9ncmVzcy52dWVcIlxyXG5cdC8vIGltcG9ydCB7XHJcblx0Ly8gXHRtYXBTdGF0ZSxcclxuXHQvLyBcdG1hcE11dGF0aW9ucyxcclxuXHQvLyBcdG1hcEFjdGlvbnMgLFxyXG5cdC8vIH0gZnJvbSAndnVleCdcclxuXHRleHBvcnQgZGVmYXVsdCB7XHJcblx0XHRjb21wb25lbnRzOiB7XHJcblx0XHRcdGNtZFByb2dyZXNzXHJcblx0XHR9LFxyXG5cdFx0ZGF0YSgpIHtcclxuXHRcdFx0Ly/ojrflj5blhajlsYDlj4LmlbDvvJp1cmwt5pyN5Yqh5Zmo5Zyw5Z2AXHJcblx0XHRcdHZhciBzZXJ2ZXIgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3NlcnZlcicpO1xyXG5cdFx0XHR2YXIgYWNjb3VudCA9IHVuaS5nZXRTdG9yYWdlU3luYygnYWNjb3VudCcpO1xyXG5cdFx0XHR2YXIgcGFzc3dvcmQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3Bhc3N3b3JkJyk7XHJcblx0XHRcdHZhciB1cmwgPSB0aGlzLiRzdG9yZS5zdGF0ZS51cmw7XHJcblx0XHRcdHZhciB1c2VybmFtZSA9IHRoaXMuJHN0b3JlLnN0YXRlLnVzZXJuYW1lO1xyXG5cdFx0XHR2YXIgdXNlcnB3ZCA9IHRoaXMuJHN0b3JlLnN0YXRlLnVzZXJwd2Q7XHJcblx0XHRcdHZhciBpc2NoZWNrZWQgPSBmYWxzZTtcclxuXHRcdFx0aWYgKCFzZXJ2ZXIpXHJcblx0XHRcdFx0c2VydmVyID0gdXJsO1xyXG5cdFx0XHRpZiAoIWFjY291bnQpXHJcblx0XHRcdFx0YWNjb3VudCA9IHVzZXJuYW1lO1xyXG5cdFx0XHRpZiAoYWNjb3VudCAmJiBwYXNzd29yZClcclxuXHRcdFx0XHRpc2NoZWNrZWQgPSB0cnVlO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyh1cmwpO1xyXG5cdFx0XHRyZXR1cm4ge1xyXG5cdFx0XHRcdGxvZ2luOiBcIuW8gOWni+eZu+W9lVwiLFxyXG5cdFx0XHRcdHVzZXJTZXJ2ZXI6IHNlcnZlcixcclxuXHRcdFx0XHR1c2VyTmFtZTogYWNjb3VudCxcclxuXHRcdFx0XHR1c2VyUHdkOiBwYXNzd29yZCxcclxuXHRcdFx0XHRpc2NoZWNrZWQ6IGlzY2hlY2tlZCxcclxuXHRcdFx0XHR2ZXJzaW9uOiBcIjEuMC4wXCIsXHJcblx0XHRcdFx0ZG93bmxvYWRVcmw6IFwiXCIsIC8v5a6J5Y2TYXBw5LiL6L296ZO+5o6lXHJcblx0XHRcdFx0cGVyY2VudGFnZTogMCwgLy/kuIvovb3ov5vluqZcclxuXHRcdFx0XHRzaG93QnRuczogdHJ1ZSxcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG9uU2hvdygpIHtcclxuXHRcdFx0dGhpcy5xdWVyeSgpOyAvL+eJiOacrOWNh+e6p1xyXG5cdFx0fSxcclxuXHRcdHdhdGNoOiB7XHJcblx0XHRcdC8v55uR5ZCs6L+b5bqm5p2hXHJcblx0XHRcdHBlcmNlbnRhZ2UoZSkge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGUpO1xyXG5cdFx0XHRcdGlmIChlID49IDEwMCkge1xyXG5cdFx0XHRcdFx0dGhpcy4kcmVmcy5wcm9tb3Rpb24uY2xvc2UoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHQvLyBjb21wdXRlZDogbWFwU3RhdGUoe1xyXG5cdFx0Ly8gXHQvLyDku45zdGF0ZeS4reaLv+WIsOaVsOaNriDnrq3lpLTlh73mlbDlj6/kvb/ku6PnoIHmm7TnroDnu4NcclxuXHRcdC8vIFx0aGFzTG9naW46IHN0YXRlID0+IHN0YXRlLmhhc0xvZ2luLFxyXG5cdFx0Ly8gXHRsb2dpbnByb3ZpZGVyOiBzdGF0ZSA9PiBzdGF0ZS5sb2dpblByb3ZpZGVyLFxyXG5cdFx0Ly8gXHRhcHBpbmZvOnN0YXRlPT5zdGF0ZS5hcHBJbmZvXHJcblx0XHQvLyB9KSxcclxuXHRcdG1ldGhvZHM6IHtcclxuXHRcdFx0Ly/mn6Xor6LlvZPliY3niYjmnKzlj7dcclxuXHRcdFx0cXVlcnkoKSB7XHJcblx0XHRcdFx0Ly8gI2lmZGVmIEFQUC1QTFVTXHJcblx0XHRcdFx0cGx1cy5ydW50aW1lLmdldFByb3BlcnR5KHBsdXMucnVudGltZS5hcHBpZCwgKHdndGluZm8pID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHdndGluZm8pO1xyXG5cdFx0XHRcdFx0dmFyIHZlcnNpb24gPSB3Z3RpbmZvLnZlcnNpb247IC8v5a6i5oi356uv54mI5pys5Y+3XHJcblx0XHRcdFx0XHQvLyB2YXIgdmVyc2lvbkNvZGUgPSBwYXJzZUludCh3Z3RpbmZvLnZlcnNpb25Db2RlKTsgLy/lrqLmiLfnq6/niYjmnKzlj7fnvJbnoIFcclxuXHRcdFx0XHRcdHRoaXMuY2hlY2sodmVyc2lvbikgLy/mo4DmtYvmmK/lkKbpnIDopoHmm7TmlrBcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdC8vI2VuZGlmXHJcblx0XHRcdH0sXHJcblx0XHRcdC8v5qOA5rWL5piv5ZCm6ZyA6KaB5pu05pawXHJcblx0XHRcdGFzeW5jIGNoZWNrKHZlcnNpb24pIHtcclxuXHRcdFx0XHRpZiAoIXRoaXMudXNlclNlcnZlcikge1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxyXG5cdFx0XHRcdFx0XHRjb250ZW50OiBcIuacqui+k+WFpee9keermeWcsOWdgO+8jOivt+mHjeaWsOmFjee9rui+k+WFpe+8gVwiLFxyXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcclxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgZGF0YUluZm8gPSB7XHJcblx0XHRcdFx0XHRzZXJ2ZXI6IHRoaXMudXNlclNlcnZlclxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0dldEFwa1ZlcnNpb25JbmZvJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRsZXQgcmVzcCA9IHN1Y2Nlc3MuZGF0YTtcclxuXHRcdFx0XHRcdFx0aWYgKHJlc3ApIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBjb25zdCBvYmogPSByZXNwLmRhdGEuZmlsdGVyKGl0ZW0gPT4ge1xyXG5cdFx0XHRcdFx0XHRcdC8vIFx0cmV0dXJuIGl0ZW0uZ3JvdXBOYW1lID09ICd2ZXJzaW9uJ1xyXG5cdFx0XHRcdFx0XHRcdC8vIH0pXHJcblx0XHRcdFx0XHRcdFx0Ly/ojrflj5blvZPliY3niYjmnKzlj7dcclxuXHRcdFx0XHRcdFx0XHRjb25zdCBWZXJzaW9uTmFtZSA9IHJlc3AuVmVyc2lvbk5hbWU7IC8v5pu05paw5YyF5ZCN56ewXHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgVmVyc2lvbkNvZGUgPSByZXNwLlZlcnNpb25Db2RlOyAvL+eJiOacrOe8lueggVxyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHZlcnNpb25OdW0gPSByZXNwLlZlcnNpb247IC8v5pyN5Yqh56uv54mI5pys5Y+3XHJcblx0XHRcdFx0XHRcdFx0Ly8gdGhpcy5kb3dubG9hZFVybCA9IHJlc3AuUGRhVXJsK1wiL1wiK1ZlcnNpb25OYW1lOyAvL2FwcOS4i+i9vemTvuaOpVxyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZG93bmxvYWRVcmwgPSBcImh0dHA6Ly9cIiArIHRoaXMudXNlclNlcnZlciArIFwiL1Byb2dyYW0vXCIgKyBWZXJzaW9uTmFtZTsgLy9hcHDkuIvovb3pk77mjqV0aGlzLlxyXG5cdFx0XHRcdFx0XHRcdHZhciBpc3ZlciA9IHRoaXMuY29tcGFyZSh2ZXJzaW9uTnVtLHZlcnNpb24pO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChpc3Zlcikge1xyXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy4kcmVmcy5wcm9tb3Rpb24ub3BlbigpO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn5b2T5YmN5bey5piv5pyA5paw54mI5pysJylcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivr1wiLFxyXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxyXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor69cIixcclxuXHRcdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnID8gZXguZXJyTXNnIDogZXgubWVzc2FnZSxcclxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXHJcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Y29tcGFyZShjdXJWLCByZXFWKSB7XHJcblx0XHRcdFx0dmFyIGFycjEgPSBjdXJWLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcclxuXHRcdFx0ICAgIHZhciBhcnIyID0gcmVxVi50b1N0cmluZygpLnNwbGl0KCcuJyk7XHJcblx0XHRcdCAgICAvL+WwhuS4pOS4queJiOacrOWPt+aLhuaIkOaVsOWtl1xyXG5cdFx0XHQgICAgdmFyIG1pbkwgPSBNYXRoLm1pbihhcnIxLmxlbmd0aCwgYXJyMi5sZW5ndGgpO1xyXG5cdFx0XHQgICAgdmFyIHBvcyA9IDA7IC8v5b2T5YmN5q+U6L6D5L2NXHJcblx0XHRcdCAgICB2YXIgZGlmZiA9IDA7IC8v5b2T5YmN5Li65L2N5q+U6L6D5piv5ZCm55u4562JXHJcblx0XHRcdCAgICB2YXIgZmxhZyA9IGZhbHNlO1xyXG5cdFx0XHQgICAgLy/pgJDkuKrmr5TovoPlpoLmnpzlvZPliY3kvY3nm7jnrYnliJnnu6fnu63mr5TovoPkuIvkuIDkvY1cclxuXHRcdFx0ICAgIHdoaWxlIChwb3MgPCBtaW5MKSB7XHJcblx0XHRcdCAgICAgICAgZGlmZiA9IHBhcnNlSW50KGFycjFbcG9zXSkgLSBwYXJzZUludChhcnIyW3Bvc10pO1xyXG5cdFx0XHQgICAgICAgIGlmIChkaWZmID09IDApIHtcclxuXHRcdFx0ICAgICAgICAgICAgcG9zKys7XHJcblx0XHRcdCAgICAgICAgICAgIGNvbnRpbnVlO1xyXG5cdFx0XHQgICAgICAgIH0gZWxzZSBpZiAoZGlmZiA+IDApIHtcclxuXHRcdFx0ICAgICAgICAgICAgZmxhZyA9IHRydWU7XHJcblx0XHRcdCAgICAgICAgICAgIGJyZWFrO1xyXG5cdFx0XHQgICAgICAgIH0gZWxzZSB7XHJcblx0XHRcdCAgICAgICAgICAgIGZsYWcgPSBmYWxzZTtcclxuXHRcdFx0ICAgICAgICAgICAgYnJlYWs7XHJcblx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHQgICAgfVxyXG5cdFx0XHQgICAgcmV0dXJuIGZsYWc7XHJcblx0XHRcdH0sXHJcblx0XHRcdC8v56Gu6K6k5pu05pawXHJcblx0XHRcdHN1cmUoKSB7XHJcblx0XHRcdFx0Ly/lhbPpl63mjInpkq5cclxuXHRcdFx0XHR0aGlzLnNob3dCdG5zID0gZmFsc2U7XHJcblx0XHRcdFx0bGV0IHN5cyA9IHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtIC8v5qOA5p+l57O757ufXHJcblx0XHRcdFx0aWYgKHN5cyA9PSBcImlvc1wiKSB7XHJcblx0XHRcdFx0XHQvLyB0aGlzLmdldElvc0luZm8oKVxyXG5cdFx0XHRcdH0gZWxzZSBpZiAoc3lzID09IFwiYW5kcm9pZFwiKSB7XHJcblx0XHRcdFx0XHR0aGlzLnVwZGF0ZUFQUCgpIC8vIOiwg+eUqOS4i+i9veaWueazlWFwcOWGheS4i+i9vVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Ly/lj5bmtojmm7TmlrBcclxuXHRcdFx0Y2FuY2VsKCkge1xyXG5cdFx0XHRcdHRoaXMuJHJlZnMucHJvbW90aW9uLmNsb3NlKCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdC8v6ZO+5o6l6Iu55p6c5ZWG5bqX5LiL6L29XHJcblx0XHRcdC8vIGdldElvc0luZm8oKSB7XHJcblx0XHRcdC8vIFx0bGV0IGFwcGxlSWQgPSBcIuS9oOeahGFwcGlkXCJcclxuXHRcdFx0Ly8gXHRwbHVzLnJ1bnRpbWUubGF1bmNoQXBwbGljYXRpb24oe1xyXG5cdFx0XHQvLyBcdFx0YWN0aW9uOiBcIml0bXMtYXBwczovL2l0dW5lcy5hcHBsZS5jb20vY24vYXBwL2lkXCIgKyBhcHBsZUlkICsgXCI/bXQ9OFwiXHJcblx0XHRcdC8vIFx0fSwgZnVuY3Rpb24oZSkge1xyXG5cdFx0XHQvLyBcdFx0Y29uc29sZS5sb2coJ09wZW4gc3lzdGVtIGRlZmF1bHQgYnJvd3NlciBmYWlsZWQ6ICcgKyBlLm1lc3NhZ2UpO1xyXG5cdFx0XHQvLyBcdH0pO1xyXG5cdFx0XHQvLyB9LFxyXG5cdFx0XHQvL+WuieWNk+abtOaWsFxyXG5cdFx0XHR1cGRhdGVBUFAoKSB7XHJcblx0XHRcdFx0bGV0IF90aGlzID0gdGhpcztcclxuXHRcdFx0XHRsZXQgdXJsID0gdGhpcy5kb3dubG9hZFVybDtcclxuXHRcdFx0XHQvLyDlrpjmlrlBUElcclxuXHRcdFx0XHR2YXIgZHRhc2sgPSBwbHVzLmRvd25sb2FkZXIuY3JlYXRlRG93bmxvYWQodXJsLCB7fSwgZnVuY3Rpb24oZCwgc3RhdHVzKSB7XHJcblx0XHRcdFx0XHQvL2TkuLrkuIvovb3nmoTmlofku7blr7nosaFcclxuXHRcdFx0XHRcdGlmIChzdGF0dXMgPT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdC8v5LiL6L295oiQ5YqfLGQuZmlsZW5hbWXmmK/mlofku7blnKjkv53lrZjlnKjmnKzlnLDnmoTnm7jlr7not6/lvoTvvIzkvb/nlKjkuIvpnaLnmoRBUEnlj6/ovazkuLrlubPlj7Dnu53lr7not6/lvoRcclxuXHRcdFx0XHRcdFx0dmFyIGZpbGVTYXZlVXJsID0gcGx1cy5pby5jb252ZXJ0TG9jYWxGaWxlU3lzdGVtVVJMKGQuZmlsZW5hbWUpO1xyXG5cdFx0XHRcdFx0XHRwbHVzLnJ1bnRpbWUub3BlbkZpbGUoZC5maWxlbmFtZSk7IC8v6YCJ5oup6L2v5Lu25omT5byA5paH5Lu2XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdGljb246ICdub25lJyxcclxuXHRcdFx0XHRcdFx0XHR0aXRsZTogJ+abtOaWsOaIkOWKnydcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdF90aGlzLiRyZWZzLnByb21vdGlvbi5jbG9zZSgpO1xyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0Ly/kuIvovb3lpLHotKVcclxuXHRcdFx0XHRcdFx0cGx1cy5kb3dubG9hZGVyLmNsZWFyKCk7IC8v5riF6Zmk5LiL6L295Lu75YqhXHJcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdGljb246ICdub25lJyxcclxuXHRcdFx0XHRcdFx0XHR0aXRsZTogJ+abtOaWsOWksei0pSdcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdF90aGlzLnNob3dCdG5zID0gZmFsc2U7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHQvL+W8gOWni+S4i+i9vVxyXG5cdFx0XHRcdGR0YXNrLnN0YXJ0KCk7XHJcblx0XHRcdFx0Ly/nm5HlkKzkuIvovb3ov5vluqZcclxuXHRcdFx0XHRkdGFzay5hZGRFdmVudExpc3RlbmVyKCdzdGF0ZWNoYW5nZWQnLCBmdW5jdGlvbih0YXNrKSB7XHJcblx0XHRcdFx0XHRfdGhpcy5wZXJjZW50YWdlID0gcGFyc2VJbnQoXHJcblx0XHRcdFx0XHRcdChwYXJzZUZsb2F0KHRhc2suZG93bmxvYWRlZFNpemUpIC8gcGFyc2VGbG9hdCh0YXNrLnRvdGFsU2l6ZSkpICogMTAwKTtcclxuXHRcdFx0XHRcdGlmIChfdGhpcy5wZXJjZW50YWdlID09IDEwMCkge1xyXG5cdFx0XHRcdFx0XHRfdGhpcy4kcmVmcy5wcm9tb3Rpb24uY2xvc2UoKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCfkuIvovb3ov5vluqbvvJonICsgX3RoaXMucGVyY2VudGFnZSk7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIC4uLm1hcE11dGF0aW9ucyh7XHJcblx0XHRcdC8vIFx0bXV0YXRMb2dpbjonbG9naW4nXHJcblx0XHRcdC8vIH0pLFxyXG5cdFx0XHQvLyAuLi5tYXBBY3Rpb25zKHtcclxuXHRcdFx0Ly8gXHRhY3Rpb25Mb2dpbjonbG9naW4nXHJcblx0XHRcdC8vIH0pLFxyXG5cdFx0XHRpbnB1dERpYWxvZ1RvZ2dsZSgpIHtcclxuXHRcdFx0XHR0aGlzLiRyZWZzLmlucHV0RGlhbG9nLm9wZW4oKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRkaWFsb2dJbnB1dENvbmZpcm0odmFsKSB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2codmFsKTtcclxuXHRcdFx0XHQvLyB1bmkuc2hvd0xvYWRpbmcoe1xyXG5cdFx0XHRcdC8vIFx0dGl0bGU6ICcz56eS5ZCO5Lya5YWz6ZetJ1xyXG5cdFx0XHRcdC8vIH0pXHJcblx0XHRcdFx0Ly8gc2V0VGltZW91dCgoKSA9PiB7XHJcblx0XHRcdFx0Ly8gdW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0dGhpcy51c2VyU2VydmVyID0gdmFsO1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnc2VydmVyJywgdmFsKTtcclxuXHRcdFx0XHQvLyB0aGlzLnZhbHVlID0gdmFsXHJcblx0XHRcdFx0Ly8g5YWz6Zet56qX5Y+j5ZCO77yM5oGi5aSN6buY6K6k5YaF5a65XHJcblx0XHRcdFx0dGhpcy4kcmVmcy5pbnB1dERpYWxvZy5jbG9zZSgpO1xyXG5cclxuXHRcdFx0XHR0aGlzLnF1ZXJ5KCk7IC8v54mI5pys5Y2H57qnXHJcblx0XHRcdFx0Ly8gfSwgMzAwMClcclxuXHRcdFx0XHQvLyB9LCAzMDAwKVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRyZW1lbWJlclB3ZChlKSB7IC8v6K6w5L2P5a+G56CBXHJcblx0XHRcdFx0Y29uc29sZS5sb2coZS50YXJnZXQpO1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnYWNjb3VudCcsICcnKTtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ3Bhc3N3b3JkJywgJycpO1xyXG5cdFx0XHRcdGlmIChlLnRhcmdldC52YWx1ZVswXSA9PSAnMScpIHtcclxuXHRcdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnYWNjb3VudCcsIHRoaXMudXNlck5hbWUpO1xyXG5cdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdwYXNzd29yZCcsIHRoaXMudXNlclB3ZCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvLyBnZXRDb29raWUoa2V5KXtcclxuXHRcdFx0Ly8gXHRpZihkb2N1bWVudC5jb29raWUubGVuZ3RoPjApe1xyXG5cdFx0XHQvLyBcdFx0dmFyIHN0YXJ0ID0gZG9jdW1lbnQuY29va2llLmluZGV4T2Yoa2V5ICsnPScpO1xyXG5cdFx0XHQvLyBcdFx0aWYoc3RhcnQgIT09IC0xKXtcclxuXHRcdFx0Ly8gXHRcdFx0c3RhcnQgPSBzdGFydCtrZXkubGVuZ3RoKzE7XHJcblx0XHRcdC8vIFx0XHRcdHZhciBlbmQgPSBkb2N1bWVudC5jb29raWUuaW5kZXhPZignOycsc3RhcnQpO1xyXG5cdFx0XHQvLyBcdFx0XHRpZihlbmQgPT09IC0xKSBlbmQ9ZG9jdW1lbnQuY29va2llLmxlbmd0aDtcclxuXHRcdFx0Ly8gXHRcdFx0cmV0dXJuIGRvY3VtZW50LmNvb2tpZS5zdWJzdHJpbmcoc3RhcnQsZW5kKTtcclxuXHRcdFx0Ly8gXHRcdH1cclxuXHRcdFx0Ly8gXHR9XHJcblx0XHRcdC8vIFx0cmV0dXJuICcnO1xyXG5cdFx0XHQvLyB9LFxyXG5cdFx0XHQvLyBzZXRDb29raWUoY05hbWUsdmFsdWUsZXhwaXJlZGF5cyl7XHJcblx0XHRcdC8vIFx0dmFyIGV4ZGF0ZSA9IG5ldyBEYXRlKCk7XHJcblx0XHRcdC8vIFx0ZXhkYXRlLnNldERhdGUoZXhkYXRlLmdldERhdGUoKSxleHBpcmVkYXlzKVxyXG5cdFx0XHQvLyBcdGRvY3VtZW50LmNvb2tpZSA9IGNOYW1lKyc9JysgZG9jdW1lbnRVUkxDb21wb25lbnQodmFsdWUpK1xyXG5cdFx0XHQvLyBcdCgoZXhwaXJlZGF5cz09bnVsbCk/Jyc6JztleHBpcmVzPScrZXhkYXRlLnRvR01UU3RyaW5nKCkpO1xyXG5cclxuXHRcdFx0Ly8gfSxcclxuXHRcdFx0bG9naW5kKCkge1xyXG5cdFx0XHRcdGlmICghdGhpcy51c2VyU2VydmVyKSB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwi5pyq6L6T5YWl572R56uZ5Zyw5Z2A77yM6K+36YeN5paw6YWN572u6L6T5YWl77yBXCIsXHJcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICghdGhpcy51c2VyTmFtZSkge1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxyXG5cdFx0XHRcdFx0XHRjb250ZW50OiBcIuacqui+k+WFpeeUqOaIt+WQje+8jOivt+mHjeaWsOi+k+WFpe+8gVwiLFxyXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcclxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAoIXRoaXMudXNlclB3ZCkge1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxyXG5cdFx0XHRcdFx0XHRjb250ZW50OiBcIuacqui+k+WFpeWvhuegge+8jOivt+mHjeaWsOi+k+WFpe+8gVwiLFxyXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcclxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQvL+ajgOafpSBcIueZu+W9leeKtuaAgS/plIHlsY/nirbmgIFcIiDnu5PmnZ9cclxuXHRcdFx0XHR2YXIgbG9naW5JbmZvID0ge1xyXG5cdFx0XHRcdFx0c2VydmVyOiB0aGlzLnVzZXJTZXJ2ZXIsXHJcblx0XHRcdFx0XHR1bmFtZTogdGhpcy51c2VyTmFtZSxcclxuXHRcdFx0XHRcdHB3ZDogdGhpcy51c2VyUHdkLFxyXG5cdFx0XHRcdFx0Y25hbWU6IHBsdXMuZGV2aWNlLm1vZGVsLFxyXG5cdFx0XHRcdFx0dHlwZTogXCIwXCJcclxuXHRcdFx0XHR9O1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGxvZ2luSW5mbyk7XHJcblxyXG5cdFx0XHRcdHRoaXMuJGRhdGEubG9naW4gPSBcImxvYWRpbmcuLi4uLi5cIjtcclxuXHRcdFx0XHQvL+eZu+W9lVxyXG5cdFx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdsb2dpbicsIGxvZ2luSW5mbykudGhlbihzdWNjZXNzID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnIHx8IHN1Y2Nlc3MuZXJyX2NvZGU9PTApIHtcclxuXHRcdFx0XHRcdFx0Ly/nmbvlvZXmiJDlip/lkI7muIXnqbrnvJPlrZjmlbDmja5cclxuXHRcdFx0XHRcdFx0dGhpcy4kc3RvcmUuY29tbWl0KFwiYXJlYUZ1bmNcIiwgbnVsbCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuJHN0b3JlLmNvbW1pdChcImNsYXNzQXR0ckxpc3RcIiwgbnVsbCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuJHN0b3JlLmNvbW1pdChcImNsYXNzR3JpZFN0eWxlSW5mb1wiLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0dGhpcy4kc3RvcmUuY29tbWl0KFwiZGljVmFsdWVJbmZvXCIsIG51bGwpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLiRzdG9yZS5jb21taXQoXCJzdWJDbGFzc0F0dHJMaXN0XCIsIG51bGwpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLiRzdG9yZS5jb21taXQoXCJzdWJDbGFzc0dyaWRTdHlsZUluZm9cIiwgbnVsbCk7XHJcblx0XHRcdFx0XHRcdC8v6K6+572u5YWo5bGA5Y+C5pWw77yadXNlci3nlKjmiLfkv6Hmga9cclxuXHRcdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdzZXJ2ZXInLCBsb2dpbkluZm8uc2VydmVyKTtcclxuXHRcdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdhY2NvdW50JywgbG9naW5JbmZvLnVuYW1lKTtcclxuXHRcdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdwYXNzd29yZCcsIGxvZ2luSW5mby5wd2QpO1xyXG5cdFx0XHRcdFx0XHQvLyB0aGlzLm11dGF0TG9naW4oe2xvZ2luaWQ6c3VjY2Vzc30pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLiRzdG9yZS5jb21taXQoJ2xvZ2luJywge1xyXG5cdFx0XHRcdFx0XHRcdGxvZ2luaWQ6IHN1Y2Nlc3NcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcclxuXHRcdFx0XHRcdFx0XHR1cmw6ICcuLi9pbmRleC9pbmRleD9hcmdzPTk5OTk5OTk5OTknXHJcblx0XHRcdFx0XHRcdH0pXHJcblx0XHRcdFx0XHRcdC8vIHVuaS5yZWRpcmVjdFRvKHtcclxuXHRcdFx0XHRcdFx0Ly8gXHR1cmw6Jy4uL2luZGV4L2luZGV4P2FyZ3M9OTk5OTk5OTk5OSdcclxuXHRcdFx0XHRcdFx0Ly8gfSk7XHJcblx0XHRcdFx0XHRcdHRoaXMubG9naW4gPSBcIuW8gOWni+eZu+W9lVwiO1xyXG5cclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivr1wiLFxyXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxyXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR0aGlzLmxvZ2luID0gXCLlvIDlp4vnmbvlvZVcIjtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleCA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vXCIsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcclxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXHJcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdHRoaXMubG9naW4gPSBcIuW8gOWni+eZu+W9lVwiO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0b25Mb2FkKCkge1xyXG5cdFx0XHRwbHVzLnJ1bnRpbWUuZ2V0UHJvcGVydHkocGx1cy5ydW50aW1lLmFwcGlkLCAoaW5mbykgPT4ge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGluZm8pO1xyXG5cdFx0XHRcdHRoaXMuJGRhdGEudmVyc2lvbiA9IGluZm8udmVyc2lvbjtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fVxyXG48L3NjcmlwdD5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///56\n"); |
| | | eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 1);\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 57));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 59));\nvar _cmdProgress = _interopRequireDefault(__webpack_require__(/*! @/components/cmd-progress/cmd-progress.vue */ 47));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n// import {\n// \tmapState,\n// \tmapMutations,\n// \tmapActions ,\n// } from 'vuex'\nvar _default = {\n components: {\n cmdProgress: _cmdProgress.default\n },\n data: function data() {\n //获取全局参数:url-服务器地址\n var server = uni.getStorageSync('server');\n var account = uni.getStorageSync('account');\n var password = uni.getStorageSync('password');\n var url = this.$store.state.url;\n var username = this.$store.state.username;\n var userpwd = this.$store.state.userpwd;\n var ischecked = false;\n if (!server) server = url;\n if (!account) account = username;\n if (account && password) ischecked = true;\n // console.log(url);\n return {\n login: \"开始登录\",\n userServer: server,\n userName: account,\n userPwd: password,\n ischecked: ischecked,\n version: \"1.0.0\",\n downloadUrl: \"\",\n //安卓app下载链接\n percentage: 0,\n //下载进度\n showBtns: true\n };\n },\n onShow: function onShow() {\n this.query(); //版本升级\n },\n\n watch: {\n //监听进度条\n percentage: function percentage(e) {\n // console.log(e);\n if (e >= 100) {\n this.$refs.promotion.close();\n }\n }\n },\n // computed: mapState({\n // \t// 从state中拿到数据 箭头函数可使代码更简练\n // \thasLogin: state => state.hasLogin,\n // \tloginprovider: state => state.loginProvider,\n // \tappinfo:state=>state.appInfo\n // }),\n methods: {\n //查询当前版本号\n query: function query() {\n var _this2 = this;\n plus.runtime.getProperty(plus.runtime.appid, function (wgtinfo) {\n __f__(\"log\", wgtinfo, \" at pages/login/index.vue:268\");\n var version = wgtinfo.version; //客户端版本号\n // var versionCode = parseInt(wgtinfo.versionCode); //客户端版本号编码\n _this2.check(version); //检测是否需要更新\n });\n },\n //检测是否需要更新\n check: function check(version) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var ser, $this, url, dataInfo;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (_this3.userServer) {\n _context.next = 3;\n break;\n }\n uni.showModal({\n title: \"提示\",\n content: \"未输入网站地址,请重新配置输入!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return _context.abrupt(\"return\");\n case 3:\n ser = _this3.userServer.split('/');\n $this = _this3;\n if (ser[1] == 'mobox3') {\n //判断当前网址是否是mobox3\n url = 'http://' + _this3.userServer + '/Program/version.txt'; // console.log(url);\n uni.request({\n url: url,\n // 指定JS文件的完整路径\n method: 'GET',\n success: function success(res) {\n __f__(\"log\", res, \" at pages/login/index.vue:295\");\n if (res && res.statusCode === 200) {\n //获取当前版本号\n var VersionName = res.data; //更新包名称\n var versionInfo = res.data.split('_');\n var versionNum = versionInfo[2].replace(\".apk\", \"\"); //版本编码\n var VersionCode = versionInfo[2].replace(\".apk\", \"\").replace(\".\", \"\").replace(\".\", \"\"); //服务端版本号\n // this.downloadUrl = resp.PdaUrl+\"/\"+VersionName; //app下载链接\n $this.downloadUrl = \"http://\" + $this.userServer + \"/Program/\" + VersionName; //app下载链接this.\n var isver = $this.compare(versionNum, version);\n if (isver) {\n $this.$refs.promotion.open();\n } else {\n __f__(\"log\", '当前已是最新版本', \" at pages/login/index.vue:308\");\n }\n } else {\n uni.showModal({\n title: \"提示\",\n content: '请求失败:' + err,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n },\n fail: function fail(err) {\n // 错误处理逻辑\n uni.showModal({\n title: \"错误\",\n content: '获取' + url + '文件失败:' + err,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n });\n } else {\n dataInfo = {\n server: _this3.userServer\n };\n _this3.$store.dispatch('GetApkVersionInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/login/index.vue:334\");\n if (success.code == '00000') {\n var resp = success.data;\n if (resp) {\n // const obj = resp.data.filter(item => {\n // \treturn item.groupName == 'version'\n // })\n //获取当前版本号\n var VersionName = resp.VersionName; //更新包名称\n var VersionCode = resp.VersionCode; //版本编码\n var versionNum = resp.Version; //服务端版本号\n // this.downloadUrl = resp.PdaUrl+\"/\"+VersionName; //app下载链接\n $this.downloadUrl = \"http://\" + $this.userServer + \"/Program/\" + VersionName; //app下载链接this.\n var isver = $this.compare(versionNum, version);\n if (isver) {\n $this.$refs.promotion.open();\n } else {\n __f__(\"log\", '当前已是最新版本', \" at pages/login/index.vue:351\");\n }\n }\n } else {\n uni.showModal({\n title: \"错误\",\n content: success.msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/login/index.vue:363\");\n uni.showModal({\n title: \"错误\",\n content: ex.errMsg ? ex.errMsg : ex.message,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n }\n case 6:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n compare: function compare(curV, reqV) {\n var arr1 = curV.toString().split('.');\n var arr2 = reqV.toString().split('.');\n //将两个版本号拆成数字\n var minL = Math.min(arr1.length, arr2.length);\n var pos = 0; //当前比较位\n var diff = 0; //当前为位比较是否相等\n var flag = false;\n //逐个比较如果当前位相等则继续比较下一位\n while (pos < minL) {\n diff = parseInt(arr1[pos]) - parseInt(arr2[pos]);\n if (diff == 0) {\n pos++;\n continue;\n } else if (diff > 0) {\n flag = true;\n break;\n } else {\n flag = false;\n break;\n }\n }\n return flag;\n },\n //确认更新\n sure: function sure() {\n //关闭按钮\n this.showBtns = false;\n var sys = uni.getSystemInfoSync().platform; //检查系统\n if (sys == \"ios\") {\n // this.getIosInfo()\n } else if (sys == \"android\") {\n this.updateAPP(); // 调用下载方法app内下载\n }\n },\n //取消更新\n cancel: function cancel() {\n this.$refs.promotion.close();\n },\n //链接苹果商店下载\n // getIosInfo() {\n // \tlet appleId = \"你的appid\"\n // \tplus.runtime.launchApplication({\n // \t\taction: \"itms-apps://itunes.apple.com/cn/app/id\" + appleId + \"?mt=8\"\n // \t}, function(e) {\n // \t\tconsole.log('Open system default browser failed: ' + e.message);\n // \t});\n // },\n //安卓更新\n updateAPP: function updateAPP() {\n var _this = this;\n var url = this.downloadUrl;\n // 官方API\n var dtask = plus.downloader.createDownload(url, {}, function (d, status) {\n //d为下载的文件对象\n if (status == 200) {\n //下载成功,d.filename是文件在保存在本地的相对路径,使用下面的API可转为平台绝对路径\n var fileSaveUrl = plus.io.convertLocalFileSystemURL(d.filename);\n plus.runtime.openFile(d.filename); //选择软件打开文件\n uni.showToast({\n icon: 'none',\n title: '更新成功'\n });\n _this.$refs.promotion.close();\n } else {\n //下载失败\n plus.downloader.clear(); //清除下载任务\n uni.showToast({\n icon: 'none',\n title: '更新失败'\n });\n _this.showBtns = false;\n }\n });\n //开始下载\n dtask.start();\n //监听下载进度\n dtask.addEventListener('statechanged', function (task) {\n _this.percentage = parseInt(parseFloat(task.downloadedSize) / parseFloat(task.totalSize) * 100);\n if (_this.percentage == 100) {\n _this.$refs.promotion.close();\n }\n __f__(\"log\", '下载进度:' + _this.percentage, \" at pages/login/index.vue:456\");\n });\n },\n // ...mapMutations({\n // \tmutatLogin:'login'\n // }),\n // ...mapActions({\n // \tactionLogin:'login'\n // }),\n inputDialogToggle: function inputDialogToggle() {\n this.$refs.inputDialog.open();\n },\n dialogInputConfirm: function dialogInputConfirm(val) {\n // console.log(val);\n // uni.showLoading({\n // \ttitle: '3秒后会关闭'\n // })\n // setTimeout(() => {\n // uni.hideLoading();\n this.userServer = val;\n uni.setStorageSync('server', val);\n // this.value = val\n // 关闭窗口后,恢复默认内容\n this.$refs.inputDialog.close();\n this.query(); //版本升级\n // }, 3000)\n // }, 3000)\n },\n rememberPwd: function rememberPwd(e) {\n //记住密码\n __f__(\"log\", e.target, \" at pages/login/index.vue:486\");\n uni.setStorageSync('account', '');\n uni.setStorageSync('password', '');\n if (e.target.value[0] == '1') {\n uni.setStorageSync('account', this.userName);\n uni.setStorageSync('password', this.userPwd);\n }\n },\n // getCookie(key){\n // \tif(document.cookie.length>0){\n // \t\tvar start = document.cookie.indexOf(key +'=');\n // \t\tif(start !== -1){\n // \t\t\tstart = start+key.length+1;\n // \t\t\tvar end = document.cookie.indexOf(';',start);\n // \t\t\tif(end === -1) end=document.cookie.length;\n // \t\t\treturn document.cookie.substring(start,end);\n // \t\t}\n // \t}\n // \treturn '';\n // },\n // setCookie(cName,value,expiredays){\n // \tvar exdate = new Date();\n // \texdate.setDate(exdate.getDate(),expiredays)\n // \tdocument.cookie = cName+'='+ documentURLComponent(value)+\n // \t((expiredays==null)?'':';expires='+exdate.toGMTString());\n // },\n logind: function logind() {\n var _this4 = this;\n if (!this.userServer) {\n uni.showModal({\n title: \"提示\",\n content: \"未输入网站地址,请重新配置输入!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n if (!this.userName) {\n uni.showModal({\n title: \"提示\",\n content: \"未输入用户名,请重新输入!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n if (!this.userPwd) {\n uni.showModal({\n title: \"提示\",\n content: \"未输入密码,请重新输入!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n //检查 \"登录状态/锁屏状态\" 结束\n var loginInfo = {\n server: this.userServer,\n uname: this.userName,\n pwd: this.userPwd,\n cname: plus.device.model,\n type: \"0\"\n };\n __f__(\"log\", loginInfo, \" at pages/login/index.vue:549\");\n this.$data.login = \"loading......\";\n //登录\n this.$store.dispatch('login', loginInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/login/index.vue:554\");\n if (success.code == '00000' || success.err_code == 0) {\n //登录成功后清空缓存数据\n _this4.$store.commit(\"areaFunc\", null);\n _this4.$store.commit(\"classAttrList\", null);\n _this4.$store.commit(\"classGridStyleInfo\", null);\n _this4.$store.commit(\"dicValueInfo\", null);\n _this4.$store.commit(\"subClassAttrList\", null);\n _this4.$store.commit(\"subClassGridStyleInfo\", null);\n //设置全局参数:user-用户信息\n uni.setStorageSync('server', loginInfo.server);\n uni.setStorageSync('account', loginInfo.uname);\n uni.setStorageSync('password', loginInfo.pwd);\n // this.mutatLogin({loginid:success});\n _this4.$store.commit('login', {\n loginid: success\n });\n uni.navigateTo({\n url: '../index/index?args=9999999999'\n });\n // uni.redirectTo({\n // \turl:'../index/index?args=9999999999'\n // });\n _this4.login = \"开始登录\";\n } else {\n uni.showModal({\n title: \"错误\",\n content: success.msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n _this4.login = \"开始登录\";\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/login/index.vue:589\");\n uni.showModal({\n title: \"错误\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n _this4.login = \"开始登录\";\n });\n }\n },\n onLoad: function onLoad() {\n var _this5 = this;\n plus.runtime.getProperty(plus.runtime.appid, function (info) {\n // console.log(info);\n _this5.$data.version = info.version;\n });\n }\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 18)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbG9naW4vaW5kZXgudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJjbWRQcm9ncmVzcyIsImRhdGEiLCJzZXJ2ZXIiLCJ1bmkiLCJnZXRTdG9yYWdlU3luYyIsImFjY291bnQiLCJwYXNzd29yZCIsInVybCIsIiRzdG9yZSIsInN0YXRlIiwidXNlcm5hbWUiLCJ1c2VycHdkIiwiaXNjaGVja2VkIiwibG9naW4iLCJ1c2VyU2VydmVyIiwidXNlck5hbWUiLCJ1c2VyUHdkIiwidmVyc2lvbiIsImRvd25sb2FkVXJsIiwicGVyY2VudGFnZSIsInNob3dCdG5zIiwib25TaG93IiwicXVlcnkiLCJ3YXRjaCIsImUiLCIkcmVmcyIsInByb21vdGlvbiIsImNsb3NlIiwibWV0aG9kcyIsInBsdXMiLCJydW50aW1lIiwiZ2V0UHJvcGVydHkiLCJhcHBpZCIsIndndGluZm8iLCJjaGVjayIsInNob3dNb2RhbCIsInRpdGxlIiwiY29udGVudCIsInNob3dDYW5jZWwiLCJjb25maXJtVGV4dCIsInNlciIsInNwbGl0IiwiJHRoaXMiLCJyZXF1ZXN0IiwibWV0aG9kIiwic3VjY2VzcyIsInJlcyIsInN0YXR1c0NvZGUiLCJWZXJzaW9uTmFtZSIsInZlcnNpb25JbmZvIiwidmVyc2lvbk51bSIsInJlcGxhY2UiLCJWZXJzaW9uQ29kZSIsImlzdmVyIiwiY29tcGFyZSIsIm9wZW4iLCJlcnIiLCJmYWlsIiwiZGF0YUluZm8iLCJkaXNwYXRjaCIsInRoZW4iLCJjb2RlIiwicmVzcCIsIlZlcnNpb24iLCJtc2ciLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwibWVzc2FnZSIsImN1clYiLCJyZXFWIiwiYXJyMSIsInRvU3RyaW5nIiwiYXJyMiIsIm1pbkwiLCJNYXRoIiwibWluIiwibGVuZ3RoIiwicG9zIiwiZGlmZiIsImZsYWciLCJwYXJzZUludCIsInN1cmUiLCJzeXMiLCJnZXRTeXN0ZW1JbmZvU3luYyIsInBsYXRmb3JtIiwidXBkYXRlQVBQIiwiY2FuY2VsIiwiX3RoaXMiLCJkdGFzayIsImRvd25sb2FkZXIiLCJjcmVhdGVEb3dubG9hZCIsImQiLCJzdGF0dXMiLCJmaWxlU2F2ZVVybCIsImlvIiwiY29udmVydExvY2FsRmlsZVN5c3RlbVVSTCIsImZpbGVuYW1lIiwib3BlbkZpbGUiLCJzaG93VG9hc3QiLCJpY29uIiwiY2xlYXIiLCJzdGFydCIsImFkZEV2ZW50TGlzdGVuZXIiLCJ0YXNrIiwicGFyc2VGbG9hdCIsImRvd25sb2FkZWRTaXplIiwidG90YWxTaXplIiwiaW5wdXREaWFsb2dUb2dnbGUiLCJpbnB1dERpYWxvZyIsImRpYWxvZ0lucHV0Q29uZmlybSIsInZhbCIsInNldFN0b3JhZ2VTeW5jIiwicmVtZW1iZXJQd2QiLCJ0YXJnZXQiLCJ2YWx1ZSIsImxvZ2luZCIsImxvZ2luSW5mbyIsInVuYW1lIiwicHdkIiwiY25hbWUiLCJkZXZpY2UiLCJtb2RlbCIsInR5cGUiLCIkZGF0YSIsImVycl9jb2RlIiwiY29tbWl0IiwibG9naW5pZCIsIm5hdmlnYXRlVG8iLCJvbkxvYWQiLCJpbmZvIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUE4TUE7QUE5TUE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFHQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEsZUFDZTtFQUNkQSxVQUFVLEVBQUU7SUFDWEMsV0FBVyxFQUFYQTtFQUNELENBQUM7RUFDREMsSUFBSSxrQkFBRztJQUNOO0lBQ0EsSUFBSUMsTUFBTSxHQUFHQyxHQUFHLENBQUNDLGNBQWMsQ0FBQyxRQUFRLENBQUM7SUFDekMsSUFBSUMsT0FBTyxHQUFHRixHQUFHLENBQUNDLGNBQWMsQ0FBQyxTQUFTLENBQUM7SUFDM0MsSUFBSUUsUUFBUSxHQUFHSCxHQUFHLENBQUNDLGNBQWMsQ0FBQyxVQUFVLENBQUM7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O1lBQ2pCQyxXQUFXLEVBQUU7VUFDZCxDQUFDLENBQUM7VUFDRixNQUFJLENBQUMxQixLQUFLLEdBQUcsTUFBTTtRQUNwQjtNQUNELENBQUMsQ0FBQyxDQUFDb0QsS0FBSyxDQUFDLFVBQUFDLEVBQUUsRUFBSTtRQUNkLGFBQVlBLEVBQUU7UUFDZC9ELEdBQUcsQ0FBQ2dDLFNBQVMsQ0FBQztVQUNiQyxLQUFLLEVBQUUsSUFBSTtVQUNYQyxPQUFPLEVBQUU2QixFQUFFLENBQUNDLE1BQU07VUFDbEI3QixVQUFVLEVBQUUsS0FBSztVQUNqQkMsV0FBVyxFQUFFO1FBQ2QsQ0FBQyxDQUFDO1FBQ0YsTUFBSSxDQUFDMUIsS0FBSyxHQUFHLE1BQU07TUFDcEIsQ0FBQyxDQUFDO0lBQ0g7RUFDRCxDQUFDO0VBQ0RvSCxNQUFNLG9CQUFHO0lBQUE7SUFDUnBHLElBQUksQ0FBQ0MsT0FBTyxDQUFDQyxXQUFXLENBQUNGLElBQUksQ0FBQ0MsT0FBTyxDQUFDRSxLQUFLLEVBQUUsVUFBQ2tHLElBQUksRUFBSztNQUN0RDtNQUNBLE1BQUksQ0FBQ04sS0FBSyxDQUFDM0csT0FBTyxHQUFHaUgsSUFBSSxDQUFDakgsT0FBTztJQUNsQyxDQUFDLENBQUM7RUFDSDtBQUNELENBQUM7QUFBQSwyQiIsImZpbGUiOiI1Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbmltcG9ydCBjbWRQcm9ncmVzcyBmcm9tIFwiQC9jb21wb25lbnRzL2NtZC1wcm9ncmVzcy9jbWQtcHJvZ3Jlc3MudnVlXCJcbi8vIGltcG9ydCB7XG4vLyBcdG1hcFN0YXRlLFxuLy8gXHRtYXBNdXRhdGlvbnMsXG4vLyBcdG1hcEFjdGlvbnMgLFxuLy8gfSBmcm9tICd2dWV4J1xuZXhwb3J0IGRlZmF1bHQge1xuXHRjb21wb25lbnRzOiB7XG5cdFx0Y21kUHJvZ3Jlc3Ncblx0fSxcblx0ZGF0YSgpIHtcblx0XHQvL+iOt+WPluWFqOWxgOWPguaVsO+8mnVybC3mnI3liqHlmajlnLDlnYBcblx0XHR2YXIgc2VydmVyID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdzZXJ2ZXInKTtcblx0XHR2YXIgYWNjb3VudCA9IHVuaS5nZXRTdG9yYWdlU3luYygnYWNjb3VudCcpO1xuXHRcdHZhciBwYXNzd29yZCA9IHVuaS5nZXRTdG9yYWdlU3luYygncGFzc3dvcmQnKTtcblx0XHR2YXIgdXJsID0gdGhpcy4kc3RvcmUuc3RhdGUudXJsO1xuXHRcdHZhciB1c2VybmFtZSA9IHRoaXMuJHN0b3JlLnN0YXRlLnVzZXJuYW1lO1xuXHRcdHZhciB1c2VycHdkID0gdGhpcy4kc3RvcmUuc3RhdGUudXNlcnB3ZDtcblx0XHR2YXIgaXNjaGVja2VkID0gZmFsc2U7XG5cdFx0aWYgKCFzZXJ2ZXIpXG5cdFx0XHRzZXJ2ZXIgPSB1cmw7XG5cdFx0aWYgKCFhY2NvdW50KVxuXHRcdFx0YWNjb3VudCA9IHVzZXJuYW1lO1xuXHRcdGlmIChhY2NvdW50ICYmIHBhc3N3b3JkKVxuXHRcdFx0aXNjaGVja2VkID0gdHJ1ZTtcblx0XHQvLyBjb25zb2xlLmxvZyh1cmwpO1xuXHRcdHJldHVybiB7XG5cdFx0XHRsb2dpbjogXCLlvIDlp4vnmbvlvZVcIixcblx0XHRcdHVzZXJTZXJ2ZXI6IHNlcnZlcixcblx0XHRcdHVzZXJOYW1lOiBhY2NvdW50LFxuXHRcdFx0dXNlclB3ZDogcGFzc3dvcmQsXG5cdFx0XHRpc2NoZWNrZWQ6IGlzY2hlY2tlZCxcblx0XHRcdHZlcnNpb246IFwiMS4wLjBcIixcblx0XHRcdGRvd25sb2FkVXJsOiBcIlwiLCAvL+WuieWNk2FwcOS4i+i9vemTvuaOpVxuXHRcdFx0cGVyY2VudGFnZTogMCwgLy/kuIvovb3ov5vluqZcblx0XHRcdHNob3dCdG5zOiB0cnVlLFxuXHRcdH1cblx0fSxcblx0b25TaG93KCkge1xuXHRcdHRoaXMucXVlcnkoKTsgLy/niYjmnKzljYfnuqdcblx0fSxcblx0d2F0Y2g6IHtcblx0XHQvL+ebkeWQrOi/m+W6puadoVxuXHRcdHBlcmNlbnRhZ2UoZSkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZSk7XG5cdFx0XHRpZiAoZSA+PSAxMDApIHtcblx0XHRcdFx0dGhpcy4kcmVmcy5wcm9tb3Rpb24uY2xvc2UoKTtcblx0XHRcdH1cblx0XHR9XG5cdH0sXG5cdC8vIGNvbXB1dGVkOiBtYXBTdGF0ZSh7XG5cdC8vIFx0Ly8g5LuOc3RhdGXkuK3mi7/liLDmlbDmja4g566t5aS05Ye95pWw5Y+v5L2/5Luj56CB5pu0566A57uDXG5cdC8vIFx0aGFzTG9naW46IHN0YXRlID0+IHN0YXRlLmhhc0xvZ2luLFxuXHQvLyBcdGxvZ2lucHJvdmlkZXI6IHN0YXRlID0+IHN0YXRlLmxvZ2luUHJvdmlkZXIsXG5cdC8vIFx0YXBwaW5mbzpzdGF0ZT0+c3RhdGUuYXBwSW5mb1xuXHQvLyB9KSxcblx0bWV0aG9kczoge1xuXHRcdC8v5p+l6K+i5b2T5YmN54mI5pys5Y+3XG5cdFx0cXVlcnkoKSB7XG5cblx0XHRcdHBsdXMucnVudGltZS5nZXRQcm9wZXJ0eShwbHVzLnJ1bnRpbWUuYXBwaWQsICh3Z3RpbmZvKSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHdndGluZm8pO1xuXHRcdFx0XHR2YXIgdmVyc2lvbiA9IHdndGluZm8udmVyc2lvbjsgLy/lrqLmiLfnq6/niYjmnKzlj7dcblx0XHRcdFx0Ly8gdmFyIHZlcnNpb25Db2RlID0gcGFyc2VJbnQod2d0aW5mby52ZXJzaW9uQ29kZSk7IC8v5a6i5oi356uv54mI5pys5Y+357yW56CBXG5cdFx0XHRcdHRoaXMuY2hlY2sodmVyc2lvbikgLy/mo4DmtYvmmK/lkKbpnIDopoHmm7TmlrBcblx0XHRcdH0pXG5cblx0XHR9LFxuXHRcdC8v5qOA5rWL5piv5ZCm6ZyA6KaB5pu05pawXG5cdFx0YXN5bmMgY2hlY2sodmVyc2lvbikge1xuXHRcdFx0aWYgKCF0aGlzLnVzZXJTZXJ2ZXIpIHtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0Y29udGVudDogXCLmnKrovpPlhaXnvZHnq5nlnLDlnYDvvIzor7fph43mlrDphY3nva7ovpPlhaXvvIFcIixcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dmFyIHNlciA9IHRoaXMudXNlclNlcnZlci5zcGxpdCgnLycpO1xuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdGlmKHNlclsxXSA9PSAnbW9ib3gzJyl7IC8v5Yik5pat5b2T5YmN572R5Z2A5piv5ZCm5pivbW9ib3gzXG5cdFx0XHRcdHZhciB1cmwgPSAnaHR0cDovLycrdGhpcy51c2VyU2VydmVyKycvUHJvZ3JhbS92ZXJzaW9uLnR4dCc7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHVybCk7XG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IHVybCwgLy8g5oyH5a6aSlPmlofku7bnmoTlrozmlbTot6/lvoRcblx0XHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xuXHRcdFx0XHRcdFx0aWYgKHJlcyAmJiByZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdC8v6I635Y+W5b2T5YmN54mI5pys5Y+3XG5cdFx0XHRcdFx0XHRcdHZhciBWZXJzaW9uTmFtZSA9IHJlcy5kYXRhOyAvL+abtOaWsOWMheWQjeensFxuXHRcdFx0XHRcdFx0XHR2YXIgdmVyc2lvbkluZm8gPSByZXMuZGF0YS5zcGxpdCgnXycpO1xuXHRcdFx0XHRcdFx0XHR2YXIgdmVyc2lvbk51bSA9IHZlcnNpb25JbmZvWzJdLnJlcGxhY2UoXCIuYXBrXCIsIFwiXCIpOyAvL+eJiOacrOe8lueggVxuXHRcdFx0XHRcdFx0XHR2YXIgVmVyc2lvbkNvZGUgPSB2ZXJzaW9uSW5mb1syXS5yZXBsYWNlKFwiLmFwa1wiLCBcIlwiKS5yZXBsYWNlKFwiLlwiLCBcIlwiKS5yZXBsYWNlKFwiLlwiLCBcIlwiKTsgLy/mnI3liqHnq6/niYjmnKzlj7dcblx0XHRcdFx0XHRcdFx0Ly8gdGhpcy5kb3dubG9hZFVybCA9IHJlc3AuUGRhVXJsK1wiL1wiK1ZlcnNpb25OYW1lOyAvL2FwcOS4i+i9vemTvuaOpVxuXHRcdFx0XHRcdFx0XHQkdGhpcy5kb3dubG9hZFVybCA9IFwiaHR0cDovL1wiICsgJHRoaXMudXNlclNlcnZlciArIFwiL1Byb2dyYW0vXCIgKyBWZXJzaW9uTmFtZTsgLy9hcHDkuIvovb3pk77mjqV0aGlzLlxuXHRcdFx0XHRcdFx0XHR2YXIgaXN2ZXIgPSAkdGhpcy5jb21wYXJlKHZlcnNpb25OdW0sdmVyc2lvbik7XG5cdFx0XHRcdFx0XHRcdGlmIChpc3Zlcikge1xuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRyZWZzLnByb21vdGlvbi5vcGVuKCk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ+W9k+WJjeW3suaYr+acgOaWsOeJiOacrCcpXG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6ICfor7fmsYLlpLHotKXvvJonKyBlcnIsXG5cdFx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmYWlsKGVycikge1xuXHRcdFx0XHRcdFx0Ly8g6ZSZ6K+v5aSE55CG6YC76L6RXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vXCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6ICfojrflj5YnK3VybCsn5paH5Lu25aSx6LSl77yaJysgZXJyLFxuXHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9ZWxzZXtcblx0XHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRcdHNlcnZlcjogdGhpcy51c2VyU2VydmVyXG5cdFx0XHRcdH07XG5cdFx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdHZXRBcGtWZXJzaW9uSW5mbycsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdFx0bGV0IHJlc3AgPSBzdWNjZXNzLmRhdGE7XG5cdFx0XHRcdFx0XHRpZiAocmVzcCkge1xuXHRcdFx0XHRcdFx0XHQvLyBjb25zdCBvYmogPSByZXNwLmRhdGEuZmlsdGVyKGl0ZW0gPT4ge1xuXHRcdFx0XHRcdFx0XHQvLyBcdHJldHVybiBpdGVtLmdyb3VwTmFtZSA9PSAndmVyc2lvbidcblx0XHRcdFx0XHRcdFx0Ly8gfSlcblx0XHRcdFx0XHRcdFx0Ly/ojrflj5blvZPliY3niYjmnKzlj7dcblx0XHRcdFx0XHRcdFx0Y29uc3QgVmVyc2lvbk5hbWUgPSByZXNwLlZlcnNpb25OYW1lOyAvL+abtOaWsOWMheWQjeensFxuXHRcdFx0XHRcdFx0XHRjb25zdCBWZXJzaW9uQ29kZSA9IHJlc3AuVmVyc2lvbkNvZGU7IC8v54mI5pys57yW56CBXG5cdFx0XHRcdFx0XHRcdGNvbnN0IHZlcnNpb25OdW0gPSByZXNwLlZlcnNpb247IC8v5pyN5Yqh56uv54mI5pys5Y+3XG5cdFx0XHRcdFx0XHRcdC8vIHRoaXMuZG93bmxvYWRVcmwgPSByZXNwLlBkYVVybCtcIi9cIitWZXJzaW9uTmFtZTsgLy9hcHDkuIvovb3pk77mjqVcblx0XHRcdFx0XHRcdFx0JHRoaXMuZG93bmxvYWRVcmwgPSBcImh0dHA6Ly9cIiArICR0aGlzLnVzZXJTZXJ2ZXIgKyBcIi9Qcm9ncmFtL1wiICsgVmVyc2lvbk5hbWU7IC8vYXBw5LiL6L296ZO+5o6ldGhpcy5cblx0XHRcdFx0XHRcdFx0dmFyIGlzdmVyID0gJHRoaXMuY29tcGFyZSh2ZXJzaW9uTnVtLHZlcnNpb24pO1xuXHRcdFx0XHRcdFx0XHRpZiAoaXN2ZXIpIHtcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kcmVmcy5wcm9tb3Rpb24ub3BlbigpO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCflvZPliY3lt7LmmK/mnIDmlrDniYjmnKwnKVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor69cIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vXCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2cgPyBleC5lcnJNc2cgOiBleC5tZXNzYWdlLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGNvbXBhcmUoY3VyViwgcmVxVikge1xuXHRcdFx0dmFyIGFycjEgPSBjdXJWLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcblx0XHQgICAgdmFyIGFycjIgPSByZXFWLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcblx0XHQgICAgLy/lsIbkuKTkuKrniYjmnKzlj7fmi4bmiJDmlbDlrZdcblx0XHQgICAgdmFyIG1pbkwgPSBNYXRoLm1pbihhcnIxLmxlbmd0aCwgYXJyMi5sZW5ndGgpO1xuXHRcdCAgICB2YXIgcG9zID0gMDsgLy/lvZPliY3mr5TovoPkvY1cblx0XHQgICAgdmFyIGRpZmYgPSAwOyAvL+W9k+WJjeS4uuS9jeavlOi+g+aYr+WQpuebuOetiVxuXHRcdCAgICB2YXIgZmxhZyA9IGZhbHNlO1xuXHRcdCAgICAvL+mAkOS4quavlOi+g+WmguaenOW9k+WJjeS9jeebuOetieWImee7p+e7reavlOi+g+S4i+S4gOS9jVxuXHRcdCAgICB3aGlsZSAocG9zIDwgbWluTCkge1xuXHRcdCAgICAgICAgZGlmZiA9IHBhcnNlSW50KGFycjFbcG9zXSkgLSBwYXJzZUludChhcnIyW3Bvc10pO1xuXHRcdCAgICAgICAgaWYgKGRpZmYgPT0gMCkge1xuXHRcdCAgICAgICAgICAgIHBvcysrO1xuXHRcdCAgICAgICAgICAgIGNvbnRpbnVlO1xuXHRcdCAgICAgICAgfSBlbHNlIGlmIChkaWZmID4gMCkge1xuXHRcdCAgICAgICAgICAgIGZsYWcgPSB0cnVlO1xuXHRcdCAgICAgICAgICAgIGJyZWFrO1xuXHRcdCAgICAgICAgfSBlbHNlIHtcblx0XHQgICAgICAgICAgICBmbGFnID0gZmFsc2U7XG5cdFx0ICAgICAgICAgICAgYnJlYWs7XG5cdFx0ICAgICAgICB9XG5cdFx0ICAgIH1cblx0XHQgICAgcmV0dXJuIGZsYWc7XG5cdFx0fSxcblx0XHQvL+ehruiupOabtOaWsFxuXHRcdHN1cmUoKSB7XG5cdFx0XHQvL+WFs+mXreaMiemSrlxuXHRcdFx0dGhpcy5zaG93QnRucyA9IGZhbHNlO1xuXHRcdFx0bGV0IHN5cyA9IHVuaS5nZXRTeXN0ZW1JbmZvU3luYygpLnBsYXRmb3JtIC8v5qOA5p+l57O757ufXG5cdFx0XHRpZiAoc3lzID09IFwiaW9zXCIpIHtcblx0XHRcdFx0Ly8gdGhpcy5nZXRJb3NJbmZvKClcblx0XHRcdH0gZWxzZSBpZiAoc3lzID09IFwiYW5kcm9pZFwiKSB7XG5cdFx0XHRcdHRoaXMudXBkYXRlQVBQKCkgLy8g6LCD55So5LiL6L295pa55rOVYXBw5YaF5LiL6L29XG5cdFx0XHR9XG5cdFx0fSxcblx0XHQvL+WPlua2iOabtOaWsFxuXHRcdGNhbmNlbCgpIHtcblx0XHRcdHRoaXMuJHJlZnMucHJvbW90aW9uLmNsb3NlKCk7XG5cdFx0fSxcblx0XHQvL+mTvuaOpeiLueaenOWVhuW6l+S4i+i9vVxuXHRcdC8vIGdldElvc0luZm8oKSB7XG5cdFx0Ly8gXHRsZXQgYXBwbGVJZCA9IFwi5L2g55qEYXBwaWRcIlxuXHRcdC8vIFx0cGx1cy5ydW50aW1lLmxhdW5jaEFwcGxpY2F0aW9uKHtcblx0XHQvLyBcdFx0YWN0aW9uOiBcIml0bXMtYXBwczovL2l0dW5lcy5hcHBsZS5jb20vY24vYXBwL2lkXCIgKyBhcHBsZUlkICsgXCI/bXQ9OFwiXG5cdFx0Ly8gXHR9LCBmdW5jdGlvbihlKSB7XG5cdFx0Ly8gXHRcdGNvbnNvbGUubG9nKCdPcGVuIHN5c3RlbSBkZWZhdWx0IGJyb3dzZXIgZmFpbGVkOiAnICsgZS5tZXNzYWdlKTtcblx0XHQvLyBcdH0pO1xuXHRcdC8vIH0sXG5cdFx0Ly/lronljZPmm7TmlrBcblx0XHR1cGRhdGVBUFAoKSB7XG5cdFx0XHRsZXQgX3RoaXMgPSB0aGlzO1xuXHRcdFx0bGV0IHVybCA9IHRoaXMuZG93bmxvYWRVcmw7XG5cdFx0XHQvLyDlrpjmlrlBUElcblx0XHRcdHZhciBkdGFzayA9IHBsdXMuZG93bmxvYWRlci5jcmVhdGVEb3dubG9hZCh1cmwsIHt9LCBmdW5jdGlvbihkLCBzdGF0dXMpIHtcblx0XHRcdFx0Ly9k5Li65LiL6L2955qE5paH5Lu25a+56LGhXG5cdFx0XHRcdGlmIChzdGF0dXMgPT0gMjAwKSB7XG5cdFx0XHRcdFx0Ly/kuIvovb3miJDlip8sZC5maWxlbmFtZeaYr+aWh+S7tuWcqOS/neWtmOWcqOacrOWcsOeahOebuOWvuei3r+W+hO+8jOS9v+eUqOS4i+mdoueahEFQSeWPr+i9rOS4uuW5s+WPsOe7neWvuei3r+W+hFxuXHRcdFx0XHRcdHZhciBmaWxlU2F2ZVVybCA9IHBsdXMuaW8uY29udmVydExvY2FsRmlsZVN5c3RlbVVSTChkLmZpbGVuYW1lKTtcblx0XHRcdFx0XHRwbHVzLnJ1bnRpbWUub3BlbkZpbGUoZC5maWxlbmFtZSk7IC8v6YCJ5oup6L2v5Lu25omT5byA5paH5Lu2XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZScsXG5cdFx0XHRcdFx0XHR0aXRsZTogJ+abtOaWsOaIkOWKnydcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRfdGhpcy4kcmVmcy5wcm9tb3Rpb24uY2xvc2UoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvL+S4i+i9veWksei0pVxuXHRcdFx0XHRcdHBsdXMuZG93bmxvYWRlci5jbGVhcigpOyAvL+a4hemZpOS4i+i9veS7u+WKoVxuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxuXHRcdFx0XHRcdFx0dGl0bGU6ICfmm7TmlrDlpLHotKUnXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0X3RoaXMuc2hvd0J0bnMgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHRcdC8v5byA5aeL5LiL6L29XG5cdFx0XHRkdGFzay5zdGFydCgpO1xuXHRcdFx0Ly/nm5HlkKzkuIvovb3ov5vluqZcblx0XHRcdGR0YXNrLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlZCcsIGZ1bmN0aW9uKHRhc2spIHtcblx0XHRcdFx0X3RoaXMucGVyY2VudGFnZSA9IHBhcnNlSW50KFxuXHRcdFx0XHRcdChwYXJzZUZsb2F0KHRhc2suZG93bmxvYWRlZFNpemUpIC8gcGFyc2VGbG9hdCh0YXNrLnRvdGFsU2l6ZSkpICogMTAwKTtcblx0XHRcdFx0aWYgKF90aGlzLnBlcmNlbnRhZ2UgPT0gMTAwKSB7XG5cdFx0XHRcdFx0X3RoaXMuJHJlZnMucHJvbW90aW9uLmNsb3NlKCk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc29sZS5sb2coJ+S4i+i9vei/m+W6pu+8micgKyBfdGhpcy5wZXJjZW50YWdlKTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0Ly8gLi4ubWFwTXV0YXRpb25zKHtcblx0XHQvLyBcdG11dGF0TG9naW46J2xvZ2luJ1xuXHRcdC8vIH0pLFxuXHRcdC8vIC4uLm1hcEFjdGlvbnMoe1xuXHRcdC8vIFx0YWN0aW9uTG9naW46J2xvZ2luJ1xuXHRcdC8vIH0pLFxuXHRcdGlucHV0RGlhbG9nVG9nZ2xlKCkge1xuXHRcdFx0dGhpcy4kcmVmcy5pbnB1dERpYWxvZy5vcGVuKClcblx0XHR9LFxuXHRcdGRpYWxvZ0lucHV0Q29uZmlybSh2YWwpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKHZhbCk7XG5cdFx0XHQvLyB1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0Ly8gXHR0aXRsZTogJzPnp5LlkI7kvJrlhbPpl60nXG5cdFx0XHQvLyB9KVxuXHRcdFx0Ly8gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHQvLyB1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdHRoaXMudXNlclNlcnZlciA9IHZhbDtcblx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnc2VydmVyJywgdmFsKTtcblx0XHRcdC8vIHRoaXMudmFsdWUgPSB2YWxcblx0XHRcdC8vIOWFs+mXreeql+WPo+WQju+8jOaBouWkjem7mOiupOWGheWuuVxuXHRcdFx0dGhpcy4kcmVmcy5pbnB1dERpYWxvZy5jbG9zZSgpO1xuXG5cdFx0XHR0aGlzLnF1ZXJ5KCk7IC8v54mI5pys5Y2H57qnXG5cdFx0XHQvLyB9LCAzMDAwKVxuXHRcdFx0Ly8gfSwgMzAwMClcblx0XHR9LFxuXHRcdHJlbWVtYmVyUHdkKGUpIHsgLy/orrDkvY/lr4bnoIFcblx0XHRcdGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcblx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnYWNjb3VudCcsICcnKTtcblx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygncGFzc3dvcmQnLCAnJyk7XG5cdFx0XHRpZiAoZS50YXJnZXQudmFsdWVbMF0gPT0gJzEnKSB7XG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnYWNjb3VudCcsIHRoaXMudXNlck5hbWUpO1xuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ3Bhc3N3b3JkJywgdGhpcy51c2VyUHdkKTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdC8vIGdldENvb2tpZShrZXkpe1xuXHRcdC8vIFx0aWYoZG9jdW1lbnQuY29va2llLmxlbmd0aD4wKXtcblx0XHQvLyBcdFx0dmFyIHN0YXJ0ID0gZG9jdW1lbnQuY29va2llLmluZGV4T2Yoa2V5ICsnPScpO1xuXHRcdC8vIFx0XHRpZihzdGFydCAhPT0gLTEpe1xuXHRcdC8vIFx0XHRcdHN0YXJ0ID0gc3RhcnQra2V5Lmxlbmd0aCsxO1xuXHRcdC8vIFx0XHRcdHZhciBlbmQgPSBkb2N1bWVudC5jb29raWUuaW5kZXhPZignOycsc3RhcnQpO1xuXHRcdC8vIFx0XHRcdGlmKGVuZCA9PT0gLTEpIGVuZD1kb2N1bWVudC5jb29raWUubGVuZ3RoO1xuXHRcdC8vIFx0XHRcdHJldHVybiBkb2N1bWVudC5jb29raWUuc3Vic3RyaW5nKHN0YXJ0LGVuZCk7XG5cdFx0Ly8gXHRcdH1cblx0XHQvLyBcdH1cblx0XHQvLyBcdHJldHVybiAnJztcblx0XHQvLyB9LFxuXHRcdC8vIHNldENvb2tpZShjTmFtZSx2YWx1ZSxleHBpcmVkYXlzKXtcblx0XHQvLyBcdHZhciBleGRhdGUgPSBuZXcgRGF0ZSgpO1xuXHRcdC8vIFx0ZXhkYXRlLnNldERhdGUoZXhkYXRlLmdldERhdGUoKSxleHBpcmVkYXlzKVxuXHRcdC8vIFx0ZG9jdW1lbnQuY29va2llID0gY05hbWUrJz0nKyBkb2N1bWVudFVSTENvbXBvbmVudCh2YWx1ZSkrXG5cdFx0Ly8gXHQoKGV4cGlyZWRheXM9PW51bGwpPycnOic7ZXhwaXJlcz0nK2V4ZGF0ZS50b0dNVFN0cmluZygpKTtcblxuXHRcdC8vIH0sXG5cdFx0bG9naW5kKCkge1xuXHRcdFx0aWYgKCF0aGlzLnVzZXJTZXJ2ZXIpIHtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0Y29udGVudDogXCLmnKrovpPlhaXnvZHnq5nlnLDlnYDvvIzor7fph43mlrDphY3nva7ovpPlhaXvvIFcIixcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCF0aGlzLnVzZXJOYW1lKSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwi5pyq6L6T5YWl55So5oi35ZCN77yM6K+36YeN5paw6L6T5YWl77yBXCIsXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICghdGhpcy51c2VyUHdkKSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwi5pyq6L6T5YWl5a+G56CB77yM6K+36YeN5paw6L6T5YWl77yBXCIsXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8v5qOA5p+lIFwi55m75b2V54q25oCBL+mUgeWxj+eKtuaAgVwiIOe7k+adn1xuXHRcdFx0dmFyIGxvZ2luSW5mbyA9IHtcblx0XHRcdFx0c2VydmVyOiB0aGlzLnVzZXJTZXJ2ZXIsXG5cdFx0XHRcdHVuYW1lOiB0aGlzLnVzZXJOYW1lLFxuXHRcdFx0XHRwd2Q6IHRoaXMudXNlclB3ZCxcblx0XHRcdFx0Y25hbWU6IHBsdXMuZGV2aWNlLm1vZGVsLFxuXHRcdFx0XHR0eXBlOiBcIjBcIlxuXHRcdFx0fTtcblx0XHRcdGNvbnNvbGUubG9nKGxvZ2luSW5mbyk7XG5cblx0XHRcdHRoaXMuJGRhdGEubG9naW4gPSBcImxvYWRpbmcuLi4uLi5cIjtcblx0XHRcdC8v55m75b2VXG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnbG9naW4nLCBsb2dpbkluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcgfHwgc3VjY2Vzcy5lcnJfY29kZT09MCkge1xuXHRcdFx0XHRcdC8v55m75b2V5oiQ5Yqf5ZCO5riF56m657yT5a2Y5pWw5o2uXG5cdFx0XHRcdFx0dGhpcy4kc3RvcmUuY29tbWl0KFwiYXJlYUZ1bmNcIiwgbnVsbCk7XG5cdFx0XHRcdFx0dGhpcy4kc3RvcmUuY29tbWl0KFwiY2xhc3NBdHRyTGlzdFwiLCBudWxsKTtcblx0XHRcdFx0XHR0aGlzLiRzdG9yZS5jb21taXQoXCJjbGFzc0dyaWRTdHlsZUluZm9cIiwgbnVsbCk7XG5cdFx0XHRcdFx0dGhpcy4kc3RvcmUuY29tbWl0KFwiZGljVmFsdWVJbmZvXCIsIG51bGwpO1xuXHRcdFx0XHRcdHRoaXMuJHN0b3JlLmNvbW1pdChcInN1YkNsYXNzQXR0ckxpc3RcIiwgbnVsbCk7XG5cdFx0XHRcdFx0dGhpcy4kc3RvcmUuY29tbWl0KFwic3ViQ2xhc3NHcmlkU3R5bGVJbmZvXCIsIG51bGwpO1xuXHRcdFx0XHRcdC8v6K6+572u5YWo5bGA5Y+C5pWw77yadXNlci3nlKjmiLfkv6Hmga9cblx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ3NlcnZlcicsIGxvZ2luSW5mby5zZXJ2ZXIpO1xuXHRcdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnYWNjb3VudCcsIGxvZ2luSW5mby51bmFtZSk7XG5cdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdwYXNzd29yZCcsIGxvZ2luSW5mby5wd2QpO1xuXHRcdFx0XHRcdC8vIHRoaXMubXV0YXRMb2dpbih7bG9naW5pZDpzdWNjZXNzfSk7XG5cdFx0XHRcdFx0dGhpcy4kc3RvcmUuY29tbWl0KCdsb2dpbicsIHtcblx0XHRcdFx0XHRcdGxvZ2luaWQ6IHN1Y2Nlc3Ncblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdFx0XHR1cmw6ICcuLi9pbmRleC9pbmRleD9hcmdzPTk5OTk5OTk5OTknXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHQvLyB1bmkucmVkaXJlY3RUbyh7XG5cdFx0XHRcdFx0Ly8gXHR1cmw6Jy4uL2luZGV4L2luZGV4P2FyZ3M9OTk5OTk5OTk5OSdcblx0XHRcdFx0XHQvLyB9KTtcblx0XHRcdFx0XHR0aGlzLmxvZ2luID0gXCLlvIDlp4vnmbvlvZVcIjtcblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vXCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR0aGlzLmxvZ2luID0gXCLlvIDlp4vnmbvlvZVcIjtcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIumUmeivr1wiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGhpcy5sb2dpbiA9IFwi5byA5aeL55m75b2VXCI7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cdG9uTG9hZCgpIHtcblx0XHRwbHVzLnJ1bnRpbWUuZ2V0UHJvcGVydHkocGx1cy5ydW50aW1lLmFwcGlkLCAoaW5mbykgPT4ge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coaW5mbyk7XG5cdFx0XHR0aGlzLiRkYXRhLnZlcnNpb24gPSBpbmZvLnZlcnNpb247XG5cdFx0fSk7XG5cdH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///56\n"); |
| | | |
| | | /***/ }), |
| | | /* 57 */ |