| | |
| | | var toPrimitive = __webpack_require__(/*! ./toPrimitive.js */ 5); |
| | | function toPropertyKey(t) { |
| | | var i = toPrimitive(t, "string"); |
| | | return "symbol" == _typeof(i) ? i : String(i); |
| | | return "symbol" == _typeof(i) ? i : i + ""; |
| | | } |
| | | module.exports = toPropertyKey, module.exports.__esModule = true, module.exports["default"] = module.exports; |
| | | |
| | |
| | | /***/ (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 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 // if(res.statusCode === 404){\n // \tuni.showModal({\n // \t\ttitle: \"提示\",\n // \t\tcontent: '请求失败,找不到更新包版本文档:'+url,\n // \t\tshowCancel: false,\n // \t\tconfirmText: \"取消\"\n // \t});\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:336\");\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:353\");\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:365\");\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:458\");\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:488\");\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:551\");\n this.$data.login = \"loading......\";\n //登录\n this.$store.dispatch('login', loginInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/login/index.vue:556\");\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:591\");\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbG9naW4vaW5kZXgudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJjbWRQcm9ncmVzcyIsImRhdGEiLCJzZXJ2ZXIiLCJhY2NvdW50IiwiaXNjaGVja2VkIiwibG9naW4iLCJ1c2VyU2VydmVyIiwidXNlck5hbWUiLCJ1c2VyUHdkIiwidmVyc2lvbiIsImRvd25sb2FkVXJsIiwicGVyY2VudGFnZSIsInNob3dCdG5zIiwib25TaG93Iiwid2F0Y2giLCJtZXRob2RzIiwicXVlcnkiLCJwbHVzIiwiY2hlY2siLCJ1bmkiLCJ0aXRsZSIsImNvbnRlbnQiLCJzaG93Q2FuY2VsIiwiY29uZmlybVRleHQiLCJzZXIiLCIkdGhpcyIsInVybCIsIm1ldGhvZCIsInN1Y2Nlc3MiLCJmYWlsIiwiZGF0YUluZm8iLCJjb21wYXJlIiwiZGlmZiIsInBvcyIsImZsYWciLCJzdXJlIiwiY2FuY2VsIiwidXBkYXRlQVBQIiwiaWNvbiIsIl90aGlzIiwiZHRhc2siLCJwYXJzZUZsb2F0IiwiaW5wdXREaWFsb2dUb2dnbGUiLCJkaWFsb2dJbnB1dENvbmZpcm0iLCJyZW1lbWJlclB3ZCIsImxvZ2luZCIsInVuYW1lIiwicHdkIiwiY25hbWUiLCJ0eXBlIiwibG9naW5pZCIsIm9uTG9hZCJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBOE1BOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSxlQUNBO0VBQ0FBO0lBQ0FDO0VBQ0E7RUFDQUM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJ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O1VBQ0FDO1VBQ0FDO1VBQ0FDO1FBQ0E7UUFDQTtNQUNBO01BQ0E7UUFDQUo7VUFDQUM7VUFDQUM7VUFDQUM7VUFDQUM7UUFDQTtRQUNBO01BQ0E7TUFDQTtRQUNBSjtVQUNBQztVQUNBQztVQUNBQztVQUNBQztRQUNBO1FBQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQXJCO1FBQ0E0QztRQUNBQztRQUNBQztRQUNBQztNQUNBO01BQ0E7TUFFQTtNQUNBO01BQ0E7UUFDQTtRQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBOUI7VUFDQUE7VUFDQUE7VUFDQTtVQUNBO1lBQ0ErQjtVQUNBO1VBQ0EvQjtZQUNBTztVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7UUFFQTtVQUNBUDtZQUNBQztZQUNBQztZQUNBQztZQUNBQztVQUNBO1VBQ0E7UUFDQTtNQUNBO1FBQ0E7UUFDQUo7VUFDQUM7VUFDQUM7VUFDQUM7VUFDQUM7UUFDQTtRQUNBO01BQ0E7SUFDQTtFQUNBO0VBQ0E0QjtJQUFBO0lBQ0FsQztNQUNBO01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSwyQiIsImZpbGUiOiI1Ni5qcyIsInNvdXJjZXNDb250ZW50IjpbIjxzdHlsZT5cclxuXHRpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XHJcblx0XHRmb250LXNpemU6IDEycnB4O1xyXG5cdH1cclxuXHJcblx0I2hlYWRyIHtcclxuXHRcdGJhY2tncm91bmQ6ICM0MzQzNDM7XHJcblx0XHQvKiB3aWR0aDogMzc1cHg7ICovXHJcblx0XHRoZWlnaHQ6IDI1MHJweDtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICM0MzhFQjk7XHJcblx0XHQvKiBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoLi4vLi4vaW1hZ2VzL2xvZ2luL3Jvb3QucG5nKSAhaW1wb3J0YW50O1xyXG5cdFx0YmFja2dyb3VuZC1zaXplOiBjb3ZlciAhaW1wb3J0YW50OyBcclxuXHRcdGJhY2tncm91bmQtcmVwZWF0OiBuby1yZXBlYXQgIWltcG9ydGFudDsgKi9cclxuXHR9XHJcblxyXG5cdC5TZXRTZXJ2ZXIge1xyXG5cdFx0ZmxvYXQ6IGxlZnQ7XHJcblx0XHRtYXJnaW4tbGVmdDogMjBycHg7XHJcblx0fVxyXG5cclxuXHQuY2hlY2tfcmVtZW1iZXJQd2Qge1xyXG5cdFx0bWFyZ2luLXRvcDogMjBycHg7XHJcblx0XHRtYXJnaW4tbGVmdDogMjBycHg7XHJcblx0fVxyXG5cclxuXHQubG9nbyB7XHJcblx0XHRoZWlnaHQ6IDE4MHJweDtcclxuXHRcdHdpZHRoOiAxODBycHg7XHJcblx0XHRtYXJnaW4tdG9wOiAxNzBycHg7XHJcblx0fVxyXG5cclxuXHQubG9nb19pbnB1dCB7XHJcblx0XHRoZWlnaHQ6IDQwcnB4O1xyXG5cdFx0d2lkdGg6IDQwcnB4O1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDQwcnB4O1xyXG5cdH1cclxuXHJcblx0LmxvZ29faWNvbiB7XHJcblx0XHRoZWlnaHQ6IDUwcnB4O1xyXG5cdFx0d2lkdGg6IDUwcnB4O1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDE1cnB4O1xyXG5cdFx0bWFyZ2luLXRvcDogMjBycHg7XHJcblx0fVxyXG5cclxuXHQubXVpLWNvbnRlbnQge1xyXG5cdFx0aGVpZ2h0OiAxMDAlO1xyXG5cdFx0cGFkZGluZy10b3A6IDE0MHJweDtcclxuXHRcdGJhY2tncm91bmQ6ICNGRkZGRkY7XHJcblx0XHR6LWluZGV4OiAxO1xyXG5cdH1cclxuXHJcblx0Lm11aS1pbnB1dC1ncm91cCAubGFfaWNvbiB7XHJcblx0XHR3aWR0aDogMTAwcnB4O1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0Zm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0XHRmbG9hdDogbGVmdDtcclxuXHRcdHBhZGRpbmc6IDdweCAxM3B4O1xyXG5cdH1cclxuXHJcblx0Lm11aS1pbnB1dC1ncm91cCAubXVpLWlucHV0LXJvdyB7XHJcblx0XHRoZWlnaHQ6IDg1cnB4O1xyXG5cdFx0cG9zaXRpb246IHJlbGF0aXZlO1xyXG5cdFx0Y2xlYXI6IGxlZnQ7XHJcblx0XHRvdmVyZmxvdzogaGlkZGVuO1xyXG5cdH1cclxuXHJcblx0Lm11aS1pbnB1dC1yb3c6Zmlyc3QtY2hpbGQge1xyXG5cdFx0Ym9yZGVyLXRvcDogMXB4IHNvbGlkICNjOGM3Y2M7XHJcblx0fVxyXG5cclxuXHQubXVpLWlucHV0LXJvdzpsYXN0LWNoaWxkIHtcclxuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjYzhjN2NjO1xyXG5cdH1cclxuXHJcblx0Lm11aS1pbnB1dC1ncm91cCAubXVpLWlucHV0LXJvdzpsYXN0LWNoaWxkOmFmdGVyIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcblx0fVxyXG5cclxuXHQubXVpLWlucHV0LWdyb3VwIC5tdWktaW5wdXQtcm93OmFmdGVyIHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdHJpZ2h0OiAwO1xyXG5cdFx0Ym90dG9tOiAwO1xyXG5cdFx0bGVmdDogMTVweDtcclxuXHRcdGhlaWdodDogMXB4O1xyXG5cdFx0Y29udGVudDogJyc7XHJcblx0XHR0cmFuc2Zvcm06IHNjYWxlWSguNSk7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjYzhjN2NjO1xyXG5cdH1cclxuXHJcblx0Lm11aS1pbnB1dC1yb3cgaW5wdXQge1xyXG5cdFx0Zm9udC1mYW1pbHk6ICdIZWx2ZXRpY2EgTmV1ZScsIEhlbHZldGljYSwgc2Fucy1zZXJpZjtcclxuXHRcdGZvbnQtc2l6ZTogMTVweDtcclxuXHRcdHdpZHRoOiA0ODBycHg7XHJcblx0XHQvKiBmbG9hdDogcmlnaHQ7ICovXHJcblx0XHRtYXJnaW4tYm90dG9tOiAwO1xyXG5cdFx0cGFkZGluZy1sZWZ0OiAyMHJweDtcclxuXHRcdC8qIHBhZGRpbmctcmlnaHQ6IDEwcnB4OyAqL1xyXG5cdFx0LyogbGluZS1oZWlnaHQ6IDMwcnB4OyAqL1xyXG5cdFx0aGVpZ2h0OiA4NXJweDtcclxuXHRcdC8qIHBhZGRpbmc6IDdweCA0MHB4IDdweCAwcHg7ICovXHJcblx0XHQtd2Via2l0LXVzZXItc2VsZWN0OiB0ZXh0O1xyXG5cdFx0LyogYm9yZGVyOiAwOyAqL1xyXG5cdFx0LyogYm9yZGVyLXJhZGl1czogMDsgKi9cclxuXHRcdGJveC1zaGFkb3c6IG5vbmU7XHJcblx0XHRvdXRsaW5lOiAwO1xyXG5cdFx0YmFja2dyb3VuZDogMCAwO1xyXG5cdFx0LXdlYmtpdC1hcHBlYXJhbmNlOiBub25lO1xyXG5cdH1cclxuXHJcblx0Lm11aS1pbnB1dC1ncm91cCBsYWJlbC5tdWktbmF2aWdhdGUtcmlnaHQge1xyXG5cdFx0Zm9udC1zaXplOiAyNXB4O1xyXG5cdFx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdFx0cGFkZGluZzogMDtcclxuXHRcdHdpZHRoOiA4MHJweDtcclxuXHRcdG1hcmdpbi1yaWdodDogNXJweDtcclxuXHRcdG1hcmdpbi10b3A6IC04OHJweDtcclxuXHRcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR9XHJcblxyXG5cdGJ1dHRvbi5idG5fbG9naW4ge1xyXG5cdFx0bWFyZ2luLXRvcDogNTBycHg7XHJcblx0XHRwYWRkaW5nOiAyMHJweDtcclxuXHRcdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0XHRiYWNrZ3JvdW5kOiAjMjdBNkUxO1xyXG5cdFx0Ym9yZGVyOiBub25lO1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0fVxyXG48L3N0eWxlPlxyXG5cclxuXHJcbjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cIlwiIHN0eWxlPVwid2lkdGg6IDEwMHZ3O2hlaWdodDogNjR2aDtcIj5cclxuXHRcdDxkaXYgaWQ9XCJoZWFkclwiIGNsYXNzPVwibXVpLWJhciBtdWktYmFyLW5hdlwiPlxyXG5cdFx0XHQ8aW1hZ2UgY2xhc3M9XCJsb2dvXCIgc3JjPVwiLi4vLi4vaW1hZ2VzL2xvZ2luL21vYm94X2xvZ18yMDAucG5nXCI+PC9pbWFnZT5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PGRpdiBjbGFzcz1cIm11aS1jb250ZW50XCI+XHJcblx0XHRcdDxmb3JtIGlkPSdsb2dpbi1mb3JtJyBjbGFzcz1cIm11aS1pbnB1dC1ncm91cFwiPlxyXG5cdFx0XHRcdDxhIGhyZWY9XCJqYXZhc2NyaXB0OjtcIiBjbGFzcz1cIlNldFNlcnZlclwiIEBjbGljaz1cImlucHV0RGlhbG9nVG9nZ2xlXCI+6YWN572uPC9hPlxyXG5cdFx0XHRcdDwhLS0gPGRpdiBjbGFzcz1cIm11aS1pbnB1dC1yb3dcIj5cclxuXHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImxhX2ljb25cIj48aW1hZ2UgY2xhc3M9XCJsb2dvX2lucHV0XCIgc3JjPVwiLi4vLi4vaW1hZ2VzL2xvZ2luL3N2cl8zMC5wbmdcIj48L2ltYWdlPjwvbGFiZWw+XHJcblx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm11aS1pbnB1dFwiIHYtbW9kZWw9XCJ1c2VyU2VydmVyXCIgcGxhY2Vob2xkZXI9XCLmnI3liqHlmajlnLDlnYBcIj5cclxuXHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cIm11aS1uYXZpZ2F0ZS1yaWdodFwiIGlkPVwic2Vyc2VsXCI+PGltYWdlIGNsYXNzPVwibG9nb19pY29uXCIgc3JjPVwiLi4vLi4vaW1hZ2VzL2xvZ2luL3NlbF9sZWZ0LnBuZ1wiID48L2ltYWdlPjwvbGFiZWw+XHJcblx0XHRcdFx0PC9kaXY+IC0tPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJtdWktaW5wdXQtcm93XCI+XHJcblx0XHRcdFx0XHQ8bGFiZWwgY2xhc3M9XCJsYV9pY29uXCI+XHJcblx0XHRcdFx0XHRcdDxpbWFnZSBjbGFzcz1cImxvZ29faW5wdXRcIiBzcmM9XCIuLi8uLi9pbWFnZXMvbG9naW4vcGVyc29uXzMwLnBuZ1wiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHQ8L2xhYmVsPlxyXG5cdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJtdWktaW5wdXRcIiB2LW1vZGVsPVwidXNlck5hbWVcIiBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpei0puWPt1wiPlxyXG5cdFx0XHRcdFx0PCEtLSA8bGFiZWwgY2xhc3M9XCJtdWktbmF2aWdhdGUtcmlnaHRcIiBpZD1cIm5hbXNlbFwiPjxpbWFnZSBjbGFzcz1cImxvZ29faWNvblwiIHNyYz1cIi4uLy4uL2ltYWdlcy9sb2dpbi91c2VyLXBob3RvLnBuZzwvaW1hZ2U+PC9sYWJlbD4gLS0+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cIm11aS1pbnB1dC1yb3dcIj5cclxuXHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImxhX2ljb25cIj5cclxuXHRcdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwibG9nb19pbnB1dFwiIHNyYz1cIi4uLy4uL2ltYWdlcy9sb2dpbi9sb2NrXzMwLnBuZ1wiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHQ8L2xhYmVsPlxyXG5cdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJwYXNzd29yZFwiIGNsYXNzPVwibXVpLWlucHV0XCIgdi1tb2RlbD1cInVzZXJQd2RcIiBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeWvhueggVwiPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDxjaGVja2JveC1ncm91cCBjbGFzcz1cImNoZWNrX3JlbWVtYmVyUHdkXCIgQGNoYW5nZT1cInJlbWVtYmVyUHdkXCI+XHJcblx0XHRcdFx0XHQ8bGFiZWw+XHJcblx0XHRcdFx0XHRcdDxjaGVja2JveCB2YWx1ZT1cIjFcIiA6Y2hlY2tlZD1cImlzY2hlY2tlZFwiIC8+XHJcblx0XHRcdFx0XHRcdDx0ZXh0PuiusOS9j+WvhueggTwvdGV4dD5cclxuXHRcdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdFx0PC9jaGVja2JveC1ncm91cD5cclxuXHRcdFx0PC9mb3JtPlxyXG5cdFx0XHQ8YnV0dG9uIGlkPSdsb2dpbicgdHlwZT1cImRlZmF1bHRcIiBAdGFwPVwibG9naW5kXCIgY2xhc3M9XCJidG5fbG9naW5cIj57e2xvZ2lufX08L2J1dHRvbj5cclxuXHRcdFx0PHAgc3R5bGU9XCJmbG9hdDpyaWdodDsgbWFyZ2luOiAxMHB4IDEwcHg7Y29sb3I6I2M4YzdjY1wiPlxyXG5cdFx0XHRcdDxzcGFuPueJiOacrOWPt++8mjwvc3Bhbj5cclxuXHRcdFx0XHQ8c3Bhbj57e3ZlcnNpb259fTwvc3Bhbj5cclxuXHRcdFx0PC9wPlxyXG5cdFx0XHQ8ZGl2IGNsYXNzPVwiXCJcclxuXHRcdFx0XHRzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtiYWNrZ3JvdW5kOiB3aGl0ZTtib3JkZXItdG9wOiAwcHggc29saWQgI0MwQzBDMDtjb2xvcjogIzdjZDBmODtwb3NpdGlvbjogYWJzb2x1dGU7Ym90dG9tOiAwO3dpZHRoOiAxMDAlO2hlaWdodDogMjRweDtwYWRkaW5nLXRvcDozcHg7Zm9udC1zaXplOiAxMXB4O1wiPlxyXG5cdFx0XHQ8L2Rpdj5cclxuXHRcdDwvZGl2PlxyXG5cdFx0PHZpZXc+XHJcblx0XHRcdDwhLS0g6L6T5YWl5qGG56S65L6LIC0tPlxyXG5cdFx0XHQ8dW5pLXBvcHVwIHJlZj1cImlucHV0RGlhbG9nXCIgdHlwZT1cImRpYWxvZ1wiPlxyXG5cdFx0XHRcdDx1bmktcG9wdXAtZGlhbG9nIHJlZj1cImlucHV0Q2xvc2VcIiBtb2RlPVwiaW5wdXRcIiB0aXRsZT1cIuiuvue9rlwiIDp2YWx1ZT1cInVzZXJTZXJ2ZXJcIiBwbGFjZWhvbGRlcj1cIuivt+i+k+WFpeWGheWuuVwiXHJcblx0XHRcdFx0XHRAY29uZmlybT1cImRpYWxvZ0lucHV0Q29uZmlybVwiPjwvdW5pLXBvcHVwLWRpYWxvZz5cclxuXHRcdFx0PC91bmktcG9wdXA+XHJcblx0XHRcdDwhLS0g54mI5pys5Y2H57qn5by556qX5byA5aeLIC0tPlxyXG5cdFx0XHQ8dW5pLXBvcHVwIHJlZj1cInByb21vdGlvblwiIHR5cGU9XCJjZW50ZXJcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInByb21vdGlvblwiIHN0eWxlPVwid2lkdGg6IDcwMHJweDtwYWRkaW5nOjIwcnB4IDQwcnB4OyBiYWNrZ3JvdW5kOiB3aGl0ZTtmb250LXNpemU6IDM2cnB4O1wiPlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcGVyYXRlc1wiIHYtaWY9XCJzaG93QnRucz09dHJ1ZVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cInRleHQtYWxpZ246IGNlbnRlcjtwYWRkaW5nLXRvcDoyMHJweDtwYWRkaW5nLWJvdHRvbTogNDBycHg7XCI+XHJcblx0XHRcdFx0XHRcdFx057O757uf5pyJ5paw54mI5pys77yM5piv5ZCm6ZyA6KaB5pu05pawXHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PHRleHQgQGNsaWNrPVwiY2FuY2VsXCJcclxuXHRcdFx0XHRcdFx0XHRzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztjb2xvcjogIzdjZDBmODt3aWR0aDogNTAlOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+5Y+W5raIPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHQ8dGV4dCBAY2xpY2s9XCJzdXJlXCJcclxuXHRcdFx0XHRcdFx0XHRzdHlsZT1cImRpc3BsYXk6IGlubGluZS1ibG9jaztjb2xvcjogIzdjZDBmODt3aWR0aDogNTAlOyB0ZXh0LWFsaWduOiBjZW50ZXI7XCI+56Gu6K6kPC90ZXh0PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcGVyYXRlc1wiIHYtZWxzZT5cclxuXHRcdFx0XHRcdFx0PGNtZC1wcm9ncmVzcyA6cGVyY2VudD1cInBlcmNlbnRhZ2VcIiBzdHJva2UtY29sb3I9XCJsaW5lYXItZ3JhZGllbnQodG8gcmlnaHQsICNlZjMyZDksICM4OWZmZmQpXCI+XHJcblx0XHRcdFx0XHRcdDwvY21kLXByb2dyZXNzPlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC91bmktcG9wdXA+XHJcblx0XHRcdDwhLS0g54mI5pys5Y2H57qn5by556qX57uT5p2fIC0tPlxyXG5cdFx0PC92aWV3PlxyXG5cclxuXHQ8L3ZpZXc+XHJcblxyXG48L3RlbXBsYXRlPlxyXG5cclxuPHNjcmlwdD5cclxuXHRpbXBvcnQgY21kUHJvZ3Jlc3MgZnJvbSBcIkAvY29tcG9uZW50cy9jbWQtcHJvZ3Jlc3MvY21kLXByb2dyZXNzLnZ1ZVwiXHJcblx0Ly8gaW1wb3J0IHtcclxuXHQvLyBcdG1hcFN0YXRlLFxyXG5cdC8vIFx0bWFwTXV0YXRpb25zLFxyXG5cdC8vIFx0bWFwQWN0aW9ucyAsXHJcblx0Ly8gfSBmcm9tICd2dWV4J1xyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGNvbXBvbmVudHM6IHtcclxuXHRcdFx0Y21kUHJvZ3Jlc3NcclxuXHRcdH0sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHQvL+iOt+WPluWFqOWxgOWPguaVsO+8mnVybC3mnI3liqHlmajlnLDlnYBcclxuXHRcdFx0dmFyIHNlcnZlciA9IHVuaS5nZXRTdG9yYWdlU3luYygnc2VydmVyJyk7XHJcblx0XHRcdHZhciBhY2NvdW50ID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdhY2NvdW50Jyk7XHJcblx0XHRcdHZhciBwYXNzd29yZCA9IHVuaS5nZXRTdG9yYWdlU3luYygncGFzc3dvcmQnKTtcclxuXHRcdFx0dmFyIHVybCA9IHRoaXMuJHN0b3JlLnN0YXRlLnVybDtcclxuXHRcdFx0dmFyIHVzZXJuYW1lID0gdGhpcy4kc3RvcmUuc3RhdGUudXNlcm5hbWU7XHJcblx0XHRcdHZhciB1c2VycHdkID0gdGhpcy4kc3RvcmUuc3RhdGUudXNlcnB3ZDtcclxuXHRcdFx0dmFyIGlzY2hlY2tlZCA9IGZhbHNlO1xyXG5cdFx0XHRpZiAoIXNlcnZlcilcclxuXHRcdFx0XHRzZXJ2ZXIgPSB1cmw7XHJcblx0XHRcdGlmICghYWNjb3VudClcclxuXHRcdFx0XHRhY2NvdW50ID0gdXNlcm5hbWU7XHJcblx0XHRcdGlmIChhY2NvdW50ICYmIHBhc3N3b3JkKVxyXG5cdFx0XHRcdGlzY2hlY2tlZCA9IHRydWU7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHVybCk7XHJcblx0XHRcdHJldHVybiB7XHJcblx0XHRcdFx0bG9naW46IFwi5byA5aeL55m75b2VXCIsXHJcblx0XHRcdFx0dXNlclNlcnZlcjogc2VydmVyLFxyXG5cdFx0XHRcdHVzZXJOYW1lOiBhY2NvdW50LFxyXG5cdFx0XHRcdHVzZXJQd2Q6IHBhc3N3b3JkLFxyXG5cdFx0XHRcdGlzY2hlY2tlZDogaXNjaGVja2VkLFxyXG5cdFx0XHRcdHZlcnNpb246IFwiMS4wLjBcIixcclxuXHRcdFx0XHRkb3dubG9hZFVybDogXCJcIiwgLy/lronljZNhcHDkuIvovb3pk77mjqVcclxuXHRcdFx0XHRwZXJjZW50YWdlOiAwLCAvL+S4i+i9vei/m+W6plxyXG5cdFx0XHRcdHNob3dCdG5zOiB0cnVlLFxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0b25TaG93KCkge1xyXG5cdFx0XHR0aGlzLnF1ZXJ5KCk7IC8v54mI5pys5Y2H57qnXHJcblx0XHR9LFxyXG5cdFx0d2F0Y2g6IHtcclxuXHRcdFx0Ly/nm5HlkKzov5vluqbmnaFcclxuXHRcdFx0cGVyY2VudGFnZShlKSB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZSk7XHJcblx0XHRcdFx0aWYgKGUgPj0gMTAwKSB7XHJcblx0XHRcdFx0XHR0aGlzLiRyZWZzLnByb21vdGlvbi5jbG9zZSgpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdC8vIGNvbXB1dGVkOiBtYXBTdGF0ZSh7XHJcblx0XHQvLyBcdC8vIOS7jnN0YXRl5Lit5ou/5Yiw5pWw5o2uIOeureWktOWHveaVsOWPr+S9v+S7o+eggeabtOeugOe7g1xyXG5cdFx0Ly8gXHRoYXNMb2dpbjogc3RhdGUgPT4gc3RhdGUuaGFzTG9naW4sXHJcblx0XHQvLyBcdGxvZ2lucHJvdmlkZXI6IHN0YXRlID0+IHN0YXRlLmxvZ2luUHJvdmlkZXIsXHJcblx0XHQvLyBcdGFwcGluZm86c3RhdGU9PnN0YXRlLmFwcEluZm9cclxuXHRcdC8vIH0pLFxyXG5cdFx0bWV0aG9kczoge1xyXG5cdFx0XHQvL+afpeivouW9k+WJjeeJiOacrOWPt1xyXG5cdFx0XHRxdWVyeSgpIHtcclxuXHRcdFx0XHQvLyAjaWZkZWYgQVBQLVBMVVNcclxuXHRcdFx0XHRwbHVzLnJ1bnRpbWUuZ2V0UHJvcGVydHkocGx1cy5ydW50aW1lLmFwcGlkLCAod2d0aW5mbykgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2cod2d0aW5mbyk7XHJcblx0XHRcdFx0XHR2YXIgdmVyc2lvbiA9IHdndGluZm8udmVyc2lvbjsgLy/lrqLmiLfnq6/niYjmnKzlj7dcclxuXHRcdFx0XHRcdC8vIHZhciB2ZXJzaW9uQ29kZSA9IHBhcnNlSW50KHdndGluZm8udmVyc2lvbkNvZGUpOyAvL+WuouaIt+err+eJiOacrOWPt+e8lueggVxyXG5cdFx0XHRcdFx0dGhpcy5jaGVjayh2ZXJzaW9uKSAvL+ajgOa1i+aYr+WQpumcgOimgeabtOaWsFxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdFx0Ly8jZW5kaWZcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly/mo4DmtYvmmK/lkKbpnIDopoHmm7TmlrBcclxuXHRcdFx0YXN5bmMgY2hlY2sodmVyc2lvbikge1xyXG5cdFx0XHRcdGlmICghdGhpcy51c2VyU2VydmVyKSB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwi5pyq6L6T5YWl572R56uZ5Zyw5Z2A77yM6K+36YeN5paw6YWN572u6L6T5YWl77yBXCIsXHJcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBzZXIgPSB0aGlzLnVzZXJTZXJ2ZXIuc3BsaXQoJy8nKTtcclxuXHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdGlmKHNlclsxXSA9PSAnbW9ib3gzJyl7IC8v5Yik5pat5b2T5YmN572R5Z2A5piv5ZCm5pivbW9ib3gzXHJcblx0XHRcdFx0XHR2YXIgdXJsID0gJ2h0dHA6Ly8nK3RoaXMudXNlclNlcnZlcisnL1Byb2dyYW0vdmVyc2lvbi50eHQnO1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2codXJsKTtcclxuXHRcdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdFx0dXJsOiB1cmwsIC8vIOaMh+WumkpT5paH5Lu255qE5a6M5pW06Lev5b6EXHJcblx0XHRcdFx0XHRcdG1ldGhvZDogJ0dFVCcsXHJcblx0XHRcdFx0XHRcdHN1Y2Nlc3MocmVzKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0XHRpZiAocmVzICYmIHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdC8v6I635Y+W5b2T5YmN54mI5pys5Y+3XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgVmVyc2lvbk5hbWUgPSByZXMuZGF0YTsgLy/mm7TmlrDljIXlkI3np7BcclxuXHRcdFx0XHRcdFx0XHRcdHZhciB2ZXJzaW9uSW5mbyA9IHJlcy5kYXRhLnNwbGl0KCdfJyk7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgdmVyc2lvbk51bSA9IHZlcnNpb25JbmZvWzJdLnJlcGxhY2UoXCIuYXBrXCIsIFwiXCIpOyAvL+eJiOacrOe8lueggVxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIFZlcnNpb25Db2RlID0gdmVyc2lvbkluZm9bMl0ucmVwbGFjZShcIi5hcGtcIiwgXCJcIikucmVwbGFjZShcIi5cIiwgXCJcIikucmVwbGFjZShcIi5cIiwgXCJcIik7IC8v5pyN5Yqh56uv54mI5pys5Y+3XHJcblx0XHRcdFx0XHRcdFx0XHQvLyB0aGlzLmRvd25sb2FkVXJsID0gcmVzcC5QZGFVcmwrXCIvXCIrVmVyc2lvbk5hbWU7IC8vYXBw5LiL6L296ZO+5o6lXHJcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5kb3dubG9hZFVybCA9IFwiaHR0cDovL1wiICsgJHRoaXMudXNlclNlcnZlciArIFwiL1Byb2dyYW0vXCIgKyBWZXJzaW9uTmFtZTsgLy9hcHDkuIvovb3pk77mjqV0aGlzLlxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIGlzdmVyID0gJHRoaXMuY29tcGFyZSh2ZXJzaW9uTnVtLHZlcnNpb24pO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGlzdmVyKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRyZWZzLnByb21vdGlvbi5vcGVuKCk7XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn5b2T5YmN5bey5piv5pyA5paw54mI5pysJylcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gaWYocmVzLnN0YXR1c0NvZGUgPT09IDQwNCl7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyBcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gXHRcdHRpdGxlOiBcIuaPkOekulwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gXHRcdGNvbnRlbnQ6ICfor7fmsYLlpLHotKXvvIzmib7kuI3liLDmm7TmlrDljIXniYjmnKzmlofmoaPvvJonK3VybCxcclxuXHRcdFx0XHRcdFx0XHRcdC8vIFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcclxuXHRcdFx0XHRcdFx0XHRcdC8vIFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gXHR9KTtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRcdGZhaWwoZXJyKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8g6ZSZ6K+v5aSE55CG6YC76L6RXHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor69cIixcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6ICfojrflj5YnK3VybCsn5paH5Lu25aSx6LSl77yaJysgZXJyLFxyXG5cdFx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXHJcblx0XHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdHZhciBkYXRhSW5mbyA9IHtcclxuXHRcdFx0XHRcdFx0c2VydmVyOiB0aGlzLnVzZXJTZXJ2ZXJcclxuXHRcdFx0XHRcdH07XHJcblx0XHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnR2V0QXBrVmVyc2lvbkluZm8nLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdGxldCByZXNwID0gc3VjY2Vzcy5kYXRhO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChyZXNwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyBjb25zdCBvYmogPSByZXNwLmRhdGEuZmlsdGVyKGl0ZW0gPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gXHRyZXR1cm4gaXRlbS5ncm91cE5hbWUgPT0gJ3ZlcnNpb24nXHJcblx0XHRcdFx0XHRcdFx0XHQvLyB9KVxyXG5cdFx0XHRcdFx0XHRcdFx0Ly/ojrflj5blvZPliY3niYjmnKzlj7dcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IFZlcnNpb25OYW1lID0gcmVzcC5WZXJzaW9uTmFtZTsgLy/mm7TmlrDljIXlkI3np7BcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IFZlcnNpb25Db2RlID0gcmVzcC5WZXJzaW9uQ29kZTsgLy/niYjmnKznvJbnoIFcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IHZlcnNpb25OdW0gPSByZXNwLlZlcnNpb247IC8v5pyN5Yqh56uv54mI5pys5Y+3XHJcblx0XHRcdFx0XHRcdFx0XHQvLyB0aGlzLmRvd25sb2FkVXJsID0gcmVzcC5QZGFVcmwrXCIvXCIrVmVyc2lvbk5hbWU7IC8vYXBw5LiL6L296ZO+5o6lXHJcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5kb3dubG9hZFVybCA9IFwiaHR0cDovL1wiICsgJHRoaXMudXNlclNlcnZlciArIFwiL1Byb2dyYW0vXCIgKyBWZXJzaW9uTmFtZTsgLy9hcHDkuIvovb3pk77mjqV0aGlzLlxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIGlzdmVyID0gJHRoaXMuY29tcGFyZSh2ZXJzaW9uTnVtLHZlcnNpb24pO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGlzdmVyKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRyZWZzLnByb21vdGlvbi5vcGVuKCk7XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn5b2T5YmN5bey5piv5pyA5paw54mI5pysJylcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor69cIixcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxyXG5cdFx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXHJcblx0XHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KS5jYXRjaChleCA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vXCIsXHJcblx0XHRcdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnID8gZXguZXJyTXNnIDogZXgubWVzc2FnZSxcclxuXHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcclxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0Y29tcGFyZShjdXJWLCByZXFWKSB7XHJcblx0XHRcdFx0dmFyIGFycjEgPSBjdXJWLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcclxuXHRcdFx0ICAgIHZhciBhcnIyID0gcmVxVi50b1N0cmluZygpLnNwbGl0KCcuJyk7XHJcblx0XHRcdCAgICAvL+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 // if(res.statusCode === 404){\n // \tuni.showModal({\n // \t\ttitle: \"提示\",\n // \t\tcontent: '请求失败,找不到更新包版本文档:'+url,\n // \t\tshowCancel: false,\n // \t\tconfirmText: \"取消\"\n // \t});\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:336\");\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:353\");\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:365\");\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:458\");\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:488\");\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:551\");\n this.$data.login = \"loading......\";\n //登录\n this.$store.dispatch('login', loginInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/login/index.vue:556\");\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:591\");\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 //获取mac地址\n var net = plus.android.importClass(\"java.net.NetworkInterface\");\n var wl0 = net.getByName('wlan0');\n var macByte = wl0.getHardwareAddress();\n var deviceId = '';\n //下面这段代码来自网络 \n for (var i = 0; i < macByte.length; i++) {\n var tmp = \"\";\n var num = macByte[i];\n if (num < 0) {\n tmp = (255 + num + 1).toString(16);\n } else {\n tmp = num.toString(16);\n }\n if (tmp.length == 1) {\n tmp = \"0\" + tmp;\n }\n deviceId += tmp;\n }\n //78b8d67511ca\n this.$store.commit(\"setDeviceId\", deviceId);\n __f__(\"log\", 'Android设备的deviceId:', deviceId, \" at pages/login/index.vue:624\");\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbG9naW4vaW5kZXgudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJjbWRQcm9ncmVzcyIsImRhdGEiLCJzZXJ2ZXIiLCJhY2NvdW50IiwiaXNjaGVja2VkIiwibG9naW4iLCJ1c2VyU2VydmVyIiwidXNlck5hbWUiLCJ1c2VyUHdkIiwidmVyc2lvbiIsImRvd25sb2FkVXJsIiwicGVyY2VudGFnZSIsInNob3dCdG5zIiwib25TaG93Iiwid2F0Y2giLCJtZXRob2RzIiwicXVlcnkiLCJwbHVzIiwiY2hlY2siLCJ1bmkiLCJ0aXRsZSIsImNvbnRlbnQiLCJzaG93Q2FuY2VsIiwiY29uZmlybVRleHQiLCJzZXIiLCIkdGhpcyIsInVybCIsIm1ldGhvZCIsInN1Y2Nlc3MiLCJmYWlsIiwiZGF0YUluZm8iLCJjb21wYXJlIiwiZGlmZiIsInBvcyIsImZsYWciLCJzdXJlIiwiY2FuY2VsIiwidXBkYXRlQVBQIiwiaWNvbiIsIl90aGlzIiwiZHRhc2siLCJwYXJzZUZsb2F0IiwiaW5wdXREaWFsb2dUb2dnbGUiLCJkaWFsb2dJbnB1dENvbmZpcm0iLCJyZW1lbWJlclB3ZCIsImxvZ2luZCIsInVuYW1lIiwicHdkIiwiY25hbWUiLCJ0eXBlIiwibG9naW5pZCIsIm9uTG9hZCIsInRtcCIsImRldmljZUlkIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUE4TUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUFBLGVBQ0E7RUFDQUE7SUFDQUM7RUFDQTtFQUNBQztJQUNB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TUFDQTtRQUNBMUI7VUFDQUM7VUFDQUM7VUFDQUM7VUFDQUM7UUFDQTtRQUNBO01BQ0E7TUFDQTtRQUNBSjtVQUNBQztVQUNBQztVQUNBQztVQUNBQztRQUNBO1FBQ0E7TUFDQTtNQUNBO1FBQ0FKO1VBQ0FDO1VBQ0FDO1VBQ0FDO1VBQ0FDO1FBQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBckI7UUFDQTRDO1FBQ0FDO1FBQ0FDO1FBQ0FDO01BQ0E7TUFDQTtNQUVBO01BQ0E7TUFDQTtRQUNBO1FBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E5QjtVQUNBQTtVQUNBQTtVQUNBO1VBQ0E7WUFDQStCO1VBQ0E7VUFDQS9CO1lBQ0FPO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtRQUVBO1VBQ0FQO1lBQ0FDO1lBQ0FDO1lBQ0FDO1lBQ0FDO1VBQ0E7VUFDQTtRQUNBO01BQ0E7UUFDQTtRQUNBSjtVQUNBQztVQUNBQztVQUNBQztVQUNBQztRQUNBO1FBQ0E7TUFDQTtJQUNBO0VBQ0E7RUFDQTRCO0lBQUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBQztNQUNBO1FBQ0FBO01BQ0E7TUFDQTtRQUNBQTtNQUNBO01BQ0FDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFFQXBDO01BQ0E7TUFDQTtJQUNBO0VBQ0E7QUFDQTtBQUFBLDJCIiwiZmlsZSI6IjU2LmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHN0eWxlPlxyXG5cdGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcclxuXHRcdGZvbnQtc2l6ZTogMTJycHg7XHJcblx0fVxyXG5cclxuXHQjaGVhZHIge1xyXG5cdFx0YmFja2dyb3VuZDogIzQzNDM0MztcclxuXHRcdC8qIHdpZHRoOiAzNzVweDsgKi9cclxuXHRcdGhlaWdodDogMjUwcnB4O1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzQzOEVCOTtcclxuXHRcdC8qIGJhY2tncm91bmQtaW1hZ2U6IHVybCguLi8uLi9pbWFnZXMvbG9naW4vcm9vdC5wbmcpICFpbXBvcnRhbnQ7XHJcblx0XHRiYWNrZ3JvdW5kLXNpemU6IGNvdmVyICFpbXBvcnRhbnQ7IFxyXG5cdFx0YmFja2dyb3VuZC1yZXBlYXQ6IG5vLXJlcGVhdCAhaW1wb3J0YW50OyAqL1xyXG5cdH1cclxuXHJcblx0LlNldFNlcnZlciB7XHJcblx0XHRmbG9hdDogbGVmdDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAyMHJweDtcclxuXHR9XHJcblxyXG5cdC5jaGVja19yZW1lbWJlclB3ZCB7XHJcblx0XHRtYXJnaW4tdG9wOiAyMHJweDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAyMHJweDtcclxuXHR9XHJcblxyXG5cdC5sb2dvIHtcclxuXHRcdGhlaWdodDogMTgwcnB4O1xyXG5cdFx0d2lkdGg6IDE4MHJweDtcclxuXHRcdG1hcmdpbi10b3A6IDE3MHJweDtcclxuXHR9XHJcblxyXG5cdC5sb2dvX2lucHV0IHtcclxuXHRcdGhlaWdodDogNDBycHg7XHJcblx0XHR3aWR0aDogNDBycHg7XHJcblx0XHRtYXJnaW4tbGVmdDogNDBycHg7XHJcblx0fVxyXG5cclxuXHQubG9nb19pY29uIHtcclxuXHRcdGhlaWdodDogNTBycHg7XHJcblx0XHR3aWR0aDogNTBycHg7XHJcblx0XHRtYXJnaW4tbGVmdDogMTVycHg7XHJcblx0XHRtYXJnaW4tdG9wOiAyMHJweDtcclxuXHR9XHJcblxyXG5cdC5tdWktY29udGVudCB7XHJcblx0XHRoZWlnaHQ6IDEwMCU7XHJcblx0XHRwYWRkaW5nLXRvcDogMTQwcnB4O1xyXG5cdFx0YmFja2dyb3VuZDogI0ZGRkZGRjtcclxuXHRcdHotaW5kZXg6IDE7XHJcblx0fVxyXG5cclxuXHQubXVpLWlucHV0LWdyb3VwIC5sYV9pY29uIHtcclxuXHRcdHdpZHRoOiAxMDBycHg7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRmb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcclxuXHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0cGFkZGluZzogN3B4IDEzcHg7XHJcblx0fVxyXG5cclxuXHQubXVpLWlucHV0LWdyb3VwIC5tdWktaW5wdXQtcm93IHtcclxuXHRcdGhlaWdodDogODVycHg7XHJcblx0XHRwb3NpdGlvbjogcmVsYXRpdmU7XHJcblx0XHRjbGVhcjogbGVmdDtcclxuXHRcdG92ZXJmbG93OiBoaWRkZW47XHJcblx0fVxyXG5cclxuXHQubXVpLWlucHV0LXJvdzpmaXJzdC1jaGlsZCB7XHJcblx0XHRib3JkZXItdG9wOiAxcHggc29saWQgI2M4YzdjYztcclxuXHR9XHJcblxyXG5cdC5tdWktaW5wdXQtcm93Omxhc3QtY2hpbGQge1xyXG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjOGM3Y2M7XHJcblx0fVxyXG5cclxuXHQubXVpLWlucHV0LWdyb3VwIC5tdWktaW5wdXQtcm93Omxhc3QtY2hpbGQ6YWZ0ZXIge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuXHR9XHJcblxyXG5cdC5tdWktaW5wdXQtZ3JvdXAgLm11aS1pbnB1dC1yb3c6YWZ0ZXIge1xyXG5cdFx0cG9zaXRpb246IGFic29sdXRlO1xyXG5cdFx0cmlnaHQ6IDA7XHJcblx0XHRib3R0b206IDA7XHJcblx0XHRsZWZ0OiAxNXB4O1xyXG5cdFx0aGVpZ2h0OiAxcHg7XHJcblx0XHRjb250ZW50OiAnJztcclxuXHRcdHRyYW5zZm9ybTogc2NhbGVZKC41KTtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNjOGM3Y2M7XHJcblx0fVxyXG5cclxuXHQubXVpLWlucHV0LXJvdyBpbnB1dCB7XHJcblx0XHRmb250LWZhbWlseTogJ0hlbHZldGljYSBOZXVlJywgSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xyXG5cdFx0Zm9udC1zaXplOiAxNXB4O1xyXG5cdFx0d2lkdGg6IDQ4MHJweDtcclxuXHRcdC8qIGZsb2F0OiByaWdodDsgKi9cclxuXHRcdG1hcmdpbi1ib3R0b206IDA7XHJcblx0XHRwYWRkaW5nLWxlZnQ6IDIwcnB4O1xyXG5cdFx0LyogcGFkZGluZy1yaWdodDogMTBycHg7ICovXHJcblx0XHQvKiBsaW5lLWhlaWdodDogMzBycHg7ICovXHJcblx0XHRoZWlnaHQ6IDg1cnB4O1xyXG5cdFx0LyogcGFkZGluZzogN3B4IDQwcHggN3B4IDBweDsgKi9cclxuXHRcdC13ZWJraXQtdXNlci1zZWxlY3Q6IHRleHQ7XHJcblx0XHQvKiBib3JkZXI6IDA7ICovXHJcblx0XHQvKiBib3JkZXItcmFkaXVzOiAwOyAqL1xyXG5cdFx0Ym94LXNoYWRvdzogbm9uZTtcclxuXHRcdG91dGxpbmU6IDA7XHJcblx0XHRiYWNrZ3JvdW5kOiAwIDA7XHJcblx0XHQtd2Via2l0LWFwcGVhcmFuY2U6IG5vbmU7XHJcblx0fVxyXG5cclxuXHQubXVpLWlucHV0LWdyb3VwIGxhYmVsLm11aS1uYXZpZ2F0ZS1yaWdodCB7XHJcblx0XHRmb250LXNpemU6IDI1cHg7XHJcblx0XHRmbG9hdDogcmlnaHQ7XHJcblx0XHRwYWRkaW5nOiAwO1xyXG5cdFx0d2lkdGg6IDgwcnB4O1xyXG5cdFx0bWFyZ2luLXJpZ2h0OiA1cnB4O1xyXG5cdFx0bWFyZ2luLXRvcDogLTg4cnB4O1xyXG5cdFx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdH1cclxuXHJcblx0YnV0dG9uLmJ0bl9sb2dpbiB7XHJcblx0XHRtYXJnaW4tdG9wOiA1MHJweDtcclxuXHRcdHBhZGRpbmc6IDIwcnB4O1xyXG5cdFx0bGluZS1oZWlnaHQ6IDEuNTtcclxuXHRcdGJhY2tncm91bmQ6ICMyN0E2RTE7XHJcblx0XHRib3JkZXI6IG5vbmU7XHJcblx0XHRjb2xvcjogI2ZmZjtcclxuXHR9XHJcbjwvc3R5bGU+XHJcblxyXG5cclxuPHRlbXBsYXRlPlxyXG5cdDx2aWV3IGNsYXNzPVwiXCIgc3R5bGU9XCJ3aWR0aDogMTAwdnc7aGVpZ2h0OiA2NHZoO1wiPlxyXG5cdFx0PGRpdiBpZD1cImhlYWRyXCIgY2xhc3M9XCJtdWktYmFyIG11aS1iYXItbmF2XCI+XHJcblx0XHRcdDxpbWFnZSBjbGFzcz1cImxvZ29cIiBzcmM9XCIuLi8uLi9pbWFnZXMvbG9naW4vbW9ib3hfbG9nXzIwMC5wbmdcIj48L2ltYWdlPlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8ZGl2IGNsYXNzPVwibXVpLWNvbnRlbnRcIj5cclxuXHRcdFx0PGZvcm0gaWQ9J2xvZ2luLWZvcm0nIGNsYXNzPVwibXVpLWlucHV0LWdyb3VwXCI+XHJcblx0XHRcdFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwiU2V0U2VydmVyXCIgQGNsaWNrPVwiaW5wdXREaWFsb2dUb2dnbGVcIj7phY3nva48L2E+XHJcblx0XHRcdFx0PCEtLSA8ZGl2IGNsYXNzPVwibXVpLWlucHV0LXJvd1wiPlxyXG5cdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFfaWNvblwiPjxpbWFnZSBjbGFzcz1cImxvZ29faW5wdXRcIiBzcmM9XCIuLi8uLi9pbWFnZXMvbG9naW4vc3ZyXzMwLnBuZ1wiPjwvaW1hZ2U+PC9sYWJlbD5cclxuXHRcdFx0XHRcdDxpbnB1dCB0eXBlPVwidGV4dFwiIGNsYXNzPVwibXVpLWlucHV0XCIgdi1tb2RlbD1cInVzZXJTZXJ2ZXJcIiBwbGFjZWhvbGRlcj1cIuacjeWKoeWZqOWcsOWdgFwiPlxyXG5cdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibXVpLW5hdmlnYXRlLXJpZ2h0XCIgaWQ9XCJzZXJzZWxcIj48aW1hZ2UgY2xhc3M9XCJsb2dvX2ljb25cIiBzcmM9XCIuLi8uLi9pbWFnZXMvbG9naW4vc2VsX2xlZnQucG5nXCIgPjwvaW1hZ2U+PC9sYWJlbD5cclxuXHRcdFx0XHQ8L2Rpdj4gLS0+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cIm11aS1pbnB1dC1yb3dcIj5cclxuXHRcdFx0XHRcdDxsYWJlbCBjbGFzcz1cImxhX2ljb25cIj5cclxuXHRcdFx0XHRcdFx0PGltYWdlIGNsYXNzPVwibG9nb19pbnB1dFwiIHNyYz1cIi4uLy4uL2ltYWdlcy9sb2dpbi9wZXJzb25fMzAucG5nXCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cIm11aS1pbnB1dFwiIHYtbW9kZWw9XCJ1c2VyTmFtZVwiIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl6LSm5Y+3XCI+XHJcblx0XHRcdFx0XHQ8IS0tIDxsYWJlbCBjbGFzcz1cIm11aS1uYXZpZ2F0ZS1yaWdodFwiIGlkPVwibmFtc2VsXCI+PGltYWdlIGNsYXNzPVwibG9nb19pY29uXCIgc3JjPVwiLi4vLi4vaW1hZ2VzL2xvZ2luL3VzZXItcGhvdG8ucG5nPC9pbWFnZT48L2xhYmVsPiAtLT5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwibXVpLWlucHV0LXJvd1wiPlxyXG5cdFx0XHRcdFx0PGxhYmVsIGNsYXNzPVwibGFfaWNvblwiPlxyXG5cdFx0XHRcdFx0XHQ8aW1hZ2UgY2xhc3M9XCJsb2dvX2lucHV0XCIgc3JjPVwiLi4vLi4vaW1hZ2VzL2xvZ2luL2xvY2tfMzAucG5nXCI+PC9pbWFnZT5cclxuXHRcdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInBhc3N3b3JkXCIgY2xhc3M9XCJtdWktaW5wdXRcIiB2LW1vZGVsPVwidXNlclB3ZFwiIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5a+G56CBXCI+XHJcblx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0PGNoZWNrYm94LWdyb3VwIGNsYXNzPVwiY2hlY2tfcmVtZW1iZXJQd2RcIiBAY2hhbmdlPVwicmVtZW1iZXJQd2RcIj5cclxuXHRcdFx0XHRcdDxsYWJlbD5cclxuXHRcdFx0XHRcdFx0PGNoZWNrYm94IHZhbHVlPVwiMVwiIDpjaGVja2VkPVwiaXNjaGVja2VkXCIgLz5cclxuXHRcdFx0XHRcdFx0PHRleHQ+6K6w5L2P5a+G56CBPC90ZXh0PlxyXG5cdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHQ8L2NoZWNrYm94LWdyb3VwPlxyXG5cdFx0XHQ8L2Zvcm0+XHJcblx0XHRcdDxidXR0b24gaWQ9J2xvZ2luJyB0eXBlPVwiZGVmYXVsdFwiIEB0YXA9XCJsb2dpbmRcIiBjbGFzcz1cImJ0bl9sb2dpblwiPnt7bG9naW59fTwvYnV0dG9uPlxyXG5cdFx0XHQ8cCBzdHlsZT1cImZsb2F0OnJpZ2h0OyBtYXJnaW46IDEwcHggMTBweDtjb2xvcjojYzhjN2NjXCI+XHJcblx0XHRcdFx0PHNwYW4+54mI5pys5Y+377yaPC9zcGFuPlxyXG5cdFx0XHRcdDxzcGFuPnt7dmVyc2lvbn19PC9zcGFuPlxyXG5cdFx0XHQ8L3A+XHJcblx0XHRcdDxkaXYgY2xhc3M9XCJcIlxyXG5cdFx0XHRcdHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO2JhY2tncm91bmQ6IHdoaXRlO2JvcmRlci10b3A6IDBweCBzb2xpZCAjQzBDMEMwO2NvbG9yOiAjN2NkMGY4O3Bvc2l0aW9uOiBhYnNvbHV0ZTtib3R0b206IDA7d2lkdGg6IDEwMCU7aGVpZ2h0OiAyNHB4O3BhZGRpbmctdG9wOjNweDtmb250LXNpemU6IDExcHg7XCI+XHJcblx0XHRcdDwvZGl2PlxyXG5cdFx0PC9kaXY+XHJcblx0XHQ8dmlldz5cclxuXHRcdFx0PCEtLSDovpPlhaXmoYbnpLrkvosgLS0+XHJcblx0XHRcdDx1bmktcG9wdXAgcmVmPVwiaW5wdXREaWFsb2dcIiB0eXBlPVwiZGlhbG9nXCI+XHJcblx0XHRcdFx0PHVuaS1wb3B1cC1kaWFsb2cgcmVmPVwiaW5wdXRDbG9zZVwiIG1vZGU9XCJpbnB1dFwiIHRpdGxlPVwi6K6+572uXCIgOnZhbHVlPVwidXNlclNlcnZlclwiIHBsYWNlaG9sZGVyPVwi6K+36L6T5YWl5YaF5a65XCJcclxuXHRcdFx0XHRcdEBjb25maXJtPVwiZGlhbG9nSW5wdXRDb25maXJtXCI+PC91bmktcG9wdXAtZGlhbG9nPlxyXG5cdFx0XHQ8L3VuaS1wb3B1cD5cclxuXHRcdFx0PCEtLSDniYjmnKzljYfnuqflvLnnqpflvIDlp4sgLS0+XHJcblx0XHRcdDx1bmktcG9wdXAgcmVmPVwicHJvbW90aW9uXCIgdHlwZT1cImNlbnRlclwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwicHJvbW90aW9uXCIgc3R5bGU9XCJ3aWR0aDogNzAwcnB4O3BhZGRpbmc6MjBycHggNDBycHg7IGJhY2tncm91bmQ6IHdoaXRlO2ZvbnQtc2l6ZTogMzZycHg7XCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9wZXJhdGVzXCIgdi1pZj1cInNob3dCdG5zPT10cnVlXCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IHN0eWxlPVwidGV4dC1hbGlnbjogY2VudGVyO3BhZGRpbmctdG9wOjIwcnB4O3BhZGRpbmctYm90dG9tOiA0MHJweDtcIj5cclxuXHRcdFx0XHRcdFx0XHTns7vnu5/mnInmlrDniYjmnKzvvIzmmK/lkKbpnIDopoHmm7TmlrBcclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8dGV4dCBAY2xpY2s9XCJjYW5jZWxcIlxyXG5cdFx0XHRcdFx0XHRcdHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO2NvbG9yOiAjN2NkMGY4O3dpZHRoOiA1MCU7IHRleHQtYWxpZ246IGNlbnRlcjtcIj7lj5bmtog8L3RleHQ+XHJcblx0XHRcdFx0XHRcdDx0ZXh0IEBjbGljaz1cInN1cmVcIlxyXG5cdFx0XHRcdFx0XHRcdHN0eWxlPVwiZGlzcGxheTogaW5saW5lLWJsb2NrO2NvbG9yOiAjN2NkMGY4O3dpZHRoOiA1MCU7IHRleHQtYWxpZ246IGNlbnRlcjtcIj7noa7orqQ8L3RleHQ+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cIm9wZXJhdGVzXCIgdi1lbHNlPlxyXG5cdFx0XHRcdFx0XHQ8Y21kLXByb2dyZXNzIDpwZXJjZW50PVwicGVyY2VudGFnZVwiIHN0cm9rZS1jb2xvcj1cImxpbmVhci1ncmFkaWVudCh0byByaWdodCwgI2VmMzJkOSwgIzg5ZmZmZClcIj5cclxuXHRcdFx0XHRcdFx0PC9jbWQtcHJvZ3Jlc3M+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3VuaS1wb3B1cD5cclxuXHRcdFx0PCEtLSDniYjmnKzljYfnuqflvLnnqpfnu5PmnZ8gLS0+XHJcblx0XHQ8L3ZpZXc+XHJcblxyXG5cdDwvdmlldz5cclxuXHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5cdGltcG9ydCBjbWRQcm9ncmVzcyBmcm9tIFwiQC9jb21wb25lbnRzL2NtZC1wcm9ncmVzcy9jbWQtcHJvZ3Jlc3MudnVlXCJcclxuXHQvLyBpbXBvcnQge1xyXG5cdC8vIFx0bWFwU3RhdGUsXHJcblx0Ly8gXHRtYXBNdXRhdGlvbnMsXHJcblx0Ly8gXHRtYXBBY3Rpb25zICxcclxuXHQvLyB9IGZyb20gJ3Z1ZXgnXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0Y29tcG9uZW50czoge1xyXG5cdFx0XHRjbWRQcm9ncmVzc1xyXG5cdFx0fSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdC8v6I635Y+W5YWo5bGA5Y+C5pWw77yadXJsLeacjeWKoeWZqOWcsOWdgFxyXG5cdFx0XHR2YXIgc2VydmVyID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdzZXJ2ZXInKTtcclxuXHRcdFx0dmFyIGFjY291bnQgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ2FjY291bnQnKTtcclxuXHRcdFx0dmFyIHBhc3N3b3JkID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdwYXNzd29yZCcpO1xyXG5cdFx0XHR2YXIgdXJsID0gdGhpcy4kc3RvcmUuc3RhdGUudXJsO1xyXG5cdFx0XHR2YXIgdXNlcm5hbWUgPSB0aGlzLiRzdG9yZS5zdGF0ZS51c2VybmFtZTtcclxuXHRcdFx0dmFyIHVzZXJwd2QgPSB0aGlzLiRzdG9yZS5zdGF0ZS51c2VycHdkO1xyXG5cdFx0XHR2YXIgaXNjaGVja2VkID0gZmFsc2U7XHJcblx0XHRcdGlmICghc2VydmVyKVxyXG5cdFx0XHRcdHNlcnZlciA9IHVybDtcclxuXHRcdFx0aWYgKCFhY2NvdW50KVxyXG5cdFx0XHRcdGFjY291bnQgPSB1c2VybmFtZTtcclxuXHRcdFx0aWYgKGFjY291bnQgJiYgcGFzc3dvcmQpXHJcblx0XHRcdFx0aXNjaGVja2VkID0gdHJ1ZTtcclxuXHRcdFx0Ly8gY29uc29sZS5sb2codXJsKTtcclxuXHRcdFx0cmV0dXJuIHtcclxuXHRcdFx0XHRsb2dpbjogXCLlvIDlp4vnmbvlvZVcIixcclxuXHRcdFx0XHR1c2VyU2VydmVyOiBzZXJ2ZXIsXHJcblx0XHRcdFx0dXNlck5hbWU6IGFjY291bnQsXHJcblx0XHRcdFx0dXNlclB3ZDogcGFzc3dvcmQsXHJcblx0XHRcdFx0aXNjaGVja2VkOiBpc2NoZWNrZWQsXHJcblx0XHRcdFx0dmVyc2lvbjogXCIxLjAuMFwiLFxyXG5cdFx0XHRcdGRvd25sb2FkVXJsOiBcIlwiLCAvL+WuieWNk2FwcOS4i+i9vemTvuaOpVxyXG5cdFx0XHRcdHBlcmNlbnRhZ2U6IDAsIC8v5LiL6L296L+b5bqmXHJcblx0XHRcdFx0c2hvd0J0bnM6IHRydWUsXHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRvblNob3coKSB7XHJcblx0XHRcdHRoaXMucXVlcnkoKTsgLy/niYjmnKzljYfnuqdcclxuXHRcdH0sXHJcblx0XHR3YXRjaDoge1xyXG5cdFx0XHQvL+ebkeWQrOi/m+W6puadoVxyXG5cdFx0XHRwZXJjZW50YWdlKGUpIHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlKTtcclxuXHRcdFx0XHRpZiAoZSA+PSAxMDApIHtcclxuXHRcdFx0XHRcdHRoaXMuJHJlZnMucHJvbW90aW9uLmNsb3NlKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9XHJcblx0XHR9LFxyXG5cdFx0Ly8gY29tcHV0ZWQ6IG1hcFN0YXRlKHtcclxuXHRcdC8vIFx0Ly8g5LuOc3RhdGXkuK3mi7/liLDmlbDmja4g566t5aS05Ye95pWw5Y+v5L2/5Luj56CB5pu0566A57uDXHJcblx0XHQvLyBcdGhhc0xvZ2luOiBzdGF0ZSA9PiBzdGF0ZS5oYXNMb2dpbixcclxuXHRcdC8vIFx0bG9naW5wcm92aWRlcjogc3RhdGUgPT4gc3RhdGUubG9naW5Qcm92aWRlcixcclxuXHRcdC8vIFx0YXBwaW5mbzpzdGF0ZT0+c3RhdGUuYXBwSW5mb1xyXG5cdFx0Ly8gfSksXHJcblx0XHRtZXRob2RzOiB7XHJcblx0XHRcdC8v5p+l6K+i5b2T5YmN54mI5pys5Y+3XHJcblx0XHRcdHF1ZXJ5KCkge1xyXG5cdFx0XHRcdC8vICNpZmRlZiBBUFAtUExVU1xyXG5cdFx0XHRcdHBsdXMucnVudGltZS5nZXRQcm9wZXJ0eShwbHVzLnJ1bnRpbWUuYXBwaWQsICh3Z3RpbmZvKSA9PiB7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh3Z3RpbmZvKTtcclxuXHRcdFx0XHRcdHZhciB2ZXJzaW9uID0gd2d0aW5mby52ZXJzaW9uOyAvL+WuouaIt+err+eJiOacrOWPt1xyXG5cdFx0XHRcdFx0Ly8gdmFyIHZlcnNpb25Db2RlID0gcGFyc2VJbnQod2d0aW5mby52ZXJzaW9uQ29kZSk7IC8v5a6i5oi356uv54mI5pys5Y+357yW56CBXHJcblx0XHRcdFx0XHR0aGlzLmNoZWNrKHZlcnNpb24pIC8v5qOA5rWL5piv5ZCm6ZyA6KaB5pu05pawXHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHQvLyNlbmRpZlxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvL+ajgOa1i+aYr+WQpumcgOimgeabtOaWsFxyXG5cdFx0XHRhc3luYyBjaGVjayh2ZXJzaW9uKSB7XHJcblx0XHRcdFx0aWYgKCF0aGlzLnVzZXJTZXJ2ZXIpIHtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcclxuXHRcdFx0XHRcdFx0Y29udGVudDogXCLmnKrovpPlhaXnvZHnq5nlnLDlnYDvvIzor7fph43mlrDphY3nva7ovpPlhaXvvIFcIixcclxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXHJcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIHNlciA9IHRoaXMudXNlclNlcnZlci5zcGxpdCgnLycpO1xyXG5cdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0aWYoc2VyWzFdID09ICdtb2JveDMnKXsgLy/liKTmlq3lvZPliY3nvZHlnYDmmK/lkKbmmK9tb2JveDNcclxuXHRcdFx0XHRcdHZhciB1cmwgPSAnaHR0cDovLycrdGhpcy51c2VyU2VydmVyKycvUHJvZ3JhbS92ZXJzaW9uLnR4dCc7XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyh1cmwpO1xyXG5cdFx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0XHR1cmw6IHVybCwgLy8g5oyH5a6aSlPmlofku7bnmoTlrozmlbTot6/lvoRcclxuXHRcdFx0XHRcdFx0bWV0aG9kOiAnR0VUJyxcclxuXHRcdFx0XHRcdFx0c3VjY2VzcyhyZXMpIHtcclxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChyZXMgJiYgcmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly/ojrflj5blvZPliY3niYjmnKzlj7dcclxuXHRcdFx0XHRcdFx0XHRcdHZhciBWZXJzaW9uTmFtZSA9IHJlcy5kYXRhOyAvL+abtOaWsOWMheWQjeensFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHZlcnNpb25JbmZvID0gcmVzLmRhdGEuc3BsaXQoJ18nKTtcclxuXHRcdFx0XHRcdFx0XHRcdHZhciB2ZXJzaW9uTnVtID0gdmVyc2lvbkluZm9bMl0ucmVwbGFjZShcIi5hcGtcIiwgXCJcIik7IC8v54mI5pys57yW56CBXHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgVmVyc2lvbkNvZGUgPSB2ZXJzaW9uSW5mb1syXS5yZXBsYWNlKFwiLmFwa1wiLCBcIlwiKS5yZXBsYWNlKFwiLlwiLCBcIlwiKS5yZXBsYWNlKFwiLlwiLCBcIlwiKTsgLy/mnI3liqHnq6/niYjmnKzlj7dcclxuXHRcdFx0XHRcdFx0XHRcdC8vIHRoaXMuZG93bmxvYWRVcmwgPSByZXNwLlBkYVVybCtcIi9cIitWZXJzaW9uTmFtZTsgLy9hcHDkuIvovb3pk77mjqVcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLmRvd25sb2FkVXJsID0gXCJodHRwOi8vXCIgKyAkdGhpcy51c2VyU2VydmVyICsgXCIvUHJvZ3JhbS9cIiArIFZlcnNpb25OYW1lOyAvL2FwcOS4i+i9vemTvuaOpXRoaXMuXHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgaXN2ZXIgPSAkdGhpcy5jb21wYXJlKHZlcnNpb25OdW0sdmVyc2lvbik7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoaXN2ZXIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJHJlZnMucHJvbW90aW9uLm9wZW4oKTtcclxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCflvZPliY3lt7LmmK/mnIDmlrDniYjmnKwnKVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyBpZihyZXMuc3RhdHVzQ29kZSA9PT0gNDA0KXtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyBcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXHJcblx0XHRcdFx0XHRcdFx0XHQvLyBcdFx0Y29udGVudDogJ+ivt+axguWksei0pe+8jOaJvuS4jeWIsOabtOaWsOWMheeJiOacrOaWh+aho++8micrdXJsLFxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gXHRcdHNob3dDYW5jZWw6IGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gXHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXHJcblx0XHRcdFx0XHRcdFx0XHQvLyBcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gfVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdFx0ZmFpbChlcnIpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyDplJnor6/lpITnkIbpgLvovpFcclxuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivr1wiLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogJ+iOt+WPlicrdXJsKyfmlofku7blpLHotKXvvJonKyBlcnIsXHJcblx0XHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0dmFyIGRhdGFJbmZvID0ge1xyXG5cdFx0XHRcdFx0XHRzZXJ2ZXI6IHRoaXMudXNlclNlcnZlclxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdHZXRBcGtWZXJzaW9uSW5mbycsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0bGV0IHJlc3AgPSBzdWNjZXNzLmRhdGE7XHJcblx0XHRcdFx0XHRcdFx0aWYgKHJlc3ApIHtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGNvbnN0IG9iaiA9IHJlc3AuZGF0YS5maWx0ZXIoaXRlbSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyBcdHJldHVybiBpdGVtLmdyb3VwTmFtZSA9PSAndmVyc2lvbidcclxuXHRcdFx0XHRcdFx0XHRcdC8vIH0pXHJcblx0XHRcdFx0XHRcdFx0XHQvL+iOt+WPluW9k+WJjeeJiOacrOWPt1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgVmVyc2lvbk5hbWUgPSByZXNwLlZlcnNpb25OYW1lOyAvL+abtOaWsOWMheWQjeensFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgVmVyc2lvbkNvZGUgPSByZXNwLlZlcnNpb25Db2RlOyAvL+eJiOacrOe8lueggVxyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgdmVyc2lvbk51bSA9IHJlc3AuVmVyc2lvbjsgLy/mnI3liqHnq6/niYjmnKzlj7dcclxuXHRcdFx0XHRcdFx0XHRcdC8vIHRoaXMuZG93bmxvYWRVcmwgPSByZXNwLlBkYVVybCtcIi9cIitWZXJzaW9uTmFtZTsgLy9hcHDkuIvovb3pk77mjqVcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLmRvd25sb2FkVXJsID0gXCJodHRwOi8vXCIgKyAkdGhpcy51c2VyU2VydmVyICsgXCIvUHJvZ3JhbS9cIiArIFZlcnNpb25OYW1lOyAvL2FwcOS4i+i9vemTvuaOpXRoaXMuXHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgaXN2ZXIgPSAkdGhpcy5jb21wYXJlKHZlcnNpb25OdW0sdmVyc2lvbik7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoaXN2ZXIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJHJlZnMucHJvbW90aW9uLm9wZW4oKTtcclxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCflvZPliY3lt7LmmK/mnIDmlrDniYjmnKwnKVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivr1wiLFxyXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXHJcblx0XHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcclxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor69cIixcclxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2cgPyBleC5lcnJNc2cgOiBleC5tZXNzYWdlLFxyXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRjb21wYXJlKGN1clYsIHJlcVYpIHtcclxuXHRcdFx0XHR2YXIgYXJyMSA9IGN1clYudG9TdHJpbmcoKS5zcGxpdCgnLicpO1xyXG5cdFx0XHQgICAgdmFyIGFycjIgPSByZXFWLnRvU3RyaW5nKCkuc3BsaXQoJy4nKTtcclxuXHRcdFx0ICAgIC8v5bCG5Lik5Liq54mI5pys5Y+35ouG5oiQ5pWw5a2XXHJcblx0XHRcdCAgICB2YXIgbWluTCA9IE1hdGgubWluKGFycjEubGVuZ3RoLCBhcnIyLmxlbmd0aCk7XHJcblx0XHRcdCAgICB2YXIgcG9zID0gMDsgLy/lvZPliY3mr5TovoPkvY1cclxuXHRcdFx0ICAgIHZhciBkaWZmID0gMDsgLy/lvZPliY3kuLrkvY3mr5TovoPmmK/lkKbnm7jnrYlcclxuXHRcdFx0ICAgIHZhciBmbGFnID0gZmFsc2U7XHJcblx0XHRcdCAgICAvL+mAkOS4quavlOi+g+WmguaenOW9k+WJjeS9jeebuOetieWImee7p+e7reavlOi+g+S4i+S4gOS9jVxyXG5cdFx0XHQgICAgd2hpbGUgKHBvcyA8IG1pbkwpIHtcclxuXHRcdFx0ICAgICAgICBkaWZmID0gcGFyc2VJbnQoYXJyMVtwb3NdKSAtIHBhcnNlSW50KGFycjJbcG9zXSk7XHJcblx0XHRcdCAgICAgICAgaWYgKGRpZmYgPT0gMCkge1xyXG5cdFx0XHQgICAgICAgICAgICBwb3MrKztcclxuXHRcdFx0ICAgICAgICAgICAgY29udGludWU7XHJcblx0XHRcdCAgICAgICAgfSBlbHNlIGlmIChkaWZmID4gMCkge1xyXG5cdFx0XHQgICAgICAgICAgICBmbGFnID0gdHJ1ZTtcclxuXHRcdFx0ICAgICAgICAgICAgYnJlYWs7XHJcblx0XHRcdCAgICAgICAgfSBlbHNlIHtcclxuXHRcdFx0ICAgICAgICAgICAgZmxhZyA9IGZhbHNlO1xyXG5cdFx0XHQgICAgICAgICAgICBicmVhaztcclxuXHRcdFx0ICAgICAgICB9XHJcblx0XHRcdCAgICB9XHJcblx0XHRcdCAgICByZXR1cm4gZmxhZztcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly/noa7orqTmm7TmlrBcclxuXHRcdFx0c3VyZSgpIHtcclxuXHRcdFx0XHQvL+WFs+mXreaMiemSrlxyXG5cdFx0XHRcdHRoaXMuc2hvd0J0bnMgPSBmYWxzZTtcclxuXHRcdFx0XHRsZXQgc3lzID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKCkucGxhdGZvcm0gLy/mo4Dmn6Xns7vnu59cclxuXHRcdFx0XHRpZiAoc3lzID09IFwiaW9zXCIpIHtcclxuXHRcdFx0XHRcdC8vIHRoaXMuZ2V0SW9zSW5mbygpXHJcblx0XHRcdFx0fSBlbHNlIGlmIChzeXMgPT0gXCJhbmRyb2lkXCIpIHtcclxuXHRcdFx0XHRcdHRoaXMudXBkYXRlQVBQKCkgLy8g6LCD55So5LiL6L295pa55rOVYXBw5YaF5LiL6L29XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHQvL+WPlua2iOabtOaWsFxyXG5cdFx0XHRjYW5jZWwoKSB7XHJcblx0XHRcdFx0dGhpcy4kcmVmcy5wcm9tb3Rpb24uY2xvc2UoKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly/pk77mjqXoi7nmnpzllYblupfkuIvovb1cclxuXHRcdFx0Ly8gZ2V0SW9zSW5mbygpIHtcclxuXHRcdFx0Ly8gXHRsZXQgYXBwbGVJZCA9IFwi5L2g55qEYXBwaWRcIlxyXG5cdFx0XHQvLyBcdHBsdXMucnVudGltZS5sYXVuY2hBcHBsaWNhdGlvbih7XHJcblx0XHRcdC8vIFx0XHRhY3Rpb246IFwiaXRtcy1hcHBzOi8vaXR1bmVzLmFwcGxlLmNvbS9jbi9hcHAvaWRcIiArIGFwcGxlSWQgKyBcIj9tdD04XCJcclxuXHRcdFx0Ly8gXHR9LCBmdW5jdGlvbihlKSB7XHJcblx0XHRcdC8vIFx0XHRjb25zb2xlLmxvZygnT3BlbiBzeXN0ZW0gZGVmYXVsdCBicm93c2VyIGZhaWxlZDogJyArIGUubWVzc2FnZSk7XHJcblx0XHRcdC8vIFx0fSk7XHJcblx0XHRcdC8vIH0sXHJcblx0XHRcdC8v5a6J5Y2T5pu05pawXHJcblx0XHRcdHVwZGF0ZUFQUCgpIHtcclxuXHRcdFx0XHRsZXQgX3RoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdGxldCB1cmwgPSB0aGlzLmRvd25sb2FkVXJsO1xyXG5cdFx0XHRcdC8vIOWumOaWuUFQSVxyXG5cdFx0XHRcdHZhciBkdGFzayA9IHBsdXMuZG93bmxvYWRlci5jcmVhdGVEb3dubG9hZCh1cmwsIHt9LCBmdW5jdGlvbihkLCBzdGF0dXMpIHtcclxuXHRcdFx0XHRcdC8vZOS4uuS4i+i9veeahOaWh+S7tuWvueixoVxyXG5cdFx0XHRcdFx0aWYgKHN0YXR1cyA9PSAyMDApIHtcclxuXHRcdFx0XHRcdFx0Ly/kuIvovb3miJDlip8sZC5maWxlbmFtZeaYr+aWh+S7tuWcqOS/neWtmOWcqOacrOWcsOeahOebuOWvuei3r+W+hO+8jOS9v+eUqOS4i+mdoueahEFQSeWPr+i9rOS4uuW5s+WPsOe7neWvuei3r+W+hFxyXG5cdFx0XHRcdFx0XHR2YXIgZmlsZVNhdmVVcmwgPSBwbHVzLmlvLmNvbnZlcnRMb2NhbEZpbGVTeXN0ZW1VUkwoZC5maWxlbmFtZSk7XHJcblx0XHRcdFx0XHRcdHBsdXMucnVudGltZS5vcGVuRmlsZShkLmZpbGVuYW1lKTsgLy/pgInmi6nova/ku7bmiZPlvIDmlofku7ZcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxyXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiAn5pu05paw5oiQ5YqfJ1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0X3RoaXMuJHJlZnMucHJvbW90aW9uLmNsb3NlKCk7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHQvL+S4i+i9veWksei0pVxyXG5cdFx0XHRcdFx0XHRwbHVzLmRvd25sb2FkZXIuY2xlYXIoKTsgLy/muIXpmaTkuIvovb3ku7vliqFcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxyXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiAn5pu05paw5aSx6LSlJ1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0X3RoaXMuc2hvd0J0bnMgPSBmYWxzZTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdC8v5byA5aeL5LiL6L29XHJcblx0XHRcdFx0ZHRhc2suc3RhcnQoKTtcclxuXHRcdFx0XHQvL+ebkeWQrOS4i+i9vei/m+W6plxyXG5cdFx0XHRcdGR0YXNrLmFkZEV2ZW50TGlzdGVuZXIoJ3N0YXRlY2hhbmdlZCcsIGZ1bmN0aW9uKHRhc2spIHtcclxuXHRcdFx0XHRcdF90aGlzLnBlcmNlbnRhZ2UgPSBwYXJzZUludChcclxuXHRcdFx0XHRcdFx0KHBhcnNlRmxvYXQodGFzay5kb3dubG9hZGVkU2l6ZSkgLyBwYXJzZUZsb2F0KHRhc2sudG90YWxTaXplKSkgKiAxMDApO1xyXG5cdFx0XHRcdFx0aWYgKF90aGlzLnBlcmNlbnRhZ2UgPT0gMTAwKSB7XHJcblx0XHRcdFx0XHRcdF90aGlzLiRyZWZzLnByb21vdGlvbi5jbG9zZSgpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJ+S4i+i9vei/m+W6pu+8micgKyBfdGhpcy5wZXJjZW50YWdlKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0Ly8gLi4ubWFwTXV0YXRpb25zKHtcclxuXHRcdFx0Ly8gXHRtdXRhdExvZ2luOidsb2dpbidcclxuXHRcdFx0Ly8gfSksXHJcblx0XHRcdC8vIC4uLm1hcEFjdGlvbnMoe1xyXG5cdFx0XHQvLyBcdGFjdGlvbkxvZ2luOidsb2dpbidcclxuXHRcdFx0Ly8gfSksXHJcblx0XHRcdGlucHV0RGlhbG9nVG9nZ2xlKCkge1xyXG5cdFx0XHRcdHRoaXMuJHJlZnMuaW5wdXREaWFsb2cub3BlbigpXHJcblx0XHRcdH0sXHJcblx0XHRcdGRpYWxvZ0lucHV0Q29uZmlybSh2YWwpIHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyh2YWwpO1xyXG5cdFx0XHRcdC8vIHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdFx0Ly8gXHR0aXRsZTogJzPnp5LlkI7kvJrlhbPpl60nXHJcblx0XHRcdFx0Ly8gfSlcclxuXHRcdFx0XHQvLyBzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHQvLyB1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdFx0XHR0aGlzLnVzZXJTZXJ2ZXIgPSB2YWw7XHJcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdzZXJ2ZXInLCB2YWwpO1xyXG5cdFx0XHRcdC8vIHRoaXMudmFsdWUgPSB2YWxcclxuXHRcdFx0XHQvLyDlhbPpl63nqpflj6PlkI7vvIzmgaLlpI3pu5jorqTlhoXlrrlcclxuXHRcdFx0XHR0aGlzLiRyZWZzLmlucHV0RGlhbG9nLmNsb3NlKCk7XHJcblxyXG5cdFx0XHRcdHRoaXMucXVlcnkoKTsgLy/niYjmnKzljYfnuqdcclxuXHRcdFx0XHQvLyB9LCAzMDAwKVxyXG5cdFx0XHRcdC8vIH0sIDMwMDApXHJcblx0XHRcdH0sXHJcblx0XHRcdHJlbWVtYmVyUHdkKGUpIHsgLy/orrDkvY/lr4bnoIFcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcblx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdhY2NvdW50JywgJycpO1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygncGFzc3dvcmQnLCAnJyk7XHJcblx0XHRcdFx0aWYgKGUudGFyZ2V0LnZhbHVlWzBdID09ICcxJykge1xyXG5cdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdhY2NvdW50JywgdGhpcy51c2VyTmFtZSk7XHJcblx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ3Bhc3N3b3JkJywgdGhpcy51c2VyUHdkKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdC8vIGdldENvb2tpZShrZXkpe1xyXG5cdFx0XHQvLyBcdGlmKGRvY3VtZW50LmNvb2tpZS5sZW5ndGg+MCl7XHJcblx0XHRcdC8vIFx0XHR2YXIgc3RhcnQgPSBkb2N1bWVudC5jb29raWUuaW5kZXhPZihrZXkgKyc9Jyk7XHJcblx0XHRcdC8vIFx0XHRpZihzdGFydCAhPT0gLTEpe1xyXG5cdFx0XHQvLyBcdFx0XHRzdGFydCA9IHN0YXJ0K2tleS5sZW5ndGgrMTtcclxuXHRcdFx0Ly8gXHRcdFx0dmFyIGVuZCA9IGRvY3VtZW50LmNvb2tpZS5pbmRleE9mKCc7JyxzdGFydCk7XHJcblx0XHRcdC8vIFx0XHRcdGlmKGVuZCA9PT0gLTEpIGVuZD1kb2N1bWVudC5jb29raWUubGVuZ3RoO1xyXG5cdFx0XHQvLyBcdFx0XHRyZXR1cm4gZG9jdW1lbnQuY29va2llLnN1YnN0cmluZyhzdGFydCxlbmQpO1xyXG5cdFx0XHQvLyBcdFx0fVxyXG5cdFx0XHQvLyBcdH1cclxuXHRcdFx0Ly8gXHRyZXR1cm4gJyc7XHJcblx0XHRcdC8vIH0sXHJcblx0XHRcdC8vIHNldENvb2tpZShjTmFtZSx2YWx1ZSxleHBpcmVkYXlzKXtcclxuXHRcdFx0Ly8gXHR2YXIgZXhkYXRlID0gbmV3IERhdGUoKTtcclxuXHRcdFx0Ly8gXHRleGRhdGUuc2V0RGF0ZShleGRhdGUuZ2V0RGF0ZSgpLGV4cGlyZWRheXMpXHJcblx0XHRcdC8vIFx0ZG9jdW1lbnQuY29va2llID0gY05hbWUrJz0nKyBkb2N1bWVudFVSTENvbXBvbmVudCh2YWx1ZSkrXHJcblx0XHRcdC8vIFx0KChleHBpcmVkYXlzPT1udWxsKT8nJzonO2V4cGlyZXM9JytleGRhdGUudG9HTVRTdHJpbmcoKSk7XHJcblxyXG5cdFx0XHQvLyB9LFxyXG5cdFx0XHRsb2dpbmQoKSB7XHJcblx0XHRcdFx0aWYgKCF0aGlzLnVzZXJTZXJ2ZXIpIHtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcclxuXHRcdFx0XHRcdFx0Y29udGVudDogXCLmnKrovpPlhaXnvZHnq5nlnLDlnYDvvIzor7fph43mlrDphY3nva7ovpPlhaXvvIFcIixcclxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXHJcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKCF0aGlzLnVzZXJOYW1lKSB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwi5pyq6L6T5YWl55So5oi35ZCN77yM6K+36YeN5paw6L6T5YWl77yBXCIsXHJcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICghdGhpcy51c2VyUHdkKSB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXHJcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwi5pyq6L6T5YWl5a+G56CB77yM6K+36YeN5paw6L6T5YWl77yBXCIsXHJcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxyXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8v5qOA5p+lIFwi55m75b2V54q25oCBL+mUgeWxj+eKtuaAgVwiIOe7k+adn1xyXG5cdFx0XHRcdHZhciBsb2dpbkluZm8gPSB7XHJcblx0XHRcdFx0XHRzZXJ2ZXI6IHRoaXMudXNlclNlcnZlcixcclxuXHRcdFx0XHRcdHVuYW1lOiB0aGlzLnVzZXJOYW1lLFxyXG5cdFx0XHRcdFx0cHdkOiB0aGlzLnVzZXJQd2QsXHJcblx0XHRcdFx0XHRjbmFtZTogcGx1cy5kZXZpY2UubW9kZWwsXHJcblx0XHRcdFx0XHR0eXBlOiBcIjBcIlxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0Y29uc29sZS5sb2cobG9naW5JbmZvKTtcclxuXHJcblx0XHRcdFx0dGhpcy4kZGF0YS5sb2dpbiA9IFwibG9hZGluZy4uLi4uLlwiO1xyXG5cdFx0XHRcdC8v55m75b2VXHJcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2xvZ2luJywgbG9naW5JbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcgfHwgc3VjY2Vzcy5lcnJfY29kZT09MCkge1xyXG5cdFx0XHRcdFx0XHQvL+eZu+W9leaIkOWKn+WQjua4heepuue8k+WtmOaVsOaNrlxyXG5cdFx0XHRcdFx0XHR0aGlzLiRzdG9yZS5jb21taXQoXCJhcmVhRnVuY1wiLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0dGhpcy4kc3RvcmUuY29tbWl0KFwiY2xhc3NBdHRyTGlzdFwiLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0dGhpcy4kc3RvcmUuY29tbWl0KFwiY2xhc3NHcmlkU3R5bGVJbmZvXCIsIG51bGwpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLiRzdG9yZS5jb21taXQoXCJkaWNWYWx1ZUluZm9cIiwgbnVsbCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuJHN0b3JlLmNvbW1pdChcInN1YkNsYXNzQXR0ckxpc3RcIiwgbnVsbCk7XHJcblx0XHRcdFx0XHRcdHRoaXMuJHN0b3JlLmNvbW1pdChcInN1YkNsYXNzR3JpZFN0eWxlSW5mb1wiLCBudWxsKTtcclxuXHRcdFx0XHRcdFx0Ly/orr7nva7lhajlsYDlj4LmlbDvvJp1c2VyLeeUqOaIt+S/oeaBr1xyXG5cdFx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ3NlcnZlcicsIGxvZ2luSW5mby5zZXJ2ZXIpO1xyXG5cdFx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ2FjY291bnQnLCBsb2dpbkluZm8udW5hbWUpO1xyXG5cdFx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ3Bhc3N3b3JkJywgbG9naW5JbmZvLnB3ZCk7XHJcblx0XHRcdFx0XHRcdC8vIHRoaXMubXV0YXRMb2dpbih7bG9naW5pZDpzdWNjZXNzfSk7XHJcblx0XHRcdFx0XHRcdHRoaXMuJHN0b3JlLmNvbW1pdCgnbG9naW4nLCB7XHJcblx0XHRcdFx0XHRcdFx0bG9naW5pZDogc3VjY2Vzc1xyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHRcdHVybDogJy4uL2luZGV4L2luZGV4P2FyZ3M9OTk5OTk5OTk5OSdcclxuXHRcdFx0XHRcdFx0fSlcclxuXHRcdFx0XHRcdFx0Ly8gdW5pLnJlZGlyZWN0VG8oe1xyXG5cdFx0XHRcdFx0XHQvLyBcdHVybDonLi4vaW5kZXgvaW5kZXg/YXJncz05OTk5OTk5OTk5J1xyXG5cdFx0XHRcdFx0XHQvLyB9KTtcclxuXHRcdFx0XHRcdFx0dGhpcy5sb2dpbiA9IFwi5byA5aeL55m75b2VXCI7XHJcblxyXG5cdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vXCIsXHJcblx0XHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXHJcblx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXHJcblx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdHRoaXMubG9naW4gPSBcIuW8gOWni+eZu+W9lVwiO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor69cIixcclxuXHRcdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxyXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcclxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcclxuXHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0dGhpcy5sb2dpbiA9IFwi5byA5aeL55m75b2VXCI7XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRvbkxvYWQoKSB7XHJcblx0XHRcdC8v6I635Y+WbWFj5Zyw5Z2AXHJcblx0XHRcdHZhciBuZXQgPSBwbHVzLmFuZHJvaWQuaW1wb3J0Q2xhc3MoXCJqYXZhLm5ldC5OZXR3b3JrSW50ZXJmYWNlXCIpO1xyXG5cdFx0XHR2YXIgd2wwID0gbmV0LmdldEJ5TmFtZSgnd2xhbjAnKTtcclxuXHRcdFx0dmFyIG1hY0J5dGUgPSB3bDAuZ2V0SGFyZHdhcmVBZGRyZXNzKCk7XHJcblx0XHRcdHZhciBkZXZpY2VJZCA9ICcnICBcclxuXHRcdFx0Ly/kuIvpnaLov5nmrrXku6PnoIHmnaXoh6rnvZHnu5wgIFxyXG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IG1hY0J5dGUubGVuZ3RoOyBpKyspIHsgIFxyXG5cdFx0XHQgICAgdmFyIHRtcCA9IFwiXCI7ICBcclxuXHRcdFx0ICAgIHZhciBudW0gPSBtYWNCeXRlW2ldOyAgXHJcblx0XHRcdCAgICBpZiAobnVtIDwgMCkgeyAgICAgICAgXHJcblx0XHRcdCAgICAgIHRtcCA9KDI1NStudW0rMSkudG9TdHJpbmcoMTYpOyAgXHJcblx0XHRcdCAgICB9IGVsc2UgeyAgXHJcblx0XHRcdCAgICAgIHRtcCA9IG51bS50b1N0cmluZygxNik7ICBcclxuXHRcdFx0ICAgIH0gIFxyXG5cdFx0XHQgICAgaWYgKHRtcC5sZW5ndGggPT0gMSkgeyAgXHJcblx0XHRcdCAgICAgIHRtcCA9IFwiMFwiICsgdG1wOyAgXHJcblx0XHRcdCAgICB9ICBcclxuXHRcdFx0ICAgIGRldmljZUlkICs9IHRtcDsgIFxyXG5cdFx0XHR9ICBcclxuXHRcdFx0Ly83OGI4ZDY3NTExY2FcclxuXHRcdFx0dGhpcy4kc3RvcmUuY29tbWl0KFwic2V0RGV2aWNlSWRcIiwgZGV2aWNlSWQpO1xuXHRcdFx0Y29uc29sZS5sb2coJ0FuZHJvaWTorr7lpIfnmoRkZXZpY2VJZDonLCAgZGV2aWNlSWQpO1xyXG5cdFx0XHRcclxuXHRcdFx0cGx1cy5ydW50aW1lLmdldFByb3BlcnR5KHBsdXMucnVudGltZS5hcHBpZCwgKGluZm8pID0+IHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhpbmZvKTtcclxuXHRcdFx0XHR0aGlzLiRkYXRhLnZlcnNpb24gPSBpbmZvLnZlcnNpb247XHJcblx0XHRcdH0pO1xyXG5cdFx0fVxyXG5cdH1cclxuPC9zY3JpcHQ+XG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///56\n"); |
| | | |
| | | /***/ }), |
| | | /* 57 */ |
| | |
| | | function makeInvokeMethod(e, r, n) { |
| | | var o = h; |
| | | return function (i, a) { |
| | | if (o === f) throw new Error("Generator is already running"); |
| | | if (o === f) throw Error("Generator is already running"); |
| | | if (o === s) { |
| | | if ("throw" === i) throw a; |
| | | return { |
| | |
| | | } else if (c) { |
| | | if (this.prev < i.catchLoc) return handle(i.catchLoc, !0); |
| | | } else { |
| | | if (!u) throw new Error("try statement without catch or finally"); |
| | | if (!u) throw Error("try statement without catch or finally"); |
| | | if (this.prev < i.finallyLoc) return handle(i.finallyLoc); |
| | | } |
| | | } |
| | |
| | | return o; |
| | | } |
| | | } |
| | | throw new Error("illegal catch attempt"); |
| | | throw Error("illegal catch attempt"); |
| | | }, |
| | | delegateYield: function delegateYield(e, r, n) { |
| | | return this.delegate = { |
| | |
| | | attrs: { _i: "1-" + $30 }, |
| | | }, |
| | | [ |
| | | _vm._$s("2-" + $30, "i", item.name != "Layout") |
| | | _vm._$s( |
| | | "2-" + $30, |
| | | "i", |
| | | item.name != "Layout" && item.show == true |
| | | ) |
| | | ? _c( |
| | | "view", |
| | | [ |
| | |
| | | 1 |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s("20-" + $30, "i", item.name == "Layout") |
| | | _vm._$s( |
| | | "20-" + $30, |
| | | "i", |
| | | item.name == "Layout" && item.show == true |
| | | ) |
| | | ? _c( |
| | | "uni-row", |
| | | { |
| | |
| | | staticClass: _vm._$s( |
| | | "25-" + $30 + "-" + $31, |
| | | "sc", |
| | | "dv_input" |
| | | "input-wrapper" |
| | | ), |
| | | attrs: { |
| | | _i: "25-" + $30 + "-" + $31, |
| | |
| | | complete: function complete(e) { |
| | | e || (e = {}), S && "web" === P && e.errMsg && 0 === e.errMsg.indexOf("request:fail") && console.warn("发布H5,需要在uniCloud后台操作,绑定安全域名,否则会因为跨域问题而无法访问。教程参考:https://uniapp.dcloud.io/uniCloud/quickstart?id=useinh5"); |
| | | var t = e.data && e.data.header && e.data.header["x-serverless-request-id"] || e.header && e.header["request-id"]; |
| | | if (!e.statusCode || e.statusCode >= 400) return s(new te({ |
| | | code: "SYS_ERR", |
| | | message: e.errMsg || "request:fail", |
| | | requestId: t |
| | | })); |
| | | if (!e.statusCode || e.statusCode >= 400) { |
| | | var _n4 = e.data && e.data.error && e.data.error.code || "SYS_ERR", |
| | | _r = e.data && e.data.error && e.data.error.message || e.errMsg || "request:fail"; |
| | | return s(new te({ |
| | | code: _n4, |
| | | message: _r, |
| | | requestId: t |
| | | })); |
| | | } |
| | | var r = e.data; |
| | | if (r.error) return s(new te({ |
| | | code: r.error.code, |
| | |
| | | for (_iterator.s(); !(_step = _iterator.n()).done;) { |
| | | var _e6 = _step.value; |
| | | var _t4 = _e6.isMatch, |
| | | _n4 = _e6.genAdapter, |
| | | _n5 = _e6.genAdapter, |
| | | _s4 = _e6.runtime; |
| | | if (_t4()) return { |
| | | adapter: _n4(), |
| | | adapter: _n5(), |
| | | runtime: _s4 |
| | | }; |
| | | } |
| | |
| | | if (!this._storage) { |
| | | this._persistence = ke.adapter.primaryStorage || e.persistence, this._storage = Te(this._persistence, ke.adapter); |
| | | var _t5 = "access_token_".concat(e.env), |
| | | _n5 = "access_token_expire_".concat(e.env), |
| | | _n6 = "access_token_expire_".concat(e.env), |
| | | _s5 = "refresh_token_".concat(e.env), |
| | | _r = "anonymous_uuid_".concat(e.env), |
| | | _r2 = "anonymous_uuid_".concat(e.env), |
| | | _i = "login_type_".concat(e.env), |
| | | _o = "user_info_".concat(e.env); |
| | | this.keys = { |
| | | accessTokenKey: _t5, |
| | | accessTokenExpireKey: _n5, |
| | | accessTokenExpireKey: _n6, |
| | | refreshTokenKey: _s5, |
| | | anonymousUuidKey: _r, |
| | | anonymousUuidKey: _r2, |
| | | loginTypeKey: _i, |
| | | userInfoKey: _o |
| | | }; |
| | |
| | | for (var _e7 in this.keys) { |
| | | var _s6 = this.keys[_e7]; |
| | | if (t && Ae.includes(_e7)) continue; |
| | | var _r2 = this._storage.getItem(_s6); |
| | | ve(_r2) || Ie(_r2) || (n.setItem(_s6, _r2), this._storage.removeItem(_s6)); |
| | | var _r3 = this._storage.getItem(_s6); |
| | | ve(_r3) || Ie(_r3) || (n.setItem(_s6, _r3), this._storage.removeItem(_s6)); |
| | | } |
| | | this._storage = n; |
| | | } |
| | |
| | | var _send = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11(e) { |
| | | var t, |
| | | n, |
| | | _n6, |
| | | _n7, |
| | | _args11 = arguments; |
| | | return _regenerator.default.wrap(function _callee11$(_context11) { |
| | | while (1) { |
| | |
| | | onUploadProgress: t.onUploadProgress |
| | | }); |
| | | case 9: |
| | | _n6 = _context11.sent; |
| | | if (!_n6.data.code) { |
| | | _n7 = _context11.sent; |
| | | if (!_n7.data.code) { |
| | | _context11.next = 12; |
| | | break; |
| | | } |
| | | throw new te({ |
| | | code: _n6.data.code, |
| | | message: _n6.data.message |
| | | code: _n7.data.code, |
| | | message: _n7.data.message |
| | | }); |
| | | case 12: |
| | | return _context11.abrupt("return", _n6.data); |
| | | return _context11.abrupt("return", _n7.data); |
| | | case 13: |
| | | if (!n.data.code) { |
| | | _context11.next = 15; |
| | |
| | | var t = s["x-trace-id"] || ""; |
| | | if (!e.statusCode || e.statusCode >= 400) { |
| | | var _ref21 = e.data || {}, |
| | | _n7 = _ref21.message, |
| | | _n8 = _ref21.message, |
| | | _s10 = _ref21.errMsg, |
| | | _r3 = _ref21.trace_id; |
| | | _r4 = _ref21.trace_id; |
| | | return i(new te({ |
| | | code: "SYS_ERR", |
| | | message: _n7 || _s10 || "request:fail", |
| | | requestId: _r3 || t |
| | | message: _n8 || _s10 || "request:fail", |
| | | requestId: _r4 || t |
| | | })); |
| | | } |
| | | r({ |
| | |
| | | s, |
| | | r, |
| | | i, |
| | | _r4, |
| | | _r5, |
| | | _args39 = arguments; |
| | | return _regenerator.default.wrap(function _callee39$(_context39) { |
| | | while (1) { |
| | |
| | | _context39.next = 14; |
| | | return t.encryptData(s); |
| | | case 14: |
| | | _r4 = _context39.sent; |
| | | _r5 = _context39.sent; |
| | | _context39.next = 17; |
| | | return t.platformGetSignOption(); |
| | | case 17: |
| | |
| | | _context39.next = 20; |
| | | return e({ |
| | | name: n, |
| | | data: _r4 |
| | | data: _r5 |
| | | }); |
| | | case 20: |
| | | i = _context39.sent; |
| | |
| | | } |
| | | function Fn(e) { |
| | | var t = e.callFunction, |
| | | n = function n(_n8) { |
| | | n = function n(_n9) { |
| | | var _this19 = this; |
| | | var s = _n8.name; |
| | | _n8.data = Lt.call(e, { |
| | | data: _n8.data |
| | | var s = _n9.name; |
| | | _n9.data = Lt.call(e, { |
| | | data: _n9.data |
| | | }); |
| | | var r = { |
| | | aliyun: "aliyun", |
| | |
| | | tcb: "tcb", |
| | | alipay: "alipay" |
| | | }[this.config.provider], |
| | | i = Nn(_n8), |
| | | o = Dn(_n8), |
| | | i = Nn(_n9), |
| | | o = Dn(_n9), |
| | | a = i || o; |
| | | return t.call(this, _n8).then(function (e) { |
| | | return t.call(this, _n9).then(function (e) { |
| | | return e.errCode = 0, !a && qn.call(_this19, { |
| | | functionName: s, |
| | | result: e, |
| | |
| | | n = _ref41$formatter === void 0 ? [] : _ref41$formatter; |
| | | for (var _s13 = 0; _s13 < n.length; _s13++) { |
| | | var _n$_s = n[_s13], |
| | | _r5 = _n$_s.rule, |
| | | _r6 = _n$_s.rule, |
| | | _i3 = _n$_s.content, |
| | | _o3 = _n$_s.mode, |
| | | _a = e.match(_r5); |
| | | _a = e.match(_r6); |
| | | if (!_a) continue; |
| | | var _c = _i3; |
| | | for (var _e19 = 1; _e19 < _a.length; _e19++) { |
| | |
| | | } |
| | | return e; |
| | | }({ |
| | | message: "[".concat(_n8.name, "]: ").concat(e.message), |
| | | message: "[".concat(_n9.name, "]: ").concat(e.message), |
| | | formatter: Ut, |
| | | extraInfo: { |
| | | functionName: s |
| | |
| | | var e = this; |
| | | for (; e;) { |
| | | var t = zn(e), |
| | | _n9 = zn(e.prevStage); |
| | | if ("aggregate" === t && "collection" === _n9 || "pipeline" === t) return !0; |
| | | _n10 = zn(e.prevStage); |
| | | if ("aggregate" === t && "collection" === _n10 || "pipeline" === t) return !0; |
| | | e = e.prevStage; |
| | | } |
| | | return !1; |
| | |
| | | var e = this; |
| | | for (; e;) { |
| | | var t = zn(e), |
| | | _n10 = zn(e.prevStage); |
| | | if ("aggregate" === t && "command" === _n10) return !0; |
| | | _n11 = zn(e.prevStage); |
| | | if ("aggregate" === t && "command" === _n11) return !0; |
| | | e = e.prevStage; |
| | | } |
| | | return !1; |
| | |
| | | n = _ref45.multiCommand, |
| | | s = _ref45.queryList; |
| | | function r(e, t) { |
| | | if (n && s) for (var _n11 = 0; _n11 < s.length; _n11++) { |
| | | var _r6 = s[_n11]; |
| | | _r6.udb && "function" == typeof _r6.udb.setResult && (t ? _r6.udb.setResult(t) : _r6.udb.setResult(e.result.dataList[_n11])); |
| | | if (n && s) for (var _n12 = 0; _n12 < s.length; _n12++) { |
| | | var _r7 = s[_n12]; |
| | | _r7.udb && "function" == typeof _r7.udb.setResult && (t ? _r7.udb.setResult(t) : _r7.udb.setResult(e.result.dataList[_n12])); |
| | | } |
| | | } |
| | | var i = this, |
| | |
| | | if (u) for (var _e22 = 0; _e22 < u.length; _e22++) { |
| | | var _u$_e = u[_e22], |
| | | _t13 = _u$_e.level, |
| | | _n12 = _u$_e.message, |
| | | _n13 = _u$_e.message, |
| | | _s14 = _u$_e.detail, |
| | | _r7 = console["app" === P && "warn" === _t13 ? "error" : _t13] || console.log; |
| | | var _i4 = "[System Info]" + _n12; |
| | | _s14 && (_i4 = "".concat(_i4, "\n\u8BE6\u7EC6\u4FE1\u606F\uFF1A").concat(_s14)), _r7(_i4); |
| | | _r8 = console["app" === P && "warn" === _t13 ? "error" : _t13] || console.log; |
| | | var _i4 = "[System Info]" + _n13; |
| | | _s14 && (_i4 = "".concat(_i4, "\n\u8BE6\u7EC6\u4FE1\u606F\uFF1A").concat(_s14)), _r8(_i4); |
| | | } |
| | | if (t) { |
| | | return a(new te({ |
| | |
| | | s[e]({ |
| | | url: n |
| | | }); |
| | | }); |
| | | }, 0); |
| | | } |
| | | function ws() { |
| | | var _ref50 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, |
| | |
| | | if (_this21.loadtime === xs) return; |
| | | var n = !1; |
| | | var s = []; |
| | | for (var _r8 = 2; _r8 < e.length; _r8++) { |
| | | e[_r8] !== t[_r8] && (s.push(e[_r8]), n = !0); |
| | | for (var _r9 = 2; _r9 < e.length; _r9++) { |
| | | e[_r9] !== t[_r9] && (s.push(e[_r9]), n = !0); |
| | | } |
| | | e[0] !== t[0] && (_this21.mixinDatacomPage.current = _this21.pageCurrent), _this21.mixinDatacomPage.size = _this21.pageSize, _this21.onMixinDatacomPropsChange(n, s); |
| | | }); |
| | |
| | | })); |
| | | }, |
| | | mixinDatacomGet: function mixinDatacomGet() { |
| | | var _n13; |
| | | var _n14; |
| | | var t = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; |
| | | var n; |
| | | t = t || {}, n = "undefined" != typeof __uniX && __uniX ? e.databaseForJQL(this.spaceInfo) : e.database(this.spaceInfo); |
| | | var s = t.action || this.action; |
| | | s && (n = n.action(s)); |
| | | var r = t.collection || this.collection; |
| | | n = Array.isArray(r) ? (_n13 = n).collection.apply(_n13, (0, _toConsumableArray2.default)(r)) : n.collection(r); |
| | | n = Array.isArray(r) ? (_n14 = n).collection.apply(_n14, (0, _toConsumableArray2.default)(r)) : n.collection(r); |
| | | var i = t.where || this.where; |
| | | i && Object.keys(i).length && (n = n.where(i)); |
| | | var o = t.field || this.field; |
| | |
| | | retry: !1 |
| | | } |
| | | }, n); |
| | | var _n14 = n, |
| | | s = _n14.customUI, |
| | | r = _n14.loadingOptions, |
| | | i = _n14.errorOptions, |
| | | o = _n14.parseSystemError, |
| | | var _n15 = n, |
| | | s = _n15.customUI, |
| | | r = _n15.loadingOptions, |
| | | i = _n15.errorOptions, |
| | | o = _n15.parseSystemError, |
| | | a = !s; |
| | | return new Proxy({}, { |
| | | get: function get(s, c) { |
| | |
| | | _e26, |
| | | _yield, |
| | | _t19, |
| | | _n15, |
| | | _n16, |
| | | _args4 = arguments; |
| | | return _regenerator.default.wrap(function _callee54$(_context54) { |
| | | while (1) { |
| | |
| | | } |
| | | return _context54.abrupt("return", s.apply(void 0, h)); |
| | | case 37: |
| | | _n15 = new te({ |
| | | _n16 = new te({ |
| | | subject: f, |
| | | code: g, |
| | | message: m, |
| | | requestId: l.requestId |
| | | }); |
| | | throw _n15.detail = l.result, Y(j, { |
| | | throw _n16.detail = l.result, Y(j, { |
| | | type: z, |
| | | content: _n15 |
| | | }), _n15; |
| | | content: _n16 |
| | | }), _n16; |
| | | case 39: |
| | | return _context54.abrupt("return", (Y(j, { |
| | | type: z, |
| | |
| | | var n = this._callback[e]; |
| | | if (!n) return; |
| | | var s = function (e, t) { |
| | | for (var _n16 = e.length - 1; _n16 >= 0; _n16--) { |
| | | if (e[_n16] === t) return _n16; |
| | | for (var _n17 = e.length - 1; _n17 >= 0; _n17--) { |
| | | if (e[_n17] === t) return _n17; |
| | | } |
| | | return -1; |
| | | }(n, t); |
| | |
| | | if (!e || "string" != typeof e) return 0; |
| | | var t = e.match(/^(\d+)./); |
| | | return t && t[1] ? parseInt(t[1]) : 0; |
| | | }(_t21) >= 14 && console.warn("iOS 14及以上版本连接uniCloud本地调试服务需要允许客户端查找并连接到本地网络上的设备(仅开发模式生效,发行模式会连接uniCloud云端服务)"); |
| | | }(_t21) >= 14 && console.warn("iOS 14及以上版本连接uniCloud本地调试服务需要允许客户端查找并连接到本地网络上的设备(仅开发期间需要,发行后不需要)"); |
| | | } |
| | | t = e.__dev__; |
| | | if (t.debugInfo) { |
| | |
| | | _context61.next = 11; |
| | | return function () { |
| | | var _ref73 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee60(e, t) { |
| | | var n, _s16, _r9; |
| | | var n, _s16, _r10; |
| | | return _regenerator.default.wrap(function _callee60$(_context60) { |
| | | while (1) { |
| | | switch (_context60.prev = _context60.next) { |
| | |
| | | _context60.next = 11; |
| | | break; |
| | | } |
| | | _r9 = e[_s16]; |
| | | _r10 = e[_s16]; |
| | | _context60.next = 5; |
| | | return qs(_r9, t); |
| | | return qs(_r10, t); |
| | | case 5: |
| | | if (!_context60.sent) { |
| | | _context60.next = 8; |
| | | break; |
| | | } |
| | | n = _r9; |
| | | n = _r10; |
| | | return _context60.abrupt("break", 11); |
| | | case 8: |
| | | _s16++; |
| | |
| | | var t = {}; |
| | | if (e && 1 === e.length) t = e[0], $s = $s.init(t), $s._isDefault = !0;else { |
| | | var _t20 = ["auth", "callFunction", "uploadFile", "deleteFile", "getTempFileURL", "downloadFile", "database", "getCurrentUSerInfo", "importObject"]; |
| | | var _n17; |
| | | _n17 = e && e.length > 0 ? "应用有多个服务空间,请通过uniCloud.init方法指定要使用的服务空间" : x ? "应用未关联服务空间,请在uniCloud目录右键关联服务空间" : "uni-app cli项目内使用uniCloud需要使用HBuilderX的运行菜单运行项目,且需要在uniCloud目录关联服务空间", _t20.forEach(function (e) { |
| | | var _n18; |
| | | _n18 = e && e.length > 0 ? "应用有多个服务空间,请通过uniCloud.init方法指定要使用的服务空间" : x ? "应用未关联服务空间,请在uniCloud目录右键关联服务空间" : "uni-app cli项目内使用uniCloud需要使用HBuilderX的运行菜单运行项目,且需要在uniCloud目录关联服务空间", _t20.forEach(function (e) { |
| | | $s[e] = function () { |
| | | return console.error(_n17), Promise.reject(new te({ |
| | | return console.error(_n18), Promise.reject(new te({ |
| | | code: "SYS_ERR", |
| | | message: _n17 |
| | | message: _n18 |
| | | })); |
| | | }; |
| | | }); |
| | |
| | | /***/ (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 _base = _interopRequireDefault(__webpack_require__(/*! ../../components/js-base64/base64.js */ 65));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n modules: {\n Base64: _base.default\n },\n data: function data() {\n return {\n title: '新增',\n param: {},\n edit_inital_event: \"\",\n //弹窗初始化事件ID\n edit_ok_event: \"\",\n //弹窗点击OK 触发事件ID\n edit_select_compose_event: \"\",\n //选择组成对象时调用\n edit_compose_cls_id: \"\",\n global_attr: [],\n refdatastore: [],\n //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n scanCodeVal: \"\",\n subClassAttrList: [],\n subPanelList: [],\n subClassGridStyle: [],\n popupType: \"center\",\n check_list: {},\n focusMateria: false,\n head_styledef: {\n form: {\n items: []\n }\n }\n };\n },\n onLoad: function onLoad(options) {\n // console.log(options);\n uni.setNavigationBarTitle({\n title: options.titlename\n }); //设置顶部标题 \n this.$data.param = JSON.parse(options.param);\n this.$data.title = this.$data.param.Add_BtnName ? this.$data.param.Add_BtnName : options.titlename; //设置按钮文字\n\n __f__(\"log\", this.$data.param, \" at pages/modal/3018_2.vue:586\");\n //获取数据类的自定义表单参数\n this.Head_UIStyleGetInfo(this.param.DataCls.id, this.param.UI_Style.ID);\n\n //页面初始化获取焦点\n // this.focusMateria=true; \n },\n\n methods: {\n Head_UIStyleGetInfo: function Head_UIStyleGetInfo(class_id, style_id) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n //获取自定义表单样式\n $this = _this;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n };\n _this.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var styledef = \"\";\n if (ret.result.style_def) {\n //mobox2的style_def是json字符串\n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3的style_def是base64字符串\n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.$data.head_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n // console.log($this.$data.head_styledef);\n $this.head_styledef.form.items.forEach( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(ele, index) {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(ele.useDict == true)) {\n _context.next = 3;\n break;\n }\n _context.next = 3;\n return _this.DictGetInfo(ele.bind.dict, index, 'mast');\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n } else {\n uni.showModal({\n title: \"错误1\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误1.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n DictGetInfo: function DictGetInfo(dict, index, type) {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n //Mobox3得到得到字典信息字典项列表\n _this2.data = [];\n $this = _this2;\n dataInfo = {\n dict_id: dict.id,\n dict_name: dict.name\n }; // console.log(dataInfo);\n _this2.$store.dispatch('DictGetInfo', dataInfo).then( /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(success) {\n var list, itemName, attr;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n __f__(\"log\", success, \" at pages/modal/3018_2.vue:636\");\n if (success.err_code == 0) {\n if (type == 'mast') {\n list = [];\n itemName = '';\n success.result.dict_item_list.forEach(function (item) {\n if (item.is_default == '1') itemName = item.name;\n list.push({\n text: item.value,\n value: item.name\n });\n });\n //有默认值,显示默认值\n if (itemName) {\n $this.head_styledef.form.items[index].value = itemName;\n attr = $this.head_styledef.form.items[index].fieldId;\n $this.head_styledef.form.model[attr] = itemName;\n }\n $this.head_styledef.form.items[index].dict = list;\n // $this.head_styledef.form.items[index].dictitem=success.result;\n // this.$store.commit(\"classAttrList\", $this.$data.classAttrList);\n } else {\n // $this.$data.subClassAttrList[index].attr_list[key].dictitem=success.result;\n // this.$store.commit(\"subClassAttrList\", $this.$data.subClassAttrList);\n }\n } else {\n uni.showModal({\n title: \"错误1.2\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 2:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n return function (_x3) {\n return _ref2.apply(this, arguments);\n };\n }()).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误1.3\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n ontap: function ontap(item) {\n var _this3 = this;\n //扫码功能\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n uni.hideKeyboard();\n var $this = _this3;\n __f__(\"log\", item, \" at pages/modal/3018_2.vue:677\");\n if (item.oldvalue != result.decodedata) {\n item.oldvalue = result.decodedata;\n item.value = result.decodedata;\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = result.decodedata;\n if (result.decodedata) {\n //第一个输入框不为空\n $this.focusMateria = true; //初始化,第二个输入框focus属性\n // setTimeout(function(){\n // \t$this.focusMateria=true; //第二个输入框获取焦点\n setTimeout(function () {\n uni.hideKeyboard();\n }, 1000);\n // },500);\n }\n\n var eventid = item.bind.onChangeEvent.id; //内容变化后事件\n if (eventid) {\n var obj_attr = _this3.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n val: obj_attr[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: _this3.$data.param.DataCls.id,\n objid: \"\",\n attr: req,\n dataJson: []\n };\n _this3.DataObjRunCustomEvent(info, '');\n }\n }\n });\n },\n onevent: function onevent(item) {\n // console.log(e.target);\n var $this = this;\n __f__(\"log\", item, \" at pages/modal/3018_2.vue:721\");\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n item.value = item.value;\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = item.value;\n //子数据类扫码区事件脚本\n var eventid = item.bind.onChangeEvent.id; //内容变化后事件\n if (eventid) {\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n val: obj_attr[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.DataCls.id,\n objid: \"\",\n attr: req,\n dataJson: []\n };\n this.DataObjRunCustomEvent(info, data_attr);\n }\n }\n },\n onchange: function onchange(item) {\n __f__(\"log\", item, \" at pages/modal/3018_2.vue:754\");\n var $this = this;\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = item.value;\n var eventid = item.bind.onChangeEvent.id; //内容变化后事件\n if (eventid) {\n // self.event_no_sub = 1;\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n val: obj_attr[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.DataCls.id,\n objid: \"\",\n attr: req,\n dataJson: []\n };\n this.DataObjRunCustomEvent(info);\n }\n }\n },\n onModelValue: function onModelValue(item) {\n //绑定Model值\n var attr = item.fieldId;\n this.head_styledef.form.model[attr] = item.value;\n var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件\n var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调\n\n if (!onSuffixClickCallbackEvent.id) {\n uni.showModal({\n title: \"提示\",\n content: \"后图标点击事件为空!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n if (!onSuffixClickEvent.id) {\n uni.showModal({\n title: \"提示\",\n content: \"后图标点击回调为空!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n this.$data.popupType = 'right';\n // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性\n this.$refs.popup.open($this.popupType);\n this.DataObjRunCustomEvent_Return(onSuffixClickCallbackEvent.id, '', onSuffixClickEvent.id, item);\n },\n popupChange: function popupChange(e) {\n __f__(\"log\", '当前模式:' + e.type + ',状态:' + e.show, \" at pages/modal/3018_2.vue:807\");\n },\n checkChange: function checkChange(e) {\n //弹框check选择\n // console.log(e.target.dataset);\n var index = e.target.dataset.index;\n var ischeck = e.target.dataset.ischeck;\n var data = this.$data.check_list.items;\n // this.$data.check_list.items=[];\n if (this.$data.check_list.multiple_choice == \"0\") {\n //判断时单选还是多选\n for (var i in data) {\n data[i].check = false;\n }\n }\n data[index].check = ischeck ? false : true;\n this.$data.check_list.items = data;\n },\n popup_cancel: function popup_cancel(e) {\n //弹框取消\n this.$refs.popup.close();\n },\n popup_sava: function popup_sava(e) {\n //弹框确定\n var $this = this;\n var items = $this.$data.check_list.items;\n var data = [];\n var name = \"\";\n for (var i = 0; i < items.length; i++) {\n if (items[i].check == true) {\n if (name) name += ';';\n name += items[i].name;\n data.push({\n id: items[i].id,\n name: items[i].name\n });\n }\n }\n if (!$this.$data.popupParam) {\n uni.showModal({\n title: \"提示\",\n content: \"popupParam为空!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n var fieldId = $this.$data.popupParam.item.fieldId;\n $this.head_styledef.form.model[attr] = name;\n for (var c = 0; c < $this.$data.head_styledef.form.items.length; c++) {\n var attr = $this.$data.head_styledef.form.items[c];\n if (attr.fieldId == fieldId) {\n attr.value = name;\n }\n }\n __f__(\"log\", data, \" at pages/modal/3018_2.vue:853\");\n var callback_eventid = $this.$data.popupParam.button_callback.trim();\n var info = {\n eventid: callback_eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: $this.$data.param.DataCls.id,\n objid: \"\",\n attr: $this.$data.popupParam.req,\n dataJson: data\n };\n $this.DataObjRunCustomEvent(info, $this.$data.popupParam.data_attr);\n this.$refs.popup.close();\n },\n DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n var $this = this;\n var enviroment = {\n 'function': '3000',\n // 功能点编号\n cls_id: this.$data.param.DataCls.id,\n // 功能点主数据类标识\n 'button': 'top',\n // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.DataCls.id // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n }\n };\n\n if (data_attr) {\n enviroment.edit_dlg = {\n type: 'small',\n //小窗口\n class_id: this.$data.param.DataCls.id //当前数据类id\n };\n\n if (data_attr) {\n enviroment.edit_dlg.form_control = {\n //所属的表单控件\n name: data_attr.Name,\n //字段属性\n text: data_attr.DispName,\n //显示文本\n group_name: data_attr.GroupName,\n //属性组\n type: data_attr.Type,\n //字段类型\n readonly: data_attr.ReadOnly,\n //是否只读\n button_img: data_attr.button_img,\n //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n }\n\n // var dataInfo = {\n // edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{','').replace('}',''),\n // rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n // attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: \"\",\n // \tglobal_attr: JSON.stringify(this.$data.global_attr), dataJson:JSON.stringify(info.dataJson)\n // }\n enviroment = _base.default.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码\n var input_param = _base.default.encode(JSON.stringify(info.attr)); //将字符串转换为base64编码\n var global_attr = _base.default.encode(JSON.stringify(this.$data.global_attr)); //将字符串转换为base64编码\n if (info.dataJson) info.dataJson = _base.default.encode(JSON.stringify(info.dataJson)); //将字符串转换为base64编码\n var obj_attr = {};\n info.attr.forEach(function (item) {\n obj_attr[item.attr] = item.val;\n });\n if (!info.eventid.includes('{')) info.eventid = '{' + info.eventid + '}';\n var dataInfo = {\n ed_type: info.edtype,\n start_transaction: true,\n class_id: info.clsid,\n class_name: '',\n event_id: info.eventid,\n event_name: '',\n data_obj_id: info.objid,\n obj_attr: obj_attr,\n prj_id: info.projectid,\n ref_cls_id: info.rclsid,\n rel_obj_id: info.robjid,\n user_login: info.userlogin,\n data_json: info.dataJson,\n compose_info: '',\n ext_info: enviroment,\n global_attr: global_attr,\n input_param: input_param\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3018_2.vue:936\");\n // return;\n this.$store.dispatch('runCustomEvent', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3018_2.vue:939\");\n if (success.err_code == 0) {\n var data = success.result;\n if (data.ret != 0) {\n var tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info.join('<br/>') : '';\n if (data.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + data.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = data.info ? typeof data.info == 'string' ? data.info : data.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n var actionlist = data.action;\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/3018_2.vue:953\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var c = 0; c < $this.head_styledef.form.items.length; c++) {\n var attr = $this.head_styledef.form.items[c];\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"text\": val,\n \"value\": val\n });\n }\n attr.dict = dictItemList;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"text\": val,\n \"value\": val\n });\n }\n col.dict = dictItemList;\n }\n }\n });\n }\n }\n }\n for (var c = 0; c < $this.$data.head_styledef.form.items.length; c++) {\n var attr = $this.$data.head_styledef.form.items[c];\n // console.log(attr[j].Name+'=='+result[i].attr);\n //判断表单里是否有返回字段,没有就装载到model里,点击确定提交的时候带上这些数据\n if ($this.head_styledef.form.model[result[i].attr] == undefined) {\n $this.head_styledef.form.model[result[i].attr] = result[i].value;\n }\n //判断是否是栅格表单\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n attr.value = '';\n attr.oldvalue = '';\n attr.value = result[i].value;\n attr.oldvalue = result[i].value;\n $this.head_styledef.form.model[attr.fieldId] = result[i].value;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n col.value = '';\n col.oldvalue = '';\n col.value = result[i].value;\n col.oldvalue = result[i].value;\n $this.head_styledef.form.model[col.fieldId] = result[i].value;\n }\n }\n });\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_global_attr') {\n $this.$data.global_attr = data.action[i].value || [];\n }\n }\n }\n // var head_styledef = JSON.parse(JSON.stringify($this.head_styledef));\n // $this.head_styledef=[];\n // $this.head_styledef = head_styledef;\n __f__(\"log\", $this.head_styledef, \" at pages/modal/3018_2.vue:1041\");\n if (data.result) {\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var c = 0; c < $this.$data.head_styledef.form.items.length; c++) {\n var attr = $this.$data.head_styledef.form.items[c];\n //判断表单里是否有返回字段,没有就装载到model里,点击确定提交的时候带上这些数据\n if ($this.head_styledef.form.model[result[i].attr] == undefined) {\n $this.head_styledef.form.model[result[i].attr] = result[i].value;\n }\n //判断是否是栅格表单\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n attr.value = '';\n attr.oldvalue = '';\n attr.value = result[i].value;\n attr.oldvalue = result[i].value;\n $this.head_styledef.form.model[attr.fieldId] = result[i].value;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n col.value = '';\n col.oldvalue = '';\n col.value = result[i].value;\n col.oldvalue = result[i].value;\n $this.head_styledef.form.model[col.fieldId] = result[i].value;\n }\n }\n });\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误3\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误3.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, item) {\n var _this4 = this;\n var enviroment = {\n 'function': '3000',\n // 功能点编号\n cls_id: this.$data.param.DataCls.id,\n // 功能点主数据类标识\n 'button': 'top',\n // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.DataCls.id // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n }\n };\n\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n val: obj_attr[a] || \"\"\n };\n });\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({\n 'attr': this.$data.refdatastore[i].attr,\n 'val': this.$data.refdatastore[i].value\n });\n }\n }\n }\n var extinfo = enviroment;\n extinfo.edit_dlg = {\n type: 'small',\n //小窗口\n class_id: this.$data.param.DataCls.id //当前数据类id\n };\n // var dataInfo = {\n // \tedtype: \"0\", eventid: eventid, projectid: '',rclsid: '', robjid: '', userlogin: '', \n // \tclsid: this.$data.param.DataCls.id, objid: '',attr: JSON.stringify(req), \n // \textinfo: JSON.stringify(extinfo), global_attr: JSON.stringify(this.$data.global_attr)\n // }\n extinfo = _base.default.encode(JSON.stringify(extinfo)); //将字符串转换为base64编码\n var global_attr = _base.default.encode(JSON.stringify(this.$data.global_attr)); //将字符串转换为base64编码\n var obj_attr = {};\n req.forEach(function (item) {\n obj_attr[item.attr] = item.val;\n });\n if (!eventid.includes('{')) eventid = '{' + eventid + '}';\n var dataInfo = {\n ed_type: \"0\",\n start_transaction: true,\n class_id: this.$data.param.DataCls.id,\n class_name: '',\n event_id: eventid,\n event_name: '',\n data_obj_id: '',\n obj_attr: obj_attr,\n prj_id: '',\n ref_cls_id: '',\n rel_obj_id: '',\n user_login: '',\n data_json: '',\n compose_info: '',\n ext_info: extinfo,\n global_attr: global_attr,\n input_param: ''\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3018_2.vue:1164\");\n // return;\n this.$store.dispatch('runCustomEvent', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3018_2.vue:1167\");\n if (success.err_code == 0) {\n var data = success.result;\n if (data.ret != 0) {\n var tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info.join('<br/>') : '';\n if (data.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + data.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = data.info ? typeof data.info == 'string' ? data.info : data.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n if (data != \"\") {\n var actions = data.action;\n __f__(\"log\", actions, \" at pages/modal/3018_2.vue:1181\");\n if (actions) {\n for (var i = 0; i < actions.length; i++) {\n var action = actions[i];\n var val = action.value;\n var enviroment = JSON.stringify(enviroment);\n if (action.action_type == 'open_panel') {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!'\n });\n d.show();\n } else if (action.action_type == 'open_select_userdlg') {\n var style = val.style;\n // style == 'user' ? '选择人员' : style == 'department' ? '选择部门' : style == 'role' ? '选择角色' : ''\n var $this = _this4;\n var param = {\n item: item,\n button_callback: button_callback,\n req: req,\n data_attr: data_attr\n };\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/3018_2.vue:1210\");\n var callback_eventid = param.button_callback.trim();\n var info = {\n eventid: callback_eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: $this.$data.param.DataCls.id,\n objid: \"\",\n attr: param.req,\n inputparameter: data,\n dataJson: []\n };\n $this.DataObjRunCustomEvent(info, param.data_attr);\n }\n }\n });\n } else if (action.action_type == 'open_data_query_dlg') {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!'\n });\n d.show();\n } else if (action.action_type == 'open_common_dlg') {\n var $this = _this4;\n if (val.common_dlg_id == 'check_list') {\n $this.$data.check_list = val.config;\n if (val.config.appear_style == 'sideslip')\n //判断是否是侧滑\n $this.$data.popupType = 'right';else $this.$data.popupType = 'center';\n // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性\n $this.$refs.popup.open($this.$data.popupType);\n var popupParam = {\n item: item,\n button_callback: button_callback,\n req: req,\n data_attr: data_attr\n };\n $this.$data.popupParam = popupParam;\n }\n } else if (action.action_type == 'open_project_query_dlg') {\n //console.log(action.value.select_range);\n //console.log(action.value.mulit_select);\n var priRel = '-1';\n if (action.value.select_range == '全部相关') priRel = '0';else if (action.value.select_range == '我负责的项目') priRel = '1';else if (action.value.select_range == '我创建的') priRel = '2';else if (action.value.select_range == '我参与的' || action.value.select_range == '我参加的') priRel = '3';else if (action.value.select_range == '我关注的') priRel = '4';else if (action.value.select_range == '我下属的项目') priRel = '5';\n var $this = _this4;\n var param_ = {\n item: item,\n button_callback: button_callback,\n req: req\n };\n uni.navigateTo({\n url: '../selPrj/index?relation=' + priRel + '¶m=' + JSON.stringify(param_),\n events: {\n AddPer: function AddPer(data, param) {\n var attr = param.item.fieldId;\n $this.head_styledef.form.model[attr] = data[0].ID + ';' + data[0].Name;\n\n // $this.$data.classAttrList[param.index].Attr[param.iindex].Value=data[0].Name;\n // $this.$data.classAttrList[param.index].Attr[param.iindex].ValID=data[0].ID+';'+data[0].Name;\n var callback_eventid = param.button_callback.trim();\n if (callback_eventid) {\n var info = {\n eventid: callback_eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.DataCls.id,\n objid: \"\",\n attr: param.req,\n dataJson: []\n };\n $this.DataObjRunCustomEvent(info);\n }\n }\n }\n });\n } else {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!'\n });\n d.show();\n }\n }\n }\n } else {\n uni.showModal({\n title: \"提示5.2\",\n content: '调用 before_click_button 脚本返回空,event_id' + eventid,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n } else {\n uni.showModal({\n title: \"错误5\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"提示5.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n //确定\n sava: function sava() {\n // if (this.$data.edit_ok_event)\n // \tthis.OKDataObjRunCustomEvent();\n // else\n this.add();\n },\n add: function add() {\n var _this5 = this;\n uni.showLoading({\n title: \"加载中...\",\n mask: true\n });\n var obj_attr = this.head_styledef.form.model;\n __f__(\"log\", obj_attr, \" at pages/modal/3018_2.vue:1343\");\n // var req = Object.keys(obj_attr).map((a) => ({\n // \tname: a,\n // \tvalue: obj_attr[a] || \"\",\n // }));\n\n var enviroment = {\n 'function': '3000',\n // 功能点编号\n cls_id: this.$data.param.DataCls.id,\n // 功能点主数据类标识\n 'button': 'top',\n // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.DataCls.id\n }\n };\n enviroment = _base.default.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码\n\n // console.log(obj_attr);\n // var dataInfo={\n // class_id: this.$data.param.DataCls.id, data_obj_id: '', masterclsid: '',\n // req: JSON.stringify(req), upfile: JSON.stringify([]), post_data: JSON.stringify({}),\n // compose: JSON.stringify([]), refdatastore: JSON.stringify([]), extinfo: JSON.stringify(enviroment), \n // \tnot_trigger_sys_event: ''\n // };\n var dataInfo = {\n class_id: this.$data.param.DataCls.id,\n class_name: '',\n master_cls_id: '',\n master_obj_id: '',\n creator: '',\n creator_name: '',\n not_trigger_event: '',\n update_exist: '',\n post_process: '',\n ext_info: enviroment,\n obj_attr: obj_attr\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3018_2.vue:1380\");\n // return\n this.$store.dispatch('createDataObj', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3018_2.vue:1383\");\n uni.hideLoading();\n if (success.err_code == 0) {\n var result = success.result;\n // if(result.result_type == 0){}\n if (success.result.action) {\n var action = JSON.parse(success.result.action);\n __f__(\"log\", action, \" at pages/modal/3018_2.vue:1390\");\n if (action.ret == '0') {\n if (action.ret != 0) {\n uni.showModal({\n title: \"提示\",\n content: '执行脚本失败,' + action.result,\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n if (action.info) {\n uni.showModal({\n title: \"提示\",\n content: '执行脚本失败,' + action.info,\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n if (action.result_type == '0') {\n uni.showToast({\n title: action.result,\n icon: \"success\",\n duration: 3000\n });\n }\n\n // \"{\"ret\":0, \"result_type\":0, \"result\":\"创建成功123123123\",\"info\":\"\"}\"\n }\n } else uni.showToast({\n title: \"创建成功!\",\n icon: \"success\",\n duration: 3000\n });\n //刷新\n uni.redirectTo({\n url: '../modal/3018_2?param=' + JSON.stringify(_this5.$data.param) + \"&titlename=\" + _this5.$data.title\n });\n // this.class_attr_init();\n } else {\n uni.showModal({\n title: \"错误\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/3018_2.vue:1417\");\n uni.hideLoading();\n uni.showModal({\n title: \"提示\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n cancel: function cancel(e) {\n //取消\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvMzAxOF8yLnZ1ZSJdLCJuYW1lcyI6WyJtb2R1bGVzIiwiQmFzZTY0IiwiZGF0YSIsInRpdGxlIiwicGFyYW0iLCJlZGl0X2luaXRhbF9ldmVudCIsImVkaXRfb2tfZXZlbnQiLCJlZGl0X3NlbGVjdF9jb21wb3NlX2V2ZW50IiwiZWRpdF9jb21wb3NlX2Nsc19pZCIsImdsb2JhbF9hdHRyIiwicmVmZGF0YXN0b3JlIiwic2NhbkNvZGVWYWwiLCJzdWJDbGFzc0F0dHJMaXN0Iiwic3ViUGFuZWxMaXN0Iiwic3ViQ2xhc3NHcmlkU3R5bGUiLCJwb3B1cFR5cGUiLCJjaGVja19saXN0IiwiZm9jdXNNYXRlcmlhIiwiaGVhZF9zdHlsZWRlZiIsImZvcm0iLCJpdGVtcyIsIm9uTG9hZCIsInVuaSIsIm1ldGhvZHMiLCJIZWFkX1VJU3R5bGVHZXRJbmZvIiwiJHRoaXMiLCJkYXRhSW5mbyIsImNsYXNzX2lkIiwidWlfc3R5bGVfaWQiLCJzdHlsZWRlZiIsImVsZSIsImNvbnRlbnQiLCJzaG93Q2FuY2VsIiwiY29uZmlybVRleHQiLCJEaWN0R2V0SW5mbyIsImRpY3RfaWQiLCJkaWN0X25hbWUiLCJsaXN0IiwiaXRlbU5hbWUiLCJzdWNjZXNzIiwidGV4dCIsInZhbHVlIiwiYXR0ciIsIm9udGFwIiwiZ2V0QXBwIiwiaXRlbSIsInNldFRpbWVvdXQiLCJ2YWwiLCJldmVudGlkIiwiZWR0eXBlIiwicHJvamVjdGlkIiwicmNsc2lkIiwicm9iamlkIiwidXNlcmxvZ2luIiwiY2xzaWQiLCJvYmppZCIsImRhdGFKc29uIiwib25ldmVudCIsIm9uY2hhbmdlIiwib25Nb2RlbFZhbHVlIiwicG9wdXBDaGFuZ2UiLCJjaGVja0NoYW5nZSIsInBvcHVwX2NhbmNlbCIsInBvcHVwX3NhdmEiLCJuYW1lIiwiaWQiLCJEYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJjbHNfaWQiLCJidXR0b25fbmFtZSIsIm1hc3RlciIsImVudmlyb21lbnQiLCJ0eXBlIiwiZ3JvdXBfbmFtZSIsInJlYWRvbmx5IiwiYnV0dG9uX2ltZyIsImJ1dHRvbl90b29sdGlwIiwiaW5mbyIsIm9ial9hdHRyIiwiZWRfdHlwZSIsInN0YXJ0X3RyYW5zYWN0aW9uIiwiY2xhc3NfbmFtZSIsImV2ZW50X2lkIiwiZXZlbnRfbmFtZSIsImRhdGFfb2JqX2lkIiwicHJqX2lkIiwicmVmX2Nsc19pZCIsInJlbF9vYmpfaWQiLCJ1c2VyX2xvZ2luIiwiZGF0YV9qc29uIiwiY29tcG9zZV9pbmZvIiwiZXh0X2luZm8iLCJpbnB1dF9wYXJhbSIsImRpY3RJdGVtTGlzdCIsImNvbCIsImxlbmd0aCIsIkRhdGFPYmpSdW5DdXN0b21FdmVudF9SZXR1cm4iLCJyZXEiLCJleHRpbmZvIiwiZCIsImJ1dHRvbl9jYWxsYmFjayIsImRhdGFfYXR0ciIsInVybCIsImV2ZW50cyIsIkFkZFBlciIsImlucHV0cGFyYW1ldGVyIiwicHJpUmVsIiwic2F2YSIsImFkZCIsIm1hc2siLCJtYXN0ZXJfY2xzX2lkIiwibWFzdGVyX29ial9pZCIsImNyZWF0b3IiLCJjcmVhdG9yX25hbWUiLCJub3RfdHJpZ2dlcl9ldmVudCIsInVwZGF0ZV9leGlzdCIsInBvc3RfcHJvY2VzcyIsImljb24iLCJkdXJhdGlvbiIsImNhbmNlbCIsImRlbHRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFxaUJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUNBWjtRQUNBQTtRQUNBO1FBQ0FwQjtRQUNBO1FBQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTtZQUFBO2NBQ0FpQjtjQUNBSztZQUNBO1VBQUE7VUFDQTtZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBQztZQUNBYjtZQUNBYztVQUNBO1VBQ0E7UUFDQTtNQUNBO0lBRUE7SUFDQUU7TUFDQTtNQUNBO01BQ0E7UUFDQWI7UUFDQTtRQUNBcEI7UUFDQTtRQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7WUFBQTtjQUNBaUI7Y0FDQUs7WUFDQTtVQUFBO1VBQ0E7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQUM7WUFDQWI7WUFDQWM7VUFDQTtVQUNBO1FBQ0E7TUFDQTtJQUVBO0lBQ0FHO01BQUE7TUFDQTtNQUNBO01BQ0E7TUFDQTs7TUFFQTtRQUNBckM7VUFBQW5CO1VBQUE0QjtVQUFBQztVQUFBQztRQUFBO1FBQ0E7TUFDQTtNQUNBO1FBQ0FYO1VBQUFuQjtVQUFBNEI7VUFBQUM7VUFBQUM7UUFBQTtRQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFFQTtJQUNBO0lBQ0EyQjtNQUNBO0lBQ0E7SUFDQUM7TUFBQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtRQUFBO1FBQ0E7VUFDQTNEO1FBQ0E7TUFDQTtNQUNBQTtNQUNBO0lBRUE7SUFDQTREO01BQUE7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0E7VUFDQSxVQUNBQztVQUNBQTtVQUNBOUQ7WUFBQStEO1lBQUFEO1VBQUE7UUFDQTtNQUNBO01BQ0E7UUFDQTFDO1VBQUFuQjtVQUFBNEI7VUFBQUM7VUFBQUM7UUFBQTtRQUNBO01BQ0E7TUFFQTtNQUNBUjtNQUNBO1FBQ0E7UUFDQTtVQUNBaUI7UUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO1FBQ0FNO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FBQ0FDO1FB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TUFDQTtRQUNBO1FBQ0F2RDtRQUNBO1VBQ0E7VUFDQTtVQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0E7Z0JBQ0FBO2tCQUFBbkI7a0JBQUE0QjtrQkFBQUM7a0JBQUFDO2dCQUFBO2dCQUNBO2NBQ0E7Y0FDQTtnQkFDQVg7a0JBQUFuQjtrQkFBQTRCO2tCQUFBQztrQkFBQUM7Z0JBQUE7Z0JBQ0E7Y0FDQTtjQUNBO2dCQUNBWDtrQkFBQW5CO2tCQUFBaUg7a0JBQUFDO2dCQUFBO2NBQ0E7O2NBRUE7WUFDQTtVQUNBLE9BQ0EvRjtZQUFBbkI7WUFBQWlIO1lBQUFDO1VBQUE7VUFDQTtVQUNBL0Y7WUFDQStFO1VBQ0E7VUFDQTtRQUNBO1VBQ0EvRTtZQUFBbkI7WUFBQTRCO1lBQUFDO1lBQUFDO1VBQUE7UUFDQTtNQUNBO1FBQ0E7UUFDQVg7UUFDQUE7VUFBQW5CO1VBQUE0QjtVQUFBQztVQUFBQztRQUFBO01BQ0E7SUFDQTtJQUNBcUY7TUFBQTtNQUNBaEc7UUFDQWlHO01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSwyQiIsImZpbGUiOiIxNTAuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8c3R5bGU+XHJcbi52LWhlYWRTdHlsZXtcclxuXHQvKiBib3JkZXI6IDAuMXJweCBzb2xpZCByZWQ7ICovXHJcblx0LyogbGluZS1oZWlnaHQ6IDMwcnB4OyAqL1xyXG5cdHBhZGRpbmc6IDVycHggMDtcclxufVxyXG4udi1oZWFkU3R5bGU6Zmlyc3QtY2hpbGR7XHJcblx0bWFyZ2luLXRvcDogMTVycHg7XHJcbn1cclxuLnYtaGVhZFN0eWxlIC50eHRfdGl0bGV7XHJcbiAgZm9udC1zaXplOiAzNHJweDtcclxuICB0ZXh0LWFsaWduOiByaWdodDtcclxuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbiAgLyogdmVydGljYWwtYWxpZ246IDI0cnB4OyAqL1xyXG4gIFxyXG5cdC8qIGJvcmRlcjogMC4xcnB4IHNvbGlkIHJlZDsgKi9cclxufVxyXG4udi1oZWFkU3R5bGUgaW5wdXR7XHJcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0LyogYm9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTsgKi9cclxuXHQvKiB3aWR0aDogNjUlOyAqL1xyXG5cdHdpZHRoOiA4NSU7ICAgXHJcblx0aGVpZ2h0OiA1MnJweDtcbiAgICBsaW5lLWhlaWdodDogMzRycHg7XHJcblx0YmFja2dyb3VuZDogI0ZGRjtcclxuXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XHJcblx0Y29sb3I6ICMyZDhjZjA7XHJcblx0cGFkZGluZzogMTBycHggOHJweCAxMnJweDtcclxuXHRmb250LXNpemU6IDM0cnB4O1xyXG5cdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cdGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuXHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzO1xyXG5cdG1hcmdpbi10b3A6IDRycHg7XHJcbn1cclxuLnYtaGVhZFN0eWxlIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcclxuXHRmb250LXNpemU6IDEycnB4O1xyXG59XHJcbi52LWhlYWRTdHlsZSAuZm9ybS1pdGVtLXNwYW57XHJcblx0LyogdmVydGljYWwtYWxpZ246dG9wOyAqL1xyXG4gICAgY29sb3I6ICMyZDhjZjA7XHJcblx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuXHR3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0XHJcblx0LyogYm9yZGVyOiAwLjFycHggc29saWQgcmVkOyAqL1xyXG59XHJcbi5pbnB1dC13cmFwcGVye1xyXG5cdGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiA2NSU7ICAgXHJcblx0bGluZS1oZWlnaHQ6IDIycnB4O1xyXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XG59XHJcbi5jaGVja19yZW1lbWJlclB3ZCxcclxuLmlucHV0LXN3aXRjaHtcclxuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cdG1hcmdpbi1sZWZ0OjEwcnB4XG59XHJcbltudnVlXSB1bmktdmlldyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlcjogMCBzb2xpZCAjMDAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XHJcblxyXG4udW5pLWlucHV0IHtcclxuXHQvKiBib3JkZXI6IG5vbmU7ICovXG59XHJcbi51bmktaWNvbntcclxuXHQvKiBib3JkZXI6IDFweCBzb2xpZCByZWQ7ICovXHJcblx0d2lkdGg6IDglO1xuICAgIGZvbnQtZmFtaWx5OiB1bmlpY29ucztcbiAgICBmb250LXNpemU6IDQwcnB4O1xuICAgIGZvbnQtd2VpZ2h0OiA0MDA7XG4gICAgZm9udC1zdHlsZTogbm9ybWFsO1xuICAgIC8qIHdpZHRoOiA0OHJweDsgKi9cbiAgICBoZWlnaHQ6IDQ4cnB4O1xuICAgIGxpbmUtaGVpZ2h0OiA0OHJweDtcclxuXHRjb2xvcjogIzJkOGNmMDtcclxuICAgIGN1cnNvcjogcG9pbnRlcjtcclxuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR2ZXJ0aWNhbC1hbGlnbjogMThycHg7XG59XHJcblxyXG5cclxuLnZpZXctY29udGVudHtcclxuXHRtaW4taGVpZ2h0OiA3MDBycHg7XHJcblx0LyogYm9yZGVyOjFweCBzb2xpZCByZWQ7ICovXHJcbn1cclxuXHJcbi5pbnB1dC1kaXNhYmxlZHtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzICFpbXBvcnRhbnQ7XHJcbn1cclxuYnV0dG9uLmJ0bl9hZGQge1xyXG5cdHdpZHRoOjQ5LjUlO1xyXG5cdG1hcmdpbi10b3A6IDUwcnB4O1xyXG5cdHBhZGRpbmc6IDIwcnB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0YmFja2dyb3VuZDogIzRENkFGNDtcclxuXHRib3JkZXI6IG5vbmU7XHJcblx0Y29sb3I6ICNmZmY7XHJcbiAgICBmb250LXNpemU6IDM4cnB4O1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdGZsb2F0OiByaWdodDtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuYnV0dG9uLmJ0bl9jYW5jZWwge1xyXG5cdHdpZHRoOjQ5LjUlO1xyXG5cdG1hcmdpbi10b3A6IDUwcnB4O1xyXG5cdHBhZGRpbmc6IDIwcnB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0YmFja2dyb3VuZDogI2ZmZjtcclxuXHRib3JkZXI6IG5vbmU7XHJcblx0Y29sb3I6ICMwMDA7XHJcbiAgICBmb250LXNpemU6IDM4cnB4O1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdGZsb2F0OiBsZWZ0O1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG4udmlldy1wb3B1cHtcclxuXHRwb3NpdGlvbjpyZWxhdGl2ZTtcclxufVxyXG4ucG9wdXAtY29udGVudCB7XHJcblx0QGluY2x1ZGUgZmxleDtcclxuXHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdHBhZGRpbmc6IDMwcnB4O1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcblx0LyogaGVpZ2h0OiAxNTBweDsgKi9cclxuXHQvKiBib3JkZXI6IDFweCBzb2xpZCByZWQ7ICovXHJcbn1cclxuLnBvcHVwLWNvbnQge1xyXG5cdG92ZXJmbG93LXk6IGF1dG87XHJcblx0LyogYm9yZGVyOiAxcHggc29saWQgcmVkOyAqL1xyXG59XHJcbi5wb3B1cC1oZWlnaHQge1xyXG5cdEBpbmNsdWRlIGhlaWdodDtcclxuXHQvKiB3aWR0aDogMjAwcHg7ICovXHJcbn1cclxuLnBvcHVwLWhlYWRlcntcclxuXHRmb250LXNpemU6IDQycnB4O1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdG1hcmdpbjoyMHJweCAyMHJweCAwcHggMjBycHg7XHJcbn1cclxuLnZpZXdfcG9wdXBfQ2hlY2tMaXN0e1xyXG5cdG1hcmdpbi1ib3R0b206IDIwcnB4O1xyXG59XHJcbi5wb3B1cC1mb290ZXJ7XHJcblx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdHBvc2l0aW9uOmFic29sdXRlO1xyXG5cdGJvdHRvbTowO1xyXG5cdHJpZ2h0OjIwcnB4O1xyXG59XHJcbmJ1dHRvbi5idG5fcG9wdXBfYWRkIHtcclxuXHR3aWR0aDoxODBycHg7XHJcblx0bWFyZ2luLXRvcDogNTBycHg7XHJcblx0bWFyZ2luLXJpZ2h0OiAyMHJweDtcclxuXHRwYWRkaW5nOiAxNXJweDtcclxuXHRsaW5lLWhlaWdodDogMS41O1xyXG5cdGJhY2tncm91bmQ6ICMyN0E2RTE7XHJcblx0Ym9yZGVyOiBub25lO1xyXG5cdGNvbG9yOiAjZmZmO1xyXG4gICAgZm9udC1zaXplOiAzOHJweDtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxuXHQvKiBmbG9hdDogbGVmdDsgKi9cclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuYnV0dG9uLmJ0bl9wb3B1cF9jYW5jZWwge1xyXG5cdHdpZHRoOjE4MHJweDtcclxuXHRtYXJnaW4tdG9wOiA1MHJweDtcclxuXHRwYWRkaW5nOiAxNXJweDtcclxuXHRsaW5lLWhlaWdodDogMS41O1xyXG5cdGJhY2tncm91bmQ6ICMyN0E2RTE7XHJcblx0Ym9yZGVyOiBub25lO1xyXG5cdGNvbG9yOiAjZmZmO1xyXG4gICAgZm9udC1zaXplOiAzOHJweDtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxuXHQvKiBmbG9hdDogcmlnaHQ7ICovXHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcbiNkdl9zZWxlY3R7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdHdpZHRoOiA2NiU7XHJcblx0YmFja2dyb3VuZDogI0ZGRjtcclxuXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XHJcblx0Y29sb3I6ICMyZDhjZjA7XHJcblx0LyogcGFkZGluZzogMTBycHggOHJweCAxMnJweDsgKi9cclxuXHRmb250LXNpemU6IDM0cnB4O1xyXG5cdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cdGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuXHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzO1xyXG5cdG1hcmdpbi10b3A6IDBycHg7XHJcblx0LyogdmVydGljYWwtYWxpZ246IDEwcHg7ICovXHJcblx0dmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxufVxyXG4jZHZfc2VsZWN0IC51bmktc2VsZWN0e1xyXG5cdGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcblx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiAjMmQ4Y2YwO1x0XHJcbn1cclxuI2R2X3NlbGVjdCAudW5pLXNlbGVjdF9faW5wdXQtdGV4dHtcclxuXHRjb2xvcjogIzJkOGNmMDtcdFxyXG59XHJcblxyXG4ucGFuZWxfdGl0bGV7XHJcblx0Zm9udC1zaXplOiAzOHJweDtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjMjdBNkUxO1xyXG5cdGxpbmUtaGVpZ2h0OiA4MHJweDtcclxuXHRjb2xvcjogI2ZmZjtcclxuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0IGZvbnQtd2VpZ2h0OiBib2xkO1xyXG59XHJcbi52LXBhbmVse1xyXG5cdG1pbi1oZWlnaHQ6Nzg4cnB4O1xyXG59XHJcbi52LXBhbmVsbGlzdHtcclxuXHRib3JkZXI6NHJweCBzb2xpZCAjYWFhO1xyXG5cdGJvcmRlci1yYWRpdXM6IDEwcnB4O1xyXG5cdG1hcmdpbjogMTBycHggMjBycHggMHJweCAyMHJweDtcclxufVxyXG4udi1wYW5lbGRlbHtcclxuXHR0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG4ucGFuZWxfZGVse1xyXG5cdGZvbnQtc2l6ZTogNDRycHg7XHJcblx0dGV4dC1kZWNvcmF0aW9uOiBpbml0aWFsO1xyXG5cdG1hcmdpbi10b3A6IDEwcnB4O1xyXG5cdG1hcmdpbi1yaWdodDogMjBycHg7XHJcbn1cclxuLmNsYXNzX2F0dHJfYm9keSAuZm9ybS1ncm91cCB7XHJcblx0bWFyZ2luOiAyMHJweCAzMHJweDtcclxuICAgIC8qIG1hcmdpbi1sZWZ0OiAtMTJweDtcclxuICAgIG1hcmdpbi1yaWdodDogLTEycHg7ICovXHJcbn1cclxuLnN1YmNsYXNzX2F0dHJfYm9keSAuZm9ybS1ncm91cCB7XHJcblx0bWFyZ2luOiAyMHJweCAxMHJweDtcclxuICAgIC8qIG1hcmdpbi1sZWZ0OiAtMTJweDtcclxuICAgIG1hcmdpbi1yaWdodDogLTEycHg7ICovXHJcbn1cclxuLmZvcm0tZ3JvdXAgPiBsYWJlbFtjbGFzcyo9XCJjb2wtXCJdIHtcclxuICAgIG1hcmdpbi1ib3R0b206IDhycHg7XHJcblx0Zm9udC1zaXplOiAzMnJweDtcclxufVxyXG4uZm9ybS1ncm91cCBsYWJlbCB7XHJcbiAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG4gICAgbGluZS1oZWlnaHQ6IDYwcnB4O1xyXG59XHJcbi50eF90aXRsZTJ7XHJcblx0Zm9udC1zaXplOiAzMnJweDtcclxuXHR0ZXh0LWFsaWduOiByaWdodDtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0dmVydGljYWwtYWxpZ246IC0ycHg7XHJcbn1cclxuLmF0dHJfZmllbGR7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcblx0bWFyZ2luLWxlZnQ6IDhweDtcclxuXHQvKiB3aWR0aDogNzElOyAqL1xyXG59XHJcbi50ZXh0LXJpZ2h0MiB7XHJcblx0bWFyZ2luOiAwO1xyXG5cdHZlcnRpY2FsLWFsaWduOiAtNHB4O1xyXG5cdG1hcmdpbi1sZWZ0OiA5cHg7XHJcblx0ZmxvYXQ6IG5vbmU7XHJcblx0Zm9udC1zaXplOiA0NHJweDtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdGZvbnQtc2l6ZTogMTJycHg7XHJcbn1cclxuLnYtcGFuZWwgaW5wdXR7XHJcblx0Ym9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTtcclxuXHR3aWR0aDogOTglO1xyXG5cdGhlaWdodDogNTJycHg7XHJcblx0YmFja2dyb3VuZDogI0ZGRjtcclxuXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XHJcblx0Y29sb3I6ICMwNDZkYjM7XHJcblx0cGFkZGluZzogMTBycHggOHJweCAxMnJweDtcclxuXHRmb250LXNpemU6IDM0cnB4O1xyXG5cdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cdGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuXHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzO1xyXG5cdG1hcmdpbi10b3A6IDRycHg7XHJcbn1cclxuLmRhdGVfaXB1dHtcclxuXHQvKiBib3JkZXI6IDFweCBzb2xpZCAjZDVkNWQ1OyAqL1xyXG5cdC8qIHdpZHRoOiA5OCU7ICovXHJcblx0aGVpZ2h0OiA2MnJweDtcclxuXHRiYWNrZ3JvdW5kOiAjRkZGO1xyXG5cdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcclxuXHRjb2xvcjogIzA0NmRiMztcclxuXHRwYWRkaW5nOiAxMHJweCA4cnB4IDRycHg7XHJcblx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxufVxyXG4uZHZfaW5wdXR7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xuICAgIHdpZHRoOiA2NSU7ICAgIFxyXG5cdC8qIGxpbmUtaGVpZ2h0OiAyMnJweDsgKi9cbn1cclxuLnZpZXctZmxvb3J7XHJcblx0cGFkZGluZzogMCAyMHJweDtcclxufVxuPC9zdHlsZT5cclxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XG5cdC5kZW1vLXVuaS1yb3cge1xuXHRcdG1hcmdpbi1ib3R0b206IDBweDtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXHQ6OnYtZGVlcCAudW5pLXJvdyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMHB4O1xuXHR9XHJcblx0LnZpZXctdGFicGFnZSA6OnYtZGVlcCAudW5pLXJvdyAge1xuXHRcdG1hcmdpbi1ib3R0b206IDVweDtcblx0fVxuXHQuZGVtby11bmktY29sIHtcblx0XHRoZWlnaHQ6IDM2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHR9XHJcblx0LmRlbW8tdW5pLXJvdyAudW5pLWlucHV0e1xyXG5cdFx0d2lkdGg6IGNhbGMoMTAwJSAtIDEyMHB4KTtcclxuXHR9XHJcblx0LnRleHQge1xyXG5cdCAgICBmb250LXNpemU6IDEycHg7XHJcblx0ICAgIGNvbG9yOiAjNjY2O1xyXG5cdCAgICBtYXJnaW4tdG9wOiA1cHg7XHJcblx0fVxyXG5cdC8vIC51bmktcHgtNSB7XHJcblx0Ly8gXHRtYXJnaW46IDA7XHJcblx0Ly8gXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0Ly8gXHRtYXJnaW46IDA7ICAgIFxyXG5cdC8vIFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdC8vIH1cclxuXHQvLyAudW5pLXNlbGVjdHtcclxuXHQvLyBcdGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcblx0Ly8gXHRib3JkZXItcmFkaXVzOiAwO1xyXG5cdC8vIH1cclxuXHQvLyAudW5pLXNlY3Rpb24tY29udGVudHtcclxuXHQvLyBcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHQvLyBcdHdpZHRoOiAxMDBweDsgXHJcblx0Ly8gXHRib3JkZXI6IDFweCBzb2xpZCByZWQ7XHJcblx0Ly8gfVxuPC9zdHlsZT5cblxuXHJcbjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cImNvbnRlbnRcIj5cclxuXHRcdDwhLS0g6KGo5aS05qC35byPIC0tPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJ2LWhlYWRTdHlsZVwiIHYtZm9yPVwiKGl0ZW0saW5kZXgpIGluIGhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1wiID5cclxuXHRcdCAgPCEtLSDmma7pgJrluIPlsYAgLS0+XHJcblx0XHQgIDx2aWV3IHYtaWY9XCJpdGVtLm5hbWUhPSdMYXlvdXQnXCI+XHJcblx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlXCIgOnN0eWxlPVwieyd3aWR0aCc6aXRlbS5sYWJlbFdpZHRoKydweCd9XCI+e3tpdGVtLmxhYmVsfX3vvJo8L3RleHQ+XHJcblx0XHRcdDxzcGFuIGNsYXNzPVwiZm9ybS1pdGVtLXNwYW5cIiB2LWlmPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdCAgOnN0eWxlPVwiJ3dpZHRoOiBjYWxjKDEwMCUgLSAnK2l0ZW0ubGFiZWxXaWR0aCsncHgpOydcIj57e2l0ZW0udmFsdWV9fTwvc3Bhbj5cclxuXHRcdFx0PCEtLSDkuIvmi4nmoYYt5Y2V6YCJIGl0ZW0udXNlRGljdD9pdGVtLmRpY3Q6aXRlbS5zZWxlY3Rpb25zLS0+XHJcblx0XHRcdDx1bmktZGF0YS1zZWxlY3QgaWQ9XCJkdl9zZWxlY3RcIiB2LWlmPVwiaXRlbS5uYW1lPT0nU2VsZWN0JyAmJiAhaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdFx0OnN0eWxlPVwiJ3dpZHRoOiBjYWxjKDEwMCUgLSAnK2l0ZW0ubGFiZWxXaWR0aC0xMCsncHgpOydcIlxyXG5cdFx0XHRcdDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiXHJcblx0XHRcdFx0di1tb2RlbD1cIml0ZW0udmFsdWVcIlxyXG5cdFx0XHRcdDpsb2NhbGRhdGE9XCJpdGVtLmRpY3RcIlxyXG5cdFx0XHRcdEBjaGFuZ2U9XCJvbmNoYW5nZShpdGVtKVwiXHJcblx0XHRcdFx0OmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdFx0OmNsZWFyPVwiZmFsc2VcIlxyXG5cdFx0XHQ+PC91bmktZGF0YS1zZWxlY3Q+XHJcblx0XHRcdDwhLS0g5LiL5ouJ5qGGLeWkmumAiSAtLT5cclxuXHRcdFx0PCEtLSA8c2VsZWN0LWN5IHYtZWxzZS1pZj1cImF0dHIuc2VsZWN0PT10cnVlXCIgIDp2YWx1ZT1cIml0ZW0udmFsdWVcIiBcclxuXHRcdFx0ICA6bmFtZT1cIml0ZW0uZmllbGRJZFwiIFxyXG5cdFx0XHQgIDpvcHRpb25zPVwiaXRlbS5kaWN0XCIgXHJcblx0XHRcdCAgc2hvd0NsZWFySWNvbj1cInRydWVcIiBcclxuXHRcdFx0ICBAY2hhbmdlPVwib25jaGFuZ2UyXCIgXHJcblx0XHRcdCAgOmRhdGEtaW5kZXg9XCJpbmRleFwiIFxyXG5cdFx0XHQgIDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHQ+PC9zZWxlY3QtY3k+IC0tPlxyXG5cdFx0XHQ8IS0tIOaWh+acrOahhi/mlbDlrZfmoYYgLS0+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiIHYtaWY9XCIoaXRlbS5uYW1lPT0nSW5wdXQnIHx8IGl0ZW0ubmFtZT09J0lucHV0TnVtYmVyJykgJiYgIWl0ZW0uZGlzYWJsZWRcIj5cblx0XHRcdFx0PHRleHQgdi1pZj1cIml0ZW0uc2V0dGluZy5wcmVmaXhcIiBcclxuXHRcdFx0XHRcdGNsYXNzPVwidW5pLWljb25cIiBcclxuXHRcdFx0XHRcdDpjbGFzcz1cIltpdGVtLnNldHRpbmcucHJlZml4XVwiXHJcblx0XHRcdFx0XHRAY2hhbmdlPVwiY2xhc3NBdHRyX2V4dEJ1dHRvbihpdGVtKVwiPiYjeGU1Njg7PC90ZXh0PlxyXG5cdFx0XHRcdDxpbnB1dCBjbGFzcz1cInVuaS1pbnB1dFwiIDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiXHJcblx0XHRcdFx0XHQ6dHlwZT1cIml0ZW0ubmFtZT09J0lucHV0Jz8ndGV4dCc6aXRlbS5uYW1lPT0nSW5wdXROdW1iZXInPydudW1iZXInOid0ZXh0J1wiIFxyXG5cdFx0XHRcdFx0di1tb2RlbD1cIml0ZW0udmFsdWVcIlxyXG5cdFx0XHRcdFx0OmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHQ6cGxhY2Vob2xkZXI9XCJpdGVtLnBsYWNlaG9sZGVyXCJcclxuXHRcdFx0XHRcdDpzdHlsZT1cInsnd2lkdGgnOml0ZW0uc2V0dGluZy5wcmVmaXggJiYgaXRlbS5zZXR0aW5nLnN1ZmZpeD8nNzglJzppdGVtLnNldHRpbmcucHJlZml4IHx8IGl0ZW0uc2V0dGluZy5zdWZmaXg/Jzg3JSc6Jzk2JSd9XCIgXHJcblx0XHRcdFx0XHQ6Zm9jdXM9XCJmb2N1c01hdGVyaWFcIlxyXG5cdFx0XHRcdFx0QGZvY3VzPVwib250YXAoaXRlbSlcIiBcclxuXHRcdFx0XHRcdEBibHVyPVwib25ldmVudChpdGVtKVwiXHJcblx0XHRcdFx0Lz5cblx0XHRcdFx0PHRleHQgdi1pZj1cIml0ZW0uc2V0dGluZy5zdWZmaXhcIiBcclxuXHRcdFx0XHRcdGNsYXNzPVwidW5pLWljb25cIiBcclxuXHRcdFx0XHRcdDpjbGFzcz1cIltpdGVtLnNldHRpbmcuc3VmZml4XVwiXG5cdFx0XHRcdFx0QGNsaWNrPVwiY2xhc3NBdHRyX2V4dEJ1dHRvbihpdGVtKVwiPiYjeGU1Njg7PC90ZXh0PlxyXG5cdFx0ICAgIDwvdmlldz5cclxuXHRcdFx0PCEtLSDlpJrooYzmlofmnKwgLS0+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiIHYtaWY9XCJpdGVtLm5hbWU9PSdUZXh0YXJlYScgJiYgIWl0ZW0uZGlzYWJsZWRcIj5cclxuXHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9XCJ1bmktaW5wdXRcIiA6Y2xhc3M9XCJpdGVtLmRpc2FibGVkPydpbnB1dC1kaXNhYmxlZCc6JydcIiA6dmFsdWU9XCJpdGVtLnZhbHVlXCIgXHJcblx0XHRcdFx0ICA6cGxhY2Vob2xkZXI9XCJpdGVtLnBsYWNlaG9sZGVyXCJcclxuXHRcdFx0XHQgIEBibHVyPVwib25Nb2RlbFZhbHVlKGl0ZW0pXCIgXHJcblx0XHRcdFx0ICA6ZGF0YS1pbmRleD1cImluZGV4XCIgXHJcblx0XHRcdFx0ICBzdHlsZT1cImhlaWdodDo2MHB4O1wiIFxyXG5cdFx0XHRcdCAgOnN0eWxlPVwieyd3aWR0aCc6Jzk2JSd9XCIgXHJcblx0XHRcdFx0ICA6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHQ+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcclxuXHRcdCAgICA8L3ZpZXc+XHJcblx0XHRcdDwhLS0g5aSN6YCJ5qGGIC0tPlxyXG5cdFx0XHQ8Y2hlY2tib3gtZ3JvdXAgY2xhc3M9XCJjaGVja19yZW1lbWJlclB3ZFwiIHYtaWY9XCJpdGVtLm5hbWU9PSdDaGVja2JveCdcIlxyXG5cdFx0XHRcdDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiIFxyXG5cdFx0XHRcdEBjaGFuZ2U9XCJvbk1vZGVsVmFsdWUoaXRlbSlcIiBcclxuXHRcdFx0XHQ6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHQ6ZGF0YS1pc2NoZWNrPVwiaXRlbS52YWx1ZVwiPlxyXG5cdFx0XHRcdDxsYWJlbD5cclxuXHRcdFx0XHRcdDxjaGVja2JveCA6dmFsdWU9XCJpdGVtLnZhbHVlXCIgOmNoZWNrZWQ9XCJpdGVtLnZhbHVlXCIvPlxyXG5cdFx0XHRcdFx0PHRleHQ+e3tpdGVtLmxhYmVsfX08L3RleHQ+XHJcblx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0PC9jaGVja2JveC1ncm91cD5cclxuXHRcdFx0PCEtLSBTd2l0Y2jlvIDlhbMgLS0+XHJcblx0XHRcdDxzd2l0Y2ggY2xhc3M9XCJpbnB1dC1zd2l0Y2hcIiB2LWlmPVwiaXRlbS5uYW1lPT0nU3dpdGNoJ1wiIDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiXHJcblx0XHRcdCAgOmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdCAgdi1tb2RlbD1cIml0ZW0udmFsdWVcIiBcclxuXHRcdFx0ICBAY2hhbmdlPVwib25Nb2RlbFZhbHVlKGl0ZW0pXCIgLz5cclxuXHRcdFx0PCEtLSDml6XmnJ/ml7bpl7QgLS0+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiIHYtaWY9XCIoaXRlbS5uYW1lPT0nVGltZVBpY2tlcicgfHwgaXRlbS5uYW1lPT0nRGF0ZVBpY2tlcicpICYmICFpdGVtLmRpc2FibGVkXCI+XHJcblx0XHRcdFx0PHBpY2tlciBtb2RlPVwiZGF0ZVwiIGNsYXNzPVwiZGF0ZV9pcHV0XCIgOmNsYXNzPVwiaXRlbS5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0ICA6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHQgIDp2YWx1ZT1cIml0ZW0udmFsdWVcIiBcclxuXHRcdFx0XHQgIEBjaGFuZ2U9XCJvbk1vZGVsVmFsdWUoaXRlbSlcIiBcclxuXHRcdFx0XHQ+XHJcblx0XHRcdFx0ICAgPHZpZXcgY2xhc3M9XCJwaWNrZXJcIj57e2l0ZW0udmFsdWV9fTwvdmlldz5cclxuXHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0ICA8L3ZpZXc+XHJcblx0XHQgIDwhLS0g5qCF5qC85biD5bGAIC0tPlxyXG5cdFx0ICA8dW5pLXJvdyBjbGFzcz1cImRlbW8tdW5pLXJvd1wiIHYtaWY9XCJpdGVtLm5hbWU9PSdMYXlvdXQnXCI+XHJcblx0XHQgICBcdDx1bmktY29sIHYtZm9yPVwiKGNvbHMsa2V5KSBpbiBpdGVtLnNldHRpbmcuY29sTGlzdFwiIFxyXG5cdFx0ICAgXHRcdDpzcGFuPVwiaXRlbS5zZXR0aW5nLnNwYW5MaXN0P2l0ZW0uc2V0dGluZy5zcGFuTGlzdFtrZXldOjI0IC8gaXRlbS5zZXR0aW5nLmNvbFwiPlxyXG5cdFx0ICAgXHRcdDx2aWV3IHYtaWY9XCJjb2xzIT1udWxsXCIgPlxyXG5cdFx0ICAgXHRcdFx0PHRleHQgY2xhc3M9XCJ0eHRfdGl0bGVcIiA6c3R5bGU9XCJ7J3dpZHRoJzpjb2xzLmxhYmVsV2lkdGgrJ3B4J31cIj57e2NvbHMubGFiZWx9fe+8mjwvdGV4dD5cclxuXHRcdCAgIFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9ybS1pdGVtLXNwYW5cIiB2LWlmPVwiY29scy5kaXNhYmxlZFwiPnt7Y29scy52YWx1ZX19PC9zcGFuPlxyXG5cdFx0ICAgXHRcdFx0PHZpZXcgY2xhc3M9XCJkdl9pbnB1dFwiIHYtaWY9XCIoY29scy5uYW1lPT0nSW5wdXQnIHx8IGNvbHMubmFtZT09J0lucHV0TnVtYmVyJykgJiYgIWNvbHMuZGlzYWJsZWRcIj5cclxuXHRcdCAgIFx0XHRcdFx0PHRleHQgdi1pZj1cImNvbHMuc2V0dGluZy5wcmVmaXhcIiBcclxuXHRcdCAgIFx0XHRcdFx0XHRjbGFzcz1cInVuaS1pY29uXCIgXHJcblx0XHQgICBcdFx0XHRcdFx0OmNsYXNzPVwiW2NvbHMuc2V0dGluZy5wcmVmaXhdXCJcclxuXHRcdCAgIFx0XHRcdFx0XHRAY2hhbmdlPVwib25jaGFuZ2UoY29scylcIj4mI3hlNTY4OzwvdGV4dD5cclxuXHRcdCAgIFx0XHRcdFx0PGlucHV0IGNsYXNzPVwidW5pLWlucHV0XCIgOmNsYXNzPVwiY29scy5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHQgICBcdFx0XHRcdFx0OnR5cGU9XCJjb2xzLm5hbWU9PSdJbnB1dCc/J3RleHQnOmNvbHMubmFtZT09J0lucHV0TnVtYmVyJz8nbnVtYmVyJzondGV4dCdcIiBcclxuXHRcdCAgIFx0XHRcdFx0XHR2LW1vZGVsPVwiY29scy52YWx1ZVwiXHJcblx0XHQgICBcdFx0XHRcdFx0OmRpc2FibGVkPVwiY29scy5kaXNhYmxlZFwiXHJcblx0XHQgICBcdFx0XHRcdFx0OnBsYWNlaG9sZGVyPVwiY29scy5wbGFjZWhvbGRlclwiXHJcblx0XHQgICBcdFx0XHRcdFx0OnN0eWxlPVwieyd3aWR0aCc6Y29scy5zZXR0aW5nLnByZWZpeCAmJiBjb2xzLnNldHRpbmcuc3VmZml4Pyc3OCUnOmNvbHMuc2V0dGluZy5wcmVmaXggfHwgY29scy5zZXR0aW5nLnN1ZmZpeD8nODclJzonOTYlJ31cIiBcclxuXHRcdCAgIFx0XHRcdFx0XHQ6Zm9jdXM9XCJmb2N1c01hdGVyaWFcIlxyXG5cdFx0ICAgXHRcdFx0XHRcdEBmb2N1cz1cIm9udGFwKGNvbHMpXCIgXHJcblx0XHQgICBcdFx0XHRcdFx0QGJsdXI9XCJvbmV2ZW50KGNvbHMpXCJcclxuXHRcdCAgIFx0XHRcdFx0Lz5cclxuXHRcdCAgIFx0XHRcdFx0PHRleHQgdi1pZj1cImNvbHMuc2V0dGluZy5zdWZmaXhcIiBcclxuXHRcdCAgIFx0XHRcdFx0XHRjbGFzcz1cInVuaS1pY29uXCIgXHJcblx0XHQgICBcdFx0XHRcdFx0OmNsYXNzPVwiW2NvbHMuc2V0dGluZy5zdWZmaXhdXCJcclxuXHRcdCAgIFx0XHRcdFx0XHRAY2xpY2s9XCJvbmNoYW5nZShjb2xzKVwiPiYjeGU1Njg7PC90ZXh0PlxyXG5cdFx0ICAgXHRcdFx0PC92aWV3PlxyXG5cdFx0ICAgXHRcdFx0PCEtLSDkuIvmi4nmoYYt5Y2V6YCJIGNvbHMudXNlRGljdD9jb2xzLmRpY3Q6Y29scy5zZWxlY3Rpb25zLS0+XHJcblx0XHQgICBcdFx0XHQ8dW5pLWRhdGEtc2VsZWN0IGlkPVwiZHZfc2VsZWN0XCIgdi1pZj1cImNvbHMubmFtZT09J1NlbGVjdCcgJiYgIWNvbHMuZGlzYWJsZWRcIlxyXG5cdFx0ICAgXHRcdFx0XHQ6Y2xhc3M9XCJjb2xzLmRpc2FibGVkPydpbnB1dC1kaXNhYmxlZCc6JydcIiBcclxuXHRcdCAgIFx0XHRcdFx0di1tb2RlbD1cImNvbHMudmFsdWVcIlxyXG5cdFx0ICAgXHRcdFx0XHQ6bG9jYWxkYXRhPVwiY29scy5kaWN0XCJcclxuXHRcdCAgIFx0XHRcdFx0QGNoYW5nZT1cIm9uY2hhbmdlKGNvbHMpXCJcclxuXHRcdCAgIFx0XHRcdFx0OmRpc2FibGVkPVwiY29scy5kaXNhYmxlZFwiXHJcblx0XHQgICBcdFx0XHRcdDpjbGVhcj1cImZhbHNlXCJcclxuXHRcdCAgIFx0XHRcdD48L3VuaS1kYXRhLXNlbGVjdD5cclxuXHRcdCAgIFx0XHRcdDwhLS0g5aSa6KGM5paH5pysIC0tPlxyXG5cdFx0ICAgXHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCIgdi1pZj1cImNvbHMubmFtZT09J1RleHRhcmVhJyAmJiAhY29scy5kaXNhYmxlZFwiPlxyXG5cdFx0ICAgXHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9XCJ1bmktaW5wdXRcIiA6dmFsdWU9XCJjb2xzLnZhbHVlXCIgXHJcblx0XHQgICBcdFx0XHRcdCAgOmNsYXNzPVwiY29scy5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHQgICBcdFx0XHRcdCAgOnBsYWNlaG9sZGVyPVwiY29scy5wbGFjZWhvbGRlclwiXHJcblx0XHQgICBcdFx0XHRcdCAgQGJsdXI9XCJvbk1vZGVsVmFsdWUoY29scylcIiBcclxuXHRcdCAgIFx0XHRcdFx0ICBzdHlsZT1cImhlaWdodDo2MHB4O1wiIFxyXG5cdFx0ICAgXHRcdFx0XHQgIDpzdHlsZT1cInsnd2lkdGgnOic5NiUnfVwiIFxyXG5cdFx0ICAgXHRcdFx0XHQgIDpkaXNhYmxlZD1cImNvbHMuZGlzYWJsZWRcIlxyXG5cdFx0ICAgXHRcdFx0XHQ+PC90ZXh0YXJlYT5cclxuXHRcdCAgIFx0XHRcdDwvdmlldz5cclxuXHRcdCAgIFx0XHRcdDwhLS0g5aSN6YCJ5qGGIC0tPlxyXG5cdFx0ICAgXHRcdFx0PGNoZWNrYm94LWdyb3VwIGNsYXNzPVwiY2hlY2tfcmVtZW1iZXJQd2RcIiB2LWlmPVwiY29scy5uYW1lPT0nQ2hlY2tib3gnXCJcclxuXHRcdCAgIFx0XHRcdFx0OmNsYXNzPVwiY29scy5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHQgICBcdFx0XHRcdDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0ICAgXHRcdFx0XHRAY2hhbmdlPVwib25Nb2RlbFZhbHVlKGNvbHMpXCIgXHJcblx0XHQgICBcdFx0XHRcdDpkYXRhLWlzY2hlY2s9XCJjb2xzLnZhbHVlXCIgXHJcblx0XHQgICBcdFx0XHRcdDpzdHlsZT1cInsnbWFyZ2luLWxlZnQnOicxMHJweCd9XCI+XHJcblx0XHQgICBcdFx0XHRcdDxsYWJlbD5cclxuXHRcdCAgIFx0XHRcdFx0XHQ8Y2hlY2tib3ggOnZhbHVlPVwiY29scy52YWx1ZVwiIDpjaGVja2VkPVwiY29scy52YWx1ZVwiLz5cclxuXHRcdCAgIFx0XHRcdFx0XHQ8dGV4dD57e2NvbHMubGFiZWx9fTwvdGV4dD5cclxuXHRcdCAgIFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdCAgIFx0XHRcdDwvY2hlY2tib3gtZ3JvdXA+XHJcblx0XHQgICBcdFx0XHQ8IS0tIFN3aXRjaOW8gOWFsyAtLT5cclxuXHRcdCAgIFx0XHRcdDxzd2l0Y2ggdi1pZj1cImNvbHMubmFtZT09J1N3aXRjaCdcIiA6Y2xhc3M9XCJjb2xzLmRpc2FibGVkPydpbnB1dC1kaXNhYmxlZCc6JydcIlxyXG5cdFx0ICAgXHRcdFx0XHQ6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdCAgIFx0XHRcdFx0di1tb2RlbD1cImNvbHMudmFsdWVcIiBcclxuXHRcdCAgIFx0XHRcdFx0QGNoYW5nZT1cIm9uTW9kZWxWYWx1ZShjb2xzKVwiIFxyXG5cdFx0ICAgXHRcdFx0XHQ6c3R5bGU9XCJ7J21hcmdpbi1sZWZ0JzonMTBycHgnfVwiLz5cclxuXHRcdCAgIFx0XHRcdDwhLS0g5pel5pyf5pe26Ze0IC0tPlxyXG5cdFx0ICAgXHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCIgdi1pZj1cIihjb2xzLm5hbWU9PSdUaW1lUGlja2VyJyB8fCBjb2xzLm5hbWU9PSdEYXRlUGlja2VyJykgJiYgIWNvbHMuZGlzYWJsZWRcIj5cclxuXHRcdCAgIFx0XHRcdFx0PHBpY2tlciBtb2RlPVwiZGF0ZVwiIGNsYXNzPVwiZGF0ZV9pcHV0XCIgOmNsYXNzPVwiY29scy5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHQgICBcdFx0XHRcdCAgOmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHQgICBcdFx0XHRcdCAgOnZhbHVlPVwiY29scy52YWx1ZVwiIFxyXG5cdFx0ICAgXHRcdFx0XHQgIEBjaGFuZ2U9XCJvbk1vZGVsVmFsdWUoY29scylcIiBcclxuXHRcdCAgIFx0XHRcdFx0PlxyXG5cdFx0ICAgXHRcdFx0XHQgICA8dmlldyBjbGFzcz1cInBpY2tlclwiPnt7Y29scy52YWx1ZX19PC92aWV3PlxyXG5cdFx0ICAgXHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdCAgIFx0XHRcdDwvdmlldz5cclxuXHRcdCAgIFx0XHRcclxuXHRcdCAgIFx0XHQ8L3ZpZXc+XHJcblx0XHQgICBcdDwvdW5pLWNvbD5cclxuXHRcdCAgIDwvdW5pLXJvdz5cclxuXHRcdCAgXHJcblx0XHQgIFxyXG5cdFx0PC92aWV3PlxyXG5cdFx0XHJcblx0XHQ8dmlldyBjbGFzcz1cInZpZXctZmxvb3JcIj5cclxuXHRcdFx0PGJ1dHRvbiB0eXBlPVwiZGVmYXVsdFwiIEB0YXA9XCJzYXZhXCIgY2xhc3M9XCJidG5fYWRkXCI+e3t0aXRsZX19PC9idXR0b24+XHJcblx0XHRcdDxidXR0b24gdHlwZT1cImRlZmF1bHRcIiBAdGFwPVwiY2FuY2VsXCIgY2xhc3M9XCJidG5fY2FuY2VsXCI+5Y+W5raIPC9idXR0b24+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8IS0tIOaZrumAmuW8ueeqlyB0b3AgYm90dG9tIGNlbnRlciBsZWZ0IHJpZ2h0IC0tPlxyXG5cdFx0PHZpZXc+XHJcblx0XHRcdDx1bmktcG9wdXAgY2xhc3M9XCJ2aWV3LXBvcHVwXCIgcmVmPVwicG9wdXBcIiBiYWNrZ3JvdW5kLWNvbG9yPVwiI2ZmZlwiIEBjaGFuZ2U9XCJwb3B1cENoYW5nZVwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwicG9wdXAtaGVhZGVyXCI+e3tjaGVja19saXN0LnRpdGxlfX08L3ZpZXc+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwb3B1cC1jb250ZW50XCIgOmNsYXNzPVwieyAncG9wdXAtaGVpZ2h0JzogcG9wdXBUeXBlID09PSAnbGVmdCcgfHwgcG9wdXBUeXBlID09PSAncmlnaHQnIH1cIiBcclxuXHRcdFx0XHQ6c3R5bGU9XCJ7J3dpZHRoJzpjaGVja19saXN0LndpZHRoP2NoZWNrX2xpc3Qud2lkdGgrJ3B4JzonMjAwcHgnLCdoZWlnaHQnOmNoZWNrX2xpc3QuaGVpZ2h0P2NoZWNrX2xpc3QuaGVpZ2h0KydweCc6Jzg4JSd9XCI+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInBvcHVwLWNvbnRcIiA6c3R5bGU9XCJ7J2hlaWdodCc6Y2hlY2tfbGlzdC5oZWlnaHQ/Y2hlY2tfbGlzdC5oZWlnaHQtNDUrJ3B4JzonNDE1cHgnfVwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInZpZXdfcG9wdXBfQ2hlY2tMaXN0XCIgdi1mb3I9XCIoaXRlbSxpbmRleCkgaW4gY2hlY2tfbGlzdC5pdGVtc1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxjaGVja2JveC1ncm91cCBjbGFzcz1cImNoZWNrX2xpc3RcIiBAY2hhbmdlPVwiY2hlY2tDaGFuZ2VcIiA6ZGF0YS1pc2NoZWNrPVwiaXRlbS5jaGVja1wiIDpkYXRhLWluZGV4PVwiaW5kZXhcIiAgOnN0eWxlPVwieydtYXJnaW4tbGVmdCc6ICcxMHJweCd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxjaGVja2JveCA6dmFsdWU9XCJpdGVtLmNoZWNrXCIgOmNoZWNrZWQ9XCJpdGVtLmNoZWNrXCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dD57e2l0ZW0ubmFtZX19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHQ8L2NoZWNrYm94LWdyb3VwPlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInBvcHVwLWZvb3RlclwiPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJkZWZhdWx0XCIgQHRhcD1cInBvcHVwX3NhdmFcIiBjbGFzcz1cImJ0bl9wb3B1cF9hZGRcIj7noa7lrpo8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwiZGVmYXVsdFwiIEB0YXA9XCJwb3B1cF9jYW5jZWxcIiBjbGFzcz1cImJ0bl9wb3B1cF9jYW5jZWxcIj7lj5bmtog8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdW5pLXBvcHVwPlxyXG5cdFx0PC92aWV3PlxuICAgIDwvdmlldz5cbjwvdGVtcGxhdGU+XG5cbjxzY3JpcHQ+XHJcbmltcG9ydCBCYXNlNjQgZnJvbSAnLi4vLi4vY29tcG9uZW50cy9qcy1iYXNlNjQvYmFzZTY0LmpzJ1xyXG5leHBvcnQgZGVmYXVsdCB7XHJcbiAgbW9kdWxlczp7XHJcblx0QmFzZTY0LFxyXG4gIH0sXG4gIGRhdGEoKSB7XG4gICAgcmV0dXJuIHtcclxuXHQgIHRpdGxlOifmlrDlop4nLFxuICAgICAgcGFyYW06IHt9LFxyXG5cdCAgZWRpdF9pbml0YWxfZXZlbnQ6XCJcIiwgIC8v5by556qX5Yid5aeL5YyW5LqL5Lu2SURcclxuXHQgIGVkaXRfb2tfZXZlbnQ6XCJcIiwgICAgICAvL+W8ueeql+eCueWHu09LIOinpuWPkeS6i+S7tklEXHJcblx0ICBlZGl0X3NlbGVjdF9jb21wb3NlX2V2ZW50OlwiXCIsICAvL+mAieaLqee7hOaIkOWvueixoeaXtuiwg+eUqFxyXG5cdCAgZWRpdF9jb21wb3NlX2Nsc19pZDpcIlwiLFxyXG5cdCAgZ2xvYmFsX2F0dHI6W10sXHJcblx0ICByZWZkYXRhc3RvcmU6IFtdLFx0ICAgLy/lvJXnlKjmlbDmja7lrZjlgqjljLovLyB7YXR0cjonR19QUkpfJyArIGJpbmRhdHRyICsgJ19JRCcsIHZhbHVlOmluZm8uaWR9XHJcblx0ICBzY2FuQ29kZVZhbDpcIlwiLFxyXG5cdCAgc3ViQ2xhc3NBdHRyTGlzdDpbXSxcclxuXHQgIHN1YlBhbmVsTGlzdDpbXSxcclxuXHQgIHN1YkNsYXNzR3JpZFN0eWxlOltdLFxyXG5cdCAgcG9wdXBUeXBlOlwiY2VudGVyXCIsXHJcblx0ICBjaGVja19saXN0Ont9LFxyXG5cdCAgXHJcblx0ICBmb2N1c01hdGVyaWE6ZmFsc2UsXHJcblx0ICBoZWFkX3N0eWxlZGVmOntcclxuXHRcdGZvcm06e1xyXG5cdFx0XHRpdGVtczpbXVxyXG5cdFx0fVxyXG5cdCAgfSxcbiAgICB9O1xuICB9LFxyXG4gIG9uTG9hZChvcHRpb25zKSB7XHJcblx0Ly8gY29uc29sZS5sb2cob3B0aW9ucyk7XHJcblx0dW5pLnNldE5hdmlnYXRpb25CYXJUaXRsZSh7IHRpdGxlOiBvcHRpb25zLnRpdGxlbmFtZX0pOyAvL+iuvue9rumhtumDqOagh+mimCBcclxuXHR0aGlzLiRkYXRhLnBhcmFtID0gSlNPTi5wYXJzZShvcHRpb25zLnBhcmFtKTtcclxuXHR0aGlzLiRkYXRhLnRpdGxlID0gdGhpcy4kZGF0YS5wYXJhbS5BZGRfQnRuTmFtZT90aGlzLiRkYXRhLnBhcmFtLkFkZF9CdG5OYW1lOm9wdGlvbnMudGl0bGVuYW1lOyAvL+iuvue9ruaMiemSruaWh+Wtl1xyXG5cdFxyXG5cdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEucGFyYW0pO1xyXG5cdCAvL+iOt+WPluaVsOaNruexu+eahOiHquWumuS5ieihqOWNleWPguaVsFxyXG5cdHRoaXMuSGVhZF9VSVN0eWxlR2V0SW5mbyh0aGlzLnBhcmFtLkRhdGFDbHMuaWQsdGhpcy5wYXJhbS5VSV9TdHlsZS5JRCk7XHJcblx0XHJcblx0Ly/pobXpnaLliJ3lp4vljJbojrflj5bnhKbngrlcclxuXHQvLyB0aGlzLmZvY3VzTWF0ZXJpYT10cnVlOyBcclxuICB9LFx0XG4gIG1ldGhvZHM6IHtcbiAgICBhc3luYyBIZWFkX1VJU3R5bGVHZXRJbmZvKGNsYXNzX2lkLHN0eWxlX2lkKXsgICAvL+iOt+WPluiHquWumuS5ieihqOWNleagt+W8j1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdGNsYXNzX2lkOmNsYXNzX2lkLFxyXG5cdFx0XHR1aV9zdHlsZV9pZDpzdHlsZV9pZCxcclxuXHRcdH07XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnVUlTdHlsZUdldEluZm8nLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgc3R5bGVkZWY9XCJcIjtcclxuXHRcdFx0XHRpZihyZXQucmVzdWx0LnN0eWxlX2RlZil7XHJcblx0XHRcdFx0ICAgICAvL21vYm94MueahHN0eWxlX2RlZuaYr2pzb27lrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIHN0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWYucmVwbGFjZSgvXFxcXC9nLFwiXCIpO1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDPnmoRzdHlsZV9kZWbmmK9iYXNlNjTlrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIGlmKCFyZXQucmVzdWx0LnN0eWxlX2RlZi5pbmNsdWRlcygnXCInKSkgc3R5bGVkZWYgPSBCYXNlNjQuZGVjb2RlKHJldC5yZXN1bHQuc3R5bGVfZGVmKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0JHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmPyBKU09OLnBhcnNlKHN0eWxlZGVmKToge307XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZik7XHJcblx0XHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmZvckVhY2goYXN5bmMgKGVsZSxpbmRleCkgPT4ge1xyXG5cdFx0XHRcdCAgICBpZihlbGUudXNlRGljdD09dHJ1ZSl7IC8v5Yik5patdXNlRGljdOaYr+WQpuS9v+eUqOWtl+WFuFxyXG5cdFx0XHRcdCAgICAgICAgYXdhaXQgdGhpcy5EaWN0R2V0SW5mbyhlbGUuYmluZC5kaWN0LGluZGV4LCdtYXN0Jyk7XHJcblx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xXCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcbiAgICAgICAgXHJcbiAgICB9LFxuICAgIGFzeW5jIERpY3RHZXRJbmZvKGRpY3QsaW5kZXgsdHlwZSl7IC8vTW9ib3gz5b6X5Yiw5b6X5Yiw5a2X5YW45L+h5oGv5a2X5YW46aG55YiX6KGoXHJcblx0XHR0aGlzLmRhdGE9W107XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvID17XHJcblx0XHRcdGRpY3RfaWQ6IGRpY3QuaWQsXHJcblx0XHRcdGRpY3RfbmFtZTogZGljdC5uYW1lXHJcblx0XHR9O1xyXG5cdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RpY3RHZXRJbmZvJyxkYXRhSW5mbykudGhlbihhc3luYyAoc3VjY2Vzcyk9PntcclxuXHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdGlmIChzdWNjZXNzLmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRpZih0eXBlPT0nbWFzdCcpe1xyXG5cdFx0XHRcdFx0dmFyIGxpc3Q9W107XHJcblx0XHRcdFx0XHR2YXIgaXRlbU5hbWU9Jyc7XHJcblx0XHRcdFx0XHRzdWNjZXNzLnJlc3VsdC5kaWN0X2l0ZW1fbGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcblx0XHRcdFx0XHQgICAgaWYoaXRlbS5pc19kZWZhdWx0PT0nMScpXHJcblx0XHRcdFx0XHQgICAgICAgIGl0ZW1OYW1lID0gaXRlbS5uYW1lO1xyXG5cdFx0XHRcdFx0ICAgIGxpc3QucHVzaCh7XHJcblx0XHRcdFx0XHQgICAgICAgIHRleHQ6aXRlbS52YWx1ZSxcclxuXHRcdFx0XHRcdCAgICAgICAgdmFsdWU6aXRlbS5uYW1lLFxyXG5cdFx0XHRcdFx0ICAgIH0pO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHQvL+aciem7mOiupOWAvO+8jOaYvuekuum7mOiupOWAvFxyXG5cdFx0XHRcdFx0aWYoaXRlbU5hbWUpe1xyXG5cdFx0XHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXNbaW5kZXhdLnZhbHVlPWl0ZW1OYW1lO1xyXG5cdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tpbmRleF0uZmllbGRJZDtcclxuXHRcdFx0XHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gaXRlbU5hbWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXNbaW5kZXhdLmRpY3Q9bGlzdDtcclxuXHRcdFx0XHRcdC8vICR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tpbmRleF0uZGljdGl0ZW09c3VjY2Vzcy5yZXN1bHQ7XHJcblx0XHRcdFx0XHQvLyB0aGlzLiRzdG9yZS5jb21taXQoXCJjbGFzc0F0dHJMaXN0XCIsICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QpO1xyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0Ly8gJHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdFtpbmRleF0uYXR0cl9saXN0W2tleV0uZGljdGl0ZW09c3VjY2Vzcy5yZXN1bHQ7XHJcblx0XHRcdFx0XHQvLyB0aGlzLiRzdG9yZS5jb21taXQoXCJzdWJDbGFzc0F0dHJMaXN0XCIsICR0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjJcIixjb250ZW50OnN1Y2Nlc3MuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuM1wiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHRcclxuXHRvbnRhcChpdGVtKXsgLy/miavnoIHlip/og71cclxuXHRcdGdldEFwcCgpLm9uU2NhbigocmVzdWx0KT0+e1xyXG5cdFx0XHQvL2NvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcclxuXHRcdFx0dW5pLmhpZGVLZXlib2FyZCgpO1xyXG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRjb25zb2xlLmxvZyhpdGVtKTtcclxuXHRcdFx0aWYoaXRlbS5vbGR2YWx1ZSAhPSByZXN1bHQuZGVjb2RlZGF0YSl7XHJcblx0XHRcdCAgICBpdGVtLm9sZHZhbHVlID0gcmVzdWx0LmRlY29kZWRhdGE7XHJcblx0XHRcdFx0aXRlbS52YWx1ZSA9IHJlc3VsdC5kZWNvZGVkYXRhO1xyXG5cdFx0XHRcdHZhciBhdHRyID0gaXRlbS5maWVsZElkO1xyXG5cdFx0XHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IHJlc3VsdC5kZWNvZGVkYXRhO1xyXG5cdFx0XHRcdGlmKHJlc3VsdC5kZWNvZGVkYXRhKXsgLy/nrKzkuIDkuKrovpPlhaXmoYbkuI3kuLrnqbpcclxuXHRcdFx0XHRcdCR0aGlzLmZvY3VzTWF0ZXJpYSA9IHRydWU7IC8v5Yid5aeL5YyW77yM56ys5LqM5Liq6L6T5YWl5qGGZm9jdXPlsZ7mgKdcclxuXHRcdFx0XHRcdC8vIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcclxuXHRcdFx0XHRcdC8vIFx0JHRoaXMuZm9jdXNNYXRlcmlhPXRydWU7IC8v56ys5LqM5Liq6L6T5YWl5qGG6I635Y+W54Sm54K5XHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcclxuXHRcdFx0XHRcdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XHJcblx0XHRcdFx0XHRcdH0sMTAwMCk7XHJcblx0XHRcdFx0XHQvLyB9LDUwMCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHZhciBldmVudGlkID0gaXRlbS5iaW5kLm9uQ2hhbmdlRXZlbnQuaWQ7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHQgICAgICAgIHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0XHQgICAgICAgIC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHRcdFx0ICAgICAgICB2YXIgcmVxID0gT2JqZWN0LmtleXMob2JqX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdFx0ICAgICAgICBcdGF0dHI6IGEsXHJcblx0XHRcdCAgICAgICAgXHR2YWw6IG9ial9hdHRyW2FdIHx8IFwiXCIsXHJcblx0XHRcdCAgICAgICAgfSkpO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdCAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0ICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHQgICAgICAgICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdCAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHQgICAgICAgICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdCAgICAgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uRGF0YUNscy5pZCxcclxuXHRcdFx0ICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdFx0ICAgICAgICAgICBhdHRyOiByZXEsXHJcblx0XHRcdFx0XHQgICBkYXRhSnNvbjpbXSxcclxuXHRcdFx0ICAgICAgICB9XHJcblx0XHRcdCAgICAgICAgdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgJycpO1xyXG5cdFx0XHQgICAgfVxyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH0sXHJcblx0b25ldmVudChpdGVtKXtcclxuXHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRjb25zb2xlLmxvZyhpdGVtKTtcclxuXHRcdGlmKGl0ZW0ub2xkdmFsdWUgIT0gaXRlbS52YWx1ZSl7XHJcblx0XHQgICAgaXRlbS5vbGR2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdGl0ZW0udmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHR2YXIgYXR0ciA9IGl0ZW0uZmllbGRJZDtcclxuXHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHljLrkuovku7bohJrmnKxcclxuXHRcdFx0dmFyIGV2ZW50aWQgPSBpdGVtLmJpbmQub25DaGFuZ2VFdmVudC5pZDsgICAvL+WGheWuueWPmOWMluWQjuS6i+S7tlxyXG5cdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0ICAgICAgICB2YXIgb2JqX2F0dHIgPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHRcdCAgICAgICAgLy8gY29uc29sZS5sb2cob2JqX2F0dHIpO1xyXG5cdFx0ICAgICAgICB2YXIgcmVxID0gT2JqZWN0LmtleXMob2JqX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdCAgICAgICAgXHRhdHRyOiBhLFxyXG5cdFx0ICAgICAgICBcdHZhbDogb2JqX2F0dHJbYV0gfHwgXCJcIixcclxuXHRcdCAgICAgICAgfSkpO1xyXG5cdFx0XHQgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdCAgICAgICBldmVudGlkOiBldmVudGlkLFxyXG5cdFx0XHQgICAgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdFx0ICAgICAgIHByb2plY3RpZDogJycsXHJcblx0XHRcdCAgICAgICByY2xzaWQ6ICcnLFxyXG5cdFx0XHQgICAgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0ICAgICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHRcdCAgICAgICBjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLFxyXG5cdFx0XHQgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdCAgICAgICBhdHRyOiByZXEsXHJcblx0XHRcdFx0ICAgZGF0YUpzb246W10sXHJcblx0XHRcdCAgICB9XHJcblx0XHRcdCAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBkYXRhX2F0dHIpO1xyXG5cdFx0ICAgIH1cclxuXHRcdH1cclxuXHRcdFxyXG5cdH0sXHJcblx0b25jaGFuZ2UoaXRlbSkge1xyXG5cdFx0Y29uc29sZS5sb2coaXRlbSk7XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0aWYoaXRlbS5vbGR2YWx1ZSAhPSBpdGVtLnZhbHVlKXtcclxuXHRcdCAgICBpdGVtLm9sZHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0dmFyIGF0dHIgPSBpdGVtLmZpZWxkSWQ7XHJcblx0XHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdHZhciBldmVudGlkID0gaXRlbS5iaW5kLm9uQ2hhbmdlRXZlbnQuaWQ7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdCAgICAgICAgLy8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xyXG5cdFx0ICAgICAgICB2YXIgb2JqX2F0dHIgPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHRcdCAgICAgICAgLy8gY29uc29sZS5sb2cob2JqX2F0dHIpO1xyXG5cdFx0ICAgICAgICB2YXIgcmVxID0gT2JqZWN0LmtleXMob2JqX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdCAgICAgICAgXHRhdHRyOiBhLFxyXG5cdFx0ICAgICAgICBcdHZhbDogb2JqX2F0dHJbYV0gfHwgXCJcIixcclxuXHRcdCAgICAgICAgfSkpO1xyXG5cdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsXHJcblx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdCAgICAgICAgXHRkYXRhSnNvbjpbXVxyXG5cdFx0ICAgICAgICB9XHJcblx0XHQgICAgICAgIHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xyXG5cdFx0ICAgIH1cclxuXHRcdH1cclxuXHRcdFxyXG5cdH0sXHJcblx0b25Nb2RlbFZhbHVlKGl0ZW0pIHsgLy/nu5HlrppNb2RlbOWAvFxyXG5cdFx0dmFyIGF0dHIgPSBpdGVtLmZpZWxkSWQ7XHJcblx0XHR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IGl0ZW0udmFsdWU7XHJcblx0XHR2YXIgb25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQ7ICAgLy/lkI7lm77moIfngrnlh7vkuovku7ZcclxuXHRcdHZhciBvblN1ZmZpeENsaWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0V2ZW50OyAgIC8v5ZCO5Zu+5qCH54K55Ye75Zue6LCDXHJcblx0XHRcclxuXHRcdGlmKCFvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudC5pZCl7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuWQjuWbvuagh+eCueWHu+S6i+S7tuS4uuepuu+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHRpZighb25TdWZmaXhDbGlja0V2ZW50LmlkKXtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi5ZCO5Zu+5qCH54K55Ye75Zue6LCD5Li656m677yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHRoaXMuJGRhdGEucG9wdXBUeXBlID0gJ3JpZ2h0J1xyXG5cdFx0Ly8gb3BlbiDmlrnms5XkvKDlhaXlj4LmlbAg562J5ZCM5ZyoIHVuaS1wb3B1cCDnu4Tku7bkuIrnu5HlrpogdHlwZeWxnuaAp1xyXG5cdFx0dGhpcy4kcmVmcy5wb3B1cC5vcGVuKCR0aGlzLnBvcHVwVHlwZSk7XHJcblx0XHRcclxuXHRcdHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybihvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudC5pZCwgJycsIG9uU3VmZml4Q2xpY2tFdmVudC5pZCwgaXRlbSk7XHJcblx0fSxcclxuXHRwb3B1cENoYW5nZShlKSB7XHJcblx0XHRjb25zb2xlLmxvZygn5b2T5YmN5qih5byP77yaJyArIGUudHlwZSArICcs54q25oCB77yaJyArIGUuc2hvdyk7XHJcblx0fSxcclxuXHRjaGVja0NoYW5nZShlKXsgLy/lvLnmoYZjaGVja+mAieaLqVxyXG5cdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQuZGF0YXNldCk7XHJcblx0XHR2YXIgaW5kZXggPSBlLnRhcmdldC5kYXRhc2V0LmluZGV4O1xyXG5cdFx0dmFyIGlzY2hlY2sgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2s7XHJcblx0XHR2YXIgZGF0YSA9IHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcztcclxuXHRcdC8vIHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcz1bXTtcclxuXHRcdGlmKHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5tdWx0aXBsZV9jaG9pY2U9PVwiMFwiKXsgLy/liKTmlq3ml7bljZXpgInov5jmmK/lpJrpgIlcclxuXHRcdFx0Zm9yKHZhciBpIGluIGRhdGEpe1xyXG5cdFx0XHRcdGRhdGFbaV0uY2hlY2s9ZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGRhdGFbaW5kZXhdLmNoZWNrPWlzY2hlY2s/ZmFsc2U6dHJ1ZTtcclxuXHRcdHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcz1kYXRhO1xyXG5cdFx0XHJcblx0fSxcclxuXHRwb3B1cF9jYW5jZWwoZSl7IC8v5by55qGG5Y+W5raIXHJcblx0XHR0aGlzLiRyZWZzLnBvcHVwLmNsb3NlKCk7XHJcblx0fSxcclxuXHRwb3B1cF9zYXZhKGUpeyAvL+W8ueahhuehruWumlxyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBpdGVtcyA9ICR0aGlzLiRkYXRhLmNoZWNrX2xpc3QuaXRlbXM7XHJcblx0XHR2YXIgZGF0YT1bXTtcclxuXHRcdHZhciBuYW1lPVwiXCI7XHJcblx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdGlmKGl0ZW1zW2ldLmNoZWNrPT10cnVlKXtcclxuXHRcdFx0XHRpZihuYW1lKVxyXG5cdFx0XHRcdFx0bmFtZSs9JzsnO1xyXG5cdFx0XHRcdG5hbWUrPWl0ZW1zW2ldLm5hbWU7XHJcblx0XHRcdFx0ZGF0YS5wdXNoKHtpZDppdGVtc1tpXS5pZCxuYW1lOml0ZW1zW2ldLm5hbWV9KTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0aWYoISR0aGlzLiRkYXRhLnBvcHVwUGFyYW0pe1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCJwb3B1cFBhcmFt5Li656m677yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0dmFyIGZpZWxkSWQgPSAkdGhpcy4kZGF0YS5wb3B1cFBhcmFtLml0ZW0uZmllbGRJZDtcclxuXHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IG5hbWU7XHJcblx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtcy5sZW5ndGg7IGMrKykge1xyXG5cdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tjXTtcclxuXHRcdFx0aWYoYXR0ci5maWVsZElkPT1maWVsZElkKXtcclxuXHRcdFx0XHRhdHRyLnZhbHVlID0gbmFtZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0Y29uc29sZS5sb2coZGF0YSk7XHJcblx0XHR2YXIgY2FsbGJhY2tfZXZlbnRpZCA9ICR0aGlzLiRkYXRhLnBvcHVwUGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcclxuXHRcdHZhciBpbmZvID0ge1xyXG5cdFx0ICAgIGV2ZW50aWQ6IGNhbGxiYWNrX2V2ZW50aWQsXHJcblx0XHQgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdCAgICBwcm9qZWN0aWQ6ICcnLFxyXG5cdFx0ICAgIHJjbHNpZDogJycsXHJcblx0XHQgICAgcm9iamlkOiAnJyxcclxuXHRcdCAgICB1c2VybG9naW46ICcnLFxyXG5cdFx0ICAgIGNsc2lkOiAkdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLFxyXG5cdFx0ICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0ICAgIGF0dHI6ICR0aGlzLiRkYXRhLnBvcHVwUGFyYW0ucmVxLFxyXG5cdFx0ICAgIGRhdGFKc29uOiBkYXRhXHJcblx0XHR9XHJcblx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgJHRoaXMuJGRhdGEucG9wdXBQYXJhbS5kYXRhX2F0dHIpO1xyXG5cdFx0dGhpcy4kcmVmcy5wb3B1cC5jbG9zZSgpO1xyXG5cdH0sXHJcblx0XHJcblx0RGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sZGF0YV9hdHRyKXtcclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZW52aXJvbWVudCA9IHtcclxuXHRcdCAgICAnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xyXG5cdFx0ICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXHJcblx0XHQgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cclxuXHRcdCAgICBidXR0b25fbmFtZTogJ+aWsOWinicsXHJcblx0XHQgICAgbWFzdGVyOiB7XHJcblx0XHQgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxyXG5cdFx0ICAgICAgICAvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXHJcblx0XHQgICAgfVxyXG5cdFx0fTtcclxuXHRcdGlmKGRhdGFfYXR0cil7XHJcblx0XHRcdGVudmlyb21lbnQuZWRpdF9kbGcgPSB7XHJcblx0XHRcdCAgICB0eXBlOiAnc21hbGwnLC8v5bCP56qX5Y+jXHJcblx0XHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLC8v5b2T5YmN5pWw5o2u57G7aWRcclxuXHRcdFx0fVxyXG5cdFx0XHRpZiAoZGF0YV9hdHRyKSB7XHJcblx0XHRcdCAgICBlbnZpcm9tZW50LmVkaXRfZGxnLmZvcm1fY29udHJvbCA9IHsvL+aJgOWxnueahOihqOWNleaOp+S7tlxyXG5cdFx0XHQgICAgICAgIG5hbWU6IGRhdGFfYXR0ci5OYW1lLC8v5a2X5q615bGe5oCnXHJcblx0XHRcdCAgICAgICAgdGV4dDogZGF0YV9hdHRyLkRpc3BOYW1lLC8v5pi+56S65paH5pysXHJcblx0XHRcdCAgICAgICAgZ3JvdXBfbmFtZTogZGF0YV9hdHRyLkdyb3VwTmFtZSwvL+WxnuaAp+e7hFxyXG5cdFx0XHQgICAgICAgIHR5cGU6IGRhdGFfYXR0ci5UeXBlLC8v5a2X5q6157G75Z6LXHJcblx0XHRcdCAgICAgICAgcmVhZG9ubHk6IGRhdGFfYXR0ci5SZWFkT25seSwvL+aYr+WQpuWPquivu1xyXG5cdFx0XHQgICAgICAgIGJ1dHRvbl9pbWc6IGRhdGFfYXR0ci5idXR0b25faW1nLC8v5byV55So5oyJ6ZKu55qE5Zu+5qCHXHJcblx0XHRcdCAgICAgICAgYnV0dG9uX3Rvb2x0aXA6IGRhdGFfYXR0ci5idXR0b25fdG9vbHRpcC8v5byV55So5oyJ6ZKu55qEdG9vbHRpcFxyXG5cdFx0XHQgICAgfVxyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdC8vIHZhciBkYXRhSW5mbyA9IHtcclxuXHRcdC8vICAgICBlZHR5cGU6IGluZm8uZWR0eXBlLCBldmVudGlkOiBpbmZvLmV2ZW50aWQsIHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQucmVwbGFjZSgneycsJycpLnJlcGxhY2UoJ30nLCcnKSxcclxuXHRcdC8vICAgICByY2xzaWQ6IGluZm8ucmNsc2lkLCByb2JqaWQ6IGluZm8ucm9iamlkLCB1c2VybG9naW46IGluZm8udXNlcmxvZ2luLCBjbHNpZDogaW5mby5jbHNpZCwgb2JqaWQ6IGluZm8ub2JqaWQsXHJcblx0XHQvLyAgICAgYXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSwgZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCksIGlucHV0cGFyYW1ldGVyOiBcIlwiLFxyXG5cdFx0Ly8gXHRnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0ciksIGRhdGFKc29uOkpTT04uc3RyaW5naWZ5KGluZm8uZGF0YUpzb24pXHJcblx0XHQvLyB9XHJcblx0XHRlbnZpcm9tZW50ID0gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSk7Ly/lsIblrZfnrKbkuLLovazmjaLkuLpiYXNlNjTnvJbnoIFcclxuXHRcdHZhciBpbnB1dF9wYXJhbSA9IEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSk7Ly/lsIblrZfnrKbkuLLovazmjaLkuLpiYXNlNjTnvJbnoIFcclxuXHRcdHZhciBnbG9iYWxfYXR0ciA9IEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cikpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0XHRpZihpbmZvLmRhdGFKc29uKVxyXG5cdFx0XHRpbmZvLmRhdGFKc29uID0gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeShpbmZvLmRhdGFKc29uKSk7Ly/lsIblrZfnrKbkuLLovazmjaLkuLpiYXNlNjTnvJbnoIFcclxuXHRcdHZhciBvYmpfYXR0cj17fTtcclxuXHRcdGluZm8uYXR0ci5mb3JFYWNoKGl0ZW09PntcclxuXHRcdFx0b2JqX2F0dHJbaXRlbS5hdHRyXSA9IGl0ZW0udmFsO1xyXG5cdFx0fSk7XHJcblx0XHRpZighaW5mby5ldmVudGlkLmluY2x1ZGVzKCd7JykpIGluZm8uZXZlbnRpZCA9ICd7JytpbmZvLmV2ZW50aWQrJ30nO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdCAgZWRfdHlwZTogaW5mby5lZHR5cGUsXHJcblx0XHQgIHN0YXJ0X3RyYW5zYWN0aW9uOiB0cnVlLFxyXG5cdFx0ICBjbGFzc19pZDogaW5mby5jbHNpZCxcclxuXHRcdCAgY2xhc3NfbmFtZTogJycsXHJcblx0XHQgIGV2ZW50X2lkOiBpbmZvLmV2ZW50aWQsXHJcblx0XHQgIGV2ZW50X25hbWU6ICcnLFxyXG5cdFx0ICBkYXRhX29ial9pZDogaW5mby5vYmppZCxcclxuXHRcdCAgb2JqX2F0dHI6IG9ial9hdHRyLFxyXG5cdFx0ICBwcmpfaWQ6IGluZm8ucHJvamVjdGlkLFxyXG5cdFx0ICByZWZfY2xzX2lkOiBpbmZvLnJjbHNpZCxcclxuXHRcdCAgcmVsX29ial9pZDogaW5mby5yb2JqaWQsXHJcblx0XHQgIHVzZXJfbG9naW46IGluZm8udXNlcmxvZ2luLFxyXG5cdFx0ICBkYXRhX2pzb246IGluZm8uZGF0YUpzb24sXHJcblx0XHQgIGNvbXBvc2VfaW5mbzogJycsXHJcblx0XHQgIGV4dF9pbmZvOiBlbnZpcm9tZW50LFxyXG5cdFx0ICBnbG9iYWxfYXR0cjogZ2xvYmFsX2F0dHIsXHJcblx0XHQgIGlucHV0X3BhcmFtOiBpbnB1dF9wYXJhbSxcclxuXHRcdH07XHJcblx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHQvLyByZXR1cm47XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgncnVuQ3VzdG9tRXZlbnQnLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdGlmIChzdWNjZXNzLmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgZGF0YSA9IHN1Y2Nlc3MucmVzdWx0O1xyXG5cdFx0XHRcdGlmIChkYXRhLnJldCAhPSAwKSB7XHJcblx0XHRcdFx0ICAgIHZhciB0aXAgPSBkYXRhLmVycl9pbmZvID8gdHlwZW9mIGRhdGEuZXJyX2luZm8gPT0gJ3N0cmluZycgPyBkYXRhLmVycl9pbmZvIDogZGF0YS5lcnJfaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0ICAgIGlmIChkYXRhLnJldCA9PSA4MDEpIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdCAgICBlbHNlIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwKycs5o+Q56S6OicrZGF0YS5yZXQsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2VcclxuXHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdHZhciB0aXAgPSBkYXRhLmluZm8gPyB0eXBlb2YgZGF0YS5pbmZvID09ICdzdHJpbmcnID8gZGF0YS5pbmZvIDogZGF0YS5pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHRcdGlmICh0aXApIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcclxuXHRcdFx0XHRcdGlmIChhY3Rpb25saXN0KSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGFjdGlvbmxpc3QpO1xyXG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFjdGlvbmxpc3QubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdFx0XHR2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtpXTtcclxuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gYWN0aW9uLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tjXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHIubmFtZSE9J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBpZihhdHRyLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdGZvcih2YXIgZCBpbiByZXN1bHRbaV0uY2hvaWNlX2xpc3Qpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiQ05fU19WQUxVRVwiOnZhbCxcInRleHRcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLmRpY3QgPSBkaWN0SXRlbUxpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihhdHRyLm5hbWU9PSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgYXR0ci5zZXR0aW5nLmNvbExpc3QuZm9yRWFjaChjb2w9PntcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgaWYoY29sLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0dmFyIGRpY3RJdGVtTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Zm9yKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcIkNOX1NfTkFNRVwiOnZhbCxcIkNOX1NfVkFMVUVcIjp2YWwsXCJ0ZXh0XCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wuZGljdCA9IGRpY3RJdGVtTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXNbY107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coYXR0cltqXS5OYW1lKyc9PScrcmVzdWx0W2ldLmF0dHIpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8v5Yik5pat6KGo5Y2V6YeM5piv5ZCm5pyJ6L+U5Zue5a2X5q6177yM5rKh5pyJ5bCx6KOF6L295YiwbW9kZWzph4zvvIzngrnlh7vnoa7lrprmj5DkuqTnmoTml7blgJnluKbkuIrov5nkupvmlbDmja5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZigkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbcmVzdWx0W2ldLmF0dHJdPT11bmRlZmluZWQpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbcmVzdWx0W2ldLmF0dHJdPXJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly/liKTmlq3mmK/lkKbmmK/moIXmoLzooajljZVcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZihhdHRyLm5hbWUhPSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIGlmKGF0dHIuZmllbGRJZD09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLnZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIub2xkdmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci5vbGR2YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHIuZmllbGRJZF0gPXJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYoYXR0ci5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBhdHRyLnNldHRpbmcuY29sTGlzdC5mb3JFYWNoKGNvbD0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIGlmKGNvbC5maWVsZElkPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wudmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLm9sZHZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2NvbC5maWVsZElkXSA9cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGRhdGEuYWN0aW9uW2ldLmFjdGlvbl90eXBlID09ICdzZXRfZ2xvYmFsX2F0dHInKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5nbG9iYWxfYXR0ciA9IGRhdGEuYWN0aW9uW2ldLnZhbHVlIHx8IFtdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0Ly8gdmFyIGhlYWRfc3R5bGVkZWYgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KCR0aGlzLmhlYWRfc3R5bGVkZWYpKTtcclxuXHRcdFx0XHRcdC8vICR0aGlzLmhlYWRfc3R5bGVkZWY9W107XHJcblx0XHRcdFx0XHQvLyAkdGhpcy5oZWFkX3N0eWxlZGVmID0gaGVhZF9zdHlsZWRlZjtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCR0aGlzLmhlYWRfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xyXG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tjXTtcclxuXHRcdFx0XHRcdFx0XHRcdC8v5Yik5pat6KGo5Y2V6YeM5piv5ZCm5pyJ6L+U5Zue5a2X5q6177yM5rKh5pyJ5bCx6KOF6L295YiwbW9kZWzph4zvvIzngrnlh7vnoa7lrprmj5DkuqTnmoTml7blgJnluKbkuIrov5nkupvmlbDmja5cclxuXHRcdFx0XHRcdFx0XHRcdGlmKCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFtyZXN1bHRbaV0uYXR0cl09PXVuZGVmaW5lZCl7XHJcblx0XHRcdFx0XHRcdFx0XHQgIFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW3Jlc3VsdFtpXS5hdHRyXT1yZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHQvL+WIpOaWreaYr+WQpuaYr+agheagvOihqOWNlVxyXG5cdFx0XHRcdFx0XHRcdFx0aWYoYXR0ci5uYW1lIT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHQgIGlmKGF0dHIuZmllbGRJZD09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIudmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLm9sZHZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLm9sZHZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyLmZpZWxkSWRdID1yZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihhdHRyLm5hbWU9PSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgYXR0ci5zZXR0aW5nLmNvbExpc3QuZm9yRWFjaChjb2w9PntcclxuXHRcdFx0XHRcdFx0XHRcdCAgICBpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgaWYoY29sLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLnZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wudmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC5vbGR2YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2NvbC5maWVsZElkXSA9cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0XHRcdFx0XHRcdGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxyXG5cdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzNcIixjb250ZW50OnN1Y2Nlc3MuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzMuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHREYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKGV2ZW50aWQsZGF0YV9hdHRyLGJ1dHRvbl9jYWxsYmFjayxpdGVtKXtcclxuXHRcdHZhciBlbnZpcm9tZW50ID0ge1xyXG5cdFx0ICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4ZcclxuXHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdCAgICBtYXN0ZXI6IHtcclxuXHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHQgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcclxuXHRcdCAgICB9XHJcblx0XHR9O1xyXG5cdFx0dmFyIG9ial9hdHRyID0gdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWw7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhvYmpfYXR0cik7XHJcblx0XHR2YXIgcmVxID0gT2JqZWN0LmtleXMob2JqX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdFx0YXR0cjogYSxcclxuXHRcdFx0dmFsOiBvYmpfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0fSkpO1xyXG5cdFx0aWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aCA+IDApIHtcclxuXHRcdCAgICBmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaSsrKSB7XHJcblx0XHQgICAgICAgIGlmICghcmVxLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0ICAgICAgICAgICAgcmV0dXJuIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIgPT0gcy5uYW1lXHJcblx0XHQgICAgICAgIH0pLmxlbmd0aCkge1xyXG5cdFx0ICAgICAgICAgICAgbGVuZ3RoID0gMTtcclxuXHRcdCAgICAgICAgICAgIHJlcS5wdXNoKHsgJ2F0dHInOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyLCAndmFsJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0udmFsdWUgfSk7XHJcblx0XHQgICAgICAgIH1cclxuXHRcdCAgICB9XHJcblx0XHR9XHJcblx0XHR2YXIgZXh0aW5mbyA9IGVudmlyb21lbnQ7XHJcblx0XHRleHRpbmZvLmVkaXRfZGxnID0ge1xyXG5cdFx0ICAgIHR5cGU6ICdzbWFsbCcsLy/lsI/nqpflj6NcclxuXHRcdCAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLC8v5b2T5YmN5pWw5o2u57G7aWRcclxuXHRcdH1cclxuXHRcdC8vIHZhciBkYXRhSW5mbyA9IHtcclxuXHRcdC8vIFx0ZWR0eXBlOiAgXCIwXCIsIGV2ZW50aWQ6IGV2ZW50aWQsIHByb2plY3RpZDogJycscmNsc2lkOiAnJywgcm9iamlkOiAnJywgdXNlcmxvZ2luOiAnJywgXHJcblx0XHQvLyBcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsIG9iamlkOiAnJyxhdHRyOiBKU09OLnN0cmluZ2lmeShyZXEpLCBcclxuXHRcdC8vIFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZXh0aW5mbyksIGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxyXG5cdFx0Ly8gfVxyXG5cdFx0ZXh0aW5mbyA9IEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoZXh0aW5mbykpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0XHR2YXIgZ2xvYmFsX2F0dHIgPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpKTsvL+WwhuWtl+espuS4sui9rOaNouS4umJhc2U2NOe8lueggVxyXG5cdFx0dmFyIG9ial9hdHRyPXt9O1xyXG5cdFx0cmVxLmZvckVhY2goaXRlbT0+e1xyXG5cdFx0XHRvYmpfYXR0cltpdGVtLmF0dHJdID0gaXRlbS52YWw7XHJcblx0XHR9KTtcclxuXHRcdGlmKCFldmVudGlkLmluY2x1ZGVzKCd7JykpIGV2ZW50aWQ9ICd7JysgZXZlbnRpZCArJ30nO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdCAgZWRfdHlwZTogXCIwXCIsXHJcblx0XHQgIHN0YXJ0X3RyYW5zYWN0aW9uOiB0cnVlLFxyXG5cdFx0ICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLFxyXG5cdFx0ICBjbGFzc19uYW1lOiAnJyxcclxuXHRcdCAgZXZlbnRfaWQ6IGV2ZW50aWQsXHJcblx0XHQgIGV2ZW50X25hbWU6ICcnLFxyXG5cdFx0ICBkYXRhX29ial9pZDogJycsXHJcblx0XHQgIG9ial9hdHRyOiBvYmpfYXR0cixcclxuXHRcdCAgcHJqX2lkOiAnJyxcclxuXHRcdCAgcmVmX2Nsc19pZDogJycsXHJcblx0XHQgIHJlbF9vYmpfaWQ6ICcnLFxyXG5cdFx0ICB1c2VyX2xvZ2luOiAnJyxcclxuXHRcdCAgZGF0YV9qc29uOiAnJyxcclxuXHRcdCAgY29tcG9zZV9pbmZvOiAnJyxcclxuXHRcdCAgZXh0X2luZm86IGV4dGluZm8sXHJcblx0XHQgIGdsb2JhbF9hdHRyOiBnbG9iYWxfYXR0cixcclxuXHRcdCAgaW5wdXRfcGFyYW06ICcnLFxyXG5cdFx0fTtcclxuXHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdC8vIHJldHVybjtcclxuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdydW5DdXN0b21FdmVudCcsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0aWYgKHN1Y2Nlc3MuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBkYXRhID0gc3VjY2Vzcy5yZXN1bHQ7XHJcblx0XHRcdFx0aWYgKGRhdGEucmV0ICE9IDApIHtcclxuXHRcdFx0XHQgICAgdmFyIHRpcCA9IGRhdGEuZXJyX2luZm8gPyB0eXBlb2YgZGF0YS5lcnJfaW5mbyA9PSAnc3RyaW5nJyA/IGRhdGEuZXJyX2luZm8gOiBkYXRhLmVycl9pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHQgICAgaWYgKGRhdGEucmV0ID09IDgwMSkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytkYXRhLnJldCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0dmFyIHRpcCA9IGRhdGEuaW5mbyA/IHR5cGVvZiBkYXRhLmluZm8gPT0gJ3N0cmluZycgPyBkYXRhLmluZm8gOiBkYXRhLmluZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdFx0aWYgKHRpcCkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHRpZiAoZGF0YSAhPSBcIlwiKSB7XHJcblx0XHRcdFx0XHR2YXIgYWN0aW9ucyA9IGRhdGEuYWN0aW9uO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ucyk7XHJcblx0XHRcdFx0XHRpZiAoYWN0aW9ucykge1xyXG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFjdGlvbnMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdFx0XHR2YXIgYWN0aW9uID0gYWN0aW9uc1tpXTtcclxuXHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gYWN0aW9uLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdHZhciBlbnZpcm9tZW50ID0gSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCk7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9wYW5lbCcpIHtcclxuXHRcdFx0XHRcdFx0XHQgICB2YXIgZCA9IGRpYWxvZyh7XHJcblx0XHRcdFx0XHRcdFx0XHQgICB0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6JyxcclxuXHRcdFx0XHRcdFx0XHRcdCAgIGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXHJcblx0XHRcdFx0XHRcdFx0ICAgfSk7XHJcblx0XHRcdFx0XHRcdFx0ICAgZC5zaG93KCk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9zZWxlY3RfdXNlcmRsZycpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHZhciBzdHlsZSA9IHZhbC5zdHlsZTtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIHN0eWxlID09ICd1c2VyJyA/ICfpgInmi6nkurrlkZgnIDogc3R5bGUgPT0gJ2RlcGFydG1lbnQnID8gJ+mAieaLqemDqOmXqCcgOiBzdHlsZSA9PSAncm9sZScgPyAn6YCJ5oup6KeS6ImyJyA6ICcnXHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHBhcmFtPXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aXRlbTogaXRlbSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnV0dG9uX2NhbGxiYWNrOmJ1dHRvbl9jYWxsYmFjayxcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxOnJlcSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YV9hdHRyOmRhdGFfYXR0clxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR1cmw6Jy4uL3NlbHBzbi9pbmRleD9tdWxpdD1mYWxzZSZwYXJhbT0nK0pTT04uc3RyaW5naWZ5KHBhcmFtKSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRzOntcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSxwYXJhbSl7IFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocGFyYW0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZGF0YSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgY2FsbGJhY2tfZXZlbnRpZCA9IHBhcmFtLmJ1dHRvbl9jYWxsYmFjay50cmltKCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogY2FsbGJhY2tfZXZlbnRpZCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBwYXJhbS5yZXEsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlucHV0cGFyYW1ldGVyOiBkYXRhLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRhSnNvbjpbXSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBwYXJhbS5kYXRhX2F0dHIpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XHRcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX2RhdGFfcXVlcnlfZGxnJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIGQgPSBkaWFsb2coe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6JyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcclxuXHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0ZC5zaG93KCk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9jb21tb25fZGxnJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0XHRcdFx0XHRcdGlmKHZhbC5jb21tb25fZGxnX2lkID09ICdjaGVja19saXN0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAkdGhpcy4kZGF0YS5jaGVja19saXN0PSB2YWwuY29uZmlnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgaWYodmFsLmNvbmZpZy5hcHBlYXJfc3R5bGUgPT0gJ3NpZGVzbGlwJykgLy/liKTmlq3mmK/lkKbmmK/kvqfmu5FcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5wb3B1cFR5cGUgPSAncmlnaHQnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgZWxzZVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnBvcHVwVHlwZSA9ICdjZW50ZXInXHJcblx0XHRcdFx0XHRcdFx0XHQgICAvLyBvcGVuIOaWueazleS8oOWFpeWPguaVsCDnrYnlkIzlnKggdW5pLXBvcHVwIOe7hOS7tuS4iue7keWumiB0eXBl5bGe5oCnXHJcblx0XHRcdFx0XHRcdFx0XHQgICAkdGhpcy4kcmVmcy5wb3B1cC5vcGVuKCR0aGlzLiRkYXRhLnBvcHVwVHlwZSk7XHJcblx0XHRcdFx0XHRcdFx0XHQgICB2YXIgcG9wdXBQYXJhbT17XHJcblx0XHRcdFx0XHRcdFx0XHRcdGl0ZW06IGl0ZW0sXHJcblx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvbl9jYWxsYmFjazpidXR0b25fY2FsbGJhY2ssXHJcblx0XHRcdFx0XHRcdFx0XHRcdHJlcTpyZXEsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGRhdGFfYXR0cjpkYXRhX2F0dHJcclxuXHRcdFx0XHRcdFx0XHRcdCAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdCAgICR0aGlzLiRkYXRhLnBvcHVwUGFyYW09IHBvcHVwUGFyYW07XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9wcm9qZWN0X3F1ZXJ5X2RsZycpIHtcclxuXHRcdFx0XHRcdFx0XHRcdC8vY29uc29sZS5sb2coYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSk7XHJcblx0XHRcdFx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKGFjdGlvbi52YWx1ZS5tdWxpdF9zZWxlY3QpO1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHByaVJlbCA9ICctMSc7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5YWo6YOo55u45YWzJylcclxuXHRcdFx0XHRcdFx0XHRcdFx0cHJpUmVsID0gJzAnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR6LSf6LSj55qE6aG555uuJylcclxuXHRcdFx0XHRcdFx0XHRcdFx0cHJpUmVsID0gJzEnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5Yib5bu655qEJylcclxuXHRcdFx0XHRcdFx0XHRcdFx0cHJpUmVsID0gJzInO1xyXG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYWN0aW9uLnZhbHVlLnNlbGVjdF9yYW5nZSA9PSAn5oiR5Y+C5LiO55qEJyB8fCBhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LliqDnmoQnKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnMyc7XHJcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlhbPms6jnmoQnKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnNCc7XHJcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHkuIvlsZ7nmoTpobnnm64nKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnNSc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0XHRcdFx0XHRcdHZhciBwYXJhbV89e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpdGVtOiBpdGVtLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRidXR0b25fY2FsbGJhY2s6YnV0dG9uX2NhbGxiYWNrLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXE6cmVxXHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHVybDonLi4vc2VsUHJqL2luZGV4P3JlbGF0aW9uPScrcHJpUmVsKycmcGFyYW09JytKU09OLnN0cmluZ2lmeShwYXJhbV8pLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRldmVudHM6e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEFkZFBlcihkYXRhLHBhcmFtKXsgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IHBhcmFtLml0ZW0uZmllbGRJZDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IGRhdGFbMF0uSUQrJzsnK2RhdGFbMF0uTmFtZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbHVlPWRhdGFbMF0uTmFtZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWxJRD1kYXRhWzBdLklEKyc7JytkYXRhWzBdLk5hbWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgY2FsbGJhY2tfZXZlbnRpZCA9IHBhcmFtLmJ1dHRvbl9jYWxsYmFjay50cmltKCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2FsbGJhY2tfZXZlbnRpZCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRldmVudGlkOiBjYWxsYmFja19ldmVudGlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVkdHlwZTogXCIyXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiBkYXRhWzBdLklELFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJjbHNpZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyb2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsc2lkOiAkdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IHBhcmFtLnJlcSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRhSnNvbjpbXSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdHZhciBkID0gZGlhbG9nKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXHJcblx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRcdGQuc2hvdygpO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6NS4yXCIsY29udGVudDogJ+iwg+eUqCBiZWZvcmVfY2xpY2tfYnV0dG9uIOiEmuacrOi/lOWbnuepuu+8jGV2ZW50X2lkJyArIGV2ZW50aWQsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzVcIixjb250ZW50OnN1Y2Nlc3MuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekujUuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHRcclxuXHQvL+ehruWumlxyXG5cdHNhdmEoKXtcclxuXHRcdC8vIGlmICh0aGlzLiRkYXRhLmVkaXRfb2tfZXZlbnQpXHJcblx0XHQvLyBcdHRoaXMuT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoKTtcclxuXHRcdC8vIGVsc2VcclxuXHRcdFx0dGhpcy5hZGQoKTtcclxuXHR9LFxyXG5cdGFkZCgpe1xyXG5cdFx0dW5pLnNob3dMb2FkaW5nKHtcclxuXHRcdFx0dGl0bGU6XCLliqDovb3kuK0uLi5cIixcclxuXHRcdFx0bWFzazp0cnVlXHJcblx0XHR9KTtcclxuXHRcdHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0Y29uc29sZS5sb2cob2JqX2F0dHIpO1xyXG5cdFx0Ly8gdmFyIHJlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHQvLyBcdG5hbWU6IGEsXHJcblx0XHQvLyBcdHZhbHVlOiBvYmpfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0Ly8gfSkpO1xyXG5cdFxyXG5cdFx0dmFyIGVudmlyb21lbnQgPSB7XHJcblx0XHQgICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHQgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLCAgICAgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXHJcblx0XHQgICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXHJcblx0XHQgICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdCAgICAgbWFzdGVyOiB7XHJcblx0XHQgICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uRGF0YUNscy5pZCwgXHJcblx0XHQgICAgIH1cclxuXHRcdH07XHJcblx0XHRlbnZpcm9tZW50ID0gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSk7Ly/lsIblrZfnrKbkuLLovazmjaLkuLpiYXNlNjTnvJbnoIFcclxuXHRcdFxyXG5cdFx0Ly8gY29uc29sZS5sb2cob2JqX2F0dHIpO1xyXG5cdFx0Ly8gdmFyIGRhdGFJbmZvPXtcclxuXHRcdC8vICAgICBjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLCBkYXRhX29ial9pZDogJycsIG1hc3RlcmNsc2lkOiAnJyxcclxuXHRcdC8vICAgICByZXE6IEpTT04uc3RyaW5naWZ5KHJlcSksIHVwZmlsZTogSlNPTi5zdHJpbmdpZnkoW10pLCBwb3N0X2RhdGE6IEpTT04uc3RyaW5naWZ5KHt9KSxcclxuXHRcdC8vICAgICBjb21wb3NlOiBKU09OLnN0cmluZ2lmeShbXSksIHJlZmRhdGFzdG9yZTogSlNPTi5zdHJpbmdpZnkoW10pLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgXHJcblx0XHQvLyBcdG5vdF90cmlnZ2VyX3N5c19ldmVudDogJydcclxuXHRcdC8vIH07XHJcblx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0XHRjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLFxyXG5cdFx0XHRjbGFzc19uYW1lOicnLFxyXG5cdFx0XHRtYXN0ZXJfY2xzX2lkOicnLFxyXG5cdFx0XHRtYXN0ZXJfb2JqX2lkOicnLFxyXG5cdFx0XHRjcmVhdG9yOicnLFxyXG5cdFx0XHRjcmVhdG9yX25hbWU6JycsXHJcblx0XHRcdG5vdF90cmlnZ2VyX2V2ZW50OicnLFxyXG5cdFx0XHR1cGRhdGVfZXhpc3Q6JycsXHJcblx0XHRcdHBvc3RfcHJvY2VzczonJyxcclxuXHRcdFx0ZXh0X2luZm86IGVudmlyb21lbnQsXHJcblx0XHRcdG9ial9hdHRyOiBvYmpfYXR0clxyXG5cdFx0fTtcclxuXHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdC8vIHJldHVyblxyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2NyZWF0ZURhdGFPYmonLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdFx0XHRpZiAoc3VjY2Vzcy5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IHN1Y2Nlc3MucmVzdWx0O1xyXG5cdFx0XHRcdC8vIGlmKHJlc3VsdC5yZXN1bHRfdHlwZSA9PSAwKXt9XHJcblx0XHRcdFx0aWYoc3VjY2Vzcy5yZXN1bHQuYWN0aW9uKXtcclxuXHRcdFx0XHRcdHZhciBhY3Rpb24gPSBKU09OLnBhcnNlKHN1Y2Nlc3MucmVzdWx0LmFjdGlvbik7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb24pO1xyXG5cdFx0XHRcdFx0aWYoYWN0aW9uLnJldD09JzAnKXtcclxuXHRcdFx0XHRcdFx0aWYgKGFjdGlvbi5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDon5omn6KGM6ISa5pys5aSx6LSl77yMJyArIGFjdGlvbi5yZXN1bHQsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChhY3Rpb24uaW5mbykge1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDon5omn6KGM6ISa5pys5aSx6LSl77yMJyArIGFjdGlvbi5pbmZvLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZihhY3Rpb24ucmVzdWx0X3R5cGU9PScwJyl7XHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7dGl0bGU6YWN0aW9uLnJlc3VsdCxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcclxuXHRcdFx0XHRcdFx0fSBcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdC8vIFwie1wicmV0XCI6MCwgXCJyZXN1bHRfdHlwZVwiOjAsIFwicmVzdWx0XCI6XCLliJvlu7rmiJDlip8xMjMxMjMxMjNcIixcImluZm9cIjpcIlwifVwiXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBlbHNlXHJcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHt0aXRsZTpcIuWIm+W7uuaIkOWKn++8gVwiLGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xyXG5cdFx0XHRcdC8v5Yi35pawXHJcblx0XHRcdFx0dW5pLnJlZGlyZWN0VG8oe1xyXG5cdFx0XHRcdFx0dXJsOicuLi9tb2RhbC8zMDE4XzI/cGFyYW09JytKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLnBhcmFtKStcIiZ0aXRsZW5hbWU9XCIrdGhpcy4kZGF0YS50aXRsZVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdC8vIHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vXCIsY29udGVudDpzdWNjZXNzLmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdGNhbmNlbChlKXsgLy/lj5bmtohcclxuXHRcdHVuaS5uYXZpZ2F0ZUJhY2soe1xyXG5cdFx0XHRkZWx0YToxIC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxyXG5cdFx0fSk7XHJcblx0fSxcclxuICB9LFxufTtcbjwvc2NyaXB0PlxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///150\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 _base = _interopRequireDefault(__webpack_require__(/*! ../../components/js-base64/base64.js */ 65));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n modules: {\n Base64: _base.default\n },\n data: function data() {\n return {\n title: '新增',\n param: {},\n edit_inital_event: \"\",\n //弹窗初始化事件ID\n edit_ok_event: \"\",\n //弹窗点击OK 触发事件ID\n edit_select_compose_event: \"\",\n //选择组成对象时调用\n edit_compose_cls_id: \"\",\n global_attr: [],\n refdatastore: [],\n //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n scanCodeVal: \"\",\n subClassAttrList: [],\n subPanelList: [],\n subClassGridStyle: [],\n popupType: \"center\",\n check_list: {},\n focusMateria: false,\n head_styledef: {\n form: {\n items: []\n }\n }\n };\n },\n onLoad: function onLoad(options) {\n // console.log(options);\n uni.setNavigationBarTitle({\n title: options.titlename\n }); //设置顶部标题 \n this.$data.param = JSON.parse(options.param);\n this.$data.title = this.$data.param.Add_BtnName ? this.$data.param.Add_BtnName : options.titlename; //设置按钮文字\n\n __f__(\"log\", this.$data.param, \" at pages/modal/3018_2.vue:586\");\n //获取数据类的自定义表单参数\n this.Head_UIStyleGetInfo(this.param.DataCls.id, this.param.UI_Style.ID);\n\n //页面初始化获取焦点\n // this.focusMateria=true; \n },\n\n methods: {\n Head_UIStyleGetInfo: function Head_UIStyleGetInfo(class_id, style_id) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n //获取自定义表单样式\n $this = _this;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n };\n _this.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var _$this$head_styledef$;\n var styledef = \"\";\n if (ret.result.style_def) {\n //mobox2的style_def是json字符串\n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3的style_def是base64字符串\n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.$data.head_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n // console.log($this.$data.head_styledef);\n $this.head_styledef.form.items.forEach( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(ele, index) {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n ele.show = true;\n if (!(ele.useDict == true)) {\n _context.next = 4;\n break;\n }\n _context.next = 4;\n return _this.DictGetInfo(ele.bind.dict, index, 'mast');\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n if (((_$this$head_styledef$ = $this.head_styledef.event) === null || _$this$head_styledef$ === void 0 ? void 0 : _$this$head_styledef$.length) > 0) {\n $this.head_styledef.event.forEach( /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(a) {\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(a.event_id == \"initial\")) {\n _context2.next = 3;\n break;\n }\n _context2.next = 3;\n return _this.loadInitEvent(a.scrip_id);\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return function (_x3) {\n return _ref2.apply(this, arguments);\n };\n }());\n }\n } else {\n uni.showModal({\n title: \"错误1\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误1.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 3:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n DictGetInfo: function DictGetInfo(dict, index, type) {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n //Mobox3得到得到字典信息字典项列表\n _this2.data = [];\n $this = _this2;\n dataInfo = {\n dict_id: dict.id,\n dict_name: dict.name\n }; // console.log(dataInfo);\n _this2.$store.dispatch('DictGetInfo', dataInfo).then( /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(success) {\n var list, itemName, attr;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n __f__(\"log\", success, \" at pages/modal/3018_2.vue:644\");\n if (success.err_code == 0) {\n if (type == 'mast') {\n list = [];\n itemName = '';\n success.result.dict_item_list.forEach(function (item) {\n if (item.is_default == '1') itemName = item.name;\n list.push({\n text: item.value,\n value: item.name\n });\n });\n //有默认值,显示默认值\n if (itemName) {\n $this.head_styledef.form.items[index].value = itemName;\n attr = $this.head_styledef.form.items[index].fieldId;\n $this.head_styledef.form.model[attr] = itemName;\n }\n $this.head_styledef.form.items[index].dict = list;\n // $this.head_styledef.form.items[index].dictitem=success.result;\n // this.$store.commit(\"classAttrList\", $this.$data.classAttrList);\n } else {\n // $this.$data.subClassAttrList[index].attr_list[key].dictitem=success.result;\n // this.$store.commit(\"subClassAttrList\", $this.$data.subClassAttrList);\n }\n } else {\n uni.showModal({\n title: \"错误1.2\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 2:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n return function (_x4) {\n return _ref3.apply(this, arguments);\n };\n }()).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误1.3\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 4:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }))();\n },\n loadInitEvent: function loadInitEvent(eventid) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n $this = _this3;\n if (!eventid.includes('{')) eventid = '{' + eventid + '}';\n dataInfo = {\n ed_type: 0,\n start_transaction: true,\n class_id: _this3.param.DataCls.id,\n event_id: eventid\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3018_2.vue:688\");\n // return;\n _this3.$store.dispatch('runCustomEvent', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3018_2.vue:691\");\n if (success.err_code == 0) {\n var data = success.result;\n if (data.ret != 0) {\n var tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info.join('<br/>') : '';\n if (data.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + data.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = data.info ? typeof data.info == 'string' ? data.info : data.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n var actionlist = data.action;\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/3018_2.vue:705\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var c = 0; c < $this.head_styledef.form.items.length; c++) {\n var attr = $this.head_styledef.form.items[c];\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"text\": val,\n \"value\": val\n });\n }\n attr.dict = dictItemList;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"text\": val,\n \"value\": val\n });\n }\n col.dict = dictItemList;\n }\n }\n });\n }\n }\n }\n for (var c = 0; c < $this.$data.head_styledef.form.items.length; c++) {\n var attr = $this.$data.head_styledef.form.items[c];\n // console.log(attr[j].Name+'=='+result[i].attr);\n //判断表单里是否有返回字段,没有就装载到model里,点击确定提交的时候带上这些数据\n if ($this.head_styledef.form.model[result[i].attr] == undefined) {\n $this.head_styledef.form.model[result[i].attr] = result[i].value;\n }\n //判断是否是栅格表单\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n attr.value = '';\n attr.oldvalue = '';\n attr.value = result[i].value;\n attr.oldvalue = result[i].value;\n $this.head_styledef.form.model[attr.fieldId] = result[i].value;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n col.value = '';\n col.oldvalue = '';\n col.value = result[i].value;\n col.oldvalue = result[i].value;\n $this.head_styledef.form.model[col.fieldId] = result[i].value;\n }\n }\n });\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_dlg_attr_show') {\n var result = action.value;\n result.forEach( /*#__PURE__*/function () {\n var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(attr, key) {\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n $this.$data.head_styledef.form.items.forEach( /*#__PURE__*/function () {\n var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6(ele, index) {\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n //判断是否是栅格表单\n if (ele.name != 'Layout') {\n if (ele.fieldId == attr.attr) {\n ele.show = attr.show;\n }\n } else if (ele.name == 'Layout') {\n ele.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == attr.attr) {\n col.show = attr.show;\n }\n }\n });\n }\n case 1:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }));\n return function (_x7, _x8) {\n return _ref5.apply(this, arguments);\n };\n }());\n case 1:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n return function (_x5, _x6) {\n return _ref4.apply(this, arguments);\n };\n }());\n var head_styledef = JSON.parse(JSON.stringify($this.$data.head_styledef));\n $this.$data.head_styledef = [];\n $this.$data.head_styledef = head_styledef;\n // console.log($this.$data.head_styledef);\n } else {\n uni.showModal({\n title: \"提示\",\n content: \"执行初始化事件失败:\" + item.action_type + '此action尚未处理!',\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误3\",\n content: \"执行初始化事件失败:\" + success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误3.1\",\n content: \"执行初始化事件失败:\" + ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 5:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8);\n }))();\n },\n ontap: function ontap(item) {\n var _this4 = this;\n //扫码功能\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n uni.hideKeyboard();\n var $this = _this4;\n __f__(\"log\", item, \" at pages/modal/3018_2.vue:830\");\n if (item.oldvalue != result.decodedata) {\n item.oldvalue = result.decodedata;\n item.value = result.decodedata;\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = result.decodedata;\n if (result.decodedata) {\n //第一个输入框不为空\n $this.focusMateria = true; //初始化,第二个输入框focus属性\n // setTimeout(function(){\n // \t$this.focusMateria=true; //第二个输入框获取焦点\n setTimeout(function () {\n uni.hideKeyboard();\n }, 1000);\n // },500);\n }\n\n var eventid = item.bind.onChangeEvent.id; //内容变化后事件\n if (eventid) {\n var obj_attr = _this4.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n val: obj_attr[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: _this4.$data.param.DataCls.id,\n objid: \"\",\n attr: req,\n dataJson: []\n };\n _this4.DataObjRunCustomEvent(info, '');\n }\n }\n });\n },\n onevent: function onevent(item) {\n // console.log(e.target);\n var $this = this;\n __f__(\"log\", item, \" at pages/modal/3018_2.vue:874\");\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n item.value = item.value;\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = item.value;\n //子数据类扫码区事件脚本\n var eventid = item.bind.onChangeEvent.id; //内容变化后事件\n if (eventid) {\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n val: obj_attr[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.DataCls.id,\n objid: \"\",\n attr: req,\n dataJson: []\n };\n this.DataObjRunCustomEvent(info, data_attr);\n }\n }\n },\n onchange: function onchange(item) {\n __f__(\"log\", item, \" at pages/modal/3018_2.vue:907\");\n var $this = this;\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = item.value;\n var eventid = item.bind.onChangeEvent.id; //内容变化后事件\n if (eventid) {\n // self.event_no_sub = 1;\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n val: obj_attr[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.DataCls.id,\n objid: \"\",\n attr: req,\n dataJson: []\n };\n this.DataObjRunCustomEvent(info);\n }\n }\n },\n onModelValue: function onModelValue(item) {\n //绑定Model值\n var attr = item.fieldId;\n this.head_styledef.form.model[attr] = item.value;\n },\n classAttr_extButton: function classAttr_extButton(item) {\n var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //后图标点击事件\n var onSuffixClickEvent = item.bind.onSuffixClickEvent; //后图标点击回调\n\n if (!onSuffixClickCallbackEvent.id) {\n uni.showModal({\n title: \"提示\",\n content: \"后图标点击事件为空!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n if (!onSuffixClickEvent.id) {\n uni.showModal({\n title: \"提示\",\n content: \"后图标点击回调为空!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n this.$data.popupType = 'right';\n // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性\n this.$refs.popup.open($this.popupType);\n this.DataObjRunCustomEvent_Return(onSuffixClickCallbackEvent.id, '', onSuffixClickEvent.id, item);\n },\n popupChange: function popupChange(e) {\n __f__(\"log\", '当前模式:' + e.type + ',状态:' + e.show, \" at pages/modal/3018_2.vue:962\");\n },\n checkChange: function checkChange(e) {\n //弹框check选择\n // console.log(e.target.dataset);\n var index = e.target.dataset.index;\n var ischeck = e.target.dataset.ischeck;\n var data = this.$data.check_list.items;\n // this.$data.check_list.items=[];\n if (this.$data.check_list.multiple_choice == \"0\") {\n //判断时单选还是多选\n for (var i in data) {\n data[i].check = false;\n }\n }\n data[index].check = ischeck ? false : true;\n this.$data.check_list.items = data;\n },\n popup_cancel: function popup_cancel(e) {\n //弹框取消\n this.$refs.popup.close();\n },\n popup_sava: function popup_sava(e) {\n //弹框确定\n var $this = this;\n var items = $this.$data.check_list.items;\n var data = [];\n var name = \"\";\n for (var i = 0; i < items.length; i++) {\n if (items[i].check == true) {\n if (name) name += ';';\n name += items[i].name;\n data.push({\n id: items[i].id,\n name: items[i].name\n });\n }\n }\n if (!$this.$data.popupParam) {\n uni.showModal({\n title: \"提示\",\n content: \"popupParam为空!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n var fieldId = $this.$data.popupParam.item.fieldId;\n $this.head_styledef.form.model[attr] = name;\n for (var c = 0; c < $this.$data.head_styledef.form.items.length; c++) {\n var attr = $this.$data.head_styledef.form.items[c];\n if (attr.fieldId == fieldId) {\n attr.value = name;\n }\n }\n __f__(\"log\", data, \" at pages/modal/3018_2.vue:1008\");\n var callback_eventid = $this.$data.popupParam.button_callback.trim();\n var info = {\n eventid: callback_eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: $this.$data.param.DataCls.id,\n objid: \"\",\n attr: $this.$data.popupParam.req,\n dataJson: data\n };\n $this.DataObjRunCustomEvent(info, $this.$data.popupParam.data_attr);\n this.$refs.popup.close();\n },\n DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n var $this = this;\n var enviroment = {\n 'function': '3000',\n // 功能点编号\n cls_id: this.$data.param.DataCls.id,\n // 功能点主数据类标识\n 'button': 'top',\n // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.DataCls.id // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n }\n };\n\n if (data_attr) {\n enviroment.edit_dlg = {\n type: 'small',\n //小窗口\n class_id: this.$data.param.DataCls.id //当前数据类id\n };\n\n if (data_attr) {\n enviroment.edit_dlg.form_control = {\n //所属的表单控件\n name: data_attr.Name,\n //字段属性\n text: data_attr.DispName,\n //显示文本\n group_name: data_attr.GroupName,\n //属性组\n type: data_attr.Type,\n //字段类型\n readonly: data_attr.ReadOnly,\n //是否只读\n button_img: data_attr.button_img,\n //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n }\n\n // var dataInfo = {\n // edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{','').replace('}',''),\n // rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n // attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: \"\",\n // \tglobal_attr: JSON.stringify(this.$data.global_attr), dataJson:JSON.stringify(info.dataJson)\n // }\n enviroment = _base.default.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码\n var input_param = _base.default.encode(JSON.stringify(info.attr)); //将字符串转换为base64编码\n var global_attr = _base.default.encode(JSON.stringify(this.$data.global_attr)); //将字符串转换为base64编码\n if (info.dataJson) info.dataJson = _base.default.encode(JSON.stringify(info.dataJson)); //将字符串转换为base64编码\n var obj_attr = {};\n info.attr.forEach(function (item) {\n obj_attr[item.attr] = item.val;\n });\n if (!info.eventid.includes('{')) info.eventid = '{' + info.eventid + '}';\n var dataInfo = {\n ed_type: info.edtype,\n start_transaction: true,\n class_id: info.clsid,\n class_name: '',\n event_id: info.eventid,\n event_name: '',\n data_obj_id: info.objid,\n obj_attr: obj_attr,\n prj_id: info.projectid,\n ref_cls_id: info.rclsid,\n rel_obj_id: info.robjid,\n user_login: info.userlogin,\n data_json: info.dataJson,\n compose_info: '',\n ext_info: enviroment,\n global_attr: global_attr,\n input_param: input_param\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3018_2.vue:1091\");\n // return;\n this.$store.dispatch('runCustomEvent', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3018_2.vue:1094\");\n if (success.err_code == 0) {\n var data = success.result;\n if (data.ret != 0) {\n var tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info.join('<br/>') : '';\n if (data.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + data.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = data.info ? typeof data.info == 'string' ? data.info : data.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n var actionlist = data.action;\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/3018_2.vue:1108\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var c = 0; c < $this.head_styledef.form.items.length; c++) {\n var attr = $this.head_styledef.form.items[c];\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"text\": val,\n \"value\": val\n });\n }\n attr.dict = dictItemList;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"text\": val,\n \"value\": val\n });\n }\n col.dict = dictItemList;\n }\n }\n });\n }\n }\n }\n for (var c = 0; c < $this.$data.head_styledef.form.items.length; c++) {\n var attr = $this.$data.head_styledef.form.items[c];\n // console.log(attr[j].Name+'=='+result[i].attr);\n //判断表单里是否有返回字段,没有就装载到model里,点击确定提交的时候带上这些数据\n if ($this.head_styledef.form.model[result[i].attr] == undefined) {\n $this.head_styledef.form.model[result[i].attr] = result[i].value;\n }\n //判断是否是栅格表单\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n attr.value = '';\n attr.oldvalue = '';\n attr.value = result[i].value;\n attr.oldvalue = result[i].value;\n $this.head_styledef.form.model[attr.fieldId] = result[i].value;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n col.value = '';\n col.oldvalue = '';\n col.value = result[i].value;\n col.oldvalue = result[i].value;\n $this.head_styledef.form.model[col.fieldId] = result[i].value;\n }\n }\n });\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_global_attr') {\n $this.$data.global_attr = data.action[i].value || [];\n }\n }\n }\n // var head_styledef = JSON.parse(JSON.stringify($this.head_styledef));\n // $this.head_styledef=[];\n // $this.head_styledef = head_styledef;\n __f__(\"log\", $this.head_styledef, \" at pages/modal/3018_2.vue:1196\");\n if (data.result) {\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var c = 0; c < $this.$data.head_styledef.form.items.length; c++) {\n var attr = $this.$data.head_styledef.form.items[c];\n //判断表单里是否有返回字段,没有就装载到model里,点击确定提交的时候带上这些数据\n if ($this.head_styledef.form.model[result[i].attr] == undefined) {\n $this.head_styledef.form.model[result[i].attr] = result[i].value;\n }\n //判断是否是栅格表单\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n attr.value = '';\n attr.oldvalue = '';\n attr.value = result[i].value;\n attr.oldvalue = result[i].value;\n $this.head_styledef.form.model[attr.fieldId] = result[i].value;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n col.value = '';\n col.oldvalue = '';\n col.value = result[i].value;\n col.oldvalue = result[i].value;\n $this.head_styledef.form.model[col.fieldId] = result[i].value;\n }\n }\n });\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误3\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误3.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, item) {\n var _this5 = this;\n var enviroment = {\n 'function': '3000',\n // 功能点编号\n cls_id: this.$data.param.DataCls.id,\n // 功能点主数据类标识\n 'button': 'top',\n // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.DataCls.id // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n }\n };\n\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n val: obj_attr[a] || \"\"\n };\n });\n if (this.$data.refdatastore.length > 0) {\n for (var i = 0; i < this.$data.refdatastore.length; i++) {\n if (!req.filter(function (s) {\n return this.$data.refdatastore[i].attr == s.name;\n }).length) {\n length = 1;\n req.push({\n 'attr': this.$data.refdatastore[i].attr,\n 'val': this.$data.refdatastore[i].value\n });\n }\n }\n }\n var extinfo = enviroment;\n extinfo.edit_dlg = {\n type: 'small',\n //小窗口\n class_id: this.$data.param.DataCls.id //当前数据类id\n };\n // var dataInfo = {\n // \tedtype: \"0\", eventid: eventid, projectid: '',rclsid: '', robjid: '', userlogin: '', \n // \tclsid: this.$data.param.DataCls.id, objid: '',attr: JSON.stringify(req), \n // \textinfo: JSON.stringify(extinfo), global_attr: JSON.stringify(this.$data.global_attr)\n // }\n extinfo = _base.default.encode(JSON.stringify(extinfo)); //将字符串转换为base64编码\n var global_attr = _base.default.encode(JSON.stringify(this.$data.global_attr)); //将字符串转换为base64编码\n var obj_attr = {};\n req.forEach(function (item) {\n obj_attr[item.attr] = item.val;\n });\n if (!eventid.includes('{')) eventid = '{' + eventid + '}';\n var dataInfo = {\n ed_type: \"0\",\n start_transaction: true,\n class_id: this.$data.param.DataCls.id,\n class_name: '',\n event_id: eventid,\n event_name: '',\n data_obj_id: '',\n obj_attr: obj_attr,\n prj_id: '',\n ref_cls_id: '',\n rel_obj_id: '',\n user_login: '',\n data_json: '',\n compose_info: '',\n ext_info: extinfo,\n global_attr: global_attr,\n input_param: ''\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3018_2.vue:1319\");\n // return;\n this.$store.dispatch('runCustomEvent', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3018_2.vue:1322\");\n if (success.err_code == 0) {\n var data = success.result;\n if (data.ret != 0) {\n var tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info.join('<br/>') : '';\n if (data.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + data.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = data.info ? typeof data.info == 'string' ? data.info : data.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n if (data != \"\") {\n var actions = data.action;\n __f__(\"log\", actions, \" at pages/modal/3018_2.vue:1336\");\n if (actions) {\n for (var i = 0; i < actions.length; i++) {\n var action = actions[i];\n var val = action.value;\n var enviroment = JSON.stringify(enviroment);\n if (action.action_type == 'open_panel') {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!'\n });\n d.show();\n } else if (action.action_type == 'open_select_userdlg') {\n var style = val.style;\n // style == 'user' ? '选择人员' : style == 'department' ? '选择部门' : style == 'role' ? '选择角色' : ''\n var $this = _this5;\n var param = {\n item: item,\n button_callback: button_callback,\n req: req,\n data_attr: data_attr\n };\n uni.navigateTo({\n url: '../selpsn/index?mulit=false¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n __f__(\"log\", data, \" at pages/modal/3018_2.vue:1365\");\n var callback_eventid = param.button_callback.trim();\n var info = {\n eventid: callback_eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: $this.$data.param.DataCls.id,\n objid: \"\",\n attr: param.req,\n inputparameter: data,\n dataJson: []\n };\n $this.DataObjRunCustomEvent(info, param.data_attr);\n }\n }\n });\n } else if (action.action_type == 'open_data_query_dlg') {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!'\n });\n d.show();\n } else if (action.action_type == 'open_common_dlg') {\n var $this = _this5;\n if (val.common_dlg_id == 'check_list') {\n $this.$data.check_list = val.config;\n if (val.config.appear_style == 'sideslip')\n //判断是否是侧滑\n $this.$data.popupType = 'right';else $this.$data.popupType = 'center';\n // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性\n $this.$refs.popup.open($this.$data.popupType);\n var popupParam = {\n item: item,\n button_callback: button_callback,\n req: req,\n data_attr: data_attr\n };\n $this.$data.popupParam = popupParam;\n }\n } else if (action.action_type == 'open_project_query_dlg') {\n //console.log(action.value.select_range);\n //console.log(action.value.mulit_select);\n var priRel = '-1';\n if (action.value.select_range == '全部相关') priRel = '0';else if (action.value.select_range == '我负责的项目') priRel = '1';else if (action.value.select_range == '我创建的') priRel = '2';else if (action.value.select_range == '我参与的' || action.value.select_range == '我参加的') priRel = '3';else if (action.value.select_range == '我关注的') priRel = '4';else if (action.value.select_range == '我下属的项目') priRel = '5';\n var $this = _this5;\n var param_ = {\n item: item,\n button_callback: button_callback,\n req: req\n };\n uni.navigateTo({\n url: '../selPrj/index?relation=' + priRel + '¶m=' + JSON.stringify(param_),\n events: {\n AddPer: function AddPer(data, param) {\n var attr = param.item.fieldId;\n $this.head_styledef.form.model[attr] = data[0].ID + ';' + data[0].Name;\n\n // $this.$data.classAttrList[param.index].Attr[param.iindex].Value=data[0].Name;\n // $this.$data.classAttrList[param.index].Attr[param.iindex].ValID=data[0].ID+';'+data[0].Name;\n var callback_eventid = param.button_callback.trim();\n if (callback_eventid) {\n var info = {\n eventid: callback_eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.DataCls.id,\n objid: \"\",\n attr: param.req,\n dataJson: []\n };\n $this.DataObjRunCustomEvent(info);\n }\n }\n }\n });\n } else {\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '提示',\n content: action.action_type + '此action尚未处理!'\n });\n d.show();\n }\n }\n }\n } else {\n uni.showModal({\n title: \"提示5.2\",\n content: '调用 before_click_button 脚本返回空,event_id' + eventid,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n } else {\n uni.showModal({\n title: \"错误5\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"提示5.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n //确定\n sava: function sava() {\n // if (this.$data.edit_ok_event)\n // \tthis.OKDataObjRunCustomEvent();\n // else\n this.add();\n },\n add: function add() {\n var _this6 = this;\n uni.showLoading({\n title: \"加载中...\",\n mask: true\n });\n var obj_attr = this.head_styledef.form.model;\n __f__(\"log\", obj_attr, \" at pages/modal/3018_2.vue:1498\");\n // var req = Object.keys(obj_attr).map((a) => ({\n // \tname: a,\n // \tvalue: obj_attr[a] || \"\",\n // }));\n\n var enviroment = {\n 'function': '3000',\n // 功能点编号\n cls_id: this.$data.param.DataCls.id,\n // 功能点主数据类标识\n 'button': 'top',\n // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.DataCls.id\n }\n };\n enviroment = _base.default.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码\n\n // console.log(obj_attr);\n // var dataInfo={\n // class_id: this.$data.param.DataCls.id, data_obj_id: '', masterclsid: '',\n // req: JSON.stringify(req), upfile: JSON.stringify([]), post_data: JSON.stringify({}),\n // compose: JSON.stringify([]), refdatastore: JSON.stringify([]), extinfo: JSON.stringify(enviroment), \n // \tnot_trigger_sys_event: ''\n // };\n var dataInfo = {\n class_id: this.$data.param.DataCls.id,\n class_name: '',\n master_cls_id: '',\n master_obj_id: '',\n creator: '',\n creator_name: '',\n not_trigger_event: '',\n update_exist: '',\n post_process: '',\n ext_info: enviroment,\n obj_attr: obj_attr\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3018_2.vue:1535\");\n // return\n this.$store.dispatch('createDataObj', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3018_2.vue:1538\");\n uni.hideLoading();\n if (success.err_code == 0) {\n var result = success.result;\n // if(result.result_type == 0){}\n if (success.result.action) {\n var action = JSON.parse(success.result.action);\n __f__(\"log\", action, \" at pages/modal/3018_2.vue:1545\");\n if (action.ret == '0') {\n if (action.ret != 0) {\n uni.showModal({\n title: \"提示\",\n content: '执行脚本失败,' + action.result,\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n if (action.info) {\n uni.showModal({\n title: \"提示\",\n content: '执行脚本失败,' + action.info,\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n if (action.result_type == '0') {\n uni.showToast({\n title: action.result,\n icon: \"success\",\n duration: 3000\n });\n }\n\n // \"{\"ret\":0, \"result_type\":0, \"result\":\"创建成功123123123\",\"info\":\"\"}\"\n }\n } else uni.showToast({\n title: \"创建成功!\",\n icon: \"success\",\n duration: 3000\n });\n //刷新\n uni.redirectTo({\n url: '../modal/3018_2?param=' + JSON.stringify(_this6.$data.param) + \"&titlename=\" + _this6.$data.title\n });\n // this.class_attr_init();\n } else {\n uni.showModal({\n title: \"错误\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/3018_2.vue:1572\");\n uni.hideLoading();\n uni.showModal({\n title: \"提示\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n cancel: function cancel(e) {\n //取消\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvMzAxOF8yLnZ1ZSJdLCJuYW1lcyI6WyJtb2R1bGVzIiwiQmFzZTY0IiwiZGF0YSIsInRpdGxlIiwicGFyYW0iLCJlZGl0X2luaXRhbF9ldmVudCIsImVkaXRfb2tfZXZlbnQiLCJlZGl0X3NlbGVjdF9jb21wb3NlX2V2ZW50IiwiZWRpdF9jb21wb3NlX2Nsc19pZCIsImdsb2JhbF9hdHRyIiwicmVmZGF0YXN0b3JlIiwic2NhbkNvZGVWYWwiLCJzdWJDbGFzc0F0dHJMaXN0Iiwic3ViUGFuZWxMaXN0Iiwic3ViQ2xhc3NHcmlkU3R5bGUiLCJwb3B1cFR5cGUiLCJjaGVja19saXN0IiwiZm9jdXNNYXRlcmlhIiwiaGVhZF9zdHlsZWRlZiIsImZvcm0iLCJpdGVtcyIsIm9uTG9hZCIsIm9wdGlvbnMiLCJ1bmkiLCJzZXROYXZpZ2F0aW9uQmFyVGl0bGUiLCJ0aXRsZW5hbWUiLCIkZGF0YSIsIkpTT04iLCJwYXJzZSIsIkFkZF9CdG5OYW1lIiwiSGVhZF9VSVN0eWxlR2V0SW5mbyIsIkRhdGFDbHMiLCJpZCIsIlVJX1N0eWxlIiwiSUQiLCJtZXRob2RzIiwiY2xhc3NfaWQiLCJzdHlsZV9pZCIsIiR0aGlzIiwiZGF0YUluZm8iLCJ1aV9zdHlsZV9pZCIsIiRzdG9yZSIsImRpc3BhdGNoIiwidGhlbiIsInJldCIsImVycl9jb2RlIiwic3R5bGVkZWYiLCJyZXN1bHQiLCJzdHlsZV9kZWYiLCJyZXBsYWNlIiwiaW5jbHVkZXMiLCJkZWNvZGUiLCJmb3JFYWNoIiwiZWxlIiwiaW5kZXgiLCJzaG93IiwidXNlRGljdCIsIkRpY3RHZXRJbmZvIiwiYmluZCIsImRpY3QiLCJldmVudCIsImxlbmd0aCIsImEiLCJldmVudF9pZCIsImxvYWRJbml0RXZlbnQiLCJzY3JpcF9pZCIsInNob3dNb2RhbCIsImNvbnRlbnQiLCJlcnJfbXNnIiwic2hvd0NhbmNlbCIsImNvbmZpcm1UZXh0IiwiY2F0Y2giLCJleCIsImVyck1zZyIsInR5cGUiLCJkaWN0X2lkIiwiZGljdF9uYW1lIiwibmFtZSIsInN1Y2Nlc3MiLCJsaXN0IiwiaXRlbU5hbWUiLCJkaWN0X2l0ZW1fbGlzdCIsIml0ZW0iLCJpc19kZWZhdWx0IiwicHVzaCIsInRleHQiLCJ2YWx1ZSIsImF0dHIiLCJmaWVsZElkIiwibW9kZWwiLCJldmVudGlkIiwiZWRfdHlwZSIsInN0YXJ0X3RyYW5zYWN0aW9uIiwidGlwIiwiZXJyX2luZm8iLCJqb2luIiwiaW5mbyIsImFjdGlvbmxpc3QiLCJhY3Rpb24iLCJpIiwiYWN0aW9uX3R5cGUiLCJjaG9pY2VfbGlzdCIsImMiLCJkaWN0SXRlbUxpc3QiLCJkIiwidmFsIiwic2V0dGluZyIsImNvbExpc3QiLCJjb2wiLCJ1bmRlZmluZWQiLCJvbGR2YWx1ZSIsImZpbHRlciIsInMiLCJqIiwia2V5Iiwic3RyaW5naWZ5Iiwib250YXAiLCJnZXRBcHAiLCJvblNjYW4iLCJoaWRlS2V5Ym9hcmQiLCJkZWNvZGVkYXRhIiwic2V0VGltZW91dCIsIm9uQ2hhbmdlRXZlbnQiLCJvYmpfYXR0ciIsInJlcSIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJlZHR5cGUiLCJwcm9qZWN0aWQiLCJyY2xzaWQiLCJyb2JqaWQiLCJ1c2VybG9naW4iLCJjbHNpZCIsIm9iamlkIiwiZGF0YUpzb24iLCJEYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJvbmV2ZW50IiwiZGF0YV9hdHRyIiwib25jaGFuZ2UiLCJvbk1vZGVsVmFsdWUiLCJjbGFzc0F0dHJfZXh0QnV0dG9uIiwib25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQiLCJvblN1ZmZpeENsaWNrRXZlbnQiLCIkcmVmcyIsInBvcHVwIiwib3BlbiIsIkRhdGFPYmpSdW5DdXN0b21FdmVudF9SZXR1cm4iLCJwb3B1cENoYW5nZSIsImUiLCJjaGVja0NoYW5nZSIsInRhcmdldCIsImRhdGFzZXQiLCJpc2NoZWNrIiwibXVsdGlwbGVfY2hvaWNlIiwiY2hlY2siLCJwb3B1cF9jYW5jZWwiLCJjbG9zZSIsInBvcHVwX3NhdmEiLCJwb3B1cFBhcmFtIiwiY2FsbGJhY2tfZXZlbnRpZCIsImJ1dHRvbl9jYWxsYmFjayIsInRyaW0iLCJlbnZpcm9tZW50IiwiY2xzX2lkIiwiYnV0dG9uX25hbWUiLCJtYXN0ZXIiLCJlZGl0X2RsZyIsImZvcm1fY29udHJvbCIsIk5hbWUiLCJEaXNwTmFtZSIsImdyb3VwX25hbWUiLCJHcm91cE5hbWUiLCJUeXBlIiwicmVhZG9ubHkiLCJSZWFkT25seSIsImJ1dHRvbl9pbWciLCJidXR0b25fdG9vbHRpcCIsImVuY29kZSIsImlucHV0X3BhcmFtIiwiY2xhc3NfbmFtZSIsImV2ZW50X25hbWUiLCJkYXRhX29ial9pZCIsInByal9pZCIsInJlZl9jbHNfaWQiLCJyZWxfb2JqX2lkIiwidXNlcl9sb2dpbiIsImRhdGFfanNvbiIsImNvbXBvc2VfaW5mbyIsImV4dF9pbmZvIiwiZXh0aW5mbyIsImFjdGlvbnMiLCJkaWFsb2ciLCJzdHlsZSIsIm5hdmlnYXRlVG8iLCJ1cmwiLCJldmVudHMiLCJBZGRQZXIiLCJpbnB1dHBhcmFtZXRlciIsImNvbW1vbl9kbGdfaWQiLCJjb25maWciLCJhcHBlYXJfc3R5bGUiLCJwcmlSZWwiLCJzZWxlY3RfcmFuZ2UiLCJwYXJhbV8iLCJzYXZhIiwiYWRkIiwic2hvd0xvYWRpbmciLCJtYXNrIiwibWFzdGVyX2Nsc19pZCIsIm1hc3Rlcl9vYmpfaWQiLCJjcmVhdG9yIiwiY3JlYXRvcl9uYW1lIiwibm90X3RyaWdnZXJfZXZlbnQiLCJ1cGRhdGVfZXhpc3QiLCJwb3N0X3Byb2Nlc3MiLCJoaWRlTG9hZGluZyIsInJlc3VsdF90eXBlIiwic2hvd1RvYXN0IiwiaWNvbiIsImR1cmF0aW9uIiwicmVkaXJlY3RUbyIsImNhbmNlbCIsIm5hdmlnYXRlQmFjayIsImRlbHRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFxaUJBO0FBcmlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEsZUFHZTtFQUNiQSxPQUFPLEVBQUM7SUFDVEMsTUFBTSxF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QUM7VUFDRjtRQUNELENBQUMsTUFBSTtVQUNKb0IsR0FBRyxDQUFDMkMsU0FBUyxDQUFDO1lBQUMvRCxLQUFLLEVBQUMsSUFBSTtZQUFDZ0UsT0FBTyxFQUFDVyxPQUFPLENBQUNWLE9BQU87WUFBQ0MsVUFBVSxFQUFDLEtBQUs7WUFBQ0MsV0FBVyxFQUFDO1VBQUksQ0FBQyxDQUFDO1FBQ3RGO01BQ0QsQ0FBQyxDQUFDLENBQUNDLEtBQUssQ0FBQyxVQUFBQyxFQUFFLEVBQUU7UUFDWixhQUFZQSxFQUFFO1FBQ2RqRCxHQUFHLENBQUNpTSxXQUFXLEVBQUU7UUFDakJqTSxHQUFHLENBQUMyQyxTQUFTLENBQUM7VUFBQy9ELEtBQUssRUFBQyxJQUFJO1VBQUNnRSxPQUFPLEVBQUNLLEVBQUUsQ0FBQ0MsTUFBTTtVQUFDSixVQUFVLEVBQUMsS0FBSztVQUFDQyxXQUFXLEVBQUM7UUFBSSxDQUFDLENBQUM7TUFDaEYsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUNEd0osTUFBTSxrQkFBQ3pFLENBQUMsRUFBQztNQUFFO01BQ1Y5SCxHQUFHLENBQUN3TSxZQUFZLENBQUM7UUFDaEJDLEtBQUssRUFBQyxDQUFDLENBQUM7TUFDVCxDQUFDLENBQUM7SUFDSDtFQUNDO0FBQ0YsQ0FBQztBQUFBLDJCIiwiZmlsZSI6IjE1MC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcblxyXG5pbXBvcnQgQmFzZTY0IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvanMtYmFzZTY0L2Jhc2U2NC5qcydcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIG1vZHVsZXM6e1xyXG5cdEJhc2U2NCxcclxuICB9LFxyXG4gIGRhdGEoKSB7XHJcbiAgICByZXR1cm4ge1xyXG5cdCAgdGl0bGU6J+aWsOWinicsXHJcbiAgICAgIHBhcmFtOiB7fSxcclxuXHQgIGVkaXRfaW5pdGFsX2V2ZW50OlwiXCIsICAvL+W8ueeql+WIneWni+WMluS6i+S7tklEXHJcblx0ICBlZGl0X29rX2V2ZW50OlwiXCIsICAgICAgLy/lvLnnqpfngrnlh7tPSyDop6blj5Hkuovku7ZJRFxyXG5cdCAgZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudDpcIlwiLCAgLy/pgInmi6nnu4TmiJDlr7nosaHml7bosIPnlKhcclxuXHQgIGVkaXRfY29tcG9zZV9jbHNfaWQ6XCJcIixcclxuXHQgIGdsb2JhbF9hdHRyOltdLFxyXG5cdCAgcmVmZGF0YXN0b3JlOiBbXSxcdCAgIC8v5byV55So5pWw5o2u5a2Y5YKo5Yy6Ly8ge2F0dHI6J0dfUFJKXycgKyBiaW5kYXR0ciArICdfSUQnLCB2YWx1ZTppbmZvLmlkfVxyXG5cdCAgc2NhbkNvZGVWYWw6XCJcIixcclxuXHQgIHN1YkNsYXNzQXR0ckxpc3Q6W10sXHJcblx0ICBzdWJQYW5lbExpc3Q6W10sXHJcblx0ICBzdWJDbGFzc0dyaWRTdHlsZTpbXSxcclxuXHQgIHBvcHVwVHlwZTpcImNlbnRlclwiLFxyXG5cdCAgY2hlY2tfbGlzdDp7fSxcclxuXHQgIFxyXG5cdCAgZm9jdXNNYXRlcmlhOmZhbHNlLFxyXG5cdCAgaGVhZF9zdHlsZWRlZjp7XHJcblx0XHRmb3JtOntcclxuXHRcdFx0aXRlbXM6W11cclxuXHRcdH1cclxuXHQgIH0sXHJcbiAgICB9O1xyXG4gIH0sXHJcbiAgb25Mb2FkKG9wdGlvbnMpIHtcclxuXHQvLyBjb25zb2xlLmxvZyhvcHRpb25zKTtcclxuXHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHsgdGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lfSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxyXG5cdHRoaXMuJGRhdGEucGFyYW0gPSBKU09OLnBhcnNlKG9wdGlvbnMucGFyYW0pO1xyXG5cdHRoaXMuJGRhdGEudGl0bGUgPSB0aGlzLiRkYXRhLnBhcmFtLkFkZF9CdG5OYW1lP3RoaXMuJGRhdGEucGFyYW0uQWRkX0J0bk5hbWU6b3B0aW9ucy50aXRsZW5hbWU7IC8v6K6+572u5oyJ6ZKu5paH5a2XXHJcblx0XHJcblx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5wYXJhbSk7XHJcblx0IC8v6I635Y+W5pWw5o2u57G755qE6Ieq5a6a5LmJ6KGo5Y2V5Y+C5pWwXHJcblx0dGhpcy5IZWFkX1VJU3R5bGVHZXRJbmZvKHRoaXMucGFyYW0uRGF0YUNscy5pZCx0aGlzLnBhcmFtLlVJX1N0eWxlLklEKTtcclxuXHRcclxuXHQvL+mhtemdouWIneWni+WMluiOt+WPlueEpueCuVxyXG5cdC8vIHRoaXMuZm9jdXNNYXRlcmlhPXRydWU7IFxyXG4gIH0sXHRcclxuICBtZXRob2RzOiB7XHJcbiAgICBhc3luYyBIZWFkX1VJU3R5bGVHZXRJbmZvKGNsYXNzX2lkLHN0eWxlX2lkKXsgICAvL+iOt+WPluiHquWumuS5ieihqOWNleagt+W8j1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdGNsYXNzX2lkOmNsYXNzX2lkLFxyXG5cdFx0XHR1aV9zdHlsZV9pZDpzdHlsZV9pZCxcclxuXHRcdH07XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnVUlTdHlsZUdldEluZm8nLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgc3R5bGVkZWY9XCJcIjtcclxuXHRcdFx0XHRpZihyZXQucmVzdWx0LnN0eWxlX2RlZil7XHJcblx0XHRcdFx0ICAgICAvL21vYm94MueahHN0eWxlX2RlZuaYr2pzb27lrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIHN0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWYucmVwbGFjZSgvXFxcXC9nLFwiXCIpO1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDPnmoRzdHlsZV9kZWbmmK9iYXNlNjTlrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIGlmKCFyZXQucmVzdWx0LnN0eWxlX2RlZi5pbmNsdWRlcygnXCInKSkgc3R5bGVkZWYgPSBCYXNlNjQuZGVjb2RlKHJldC5yZXN1bHQuc3R5bGVfZGVmKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0JHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmPyBKU09OLnBhcnNlKHN0eWxlZGVmKToge307XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZik7XHJcblx0XHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmZvckVhY2goYXN5bmMgKGVsZSxpbmRleCkgPT4ge1xyXG5cdFx0XHRcdFx0ZWxlLnNob3c9dHJ1ZTtcclxuXHRcdFx0XHQgICAgaWYoZWxlLnVzZURpY3Q9PXRydWUpeyAvL+WIpOaWrXVzZURpY3TmmK/lkKbkvb/nlKjlrZflhbhcclxuXHRcdFx0XHQgICAgICAgIGF3YWl0IHRoaXMuRGljdEdldEluZm8oZWxlLmJpbmQuZGljdCxpbmRleCwnbWFzdCcpO1xyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0aWYoJHRoaXMuaGVhZF9zdHlsZWRlZi5ldmVudD8ubGVuZ3RoPjApe1xyXG5cdFx0XHRcdCAgJHRoaXMuaGVhZF9zdHlsZWRlZi5ldmVudC5mb3JFYWNoKGFzeW5jIChhKT0+eyAgLy/liKTmlq3mmK/lkKbmmK/liJ3lp4vljJbkuovku7ZcclxuXHRcdFx0XHQgICAgaWYoYS5ldmVudF9pZCA9PSBcImluaXRpYWxcIil7XHJcblx0XHRcdFx0ICAgICAgYXdhaXQgdGhpcy5sb2FkSW5pdEV2ZW50KGEuc2NyaXBfaWQpO1xyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMVwiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuICAgIGFzeW5jIERpY3RHZXRJbmZvKGRpY3QsaW5kZXgsdHlwZSl7IC8vTW9ib3gz5b6X5Yiw5b6X5Yiw5a2X5YW45L+h5oGv5a2X5YW46aG55YiX6KGoXHJcblx0XHR0aGlzLmRhdGE9W107XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvID17XHJcblx0XHRcdGRpY3RfaWQ6IGRpY3QuaWQsXHJcblx0XHRcdGRpY3RfbmFtZTogZGljdC5uYW1lXHJcblx0XHR9O1xyXG5cdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RpY3RHZXRJbmZvJyxkYXRhSW5mbykudGhlbihhc3luYyAoc3VjY2Vzcyk9PntcclxuXHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdGlmIChzdWNjZXNzLmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRpZih0eXBlPT0nbWFzdCcpe1xyXG5cdFx0XHRcdFx0dmFyIGxpc3Q9W107XHJcblx0XHRcdFx0XHR2YXIgaXRlbU5hbWU9Jyc7XHJcblx0XHRcdFx0XHRzdWNjZXNzLnJlc3VsdC5kaWN0X2l0ZW1fbGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcblx0XHRcdFx0XHQgICAgaWYoaXRlbS5pc19kZWZhdWx0PT0nMScpXHJcblx0XHRcdFx0XHQgICAgICAgIGl0ZW1OYW1lID0gaXRlbS5uYW1lO1xyXG5cdFx0XHRcdFx0ICAgIGxpc3QucHVzaCh7XHJcblx0XHRcdFx0XHQgICAgICAgIHRleHQ6aXRlbS52YWx1ZSxcclxuXHRcdFx0XHRcdCAgICAgICAgdmFsdWU6aXRlbS5uYW1lLFxyXG5cdFx0XHRcdFx0ICAgIH0pO1xyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHQvL+aciem7mOiupOWAvO+8jOaYvuekuum7mOiupOWAvFxyXG5cdFx0XHRcdFx0aWYoaXRlbU5hbWUpe1xyXG5cdFx0XHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXNbaW5kZXhdLnZhbHVlPWl0ZW1OYW1lO1xyXG5cdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tpbmRleF0uZmllbGRJZDtcclxuXHRcdFx0XHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gaXRlbU5hbWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXNbaW5kZXhdLmRpY3Q9bGlzdDtcclxuXHRcdFx0XHRcdC8vICR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tpbmRleF0uZGljdGl0ZW09c3VjY2Vzcy5yZXN1bHQ7XHJcblx0XHRcdFx0XHQvLyB0aGlzLiRzdG9yZS5jb21taXQoXCJjbGFzc0F0dHJMaXN0XCIsICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QpO1xyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0Ly8gJHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdFtpbmRleF0uYXR0cl9saXN0W2tleV0uZGljdGl0ZW09c3VjY2Vzcy5yZXN1bHQ7XHJcblx0XHRcdFx0XHQvLyB0aGlzLiRzdG9yZS5jb21taXQoXCJzdWJDbGFzc0F0dHJMaXN0XCIsICR0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjJcIixjb250ZW50OnN1Y2Nlc3MuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuM1wiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHRhc3luYyBsb2FkSW5pdEV2ZW50KGV2ZW50aWQpe1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdGlmKCFldmVudGlkLmluY2x1ZGVzKCd7JykpIGV2ZW50aWQgPSAneycrZXZlbnRpZCsnfSc7XHJcblx0XHR2YXIgZGF0YUluZm89e1xyXG4gICAgICAgICAgZWRfdHlwZTogMCxcclxuICAgICAgICAgIHN0YXJ0X3RyYW5zYWN0aW9uOiB0cnVlLFxyXG4gICAgICAgICAgY2xhc3NfaWQ6IHRoaXMucGFyYW0uRGF0YUNscy5pZCxcclxuICAgICAgICAgIGV2ZW50X2lkOiBldmVudGlkLFxyXG5cdFx0fTtcclxuXHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdC8vIHJldHVybjtcclxuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdydW5DdXN0b21FdmVudCcsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0aWYgKHN1Y2Nlc3MuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBkYXRhID0gc3VjY2Vzcy5yZXN1bHQ7XHJcblx0XHRcdFx0aWYgKGRhdGEucmV0ICE9IDApIHtcclxuXHRcdFx0XHQgICAgdmFyIHRpcCA9IGRhdGEuZXJyX2luZm8gPyB0eXBlb2YgZGF0YS5lcnJfaW5mbyA9PSAnc3RyaW5nJyA/IGRhdGEuZXJyX2luZm8gOiBkYXRhLmVycl9pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHQgICAgaWYgKGRhdGEucmV0ID09IDgwMSkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytkYXRhLnJldCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0dmFyIHRpcCA9IGRhdGEuaW5mbyA/IHR5cGVvZiBkYXRhLmluZm8gPT0gJ3N0cmluZycgPyBkYXRhLmluZm8gOiBkYXRhLmluZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdFx0aWYgKHRpcCkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHR2YXIgYWN0aW9ubGlzdCA9IGRhdGEuYWN0aW9uO1xyXG5cdFx0XHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XHJcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYWN0aW9ubGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2ldO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHZhciByZXN1bHQgPSBhY3Rpb24udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0W2ldLmNob2ljZV9saXN0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXMubGVuZ3RoOyBjKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zW2NdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0ci5uYW1lIT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIGlmKGF0dHIuZmllbGRJZD09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdHZhciBkaWN0SXRlbUxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0Zm9yKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0XHR2YXIgdmFsID1yZXN1bHRbaV0uY2hvaWNlX2xpc3RbZF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0XHRkaWN0SXRlbUxpc3QucHVzaCh7XCJDTl9TX05BTUVcIjp2YWwsXCJDTl9TX1ZBTFVFXCI6dmFsLFwidGV4dFwiOnZhbCxcInZhbHVlXCI6dmFsfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIuZGljdCA9IGRpY3RJdGVtTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKGF0dHIubmFtZT09J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBhdHRyLnNldHRpbmcuY29sTGlzdC5mb3JFYWNoKGNvbD0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGlmKGNvbCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBpZihjb2wuZmllbGRJZD09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRmb3IodmFyIGQgaW4gcmVzdWx0W2ldLmNob2ljZV9saXN0KXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0XHR2YXIgdmFsID1yZXN1bHRbaV0uY2hvaWNlX2xpc3RbZF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiQ05fU19WQUxVRVwiOnZhbCxcInRleHRcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC5kaWN0ID0gZGljdEl0ZW1MaXN0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXMubGVuZ3RoOyBjKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tjXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly/liKTmlq3ooajljZXph4zmmK/lkKbmnInov5Tlm57lrZfmrrXvvIzmsqHmnInlsLHoo4Xovb3liLBtb2RlbOmHjO+8jOeCueWHu+ehruWumuaPkOS6pOeahOaXtuWAmeW4puS4iui/meS6m+aVsOaNrlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmKCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFtyZXN1bHRbaV0uYXR0cl09PXVuZGVmaW5lZCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFtyZXN1bHRbaV0uYXR0cl09cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvL+WIpOaWreaYr+WQpuaYr+agheagvOihqOWNlVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHIubmFtZSE9J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgaWYoYXR0ci5maWVsZElkPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIudmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLm9sZHZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0ci5maWVsZElkXSA9cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihhdHRyLm5hbWU9PSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIGF0dHIuc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGlmKGNvbCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgaWYoY29sLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC52YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLm9sZHZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wudmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wub2xkdmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbY29sLmZpZWxkSWRdID1yZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZGF0YS5hY3Rpb25baV0uYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cl9zaG93Jykge1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdHJlc3VsdC5mb3JFYWNoKGFzeW5jIChhdHRyLGtleSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXMuZm9yRWFjaChhc3luYyAoZWxlLGluZGV4KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgLy/liKTmlq3mmK/lkKbmmK/moIXmoLzooajljZVcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYoZWxlLm5hbWUhPSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZihlbGUuZmllbGRJZD09YXR0ci5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsZS5zaG93PWF0dHIuc2hvdztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihlbGUubmFtZT09J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGVsZS5zZXR0aW5nLmNvbExpc3QuZm9yRWFjaChjb2w9PntcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNvbCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGNvbC5maWVsZElkPT1hdHRyLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbC5zaG93PWF0dHIuc2hvdztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHQgIH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgaGVhZF9zdHlsZWRlZiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZikpO1xyXG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZiA9W107XHJcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmID0gaGVhZF9zdHlsZWRlZjtcclxuXHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLmiafooYzliJ3lp4vljJbkuovku7blpLHotKXvvJpcIitpdGVtLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gScsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdFx0fSBcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH1cclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zXCIsY29udGVudDpcIuaJp+ihjOWIneWni+WMluS6i+S7tuWksei0pe+8mlwiK3N1Y2Nlc3MuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzMuMVwiLGNvbnRlbnQ6XCLmiafooYzliJ3lp4vljJbkuovku7blpLHotKXvvJpcIitleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdFxyXG5cdFx0XHJcblx0b250YXAoaXRlbSl7IC8v5omr56CB5Yqf6IO9XHJcblx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCk9PntcclxuXHRcdFx0Ly9jb25zb2xlLmxvZyhyZXN1bHQuZGVjb2RlZGF0YSk7XHJcblx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0Y29uc29sZS5sb2coaXRlbSk7XHJcblx0XHRcdGlmKGl0ZW0ub2xkdmFsdWUgIT0gcmVzdWx0LmRlY29kZWRhdGEpe1xyXG5cdFx0XHQgICAgaXRlbS5vbGR2YWx1ZSA9IHJlc3VsdC5kZWNvZGVkYXRhO1xyXG5cdFx0XHRcdGl0ZW0udmFsdWUgPSByZXN1bHQuZGVjb2RlZGF0YTtcclxuXHRcdFx0XHR2YXIgYXR0ciA9IGl0ZW0uZmllbGRJZDtcclxuXHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0cl0gPSByZXN1bHQuZGVjb2RlZGF0YTtcclxuXHRcdFx0XHRpZihyZXN1bHQuZGVjb2RlZGF0YSl7IC8v56ys5LiA5Liq6L6T5YWl5qGG5LiN5Li656m6XHJcblx0XHRcdFx0XHQkdGhpcy5mb2N1c01hdGVyaWEgPSB0cnVlOyAvL+WIneWni+WMlu+8jOesrOS6jOS4qui+k+WFpeahhmZvY3Vz5bGe5oCnXHJcblx0XHRcdFx0XHQvLyBzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XHJcblx0XHRcdFx0XHQvLyBcdCR0aGlzLmZvY3VzTWF0ZXJpYT10cnVlOyAvL+esrOS6jOS4qui+k+WFpeahhuiOt+WPlueEpueCuVxyXG5cdFx0XHRcdFx0XHRzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7XHJcblx0XHRcdFx0XHRcdFx0dW5pLmhpZGVLZXlib2FyZCgpO1xyXG5cdFx0XHRcdFx0XHR9LDEwMDApO1xyXG5cdFx0XHRcdFx0Ly8gfSw1MDApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IGl0ZW0uYmluZC5vbkNoYW5nZUV2ZW50LmlkOyAgIC8v5YaF5a655Y+Y5YyW5ZCO5LqL5Lu2XHJcblx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0ICAgICAgICB2YXIgb2JqX2F0dHIgPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHRcdFx0ICAgICAgICAvLyBjb25zb2xlLmxvZyhvYmpfYXR0cik7XHJcblx0XHRcdCAgICAgICAgdmFyIHJlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHRcdCAgICAgICAgXHRhdHRyOiBhLFxyXG5cdFx0XHQgICAgICAgIFx0dmFsOiBvYmpfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0XHQgICAgICAgIH0pKTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHQgICAgICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHQgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdCAgICAgICAgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdFx0ICAgICAgICAgICBwcm9qZWN0aWQ6ICcnLFxyXG5cdFx0XHQgICAgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHRcdCAgICAgICAgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICB1c2VybG9naW46ICcnLFxyXG5cdFx0XHQgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsXHJcblx0XHRcdCAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdCAgICAgICAgICAgYXR0cjogcmVxLFxyXG5cdFx0XHRcdFx0ICAgZGF0YUpzb246W10sXHJcblx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHQgICAgICAgIHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sICcnKTtcclxuXHRcdFx0ICAgIH1cclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdG9uZXZlbnQoaXRlbSl7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0Y29uc29sZS5sb2coaXRlbSk7XHJcblx0XHRpZihpdGVtLm9sZHZhbHVlICE9IGl0ZW0udmFsdWUpe1xyXG5cdFx0ICAgIGl0ZW0ub2xkdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRpdGVtLnZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0dmFyIGF0dHIgPSBpdGVtLmZpZWxkSWQ7XHJcblx0XHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdC8v5a2Q5pWw5o2u57G75omr56CB5Yy65LqL5Lu26ISa5pysXHJcblx0XHRcdHZhciBldmVudGlkID0gaXRlbS5iaW5kLm9uQ2hhbmdlRXZlbnQuaWQ7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdCAgICAgICAgdmFyIG9ial9hdHRyID0gdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWw7XHJcblx0XHQgICAgICAgIC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHRcdCAgICAgICAgdmFyIHJlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHQgICAgICAgIFx0YXR0cjogYSxcclxuXHRcdCAgICAgICAgXHR2YWw6IG9ial9hdHRyW2FdIHx8IFwiXCIsXHJcblx0XHQgICAgICAgIH0pKTtcclxuXHRcdFx0ICAgIHZhciBpbmZvID0ge1xyXG5cdFx0XHQgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0ICAgICAgIGVkdHlwZTogXCIwXCIsXHJcblx0XHRcdCAgICAgICBwcm9qZWN0aWQ6ICcnLFxyXG5cdFx0XHQgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0ICAgICAgIHJvYmppZDogJycsXHJcblx0XHRcdCAgICAgICB1c2VybG9naW46ICcnLFxyXG5cdFx0XHQgICAgICAgY2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uRGF0YUNscy5pZCxcclxuXHRcdFx0ICAgICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0XHQgICAgICAgYXR0cjogcmVxLFxyXG5cdFx0XHRcdCAgIGRhdGFKc29uOltdLFxyXG5cdFx0XHQgICAgfVxyXG5cdFx0XHQgICAgdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgZGF0YV9hdHRyKTtcclxuXHRcdCAgICB9XHJcblx0XHR9XHJcblx0XHRcclxuXHR9LFxyXG5cdG9uY2hhbmdlKGl0ZW0pIHtcclxuXHRcdGNvbnNvbGUubG9nKGl0ZW0pO1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdGlmKGl0ZW0ub2xkdmFsdWUgIT0gaXRlbS52YWx1ZSl7XHJcblx0XHQgICAgaXRlbS5vbGR2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdHZhciBhdHRyID0gaXRlbS5maWVsZElkO1xyXG5cdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0cl0gPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHR2YXIgZXZlbnRpZCA9IGl0ZW0uYmluZC5vbkNoYW5nZUV2ZW50LmlkOyAgIC8v5YaF5a655Y+Y5YyW5ZCO5LqL5Lu2XHJcblx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcclxuXHRcdCAgICAgICAgdmFyIG9ial9hdHRyID0gdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWw7XHJcblx0XHQgICAgICAgIC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHRcdCAgICAgICAgdmFyIHJlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHQgICAgICAgIFx0YXR0cjogYSxcclxuXHRcdCAgICAgICAgXHR2YWw6IG9ial9hdHRyW2FdIHx8IFwiXCIsXHJcblx0XHQgICAgICAgIH0pKTtcclxuXHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHQgICAgICAgICAgICBldmVudGlkOiBldmVudGlkLFxyXG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjBcIixcclxuXHRcdCAgICAgICAgICAgIHByb2plY3RpZDogJycsXHJcblx0XHQgICAgICAgICAgICByY2xzaWQ6ICcnLFxyXG5cdFx0ICAgICAgICAgICAgcm9iamlkOiAnJyxcclxuXHRcdCAgICAgICAgICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHQgICAgICAgICAgICBjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLFxyXG5cdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHQgICAgICAgICAgICBhdHRyOiByZXEsXHJcblx0XHQgICAgICAgIFx0ZGF0YUpzb246W11cclxuXHRcdCAgICAgICAgfVxyXG5cdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdCAgICB9XHJcblx0XHR9XHJcblx0XHRcclxuXHR9LFxyXG5cdG9uTW9kZWxWYWx1ZShpdGVtKSB7IC8v57uR5a6aTW9kZWzlgLxcclxuXHRcdHZhciBhdHRyID0gaXRlbS5maWVsZElkO1xyXG5cdFx0dGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0cl0gPSBpdGVtLnZhbHVlO1xyXG5cdH0sXHJcblx0Y2xhc3NBdHRyX2V4dEJ1dHRvbihpdGVtKXtcclxuXHRcdHZhciBvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudCA9IGl0ZW0uYmluZC5vblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudDsgICAvL+WQjuWbvuagh+eCueWHu+S6i+S7tlxyXG5cdFx0dmFyIG9uU3VmZml4Q2xpY2tFdmVudCA9IGl0ZW0uYmluZC5vblN1ZmZpeENsaWNrRXZlbnQ7ICAgLy/lkI7lm77moIfngrnlh7vlm57osINcclxuXHRcdFxyXG5cdFx0aWYoIW9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50LmlkKXtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi5ZCO5Zu+5qCH54K55Ye75LqL5Lu25Li656m677yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdGlmKCFvblN1ZmZpeENsaWNrRXZlbnQuaWQpe1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLlkI7lm77moIfngrnlh7vlm57osIPkuLrnqbrvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dGhpcy4kZGF0YS5wb3B1cFR5cGUgPSAncmlnaHQnXHJcblx0XHQvLyBvcGVuIOaWueazleS8oOWFpeWPguaVsCDnrYnlkIzlnKggdW5pLXBvcHVwIOe7hOS7tuS4iue7keWumiB0eXBl5bGe5oCnXHJcblx0XHR0aGlzLiRyZWZzLnBvcHVwLm9wZW4oJHRoaXMucG9wdXBUeXBlKTtcclxuXHRcdFxyXG5cdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50LmlkLCAnJywgb25TdWZmaXhDbGlja0V2ZW50LmlkLCBpdGVtKTtcclxuXHR9LFxyXG5cdHBvcHVwQ2hhbmdlKGUpIHtcclxuXHRcdGNvbnNvbGUubG9nKCflvZPliY3mqKHlvI/vvJonICsgZS50eXBlICsgJyznirbmgIHvvJonICsgZS5zaG93KTtcclxuXHR9LFxyXG5cdGNoZWNrQ2hhbmdlKGUpeyAvL+W8ueahhmNoZWNr6YCJ5oupXHJcblx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldC5kYXRhc2V0KTtcclxuXHRcdHZhciBpbmRleCA9IGUudGFyZ2V0LmRhdGFzZXQuaW5kZXg7XHJcblx0XHR2YXIgaXNjaGVjayA9IGUudGFyZ2V0LmRhdGFzZXQuaXNjaGVjaztcclxuXHRcdHZhciBkYXRhID0gdGhpcy4kZGF0YS5jaGVja19saXN0Lml0ZW1zO1xyXG5cdFx0Ly8gdGhpcy4kZGF0YS5jaGVja19saXN0Lml0ZW1zPVtdO1xyXG5cdFx0aWYodGhpcy4kZGF0YS5jaGVja19saXN0Lm11bHRpcGxlX2Nob2ljZT09XCIwXCIpeyAvL+WIpOaWreaXtuWNlemAiei/mOaYr+WkmumAiVxyXG5cdFx0XHRmb3IodmFyIGkgaW4gZGF0YSl7XHJcblx0XHRcdFx0ZGF0YVtpXS5jaGVjaz1mYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0fVxyXG5cdFx0ZGF0YVtpbmRleF0uY2hlY2s9aXNjaGVjaz9mYWxzZTp0cnVlO1xyXG5cdFx0dGhpcy4kZGF0YS5jaGVja19saXN0Lml0ZW1zPWRhdGE7XHJcblx0XHRcclxuXHR9LFxyXG5cdHBvcHVwX2NhbmNlbChlKXsgLy/lvLnmoYblj5bmtohcclxuXHRcdHRoaXMuJHJlZnMucG9wdXAuY2xvc2UoKTtcclxuXHR9LFxyXG5cdHBvcHVwX3NhdmEoZSl7IC8v5by55qGG56Gu5a6aXHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGl0ZW1zID0gJHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcztcclxuXHRcdHZhciBkYXRhPVtdO1xyXG5cdFx0dmFyIG5hbWU9XCJcIjtcclxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0aWYoaXRlbXNbaV0uY2hlY2s9PXRydWUpe1xyXG5cdFx0XHRcdGlmKG5hbWUpXHJcblx0XHRcdFx0XHRuYW1lKz0nOyc7XHJcblx0XHRcdFx0bmFtZSs9aXRlbXNbaV0ubmFtZTtcclxuXHRcdFx0XHRkYXRhLnB1c2goe2lkOml0ZW1zW2ldLmlkLG5hbWU6aXRlbXNbaV0ubmFtZX0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRpZighJHRoaXMuJGRhdGEucG9wdXBQYXJhbSl7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcInBvcHVwUGFyYW3kuLrnqbrvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHR2YXIgZmllbGRJZCA9ICR0aGlzLiRkYXRhLnBvcHVwUGFyYW0uaXRlbS5maWVsZElkO1xyXG5cdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gbmFtZTtcclxuXHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zW2NdO1xyXG5cdFx0XHRpZihhdHRyLmZpZWxkSWQ9PWZpZWxkSWQpe1xyXG5cdFx0XHRcdGF0dHIudmFsdWUgPSBuYW1lO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRjb25zb2xlLmxvZyhkYXRhKTtcclxuXHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gJHRoaXMuJGRhdGEucG9wdXBQYXJhbS5idXR0b25fY2FsbGJhY2sudHJpbSgpO1xyXG5cdFx0dmFyIGluZm8gPSB7XHJcblx0XHQgICAgZXZlbnRpZDogY2FsbGJhY2tfZXZlbnRpZCxcclxuXHRcdCAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0ICAgIHByb2plY3RpZDogJycsXHJcblx0XHQgICAgcmNsc2lkOiAnJyxcclxuXHRcdCAgICByb2JqaWQ6ICcnLFxyXG5cdFx0ICAgIHVzZXJsb2dpbjogJycsXHJcblx0XHQgICAgY2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsXHJcblx0XHQgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHQgICAgYXR0cjogJHRoaXMuJGRhdGEucG9wdXBQYXJhbS5yZXEsXHJcblx0XHQgICAgZGF0YUpzb246IGRhdGFcclxuXHRcdH1cclxuXHRcdCR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCAkdGhpcy4kZGF0YS5wb3B1cFBhcmFtLmRhdGFfYXR0cik7XHJcblx0XHR0aGlzLiRyZWZzLnBvcHVwLmNsb3NlKCk7XHJcblx0fSxcclxuXHRcclxuXHREYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyxkYXRhX2F0dHIpe1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBlbnZpcm9tZW50ID0ge1xyXG5cdFx0ICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4ZcclxuXHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdCAgICBtYXN0ZXI6IHtcclxuXHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHQgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcclxuXHRcdCAgICB9XHJcblx0XHR9O1xyXG5cdFx0aWYoZGF0YV9hdHRyKXtcclxuXHRcdFx0ZW52aXJvbWVudC5lZGl0X2RsZyA9IHtcclxuXHRcdFx0ICAgIHR5cGU6ICdzbWFsbCcsLy/lsI/nqpflj6NcclxuXHRcdFx0ICAgIGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsLy/lvZPliY3mlbDmja7nsbtpZFxyXG5cdFx0XHR9XHJcblx0XHRcdGlmIChkYXRhX2F0dHIpIHtcclxuXHRcdFx0ICAgIGVudmlyb21lbnQuZWRpdF9kbGcuZm9ybV9jb250cm9sID0gey8v5omA5bGe55qE6KGo5Y2V5o6n5Lu2XHJcblx0XHRcdCAgICAgICAgbmFtZTogZGF0YV9hdHRyLk5hbWUsLy/lrZfmrrXlsZ7mgKdcclxuXHRcdFx0ICAgICAgICB0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsLy/mmL7npLrmlofmnKxcclxuXHRcdFx0ICAgICAgICBncm91cF9uYW1lOiBkYXRhX2F0dHIuR3JvdXBOYW1lLC8v5bGe5oCn57uEXHJcblx0XHRcdCAgICAgICAgdHlwZTogZGF0YV9hdHRyLlR5cGUsLy/lrZfmrrXnsbvlnotcclxuXHRcdFx0ICAgICAgICByZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LC8v5piv5ZCm5Y+q6K+7XHJcblx0XHRcdCAgICAgICAgYnV0dG9uX2ltZzogZGF0YV9hdHRyLmJ1dHRvbl9pbWcsLy/lvJXnlKjmjInpkq7nmoTlm77moIdcclxuXHRcdFx0ICAgICAgICBidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXHJcblx0XHRcdCAgICB9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0Ly8gdmFyIGRhdGFJbmZvID0ge1xyXG5cdFx0Ly8gICAgIGVkdHlwZTogaW5mby5lZHR5cGUsIGV2ZW50aWQ6IGluZm8uZXZlbnRpZCwgcHJvamVjdGlkOiBpbmZvLnByb2plY3RpZC5yZXBsYWNlKCd7JywnJykucmVwbGFjZSgnfScsJycpLFxyXG5cdFx0Ly8gICAgIHJjbHNpZDogaW5mby5yY2xzaWQsIHJvYmppZDogaW5mby5yb2JqaWQsIHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sIGNsc2lkOiBpbmZvLmNsc2lkLCBvYmppZDogaW5mby5vYmppZCxcclxuXHRcdC8vICAgICBhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgaW5wdXRwYXJhbWV0ZXI6IFwiXCIsXHJcblx0XHQvLyBcdGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKSwgZGF0YUpzb246SlNPTi5zdHJpbmdpZnkoaW5mby5kYXRhSnNvbilcclxuXHRcdC8vIH1cclxuXHRcdGVudmlyb21lbnQgPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpKTsvL+WwhuWtl+espuS4sui9rOaNouS4umJhc2U2NOe8lueggVxyXG5cdFx0dmFyIGlucHV0X3BhcmFtID0gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpKTsvL+WwhuWtl+espuS4sui9rOaNouS4umJhc2U2NOe8lueggVxyXG5cdFx0dmFyIGdsb2JhbF9hdHRyID0gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKSk7Ly/lsIblrZfnrKbkuLLovazmjaLkuLpiYXNlNjTnvJbnoIFcclxuXHRcdGlmKGluZm8uZGF0YUpzb24pXHJcblx0XHRcdGluZm8uZGF0YUpzb24gPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGluZm8uZGF0YUpzb24pKTsvL+WwhuWtl+espuS4sui9rOaNouS4umJhc2U2NOe8lueggVxyXG5cdFx0dmFyIG9ial9hdHRyPXt9O1xyXG5cdFx0aW5mby5hdHRyLmZvckVhY2goaXRlbT0+e1xyXG5cdFx0XHRvYmpfYXR0cltpdGVtLmF0dHJdID0gaXRlbS52YWw7XHJcblx0XHR9KTtcclxuXHRcdGlmKCFpbmZvLmV2ZW50aWQuaW5jbHVkZXMoJ3snKSkgaW5mby5ldmVudGlkID0gJ3snK2luZm8uZXZlbnRpZCsnfSc7XHJcblx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0ICBlZF90eXBlOiBpbmZvLmVkdHlwZSxcclxuXHRcdCAgc3RhcnRfdHJhbnNhY3Rpb246IHRydWUsXHJcblx0XHQgIGNsYXNzX2lkOiBpbmZvLmNsc2lkLFxyXG5cdFx0ICBjbGFzc19uYW1lOiAnJyxcclxuXHRcdCAgZXZlbnRfaWQ6IGluZm8uZXZlbnRpZCxcclxuXHRcdCAgZXZlbnRfbmFtZTogJycsXHJcblx0XHQgIGRhdGFfb2JqX2lkOiBpbmZvLm9iamlkLFxyXG5cdFx0ICBvYmpfYXR0cjogb2JqX2F0dHIsXHJcblx0XHQgIHByal9pZDogaW5mby5wcm9qZWN0aWQsXHJcblx0XHQgIHJlZl9jbHNfaWQ6IGluZm8ucmNsc2lkLFxyXG5cdFx0ICByZWxfb2JqX2lkOiBpbmZvLnJvYmppZCxcclxuXHRcdCAgdXNlcl9sb2dpbjogaW5mby51c2VybG9naW4sXHJcblx0XHQgIGRhdGFfanNvbjogaW5mby5kYXRhSnNvbixcclxuXHRcdCAgY29tcG9zZV9pbmZvOiAnJyxcclxuXHRcdCAgZXh0X2luZm86IGVudmlyb21lbnQsXHJcblx0XHQgIGdsb2JhbF9hdHRyOiBnbG9iYWxfYXR0cixcclxuXHRcdCAgaW5wdXRfcGFyYW06IGlucHV0X3BhcmFtLFxyXG5cdFx0fTtcclxuXHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdC8vIHJldHVybjtcclxuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdydW5DdXN0b21FdmVudCcsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0aWYgKHN1Y2Nlc3MuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBkYXRhID0gc3VjY2Vzcy5yZXN1bHQ7XHJcblx0XHRcdFx0aWYgKGRhdGEucmV0ICE9IDApIHtcclxuXHRcdFx0XHQgICAgdmFyIHRpcCA9IGRhdGEuZXJyX2luZm8gPyB0eXBlb2YgZGF0YS5lcnJfaW5mbyA9PSAnc3RyaW5nJyA/IGRhdGEuZXJyX2luZm8gOiBkYXRhLmVycl9pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHQgICAgaWYgKGRhdGEucmV0ID09IDgwMSkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytkYXRhLnJldCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0dmFyIHRpcCA9IGRhdGEuaW5mbyA/IHR5cGVvZiBkYXRhLmluZm8gPT0gJ3N0cmluZycgPyBkYXRhLmluZm8gOiBkYXRhLmluZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdFx0aWYgKHRpcCkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHR2YXIgYWN0aW9ubGlzdCA9IGRhdGEuYWN0aW9uO1xyXG5cdFx0XHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XHJcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYWN0aW9ubGlzdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2ldO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHZhciByZXN1bHQgPSBhY3Rpb24udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0W2ldLmNob2ljZV9saXN0KSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXMubGVuZ3RoOyBjKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zW2NdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0ci5uYW1lIT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIGlmKGF0dHIuZmllbGRJZD09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdHZhciBkaWN0SXRlbUxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0Zm9yKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0XHR2YXIgdmFsID1yZXN1bHRbaV0uY2hvaWNlX2xpc3RbZF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0XHRkaWN0SXRlbUxpc3QucHVzaCh7XCJDTl9TX05BTUVcIjp2YWwsXCJDTl9TX1ZBTFVFXCI6dmFsLFwidGV4dFwiOnZhbCxcInZhbHVlXCI6dmFsfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIuZGljdCA9IGRpY3RJdGVtTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKGF0dHIubmFtZT09J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBhdHRyLnNldHRpbmcuY29sTGlzdC5mb3JFYWNoKGNvbD0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGlmKGNvbCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBpZihjb2wuZmllbGRJZD09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRmb3IodmFyIGQgaW4gcmVzdWx0W2ldLmNob2ljZV9saXN0KXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0XHR2YXIgdmFsID1yZXN1bHRbaV0uY2hvaWNlX2xpc3RbZF07XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiQ05fU19WQUxVRVwiOnZhbCxcInRleHRcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC5kaWN0ID0gZGljdEl0ZW1MaXN0O1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXMubGVuZ3RoOyBjKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tjXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly/liKTmlq3ooajljZXph4zmmK/lkKbmnInov5Tlm57lrZfmrrXvvIzmsqHmnInlsLHoo4Xovb3liLBtb2RlbOmHjO+8jOeCueWHu+ehruWumuaPkOS6pOeahOaXtuWAmeW4puS4iui/meS6m+aVsOaNrlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmKCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFtyZXN1bHRbaV0uYXR0cl09PXVuZGVmaW5lZCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFtyZXN1bHRbaV0uYXR0cl09cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvL+WIpOaWreaYr+WQpuaYr+agheagvOihqOWNlVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHIubmFtZSE9J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgaWYoYXR0ci5maWVsZElkPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIudmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLm9sZHZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0ci5maWVsZElkXSA9cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihhdHRyLm5hbWU9PSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIGF0dHIuc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGlmKGNvbCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgaWYoY29sLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC52YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLm9sZHZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wudmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wub2xkdmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbY29sLmZpZWxkSWRdID1yZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZGF0YS5hY3Rpb25baV0uYWN0aW9uX3R5cGUgPT0gJ3NldF9nbG9iYWxfYXR0cicpIHtcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmdsb2JhbF9hdHRyID0gZGF0YS5hY3Rpb25baV0udmFsdWUgfHwgW107XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQvLyB2YXIgaGVhZF9zdHlsZWRlZiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoJHRoaXMuaGVhZF9zdHlsZWRlZikpO1xyXG5cdFx0XHRcdFx0Ly8gJHRoaXMuaGVhZF9zdHlsZWRlZj1bXTtcclxuXHRcdFx0XHRcdC8vICR0aGlzLmhlYWRfc3R5bGVkZWYgPSBoZWFkX3N0eWxlZGVmO1xyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coJHRoaXMuaGVhZF9zdHlsZWRlZik7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGlmIChkYXRhLnJlc3VsdCkge1xyXG5cdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XHJcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXMubGVuZ3RoOyBjKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zW2NdO1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly/liKTmlq3ooajljZXph4zmmK/lkKbmnInov5Tlm57lrZfmrrXvvIzmsqHmnInlsLHoo4Xovb3liLBtb2RlbOmHjO+8jOeCueWHu+ehruWumuaPkOS6pOeahOaXtuWAmeW4puS4iui/meS6m+aVsOaNrlxyXG5cdFx0XHRcdFx0XHRcdFx0aWYoJHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW3Jlc3VsdFtpXS5hdHRyXT09dW5kZWZpbmVkKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgXHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbcmVzdWx0W2ldLmF0dHJdPXJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdC8v5Yik5pat5piv5ZCm5piv5qCF5qC86KGo5Y2VXHJcblx0XHRcdFx0XHRcdFx0XHRpZihhdHRyLm5hbWUhPSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgaWYoYXR0ci5maWVsZElkPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci52YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIub2xkdmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIub2xkdmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHQgIFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHIuZmllbGRJZF0gPXJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKGF0dHIubmFtZT09J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBhdHRyLnNldHRpbmcuY29sTGlzdC5mb3JFYWNoKGNvbD0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgIGlmKGNvbCl7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgICBpZihjb2wuZmllbGRJZD09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wudmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLm9sZHZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLm9sZHZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgXHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbY29sLmZpZWxkSWRdID1yZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XHJcblx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xyXG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vM1wiLGNvbnRlbnQ6c3VjY2Vzcy5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMy4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdERhdGFPYmpSdW5DdXN0b21FdmVudF9SZXR1cm4oZXZlbnRpZCxkYXRhX2F0dHIsYnV0dG9uX2NhbGxiYWNrLGl0ZW0pe1xyXG5cdFx0dmFyIGVudmlyb21lbnQgPSB7XHJcblx0XHQgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdCAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uRGF0YUNscy5pZCwgICAgIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxyXG5cdFx0ICAgICdidXR0b24nOiAndG9wJywgICAvLyB0b3AvYm90dG9tXHJcblx0XHQgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxyXG5cdFx0ICAgIG1hc3Rlcjoge1xyXG5cdFx0ICAgICAgICBjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uRGF0YUNscy5pZCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcclxuXHRcdCAgICAgICAgLy9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxyXG5cdFx0ICAgIH1cclxuXHRcdH07XHJcblx0XHR2YXIgb2JqX2F0dHIgPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHRcdC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHRcdHZhciByZXEgPSBPYmplY3Qua2V5cyhvYmpfYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdFx0XHRhdHRyOiBhLFxyXG5cdFx0XHR2YWw6IG9ial9hdHRyW2FdIHx8IFwiXCIsXHJcblx0XHR9KSk7XHJcblx0XHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xyXG5cdFx0ICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBpKyspIHtcclxuXHRcdCAgICAgICAgaWYgKCFyZXEuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHQgICAgICAgICAgICByZXR1cm4gdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciA9PSBzLm5hbWVcclxuXHRcdCAgICAgICAgfSkubGVuZ3RoKSB7XHJcblx0XHQgICAgICAgICAgICBsZW5ndGggPSAxO1xyXG5cdFx0ICAgICAgICAgICAgcmVxLnB1c2goeyAnYXR0cic6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIsICd2YWwnOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS52YWx1ZSB9KTtcclxuXHRcdCAgICAgICAgfVxyXG5cdFx0ICAgIH1cclxuXHRcdH1cclxuXHRcdHZhciBleHRpbmZvID0gZW52aXJvbWVudDtcclxuXHRcdGV4dGluZm8uZWRpdF9kbGcgPSB7XHJcblx0XHQgICAgdHlwZTogJ3NtYWxsJywvL+Wwj+eql+WPo1xyXG5cdFx0ICAgIGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsLy/lvZPliY3mlbDmja7nsbtpZFxyXG5cdFx0fVxyXG5cdFx0Ly8gdmFyIGRhdGFJbmZvID0ge1xyXG5cdFx0Ly8gXHRlZHR5cGU6ICBcIjBcIiwgZXZlbnRpZDogZXZlbnRpZCwgcHJvamVjdGlkOiAnJyxyY2xzaWQ6ICcnLCByb2JqaWQ6ICcnLCB1c2VybG9naW46ICcnLCBcclxuXHRcdC8vIFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uRGF0YUNscy5pZCwgb2JqaWQ6ICcnLGF0dHI6IEpTT04uc3RyaW5naWZ5KHJlcSksIFxyXG5cdFx0Ly8gXHRleHRpbmZvOiBKU09OLnN0cmluZ2lmeShleHRpbmZvKSwgZ2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXHJcblx0XHQvLyB9XHJcblx0XHRleHRpbmZvID0gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeShleHRpbmZvKSk7Ly/lsIblrZfnrKbkuLLovazmjaLkuLpiYXNlNjTnvJbnoIFcclxuXHRcdHZhciBnbG9iYWxfYXR0ciA9IEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cikpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0XHR2YXIgb2JqX2F0dHI9e307XHJcblx0XHRyZXEuZm9yRWFjaChpdGVtPT57XHJcblx0XHRcdG9ial9hdHRyW2l0ZW0uYXR0cl0gPSBpdGVtLnZhbDtcclxuXHRcdH0pO1xyXG5cdFx0aWYoIWV2ZW50aWQuaW5jbHVkZXMoJ3snKSkgZXZlbnRpZD0gJ3snKyBldmVudGlkICsnfSc7XHJcblx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0ICBlZF90eXBlOiBcIjBcIixcclxuXHRcdCAgc3RhcnRfdHJhbnNhY3Rpb246IHRydWUsXHJcblx0XHQgIGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsXHJcblx0XHQgIGNsYXNzX25hbWU6ICcnLFxyXG5cdFx0ICBldmVudF9pZDogZXZlbnRpZCxcclxuXHRcdCAgZXZlbnRfbmFtZTogJycsXHJcblx0XHQgIGRhdGFfb2JqX2lkOiAnJyxcclxuXHRcdCAgb2JqX2F0dHI6IG9ial9hdHRyLFxyXG5cdFx0ICBwcmpfaWQ6ICcnLFxyXG5cdFx0ICByZWZfY2xzX2lkOiAnJyxcclxuXHRcdCAgcmVsX29ial9pZDogJycsXHJcblx0XHQgIHVzZXJfbG9naW46ICcnLFxyXG5cdFx0ICBkYXRhX2pzb246ICcnLFxyXG5cdFx0ICBjb21wb3NlX2luZm86ICcnLFxyXG5cdFx0ICBleHRfaW5mbzogZXh0aW5mbyxcclxuXHRcdCAgZ2xvYmFsX2F0dHI6IGdsb2JhbF9hdHRyLFxyXG5cdFx0ICBpbnB1dF9wYXJhbTogJycsXHJcblx0XHR9O1xyXG5cdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0Ly8gcmV0dXJuO1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3J1bkN1c3RvbUV2ZW50JyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRpZiAoc3VjY2Vzcy5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIGRhdGEgPSBzdWNjZXNzLnJlc3VsdDtcclxuXHRcdFx0XHRpZiAoZGF0YS5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdCAgICB2YXIgdGlwID0gZGF0YS5lcnJfaW5mbyA/IHR5cGVvZiBkYXRhLmVycl9pbmZvID09ICdzdHJpbmcnID8gZGF0YS5lcnJfaW5mbyA6IGRhdGEuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdCAgICBpZiAoZGF0YS5yZXQgPT0gODAxKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHQgICAgZWxzZSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCsnLOaPkOekujonK2RhdGEucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlXHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR2YXIgdGlwID0gZGF0YS5pbmZvID8gdHlwZW9mIGRhdGEuaW5mbyA9PSAnc3RyaW5nJyA/IGRhdGEuaW5mbyA6IGRhdGEuaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcdGlmIChkYXRhICE9IFwiXCIpIHtcclxuXHRcdFx0XHRcdHZhciBhY3Rpb25zID0gZGF0YS5hY3Rpb247XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25zKTtcclxuXHRcdFx0XHRcdGlmIChhY3Rpb25zKSB7XHJcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYWN0aW9ucy5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdHZhciBhY3Rpb24gPSBhY3Rpb25zW2ldO1xyXG5cdFx0XHRcdFx0XHRcdHZhciB2YWwgPSBhY3Rpb24udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0dmFyIGVudmlyb21lbnQgPSBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KTtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3BhbmVsJykge1xyXG5cdFx0XHRcdFx0XHRcdCAgIHZhciBkID0gZGlhbG9nKHtcclxuXHRcdFx0XHRcdFx0XHRcdCAgIHRpdGxlOiAnPGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1pbmZvLWNpcmNsZVwiPjwvaT4gJyArICfmj5DnpLonLFxyXG5cdFx0XHRcdFx0XHRcdFx0ICAgY29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcclxuXHRcdFx0XHRcdFx0XHQgICB9KTtcclxuXHRcdFx0XHRcdFx0XHQgICBkLnNob3coKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3NlbGVjdF91c2VyZGxnJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHN0eWxlID0gdmFsLnN0eWxlO1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gc3R5bGUgPT0gJ3VzZXInID8gJ+mAieaLqeS6uuWRmCcgOiBzdHlsZSA9PSAnZGVwYXJ0bWVudCcgPyAn6YCJ5oup6YOo6ZeoJyA6IHN0eWxlID09ICdyb2xlJyA/ICfpgInmi6nop5LoibInIDogJydcclxuXHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW09e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpdGVtOiBpdGVtLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRidXR0b25fY2FsbGJhY2s6YnV0dG9uX2NhbGxiYWNrLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXE6cmVxLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRkYXRhX2F0dHI6ZGF0YV9hdHRyXHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR1bmkubmF2aWdhdGVUbyh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHVybDonLi4vc2VscHNuL2luZGV4P211bGl0PWZhbHNlJnBhcmFtPScrSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRldmVudHM6e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEFkZFBlcihkYXRhLHBhcmFtKXsgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRldmVudGlkOiBjYWxsYmFja19ldmVudGlkLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uRGF0YUNscy5pZCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IHBhcmFtLnJlcSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aW5wdXRwYXJhbWV0ZXI6IGRhdGEsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGFKc29uOltdLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIHBhcmFtLmRhdGFfYXR0cik7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9KTtcdFxyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fZGF0YV9xdWVyeV9kbGcnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgZCA9IGRpYWxvZyh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAnPGkgY2xhc3M9XCJhY2UtaWNvbiBmYSBmYS1pbmZvLWNpcmNsZVwiPjwvaT4gJyArICfmj5DnpLonLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiBhY3Rpb24uYWN0aW9uX3R5cGUgKyAn5q2kYWN0aW9u5bCa5pyq5aSE55CG77yBJ1xyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0XHRkLnNob3coKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX2NvbW1vbl9kbGcnKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYodmFsLmNvbW1vbl9kbGdfaWQgPT0gJ2NoZWNrX2xpc3QnKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgICR0aGlzLiRkYXRhLmNoZWNrX2xpc3Q9IHZhbC5jb25maWc7XHJcblx0XHRcdFx0XHRcdFx0XHQgICBpZih2YWwuY29uZmlnLmFwcGVhcl9zdHlsZSA9PSAnc2lkZXNsaXAnKSAvL+WIpOaWreaYr+WQpuaYr+S+p+a7kVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnBvcHVwVHlwZSA9ICdyaWdodCc7XHJcblx0XHRcdFx0XHRcdFx0XHQgICBlbHNlXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucG9wdXBUeXBlID0gJ2NlbnRlcidcclxuXHRcdFx0XHRcdFx0XHRcdCAgIC8vIG9wZW4g5pa55rOV5Lyg5YWl5Y+C5pWwIOetieWQjOWcqCB1bmktcG9wdXAg57uE5Lu25LiK57uR5a6aIHR5cGXlsZ7mgKdcclxuXHRcdFx0XHRcdFx0XHRcdCAgICR0aGlzLiRyZWZzLnBvcHVwLm9wZW4oJHRoaXMuJGRhdGEucG9wdXBUeXBlKTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgIHZhciBwb3B1cFBhcmFtPXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aXRlbTogaXRlbSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0YnV0dG9uX2NhbGxiYWNrOmJ1dHRvbl9jYWxsYmFjayxcclxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxOnJlcSxcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZGF0YV9hdHRyOmRhdGFfYXR0clxyXG5cdFx0XHRcdFx0XHRcdFx0ICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0ICAgJHRoaXMuJGRhdGEucG9wdXBQYXJhbT0gcG9wdXBQYXJhbTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3Byb2plY3RfcXVlcnlfZGxnJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly9jb25zb2xlLmxvZyhhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlKTtcclxuXHRcdFx0XHRcdFx0XHRcdC8vY29uc29sZS5sb2coYWN0aW9uLnZhbHVlLm11bGl0X3NlbGVjdCk7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgcHJpUmVsID0gJy0xJztcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICflhajpg6jnm7jlhbMnKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnMCc7XHJcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHotJ/otKPnmoTpobnnm64nKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnMSc7XHJcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHliJvlu7rnmoQnKVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnMic7XHJcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LkuI7nmoQnIHx8IGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWPguWKoOeahCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICczJztcclxuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWFs+azqOeahCcpXHJcblx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICc0JztcclxuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeS4i+WxnueahOmhueebricpXHJcblx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICc1JztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHBhcmFtXz17XHJcblx0XHRcdFx0XHRcdFx0XHRcdGl0ZW06IGl0ZW0sXHJcblx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvbl9jYWxsYmFjazpidXR0b25fY2FsbGJhY2ssXHJcblx0XHRcdFx0XHRcdFx0XHRcdHJlcTpyZXFcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0dXJsOicuLi9zZWxQcmovaW5kZXg/cmVsYXRpb249JytwcmlSZWwrJyZwYXJhbT0nK0pTT04uc3RyaW5naWZ5KHBhcmFtXyksXHJcblx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50czp7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QWRkUGVyKGRhdGEscGFyYW0peyBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gcGFyYW0uaXRlbS5maWVsZElkO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gZGF0YVswXS5JRCsnOycrZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uVmFsdWU9ZGF0YVswXS5OYW1lO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEPWRhdGFbMF0uSUQrJzsnK2RhdGFbMF0uTmFtZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYWxsYmFja19ldmVudGlkKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGNhbGxiYWNrX2V2ZW50aWQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjJcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6IGRhdGFbMF0uSUQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmNsc2lkOiBcIlwiLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJvYmppZDogXCJcIixcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VybG9naW46IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogcGFyYW0ucmVxLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRhdGFKc29uOltdLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIGQgPSBkaWFsb2coe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6JyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcclxuXHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0ZC5zaG93KCk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLo1LjJcIixjb250ZW50OiAn6LCD55SoIGJlZm9yZV9jbGlja19idXR0b24g6ISa5pys6L+U5Zue56m677yMZXZlbnRfaWQnICsgZXZlbnRpZCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNVwiLGNvbnRlbnQ6c3VjY2Vzcy5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6NS4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdFxyXG5cdC8v56Gu5a6aXHJcblx0c2F2YSgpe1xyXG5cdFx0Ly8gaWYgKHRoaXMuJGRhdGEuZWRpdF9va19ldmVudClcclxuXHRcdC8vIFx0dGhpcy5PS0RhdGFPYmpSdW5DdXN0b21FdmVudCgpO1xyXG5cdFx0Ly8gZWxzZVxyXG5cdFx0XHR0aGlzLmFkZCgpO1xyXG5cdH0sXHJcblx0YWRkKCl7XHJcblx0XHR1bmkuc2hvd0xvYWRpbmcoe1xyXG5cdFx0XHR0aXRsZTpcIuWKoOi9veS4rS4uLlwiLFxyXG5cdFx0XHRtYXNrOnRydWVcclxuXHRcdH0pO1xyXG5cdFx0dmFyIG9ial9hdHRyID0gdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWw7XHJcblx0XHRjb25zb2xlLmxvZyhvYmpfYXR0cik7XHJcblx0XHQvLyB2YXIgcmVxID0gT2JqZWN0LmtleXMob2JqX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdC8vIFx0bmFtZTogYSxcclxuXHRcdC8vIFx0dmFsdWU6IG9ial9hdHRyW2FdIHx8IFwiXCIsXHJcblx0XHQvLyB9KSk7XHJcblx0XHJcblx0XHR2YXIgZW52aXJvbWVudCA9IHtcclxuXHRcdCAgICAgJ2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdCAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4ZcclxuXHRcdCAgICAgJ2J1dHRvbic6ICd0b3AnLCAgIC8vIHRvcC9ib3R0b21cclxuXHRcdCAgICAgYnV0dG9uX25hbWU6ICfmlrDlop4nLFxyXG5cdFx0ICAgICBtYXN0ZXI6IHtcclxuXHRcdCAgICAgICAgIGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5EYXRhQ2xzLmlkLCBcclxuXHRcdCAgICAgfVxyXG5cdFx0fTtcclxuXHRcdGVudmlyb21lbnQgPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpKTsvL+WwhuWtl+espuS4sui9rOaNouS4umJhc2U2NOe8lueggVxyXG5cdFx0XHJcblx0XHQvLyBjb25zb2xlLmxvZyhvYmpfYXR0cik7XHJcblx0XHQvLyB2YXIgZGF0YUluZm89e1xyXG5cdFx0Ly8gICAgIGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsIGRhdGFfb2JqX2lkOiAnJywgbWFzdGVyY2xzaWQ6ICcnLFxyXG5cdFx0Ly8gICAgIHJlcTogSlNPTi5zdHJpbmdpZnkocmVxKSwgdXBmaWxlOiBKU09OLnN0cmluZ2lmeShbXSksIHBvc3RfZGF0YTogSlNPTi5zdHJpbmdpZnkoe30pLFxyXG5cdFx0Ly8gICAgIGNvbXBvc2U6IEpTT04uc3RyaW5naWZ5KFtdKSwgcmVmZGF0YXN0b3JlOiBKU09OLnN0cmluZ2lmeShbXSksIGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLCBcclxuXHRcdC8vIFx0bm90X3RyaWdnZXJfc3lzX2V2ZW50OiAnJ1xyXG5cdFx0Ly8gfTtcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLkRhdGFDbHMuaWQsXHJcblx0XHRcdGNsYXNzX25hbWU6JycsXHJcblx0XHRcdG1hc3Rlcl9jbHNfaWQ6JycsXHJcblx0XHRcdG1hc3Rlcl9vYmpfaWQ6JycsXHJcblx0XHRcdGNyZWF0b3I6JycsXHJcblx0XHRcdGNyZWF0b3JfbmFtZTonJyxcclxuXHRcdFx0bm90X3RyaWdnZXJfZXZlbnQ6JycsXHJcblx0XHRcdHVwZGF0ZV9leGlzdDonJyxcclxuXHRcdFx0cG9zdF9wcm9jZXNzOicnLFxyXG5cdFx0XHRleHRfaW5mbzogZW52aXJvbWVudCxcclxuXHRcdFx0b2JqX2F0dHI6IG9ial9hdHRyXHJcblx0XHR9O1xyXG5cdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0Ly8gcmV0dXJuXHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY3JlYXRlRGF0YU9iaicsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdGlmIChzdWNjZXNzLmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgcmVzdWx0ID0gc3VjY2Vzcy5yZXN1bHQ7XHJcblx0XHRcdFx0Ly8gaWYocmVzdWx0LnJlc3VsdF90eXBlID09IDApe31cclxuXHRcdFx0XHRpZihzdWNjZXNzLnJlc3VsdC5hY3Rpb24pe1xyXG5cdFx0XHRcdFx0dmFyIGFjdGlvbiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5yZXN1bHQuYWN0aW9uKTtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGFjdGlvbik7XHJcblx0XHRcdFx0XHRpZihhY3Rpb24ucmV0PT0nMCcpe1xyXG5cdFx0XHRcdFx0XHRpZiAoYWN0aW9uLnJldCAhPSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OifmiafooYzohJrmnKzlpLHotKXvvIwnICsgYWN0aW9uLnJlc3VsdCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKGFjdGlvbi5pbmZvKSB7XHJcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OifmiafooYzohJrmnKzlpLHotKXvvIwnICsgYWN0aW9uLmluZm8sc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmKGFjdGlvbi5yZXN1bHRfdHlwZT09JzAnKXtcclxuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHt0aXRsZTphY3Rpb24ucmVzdWx0LGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xyXG5cdFx0XHRcdFx0XHR9IFxyXG5cdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0Ly8gXCJ7XCJyZXRcIjowLCBcInJlc3VsdF90eXBlXCI6MCwgXCJyZXN1bHRcIjpcIuWIm+W7uuaIkOWKnzEyMzEyMzEyM1wiLFwiaW5mb1wiOlwiXCJ9XCJcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGVsc2VcclxuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe3RpdGxlOlwi5Yib5bu65oiQ5Yqf77yBXCIsaWNvbjpcInN1Y2Nlc3NcIixkdXJhdGlvbjozMDAwfSk7XHJcblx0XHRcdFx0Ly/liLfmlrBcclxuXHRcdFx0XHR1bmkucmVkaXJlY3RUbyh7XHJcblx0XHRcdFx0XHR1cmw6Jy4uL21vZGFsLzMwMThfMj9wYXJhbT0nK0pTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEucGFyYW0pK1wiJnRpdGxlbmFtZT1cIit0aGlzLiRkYXRhLnRpdGxlXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0Ly8gdGhpcy5jbGFzc19hdHRyX2luaXQoKTtcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor69cIixjb250ZW50OnN1Y2Nlc3MuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Y29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG5cdH0sXHJcblx0Y2FuY2VsKGUpeyAvL+WPlua2iFxyXG5cdFx0dW5pLm5hdmlnYXRlQmFjayh7XHJcblx0XHRcdGRlbHRhOjEgLy/ov5Tlm57lsYLmlbDvvIwy5YiZ5LiK5LiK6aG1XHJcblx0XHR9KTtcclxuXHR9LFxyXG4gIH0sXHJcbn07XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///150\n"); |
| | | |
| | | /***/ }), |
| | | /* 151 */ |
| | |
| | | attrs: { _i: "1-" + $30 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "text", |
| | | { |
| | | staticClass: _vm._$s("2-" + $30, "sc", "txt_title"), |
| | | style: _vm._$s("2-" + $30, "s", { |
| | | width: item.labelWidth + "px", |
| | | }), |
| | | attrs: { _i: "2-" + $30 }, |
| | | }, |
| | | [_vm._v(_vm._$s("2-" + $30, "t0-0", _vm._s(item.label)))] |
| | | ), |
| | | _vm._$s("3-" + $30, "i", item.name == "Select") |
| | | ? _c("uni-data-select", { |
| | | class: _vm._$s( |
| | | "3-" + $30, |
| | | "c", |
| | | item.disabled ? "input-disabled" : "" |
| | | ), |
| | | attrs: { |
| | | id: "dv_select", |
| | | localdata: item.dict, |
| | | disabled: item.disabled, |
| | | clear: false, |
| | | _i: "3-" + $30, |
| | | }, |
| | | on: { |
| | | change: function ($event) { |
| | | return _vm.onchange(item) |
| | | }, |
| | | }, |
| | | model: { |
| | | value: _vm._$s("3-" + $30, "v-model", item.value), |
| | | callback: function ($$v) { |
| | | _vm.$set(item, "value", $$v) |
| | | }, |
| | | expression: "item.value", |
| | | }, |
| | | }) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "4-" + $30, |
| | | "2-" + $30, |
| | | "i", |
| | | item.name == "Input" || item.name == "InputNumber" |
| | | item.name != "Layout" && item.show == true |
| | | ) |
| | | ? _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s("4-" + $30, "sc", "input-wrapper"), |
| | | attrs: { _i: "4-" + $30 }, |
| | | }, |
| | | [ |
| | | _vm._$s("5-" + $30, "i", item.setting.prefix) |
| | | ? _c("text", { |
| | | staticClass: _vm._$s("5-" + $30, "sc", "uni-icon"), |
| | | class: _vm._$s("5-" + $30, "c", [ |
| | | item.setting.prefix, |
| | | ]), |
| | | attrs: { _i: "5-" + $30 }, |
| | | _c( |
| | | "text", |
| | | { |
| | | staticClass: _vm._$s("3-" + $30, "sc", "txt_title"), |
| | | style: _vm._$s("3-" + $30, "s", { |
| | | width: item.labelWidth + "px", |
| | | }), |
| | | attrs: { _i: "3-" + $30 }, |
| | | }, |
| | | [ |
| | | _vm._v( |
| | | _vm._$s("3-" + $30, "t0-0", _vm._s(item.label)) |
| | | ), |
| | | ] |
| | | ), |
| | | _vm._$s("4-" + $30, "i", item.name == "Select") |
| | | ? _c("uni-data-select", { |
| | | class: _vm._$s( |
| | | "4-" + $30, |
| | | "c", |
| | | item.disabled ? "input-disabled" : "" |
| | | ), |
| | | attrs: { |
| | | id: "dv_select", |
| | | localdata: item.dict, |
| | | disabled: item.disabled, |
| | | clear: false, |
| | | _i: "4-" + $30, |
| | | }, |
| | | on: { |
| | | change: function ($event) { |
| | | return _vm.onchange(item) |
| | | }, |
| | | }, |
| | | }) |
| | | : _vm._e(), |
| | | _c("input", { |
| | | directives: [ |
| | | { |
| | | name: "model", |
| | | rawName: "v-model", |
| | | value: item.value, |
| | | expression: "item.value", |
| | | }, |
| | | ], |
| | | staticClass: _vm._$s("6-" + $30, "sc", "uni-input"), |
| | | class: _vm._$s( |
| | | "6-" + $30, |
| | | "c", |
| | | item.disabled ? "input-disabled" : "" |
| | | ), |
| | | style: _vm._$s("6-" + $30, "s", { |
| | | width: |
| | | item.setting.prefix && item.setting.suffix |
| | | ? "78%" |
| | | : item.setting.prefix || item.setting.suffix |
| | | ? "87%" |
| | | : "96%", |
| | | }), |
| | | attrs: { |
| | | type: _vm._$s( |
| | | "6-" + $30, |
| | | "a-type", |
| | | item.name == "Input" |
| | | ? "text" |
| | | : item.name == "InputNumber" |
| | | ? "number" |
| | | : "text" |
| | | ), |
| | | disabled: _vm._$s( |
| | | "6-" + $30, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | placeholder: _vm._$s( |
| | | "6-" + $30, |
| | | "a-placeholder", |
| | | item.placeholder |
| | | ), |
| | | focus: _vm._$s( |
| | | "6-" + $30, |
| | | "a-focus", |
| | | _vm.focusMateria |
| | | ), |
| | | _i: "6-" + $30, |
| | | }, |
| | | domProps: { |
| | | value: _vm._$s("6-" + $30, "v-model", item.value), |
| | | }, |
| | | on: { |
| | | focus: function ($event) { |
| | | return _vm.ontap(item) |
| | | }, |
| | | blur: function ($event) { |
| | | return _vm.onevent(item) |
| | | }, |
| | | input: function ($event) { |
| | | if ($event.target.composing) { |
| | | return |
| | | } |
| | | _vm.$set(item, "value", $event.target.value) |
| | | }, |
| | | }, |
| | | }), |
| | | _vm._$s("7-" + $30, "i", item.setting.suffix) |
| | | ? _c("text", { |
| | | staticClass: _vm._$s("7-" + $30, "sc", "uni-icon"), |
| | | class: _vm._$s("7-" + $30, "c", [ |
| | | item.setting.suffix, |
| | | ]), |
| | | attrs: { _i: "7-" + $30 }, |
| | | on: { |
| | | click: function ($event) { |
| | | return _vm.onchange(item) |
| | | model: { |
| | | value: _vm._$s("4-" + $30, "v-model", item.value), |
| | | callback: function ($$v) { |
| | | _vm.$set(item, "value", $$v) |
| | | }, |
| | | expression: "item.value", |
| | | }, |
| | | }) |
| | | : _vm._e(), |
| | | ] |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s("8-" + $30, "i", item.name == "Textarea") |
| | | ? _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s("8-" + $30, "sc", "input-wrapper"), |
| | | attrs: { _i: "8-" + $30 }, |
| | | }, |
| | | [ |
| | | _c("textarea", { |
| | | staticClass: _vm._$s("9-" + $30, "sc", "uni-input"), |
| | | class: _vm._$s( |
| | | "9-" + $30, |
| | | "c", |
| | | item.disabled ? "input-disabled" : "" |
| | | ), |
| | | style: _vm._$s("9-" + $30, "s", { width: "96%" }), |
| | | attrs: { |
| | | value: _vm._$s("9-" + $30, "a-value", item.value), |
| | | placeholder: _vm._$s( |
| | | "9-" + $30, |
| | | "a-placeholder", |
| | | item.placeholder |
| | | ), |
| | | "data-index": _vm._$s( |
| | | "9-" + $30, |
| | | "a-data-index", |
| | | index |
| | | ), |
| | | disabled: _vm._$s( |
| | | "9-" + $30, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | _i: "9-" + $30, |
| | | }, |
| | | on: { |
| | | blur: function ($event) { |
| | | return _vm.onModelValue(item) |
| | | }, |
| | | }, |
| | | }), |
| | | ] |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s("10-" + $30, "i", item.name == "Checkbox") |
| | | ? _c( |
| | | "checkbox-group", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "10-" + $30, |
| | | "sc", |
| | | "check_rememberPwd" |
| | | ), |
| | | class: _vm._$s( |
| | | "10-" + $30, |
| | | "c", |
| | | item.disabled ? "input-disabled" : "" |
| | | ), |
| | | style: _vm._$s("10-" + $30, "s", { |
| | | "margin-left": "10rpx", |
| | | }), |
| | | attrs: { |
| | | disabled: _vm._$s( |
| | | "10-" + $30, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | "data-ischeck": _vm._$s( |
| | | "10-" + $30, |
| | | "a-data-ischeck", |
| | | item.value |
| | | ), |
| | | _i: "10-" + $30, |
| | | }, |
| | | on: { |
| | | change: function ($event) { |
| | | return _vm.onModelValue(item) |
| | | }, |
| | | }, |
| | | }, |
| | | [ |
| | | _c("label", [ |
| | | _c("checkbox", { |
| | | attrs: { |
| | | value: _vm._$s("12-" + $30, "a-value", item.value), |
| | | checked: _vm._$s( |
| | | "12-" + $30, |
| | | "a-checked", |
| | | item.value |
| | | ), |
| | | _i: "12-" + $30, |
| | | }, |
| | | }), |
| | | _c("text", [ |
| | | _vm._v( |
| | | _vm._$s("13-" + $30, "t0-0", _vm._s(item.label)) |
| | | ), |
| | | ]), |
| | | ]), |
| | | ] |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s("14-" + $30, "i", item.name == "Switch") |
| | | ? _c("switch", { |
| | | class: _vm._$s( |
| | | "14-" + $30, |
| | | "c", |
| | | item.disabled ? "input-disabled" : "" |
| | | ), |
| | | style: _vm._$s("14-" + $30, "s", { |
| | | "margin-left": "10rpx", |
| | | }), |
| | | attrs: { |
| | | disabled: _vm._$s( |
| | | "14-" + $30, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | _i: "14-" + $30, |
| | | }, |
| | | on: { |
| | | change: function ($event) { |
| | | return _vm.onModelValue(item) |
| | | }, |
| | | }, |
| | | model: { |
| | | value: _vm._$s("14-" + $30, "v-model", item.value), |
| | | callback: function ($$v) { |
| | | _vm.$set(item, "value", $$v) |
| | | }, |
| | | expression: "item.value", |
| | | }, |
| | | }) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "15-" + $30, |
| | | "i", |
| | | item.name == "TimePicker" || item.name == "DatePicker" |
| | | ) |
| | | ? _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s("15-" + $30, "sc", "input-wrapper"), |
| | | attrs: { _i: "15-" + $30 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "picker", |
| | | { |
| | | staticClass: _vm._$s("16-" + $30, "sc", "date_iput"), |
| | | class: _vm._$s( |
| | | "16-" + $30, |
| | | "c", |
| | | item.disabled ? "input-disabled" : "" |
| | | ), |
| | | attrs: { |
| | | disabled: _vm._$s( |
| | | "16-" + $30, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | value: _vm._$s("16-" + $30, "a-value", item.value), |
| | | _i: "16-" + $30, |
| | | }, |
| | | on: { |
| | | change: function ($event) { |
| | | return _vm.onModelValue(item) |
| | | }, |
| | | }, |
| | | }, |
| | | [ |
| | | _c( |
| | | _vm._$s( |
| | | "5-" + $30, |
| | | "i", |
| | | item.name == "Input" || item.name == "InputNumber" |
| | | ) |
| | | ? _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s("17-" + $30, "sc", "picker"), |
| | | attrs: { _i: "17-" + $30 }, |
| | | staticClass: _vm._$s( |
| | | "5-" + $30, |
| | | "sc", |
| | | "input-wrapper" |
| | | ), |
| | | attrs: { _i: "5-" + $30 }, |
| | | }, |
| | | [ |
| | | _vm._v( |
| | | _vm._$s("17-" + $30, "t0-0", _vm._s(item.value)) |
| | | _vm._$s("6-" + $30, "i", item.setting.prefix) |
| | | ? _c("text", { |
| | | staticClass: _vm._$s( |
| | | "6-" + $30, |
| | | "sc", |
| | | "uni-icon" |
| | | ), |
| | | class: _vm._$s("6-" + $30, "c", [ |
| | | item.setting.prefix, |
| | | ]), |
| | | attrs: { _i: "6-" + $30 }, |
| | | on: { |
| | | change: function ($event) { |
| | | return _vm.onchange(item) |
| | | }, |
| | | }, |
| | | }) |
| | | : _vm._e(), |
| | | _c("input", { |
| | | directives: [ |
| | | { |
| | | name: "model", |
| | | rawName: "v-model", |
| | | value: item.value, |
| | | expression: "item.value", |
| | | }, |
| | | ], |
| | | staticClass: _vm._$s( |
| | | "7-" + $30, |
| | | "sc", |
| | | "uni-input" |
| | | ), |
| | | class: _vm._$s( |
| | | "7-" + $30, |
| | | "c", |
| | | item.disabled ? "input-disabled" : "" |
| | | ), |
| | | style: _vm._$s("7-" + $30, "s", { |
| | | width: |
| | | item.setting.prefix && item.setting.suffix |
| | | ? "78%" |
| | | : item.setting.prefix || |
| | | item.setting.suffix |
| | | ? "87%" |
| | | : "96%", |
| | | }), |
| | | attrs: { |
| | | type: _vm._$s( |
| | | "7-" + $30, |
| | | "a-type", |
| | | item.name == "Input" |
| | | ? "text" |
| | | : item.name == "InputNumber" |
| | | ? "number" |
| | | : "text" |
| | | ), |
| | | disabled: _vm._$s( |
| | | "7-" + $30, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | placeholder: _vm._$s( |
| | | "7-" + $30, |
| | | "a-placeholder", |
| | | item.placeholder |
| | | ), |
| | | focus: _vm._$s( |
| | | "7-" + $30, |
| | | "a-focus", |
| | | _vm.focusMateria |
| | | ), |
| | | _i: "7-" + $30, |
| | | }, |
| | | domProps: { |
| | | value: _vm._$s( |
| | | "7-" + $30, |
| | | "v-model", |
| | | item.value |
| | | ), |
| | | }, |
| | | on: { |
| | | focus: function ($event) { |
| | | return _vm.ontap(item) |
| | | }, |
| | | blur: function ($event) { |
| | | return _vm.onevent(item) |
| | | }, |
| | | input: function ($event) { |
| | | if ($event.target.composing) { |
| | | return |
| | | } |
| | | _vm.$set(item, "value", $event.target.value) |
| | | }, |
| | | }, |
| | | }), |
| | | _vm._$s("8-" + $30, "i", item.setting.suffix) |
| | | ? _c("text", { |
| | | staticClass: _vm._$s( |
| | | "8-" + $30, |
| | | "sc", |
| | | "uni-icon" |
| | | ), |
| | | class: _vm._$s("8-" + $30, "c", [ |
| | | item.setting.suffix, |
| | | ]), |
| | | attrs: { _i: "8-" + $30 }, |
| | | on: { |
| | | click: function ($event) { |
| | | return _vm.onchange(item) |
| | | }, |
| | | }, |
| | | }) |
| | | : _vm._e(), |
| | | ] |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s("9-" + $30, "i", item.name == "Textarea") |
| | | ? _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "9-" + $30, |
| | | "sc", |
| | | "input-wrapper" |
| | | ), |
| | | attrs: { _i: "9-" + $30 }, |
| | | }, |
| | | [ |
| | | _c("textarea", { |
| | | staticClass: _vm._$s( |
| | | "10-" + $30, |
| | | "sc", |
| | | "uni-input" |
| | | ), |
| | | class: _vm._$s( |
| | | "10-" + $30, |
| | | "c", |
| | | item.disabled ? "input-disabled" : "" |
| | | ), |
| | | style: _vm._$s("10-" + $30, "s", { |
| | | width: "96%", |
| | | }), |
| | | attrs: { |
| | | value: _vm._$s( |
| | | "10-" + $30, |
| | | "a-value", |
| | | item.value |
| | | ), |
| | | placeholder: _vm._$s( |
| | | "10-" + $30, |
| | | "a-placeholder", |
| | | item.placeholder |
| | | ), |
| | | "data-index": _vm._$s( |
| | | "10-" + $30, |
| | | "a-data-index", |
| | | index |
| | | ), |
| | | disabled: _vm._$s( |
| | | "10-" + $30, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | _i: "10-" + $30, |
| | | }, |
| | | on: { |
| | | blur: function ($event) { |
| | | return _vm.onModelValue(item) |
| | | }, |
| | | }, |
| | | }), |
| | | ] |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s("11-" + $30, "i", item.name == "Checkbox") |
| | | ? _c( |
| | | "checkbox-group", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "11-" + $30, |
| | | "sc", |
| | | "check_rememberPwd" |
| | | ), |
| | | class: _vm._$s( |
| | | "11-" + $30, |
| | | "c", |
| | | item.disabled ? "input-disabled" : "" |
| | | ), |
| | | style: _vm._$s("11-" + $30, "s", { |
| | | "margin-left": "10rpx", |
| | | }), |
| | | attrs: { |
| | | disabled: _vm._$s( |
| | | "11-" + $30, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | "data-ischeck": _vm._$s( |
| | | "11-" + $30, |
| | | "a-data-ischeck", |
| | | item.value |
| | | ), |
| | | _i: "11-" + $30, |
| | | }, |
| | | on: { |
| | | change: function ($event) { |
| | | return _vm.onModelValue(item) |
| | | }, |
| | | }, |
| | | }, |
| | | [ |
| | | _c("label", [ |
| | | _c("checkbox", { |
| | | attrs: { |
| | | value: _vm._$s( |
| | | "13-" + $30, |
| | | "a-value", |
| | | item.value |
| | | ), |
| | | checked: _vm._$s( |
| | | "13-" + $30, |
| | | "a-checked", |
| | | item.value |
| | | ), |
| | | _i: "13-" + $30, |
| | | }, |
| | | }), |
| | | _c("text", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "14-" + $30, |
| | | "t0-0", |
| | | _vm._s(item.label) |
| | | ) |
| | | ), |
| | | ]), |
| | | ]), |
| | | ] |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s("15-" + $30, "i", item.name == "Switch") |
| | | ? _c("switch", { |
| | | class: _vm._$s( |
| | | "15-" + $30, |
| | | "c", |
| | | item.disabled ? "input-disabled" : "" |
| | | ), |
| | | style: _vm._$s("15-" + $30, "s", { |
| | | "margin-left": "10rpx", |
| | | }), |
| | | attrs: { |
| | | disabled: _vm._$s( |
| | | "15-" + $30, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | _i: "15-" + $30, |
| | | }, |
| | | on: { |
| | | change: function ($event) { |
| | | return _vm.onModelValue(item) |
| | | }, |
| | | }, |
| | | model: { |
| | | value: _vm._$s( |
| | | "15-" + $30, |
| | | "v-model", |
| | | item.value |
| | | ), |
| | | callback: function ($$v) { |
| | | _vm.$set(item, "value", $$v) |
| | | }, |
| | | expression: "item.value", |
| | | }, |
| | | }) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "16-" + $30, |
| | | "i", |
| | | item.name == "TimePicker" || item.name == "DatePicker" |
| | | ) |
| | | ? _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "16-" + $30, |
| | | "sc", |
| | | "input-wrapper" |
| | | ), |
| | | attrs: { _i: "16-" + $30 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "picker", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "17-" + $30, |
| | | "sc", |
| | | "date_iput" |
| | | ), |
| | | class: _vm._$s( |
| | | "17-" + $30, |
| | | "c", |
| | | item.disabled ? "input-disabled" : "" |
| | | ), |
| | | attrs: { |
| | | disabled: _vm._$s( |
| | | "17-" + $30, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | value: _vm._$s( |
| | | "17-" + $30, |
| | | "a-value", |
| | | item.value |
| | | ), |
| | | _i: "17-" + $30, |
| | | }, |
| | | on: { |
| | | change: function ($event) { |
| | | return _vm.onModelValue(item) |
| | | }, |
| | | }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "18-" + $30, |
| | | "sc", |
| | | "picker" |
| | | ), |
| | | attrs: { _i: "18-" + $30 }, |
| | | }, |
| | | [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "18-" + $30, |
| | | "t0-0", |
| | | _vm._s(item.value) |
| | | ) |
| | | ), |
| | | ] |
| | | ), |
| | | ] |
| | | ), |
| | | ] |
| | | ), |
| | | ] |
| | | ), |
| | | ] |
| | | ) |
| | | : _vm._e(), |
| | | ], |
| | | 1 |
| | | ) |
| | | : _vm._e(), |
| | | ], |
| | | 1 |
| | | ] |
| | | ) |
| | | } |
| | | ), |
| | | _c( |
| | | "view", |
| | | { staticClass: _vm._$s(18, "sc", "v-panel"), attrs: { _i: 18 } }, |
| | | { staticClass: _vm._$s(19, "sc", "v-panel"), attrs: { _i: 19 } }, |
| | | [ |
| | | _c( |
| | | "div", |
| | | { |
| | | staticClass: _vm._$s(19, "sc", "panel_title"), |
| | | attrs: { _i: 19 }, |
| | | staticClass: _vm._$s(20, "sc", "panel_title"), |
| | | attrs: { _i: 20 }, |
| | | }, |
| | | [_vm._v(_vm._$s(19, "t0-0", _vm._s(_vm.param.Sub_Cls.Title)))] |
| | | [_vm._v(_vm._$s(20, "t0-0", _vm._s(_vm.param.Sub_Cls.Title)))] |
| | | ), |
| | | _vm._$s(20, "i", _vm.param.Sub_Cls.Can_Add_Delete == true) |
| | | _vm._$s(21, "i", _vm.param.Sub_Cls.Can_Add_Delete == true) |
| | | ? _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(20, "sc", "v-area class_attr_body"), |
| | | attrs: { _i: 20 }, |
| | | staticClass: _vm._$s(21, "sc", "v-area class_attr_body"), |
| | | attrs: { _i: 21 }, |
| | | }, |
| | | [ |
| | | _c("h4", [ |
| | | _vm._v(_vm._$s(21, "t0-0", _vm._s(_vm.param.Sub_Cls.Name))), |
| | | _vm._v(_vm._$s(22, "t0-0", _vm._s(_vm.param.Sub_Cls.Name))), |
| | | ]), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(22, "sc", "form-group"), |
| | | attrs: { _i: 22 }, |
| | | staticClass: _vm._$s(23, "sc", "form-group"), |
| | | attrs: { _i: 23 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "p", |
| | | { |
| | | staticClass: _vm._$s(23, "sc", "tx_title2"), |
| | | attrs: { _i: 23 }, |
| | | staticClass: _vm._$s(24, "sc", "tx_title2"), |
| | | attrs: { _i: 24 }, |
| | | }, |
| | | [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | 23, |
| | | 24, |
| | | "t0-0", |
| | | _vm._s(_vm.param.Scan_Code.Name) |
| | | ) |
| | |
| | | ] |
| | | ), |
| | | _c("input", { |
| | | staticClass: _vm._$s(24, "sc", "attr_field"), |
| | | staticClass: _vm._$s(25, "sc", "attr_field"), |
| | | style: _vm._$s( |
| | | 24, |
| | | 25, |
| | | "s", |
| | | _vm.param.Scan_Code.Have_Select_Button == true |
| | | ? "width: " + |
| | |
| | | "%;" |
| | | ), |
| | | attrs: { |
| | | value: _vm._$s(24, "a-value", _vm.scanCodeVal), |
| | | _i: 24, |
| | | value: _vm._$s(25, "a-value", _vm.scanCodeVal), |
| | | _i: 25, |
| | | }, |
| | | on: { focus: _vm.scan_ontap, blur: _vm.scan_onevent }, |
| | | }), |
| | | _vm._$s( |
| | | 25, |
| | | 26, |
| | | "i", |
| | | _vm.param.Scan_Code.Have_Select_Button == true |
| | | ) |
| | | ? _c( |
| | | "div", |
| | | { |
| | | staticClass: _vm._$s(25, "sc", "text-right2"), |
| | | attrs: { _i: 25 }, |
| | | staticClass: _vm._$s(26, "sc", "text-right2"), |
| | | attrs: { _i: 26 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "a", |
| | | { |
| | | attrs: { _i: 26 }, |
| | | attrs: { _i: 27 }, |
| | | on: { |
| | | click: function ($event) { |
| | | return _vm.scan_classAttr_extButton() |
| | |
| | | [ |
| | | _c("i", { |
| | | staticClass: _vm._$s( |
| | | 27, |
| | | 28, |
| | | "sc", |
| | | "ace-icon fa" |
| | | ), |
| | | class: _vm._$s( |
| | | 27, |
| | | 28, |
| | | "c", |
| | | _vm.param.Scan_Code.Img |
| | | ? _vm.param.Scan_Code.Img |
| | | : "fa-plus-circle" |
| | | ), |
| | | attrs: { _i: 27 }, |
| | | attrs: { _i: 28 }, |
| | | }), |
| | | ] |
| | | ), |
| | |
| | | ) |
| | | : _vm._e(), |
| | | _vm._l( |
| | | _vm._$s(28, "f", { forItems: _vm.subPanelList }), |
| | | _vm._$s(29, "f", { forItems: _vm.subPanelList }), |
| | | function (subpanel, iiindex, $21, $31) { |
| | | return _c( |
| | | "view", |
| | | { |
| | | key: _vm._$s(28, "f", { forIndex: $21, key: 28 + "-" + $31 }), |
| | | staticClass: _vm._$s("28-" + $31, "sc", "v-panellist"), |
| | | key: _vm._$s(29, "f", { forIndex: $21, key: 29 + "-" + $31 }), |
| | | staticClass: _vm._$s("29-" + $31, "sc", "v-panellist"), |
| | | class: _vm._$s( |
| | | "28-" + $31, |
| | | "29-" + $31, |
| | | "c", |
| | | _vm.activelist[iiindex].active == true ? "bk-active" : "" |
| | | ), |
| | | attrs: { _i: "28-" + $31 }, |
| | | attrs: { _i: "29-" + $31 }, |
| | | on: { |
| | | click: function ($event) { |
| | | return _vm.onPanelClick(iiindex) |
| | |
| | | }, |
| | | [ |
| | | _vm._l( |
| | | _vm._$s(29 + "-" + $31, "f", { |
| | | _vm._$s(30 + "-" + $31, "f", { |
| | | forItems: subpanel.subClassAttr.form.items, |
| | | }), |
| | | function (item, index, $22, $32) { |
| | | return _c( |
| | | "view", |
| | | { |
| | | key: _vm._$s(29 + "-" + $31, "f", { |
| | | key: _vm._$s(30 + "-" + $31, "f", { |
| | | forIndex: $22, |
| | | key: 29 + "-" + $31 + "-" + $32, |
| | | key: 30 + "-" + $31 + "-" + $32, |
| | | }), |
| | | staticClass: _vm._$s( |
| | | "29-" + $31 + "-" + $32, |
| | | "30-" + $31 + "-" + $32, |
| | | "sc", |
| | | "v-area dv-panel" |
| | | ), |
| | | attrs: { _i: "29-" + $31 + "-" + $32 }, |
| | | attrs: { _i: "30-" + $31 + "-" + $32 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "div", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "30-" + $31 + "-" + $32, |
| | | "31-" + $31 + "-" + $32, |
| | | "sc", |
| | | "dv-panel-input" |
| | | ), |
| | | attrs: { _i: "30-" + $31 + "-" + $32 }, |
| | | attrs: { _i: "31-" + $31 + "-" + $32 }, |
| | | }, |
| | | [ |
| | | _vm._$s( |
| | | "31-" + $31 + "-" + $32, |
| | | "32-" + $31 + "-" + $32, |
| | | "i", |
| | | item.name != "Layout" |
| | | item.name != "Layout" && item.show == true |
| | | ) |
| | | ? _c( |
| | | "view", |
| | |
| | | "text", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "32-" + $31 + "-" + $32, |
| | | "33-" + $31 + "-" + $32, |
| | | "sc", |
| | | "txt_title" |
| | | ), |
| | | style: _vm._$s( |
| | | "32-" + $31 + "-" + $32, |
| | | "33-" + $31 + "-" + $32, |
| | | "s", |
| | | { width: item.labelWidth + "px" } |
| | | ), |
| | | attrs: { |
| | | _i: "32-" + $31 + "-" + $32, |
| | | _i: "33-" + $31 + "-" + $32, |
| | | }, |
| | | }, |
| | | [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "32-" + $31 + "-" + $32, |
| | | "33-" + $31 + "-" + $32, |
| | | "t0-0", |
| | | _vm._s(item.label) |
| | | ) |
| | |
| | | ] |
| | | ), |
| | | _vm._$s( |
| | | "33-" + $31 + "-" + $32, |
| | | "34-" + $31 + "-" + $32, |
| | | "i", |
| | | item.disabled |
| | | ) |
| | |
| | | "span", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "33-" + $31 + "-" + $32, |
| | | "34-" + $31 + "-" + $32, |
| | | "sc", |
| | | "form-item-span" |
| | | ), |
| | | attrs: { |
| | | _i: "33-" + $31 + "-" + $32, |
| | | _i: "34-" + $31 + "-" + $32, |
| | | }, |
| | | }, |
| | | [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "33-" + $31 + "-" + $32, |
| | | "34-" + $31 + "-" + $32, |
| | | "t0-0", |
| | | _vm._s(item.value) |
| | | ) |
| | |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "34-" + $31 + "-" + $32, |
| | | "35-" + $31 + "-" + $32, |
| | | "i", |
| | | (item.name == "Input" || |
| | | item.name == "InputNumber") && |
| | |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "34-" + $31 + "-" + $32, |
| | | "35-" + $31 + "-" + $32, |
| | | "sc", |
| | | "dv_input" |
| | | "input-wrapper" |
| | | ), |
| | | attrs: { |
| | | _i: "34-" + $31 + "-" + $32, |
| | | _i: "35-" + $31 + "-" + $32, |
| | | }, |
| | | }, |
| | | [ |
| | | _vm._$s( |
| | | "35-" + $31 + "-" + $32, |
| | | "36-" + $31 + "-" + $32, |
| | | "i", |
| | | item.setting.prefix |
| | | ) |
| | | ? _c("text", { |
| | | staticClass: _vm._$s( |
| | | "35-" + $31 + "-" + $32, |
| | | "36-" + $31 + "-" + $32, |
| | | "sc", |
| | | "uni-icon" |
| | | ), |
| | | class: _vm._$s( |
| | | "35-" + $31 + "-" + $32, |
| | | "36-" + $31 + "-" + $32, |
| | | "c", |
| | | [item.setting.prefix] |
| | | ), |
| | | attrs: { |
| | | _i: |
| | | "35-" + $31 + "-" + $32, |
| | | "36-" + $31 + "-" + $32, |
| | | }, |
| | | on: { |
| | | change: function ( |
| | |
| | | }, |
| | | ], |
| | | staticClass: _vm._$s( |
| | | "36-" + $31 + "-" + $32, |
| | | "37-" + $31 + "-" + $32, |
| | | "sc", |
| | | "uni-input" |
| | | ), |
| | | class: _vm._$s( |
| | | "36-" + $31 + "-" + $32, |
| | | "37-" + $31 + "-" + $32, |
| | | "c", |
| | | item.disabled |
| | | ? "input-disabled" |
| | | : "" |
| | | ), |
| | | style: _vm._$s( |
| | | "36-" + $31 + "-" + $32, |
| | | "37-" + $31 + "-" + $32, |
| | | "s", |
| | | { |
| | | width: |
| | |
| | | ), |
| | | attrs: { |
| | | type: _vm._$s( |
| | | "36-" + $31 + "-" + $32, |
| | | "37-" + $31 + "-" + $32, |
| | | "a-type", |
| | | item.name == "Input" |
| | | ? "text" |
| | |
| | | : "text" |
| | | ), |
| | | disabled: _vm._$s( |
| | | "36-" + $31 + "-" + $32, |
| | | "37-" + $31 + "-" + $32, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | placeholder: _vm._$s( |
| | | "36-" + $31 + "-" + $32, |
| | | "37-" + $31 + "-" + $32, |
| | | "a-placeholder", |
| | | item.placeholder |
| | | ), |
| | | focus: _vm._$s( |
| | | "36-" + $31 + "-" + $32, |
| | | "37-" + $31 + "-" + $32, |
| | | "a-focus", |
| | | _vm.focusMateria |
| | | ), |
| | | _i: "36-" + $31 + "-" + $32, |
| | | _i: "37-" + $31 + "-" + $32, |
| | | }, |
| | | domProps: { |
| | | value: _vm._$s( |
| | | "36-" + $31 + "-" + $32, |
| | | "37-" + $31 + "-" + $32, |
| | | "v-model", |
| | | item.value |
| | | ), |
| | |
| | | }, |
| | | }), |
| | | _vm._$s( |
| | | "37-" + $31 + "-" + $32, |
| | | "38-" + $31 + "-" + $32, |
| | | "i", |
| | | item.setting.suffix |
| | | ) |
| | | ? _c("text", { |
| | | staticClass: _vm._$s( |
| | | "37-" + $31 + "-" + $32, |
| | | "38-" + $31 + "-" + $32, |
| | | "sc", |
| | | "uni-icon" |
| | | ), |
| | | class: _vm._$s( |
| | | "37-" + $31 + "-" + $32, |
| | | "38-" + $31 + "-" + $32, |
| | | "c", |
| | | [item.setting.suffix] |
| | | ), |
| | | attrs: { |
| | | _i: |
| | | "37-" + $31 + "-" + $32, |
| | | "38-" + $31 + "-" + $32, |
| | | }, |
| | | on: { |
| | | click: function ($event) { |
| | |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "38-" + $31 + "-" + $32, |
| | | "39-" + $31 + "-" + $32, |
| | | "i", |
| | | item.name == "Select" && !item.disabled |
| | | ) |
| | | ? _c("uni-data-select", { |
| | | class: _vm._$s( |
| | | "38-" + $31 + "-" + $32, |
| | | "39-" + $31 + "-" + $32, |
| | | "c", |
| | | item.disabled |
| | | ? "input-disabled" |
| | |
| | | localdata: item.dict, |
| | | disabled: item.disabled, |
| | | clear: false, |
| | | _i: "38-" + $31 + "-" + $32, |
| | | _i: "39-" + $31 + "-" + $32, |
| | | }, |
| | | on: { |
| | | change: function ($event) { |
| | |
| | | }, |
| | | model: { |
| | | value: _vm._$s( |
| | | "38-" + $31 + "-" + $32, |
| | | "39-" + $31 + "-" + $32, |
| | | "v-model", |
| | | item.value |
| | | ), |
| | |
| | | }) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "39-" + $31 + "-" + $32, |
| | | "40-" + $31 + "-" + $32, |
| | | "i", |
| | | item.name == "Textarea" && |
| | | !item.disabled |
| | |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "39-" + $31 + "-" + $32, |
| | | "40-" + $31 + "-" + $32, |
| | | "sc", |
| | | "input-wrapper" |
| | | ), |
| | | attrs: { |
| | | _i: "39-" + $31 + "-" + $32, |
| | | _i: "40-" + $31 + "-" + $32, |
| | | }, |
| | | }, |
| | | [ |
| | | _c("textarea", { |
| | | staticClass: _vm._$s( |
| | | "40-" + $31 + "-" + $32, |
| | | "41-" + $31 + "-" + $32, |
| | | "sc", |
| | | "uni-input" |
| | | ), |
| | | class: _vm._$s( |
| | | "40-" + $31 + "-" + $32, |
| | | "41-" + $31 + "-" + $32, |
| | | "c", |
| | | item.disabled |
| | | ? "input-disabled" |
| | | : "" |
| | | ), |
| | | style: _vm._$s( |
| | | "40-" + $31 + "-" + $32, |
| | | "41-" + $31 + "-" + $32, |
| | | "s", |
| | | { width: "96%" } |
| | | ), |
| | | attrs: { |
| | | value: _vm._$s( |
| | | "40-" + $31 + "-" + $32, |
| | | "41-" + $31 + "-" + $32, |
| | | "a-value", |
| | | item.value |
| | | ), |
| | | placeholder: _vm._$s( |
| | | "40-" + $31 + "-" + $32, |
| | | "41-" + $31 + "-" + $32, |
| | | "a-placeholder", |
| | | item.placeholder |
| | | ), |
| | | disabled: _vm._$s( |
| | | "40-" + $31 + "-" + $32, |
| | | "41-" + $31 + "-" + $32, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | _i: "40-" + $31 + "-" + $32, |
| | | _i: "41-" + $31 + "-" + $32, |
| | | }, |
| | | on: { |
| | | blur: function ($event) { |
| | |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "41-" + $31 + "-" + $32, |
| | | "42-" + $31 + "-" + $32, |
| | | "i", |
| | | item.name == "Checkbox" |
| | | ) |
| | |
| | | "checkbox-group", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "41-" + $31 + "-" + $32, |
| | | "42-" + $31 + "-" + $32, |
| | | "sc", |
| | | "check_rememberPwd" |
| | | ), |
| | | class: _vm._$s( |
| | | "41-" + $31 + "-" + $32, |
| | | "42-" + $31 + "-" + $32, |
| | | "c", |
| | | item.disabled |
| | | ? "input-disabled" |
| | | : "" |
| | | ), |
| | | style: _vm._$s( |
| | | "41-" + $31 + "-" + $32, |
| | | "42-" + $31 + "-" + $32, |
| | | "s", |
| | | { "margin-left": "10rpx" } |
| | | ), |
| | | attrs: { |
| | | "data-ischeck": _vm._$s( |
| | | "41-" + $31 + "-" + $32, |
| | | "42-" + $31 + "-" + $32, |
| | | "a-data-ischeck", |
| | | item.value |
| | | ), |
| | | disabled: _vm._$s( |
| | | "41-" + $31 + "-" + $32, |
| | | "42-" + $31 + "-" + $32, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | _i: "41-" + $31 + "-" + $32, |
| | | _i: "42-" + $31 + "-" + $32, |
| | | }, |
| | | on: { |
| | | change: function ($event) { |
| | |
| | | _c("checkbox", { |
| | | attrs: { |
| | | value: _vm._$s( |
| | | "43-" + $31 + "-" + $32, |
| | | "44-" + $31 + "-" + $32, |
| | | "a-value", |
| | | item.value |
| | | ), |
| | | checked: _vm._$s( |
| | | "43-" + $31 + "-" + $32, |
| | | "44-" + $31 + "-" + $32, |
| | | "a-checked", |
| | | item.value |
| | | ), |
| | | _i: "43-" + $31 + "-" + $32, |
| | | _i: "44-" + $31 + "-" + $32, |
| | | }, |
| | | }), |
| | | _c("text", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "44-" + $31 + "-" + $32, |
| | | "45-" + $31 + "-" + $32, |
| | | "t0-0", |
| | | _vm._s(item.label) |
| | | ) |
| | |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "45-" + $31 + "-" + $32, |
| | | "46-" + $31 + "-" + $32, |
| | | "i", |
| | | item.name == "Switch" |
| | | ) |
| | | ? _c("switch", { |
| | | class: _vm._$s( |
| | | "45-" + $31 + "-" + $32, |
| | | "46-" + $31 + "-" + $32, |
| | | "c", |
| | | item.disabled |
| | | ? "input-disabled" |
| | | : "" |
| | | ), |
| | | style: _vm._$s( |
| | | "45-" + $31 + "-" + $32, |
| | | "46-" + $31 + "-" + $32, |
| | | "s", |
| | | { "margin-left": "10rpx" } |
| | | ), |
| | | attrs: { |
| | | disabled: _vm._$s( |
| | | "45-" + $31 + "-" + $32, |
| | | "46-" + $31 + "-" + $32, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | _i: "45-" + $31 + "-" + $32, |
| | | _i: "46-" + $31 + "-" + $32, |
| | | }, |
| | | on: { |
| | | change: function ($event) { |
| | |
| | | }, |
| | | model: { |
| | | value: _vm._$s( |
| | | "45-" + $31 + "-" + $32, |
| | | "46-" + $31 + "-" + $32, |
| | | "v-model", |
| | | item.value |
| | | ), |
| | |
| | | }) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "46-" + $31 + "-" + $32, |
| | | "47-" + $31 + "-" + $32, |
| | | "i", |
| | | (item.name == "TimePicker" || |
| | | item.name == "DatePicker") && |
| | |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "46-" + $31 + "-" + $32, |
| | | "47-" + $31 + "-" + $32, |
| | | "sc", |
| | | "input-wrapper" |
| | | ), |
| | | attrs: { |
| | | _i: "46-" + $31 + "-" + $32, |
| | | _i: "47-" + $31 + "-" + $32, |
| | | }, |
| | | }, |
| | | [ |
| | |
| | | "picker", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "47-" + $31 + "-" + $32, |
| | | "48-" + $31 + "-" + $32, |
| | | "sc", |
| | | "date_iput" |
| | | ), |
| | | class: _vm._$s( |
| | | "47-" + $31 + "-" + $32, |
| | | "48-" + $31 + "-" + $32, |
| | | "c", |
| | | item.disabled |
| | | ? "input-disabled" |
| | |
| | | ), |
| | | attrs: { |
| | | disabled: _vm._$s( |
| | | "47-" + $31 + "-" + $32, |
| | | "48-" + $31 + "-" + $32, |
| | | "a-disabled", |
| | | item.disabled |
| | | ), |
| | | value: _vm._$s( |
| | | "47-" + $31 + "-" + $32, |
| | | "48-" + $31 + "-" + $32, |
| | | "a-value", |
| | | item.value |
| | | ), |
| | | _i: "47-" + $31 + "-" + $32, |
| | | _i: "48-" + $31 + "-" + $32, |
| | | }, |
| | | on: { |
| | | change: function ($event) { |
| | |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "48-" + $31 + "-" + $32, |
| | | "49-" + $31 + "-" + $32, |
| | | "sc", |
| | | "picker" |
| | | ), |
| | | attrs: { |
| | | _i: |
| | | "48-" + |
| | | "49-" + |
| | | $31 + |
| | | "-" + |
| | | $32, |
| | |
| | | [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "48-" + |
| | | "49-" + |
| | | $31 + |
| | | "-" + |
| | | $32, |
| | |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "49-" + $31 + "-" + $32, |
| | | "50-" + $31 + "-" + $32, |
| | | "i", |
| | | item.name == "Layout" |
| | | item.name == "Layout" && item.show == true |
| | | ) |
| | | ? _c( |
| | | "uni-row", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "49-" + $31 + "-" + $32, |
| | | "50-" + $31 + "-" + $32, |
| | | "sc", |
| | | "demo-uni-row" |
| | | ), |
| | | attrs: { _i: "49-" + $31 + "-" + $32 }, |
| | | attrs: { _i: "50-" + $31 + "-" + $32 }, |
| | | }, |
| | | _vm._l( |
| | | _vm._$s(50 + "-" + $31 + "-" + $32, "f", { |
| | | _vm._$s(51 + "-" + $31 + "-" + $32, "f", { |
| | | forItems: item.setting.colList, |
| | | }), |
| | | function (cols, key, $23, $33) { |
| | |
| | | "uni-col", |
| | | { |
| | | key: _vm._$s( |
| | | 50 + "-" + $31 + "-" + $32, |
| | | 51 + "-" + $31 + "-" + $32, |
| | | "f", |
| | | { |
| | | forIndex: $23, |
| | | key: |
| | | 50 + |
| | | 51 + |
| | | "-" + |
| | | $31 + |
| | | "-" + |
| | |
| | | ? item.setting.spanList[key] |
| | | : 24 / item.setting.col, |
| | | _i: |
| | | "50-" + |
| | | "51-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | }, |
| | | [ |
| | | _vm._$s( |
| | | "51-" + |
| | | "52-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | "text", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "52-" + |
| | | "53-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | "txt_title" |
| | | ), |
| | | style: _vm._$s( |
| | | "52-" + |
| | | "53-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | attrs: { |
| | | _i: |
| | | "52-" + |
| | | "53-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "52-" + |
| | | "53-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ] |
| | | ), |
| | | _vm._$s( |
| | | "53-" + |
| | | "54-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | { |
| | | staticClass: |
| | | _vm._$s( |
| | | "53-" + |
| | | "54-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | attrs: { |
| | | _i: |
| | | "53-" + |
| | | "54-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "53-" + |
| | | "54-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "54-" + |
| | | "55-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | { |
| | | staticClass: |
| | | _vm._$s( |
| | | "54-" + |
| | | "55-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | | "-" + |
| | | $33, |
| | | "sc", |
| | | "dv_input" |
| | | "input-wrapper" |
| | | ), |
| | | attrs: { |
| | | _i: |
| | | "54-" + |
| | | "55-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | }, |
| | | [ |
| | | _vm._$s( |
| | | "55-" + |
| | | "56-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ? _c("text", { |
| | | staticClass: |
| | | _vm._$s( |
| | | "55-" + |
| | | "56-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | class: |
| | | _vm._$s( |
| | | "55-" + |
| | | "56-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | attrs: { |
| | | _i: |
| | | "55-" + |
| | | "56-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ], |
| | | staticClass: |
| | | _vm._$s( |
| | | "56-" + |
| | | "57-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | "uni-input" |
| | | ), |
| | | class: _vm._$s( |
| | | "56-" + |
| | | "57-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | : "" |
| | | ), |
| | | style: _vm._$s( |
| | | "56-" + |
| | | "57-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | attrs: { |
| | | type: _vm._$s( |
| | | "56-" + |
| | | "57-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | disabled: |
| | | _vm._$s( |
| | | "56-" + |
| | | "57-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | placeholder: |
| | | _vm._$s( |
| | | "56-" + |
| | | "57-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | cols.placeholder |
| | | ), |
| | | focus: _vm._$s( |
| | | "56-" + |
| | | "57-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | _vm.focusMateria |
| | | ), |
| | | _i: |
| | | "56-" + |
| | | "57-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | }, |
| | | domProps: { |
| | | value: _vm._$s( |
| | | "56-" + |
| | | "57-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | }, |
| | | }), |
| | | _vm._$s( |
| | | "57-" + |
| | | "58-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ? _c("text", { |
| | | staticClass: |
| | | _vm._$s( |
| | | "57-" + |
| | | "58-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | class: |
| | | _vm._$s( |
| | | "57-" + |
| | | "58-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | attrs: { |
| | | _i: |
| | | "57-" + |
| | | "58-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "58-" + |
| | | "59-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ) |
| | | ? _c("uni-data-select", { |
| | | class: _vm._$s( |
| | | "58-" + |
| | | "59-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | cols.disabled, |
| | | clear: false, |
| | | _i: |
| | | "58-" + |
| | | "59-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | }, |
| | | model: { |
| | | value: _vm._$s( |
| | | "58-" + |
| | | "59-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | }) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "59-" + |
| | | "60-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | { |
| | | staticClass: |
| | | _vm._$s( |
| | | "59-" + |
| | | "60-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | attrs: { |
| | | _i: |
| | | "59-" + |
| | | "60-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | _c("textarea", { |
| | | staticClass: |
| | | _vm._$s( |
| | | "60-" + |
| | | "61-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | "uni-input" |
| | | ), |
| | | class: _vm._$s( |
| | | "60-" + |
| | | "61-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | : "" |
| | | ), |
| | | style: _vm._$s( |
| | | "60-" + |
| | | "61-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | attrs: { |
| | | value: _vm._$s( |
| | | "60-" + |
| | | "61-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | placeholder: |
| | | _vm._$s( |
| | | "60-" + |
| | | "61-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | disabled: |
| | | _vm._$s( |
| | | "60-" + |
| | | "61-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | cols.disabled |
| | | ), |
| | | _i: |
| | | "60-" + |
| | | "61-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "61-" + |
| | | "62-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | { |
| | | staticClass: |
| | | _vm._$s( |
| | | "61-" + |
| | | "62-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | "check_rememberPwd" |
| | | ), |
| | | class: _vm._$s( |
| | | "61-" + |
| | | "62-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | : "" |
| | | ), |
| | | style: _vm._$s( |
| | | "61-" + |
| | | "62-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | attrs: { |
| | | disabled: _vm._$s( |
| | | "61-" + |
| | | "62-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | "data-ischeck": |
| | | _vm._$s( |
| | | "61-" + |
| | | "62-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | cols.value |
| | | ), |
| | | _i: |
| | | "61-" + |
| | | "62-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | attrs: { |
| | | value: |
| | | _vm._$s( |
| | | "63-" + |
| | | "64-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | checked: |
| | | _vm._$s( |
| | | "63-" + |
| | | "64-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | cols.value |
| | | ), |
| | | _i: |
| | | "63-" + |
| | | "64-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | _c("text", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "64-" + |
| | | "65-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "65-" + |
| | | "66-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ) |
| | | ? _c("switch", { |
| | | class: _vm._$s( |
| | | "65-" + |
| | | "66-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | : "" |
| | | ), |
| | | style: _vm._$s( |
| | | "65-" + |
| | | "66-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | attrs: { |
| | | disabled: _vm._$s( |
| | | "65-" + |
| | | "66-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | item.disabled |
| | | ), |
| | | _i: |
| | | "65-" + |
| | | "66-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | }, |
| | | model: { |
| | | value: _vm._$s( |
| | | "65-" + |
| | | "66-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | }) |
| | | : _vm._e(), |
| | | _vm._$s( |
| | | "66-" + |
| | | "67-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | { |
| | | staticClass: |
| | | _vm._$s( |
| | | "66-" + |
| | | "67-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | attrs: { |
| | | _i: |
| | | "66-" + |
| | | "67-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | { |
| | | staticClass: |
| | | _vm._$s( |
| | | "67-" + |
| | | "68-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | "date_iput" |
| | | ), |
| | | class: _vm._$s( |
| | | "67-" + |
| | | "68-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | attrs: { |
| | | disabled: |
| | | _vm._$s( |
| | | "67-" + |
| | | "68-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | value: |
| | | _vm._$s( |
| | | "67-" + |
| | | "68-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | cols.value |
| | | ), |
| | | _i: |
| | | "67-" + |
| | | "68-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | { |
| | | staticClass: |
| | | _vm._$s( |
| | | "68-" + |
| | | "69-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | ), |
| | | attrs: { |
| | | _i: |
| | | "68-" + |
| | | "69-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "68-" + |
| | | "69-" + |
| | | $31 + |
| | | "-" + |
| | | $32 + |
| | |
| | | } |
| | | ), |
| | | _vm._$s( |
| | | "69-" + $31, |
| | | "70-" + $31, |
| | | "i", |
| | | _vm.param.Sub_Cls.Can_Add_Delete == true |
| | | ) |
| | | ? _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s("69-" + $31, "sc", "v-paneldel"), |
| | | attrs: { _i: "69-" + $31 }, |
| | | staticClass: _vm._$s("70-" + $31, "sc", "v-paneldel"), |
| | | attrs: { _i: "70-" + $31 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "a", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "70-" + $31, |
| | | "71-" + $31, |
| | | "sc", |
| | | "panel_del" |
| | | ), |
| | | attrs: { _i: "70-" + $31 }, |
| | | attrs: { _i: "71-" + $31 }, |
| | | on: { |
| | | click: function ($event) { |
| | | return _vm.panel_del(iiindex) |
| | |
| | | [ |
| | | _c("i", { |
| | | staticClass: _vm._$s( |
| | | "71-" + $31, |
| | | "72-" + $31, |
| | | "sc", |
| | | "ace-icon fu-delete" |
| | | ), |
| | | attrs: { _i: "71-" + $31 }, |
| | | attrs: { _i: "72-" + $31 }, |
| | | }), |
| | | ] |
| | | ), |
| | |
| | | ), |
| | | _c( |
| | | "view", |
| | | { staticClass: _vm._$s(72, "sc", "view-floor"), attrs: { _i: 72 } }, |
| | | { staticClass: _vm._$s(73, "sc", "view-floor"), attrs: { _i: 73 } }, |
| | | [ |
| | | _vm._$s(73, "i", _vm.param.Sub_Cls.Can_Add_Delete == true) |
| | | _vm._$s(74, "i", _vm.param.Sub_Cls.Can_Add_Delete == true) |
| | | ? _c("button", { |
| | | staticClass: _vm._$s(73, "sc", "btn_cancel"), |
| | | attrs: { _i: 73 }, |
| | | staticClass: _vm._$s(74, "sc", "btn_cancel"), |
| | | attrs: { _i: 74 }, |
| | | on: { click: _vm.cancel }, |
| | | }) |
| | | : _vm._e(), |
| | | _vm._$s(74, "i", _vm.param.Sub_Cls.Can_Add_Delete == true) |
| | | _vm._$s(75, "i", _vm.param.Sub_Cls.Can_Add_Delete == true) |
| | | ? _c( |
| | | "button", |
| | | { |
| | | staticClass: _vm._$s(74, "sc", "btn_add"), |
| | | attrs: { _i: 74 }, |
| | | on: { click: _vm.sava }, |
| | | }, |
| | | [_vm._v(_vm._$s(74, "t0-0", _vm._s(_vm.title)))] |
| | | ) |
| | | : _vm._$s(75, "e", _vm.param.Sub_Cls.Can_Add_Delete == false) |
| | | ? _c( |
| | | "button", |
| | | { |
| | | staticClass: _vm._$s(75, "sc", "btn_sava"), |
| | | staticClass: _vm._$s(75, "sc", "btn_add"), |
| | | attrs: { _i: 75 }, |
| | | on: { click: _vm.sava }, |
| | | }, |
| | | [_vm._v(_vm._$s(75, "t0-0", _vm._s(_vm.title)))] |
| | | ) |
| | | : _vm._$s(76, "e", _vm.param.Sub_Cls.Can_Add_Delete == false) |
| | | ? _c( |
| | | "button", |
| | | { |
| | | staticClass: _vm._$s(76, "sc", "btn_sava"), |
| | | attrs: { _i: 76 }, |
| | | on: { click: _vm.sava }, |
| | | }, |
| | | [_vm._v(_vm._$s(76, "t0-0", _vm._s(_vm.title)))] |
| | | ) |
| | | : _vm._e(), |
| | | ] |
| | |
| | | "uni-popup", |
| | | { |
| | | ref: "popup", |
| | | staticClass: _vm._$s(77, "sc", "view-popup"), |
| | | attrs: { "background-color": "#fff", _i: 77 }, |
| | | staticClass: _vm._$s(78, "sc", "view-popup"), |
| | | attrs: { "background-color": "#fff", _i: 78 }, |
| | | on: { change: _vm.popupChange }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(78, "sc", "popup-header"), |
| | | attrs: { _i: 78 }, |
| | | staticClass: _vm._$s(79, "sc", "popup-header"), |
| | | attrs: { _i: 79 }, |
| | | }, |
| | | [_vm._v(_vm._$s(78, "t0-0", _vm._s(_vm.check_list.title)))] |
| | | [_vm._v(_vm._$s(79, "t0-0", _vm._s(_vm.check_list.title)))] |
| | | ), |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(79, "sc", "popup-content"), |
| | | class: _vm._$s(79, "c", { |
| | | staticClass: _vm._$s(80, "sc", "popup-content"), |
| | | class: _vm._$s(80, "c", { |
| | | "popup-height": |
| | | _vm.popupType === "left" || _vm.popupType === "right", |
| | | }), |
| | | style: _vm._$s(79, "s", { |
| | | style: _vm._$s(80, "s", { |
| | | width: _vm.check_list.width |
| | | ? _vm.check_list.width + "px" |
| | | : "200px", |
| | |
| | | ? _vm.check_list.height + "px" |
| | | : "88%", |
| | | }), |
| | | attrs: { _i: 79 }, |
| | | attrs: { _i: 80 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(80, "sc", "popup-cont"), |
| | | style: _vm._$s(80, "s", { |
| | | staticClass: _vm._$s(81, "sc", "popup-cont"), |
| | | style: _vm._$s(81, "s", { |
| | | height: _vm.check_list.height |
| | | ? _vm.check_list.height - 45 + "px" |
| | | : "415px", |
| | | }), |
| | | attrs: { _i: 80 }, |
| | | attrs: { _i: 81 }, |
| | | }, |
| | | _vm._l( |
| | | _vm._$s(81, "f", { forItems: _vm.check_list.items }), |
| | | _vm._$s(82, "f", { forItems: _vm.check_list.items }), |
| | | function (item, index, $24, $34) { |
| | | return _c( |
| | | "view", |
| | | { |
| | | key: _vm._$s(81, "f", { |
| | | key: _vm._$s(82, "f", { |
| | | forIndex: $24, |
| | | key: 81 + "-" + $34, |
| | | key: 82 + "-" + $34, |
| | | }), |
| | | staticClass: _vm._$s( |
| | | "81-" + $34, |
| | | "82-" + $34, |
| | | "sc", |
| | | "view_popup_CheckList" |
| | | ), |
| | | attrs: { _i: "81-" + $34 }, |
| | | attrs: { _i: "82-" + $34 }, |
| | | }, |
| | | [ |
| | | _c( |
| | | "checkbox-group", |
| | | { |
| | | staticClass: _vm._$s( |
| | | "82-" + $34, |
| | | "83-" + $34, |
| | | "sc", |
| | | "check_list" |
| | | ), |
| | | style: _vm._$s("82-" + $34, "s", { |
| | | style: _vm._$s("83-" + $34, "s", { |
| | | "margin-left": "10rpx", |
| | | }), |
| | | attrs: { |
| | | "data-ischeck": _vm._$s( |
| | | "82-" + $34, |
| | | "83-" + $34, |
| | | "a-data-ischeck", |
| | | item.check |
| | | ), |
| | | "data-index": _vm._$s( |
| | | "82-" + $34, |
| | | "83-" + $34, |
| | | "a-data-index", |
| | | index |
| | | ), |
| | | _i: "82-" + $34, |
| | | _i: "83-" + $34, |
| | | }, |
| | | on: { change: _vm.checkChange }, |
| | | }, |
| | |
| | | _c("checkbox", { |
| | | attrs: { |
| | | value: _vm._$s( |
| | | "84-" + $34, |
| | | "85-" + $34, |
| | | "a-value", |
| | | item.check |
| | | ), |
| | | checked: _vm._$s( |
| | | "84-" + $34, |
| | | "85-" + $34, |
| | | "a-checked", |
| | | item.check |
| | | ), |
| | | _i: "84-" + $34, |
| | | _i: "85-" + $34, |
| | | }, |
| | | }), |
| | | _c("text", [ |
| | | _vm._v( |
| | | _vm._$s( |
| | | "85-" + $34, |
| | | "86-" + $34, |
| | | "t0-0", |
| | | _vm._s(item.name) |
| | | ) |
| | |
| | | _c( |
| | | "view", |
| | | { |
| | | staticClass: _vm._$s(86, "sc", "popup-footer"), |
| | | attrs: { _i: 86 }, |
| | | staticClass: _vm._$s(87, "sc", "popup-footer"), |
| | | attrs: { _i: 87 }, |
| | | }, |
| | | [ |
| | | _c("button", { |
| | | staticClass: _vm._$s(87, "sc", "btn_popup_add"), |
| | | attrs: { _i: 87 }, |
| | | staticClass: _vm._$s(88, "sc", "btn_popup_add"), |
| | | attrs: { _i: 88 }, |
| | | on: { click: _vm.popup_sava }, |
| | | }), |
| | | _c("button", { |
| | | staticClass: _vm._$s(88, "sc", "btn_popup_cancel"), |
| | | attrs: { _i: 88 }, |
| | | staticClass: _vm._$s(89, "sc", "btn_popup_cancel"), |
| | | attrs: { _i: 89 }, |
| | | on: { click: _vm.popup_cancel }, |
| | | }), |
| | | ] |
| | |
| | | /***/ (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 _base = _interopRequireDefault(__webpack_require__(/*! ../../components/js-base64/base64.js */ 65));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n modules: {\n Base64: _base.default\n },\n data: function data() {\n return {\n title: '新增',\n param: {},\n edit_inital_event: \"\",\n //弹窗初始化事件ID\n edit_ok_event: \"\",\n //弹窗点击OK 触发事件ID\n edit_select_compose_event: \"\",\n //选择组成对象时调用\n edit_compose_cls_id: \"\",\n global_attr: [],\n refdatastore: [],\n //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n scanCodeVal: \"\",\n subClassAttrList: [],\n subPanelList: [],\n subClassGridStyle: [],\n popupType: \"center\",\n check_list: {},\n focusMateria: false,\n head_styledef: {\n form: {\n items: []\n }\n },\n detail1_styledef: {},\n detail1StyleDefList: [],\n activelist: []\n };\n },\n onLoad: function onLoad(options) {\n // console.log(options);\n uni.setNavigationBarTitle({\n title: options.titlename\n }); //设置顶部标题 \n this.$data.title = options.titlename;\n this.$data.param = JSON.parse(options.param);\n __f__(\"log\", this.$data.param, \" at pages/modal/3037_2.vue:764\");\n //获取数据类的自定义表单参数\n this.Head_UIStyleGetInfo(this.param.Master_Cls.ID, this.param.Master_Cls.UI_Style.ID);\n this.Detail1_UIstyleGetInfo(this.param.Sub_Cls.ID, this.$data.param.Sub_Cls.UI_Style.ID);\n\n //页面初始化获取焦点\n // this.focusMateria=true; \n },\n\n methods: {\n Head_UIStyleGetInfo: function Head_UIStyleGetInfo(class_id, style_id) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n //获取自定义表单样式\n $this = _this;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n };\n _this.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var styledef = \"\";\n if (ret.result.style_def) {\n //mobox2的style_def是json字符串\n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3的style_def是base64字符串\n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.$data.head_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n // console.log($this.$data.head_styledef);\n $this.head_styledef.form.items.forEach( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(ele, index) {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n if (!(ele.useDict == true)) {\n _context.next = 3;\n break;\n }\n _context.next = 3;\n return _this.DictGetInfo(ele.bind.dict, index, 'mast');\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n } else {\n uni.showModal({\n title: \"错误1\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误1.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n Detail1_UIstyleGetInfo: function Detail1_UIstyleGetInfo(class_id, style_id) {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n //获取自定义表单样式\n $this = _this2;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n };\n _this2.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var styledef = \"\";\n if (ret.result.style_def) {\n //mobox2的style_def是json字符串\n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3的style_def是base64字符串\n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.$data.detail1_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n $this.$data.detail1_styledef.SelBut_Checked = true;\n $this.detail1_styledef.form.items.forEach( /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3(ele, index) {\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n if (!(ele.useDict == true)) {\n _context3.next = 3;\n break;\n }\n _context3.next = 3;\n return _this2.DictGetInfo(ele.bind.dict, index, 'sub');\n case 3:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n return function (_x3, _x4) {\n return _ref2.apply(this, arguments);\n };\n }());\n // var aa = JSON.stringify(this.detail1_styledef);\n // $this.$data.detail1StyleDefList.push(JSON.parse(aa));\n // console.log($this.$data.detail1StyleDefList);\n } else {\n uni.showModal({\n title: \"错误2\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误2.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 3:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n DictGetInfo: function DictGetInfo(dict, index, type) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n //Mobox3得到得到字典信息字典项列表\n _this3.data = [];\n $this = _this3;\n dataInfo = {\n dict_id: dict.id,\n dict_name: dict.name\n }; // console.log(dataInfo);\n _this3.$store.dispatch('DictGetInfo', dataInfo).then( /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(success) {\n var list, itemName, attr;\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n // console.log(success);\n if (success.err_code == 0) {\n list = [];\n itemName = '';\n success.result.dict_item_list.forEach(function (item) {\n if (item.is_default == '1') itemName = item.name;\n list.push({\n text: item.value,\n value: item.name\n });\n });\n if (type == 'mast') {\n //有默认值,显示默认值\n if (itemName) {\n $this.head_styledef.form.items[index].value = itemName;\n attr = $this.head_styledef.form.items[index].fieldId;\n $this.head_styledef.form.model[attr] = itemName;\n }\n $this.head_styledef.form.items[index].dict = list;\n // console.log($this.$data.detail1StyleDefList);\n } else {\n if (itemName) {\n $this.detail1_styledef.form.items[index].value = itemName;\n attr = $this.detail1_styledef.form.items[index].fieldId;\n $this.detail1_styledef.form.model[attr] = itemName;\n }\n $this.detail1_styledef.form.items[index].dict = list;\n __f__(\"log\", $this.$data.detail1_styledef, \" at pages/modal/3037_2.vue:880\");\n }\n } else {\n uni.showModal({\n title: \"错误1.2\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n return function (_x5) {\n return _ref3.apply(this, arguments);\n };\n }()).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误1.3\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n },\n ontap: function ontap(item) {\n var _this4 = this;\n //扫码功能\n //console.log(e.target)\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n uni.hideKeyboard();\n var $this = _this4;\n __f__(\"log\", item, \" at pages/modal/3037_2.vue:898\");\n if (item.oldvalue != result.decodedata) {\n item.oldvalue = result.decodedata;\n item.value = result.decodedata;\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = result.decodedata;\n if (result.decodedata) {\n //第一个输入框不为空\n $this.focusMateria = true; //初始化,第二个输入框focus属性\n // setTimeout(function(){\n // \t$this.focusMateria=true; //第二个输入框获取焦点\n setTimeout(function () {\n uni.hideKeyboard();\n }, 1000);\n // },500);\n }\n //子数据类扫码区事件脚本\n var eventid = _this4.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n var obj_attr = _this4.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: \"7\",\n //\"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n //this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req,\n mast_attr: [],\n inputParamter: [{\n attr: 'mast_input_3037',\n value: result.decodedata\n }]\n };\n _this4.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n });\n },\n onevent: function onevent(item) {\n // console.log(e.target);\n var $this = this;\n __f__(\"log\", item, \" at pages/modal/3037_2.vue:944\");\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = item.value;\n //子数据类扫码区事件脚本\n var eventid = this.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: \"7\",\n //\"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n //this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req,\n mast_attr: [],\n inputParamter: [{\n attr: 'mast_input_3037',\n value: item.value\n }]\n };\n this.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n },\n onchange: function onchange(item) {\n __f__(\"log\", item, \" at pages/modal/3037_2.vue:978\");\n var $this = this;\n __f__(\"log\", item, \" at pages/modal/3037_2.vue:980\");\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = item.value;\n var eventid = item.bind.onChangeEvent.id; //内容变化后事件\n if (eventid) {\n // self.event_no_sub = 1;\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req\n };\n this.DataObjRunCustomEvent(info);\n }\n }\n },\n scan_ontap: function scan_ontap(e) {\n var _this5 = this;\n //扫码区扫码功能\n //console.log(e.target)\n getApp().onScan(function (result) {\n __f__(\"log\", result.decodedata, \" at pages/modal/3037_2.vue:1013\");\n var isflag = true;\n for (var i in _this5.$data.subPanelList) {\n if (_this5.$data.subPanelList[i].scanCodeVal == result.decodedata) isflag = false;\n }\n //子数据类扫码查询数据\n if (isflag) {\n uni.hideKeyboard();\n _this5.$data.scanCodeVal = result.decodedata;\n var eventid = _this5.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n //主数据类属性\n var obj_attr = _this5.head_styledef.form.model;\n // console.log(obj_attr);\n var mast_req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n var obj_attr2 = _this5.detail1_styledef.form.model;\n var req = Object.keys(obj_attr2).map(function (a) {\n return {\n attr: a,\n value: obj_attr2[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: '7',\n //\"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n //this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: mast_req,\n sub_attr: req,\n inputParamter: [{\n attr: 'input_3037',\n value: _this5.$data.scanCodeVal\n }]\n };\n _this5.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n });\n },\n scan_onevent: function scan_onevent(e) {\n // console.log(e.target);\n if (e.target.value) {\n var isflag = true;\n for (var i in this.$data.subPanelList) {\n if (this.$data.subPanelList[i].scanCodeVal == e.target.value) isflag = false;\n }\n //子数据类扫码查询数据\n if (isflag) {\n uni.hideKeyboard();\n this.$data.scanCodeVal = e.target.value;\n var eventid = this.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n //主数据类属性\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var mast_req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n // var input_param = Base64.encode(\n // JSON.stringify(\n // Object.keys(obj_attr).map((a) => ({\n // attr: a,\n // value: obj_attr[a] || \"\",\n // }))\n // )\n // );\n var obj_attr2 = this.detail1_styledef.form.model;\n var req = Object.keys(obj_attr2).map(function (a) {\n return {\n attr: a,\n value: obj_attr2[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: '7',\n //\"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n //this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: mast_req,\n sub_attr: req,\n inputParamter: [{\n attr: 'input_3037',\n value: this.$data.scanCodeVal\n }]\n };\n this.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n }\n },\n onModelValue: function onModelValue(item) {\n //绑定Model值\n //console.log(e.target)\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = item.value;\n },\n panel_del: function panel_del(index) {\n //面板删除\n var $this = this;\n if (this.$data.subPanelList[index].scanCodeVal == this.$data.scanCodeVal) {\n this.$data.scanCodeVal = '';\n }\n if (!this.$data.subPanelList[index].ObjID) this.$data.subPanelList.splice(index, 1);else {\n var dataInfo = {\n class_id: this.$data.param.Sub_Cls.ID,\n class_name: '',\n obj_id: this.$data.subPanelList[index].ObjID\n };\n // console.log(dataInfo);\n // return;\n uni.showLoading({\n title: \"加载中...\"\n });\n this.$store.dispatch('dataObjDel', dataInfo).then(function (success) {\n // console.log(success);\n uni.hideLoading();\n if (ret.err_code == 0) {\n $this.$data.subPanelList.splice(index, 1);\n uni.showModal({\n title: \"提示\",\n content: \"删除成功!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n } else {\n uni.showModal({\n title: \"错误9\",\n content: success.msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/3037_2.vue:1141\");\n uni.hideLoading();\n uni.showModal({\n title: \"提示9.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n }\n },\n scan_classAttr_extButton: function scan_classAttr_extButton(e) {\n //选择按钮前\n var $this = this;\n var Before_Select_Event = $this.$data.param.Scan_Code.Before_Select_Event;\n if (!Before_Select_Event) {\n uni.showModal({\n title: \"提示\",\n content: \"选择前事件为空!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var mast_attr = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n var objects = [];\n var subPanelList = $this.$data.subPanelList;\n for (var s = 0; s < subPanelList.length; s++) {\n var detail_attr = {};\n subPanelList[s].subClassAttr.form.items.forEach(function (item) {\n if (item.name == \"Layout\") {\n //判断是否是栅栏格式\n item.setting.colList.forEach(function (cols) {\n if (cols != null) detail_attr[cols.fieldId] = cols.value;\n });\n } else detail_attr[item.fieldId] = item.value;\n });\n var sub_req = Object.keys(detail_attr).map(function (a) {\n return {\n attr: a,\n value: detail_attr[a] || \"\"\n };\n });\n objects.push({\n obj_id: subPanelList[s].scanCodeVal,\n obj_attrs: sub_req\n });\n }\n var req = [];\n var enviroment = {\n 'function': '3000',\n // 功能点编号\n cls_id: 'MBOX',\n //this.$data.param.Sub_Cls.ID, // 功能点从数据类标识\n 'button': 'top',\n // top/bottom\n button_name: '新增',\n edit_dlg: {\n type: 'small',\n //小窗口\n class_id: 'MBOX' //this.$data.param.Sub_Cls.ID,//当前数据类id\n },\n\n master_cls: {\n cls_name: 'MBOX',\n //$this.$data.param.Master_Cls.Name,\n obj_attrs: mast_attr\n },\n sub_cls: {\n cls_name: 'MBOX',\n //$this.$data.param.Sub_Cls.Name,\n objects: objects\n }\n };\n var info = {\n eventid: Before_Select_Event.ID,\n edtype: \"7\",\n //\"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n //this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: [],\n global_attr: req,\n mast_attr: mast_attr,\n inputParamter: mast_attr,\n enviroment: enviroment\n };\n // console.log(info);\n this.scan_DataObjRunCustomEvent(info, \"\");\n },\n popupChange: function popupChange(e) {\n __f__(\"log\", '当前模式:' + e.type + ',状态:' + e.show, \" at pages/modal/3037_2.vue:1222\");\n },\n checkChange: function checkChange(e) {\n //弹框check选择\n // console.log(e.target.dataset);\n var index = e.target.dataset.index;\n var ischeck = e.target.dataset.ischeck;\n var data = this.$data.check_list.items;\n // this.$data.check_list.items=[];\n if (this.$data.check_list.multiple_choice == \"0\") {\n //判断时单选还是多选\n for (var i in data) {\n data[i].check = false;\n }\n }\n data[index].check = ischeck ? false : true;\n this.$data.check_list.items = data;\n },\n popup_cancel: function popup_cancel(e) {\n //弹框取消\n this.$refs.popup.close();\n },\n popup_sava: function popup_sava(e) {\n //弹框确定 选择按钮后\n var $this = this;\n var After_Select_Event = $this.$data.param.Scan_Code.After_Select_Event;\n if (!After_Select_Event) {\n uni.showModal({\n title: \"提示\",\n content: \"选择后事件为空!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n var items = $this.$data.check_list.items;\n var data = [];\n var name = \"\";\n for (var i = 0; i < items.length; i++) {\n if (items[i].check == true) {\n if (name) name += ';';\n name += items[i].name;\n data.push({\n id: items[i].id,\n name: items[i].name\n });\n }\n }\n if (data.length == 0) {\n uni.showModal({\n title: \"提示\",\n content: \"未选择数据!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var mast_attr = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n $this.$data.scanCodeVal = name;\n var info = {\n eventid: After_Select_Event.ID,\n edtype: \"7\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n objid: \"\",\n attr: [{\n attr: 'mast_input_3037',\n value: name\n }],\n global_attr: mast_attr,\n inputParamter: data,\n enviroment: ''\n };\n // console.log(info);\n this.scan_DataObjRunCustomEvent(info, \"\");\n this.$refs.popup.close();\n },\n onPanelClick: function onPanelClick(value) {\n //点击面板高亮显示\n // console.log(value);\n this.activelist.forEach(function (ele) {\n ele.active = false;\n });\n this.activelist[value].active = true;\n },\n DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n var $this = this;\n var enviroment = {\n 'function': '3000',\n // 功能点编号\n cls_id: this.$data.param.Master_Cls.ID,\n // 功能点主数据类标识\n 'button': 'top',\n // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Master_Cls.ID // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n }\n };\n\n enviroment.edit_dlg = {\n type: 'small',\n //小窗口\n class_id: this.$data.param.Master_Cls.ID //当前数据类id\n };\n\n if (data_attr) {\n enviroment.edit_dlg.form_control = {\n //所属的表单控件\n name: data_attr.Name,\n //字段属性\n text: data_attr.DispName,\n //显示文本\n group_name: data_attr.GroupName,\n //属性组\n type: data_attr.Type,\n //字段类型\n readonly: data_attr.ReadOnly,\n //是否只读\n button_img: data_attr.button_img,\n //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n // var dataInfo = {\n // edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{','').replace('}',''),\n // rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n // attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: '', global_attr: JSON.stringify(this.$data.global_attr)\n // }\n enviroment = _base.default.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码\n var global_attr = _base.default.encode(JSON.stringify(this.$data.global_attr)); //将字符串转换为base64编码\n if (info.dataJson) info.dataJson = _base.default.encode(JSON.stringify(info.dataJson)); //将字符串转换为base64编码\n var obj_attr = {};\n info.attr.forEach(function (item) {\n obj_attr[item.attr] = item.val;\n });\n if (!info.eventid.includes('{')) info.eventid = '{' + info.eventid + '}';\n var dataInfo = {\n ed_type: info.edtype,\n start_transaction: true,\n class_id: info.clsid,\n class_name: '',\n event_id: info.eventid,\n event_name: '',\n data_obj_id: info.objid,\n obj_attr: obj_attr,\n prj_id: info.projectid,\n ref_cls_id: info.rclsid,\n rel_obj_id: info.robjid,\n user_login: info.userlogin,\n data_json: info.dataJson,\n compose_info: '',\n ext_info: enviroment,\n global_attr: global_attr,\n input_param: ''\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3037_2.vue:1358\");\n // return;\n this.$store.dispatch('runCustomEvent', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3037_2.vue:1361\");\n if (success.err_code == 0) {\n var data = success.result;\n if (data.ret != 0) {\n var tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info.join('<br/>') : '';\n if (data.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + data.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = data.info ? typeof data.info == 'string' ? data.info : data.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n var actionlist = data.action;\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/3037_2.vue:1375\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var c = 0; c < $this.head_styledef.form.items.length; c++) {\n var attr = $this.head_styledef.form.items[c];\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"text\": val,\n \"value\": val\n });\n }\n attr.dict = dictItemList;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"text\": val,\n \"value\": val\n });\n }\n col.dict = dictItemList;\n }\n }\n });\n }\n }\n }\n for (var c = 0; c < $this.$data.head_styledef.form.items.length; c++) {\n var attr = $this.$data.head_styledef.form.items[c];\n // console.log(attr[j].Name+'=='+result[i].attr);\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n attr.value = '';\n attr.oldvalue = '';\n attr.value = result[i].value;\n attr.oldvalue = result[i].value;\n $this.head_styledef.form.model[attr.fieldId] = result[i].value;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n col.value = '';\n col.oldvalue = '';\n col.value = result[i].value;\n col.oldvalue = result[i].value;\n $this.head_styledef.form.model[col.fieldId] = result[i].value;\n }\n }\n });\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_global_attr') {\n $this.$data.global_attr = data.action[i].value || [];\n }\n }\n }\n if (data.result) {\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var c = 0; c < $this.$data.head_styledef.form.items.length; c++) {\n var attr = $this.$data.head_styledef.form.items[c];\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n attr.value = '';\n attr.oldvalue = '';\n attr.value = result[i].value;\n attr.oldvalue = result[i].value;\n $this.head_styledef.form.model[attr.fieldId] = result[i].value;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n col.value = '';\n col.oldvalue = '';\n col.value = result[i].value;\n col.oldvalue = result[i].value;\n $this.head_styledef.form.model[col.fieldId] = result[i].value;\n }\n }\n });\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误3\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误3.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n scan_DataObjRunCustomEvent: function scan_DataObjRunCustomEvent(info, data_attr) {\n var _this6 = this;\n var $this = this;\n var obj_attr = {};\n info.attr.forEach(function (item) {\n obj_attr[item.attr] = item.value;\n });\n var enviroment = {};\n if (info.enviroment) {\n enviroment = info.enviroment;\n } else {\n enviroment = {\n 'function': '3000',\n // 功能点编号\n cls_id: 'MBOX',\n //this.$data.param.Sub_Cls.ID, // 功能点从数据类标识\n 'button': 'top',\n // top/bottom\n button_name: '新增',\n edit_dlg: {\n type: 'small',\n //小窗口\n class_id: 'MBOX' //this.$data.param.Sub_Cls.ID,//当前数据类id\n },\n\n master: {\n cls_id: info.clsid,\n // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n obj_attrs: obj_attr\n }\n };\n }\n var global_attr = this.$data.global_attr;\n if (info.global_attr) {\n global_attr = info.global_attr;\n }\n enviroment = _base.default.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码\n var inputParamter = info.inputParamter;\n if (info.inputParamter) {\n info.inputParamter = _base.default.encode(JSON.stringify(info.inputParamter)); //将字符串转换为base64编码\n }\n\n var global_attr = _base.default.encode(JSON.stringify(this.$data.global_attr)); //将字符串转换为base64编码\n\n if (!info.eventid.includes('{')) info.eventid = '{' + info.eventid + '}';\n var dataInfo = {\n ed_type: info.edtype,\n start_transaction: true,\n class_id: info.clsid,\n class_name: '',\n event_id: info.eventid,\n event_name: '',\n data_obj_id: info.objid,\n obj_attr: obj_attr,\n prj_id: info.projectid.replace('{', '').replace('}', ''),\n ref_cls_id: info.rclsid,\n rel_obj_id: info.robjid,\n user_login: info.userlogin,\n data_json: '',\n compose_info: '',\n ext_info: enviroment,\n global_attr: global_attr,\n input_param: info.inputParamter\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3037_2.vue:1569\");\n // return;\n this.$store.dispatch('runCustomEvent', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3037_2.vue:1572\");\n if (success.err_code == 0) {\n var data = success.result;\n if (data.ret != 0) {\n var tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info.join('<br/>') : '';\n if (data.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + data.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = data.info ? typeof data.info == 'string' ? data.info : data.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n var actionlist = data.action;\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/3037_2.vue:1586\");\n for (var ii = 0; ii < actionlist.length; ii++) {\n var action = actionlist[ii];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n for (var c = 0; c < $this.$data.subPanelList[s].subClassAttrList.length; c++) {\n var attr = $this.$data.subPanelList[s].subClassAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n if (attr[j].Type == '字典' || attr[j].Type == '字典-字符串' || attr[j].Type == '字典-整数') {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"Name\": val,\n \"label\": val,\n \"value\": val\n });\n }\n attr[j].dictitem = dictItemList;\n // attr[j].dictitem = result[i].choice_list;\n }\n }\n }\n }\n }\n }\n\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n for (var c = 0; c < $this.$data.subPanelList[s].subClassAttrList.length; c++) {\n var attr = $this.$data.subPanelList[s].subClassAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/3037_2.vue:1616\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n // attr.value = '';\n // attr.oldvalue = '';\n // attr.value = result[i].value;\n // attr.oldvalue = result[i].value;\n }\n }\n }\n }\n\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (action.action_type == 'set_global_attr') {\n $this.$actiontr = action.value || [];\n } else if (action.action_type == 'open_common_dlg') {\n //打开侧滑弹框\n var $this = _this6;\n if (action.value.common_dlg_id == 'check_list') {\n $this.$data.check_list = action.value.config;\n if (action.value.config.appear_style == 'sideslip')\n //判断是否是侧滑\n $this.$data.popupType = 'right';else $this.$data.popupType = 'center';\n // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性\n $this.$refs.popup.open($this.$data.popupType);\n }\n } else if (action.action_type == 'add_subcls_panel') {\n //主从数据类扫码查询数据\n var result = action.value;\n var $this = _this6;\n var list_1 = JSON.parse(JSON.stringify(_this6.$data.detail1_styledef));\n var scanCodeVal = $this.$data.scanCodeVal;\n var rand = '';\n for (var i = 0; i < 5; i++) {\n //生成5位随机数\n rand += Math.floor(Math.random() * 10);\n }\n if (inputParamter[0].attr) {\n if (inputParamter[0].attr == \"mast_input_3037\")\n //判断是主数据类扫码查询数据\n scanCodeVal = \"mast_input_3037-\" + rand;\n }\n if (info.attr[0].attr) {\n if (info.attr[0].attr == \"mast_input_3037\")\n //判断是主数据类扫码查询数据\n scanCodeVal = \"mast_input_3037-\" + rand;\n }\n $this.$data.subPanelList.push({\n scanCodeVal: scanCodeVal,\n subClassAttr: list_1\n });\n $this.activelist.push({\n active: false\n });\n for (var i = 0; i < result.length; i++) {\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n if ($this.$data.subPanelList[s].scanCodeVal == scanCodeVal) {\n if (result[i].attr == \"S_ID\") $this.$data.subPanelList[s].ObjID = result[i].value;\n var _subClassAttr = $this.$data.subPanelList[s].subClassAttr.form.items;\n for (var c = 0; c < _subClassAttr.length; c++) {\n if (_subClassAttr[c].name != 'Layout') {\n if (_subClassAttr[c].fieldId == result[i].attr) _subClassAttr[c].value = result[i].value;\n } else if (_subClassAttr[c].name == 'Layout') {\n _subClassAttr[c].setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) col.value = result[i].value;\n }\n });\n }\n }\n\n // $this.$data.subPanelList[s].subClassAttr=list_1;\n }\n }\n // console.log($this.$data.subPanelList);\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n }\n }\n if (data.result) {\n var list_1 = JSON.parse(JSON.stringify(_this6.$data.detail1_styledef));\n var scanCodeVal = $this.$data.scanCodeVal;\n var rand = '';\n for (var i = 0; i < 5; i++) {\n //生成5位随机数\n rand += Math.floor(Math.random() * 10);\n }\n if (inputParamter[0].attr) {\n if (inputParamter[0].attr == \"mast_input_3037\")\n //判断是主数据类扫码查询数据\n scanCodeVal = \"mast_input_3037-\" + rand;\n }\n if (info.attr[0].attr) {\n if (info.attr[0].attr == \"mast_input_3037\")\n //判断是主数据类扫码查询数据\n scanCodeVal = \"mast_input_3037-\" + rand;\n }\n $this.$data.subPanelList.push({\n scanCodeVal: scanCodeVal,\n subClassAttr: list_1\n });\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n if ($this.$data.subPanelList[s].scanCodeVal == scanCodeVal) {\n if (result[i].attr == \"S_ID\") $this.$data.subPanelList[s].ObjID = result[i].value;\n var _subClassAttr = $this.$data.subPanelList[s].subClassAttr.form.items;\n for (var c = 0; c < _subClassAttr.length; c++) {\n if (_subClassAttr[c].name != 'Layout') {\n if (_subClassAttr[c].fieldId == result[i].attr) _subClassAttr[c].value = result[i].value;\n } else if (_subClassAttr[c].name == 'Layout') {\n _subClassAttr[c].setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) col.value = result[i].value;\n }\n });\n }\n }\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误7\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误7.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n //确定\n sava: function sava() {\n if (this.$data.param.Before_OK_Event)\n //判断功能点参数是否有确定前脚本\n this.scan_OKDataObjRunCustomEvent(this.$data.param.Before_OK_Event.ID);else if (this.$data.param.After_OK_Event)\n //判断功能点参数是否有确定后脚本\n this.scan_OKDataObjRunCustomEvent(this.$data.param.After_OK_Event.ID);else uni.navigateBack({\n delta: 1\n }); //返回层数,2则上上页\n },\n scan_OKDataObjRunCustomEvent: function scan_OKDataObjRunCustomEvent(eventID) {\n uni.showLoading({\n title: \"加载中...\",\n mask: true\n });\n var $this = this;\n //获取表头属性\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n var objects = [];\n var subPanelList = $this.$data.subPanelList;\n for (var s = 0; s < subPanelList.length; s++) {\n var detail_attr = {};\n subPanelList[s].subClassAttr.form.items.forEach(function (item) {\n if (item.name == \"Layout\") {\n //判断是否是栅栏格式\n item.setting.colList.forEach(function (cols) {\n if (cols != null) detail_attr[cols.fieldId] = cols.value;\n });\n } else detail_attr[item.fieldId] = item.value;\n });\n var sub_req = Object.keys(detail_attr).map(function (a) {\n return {\n attr: a,\n value: detail_attr[a] || \"\"\n };\n });\n objects.push({\n obj_id: subPanelList[s].scanCodeVal,\n obj_attrs: sub_req\n });\n }\n var dataJson = {\n master_cls: {\n cls_name: 'MBOX',\n //$this.$data.param.Master_Cls.Name,\n obj_attrs: req\n },\n input_3037: $this.$data.scanCodeVal,\n //扫码内容\n op_type: $this.$data.param.OperationType,\n //作业类型定义\n sub_cls: {\n cls_name: 'MBOX',\n //$this.$data.param.Sub_Cls.Name,\n objects: objects\n }\n };\n // console.log(JSON.stringify(dataJson));\n var dataJson = _base.default.encode(JSON.stringify(dataJson)); //将字符串转换为base64编码\n var global_attr = _base.default.encode(JSON.stringify(this.$data.global_attr)); //将字符串转换为base64编码\n if (!eventID.includes('{')) eventID = '{' + eventID + '}';\n var dataInfo = {\n ed_type: \"7\",\n start_transaction: true,\n class_id: 'MBOX',\n class_name: '',\n event_id: eventID,\n event_name: '',\n data_obj_id: '',\n obj_attr: '',\n prj_id: '',\n ref_cls_id: '',\n rel_obj_id: '',\n user_login: '',\n data_json: dataJson,\n compose_info: '',\n ext_info: '',\n global_attr: global_attr,\n input_param: ''\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3037_2.vue:1868\");\n // uni.hideLoading();\n // \treturn;\n this.$store.dispatch('runCustomEvent', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3037_2.vue:1872\");\n uni.hideLoading();\n if (success.err_code == 0) {\n var data = success.result;\n if (data.ret != 0) {\n var tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info.join('<br/>') : '';\n if (data.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + data.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = data.info ? typeof data.info == 'string' ? data.info : data.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n var result = data.result;\n if (eventID != $this.$data.param.After_OK_Event.ID) $this.scan_OKDataObjRunCustomEvent($this.$data.param.After_OK_Event.ID);else {\n //刷新\n uni.redirectTo({\n url: '../modal/3037_2?param=' + JSON.stringify($this.$data.param) + \"&titlename=\" + $this.$data.title\n });\n }\n }\n } else {\n uni.showModal({\n title: \"错误8\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.hideLoading();\n uni.showModal({\n title: \"错误8.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n cancel: function cancel(e) {\n //取消\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvMzAzN18yLnZ1ZSJdLCJuYW1lcyI6WyJtb2R1bGVzIiwiQmFzZTY0IiwiZGF0YSIsInRpdGxlIiwicGFyYW0iLCJlZGl0X2luaXRhbF9ldmVudCIsImVkaXRfb2tfZXZlbnQiLCJlZGl0X3NlbGVjdF9jb21wb3NlX2V2ZW50IiwiZWRpdF9jb21wb3NlX2Nsc19pZCIsImdsb2JhbF9hdHRyIiwicmVmZGF0YXN0b3JlIiwic2NhbkNvZGVWYWwiLCJzdWJDbGFzc0F0dHJMaXN0Iiwic3ViUGFuZWxMaXN0Iiwic3ViQ2xhc3NHcmlkU3R5bGUiLCJwb3B1cFR5cGUiLCJjaGVja19saXN0IiwiZm9jdXNNYXRlcmlhIiwiaGVhZF9zdHlsZWRlZiIsImZvcm0iLCJpdGVtcyIsImRldGFpbDFfc3R5bGVkZWYiLCJkZXRhaWwxU3R5bGVEZWZMaXN0IiwiYWN0aXZlbGlzdCIsIm9uTG9hZCIsInVuaSIsIm1ldGhvZHMiLCJIZWFkX1VJU3R5bGVHZXRJbmZvIiwiJHRoaXMiLCJkYXRhSW5mbyIsImNsYXNzX2lkIiwidWlfc3R5bGVfaWQiLCJzdHlsZWRlZiIsImVsZSIsImNvbnRlbnQiLCJzaG93Q2FuY2VsIiwiY29uZmlybVRleHQiLCJEZXRhaWwxX1VJc3R5bGVHZXRJbmZvIiwiRGljdEdldEluZm8iLCJkaWN0X2lkIiwiZGljdF9uYW1lIiwibGlzdCIsIml0ZW1OYW1lIiwic3VjY2VzcyIsInRleHQiLCJ2YWx1ZSIsImF0dHIiLCJvbnRhcCIsImdldEFwcCIsIml0ZW0iLCJzZXRUaW1lb3V0IiwiZXZlbnRpZCIsImVkdHlwZSIsInByb2plY3RpZCIsInJjbHNpZCIsInJvYmppZCIsInVzZXJsb2dpbiIsImNsc2lkIiwib2JqaWQiLCJtYXN0X2F0dHIiLCJpbnB1dFBhcmFtdGVyIiwib25ldmVudCIsIm9uY2hhbmdlIiwic2Nhbl9vbnRhcCIsImlzZmxhZyIsInN1Yl9hdHRyIiwic2Nhbl9vbmV2ZW50Iiwib25Nb2RlbFZhbHVlIiwicGFuZWxfZGVsIiwiY2xhc3NfbmFtZSIsIm9ial9pZCIsInNjYW5fY2xhc3NBdHRyX2V4dEJ1dHRvbiIsImRldGFpbF9hdHRyIiwib2JqZWN0cyIsIm9ial9hdHRycyIsImNsc19pZCIsImJ1dHRvbl9uYW1lIiwiZWRpdF9kbGciLCJ0eXBlIiwibWFzdGVyX2NscyIsImNsc19uYW1lIiwic3ViX2NscyIsImVudmlyb21lbnQiLCJwb3B1cENoYW5nZSIsImNoZWNrQ2hhbmdlIiwicG9wdXBfY2FuY2VsIiwicG9wdXBfc2F2YSIsIm5hbWUiLCJpZCIsIm9uUGFuZWxDbGljayIsIkRhdGFPYmpSdW5DdXN0b21FdmVudCIsIm1hc3RlciIsImdyb3VwX25hbWUiLCJyZWFkb25seSIsImJ1dHRvbl9pbWciLCJidXR0b25fdG9vbHRpcCIsImluZm8iLCJvYmpfYXR0ciIsImVkX3R5cGUiLCJzdGFydF90cmFuc2FjdGlvbiIsImV2ZW50X2lkIiwiZXZlbnRfbmFtZSIsImRhdGFfb2JqX2lkIiwicHJqX2lkIiwicmVmX2Nsc19pZCIsInJlbF9vYmpfaWQiLCJ1c2VyX2xvZ2luIiwiZGF0YV9qc29uIiwiY29tcG9zZV9pbmZvIiwiZXh0X2luZm8iLCJpbnB1dF9wYXJhbSIsImRpY3RJdGVtTGlzdCIsImNvbCIsImxlbmd0aCIsInNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwicmFuZCIsInN1YkNsYXNzQXR0ciIsImFjdGl2ZSIsIl9zdWJDbGFzc0F0dHIiLCJzYXZhIiwiZGVsdGEiLCJzY2FuX09LRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwibWFzayIsImlucHV0XzMwMzciLCJvcF90eXBlIiwidXJsIiwiY2FuY2VsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFxdEJBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQUNBO0VBQ0FBO0lBQ0FDO0VBQ0E7RUFDQUM7SUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUFBO01BQ0FDO01BQUE7TUFDQUM7TUFBQTtNQUNBQztNQUNBQztNQUNBQztNQUFBO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BQ0FDO01BRUFDO01BQ0FDO1FBQ0FDO1VBQ0FDO1FBQ0E7TUFDQTtNQUNBQztNQUNBQztNQUNBQztJQUNBO0VBQ0E7RUFDQUM7SUFDQTtJQUNBQztNQUFBdEI7SUFBQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7SUFFQTtJQUNBO0VBQ0E7O0VBQ0F1QjtJQUNBQztNQUFBO01BQUE7UUFBQTtRQUFB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QXJFO1FBQ0F1QztRQUNBK0I7UUFDQUM7UUFDQUM7UUFDQUw7UUFDQU07UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQUM7UUFDQXBHO1FBQ0FxRztNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQTtRQUNBckY7UUFDQTtVQUNBO1VBQ0E7WUFDQTtZQUNBO2NBQUF0QjtjQUFBK0I7Y0FBQUM7Y0FBQUM7WUFBQSxRQUNBWDtjQUFBdEI7Y0FBQStCO2NBQUFDO2NBQUFDO1lBQUE7WUFDQTtVQUNBO1lBQ0E7WUFDQTtjQUFBakM7Y0FBQStCO2NBQUFDO2NBQUFDO1lBQUE7WUFFQTtZQUNBLG9EQUNBUiw2RUFDQTtjQUNBO2NBQ0FIO2dCQUNBb0c7Y0FDQTtZQUNBO1VBQ0E7UUFDQTtVQUNBcEc7WUFBQXRCO1lBQUErQjtZQUFBQztZQUFBQztVQUFBO1FBQ0E7TUFDQTtRQUNBO1FBQ0FYO1FBQ0FBO1VBQUF0QjtVQUFBK0I7VUFBQUM7VUFBQUM7UUFBQTtNQUNBO0lBQ0E7SUFHQTBGO01BQUE7TUFDQXJHO1FBQ0ErRjtNQUNBO0lBQ0E7RUFDQTtBQUNBO0FBQUEsMkIiLCJmaWxlIjoiMTYwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHN0eWxlPlxyXG4udi1oZWFkU3R5bGV7XHJcbiAgLyogYm9yZGVyOiAxcHggc29saWQgcmVkOyAqL1xyXG59XHJcbi52LWhlYWRTdHlsZTpmaXJzdC1jaGlsZHtcclxuXHRtYXJnaW4tdG9wOiAxNXJweDtcclxufVxyXG4udi1oZWFkU3R5bGUgLnR4dF90aXRsZXtcclxuICBmb250LXNpemU6IDM0cnB4O1xyXG4gIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuICB2ZXJ0aWNhbC1hbGlnbjogMTJweDtcclxufVxyXG4udi1oZWFkU3R5bGUgaW5wdXR7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdC8qIGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7ICovXHJcblx0Lyogd2lkdGg6IDY1JTsgKi9cclxuXHR3aWR0aDogODUlOyAgICBcclxuXHRoZWlnaHQ6IDUycnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAzNHJweDtcclxuXHRiYWNrZ3JvdW5kOiAjRkZGO1xyXG5cdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcclxuXHRjb2xvcjogIzJkOGNmMDtcclxuXHRwYWRkaW5nOiAxMHJweCA4cnB4IDEycnB4O1xyXG5cdGZvbnQtc2l6ZTogMzRycHg7XHJcblx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdHRyYW5zaXRpb24tZHVyYXRpb246IDAuMXM7XHJcblx0bWFyZ2luLXRvcDogNHJweDtcclxufVxyXG4udi1oZWFkU3R5bGUgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdGZvbnQtc2l6ZTogMTJycHg7XHJcbn1cclxuLmlucHV0LXdyYXBwZXJ7XHJcblx0Ym9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTtcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgd2lkdGg6IDY1JTsgICAgXHJcblx0bGluZS1oZWlnaHQ6IDIycnB4O1xufVxyXG5bbnZ1ZV0gdW5pLXZpZXcge1xuICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcbiAgICBib3JkZXI6IDAgc29saWQgIzAwMDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xufVxyXG5cclxuLnVuaS1pbnB1dCB7XHJcblx0LyogYm9yZGVyOiBub25lOyAqL1xufVxyXG4udW5pLWljb257XHJcblx0LyogYm9yZGVyOiAxcHggc29saWQgcmVkOyAqL1xyXG5cdHdpZHRoOiA4JTtcbiAgICBmb250LWZhbWlseTogdW5paWNvbnM7XG4gICAgZm9udC1zaXplOiA0MHJweDtcbiAgICBmb250LXdlaWdodDogNDAwO1xuICAgIGZvbnQtc3R5bGU6IG5vcm1hbDtcbiAgICAvKiB3aWR0aDogNDhycHg7ICovXG4gICAgaGVpZ2h0OiA0OHJweDtcbiAgICBsaW5lLWhlaWdodDogNDhycHg7XHJcblx0Y29sb3I6ICMyZDhjZjA7XHJcbiAgICBjdXJzb3I6IHBvaW50ZXI7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0dmVydGljYWwtYWxpZ246IDE4cnB4O1xufVxyXG5cclxuXHJcbi52aWV3LWNvbnRlbnR7XHJcblx0bWluLWhlaWdodDogNzAwcnB4O1xyXG5cdC8qIGJvcmRlcjoxcHggc29saWQgcmVkOyAqL1xyXG59XHJcbi5kdi1wYW5lbHtcbiAgICAvKiBwYWRkaW5nOiAxMHJweCAyMHJweCA0cnB4IDBweDsgKi9cbiAgICBib3JkZXItcmFkaXVzOiAxMnJweDtcbiAgICAvKiBtYXJnaW4tYm90dG9tOiAyMHJweDsgKi9cclxuXHR0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG4uZHYtcGFuZWw6Zmlyc3QtY2hpbGR7XG4gICAgcGFkZGluZy10b3A6IDEwcnB4O1xyXG59XG4uZHYtcGFuZWwtaW5wdXR7XHJcblx0d2lkdGg6IDEwMCU7XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdHRleHQtYWxpZ246IGxlZnQ7XG59XHJcbi5kdi1wYW5lbCAudHh0X3RpdGxle1xyXG4gIGZvbnQtc2l6ZTogMzRycHg7XHJcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHZlcnRpY2FsLWFsaWduOiAxMnB4O1xyXG59XHJcblxyXG4uZHYtcGFuZWwgaW5wdXR7XHJcblx0LyogdmVydGljYWwtYWxpZ246IG1pZGRsZTsgKi9cclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0Ym9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTtcclxuXHR3aWR0aDogNjglOyBcclxuXHRoZWlnaHQ6IDUycnB4O1xuICAgIGxpbmUtaGVpZ2h0OiAzNHJweDtcclxuXHRiYWNrZ3JvdW5kOiAjRkZGO1xyXG5cdGJvcmRlci1yYWRpdXM6IDdweCAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiAjMmQ4Y2YwO1xyXG5cdHBhZGRpbmc6IDZycHggOHJweCA4cnB4O1xyXG5cdGZvbnQtc2l6ZTogMzJycHg7XHJcblx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdHRyYW5zaXRpb24tZHVyYXRpb246IDAuMXM7XHJcblx0bWFyZ2luLXRvcDogMHJweDtcclxufVxyXG4uZHYtcGFuZWwgaW5wdXQ6Oi13ZWJraXQtaW5wdXQtcGxhY2Vob2xkZXIge1xyXG5cdGZvbnQtc2l6ZTogMTBycHg7XHJcbn1cclxuLmlucHV0LWRpc2FibGVke1xyXG5cdGJhY2tncm91bmQtY29sb3I6ICNmM2YzZjMgIWltcG9ydGFudDtcclxufVxyXG4uZHYtcGFuZWwgLmZvcm0taXRlbS1zcGFue1xyXG5cdHZlcnRpY2FsLWFsaWduOnRvcDtcclxuICAgIGNvbG9yOiAjMmQ4Y2YwO1xyXG5cdHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcblx0d29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdHdpZHRoOiBjYWxjKDEwMCUgLSAxMDBweCk7XHJcblx0LyogYm9yZGVyOiAxcnB4IHNvbGlkIHJlZDsgKi9cclxufVxyXG5idXR0b24uYnRuX2NhbmNlbCB7XHJcblx0d2lkdGg6NDkuNSU7XHJcblx0bWFyZ2luLXRvcDogNTBycHg7XHJcblx0cGFkZGluZzogMjBycHg7XHJcblx0bGluZS1oZWlnaHQ6IDEuNTtcclxuXHRib3JkZXI6IG5vbmU7XHJcblx0Zm9udC1zaXplOiAzOHJweDtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxuXHRmbG9hdDogbGVmdDtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuYnV0dG9uLmJ0bl9hZGQge1xyXG5cdHdpZHRoOjQ5LjUlO1xyXG5cdG1hcmdpbi10b3A6IDUwcnB4O1xyXG5cdHBhZGRpbmc6IDIwcnB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0Ym9yZGVyOiBub25lO1xyXG5cdGZvbnQtc2l6ZTogMzhycHg7XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG4jZHZfc2VsZWN0e1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR3aWR0aDogNjYlOyBcclxuXHRiYWNrZ3JvdW5kOiAjRkZGO1xyXG5cdGJvcmRlci1yYWRpdXM6IDAgIWltcG9ydGFudDtcclxuXHRjb2xvcjogIzJkOGNmMDtcclxuXHQvKiBwYWRkaW5nOiAxMHJweCA4cnB4IDEycnB4OyAqL1xyXG5cdGZvbnQtc2l6ZTogMzRycHg7XHJcblx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdHRyYW5zaXRpb24tZHVyYXRpb246IDAuMXM7XHJcblx0bWFyZ2luLXRvcDogMHJweDtcclxuXHR2ZXJ0aWNhbC1hbGlnbjogMTBweDtcclxufVxyXG4jZHZfc2VsZWN0IC51bmktc2VsZWN0e1xyXG5cdGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcblx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiAjMmQ4Y2YwO1x0XHJcbn1cclxuI2R2X3NlbGVjdCAudW5pLXNlbGVjdF9faW5wdXQtdGV4dHtcclxuXHRjb2xvcjogIzJkOGNmMDtcdFxyXG59XHJcblxyXG4ucGFuZWxfdGl0bGV7XHJcblx0Zm9udC1zaXplOiAzOHJweDtcclxuXHRiYWNrZ3JvdW5kLWNvbG9yOiAjMjdBNkUxO1xyXG5cdGxpbmUtaGVpZ2h0OiA4MHJweDtcclxuXHRjb2xvcjogI2ZmZjtcclxuXHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0IGZvbnQtd2VpZ2h0OiBib2xkO1xyXG59XHJcbi52LXBhbmVse1xyXG5cdG1pbi1oZWlnaHQ6NzcwcnB4O1xyXG59XHJcbi52LXBhbmVsbGlzdHtcclxuICAgIGJhY2tncm91bmQtY29sb3I6I2VmZWZlZjtcclxuXHRib3JkZXI6NHJweCBzb2xpZCAjYWFhO1xyXG5cdGJvcmRlci1yYWRpdXM6IDEwcnB4O1xyXG5cdG1hcmdpbjogMTBycHggMTBycHggMHJweCAyMHJweDtcclxufVxyXG4udi1wYW5lbGRlbHtcclxuXHR0ZXh0LWFsaWduOiByaWdodDtcclxufVxyXG4ucGFuZWxfZGVse1xyXG5cdGZvbnQtc2l6ZTogNDRycHg7XHJcblx0dGV4dC1kZWNvcmF0aW9uOiBpbml0aWFsO1xyXG5cdG1hcmdpbi10b3A6IDEwcnB4O1xyXG5cdG1hcmdpbi1yaWdodDogMjBycHg7XHJcbn1cclxuYnV0dG9uLmJ0bl9hZGQge1xyXG5cdHdpZHRoOjQ5LjUlO1xyXG5cdG1hcmdpbi10b3A6IDUwcnB4O1xyXG5cdHBhZGRpbmc6IDIwcnB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0YmFja2dyb3VuZDogIzI3QTZFMTtcclxuXHRib3JkZXI6IG5vbmU7XHJcblx0Y29sb3I6ICNmZmY7XHJcbiAgICBmb250LXNpemU6IDM4cnB4O1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdGZsb2F0OiByaWdodDtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuYnV0dG9uLmJ0bl9jYW5jZWwge1xyXG5cdHdpZHRoOjQ5LjUlO1xyXG5cdG1hcmdpbi10b3A6IDUwcnB4O1xyXG5cdHBhZGRpbmc6IDIwcnB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0YmFja2dyb3VuZDogIzI3QTZFMTtcclxuXHRib3JkZXI6IG5vbmU7XHJcblx0Y29sb3I6ICNmZmY7XHJcbiAgICBmb250LXNpemU6IDM4cnB4O1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdGZsb2F0OiBsZWZ0O1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG5idXR0b24uYnRuX3NhdmEge1xyXG5cdHdpZHRoOjEwMCU7XHJcblx0bWFyZ2luLXRvcDogNTBycHg7XHJcblx0cGFkZGluZzogMjBycHg7XHJcblx0bGluZS1oZWlnaHQ6IDEuNTtcclxuXHRiYWNrZ3JvdW5kOiAjMjdBNkUxO1xyXG5cdGJvcmRlcjogbm9uZTtcclxuXHRjb2xvcjogI2ZmZjtcclxuICAgIGZvbnQtc2l6ZTogMzhycHg7XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0ZmxvYXQ6IGxlZnQ7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcbi5jbGFzc19hdHRyX2JvZHkgLmZvcm0tZ3JvdXAge1xyXG5cdG1hcmdpbjogMjBycHggMzBycHg7XHJcbiAgICAvKiBtYXJnaW4tbGVmdDogLTEycHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC0xMnB4OyAqL1xyXG59XHJcbi5zdWJjbGFzc19hdHRyX2JvZHkgLmZvcm0tZ3JvdXAge1xyXG5cdG1hcmdpbjogMjBycHggMTBycHg7XHJcbiAgICAvKiBtYXJnaW4tbGVmdDogLTEycHg7XHJcbiAgICBtYXJnaW4tcmlnaHQ6IC0xMnB4OyAqL1xyXG59XHJcbi5mb3JtLWdyb3VwID4gbGFiZWxbY2xhc3MqPVwiY29sLVwiXSB7XHJcbiAgICBtYXJnaW4tYm90dG9tOiA4cnB4O1xyXG5cdGZvbnQtc2l6ZTogMzJycHg7XHJcbn1cclxuLmZvcm0tZ3JvdXAgbGFiZWwge1xyXG4gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIGxpbmUtaGVpZ2h0OiA2MHJweDtcclxufVxyXG4udHhfdGl0bGUye1xyXG5cdGZvbnQtc2l6ZTogMzJycHg7XHJcblx0dGV4dC1hbGlnbjogcmlnaHQ7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdHZlcnRpY2FsLWFsaWduOiAtMnB4O1xyXG59XHJcbi5hdHRyX2ZpZWxke1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlO1xyXG5cdG1hcmdpbi1sZWZ0OiA4cHg7XHJcblx0Lyogd2lkdGg6IDcxJTsgKi9cclxufVxyXG4udGV4dC1yaWdodDIge1xyXG5cdG1hcmdpbjogMDtcclxuXHR2ZXJ0aWNhbC1hbGlnbjogLTRweDtcclxuXHRtYXJnaW4tbGVmdDogOXB4O1xyXG5cdGZsb2F0OiBub25lO1xyXG5cdGZvbnQtc2l6ZTogNDRycHg7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG59XHJcbmlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcclxuXHRmb250LXNpemU6IDEycnB4O1xyXG59XHJcbi52LXBhbmVsIGlucHV0e1xyXG5cdGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XHJcblx0d2lkdGg6IDk4JTtcclxuXHRoZWlnaHQ6IDUycnB4O1xyXG5cdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiAjMDQ2ZGIzO1xyXG5cdHBhZGRpbmc6IDEwcnB4IDhycHggMTJycHg7XHJcblx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHRtYXJnaW4tdG9wOiA0cnB4O1xyXG59XHJcbi5kYXRlX2lwdXR7XHJcblx0LyogYm9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTsgKi9cclxuXHQvKiB3aWR0aDogOTglOyAqL1xyXG5cdGhlaWdodDogNjJycHg7XHJcblx0YmFja2dyb3VuZDogI0ZGRjtcclxuXHRib3JkZXItcmFkaXVzOiAwICFpbXBvcnRhbnQ7XHJcblx0Y29sb3I6ICMwNDZkYjM7XHJcblx0cGFkZGluZzogMTBycHggOHJweCA0cnB4O1xyXG5cdGZvbnQtc2l6ZTogMzRycHg7XHJcblx0Zm9udC1mYW1pbHk6IGluaGVyaXQ7XHJcblx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdHRyYW5zaXRpb24tZHVyYXRpb246IDAuMXM7XHJcbn1cclxuLmR2X2lucHV0e1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogNjUlOyAgICBcclxuXHQvKiBsaW5lLWhlaWdodDogMjJycHg7ICovXG59XHJcbi52aWV3LXBvcHVwe1xyXG5cdHBvc2l0aW9uOnJlbGF0aXZlO1xyXG59XHJcbi5wb3B1cC1jb250ZW50IHtcclxuXHRAaW5jbHVkZSBmbGV4O1xyXG5cdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0anVzdGlmeS1jb250ZW50OiBjZW50ZXI7XHJcblx0cGFkZGluZzogMzBycHg7XHJcblx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuXHQvKiBoZWlnaHQ6IDE1MHB4OyAqL1xyXG5cdC8qIGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgKi9cclxufVxyXG4ucG9wdXAtY29udCB7XHJcblx0b3ZlcmZsb3cteTogYXV0bztcclxuXHQvKiBib3JkZXI6IDFweCBzb2xpZCByZWQ7ICovXHJcbn1cclxuLnBvcHVwLWhlaWdodCB7XHJcblx0QGluY2x1ZGUgaGVpZ2h0O1xyXG5cdC8qIHdpZHRoOiAyMDBweDsgKi9cclxufVxyXG4ucG9wdXAtaGVhZGVye1xyXG5cdGZvbnQtc2l6ZTogNDJycHg7XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0bWFyZ2luOjIwcnB4IDIwcnB4IDBweCAyMHJweDtcclxufVxyXG4udmlld19wb3B1cF9DaGVja0xpc3R7XHJcblx0bWFyZ2luLWJvdHRvbTogMjBycHg7XHJcbn1cclxuLnBvcHVwLWZvb3RlcntcclxuXHRmbG9hdDogcmlnaHQ7XHJcblx0cG9zaXRpb246YWJzb2x1dGU7XHJcblx0Ym90dG9tOjA7XHJcblx0cmlnaHQ6MjBycHg7XHJcbn1cclxuYnV0dG9uLmJ0bl9wb3B1cF9hZGQge1xyXG5cdHdpZHRoOjE4MHJweDtcclxuXHRtYXJnaW4tdG9wOiA1MHJweDtcclxuXHRtYXJnaW4tcmlnaHQ6IDIwcnB4O1xyXG5cdHBhZGRpbmc6IDE1cnB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0YmFja2dyb3VuZDogIzI3QTZFMTtcclxuXHRib3JkZXI6IG5vbmU7XHJcblx0Y29sb3I6ICNmZmY7XHJcbiAgICBmb250LXNpemU6IDM4cnB4O1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdC8qIGZsb2F0OiBsZWZ0OyAqL1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG5idXR0b24uYnRuX3BvcHVwX2NhbmNlbCB7XHJcblx0d2lkdGg6MTgwcnB4O1xyXG5cdG1hcmdpbi10b3A6IDUwcnB4O1xyXG5cdHBhZGRpbmc6IDE1cnB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0YmFja2dyb3VuZDogIzI3QTZFMTtcclxuXHRib3JkZXI6IG5vbmU7XHJcblx0Y29sb3I6ICNmZmY7XHJcbiAgICBmb250LXNpemU6IDM4cnB4O1xyXG5cdGZvbnQtd2VpZ2h0OiBib2xkO1xyXG5cdC8qIGZsb2F0OiByaWdodDsgKi9cclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuLmJrLWFjdGl2ZXtcclxuICBiYWNrZ3JvdW5kLWNvbG9yOiAjRDZGQ0IyO1xyXG4gIGJvcmRlcjogMXB4IHNvbGlkICNENkZDQjI7XHJcbn1cclxuLnZpZXctZmxvb3J7XHJcblx0cGFkZGluZzogMCAyMHJweDtcclxufVxuPC9zdHlsZT5cclxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XG5cdC5kZW1vLXVuaS1yb3cge1xuXHRcdG1hcmdpbi1ib3R0b206IDBweDtcblx0XHRkaXNwbGF5OiBibG9jaztcblx0fVxuXHQ6OnYtZGVlcCAudW5pLXJvdyB7XG5cdFx0bWFyZ2luLWJvdHRvbTogMHB4O1xuXHR9XHJcblx0LnZpZXctdGFicGFnZSA6OnYtZGVlcCAudW5pLXJvdyAge1xuXHRcdG1hcmdpbi1ib3R0b206IDVweDtcblx0fVxuXHQuZGVtby11bmktY29sIHtcblx0XHRoZWlnaHQ6IDM2cHg7XG5cdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xuXHR9XHJcblx0LmRlbW8tdW5pLXJvdyAudW5pLWlucHV0e1xyXG5cdFx0d2lkdGg6IGNhbGMoMTAwJSAtIDEyMHB4KTtcclxuXHR9XHJcblx0LnRleHQge1xyXG5cdCAgICBmb250LXNpemU6IDEycHg7XHJcblx0ICAgIGNvbG9yOiAjNjY2O1xyXG5cdCAgICBtYXJnaW4tdG9wOiA1cHg7XHJcblx0fVxyXG5cdC8vIC51bmktcHgtNSB7XHJcblx0Ly8gXHRtYXJnaW46IDA7XHJcblx0Ly8gXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0Ly8gXHRtYXJnaW46IDA7ICAgIFxyXG5cdC8vIFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdC8vIH1cclxuXHQvLyAudW5pLXNlbGVjdHtcclxuXHQvLyBcdGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcblx0Ly8gXHRib3JkZXItcmFkaXVzOiAwO1xyXG5cdC8vIH1cclxuXHQvLyAudW5pLXNlY3Rpb24tY29udGVudHtcclxuXHQvLyBcdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHQvLyBcdHdpZHRoOiAxMDBweDsgXHJcblx0Ly8gXHRib3JkZXI6IDFweCBzb2xpZCByZWQ7XHJcblx0Ly8gfVxuPC9zdHlsZT5cblxuXHJcbjx0ZW1wbGF0ZT5cclxuXHQ8dmlldyBjbGFzcz1cImNvbnRlbnRcIj5cclxuXHRcdDwhLS0g6KGo5aS05qC35byPIC0tPlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJ2LWhlYWRTdHlsZVwiIHYtZm9yPVwiKGl0ZW0saW5kZXgpIGluIGhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1wiID5cclxuXHRcdFx0PHRleHQgY2xhc3M9XCJ0eHRfdGl0bGVcIiA6c3R5bGU9XCJ7J3dpZHRoJzppdGVtLmxhYmVsV2lkdGgrJ3B4J31cIj57e2l0ZW0ubGFiZWx9fe+8mjwvdGV4dD5cclxuXHRcdFx0PCEtLSDkuIvmi4nmoYYt5Y2V6YCJIGl0ZW0udXNlRGljdD9pdGVtLmRpY3Q6aXRlbS5zZWxlY3Rpb25zLS0+XHJcblx0XHRcdDx1bmktZGF0YS1zZWxlY3QgaWQ9XCJkdl9zZWxlY3RcIiB2LWlmPVwiaXRlbS5uYW1lPT0nU2VsZWN0J1wiXHJcblx0XHRcdFx0OmNsYXNzPVwiaXRlbS5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCJcclxuXHRcdFx0XHR2LW1vZGVsPVwiaXRlbS52YWx1ZVwiXHJcblx0XHRcdFx0OmxvY2FsZGF0YT1cIml0ZW0uZGljdFwiXHJcblx0XHRcdFx0QGNoYW5nZT1cIm9uY2hhbmdlKGl0ZW0pXCJcclxuXHRcdFx0XHQ6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHQ6Y2xlYXI9XCJmYWxzZVwiXHJcblx0XHRcdD48L3VuaS1kYXRhLXNlbGVjdD5cclxuXHRcdFx0PCEtLSDkuIvmi4nmoYYt5aSa6YCJIC0tPlxyXG5cdFx0XHQ8IS0tIDxzZWxlY3QtY3kgdi1lbHNlLWlmPVwiYXR0ci5zZWxlY3Q9PXRydWVcIiAgOnZhbHVlPVwiaXRlbS52YWx1ZVwiIFxyXG5cdFx0XHQgIDpuYW1lPVwiaXRlbS5maWVsZElkXCIgXHJcblx0XHRcdCAgOm9wdGlvbnM9XCJpdGVtLmRpY3RcIiBcclxuXHRcdFx0ICBzaG93Q2xlYXJJY29uPVwidHJ1ZVwiIFxyXG5cdFx0XHQgIEBjaGFuZ2U9XCJvbmNoYW5nZTJcIiBcclxuXHRcdFx0ICA6ZGF0YS1pbmRleD1cImluZGV4XCIgXHJcblx0XHRcdCAgOmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdD48L3NlbGVjdC1jeT4gLS0+XHJcblx0XHRcdDwhLS0g5paH5pys5qGGL+aVsOWtl+ahhiAtLT5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCIgdi1pZj1cIml0ZW0ubmFtZT09J0lucHV0JyB8fCBpdGVtLm5hbWU9PSdJbnB1dE51bWJlcidcIj5cblx0XHRcdFx0PHRleHQgdi1pZj1cIml0ZW0uc2V0dGluZy5wcmVmaXhcIiBcclxuXHRcdFx0XHRcdGNsYXNzPVwidW5pLWljb25cIiBcclxuXHRcdFx0XHRcdDpjbGFzcz1cIltpdGVtLnNldHRpbmcucHJlZml4XVwiXHJcblx0XHRcdFx0XHRAY2hhbmdlPVwib25jaGFuZ2UoaXRlbSlcIj4mI3hlNTY4OzwvdGV4dD5cclxuXHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJ1bmktaW5wdXRcIiA6Y2xhc3M9XCJpdGVtLmRpc2FibGVkPydpbnB1dC1kaXNhYmxlZCc6JydcIlxyXG5cdFx0XHRcdFx0OnR5cGU9XCJpdGVtLm5hbWU9PSdJbnB1dCc/J3RleHQnOml0ZW0ubmFtZT09J0lucHV0TnVtYmVyJz8nbnVtYmVyJzondGV4dCdcIiBcclxuXHRcdFx0XHRcdHYtbW9kZWw9XCJpdGVtLnZhbHVlXCJcclxuXHRcdFx0XHRcdDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0OnBsYWNlaG9sZGVyPVwiaXRlbS5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHQ6c3R5bGU9XCJ7J3dpZHRoJzppdGVtLnNldHRpbmcucHJlZml4ICYmIGl0ZW0uc2V0dGluZy5zdWZmaXg/Jzc4JSc6aXRlbS5zZXR0aW5nLnByZWZpeCB8fCBpdGVtLnNldHRpbmcuc3VmZml4Pyc4NyUnOic5NiUnfVwiIFxyXG5cdFx0XHRcdFx0OmZvY3VzPVwiZm9jdXNNYXRlcmlhXCJcclxuXHRcdFx0XHRcdEBmb2N1cz1cIm9udGFwKGl0ZW0pXCIgXHJcblx0XHRcdFx0XHRAYmx1cj1cIm9uZXZlbnQoaXRlbSlcIlxyXG5cdFx0XHRcdC8+XG5cdFx0XHRcdDx0ZXh0IHYtaWY9XCJpdGVtLnNldHRpbmcuc3VmZml4XCIgXHJcblx0XHRcdFx0XHRjbGFzcz1cInVuaS1pY29uXCIgXHJcblx0XHRcdFx0XHQ6Y2xhc3M9XCJbaXRlbS5zZXR0aW5nLnN1ZmZpeF1cIlxuXHRcdFx0XHRcdEBjbGljaz1cIm9uY2hhbmdlKGl0ZW0pXCI+JiN4ZTU2ODs8L3RleHQ+XHJcblx0XHQgICAgPC92aWV3PlxyXG5cdFx0XHQ8IS0tIOWkmuihjOaWh+acrCAtLT5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCIgdi1pZj1cIml0ZW0ubmFtZT09J1RleHRhcmVhJ1wiPlxyXG5cdFx0XHRcdDx0ZXh0YXJlYSBjbGFzcz1cInVuaS1pbnB1dFwiIDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiIDp2YWx1ZT1cIml0ZW0udmFsdWVcIiBcclxuXHRcdFx0XHQgIDpwbGFjZWhvbGRlcj1cIml0ZW0ucGxhY2Vob2xkZXJcIlxyXG5cdFx0XHRcdCAgQGJsdXI9XCJvbk1vZGVsVmFsdWUoaXRlbSlcIiBcclxuXHRcdFx0XHQgIDpkYXRhLWluZGV4PVwiaW5kZXhcIiBcclxuXHRcdFx0XHQgIHN0eWxlPVwiaGVpZ2h0OjYwcHg7XCIgXHJcblx0XHRcdFx0ICA6c3R5bGU9XCJ7J3dpZHRoJzonOTYlJ31cIiBcclxuXHRcdFx0XHQgIDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdD48L3RleHRhcmVhPlxyXG5cdFx0XHRcdFxyXG5cdFx0ICAgIDwvdmlldz5cclxuXHRcdFx0PCEtLSDlpI3pgInmoYYgLS0+XHJcblx0XHRcdDxjaGVja2JveC1ncm91cCBjbGFzcz1cImNoZWNrX3JlbWVtYmVyUHdkXCIgdi1pZj1cIml0ZW0ubmFtZT09J0NoZWNrYm94J1wiXHJcblx0XHRcdFx0OmNsYXNzPVwiaXRlbS5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0QGNoYW5nZT1cIm9uTW9kZWxWYWx1ZShpdGVtKVwiIFxyXG5cdFx0XHRcdDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdDpkYXRhLWlzY2hlY2s9XCJpdGVtLnZhbHVlXCIgXHJcblx0XHRcdFx0OnN0eWxlPVwieydtYXJnaW4tbGVmdCc6JzEwcnB4J31cIj5cclxuXHRcdFx0XHQ8bGFiZWw+XHJcblx0XHRcdFx0XHQ8Y2hlY2tib3ggOnZhbHVlPVwiaXRlbS52YWx1ZVwiIDpjaGVja2VkPVwiaXRlbS52YWx1ZVwiLz5cclxuXHRcdFx0XHRcdDx0ZXh0Pnt7aXRlbS5sYWJlbH19PC90ZXh0PlxyXG5cdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdDwvY2hlY2tib3gtZ3JvdXA+XHJcblx0XHRcdDwhLS0gU3dpdGNo5byA5YWzIC0tPlxyXG5cdFx0XHQ8c3dpdGNoIHYtaWY9XCJpdGVtLm5hbWU9PSdTd2l0Y2gnXCIgOmNsYXNzPVwiaXRlbS5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdCAgOmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdCAgdi1tb2RlbD1cIml0ZW0udmFsdWVcIiBcclxuXHRcdFx0ICBAY2hhbmdlPVwib25Nb2RlbFZhbHVlKGl0ZW0pXCIgXHJcblx0XHRcdCAgOnN0eWxlPVwieydtYXJnaW4tbGVmdCc6JzEwcnB4J31cIi8+XHJcblx0XHRcdDwhLS0g5pel5pyf5pe26Ze0IC0tPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0LXdyYXBwZXJcIiB2LWlmPVwiaXRlbS5uYW1lPT0nVGltZVBpY2tlcicgfHwgaXRlbS5uYW1lPT0nRGF0ZVBpY2tlcidcIj5cclxuXHRcdFx0XHQ8cGlja2VyIG1vZGU9XCJkYXRlXCIgY2xhc3M9XCJkYXRlX2lwdXRcIiA6Y2xhc3M9XCJpdGVtLmRpc2FibGVkPydpbnB1dC1kaXNhYmxlZCc6JydcIiBcclxuXHRcdFx0XHQgIDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdCAgOnZhbHVlPVwiaXRlbS52YWx1ZVwiIFxyXG5cdFx0XHRcdCAgQGNoYW5nZT1cIm9uTW9kZWxWYWx1ZShpdGVtKVwiIFxyXG5cdFx0XHRcdD5cclxuXHRcdFx0XHQgICA8dmlldyBjbGFzcz1cInBpY2tlclwiPnt7aXRlbS52YWx1ZX19PC92aWV3PlxyXG5cdFx0XHRcdDwvcGlja2VyPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PCEtLSDku47mlbDmja4gLS0+XHJcblx0XHQ8dmlldyBjbGFzcz1cInYtcGFuZWxcIj5cclxuXHRcdFx0PGRpdiBjbGFzcz1cInBhbmVsX3RpdGxlXCI+e3twYXJhbS5TdWJfQ2xzLlRpdGxlfX08L2Rpdj5cclxuXHRcdFx0PCEtLSDku47mlbDmja7miavnoIHljLogLS0+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidi1hcmVhIGNsYXNzX2F0dHJfYm9keVwiIHYtaWY9XCJwYXJhbS5TdWJfQ2xzLkNhbl9BZGRfRGVsZXRlID09IHRydWVcIj5cclxuXHRcdFx0XHQ8aDQgc3R5bGU9XCJtYXJnaW46IDE1cnB4IDAgMCAzMHJweDtmb250LXdlaWdodDogYm9sZDtcIj7mlrDlop57e3BhcmFtLlN1Yl9DbHMuTmFtZSB9fTwvaDQ+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcblx0XHRcdFx0XHQ8IS0tIOW3puWPs+W4g+WxgCAtLT5cclxuXHRcdFx0XHRcdDxwIGNsYXNzPVwidHhfdGl0bGUyXCIgPnt7cGFyYW0uU2Nhbl9Db2RlLk5hbWV9fTo8L3A+XHJcblx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiBjbGFzcz1cImF0dHJfZmllbGRcIiA6dmFsdWU9XCJzY2FuQ29kZVZhbFwiIEBmb2N1cz1cInNjYW5fb250YXBcIiBAYmx1cj1cInNjYW5fb25ldmVudFwiIDpzdHlsZT1cInBhcmFtLlNjYW5fQ29kZS5IYXZlX1NlbGVjdF9CdXR0b249PXRydWU/J3dpZHRoOiAnKygxMDAtKHBhcmFtLlNjYW5fQ29kZS5OYW1lLmxlbmd0aCAqIDUpLTE0KSsnJTsnOid3aWR0aDogJysoMTAwLShwYXJhbS5TY2FuX0NvZGUuTmFtZS5sZW5ndGggKiA1KS01KSsnJTsnXCI+XHJcblx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwidGV4dC1yaWdodDJcIiB2LWlmPVwicGFyYW0uU2Nhbl9Db2RlLkhhdmVfU2VsZWN0X0J1dHRvbj09dHJ1ZVwiPlxyXG5cdFx0XHRcdFx0XHQ8YSBAdGFwPVwic2Nhbl9jbGFzc0F0dHJfZXh0QnV0dG9uKClcIiA+PGkgY2xhc3M9XCJhY2UtaWNvbiBmYVwiIDpjbGFzcz1cInBhcmFtLlNjYW5fQ29kZS5JbWc/cGFyYW0uU2Nhbl9Db2RlLkltZzonZmEtcGx1cy1jaXJjbGUnXCI+PC9pPjwvYT5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdFx0PCEtLSDkuIrkuIvluIPlsYAgLS0+XHJcblx0XHRcdFx0XHQ8IS0tIDx0ZXh0IGNsYXNzPVwidHhfdGl0bGVcIj57e3BhcmFtLlNjYW5fQ29kZS5OYW1lfX3vvJo8L3RleHQ+IFxyXG5cdFx0XHRcdFx0PGRpdiBjbGFzcz1cInRleHQtcmlnaHRcIiB2LWlmPVwicGFyYW0uU2Nhbl9Db2RlLkhhdmVfU2VsZWN0X0J1dHRvbj09dHJ1ZVwiPiAgXHJcblx0XHRcdFx0XHRcdDxhIEB0YXA9XCJtc19jbGFzc0F0dHJfZXh0QnV0dG9uKClcIj48aSBjbGFzcz1cImFjZS1pY29uIGZhXCIgOmNsYXNzPVwicGFyYW0uU2Nhbl9Db2RlLkltZz9wYXJhbS5TY2FuX0NvZGUuSW1nOidmYS1wbHVzLWNpcmNsZSdcIj48L2k+PC9hPlxyXG5cdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8aW5wdXQgdHlwZT1cInRleHRcIiB2YWx1ZT1cIlwiID4gLS0+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFxyXG5cdFx0XHQ8IS0tIOS7juaVsOaNruaYvuekuuivpuaDheWMuiAtLT5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ2LXBhbmVsbGlzdFwiIHYtZm9yPVwiKHN1YnBhbmVsLGlpaW5kZXgpIGluIHN1YlBhbmVsTGlzdFwiIFxyXG5cdFx0XHRcdEB0YXA9XCJvblBhbmVsQ2xpY2soaWlpbmRleClcIlxuXHRcdFx0XHQ6Y2xhc3M9XCJhY3RpdmVsaXN0W2lpaW5kZXhdLmFjdGl2ZT09dHJ1ZT8nYmstYWN0aXZlJzonJ1wiPlxyXG5cdFx0XHQgIDx2aWV3IGNsYXNzPVwidi1hcmVhIGR2LXBhbmVsXCIgdi1mb3I9XCIoaXRlbSxpbmRleCkgaW4gc3VicGFuZWwuc3ViQ2xhc3NBdHRyLmZvcm0uaXRlbXNcIj5cclxuXHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZHYtcGFuZWwtaW5wdXRcIj5cclxuXHRcdFx0XHRcdDwhLS0g5pmu6YCa5biD5bGAIC0tPlxyXG5cdFx0XHRcdFx0PHZpZXcgdi1pZj1cIml0ZW0ubmFtZSE9J0xheW91dCdcIj5cclxuXHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eHRfdGl0bGVcIiA6c3R5bGU9XCJ7J3dpZHRoJzppdGVtLmxhYmVsV2lkdGgrJ3B4J31cIj57e2l0ZW0ubGFiZWx9fe+8mjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb3JtLWl0ZW0tc3BhblwiIHYtaWY9XCJpdGVtLmRpc2FibGVkXCI+e3tpdGVtLnZhbHVlfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdDwhLS0g5paH5pys5qGGL+aVsOWtl+ahhiAtLT5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkdl9pbnB1dFwiIHYtaWY9XCIoaXRlbS5uYW1lPT0nSW5wdXQnIHx8IGl0ZW0ubmFtZT09J0lucHV0TnVtYmVyJykgJiYgIWl0ZW0uZGlzYWJsZWRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dGV4dCB2LWlmPVwiaXRlbS5zZXR0aW5nLnByZWZpeFwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ1bmktaWNvblwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0OmNsYXNzPVwiW2l0ZW0uc2V0dGluZy5wcmVmaXhdXCJcclxuXHRcdFx0XHRcdFx0XHRcdEBjaGFuZ2U9XCJvbmNoYW5nZShpdGVtKVwiPiYjeGU1Njg7PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cInVuaS1pbnB1dFwiIDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiIFxyXG5cdFx0XHRcdFx0XHRcdFx0OnR5cGU9XCJpdGVtLm5hbWU9PSdJbnB1dCc/J3RleHQnOml0ZW0ubmFtZT09J0lucHV0TnVtYmVyJz8nbnVtYmVyJzondGV4dCdcIiBcclxuXHRcdFx0XHRcdFx0XHRcdHYtbW9kZWw9XCJpdGVtLnZhbHVlXCJcclxuXHRcdFx0XHRcdFx0XHRcdDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0OnBsYWNlaG9sZGVyPVwiaXRlbS5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHRcdFx0XHQ6c3R5bGU9XCJ7J3dpZHRoJzppdGVtLnNldHRpbmcucHJlZml4ICYmIGl0ZW0uc2V0dGluZy5zdWZmaXg/Jzc4JSc6aXRlbS5zZXR0aW5nLnByZWZpeCB8fCBpdGVtLnNldHRpbmcuc3VmZml4Pyc4NyUnOic5NiUnfVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0OmZvY3VzPVwiZm9jdXNNYXRlcmlhXCJcclxuXHRcdFx0XHRcdFx0XHRcdEBmb2N1cz1cIm9udGFwKGl0ZW0pXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRAYmx1cj1cIm9uZXZlbnQoaXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRcdC8+XHJcblx0XHRcdFx0XHRcdFx0PHRleHQgdi1pZj1cIml0ZW0uc2V0dGluZy5zdWZmaXhcIiBcclxuXHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidW5pLWljb25cIiBcclxuXHRcdFx0XHRcdFx0XHRcdDpjbGFzcz1cIltpdGVtLnNldHRpbmcuc3VmZml4XVwiXHJcblx0XHRcdFx0XHRcdFx0XHRAY2xpY2s9XCJvbmNoYW5nZShpdGVtKVwiPiYjeGU1Njg7PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDwhLS0g5LiL5ouJ5qGGLeWNlemAiSBpdGVtLnVzZURpY3Q/aXRlbS5kaWN0Oml0ZW0uc2VsZWN0aW9ucy0tPlxyXG5cdFx0XHRcdFx0XHQ8dW5pLWRhdGEtc2VsZWN0IGlkPVwiZHZfc2VsZWN0XCIgdi1pZj1cIml0ZW0ubmFtZT09J1NlbGVjdCcgJiYgIWl0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiIFxyXG5cdFx0XHRcdFx0XHRcdHYtbW9kZWw9XCJpdGVtLnZhbHVlXCJcclxuXHRcdFx0XHRcdFx0XHQ6bG9jYWxkYXRhPVwiaXRlbS5kaWN0XCJcclxuXHRcdFx0XHRcdFx0XHRAY2hhbmdlPVwib25jaGFuZ2UoaXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRcdDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdDpjbGVhcj1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0PjwvdW5pLWRhdGEtc2VsZWN0PlxyXG5cdFx0XHRcdFx0XHQ8IS0tIOWkmuihjOaWh+acrCAtLT5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCIgdi1pZj1cIml0ZW0ubmFtZT09J1RleHRhcmVhJyAmJiAhaXRlbS5kaXNhYmxlZFwiPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0YXJlYSBjbGFzcz1cInVuaS1pbnB1dFwiIDp2YWx1ZT1cIml0ZW0udmFsdWVcIiBcclxuXHRcdFx0XHRcdFx0XHQgIDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiIFxyXG5cdFx0XHRcdFx0XHRcdCAgOnBsYWNlaG9sZGVyPVwiaXRlbS5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHRcdFx0ICBAYmx1cj1cIm9uTW9kZWxWYWx1ZShpdGVtKVwiIFxyXG5cdFx0XHRcdFx0XHRcdCAgc3R5bGU9XCJoZWlnaHQ6NjBweDtcIiBcclxuXHRcdFx0XHRcdFx0XHQgIDpzdHlsZT1cInsnd2lkdGgnOic5NiUnfVwiIFxyXG5cdFx0XHRcdFx0XHRcdCAgOmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0PjwvdGV4dGFyZWE+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0PCEtLSDlpI3pgInmoYYgLS0+XHJcblx0XHRcdFx0XHRcdDxjaGVja2JveC1ncm91cCBjbGFzcz1cImNoZWNrX3JlbWVtYmVyUHdkXCIgdi1pZj1cIml0ZW0ubmFtZT09J0NoZWNrYm94J1wiXHJcblx0XHRcdFx0XHRcdFx0OmNsYXNzPVwiaXRlbS5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0XHRcdFx0QGNoYW5nZT1cIm9uTW9kZWxWYWx1ZShpdGVtKVwiIFxyXG5cdFx0XHRcdFx0XHRcdDpkYXRhLWlzY2hlY2s9XCJpdGVtLnZhbHVlXCIgXHJcblx0XHRcdFx0XHRcdFx0OmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0OnN0eWxlPVwieydtYXJnaW4tbGVmdCc6JzEwcnB4J31cIj5cclxuXHRcdFx0XHRcdFx0XHQ8bGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHQ8Y2hlY2tib3ggOnZhbHVlPVwiaXRlbS52YWx1ZVwiIDpjaGVja2VkPVwiaXRlbS52YWx1ZVwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0Pnt7aXRlbS5sYWJlbH19PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdDwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdDwvY2hlY2tib3gtZ3JvdXA+XHJcblx0XHRcdFx0XHRcdDwhLS0gU3dpdGNo5byA5YWzIC0tPlxyXG5cdFx0XHRcdFx0XHQ8c3dpdGNoIHYtaWY9XCJpdGVtLm5hbWU9PSdTd2l0Y2gnXCIgOmNsYXNzPVwiaXRlbS5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0XHRcdFx0OmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0di1tb2RlbD1cIml0ZW0udmFsdWVcIiBcclxuXHRcdFx0XHRcdFx0XHRAY2hhbmdlPVwib25Nb2RlbFZhbHVlKGl0ZW0pXCIgXHJcblx0XHRcdFx0XHRcdFx0OnN0eWxlPVwieydtYXJnaW4tbGVmdCc6JzEwcnB4J31cIi8+XHJcblx0XHRcdFx0XHRcdDwhLS0g5pel5pyf5pe26Ze0IC0tPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImlucHV0LXdyYXBwZXJcIiB2LWlmPVwiKGl0ZW0ubmFtZT09J1RpbWVQaWNrZXInIHx8IGl0ZW0ubmFtZT09J0RhdGVQaWNrZXInKSAmJiAhaXRlbS5kaXNhYmxlZFwiPlxyXG5cdFx0XHRcdFx0XHRcdDxwaWNrZXIgbW9kZT1cImRhdGVcIiBjbGFzcz1cImRhdGVfaXB1dFwiIDpjbGFzcz1cIml0ZW0uZGlzYWJsZWQ/J2lucHV0LWRpc2FibGVkJzonJ1wiXHJcblx0XHRcdFx0XHRcdFx0ICA6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHRcdFx0XHQgIDp2YWx1ZT1cIml0ZW0udmFsdWVcIiBcclxuXHRcdFx0XHRcdFx0XHQgIEBjaGFuZ2U9XCJvbk1vZGVsVmFsdWUoaXRlbSlcIiBcclxuXHRcdFx0XHRcdFx0XHQ+XHJcblx0XHRcdFx0XHRcdFx0ICAgPHZpZXcgY2xhc3M9XCJwaWNrZXJcIj57e2l0ZW0udmFsdWV9fTwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0PCEtLSDmoIXmoLzluIPlsYAgLS0+XHJcblx0XHRcdFx0XHQ8dW5pLXJvdyBjbGFzcz1cImRlbW8tdW5pLXJvd1wiIHYtaWY9XCJpdGVtLm5hbWU9PSdMYXlvdXQnXCI+XHJcblx0XHRcdFx0XHRcdDx1bmktY29sIHYtZm9yPVwiKGNvbHMsa2V5KSBpbiBpdGVtLnNldHRpbmcuY29sTGlzdFwiIFxyXG5cdFx0XHRcdFx0XHRcdDpzcGFuPVwiaXRlbS5zZXR0aW5nLnNwYW5MaXN0P2l0ZW0uc2V0dGluZy5zcGFuTGlzdFtrZXldOjI0IC8gaXRlbS5zZXR0aW5nLmNvbFwiPlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IHYtaWY9XCJjb2xzIT1udWxsXCIgPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eHRfdGl0bGVcIiA6c3R5bGU9XCJ7J3dpZHRoJzpjb2xzLmxhYmVsV2lkdGgrJ3B4J31cIj57e2NvbHMubGFiZWx9fe+8mjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9ybS1pdGVtLXNwYW5cIiB2LWlmPVwiY29scy5kaXNhYmxlZFwiPnt7Y29scy52YWx1ZX19PC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJkdl9pbnB1dFwiIHYtaWY9XCIoY29scy5uYW1lPT0nSW5wdXQnIHx8IGNvbHMubmFtZT09J0lucHV0TnVtYmVyJykgJiYgIWNvbHMuZGlzYWJsZWRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgdi1pZj1cImNvbHMuc2V0dGluZy5wcmVmaXhcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInVuaS1pY29uXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OmNsYXNzPVwiW2NvbHMuc2V0dGluZy5wcmVmaXhdXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAY2hhbmdlPVwib25jaGFuZ2UoY29scylcIj4mI3hlNTY4OzwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwidW5pLWlucHV0XCIgOmNsYXNzPVwiY29scy5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OnR5cGU9XCJjb2xzLm5hbWU9PSdJbnB1dCc/J3RleHQnOmNvbHMubmFtZT09J0lucHV0TnVtYmVyJz8nbnVtYmVyJzondGV4dCdcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2LW1vZGVsPVwiY29scy52YWx1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OmRpc2FibGVkPVwiY29scy5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OnBsYWNlaG9sZGVyPVwiY29scy5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OnN0eWxlPVwieyd3aWR0aCc6Y29scy5zZXR0aW5nLnByZWZpeCAmJiBjb2xzLnNldHRpbmcuc3VmZml4Pyc3OCUnOmNvbHMuc2V0dGluZy5wcmVmaXggfHwgY29scy5zZXR0aW5nLnN1ZmZpeD8nODclJzonOTYlJ31cIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6Zm9jdXM9XCJmb2N1c01hdGVyaWFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBmb2N1cz1cIm9udGFwKGNvbHMpXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0QGJsdXI9XCJvbmV2ZW50KGNvbHMpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgdi1pZj1cImNvbHMuc2V0dGluZy5zdWZmaXhcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRjbGFzcz1cInVuaS1pY29uXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OmNsYXNzPVwiW2NvbHMuc2V0dGluZy5zdWZmaXhdXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAY2xpY2s9XCJvbmNoYW5nZShjb2xzKVwiPiYjeGU1Njg7PC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PCEtLSDkuIvmi4nmoYYt5Y2V6YCJIGNvbHMudXNlRGljdD9jb2xzLmRpY3Q6Y29scy5zZWxlY3Rpb25zLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLWRhdGEtc2VsZWN0IGlkPVwiZHZfc2VsZWN0XCIgdi1pZj1cImNvbHMubmFtZT09J1NlbGVjdCcgJiYgIWNvbHMuZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6Y2xhc3M9XCJjb2xzLmRpc2FibGVkPydpbnB1dC1kaXNhYmxlZCc6JydcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0di1tb2RlbD1cImNvbHMudmFsdWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6bG9jYWxkYXRhPVwiY29scy5kaWN0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0QGNoYW5nZT1cIm9uY2hhbmdlKGNvbHMpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OmRpc2FibGVkPVwiY29scy5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdDpjbGVhcj1cImZhbHNlXCJcclxuXHRcdFx0XHRcdFx0XHRcdD48L3VuaS1kYXRhLXNlbGVjdD5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0g5aSa6KGM5paH5pysIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCIgdi1pZj1cImNvbHMubmFtZT09J1RleHRhcmVhJyAmJiAhY29scy5kaXNhYmxlZFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dGFyZWEgY2xhc3M9XCJ1bmktaW5wdXRcIiA6dmFsdWU9XCJjb2xzLnZhbHVlXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgOmNsYXNzPVwiY29scy5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgOnBsYWNlaG9sZGVyPVwiY29scy5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgQGJsdXI9XCJvbk1vZGVsVmFsdWUoY29scylcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICBzdHlsZT1cImhlaWdodDo2MHB4O1wiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgIDpzdHlsZT1cInsnd2lkdGgnOic5NiUnfVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgIDpkaXNhYmxlZD1cImNvbHMuZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ+PC90ZXh0YXJlYT5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0g5aSN6YCJ5qGGIC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGNoZWNrYm94LWdyb3VwIGNsYXNzPVwiY2hlY2tfcmVtZW1iZXJQd2RcIiB2LWlmPVwiY29scy5uYW1lPT0nQ2hlY2tib3gnXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OmNsYXNzPVwiY29scy5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdDpkaXNhYmxlZD1cIml0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRAY2hhbmdlPVwib25Nb2RlbFZhbHVlKGNvbHMpXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdDpkYXRhLWlzY2hlY2s9XCJjb2xzLnZhbHVlXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdDpzdHlsZT1cInsnbWFyZ2luLWxlZnQnOicxMHJweCd9XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxsYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8Y2hlY2tib3ggOnZhbHVlPVwiY29scy52YWx1ZVwiIDpjaGVja2VkPVwiY29scy52YWx1ZVwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dD57e2NvbHMubGFiZWx9fTwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdDwvY2hlY2tib3gtZ3JvdXA+XHJcblx0XHRcdFx0XHRcdFx0XHQ8IS0tIFN3aXRjaOW8gOWFsyAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdDxzd2l0Y2ggdi1pZj1cImNvbHMubmFtZT09J1N3aXRjaCdcIiA6Y2xhc3M9XCJjb2xzLmRpc2FibGVkPydpbnB1dC1kaXNhYmxlZCc6JydcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0di1tb2RlbD1cImNvbHMudmFsdWVcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0QGNoYW5nZT1cIm9uTW9kZWxWYWx1ZShjb2xzKVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6c3R5bGU9XCJ7J21hcmdpbi1sZWZ0JzonMTBycHgnfVwiLz5cclxuXHRcdFx0XHRcdFx0XHRcdDwhLS0g5pel5pyf5pe26Ze0IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJpbnB1dC13cmFwcGVyXCIgdi1pZj1cIihjb2xzLm5hbWU9PSdUaW1lUGlja2VyJyB8fCBjb2xzLm5hbWU9PSdEYXRlUGlja2VyJykgJiYgIWNvbHMuZGlzYWJsZWRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHBpY2tlciBtb2RlPVwiZGF0ZVwiIGNsYXNzPVwiZGF0ZV9pcHV0XCIgOmNsYXNzPVwiY29scy5kaXNhYmxlZD8naW5wdXQtZGlzYWJsZWQnOicnXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgOmRpc2FibGVkPVwiaXRlbS5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgOnZhbHVlPVwiY29scy52YWx1ZVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgIEBjaGFuZ2U9XCJvbk1vZGVsVmFsdWUoY29scylcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQgICA8dmlldyBjbGFzcz1cInBpY2tlclwiPnt7Y29scy52YWx1ZX19PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3BpY2tlcj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDwvdW5pLWNvbD5cclxuXHRcdFx0XHRcdDwvdW5pLXJvdz5cclxuXHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0ICA8L3ZpZXc+XHJcblx0XHRcdCAgXHJcblx0XHRcdCAgPHZpZXcgY2xhc3M9XCJ2LXBhbmVsZGVsXCIgdi1pZj1cInBhcmFtLlN1Yl9DbHMuQ2FuX0FkZF9EZWxldGUgPT0gdHJ1ZVwiPlxyXG5cdFx0XHQgIFx0PGEgaHJlZj1cImphdmFzY3JpcHQ6O1wiIGNsYXNzPVwicGFuZWxfZGVsXCIgQHRhcD1cInBhbmVsX2RlbChpaWluZGV4KVwiPjxpIGNsYXNzPVwiYWNlLWljb24gZnUtZGVsZXRlXCI+PC9pPjwvYT5cclxuXHRcdFx0ICA8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHRcdFxyXG5cdFx0XHJcblx0XHQ8dmlldyBjbGFzcz1cInZpZXctZmxvb3JcIj5cclxuXHRcdFx0PGJ1dHRvbiB0eXBlPVwiZGVmYXVsdFwiIEB0YXA9XCJjYW5jZWxcIiBjbGFzcz1cImJ0bl9jYW5jZWxcIiB2LWlmPVwicGFyYW0uU3ViX0Nscy5DYW5fQWRkX0RlbGV0ZSA9PSB0cnVlXCI+5Y+W5raIPC9idXR0b24+XHJcblx0XHRcdDxidXR0b24gdHlwZT1cImRlZmF1bHRcIiBAdGFwPVwic2F2YVwiIGNsYXNzPVwiYnRuX2FkZFwiIHYtaWY9XCJwYXJhbS5TdWJfQ2xzLkNhbl9BZGRfRGVsZXRlID09IHRydWVcIj57e3RpdGxlfX08L2J1dHRvbj5cclxuXHRcdFx0PGJ1dHRvbiB0eXBlPVwiZGVmYXVsdFwiIEB0YXA9XCJzYXZhXCIgY2xhc3M9XCJidG5fc2F2YVwiIHYtZWxzZS1pZj1cInBhcmFtLlN1Yl9DbHMuQ2FuX0FkZF9EZWxldGUgPT0gZmFsc2VcIj57e3RpdGxlfX08L2J1dHRvbj5cclxuXHRcdDwvdmlldz5cclxuXHRcdDwhLS0g5pmu6YCa5by556qXIHRvcCBib3R0b20gY2VudGVyIGxlZnQgcmlnaHQgLS0+XHJcblx0XHQ8dmlldz5cclxuXHRcdFx0PHVuaS1wb3B1cCBjbGFzcz1cInZpZXctcG9wdXBcIiByZWY9XCJwb3B1cFwiIGJhY2tncm91bmQtY29sb3I9XCIjZmZmXCIgQGNoYW5nZT1cInBvcHVwQ2hhbmdlXCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJwb3B1cC1oZWFkZXJcIj57e2NoZWNrX2xpc3QudGl0bGV9fTwvdmlldz5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cInBvcHVwLWNvbnRlbnRcIiA6Y2xhc3M9XCJ7ICdwb3B1cC1oZWlnaHQnOiBwb3B1cFR5cGUgPT09ICdsZWZ0JyB8fCBwb3B1cFR5cGUgPT09ICdyaWdodCcgfVwiIFxyXG5cdFx0XHRcdDpzdHlsZT1cInsnd2lkdGgnOmNoZWNrX2xpc3Qud2lkdGg/Y2hlY2tfbGlzdC53aWR0aCsncHgnOicyMDBweCcsJ2hlaWdodCc6Y2hlY2tfbGlzdC5oZWlnaHQ/Y2hlY2tfbGlzdC5oZWlnaHQrJ3B4JzonODglJ31cIj5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwicG9wdXAtY29udFwiIDpzdHlsZT1cInsnaGVpZ2h0JzpjaGVja19saXN0LmhlaWdodD9jaGVja19saXN0LmhlaWdodC00NSsncHgnOic0MTVweCd9XCI+XHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidmlld19wb3B1cF9DaGVja0xpc3RcIiB2LWZvcj1cIihpdGVtLGluZGV4KSBpbiBjaGVja19saXN0Lml0ZW1zXCI+XHJcblx0XHRcdFx0XHRcdFx0PGNoZWNrYm94LWdyb3VwIGNsYXNzPVwiY2hlY2tfbGlzdFwiIEBjaGFuZ2U9XCJjaGVja0NoYW5nZVwiIDpkYXRhLWlzY2hlY2s9XCJpdGVtLmNoZWNrXCIgOmRhdGEtaW5kZXg9XCJpbmRleFwiICA6c3R5bGU9XCJ7J21hcmdpbi1sZWZ0JzogJzEwcnB4J31cIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxsYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGNoZWNrYm94IDp2YWx1ZT1cIml0ZW0uY2hlY2tcIiA6Y2hlY2tlZD1cIml0ZW0uY2hlY2tcIi8+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0Pnt7aXRlbS5uYW1lfX08L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L2xhYmVsPlxyXG5cdFx0XHRcdFx0XHRcdDwvY2hlY2tib3gtZ3JvdXA+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwicG9wdXAtZm9vdGVyXCI+XHJcblx0XHRcdFx0XHRcdDxidXR0b24gdHlwZT1cImRlZmF1bHRcIiBAdGFwPVwicG9wdXBfc2F2YVwiIGNsYXNzPVwiYnRuX3BvcHVwX2FkZFwiPuehruWumjwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHQ8YnV0dG9uIHR5cGU9XCJkZWZhdWx0XCIgQHRhcD1cInBvcHVwX2NhbmNlbFwiIGNsYXNzPVwiYnRuX3BvcHVwX2NhbmNlbFwiPuWPlua2iDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC91bmktcG9wdXA+XHJcblx0XHQ8L3ZpZXc+XG4gICAgPC92aWV3PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cclxuaW1wb3J0IEJhc2U2NCBmcm9tICcuLi8uLi9jb21wb25lbnRzL2pzLWJhc2U2NC9iYXNlNjQuanMnXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBtb2R1bGVzOntcclxuXHRCYXNlNjQsXHJcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xyXG5cdCAgdGl0bGU6J+aWsOWinicsXG4gICAgICBwYXJhbToge30sXHJcblx0ICBlZGl0X2luaXRhbF9ldmVudDpcIlwiLCAgLy/lvLnnqpfliJ3lp4vljJbkuovku7ZJRFxyXG5cdCAgZWRpdF9va19ldmVudDpcIlwiLCAgICAgIC8v5by556qX54K55Ye7T0sg6Kem5Y+R5LqL5Lu2SURcclxuXHQgIGVkaXRfc2VsZWN0X2NvbXBvc2VfZXZlbnQ6XCJcIiwgIC8v6YCJ5oup57uE5oiQ5a+56LGh5pe26LCD55SoXHJcblx0ICBlZGl0X2NvbXBvc2VfY2xzX2lkOlwiXCIsXHJcblx0ICBnbG9iYWxfYXR0cjpbXSxcclxuXHQgIHJlZmRhdGFzdG9yZTogW10sXHQgICAvL+W8leeUqOaVsOaNruWtmOWCqOWMui8vIHthdHRyOidHX1BSSl8nICsgYmluZGF0dHIgKyAnX0lEJywgdmFsdWU6aW5mby5pZH1cclxuXHQgIHNjYW5Db2RlVmFsOlwiXCIsXHJcblx0ICBzdWJDbGFzc0F0dHJMaXN0OltdLFxyXG5cdCAgc3ViUGFuZWxMaXN0OltdLFxyXG5cdCAgc3ViQ2xhc3NHcmlkU3R5bGU6W10sXHJcblx0ICBwb3B1cFR5cGU6XCJjZW50ZXJcIixcclxuXHQgIGNoZWNrX2xpc3Q6e30sXHJcblx0ICBcclxuXHQgIGZvY3VzTWF0ZXJpYTpmYWxzZSxcclxuXHQgIGhlYWRfc3R5bGVkZWY6e1xyXG5cdFx0Zm9ybTp7XHJcblx0XHRcdGl0ZW1zOltdXHJcblx0XHR9XHJcblx0ICB9LFxuICAgICAgZGV0YWlsMV9zdHlsZWRlZjp7fSxcbiAgICAgIGRldGFpbDFTdHlsZURlZkxpc3Q6W10sXHJcblx0ICBhY3RpdmVsaXN0OltdLFxuICAgIH07XG4gIH0sXHJcbiAgb25Mb2FkKG9wdGlvbnMpIHtcclxuXHQvLyBjb25zb2xlLmxvZyhvcHRpb25zKTtcclxuXHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHsgdGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lfSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxyXG5cdHRoaXMuJGRhdGEudGl0bGUgPSBvcHRpb25zLnRpdGxlbmFtZTtcclxuXHR0aGlzLiRkYXRhLnBhcmFtID0gSlNPTi5wYXJzZShvcHRpb25zLnBhcmFtKTtcclxuXHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLnBhcmFtKTtcclxuXHQgLy/ojrflj5bmlbDmja7nsbvnmoToh6rlrprkuYnooajljZXlj4LmlbBcclxuXHR0aGlzLkhlYWRfVUlTdHlsZUdldEluZm8odGhpcy5wYXJhbS5NYXN0ZXJfQ2xzLklELHRoaXMucGFyYW0uTWFzdGVyX0Nscy5VSV9TdHlsZS5JRCk7XHJcblx0dGhpcy5EZXRhaWwxX1VJc3R5bGVHZXRJbmZvKHRoaXMucGFyYW0uU3ViX0Nscy5JRCx0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuVUlfU3R5bGUuSUQpO1xyXG5cdFxyXG5cdC8v6aG16Z2i5Yid5aeL5YyW6I635Y+W54Sm54K5XHJcblx0Ly8gdGhpcy5mb2N1c01hdGVyaWE9dHJ1ZTsgXHJcbiAgfSxcdFxuICBtZXRob2RzOiB7XG4gICAgYXN5bmMgSGVhZF9VSVN0eWxlR2V0SW5mbyhjbGFzc19pZCxzdHlsZV9pZCl7ICAgLy/ojrflj5boh6rlrprkuYnooajljZXmoLflvI9cclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0XHRjbGFzc19pZDpjbGFzc19pZCxcclxuXHRcdFx0dWlfc3R5bGVfaWQ6c3R5bGVfaWQsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ1VJU3R5bGVHZXRJbmZvJyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIHN0eWxlZGVmPVwiXCI7XHJcblx0XHRcdFx0aWYocmV0LnJlc3VsdC5zdHlsZV9kZWYpe1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDLnmoRzdHlsZV9kZWbmmK9qc29u5a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBzdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmLnJlcGxhY2UoL1xcXFwvZyxcIlwiKTtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gz55qEc3R5bGVfZGVm5pivYmFzZTY05a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBpZighcmV0LnJlc3VsdC5zdHlsZV9kZWYuaW5jbHVkZXMoJ1wiJykpIHN0eWxlZGVmID0gQmFzZTY0LmRlY29kZShyZXQucmVzdWx0LnN0eWxlX2RlZik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdCR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZj8gSlNPTi5wYXJzZShzdHlsZWRlZik6IHt9O1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtcy5mb3JFYWNoKGFzeW5jIChlbGUsaW5kZXgpID0+IHtcclxuXHRcdFx0XHQgICAgaWYoZWxlLnVzZURpY3Q9PXRydWUpeyAvL+WIpOaWrXVzZURpY3TmmK/lkKbkvb/nlKjlrZflhbhcclxuXHRcdFx0XHQgICAgICAgIGF3YWl0IHRoaXMuRGljdEdldEluZm8oZWxlLmJpbmQuZGljdCxpbmRleCwnbWFzdCcpO1xyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMVwiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG4gICAgICAgIFxyXG4gICAgfSxcbiAgICBhc3luYyBEZXRhaWwxX1VJc3R5bGVHZXRJbmZvKGNsYXNzX2lkLHN0eWxlX2lkKXsgICAvL+iOt+WPluiHquWumuS5ieihqOWNleagt+W8j1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdGNsYXNzX2lkOmNsYXNzX2lkLFxyXG5cdFx0XHR1aV9zdHlsZV9pZDpzdHlsZV9pZCxcclxuXHRcdH07XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnVUlTdHlsZUdldEluZm8nLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgc3R5bGVkZWY9XCJcIjtcclxuXHRcdFx0XHRpZihyZXQucmVzdWx0LnN0eWxlX2RlZil7XHJcblx0XHRcdFx0ICAgICAvL21vYm94MueahHN0eWxlX2RlZuaYr2pzb27lrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIHN0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWYucmVwbGFjZSgvXFxcXC9nLFwiXCIpO1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDPnmoRzdHlsZV9kZWbmmK9iYXNlNjTlrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIGlmKCFyZXQucmVzdWx0LnN0eWxlX2RlZi5pbmNsdWRlcygnXCInKSkgc3R5bGVkZWYgPSBCYXNlNjQuZGVjb2RlKHJldC5yZXN1bHQuc3R5bGVfZGVmKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0JHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmPyBKU09OLnBhcnNlKHN0eWxlZGVmKToge307XHJcblx0XHRcdFx0JHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZi5TZWxCdXRfQ2hlY2tlZCA9IHRydWU7XHJcblx0XHRcdFx0JHRoaXMuZGV0YWlsMV9zdHlsZWRlZi5mb3JtLml0ZW1zLmZvckVhY2goYXN5bmMgKGVsZSxpbmRleCkgPT4ge1xyXG5cdFx0XHRcdCAgICBpZihlbGUudXNlRGljdD09dHJ1ZSl7IC8v5Yik5patdXNlRGljdOaYr+WQpuS9v+eUqOWtl+WFuFxyXG5cdFx0XHRcdCAgICAgICAgYXdhaXQgdGhpcy5EaWN0R2V0SW5mbyhlbGUuYmluZC5kaWN0LGluZGV4LCdzdWInKTtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdC8vIHZhciBhYSA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZGV0YWlsMV9zdHlsZWRlZik7XHJcblx0XHRcdFx0Ly8gJHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdC5wdXNoKEpTT04ucGFyc2UoYWEpKTtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yXCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcbiAgICAgICAgXHJcbiAgICB9LFxuICAgIGFzeW5jIERpY3RHZXRJbmZvKGRpY3QsaW5kZXgsdHlwZSl7IC8vTW9ib3gz5b6X5Yiw5b6X5Yiw5a2X5YW45L+h5oGv5a2X5YW46aG55YiX6KGoXHJcblx0XHR0aGlzLmRhdGE9W107XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvID17XHJcblx0XHRcdGRpY3RfaWQ6IGRpY3QuaWQsXHJcblx0XHRcdGRpY3RfbmFtZTogZGljdC5uYW1lXHJcblx0XHR9O1xyXG5cdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RpY3RHZXRJbmZvJyxkYXRhSW5mbykudGhlbihhc3luYyAoc3VjY2Vzcyk9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XHJcblx0XHRcdGlmIChzdWNjZXNzLmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgbGlzdD1bXTtcclxuXHRcdFx0XHR2YXIgaXRlbU5hbWU9Jyc7XHJcblx0XHRcdFx0c3VjY2Vzcy5yZXN1bHQuZGljdF9pdGVtX2xpc3QuZm9yRWFjaCgoaXRlbSkgPT4ge1xyXG5cdFx0XHRcdCAgICBpZihpdGVtLmlzX2RlZmF1bHQ9PScxJylcclxuXHRcdFx0XHQgICAgICAgIGl0ZW1OYW1lID0gaXRlbS5uYW1lO1xyXG5cdFx0XHRcdCAgICBsaXN0LnB1c2goe1xyXG5cdFx0XHRcdCAgICAgICAgdGV4dDppdGVtLnZhbHVlLFxyXG5cdFx0XHRcdCAgICAgICAgdmFsdWU6aXRlbS5uYW1lLFxyXG5cdFx0XHRcdCAgICB9KTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHJcblx0XHRcdFx0aWYodHlwZT09J21hc3QnKXsvL+aciem7mOiupOWAvO+8jOaYvuekuum7mOiupOWAvFxyXG5cdFx0XHRcdFx0aWYoaXRlbU5hbWUpe1xyXG5cdFx0XHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXNbaW5kZXhdLnZhbHVlPWl0ZW1OYW1lO1xyXG5cdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tpbmRleF0uZmllbGRJZDtcclxuXHRcdFx0XHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gaXRlbU5hbWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXNbaW5kZXhdLmRpY3Q9bGlzdDtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0ZWxzZXtcclxuXHRcdFx0XHRcdGlmKGl0ZW1OYW1lKXtcclxuXHRcdFx0XHRcdFx0JHRoaXMuZGV0YWlsMV9zdHlsZWRlZi5mb3JtLml0ZW1zW2luZGV4XS52YWx1ZT1pdGVtTmFtZTtcclxuXHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy5kZXRhaWwxX3N0eWxlZGVmLmZvcm0uaXRlbXNbaW5kZXhdLmZpZWxkSWQ7XHJcblx0XHRcdFx0XHRcdCR0aGlzLmRldGFpbDFfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IGl0ZW1OYW1lO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0JHRoaXMuZGV0YWlsMV9zdHlsZWRlZi5mb3JtLml0ZW1zW2luZGV4XS5kaWN0PWxpc3Q7XHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZygkdGhpcy4kZGF0YS5kZXRhaWwxX3N0eWxlZGVmKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4yXCIsY29udGVudDpzdWNjZXNzLmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjNcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG5cdH0sXHJcblx0XHJcblx0b250YXAoaXRlbSl7IC8v5omr56CB5Yqf6IO9XHJcblx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxyXG5cdFx0Z2V0QXBwKCkub25TY2FuKChyZXN1bHQpPT57XHJcblx0XHRcdC8vY29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xyXG5cdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XHJcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdGNvbnNvbGUubG9nKGl0ZW0pO1xyXG5cdFx0XHRpZihpdGVtLm9sZHZhbHVlICE9IHJlc3VsdC5kZWNvZGVkYXRhKXtcclxuXHRcdFx0ICAgIGl0ZW0ub2xkdmFsdWUgPSByZXN1bHQuZGVjb2RlZGF0YTtcclxuXHRcdFx0XHRpdGVtLnZhbHVlID0gcmVzdWx0LmRlY29kZWRhdGE7XHJcblx0XHRcdFx0dmFyIGF0dHIgPSBpdGVtLmZpZWxkSWQ7XHJcblx0XHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gcmVzdWx0LmRlY29kZWRhdGE7XHJcblx0XHRcdFx0aWYocmVzdWx0LmRlY29kZWRhdGEpeyAvL+esrOS4gOS4qui+k+WFpeahhuS4jeS4uuepulxyXG5cdFx0XHRcdFx0JHRoaXMuZm9jdXNNYXRlcmlhID0gdHJ1ZTsgLy/liJ3lp4vljJbvvIznrKzkuozkuKrovpPlhaXmoYZmb2N1c+WxnuaAp1xyXG5cdFx0XHRcdFx0Ly8gc2V0VGltZW91dChmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0Ly8gXHQkdGhpcy5mb2N1c01hdGVyaWE9dHJ1ZTsgLy/nrKzkuozkuKrovpPlhaXmoYbojrflj5bnhKbngrlcclxuXHRcdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0XHRcdFx0fSwxMDAwKTtcclxuXHRcdFx0XHRcdC8vIH0sNTAwKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHljLrkuovku7bohJrmnKxcclxuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLklucHV0X0NoYW5nZV9FdmVudC5JRDtcclxuXHRcdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHQgICAgICAgIHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0XHQgICAgICAgIC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHRcdFx0ICAgICAgICB2YXIgcmVxID0gT2JqZWN0LmtleXMob2JqX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdFx0ICAgICAgICBcdGF0dHI6IGEsXHJcblx0XHRcdCAgICAgICAgXHR2YWx1ZTogb2JqX2F0dHJbYV0gfHwgXCJcIixcclxuXHRcdFx0ICAgICAgICB9KSk7XHJcblx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCI3XCIsLy9cIjBcIixcclxuXHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICdNQk9YJywvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcclxuXHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHRcdFx0bWFzdF9hdHRyOiBbXSxcclxuXHRcdFx0XHRcdFx0aW5wdXRQYXJhbXRlcjpbeyBhdHRyOiAnbWFzdF9pbnB1dF8zMDM3JywgdmFsdWU6IHJlc3VsdC5kZWNvZGVkYXRhIH1dXHJcblx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdCAgICAgICAgdGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcclxuXHRcdFx0ICAgIH1cclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdG9uZXZlbnQoaXRlbSl7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0Y29uc29sZS5sb2coaXRlbSk7XHJcblx0XHRpZihpdGVtLm9sZHZhbHVlICE9IGl0ZW0udmFsdWUpe1xyXG5cdFx0ICAgIGl0ZW0ub2xkdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHR2YXIgYXR0ciA9IGl0ZW0uZmllbGRJZDtcclxuXHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHljLrkuovku7bohJrmnKxcclxuXHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5JbnB1dF9DaGFuZ2VfRXZlbnQuSUQ7XHJcblx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHQgICAgICAgIHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0ICAgICAgICAvLyBjb25zb2xlLmxvZyhvYmpfYXR0cik7XHJcblx0XHQgICAgICAgIHZhciByZXEgPSBPYmplY3Qua2V5cyhvYmpfYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdFx0ICAgICAgICBcdGF0dHI6IGEsXHJcblx0XHQgICAgICAgIFx0dmFsdWU6IG9ial9hdHRyW2FdIHx8IFwiXCIsXHJcblx0XHQgICAgICAgIH0pKTtcclxuXHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHQgICAgICAgICAgICBldmVudGlkOiBldmVudGlkLFxyXG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjdcIiwvL1wiMFwiLFxyXG5cdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdCAgICAgICAgICAgIGNsc2lkOiAnTUJPWCcsLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXHJcblx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdCAgICAgICAgXHRtYXN0X2F0dHI6IFtdLFxyXG5cdFx0ICAgICAgICBcdGlucHV0UGFyYW10ZXI6W3sgYXR0cjogJ21hc3RfaW5wdXRfMzAzNycsIHZhbHVlOiBpdGVtLnZhbHVlIH1dXHJcblx0XHQgICAgICAgIH1cclxuXHRcdCAgICAgICAgXHJcblx0XHQgICAgICAgIHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XHJcblx0XHQgICAgfVxyXG5cdFx0fVxyXG5cdFx0XHJcblx0fSxcclxuXHRvbmNoYW5nZShpdGVtKSB7XHJcblx0XHRjb25zb2xlLmxvZyhpdGVtKTtcclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRjb25zb2xlLmxvZyhpdGVtKTtcclxuXHRcdGlmKGl0ZW0ub2xkdmFsdWUgIT0gaXRlbS52YWx1ZSl7XHJcblx0XHQgICAgaXRlbS5vbGR2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdHZhciBhdHRyID0gaXRlbS5maWVsZElkO1xyXG5cdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0cl0gPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHR2YXIgZXZlbnRpZCA9IGl0ZW0uYmluZC5vbkNoYW5nZUV2ZW50LmlkOyAgIC8v5YaF5a655Y+Y5YyW5ZCO5LqL5Lu2XHJcblx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcclxuXHRcdCAgICAgICAgdmFyIG9ial9hdHRyID0gdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWw7XHJcblx0XHQgICAgICAgIC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHRcdCAgICAgICAgdmFyIHJlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHQgICAgICAgIFx0YXR0cjogYSxcclxuXHRcdCAgICAgICAgXHR2YWx1ZTogb2JqX2F0dHJbYV0gfHwgXCJcIixcclxuXHRcdCAgICAgICAgfSkpO1xyXG5cdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXHJcblx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdCAgICAgICAgfVxyXG5cdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdCAgICB9XHJcblx0XHR9XHJcblx0XHRcclxuXHR9LFxyXG5cdHNjYW5fb250YXAoZSl7IC8v5omr56CB5Yy65omr56CB5Yqf6IO9XHJcblx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxyXG5cdFx0Z2V0QXBwKCkub25TY2FuKChyZXN1bHQpPT57XHJcblx0XHRcdGNvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcclxuXHRcdFx0dmFyIGlzZmxhZz10cnVlO1xyXG5cdFx0XHRmb3IodmFyIGkgaW4gdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Qpe1xyXG5cdFx0XHRcdGlmKHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2ldLnNjYW5Db2RlVmFsID09IHJlc3VsdC5kZWNvZGVkYXRhKSBcclxuXHRcdFx0XHRcdGlzZmxhZz1mYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0XHQvL+WtkOaVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxyXG5cdFx0XHRpZiAoaXNmbGFnKSB7XHJcblx0XHRcdFx0dW5pLmhpZGVLZXlib2FyZCgpO1xyXG5cdFx0XHRcdHRoaXMuJGRhdGEuc2NhbkNvZGVWYWw9cmVzdWx0LmRlY29kZWRhdGE7XHJcblx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5JbnB1dF9DaGFuZ2VfRXZlbnQuSUQ7XHJcblx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHRcdC8v5Li75pWw5o2u57G75bGe5oCnXHJcblx0XHRcdFx0XHR2YXIgb2JqX2F0dHIgPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHRcdFx0XHRcdHZhciBtYXN0X3JlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHRcdFx0XHRcdGF0dHI6IGEsXHJcblx0XHRcdFx0XHRcdHZhbHVlOiBvYmpfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0XHRcdFx0fSkpO1xyXG5cdFx0XHRcdFx0dmFyIG9ial9hdHRyMiA9IHRoaXMuZGV0YWlsMV9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0XHRcdFx0dmFyIHJlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyMikubWFwKChhKSA9PiAoe1xyXG5cdFx0XHRcdFx0XHRhdHRyOiBhLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTogb2JqX2F0dHIyW2FdIHx8IFwiXCIsXHJcblx0XHRcdFx0XHR9KSk7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiAnNycsLy9cIjBcIixcclxuXHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICdNQk9YJywvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcclxuXHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdCAgICAgICAgICAgIGF0dHI6IG1hc3RfcmVxLFxyXG5cdFx0XHRcdFx0XHRzdWJfYXR0cjogcmVxLFxyXG5cdFx0XHRcdFx0XHRpbnB1dFBhcmFtdGVyOlt7IGF0dHI6ICdpbnB1dF8zMDM3JywgdmFsdWU6IHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwgfV1cclxuXHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0ICAgICAgICB0aGlzLnNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIFwiXCIpO1xyXG5cdFx0XHQgICAgfVxyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH0sXHJcblx0c2Nhbl9vbmV2ZW50KGUpe1xyXG5cdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQpO1xyXG5cdFx0aWYoZS50YXJnZXQudmFsdWUpe1xyXG5cdFx0XHR2YXIgaXNmbGFnPXRydWU7XHJcblx0XHRcdGZvcih2YXIgaSBpbiB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdCl7XHJcblx0XHRcdFx0aWYodGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbaV0uc2NhbkNvZGVWYWwgPT0gZS50YXJnZXQudmFsdWUpIFxyXG5cdFx0XHRcdFx0aXNmbGFnPWZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8v5a2Q5pWw5o2u57G75omr56CB5p+l6K+i5pWw5o2uXHJcblx0XHRcdGlmIChpc2ZsYWcpIHtcclxuXHRcdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XHJcblx0XHRcdFx0dGhpcy4kZGF0YS5zY2FuQ29kZVZhbD1lLnRhcmdldC52YWx1ZTtcclxuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLklucHV0X0NoYW5nZV9FdmVudC5JRDtcclxuXHRcdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHRcdFx0Ly/kuLvmlbDmja7nsbvlsZ7mgKdcclxuXHRcdFx0XHRcdHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cob2JqX2F0dHIpO1xyXG5cdFx0XHRcdFx0dmFyIG1hc3RfcmVxID0gT2JqZWN0LmtleXMob2JqX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdFx0XHRcdFx0YXR0cjogYSxcclxuXHRcdFx0XHRcdFx0dmFsdWU6IG9ial9hdHRyW2FdIHx8IFwiXCIsXHJcblx0XHRcdFx0XHR9KSk7XHJcblx0XHRcdFx0XHQvLyB2YXIgaW5wdXRfcGFyYW0gPSBCYXNlNjQuZW5jb2RlKFxyXG5cdFx0XHRcdFx0Ly8gICBKU09OLnN0cmluZ2lmeShcclxuXHRcdFx0XHRcdC8vICAgICBPYmplY3Qua2V5cyhvYmpfYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdFx0XHRcdFx0Ly8gICAgICAgYXR0cjogYSxcclxuXHRcdFx0XHRcdC8vICAgICAgIHZhbHVlOiBvYmpfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0XHRcdFx0Ly8gICAgIH0pKVxyXG5cdFx0XHRcdFx0Ly8gICApXHJcblx0XHRcdFx0XHQvLyApO1xyXG5cdFx0XHRcdFx0dmFyIG9ial9hdHRyMiA9IHRoaXMuZGV0YWlsMV9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0XHRcdFx0dmFyIHJlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyMikubWFwKChhKSA9PiAoe1xyXG5cdFx0XHRcdFx0XHRhdHRyOiBhLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTogb2JqX2F0dHIyW2FdIHx8IFwiXCIsXHJcblx0XHRcdFx0XHR9KSk7XHJcblx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHRcdFx0ZWR0eXBlOiAnNycsLy9cIjBcIixcclxuXHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcclxuXHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcclxuXHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHRcdFx0Y2xzaWQ6ICdNQk9YJywvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcclxuXHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXHJcblx0XHRcdCAgICAgICAgICAgIGF0dHI6IG1hc3RfcmVxLFxyXG5cdFx0XHRcdFx0XHRzdWJfYXR0cjogcmVxLFxyXG5cdFx0XHRcdFx0XHRpbnB1dFBhcmFtdGVyOlt7IGF0dHI6ICdpbnB1dF8zMDM3JywgdmFsdWU6IHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwgfV1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0dGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9LFxyXG5cdG9uTW9kZWxWYWx1ZShpdGVtKSB7IC8v57uR5a6aTW9kZWzlgLxcclxuXHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXHJcblx0XHR2YXIgYXR0ciA9IGl0ZW0uZmllbGRJZDtcclxuXHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IGl0ZW0udmFsdWU7XHJcblx0fSxcclxuXHRwYW5lbF9kZWwoaW5kZXgpeyAvL+mdouadv+WIoOmZpFxyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdGlmICh0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtpbmRleF0uc2NhbkNvZGVWYWwgPT0gdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCkge1xyXG5cdFx0XHR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsPScnO1xyXG5cdFx0fVxyXG5cdFx0aWYoIXRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2luZGV4XS5PYmpJRClcclxuXHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdGVsc2V7XHJcblx0XHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdFx0Y2xhc3NfaWQ6dGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxyXG5cdFx0XHRcdGNsYXNzX25hbWU6JycsXHJcblx0XHRcdFx0b2JqX2lkOnRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2luZGV4XS5PYmpJRFxyXG5cdFx0XHR9O1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHRcdC8vIHJldHVybjtcclxuXHRcdFx0dW5pLnNob3dMb2FkaW5nKHsgdGl0bGU6XCLliqDovb3kuK0uLi5cIiB9KTtcclxuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2RhdGFPYmpEZWwnLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi5Yig6Zmk5oiQ5Yqf77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzlcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLo5LjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fSxcclxuXHRzY2FuX2NsYXNzQXR0cl9leHRCdXR0b24oZSl7IC8v6YCJ5oup5oyJ6ZKu5YmNXHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIEJlZm9yZV9TZWxlY3RfRXZlbnQgPSAkdGhpcy4kZGF0YS5wYXJhbS5TY2FuX0NvZGUuQmVmb3JlX1NlbGVjdF9FdmVudDtcclxuXHRcdGlmKCFCZWZvcmVfU2VsZWN0X0V2ZW50KXtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi6YCJ5oup5YmN5LqL5Lu25Li656m677yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0Ly8gY29uc29sZS5sb2cob2JqX2F0dHIpO1xyXG5cdFx0dmFyIG1hc3RfYXR0ciA9IE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHRcdGF0dHI6IGEsXHJcblx0XHRcdHZhbHVlOiBvYmpfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0fSkpO1xyXG5cdFx0dmFyIG9iamVjdHM9W107XHJcblx0XHR2YXIgc3ViUGFuZWxMaXN0ID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0O1xyXG5cdFx0Zm9yICh2YXIgcyA9IDA7IHMgPCBzdWJQYW5lbExpc3QubGVuZ3RoOyBzKyspIHtcclxuXHRcdFx0dmFyIGRldGFpbF9hdHRyPXt9O1xyXG5cdFx0XHRzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyLmZvcm0uaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuXHRcdFx0ICAgIGlmKGl0ZW0ubmFtZSA9PSBcIkxheW91dFwiKXsgIC8v5Yik5pat5piv5ZCm5piv5qCF5qCP5qC85byPXHJcblx0XHRcdCAgICAgIGl0ZW0uc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29scyA9PiB7XHJcblx0XHRcdCAgICAgICAgaWYoY29scyE9bnVsbCkgZGV0YWlsX2F0dHJbY29scy5maWVsZElkXSA9IGNvbHMudmFsdWU7XHJcblx0XHRcdCAgICAgIH0pO1xyXG5cdFx0XHQgICAgfWVsc2VcclxuXHRcdFx0ICAgICAgZGV0YWlsX2F0dHJbaXRlbS5maWVsZElkXSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR2YXIgc3ViX3JlcSA9IE9iamVjdC5rZXlzKGRldGFpbF9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHRcdFx0YXR0cjogYSxcclxuXHRcdFx0XHR2YWx1ZTogZGV0YWlsX2F0dHJbYV0gfHwgXCJcIixcclxuXHRcdFx0fSkpO1xyXG5cdFx0XHRvYmplY3RzLnB1c2goe1xyXG5cdFx0XHRcdG9ial9pZDpzdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwsXHJcblx0XHRcdFx0b2JqX2F0dHJzOnN1Yl9yZXFcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdHZhciByZXE9W107XHJcblx0XHR2YXIgZW52aXJvbWVudCA9IHtcclxuXHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdFx0Y2xzX2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCAgICAgLy8g5Yqf6IO954K55LuO5pWw5o2u57G75qCH6K+GXHJcblx0XHRcdCdidXR0b24nOiAndG9wJywgLy8gdG9wL2JvdHRvbVxyXG5cdFx0XHRidXR0b25fbmFtZTogJ+aWsOWinicsXHJcblx0XHRcdGVkaXRfZGxnOiB7XHJcblx0XHRcdFx0dHlwZTogJ3NtYWxsJywgLy/lsI/nqpflj6NcclxuXHRcdFx0XHRjbGFzc19pZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwvL+W9k+WJjeaVsOaNruexu2lkXHJcblx0XHRcdH0sXHJcblx0XHRcdG1hc3Rlcl9jbHM6IHtcclxuXHRcdFx0XHRjbHNfbmFtZTogJ01CT1gnLCAvLyR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuTmFtZSxcclxuXHRcdFx0XHRvYmpfYXR0cnM6IG1hc3RfYXR0clxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdWJfY2xzOiB7XHJcblx0XHRcdFx0Y2xzX25hbWU6ICdNQk9YJywgLy8kdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLk5hbWUsXHJcblx0XHRcdFx0b2JqZWN0czogb2JqZWN0c1xyXG5cdFx0XHR9XHJcblx0XHRcdFxyXG5cdFx0fTtcclxuXHRcdFxyXG5cdFx0dmFyIGluZm8gPSB7XHJcblx0XHQgICAgZXZlbnRpZDogQmVmb3JlX1NlbGVjdF9FdmVudC5JRCxcclxuXHRcdCAgICBlZHR5cGU6IFwiN1wiLC8vXCIwXCIsXHJcblx0XHQgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdCAgICByY2xzaWQ6ICcnLFxyXG5cdFx0ICAgIHJvYmppZDogJycsXHJcblx0XHQgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdCAgICBjbHNpZDogJ01CT1gnLC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxyXG5cdFx0ICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0ICAgIGF0dHI6IFtdLFxyXG5cdFx0XHRnbG9iYWxfYXR0cjogcmVxLFxyXG5cdFx0XHRtYXN0X2F0dHI6IG1hc3RfYXR0cixcclxuXHRcdFx0aW5wdXRQYXJhbXRlcjogbWFzdF9hdHRyLFxyXG5cdFx0XHRlbnZpcm9tZW50OiBlbnZpcm9tZW50XHJcblx0XHR9XHJcblx0XHQvLyBjb25zb2xlLmxvZyhpbmZvKTtcclxuXHRcdHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XHJcblx0fSxcclxuXHRwb3B1cENoYW5nZShlKSB7XHJcblx0XHRjb25zb2xlLmxvZygn5b2T5YmN5qih5byP77yaJyArIGUudHlwZSArICcs54q25oCB77yaJyArIGUuc2hvdyk7XHJcblx0fSxcclxuXHRjaGVja0NoYW5nZShlKXsgLy/lvLnmoYZjaGVja+mAieaLqVxyXG5cdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQuZGF0YXNldCk7XHJcblx0XHR2YXIgaW5kZXggPSBlLnRhcmdldC5kYXRhc2V0LmluZGV4O1xyXG5cdFx0dmFyIGlzY2hlY2sgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2s7XHJcblx0XHR2YXIgZGF0YSA9IHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcztcclxuXHRcdC8vIHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcz1bXTtcclxuXHRcdGlmKHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5tdWx0aXBsZV9jaG9pY2U9PVwiMFwiKXsgLy/liKTmlq3ml7bljZXpgInov5jmmK/lpJrpgIlcclxuXHRcdFx0Zm9yKHZhciBpIGluIGRhdGEpe1xyXG5cdFx0XHRcdGRhdGFbaV0uY2hlY2s9ZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGRhdGFbaW5kZXhdLmNoZWNrPWlzY2hlY2s/ZmFsc2U6dHJ1ZTtcclxuXHRcdHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcz1kYXRhO1xyXG5cdFx0XHJcblx0fSxcclxuXHRwb3B1cF9jYW5jZWwoZSl7IC8v5by55qGG5Y+W5raIXHJcblx0XHR0aGlzLiRyZWZzLnBvcHVwLmNsb3NlKCk7XHJcblx0fSxcclxuXHRwb3B1cF9zYXZhKGUpeyAvL+W8ueahhuehruWumiDpgInmi6nmjInpkq7lkI5cclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgQWZ0ZXJfU2VsZWN0X0V2ZW50ID0gJHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLkFmdGVyX1NlbGVjdF9FdmVudDtcclxuXHRcdGlmKCFBZnRlcl9TZWxlY3RfRXZlbnQpe1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLpgInmi6nlkI7kuovku7bkuLrnqbrvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dmFyIGl0ZW1zID0gJHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcztcclxuXHRcdHZhciBkYXRhPVtdO1xyXG5cdFx0dmFyIG5hbWU9XCJcIjtcclxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0aWYoaXRlbXNbaV0uY2hlY2s9PXRydWUpe1xyXG5cdFx0XHRcdGlmKG5hbWUpXHJcblx0XHRcdFx0XHRuYW1lKz0nOyc7XHJcblx0XHRcdFx0bmFtZSs9aXRlbXNbaV0ubmFtZTtcclxuXHRcdFx0XHRkYXRhLnB1c2goe2lkOml0ZW1zW2ldLmlkLG5hbWU6aXRlbXNbaV0ubmFtZX0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRpZihkYXRhLmxlbmd0aD09MCl7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuacqumAieaLqeaVsOaNru+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR2YXIgb2JqX2F0dHIgPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHRcdC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHRcdHZhciBtYXN0X2F0dHIgPSBPYmplY3Qua2V5cyhvYmpfYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdFx0XHRhdHRyOiBhLFxyXG5cdFx0XHR2YWx1ZTogb2JqX2F0dHJbYV0gfHwgXCJcIixcclxuXHRcdH0pKTtcclxuXHRcdFxyXG5cdFx0JHRoaXMuJGRhdGEuc2NhbkNvZGVWYWw9bmFtZTtcclxuXHRcdHZhciBpbmZvID0ge1xyXG5cdFx0ICAgIGV2ZW50aWQ6IEFmdGVyX1NlbGVjdF9FdmVudC5JRCxcclxuXHRcdCAgICBlZHR5cGU6IFwiN1wiLFxyXG5cdFx0ICAgIHByb2plY3RpZDogJycsXHJcblx0XHQgICAgcmNsc2lkOiAnJyxcclxuXHRcdCAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHR1c2VybG9naW46ICcnLFxyXG5cdFx0XHRjbHNpZDogJ01CT1gnLFxyXG5cdFx0XHRvYmppZDogXCJcIixcclxuXHRcdFx0YXR0cjogW3thdHRyOiAnbWFzdF9pbnB1dF8zMDM3Jyx2YWx1ZTogbmFtZX1dLFxyXG5cdFx0XHRnbG9iYWxfYXR0cjogbWFzdF9hdHRyLFxyXG5cdFx0XHRpbnB1dFBhcmFtdGVyOiBkYXRhLFxyXG5cdFx0XHRlbnZpcm9tZW50OiAnJ1xyXG5cdFx0fVxyXG5cdFx0Ly8gY29uc29sZS5sb2coaW5mbyk7XHJcblx0XHR0aGlzLnNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIFwiXCIpO1xyXG5cdFx0dGhpcy4kcmVmcy5wb3B1cC5jbG9zZSgpO1xyXG5cdH0sXHJcblx0b25QYW5lbENsaWNrKHZhbHVlKXsgLy/ngrnlh7vpnaLmnb/pq5jkuq7mmL7npLpcclxuXHRcdC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuXHQgICAgdGhpcy5hY3RpdmVsaXN0LmZvckVhY2goZWxlPT57XHJcblx0ICAgICAgICBlbGUuYWN0aXZlID0gZmFsc2U7XHJcblx0ICAgIH0pO1xyXG5cdCAgICB0aGlzLmFjdGl2ZWxpc3RbdmFsdWVdLmFjdGl2ZSA9IHRydWU7XHJcblx0fSxcclxuXHRcclxuXHREYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyxkYXRhX2F0dHIpe1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBlbnZpcm9tZW50ID0ge1xyXG5cdFx0ICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4ZcclxuXHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdCAgICBtYXN0ZXI6IHtcclxuXHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHQgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcclxuXHRcdCAgICB9XHJcblx0XHR9O1xyXG5cdFx0ZW52aXJvbWVudC5lZGl0X2RsZyA9IHtcclxuXHRcdCAgICB0eXBlOiAnc21hbGwnLC8v5bCP56qX5Y+jXHJcblx0XHQgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwvL+W9k+WJjeaVsOaNruexu2lkXHJcblx0XHR9XHJcblx0XHRpZiAoZGF0YV9hdHRyKSB7XHJcblx0XHQgICAgZW52aXJvbWVudC5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7ZcclxuXHRcdCAgICAgICAgbmFtZTogZGF0YV9hdHRyLk5hbWUsLy/lrZfmrrXlsZ7mgKdcclxuXHRcdCAgICAgICAgdGV4dDogZGF0YV9hdHRyLkRpc3BOYW1lLC8v5pi+56S65paH5pysXHJcblx0XHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4RcclxuXHRcdCAgICAgICAgdHlwZTogZGF0YV9hdHRyLlR5cGUsLy/lrZfmrrXnsbvlnotcclxuXHRcdCAgICAgICAgcmVhZG9ubHk6IGRhdGFfYXR0ci5SZWFkT25seSwvL+aYr+WQpuWPquivu1xyXG5cdFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xyXG5cdFx0ICAgICAgICBidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXHJcblx0XHQgICAgfVxyXG5cdFx0fVxyXG5cdFx0Ly8gdmFyIGRhdGFJbmZvID0ge1xyXG5cdCAvLyAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLnJlcGxhY2UoJ3snLCcnKS5yZXBsYWNlKCd9JywnJyksXHJcblx0IC8vICAgICAgICByY2xzaWQ6IGluZm8ucmNsc2lkLCByb2JqaWQ6IGluZm8ucm9iamlkLCB1c2VybG9naW46IGluZm8udXNlcmxvZ2luLCBjbHNpZDogaW5mby5jbHNpZCwgb2JqaWQ6IGluZm8ub2JqaWQsXHJcblx0IC8vICAgICAgICBhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgaW5wdXRwYXJhbWV0ZXI6ICcnLCBnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcclxuXHQgLy8gICAgfVxyXG5cdFx0ZW52aXJvbWVudCA9IEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCkpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0XHR2YXIgZ2xvYmFsX2F0dHIgPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpKTsvL+WwhuWtl+espuS4sui9rOaNouS4umJhc2U2NOe8lueggVxyXG5cdFx0aWYoaW5mby5kYXRhSnNvbilcclxuXHRcdFx0aW5mby5kYXRhSnNvbiA9IEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoaW5mby5kYXRhSnNvbikpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0XHR2YXIgb2JqX2F0dHI9e307XHJcblx0XHRpbmZvLmF0dHIuZm9yRWFjaChpdGVtPT57XHJcblx0XHRcdG9ial9hdHRyW2l0ZW0uYXR0cl0gPSBpdGVtLnZhbDtcclxuXHRcdH0pO1xyXG5cdFx0aWYoIWluZm8uZXZlbnRpZC5pbmNsdWRlcygneycpKSBpbmZvLmV2ZW50aWQgPSAneycraW5mby5ldmVudGlkKyd9JztcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHQgIGVkX3R5cGU6IGluZm8uZWR0eXBlLFxyXG5cdFx0ICBzdGFydF90cmFuc2FjdGlvbjogdHJ1ZSxcclxuXHRcdCAgY2xhc3NfaWQ6IGluZm8uY2xzaWQsXHJcblx0XHQgIGNsYXNzX25hbWU6ICcnLFxyXG5cdFx0ICBldmVudF9pZDogaW5mby5ldmVudGlkLFxyXG5cdFx0ICBldmVudF9uYW1lOiAnJyxcclxuXHRcdCAgZGF0YV9vYmpfaWQ6IGluZm8ub2JqaWQsXHJcblx0XHQgIG9ial9hdHRyOiBvYmpfYXR0cixcclxuXHRcdCAgcHJqX2lkOiBpbmZvLnByb2plY3RpZCxcclxuXHRcdCAgcmVmX2Nsc19pZDogaW5mby5yY2xzaWQsXHJcblx0XHQgIHJlbF9vYmpfaWQ6IGluZm8ucm9iamlkLFxyXG5cdFx0ICB1c2VyX2xvZ2luOiBpbmZvLnVzZXJsb2dpbixcclxuXHRcdCAgZGF0YV9qc29uOiBpbmZvLmRhdGFKc29uLFxyXG5cdFx0ICBjb21wb3NlX2luZm86ICcnLFxyXG5cdFx0ICBleHRfaW5mbzogZW52aXJvbWVudCxcclxuXHRcdCAgZ2xvYmFsX2F0dHI6IGdsb2JhbF9hdHRyLFxyXG5cdFx0ICBpbnB1dF9wYXJhbTogJycsXHJcblx0XHR9O1xyXG5cdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0Ly8gcmV0dXJuO1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3J1bkN1c3RvbUV2ZW50JyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRpZiAoc3VjY2Vzcy5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIGRhdGEgPSBzdWNjZXNzLnJlc3VsdDtcclxuXHRcdFx0XHRpZiAoZGF0YS5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdCAgICB2YXIgdGlwID0gZGF0YS5lcnJfaW5mbyA/IHR5cGVvZiBkYXRhLmVycl9pbmZvID09ICdzdHJpbmcnID8gZGF0YS5lcnJfaW5mbyA6IGRhdGEuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdCAgICBpZiAoZGF0YS5yZXQgPT0gODAxKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHQgICAgZWxzZSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCsnLOaPkOekujonK2RhdGEucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlXHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR2YXIgdGlwID0gZGF0YS5pbmZvID8gdHlwZW9mIGRhdGEuaW5mbyA9PSAnc3RyaW5nJyA/IGRhdGEuaW5mbyA6IGRhdGEuaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XHJcblx0XHRcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25saXN0KTtcclxuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25saXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbmxpc3RbaV07XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnc2V0X2RsZ19hdHRyJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tjXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHIubmFtZSE9J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBpZihhdHRyLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdGZvcih2YXIgZCBpbiByZXN1bHRbaV0uY2hvaWNlX2xpc3Qpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiQ05fU19WQUxVRVwiOnZhbCxcInRleHRcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLmRpY3QgPSBkaWN0SXRlbUxpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihhdHRyLm5hbWU9PSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgYXR0ci5zZXR0aW5nLmNvbExpc3QuZm9yRWFjaChjb2w9PntcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgaWYoY29sLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0dmFyIGRpY3RJdGVtTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Zm9yKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcIkNOX1NfTkFNRVwiOnZhbCxcIkNOX1NfVkFMVUVcIjp2YWwsXCJ0ZXh0XCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wuZGljdCA9IGRpY3RJdGVtTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtcy5sZW5ndGg7IGMrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zW2NdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGF0dHJbal0uTmFtZSsnPT0nK3Jlc3VsdFtpXS5hdHRyKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZihhdHRyLm5hbWUhPSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIGlmKGF0dHIuZmllbGRJZD09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLnZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIub2xkdmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci5vbGR2YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHIuZmllbGRJZF0gPXJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYoYXR0ci5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBhdHRyLnNldHRpbmcuY29sTGlzdC5mb3JFYWNoKGNvbD0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIGlmKGNvbC5maWVsZElkPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wudmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLm9sZHZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2NvbC5maWVsZElkXSA9cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGRhdGEuYWN0aW9uW2ldLmFjdGlvbl90eXBlID09ICdzZXRfZ2xvYmFsX2F0dHInKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5nbG9iYWxfYXR0ciA9IGRhdGEuYWN0aW9uW2ldLnZhbHVlIHx8IFtdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xyXG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tjXTtcclxuXHRcdFx0XHRcdFx0XHRcdGlmKGF0dHIubmFtZSE9J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBpZihhdHRyLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLnZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIudmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci5vbGR2YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgXHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0ci5maWVsZElkXSA9cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICB9XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYoYXR0ci5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHQgIGF0dHIuc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgaWYoY29sKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgICAgIGlmKGNvbC5maWVsZElkPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC52YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wub2xkdmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wub2xkdmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgICBcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFtjb2wuZmllbGRJZF0gPXJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHQgIH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0XHRcdFx0XHRcdGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxyXG5cdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzNcIixjb250ZW50OnN1Y2Nlc3MuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzMuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHRzY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLGRhdGFfYXR0cil7XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIG9ial9hdHRyPXt9O1xyXG5cdFx0aW5mby5hdHRyLmZvckVhY2goaXRlbT0+e1xyXG5cdFx0XHRvYmpfYXR0cltpdGVtLmF0dHJdID0gaXRlbS52YWx1ZTtcclxuXHRcdH0pO1xyXG5cdFx0dmFyIGVudmlyb21lbnQgPSB7fTtcclxuXHRcdGlmKGluZm8uZW52aXJvbWVudCl7XHJcblx0XHRcdGVudmlyb21lbnQgPSBpbmZvLmVudmlyb21lbnQ7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRlbnZpcm9tZW50ID0ge1xyXG5cdFx0XHRcdCdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHRcdFx0Y2xzX2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCAgICAgLy8g5Yqf6IO954K55LuO5pWw5o2u57G75qCH6K+GXHJcblx0XHRcdFx0J2J1dHRvbic6ICd0b3AnLCAvLyB0b3AvYm90dG9tXHJcblx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxyXG5cdFx0XHRcdGVkaXRfZGxnOiB7XHJcblx0XHRcdFx0XHR0eXBlOiAnc21hbGwnLCAvL+Wwj+eql+WPo1xyXG5cdFx0XHRcdFx0Y2xhc3NfaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsLy/lvZPliY3mlbDmja7nsbtpZFxyXG5cdFx0XHRcdH0sXHJcblx0XHQgICAgICAgIG1hc3Rlcjoge1xyXG5cdFx0ICAgICAgICAgICAgY2xzX2lkOiBpbmZvLmNsc2lkLCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxyXG5cdFx0ICAgICAgICAgICAgLy9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxyXG5cdFx0XHRcdFx0b2JqX2F0dHJzOm9ial9hdHRyLFxyXG5cdFx0ICAgICAgICB9XHJcblx0XHRcdH07XHJcblx0XHRcdFxyXG5cdFx0fVxyXG5cdFx0dmFyIGdsb2JhbF9hdHRyID0gdGhpcy4kZGF0YS5nbG9iYWxfYXR0cjtcclxuXHRcdGlmIChpbmZvLmdsb2JhbF9hdHRyKSB7XHJcblx0XHRcdGdsb2JhbF9hdHRyID0gaW5mby5nbG9iYWxfYXR0cjtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0ZW52aXJvbWVudCA9IEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCkpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0XHR2YXIgaW5wdXRQYXJhbXRlcj1pbmZvLmlucHV0UGFyYW10ZXI7XHJcblx0XHRpZihpbmZvLmlucHV0UGFyYW10ZXIpe1xyXG5cdFx0XHRpbmZvLmlucHV0UGFyYW10ZXIgPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGluZm8uaW5wdXRQYXJhbXRlcikpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0XHR9XHJcblx0XHR2YXIgZ2xvYmFsX2F0dHIgPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpKTsvL+WwhuWtl+espuS4sui9rOaNouS4umJhc2U2NOe8lueggVxyXG5cdFx0XHJcblx0XHRpZighaW5mby5ldmVudGlkLmluY2x1ZGVzKCd7JykpIGluZm8uZXZlbnRpZD0gJ3snKyBpbmZvLmV2ZW50aWQgKyd9JztcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHQgIGVkX3R5cGU6IGluZm8uZWR0eXBlLFxyXG5cdFx0ICBzdGFydF90cmFuc2FjdGlvbjogdHJ1ZSxcclxuXHRcdCAgY2xhc3NfaWQ6IGluZm8uY2xzaWQsXHJcblx0XHQgIGNsYXNzX25hbWU6ICcnLFxyXG5cdFx0ICBldmVudF9pZDogaW5mby5ldmVudGlkLFxyXG5cdFx0ICBldmVudF9uYW1lOiAnJyxcclxuXHRcdCAgZGF0YV9vYmpfaWQ6IGluZm8ub2JqaWQsXHJcblx0XHQgIG9ial9hdHRyOiBvYmpfYXR0cixcclxuXHRcdCAgcHJqX2lkOiBpbmZvLnByb2plY3RpZC5yZXBsYWNlKCd7JywnJykucmVwbGFjZSgnfScsJycpLFxyXG5cdFx0ICByZWZfY2xzX2lkOiBpbmZvLnJjbHNpZCxcclxuXHRcdCAgcmVsX29ial9pZDogaW5mby5yb2JqaWQsXHJcblx0XHQgIHVzZXJfbG9naW46IGluZm8udXNlcmxvZ2luLFxyXG5cdFx0ICBkYXRhX2pzb246ICcnLFxyXG5cdFx0ICBjb21wb3NlX2luZm86ICcnLFxyXG5cdFx0ICBleHRfaW5mbzogZW52aXJvbWVudCxcclxuXHRcdCAgZ2xvYmFsX2F0dHI6IGdsb2JhbF9hdHRyLFxyXG5cdFx0ICBpbnB1dF9wYXJhbTogaW5mby5pbnB1dFBhcmFtdGVyLFxyXG5cdFx0fTtcclxuXHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdC8vIHJldHVybjtcclxuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdydW5DdXN0b21FdmVudCcsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0aWYgKHN1Y2Nlc3MuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBkYXRhID0gc3VjY2Vzcy5yZXN1bHQ7XHJcblx0XHRcdFx0aWYgKGRhdGEucmV0ICE9IDApIHtcclxuXHRcdFx0XHQgICAgdmFyIHRpcCA9IGRhdGEuZXJyX2luZm8gPyB0eXBlb2YgZGF0YS5lcnJfaW5mbyA9PSAnc3RyaW5nJyA/IGRhdGEuZXJyX2luZm8gOiBkYXRhLmVycl9pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHQgICAgaWYgKGRhdGEucmV0ID09IDgwMSkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytkYXRhLnJldCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0dmFyIHRpcCA9IGRhdGEuaW5mbyA/IHR5cGVvZiBkYXRhLmluZm8gPT0gJ3N0cmluZycgPyBkYXRhLmluZm8gOiBkYXRhLmluZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdFx0aWYgKHRpcCkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHR2YXIgYWN0aW9ubGlzdCA9IGRhdGEuYWN0aW9uO1xyXG5cdFx0XHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XHJcblx0XHRcdFx0XHRcdGZvciAodmFyIGlpID0gMDsgaWkgPCBhY3Rpb25saXN0Lmxlbmd0aDsgaWkrKykge1xyXG5cdFx0XHRcdFx0XHRcdHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2lpXTtcclxuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gYWN0aW9uLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3RbY10uQXR0cjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5OYW1lPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihhdHRyW2pdLlR5cGU9PSflrZflhbgnIHx8IGF0dHJbal0uVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInIHx8IGF0dHJbal0uVHlwZT09J+Wtl+WFuC3mlbTmlbAnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcIkNOX1NfTkFNRVwiOnZhbCxcIkNOX1NfVkFMVUVcIjp2YWwsXCJOYW1lXCI6dmFsLFwibGFiZWxcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSByZXN1bHRbaV0uY2hvaWNlX2xpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGF0dHJbal0uTmFtZSsnPT0nK3Jlc3VsdFtpXS5hdHRyKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5OYW1lPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyLnZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0ci5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHIudmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0ci5vbGR2YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ3NldF9nbG9iYWxfYXR0cicpIHtcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRhY3Rpb250ciA9IGFjdGlvbi52YWx1ZSB8fCBbXTtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9jb21tb25fZGxnJykgeyAgLy/miZPlvIDkvqfmu5HlvLnmoYZcclxuXHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0XHRcdFx0XHRpZihhY3Rpb24udmFsdWUuY29tbW9uX2RsZ19pZCA9PSAnY2hlY2tfbGlzdCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgJHRoaXMuJGRhdGEuY2hlY2tfbGlzdD0gYWN0aW9uLnZhbHVlLmNvbmZpZztcclxuXHRcdFx0XHRcdFx0XHRcdCAgIGlmKGFjdGlvbi52YWx1ZS5jb25maWcuYXBwZWFyX3N0eWxlID09ICdzaWRlc2xpcCcpIC8v5Yik5pat5piv5ZCm5piv5L6n5ruRXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucG9wdXBUeXBlID0gJ3JpZ2h0JztcclxuXHRcdFx0XHRcdFx0XHRcdCAgIGVsc2VcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5wb3B1cFR5cGUgPSAnY2VudGVyJ1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgLy8gb3BlbiDmlrnms5XkvKDlhaXlj4LmlbAg562J5ZCM5ZyoIHVuaS1wb3B1cCDnu4Tku7bkuIrnu5HlrpogdHlwZeWxnuaAp1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgJHRoaXMuJHJlZnMucG9wdXAub3BlbigkdGhpcy4kZGF0YS5wb3B1cFR5cGUpO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdhZGRfc3ViY2xzX3BhbmVsJykgeyAvL+S4u+S7juaVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgbGlzdF8xID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYpKTtcclxuXHRcdFx0XHRcdFx0XHRcdHZhciBzY2FuQ29kZVZhbCA9ICR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsO1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJhbmQgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7IC8v55Sf5oiQNeS9jemaj+acuuaVsFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRyYW5kICs9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdGlmIChpbnB1dFBhcmFtdGVyWzBdLmF0dHIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGlucHV0UGFyYW10ZXJbMF0uYXR0ciA9PSBcIm1hc3RfaW5wdXRfMzAzN1wiKSAvL+WIpOaWreaYr+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsID0gXCJtYXN0X2lucHV0XzMwMzctXCIgKyByYW5kO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGluZm8uYXR0clswXS5hdHRyKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChpbmZvLmF0dHJbMF0uYXR0ciA9PSBcIm1hc3RfaW5wdXRfMzAzN1wiKSAvL+WIpOaWreaYr+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsID0gXCJtYXN0X2lucHV0XzMwMzctXCIgKyByYW5kO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRzY2FuQ29kZVZhbDpzY2FuQ29kZVZhbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0c3ViQ2xhc3NBdHRyOmxpc3RfMVxyXG5cdFx0XHRcdFx0XHRcdFx0fSk7IFxyXG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuYWN0aXZlbGlzdC5wdXNoKHthY3RpdmU6ZmFsc2V9KTtcclxuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnNjYW5Db2RlVmFsID09IHNjYW5Db2RlVmFsKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKHJlc3VsdFtpXS5hdHRyPT1cIlNfSURcIilcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLk9iaklEPXJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBfc3ViQ2xhc3NBdHRyID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ci5mb3JtLml0ZW1zO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCBfc3ViQ2xhc3NBdHRyLmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKF9zdWJDbGFzc0F0dHJbY10ubmFtZSE9J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIGlmKF9zdWJDbGFzc0F0dHJbY10uZmllbGRJZCA9PSByZXN1bHRbaV0uYXR0cikgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0X3N1YkNsYXNzQXR0cltjXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKF9zdWJDbGFzc0F0dHJbY10ubmFtZT09J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIF9zdWJDbGFzc0F0dHJbY10uc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBpZihjb2wuZmllbGRJZCA9PSByZXN1bHRbaV0uYXR0cikgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2wudmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0cj1saXN0XzE7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0aWYgKGRhdGEucmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdHZhciBsaXN0XzEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZikpO1xyXG5cdFx0XHRcdFx0XHR2YXIgc2NhbkNvZGVWYWwgPSAkdGhpcy4kZGF0YS5zY2FuQ29kZVZhbDtcclxuXHRcdFx0XHRcdFx0dmFyIHJhbmQgPSAnJztcclxuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsgLy/nlJ/miJA15L2N6ZqP5py65pWwXHJcblx0XHRcdFx0XHRcdFx0cmFuZCArPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKGlucHV0UGFyYW10ZXJbMF0uYXR0cikge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChpbnB1dFBhcmFtdGVyWzBdLmF0dHIgPT0gXCJtYXN0X2lucHV0XzMwMzdcIikgLy/liKTmlq3mmK/kuLvmlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cclxuXHRcdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsID0gXCJtYXN0X2lucHV0XzMwMzctXCIgKyByYW5kO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChpbmZvLmF0dHJbMF0uYXR0cikge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChpbmZvLmF0dHJbMF0uYXR0ciA9PSBcIm1hc3RfaW5wdXRfMzAzN1wiKSAvL+WIpOaWreaYr+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxyXG5cdFx0XHRcdFx0XHRcdFx0c2NhbkNvZGVWYWwgPSBcIm1hc3RfaW5wdXRfMzAzNy1cIiArIHJhbmQ7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsOnNjYW5Db2RlVmFsLFxyXG5cdFx0XHRcdFx0XHRcdHN1YkNsYXNzQXR0cjpsaXN0XzFcclxuXHRcdFx0XHRcdFx0fSk7IFxyXG5cdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XHJcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgcyA9IDA7IHMgPCAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3QubGVuZ3RoOyBzKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdGlmKCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zY2FuQ29kZVZhbCA9PSBzY2FuQ29kZVZhbCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmKHJlc3VsdFtpXS5hdHRyPT1cIlNfSURcIilcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uT2JqSUQ9cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgX3N1YkNsYXNzQXR0ciA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHIuZm9ybS5pdGVtcztcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCBfc3ViQ2xhc3NBdHRyLmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoX3N1YkNsYXNzQXR0cltjXS5uYW1lIT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBpZihfc3ViQ2xhc3NBdHRyW2NdLmZpZWxkSWQgPT0gcmVzdWx0W2ldLmF0dHIpIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X3N1YkNsYXNzQXR0cltjXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYoX3N1YkNsYXNzQXR0cltjXS5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBfc3ViQ2xhc3NBdHRyW2NdLnNldHRpbmcuY29sTGlzdC5mb3JFYWNoKGNvbD0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIGlmKGNvbC5maWVsZElkID09IHJlc3VsdFtpXS5hdHRyKSBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XHJcblx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xyXG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vN1wiLGNvbnRlbnQ6c3VjY2Vzcy5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNy4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdFxyXG5cdC8v56Gu5a6aXHJcblx0c2F2YSgpe1xyXG5cdFx0aWYgKHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50KSAvL+WIpOaWreWKn+iDveeCueWPguaVsOaYr+WQpuacieehruWumuWJjeiEmuacrFxyXG5cdFx0XHR0aGlzLnNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQodGhpcy4kZGF0YS5wYXJhbS5CZWZvcmVfT0tfRXZlbnQuSUQpO1xyXG5cdFx0ZWxzZSBpZiAodGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudCkgLy/liKTmlq3lip/og73ngrnlj4LmlbDmmK/lkKbmnInnoa7lrprlkI7ohJrmnKxcclxuXHRcdFx0dGhpcy5zY2FuX09LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQpO1xyXG5cdFx0ZWxzZVxyXG5cdFx0XHR1bmkubmF2aWdhdGVCYWNrKHtkZWx0YToxIH0pOy8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxyXG5cdH0sXHJcblx0c2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudChldmVudElEKXtcclxuXHRcdHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdHRpdGxlOlwi5Yqg6L295LitLi4uXCIsXHJcblx0XHRcdG1hc2s6dHJ1ZVxyXG5cdFx0fSk7XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0Ly/ojrflj5booajlpLTlsZ7mgKdcclxuXHRcdHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0Ly8gY29uc29sZS5sb2cob2JqX2F0dHIpO1xyXG5cdFx0dmFyIHJlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHRcdGF0dHI6IGEsXHJcblx0XHRcdHZhbHVlOiBvYmpfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0fSkpO1xyXG5cdFx0XHJcblx0XHR2YXIgb2JqZWN0cz1bXTtcclxuXHRcdHZhciBzdWJQYW5lbExpc3QgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Q7XHJcblx0XHRmb3IgKHZhciBzID0gMDsgcyA8IHN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xyXG5cdFx0XHR2YXIgZGV0YWlsX2F0dHI9e307XHJcblx0XHRcdHN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHIuZm9ybS5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG5cdFx0XHQgICAgaWYoaXRlbS5uYW1lID09IFwiTGF5b3V0XCIpeyAgLy/liKTmlq3mmK/lkKbmmK/moIXmoI/moLzlvI9cclxuXHRcdFx0ICAgICAgaXRlbS5zZXR0aW5nLmNvbExpc3QuZm9yRWFjaChjb2xzID0+IHtcclxuXHRcdFx0ICAgICAgICBpZihjb2xzIT1udWxsKSBkZXRhaWxfYXR0cltjb2xzLmZpZWxkSWRdID0gY29scy52YWx1ZTtcclxuXHRcdFx0ICAgICAgfSk7XHJcblx0XHRcdCAgICB9ZWxzZVxyXG5cdFx0XHQgICAgICBkZXRhaWxfYXR0cltpdGVtLmZpZWxkSWRdID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHZhciBzdWJfcmVxID0gT2JqZWN0LmtleXMoZGV0YWlsX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdFx0XHRhdHRyOiBhLFxyXG5cdFx0XHRcdHZhbHVlOiBkZXRhaWxfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0XHR9KSk7XHJcblx0XHRcdG9iamVjdHMucHVzaCh7XHJcblx0XHRcdFx0b2JqX2lkOnN1YlBhbmVsTGlzdFtzXS5zY2FuQ29kZVZhbCxcclxuXHRcdFx0XHRvYmpfYXR0cnM6c3ViX3JlcVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0dmFyIGRhdGFKc29uPXtcclxuXHRcdFx0bWFzdGVyX2Nsczp7XHJcblx0XHRcdFx0Y2xzX25hbWU6J01CT1gnLC8vJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5OYW1lLFxyXG5cdFx0XHRcdG9ial9hdHRyczpyZXFcclxuXHRcdFx0fSxcclxuXHRcdFx0aW5wdXRfMzAzNzokdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCwgICAvL+aJq+eggeWGheWuuVxyXG5cdFx0XHRvcF90eXBlOiR0aGlzLiRkYXRhLnBhcmFtLk9wZXJhdGlvblR5cGUsIC8v5L2c5Lia57G75Z6L5a6a5LmJXHJcblx0XHRcdHN1Yl9jbHM6e1xyXG5cdFx0XHRcdGNsc19uYW1lOidNQk9YJywvLyR0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuTmFtZSxcclxuXHRcdFx0XHRvYmplY3RzOm9iamVjdHNcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGFKc29uKSk7XHJcblx0IFx0dmFyIGRhdGFKc29uID0gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeShkYXRhSnNvbikpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0IFx0dmFyIGdsb2JhbF9hdHRyID0gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKSk7Ly/lsIblrZfnrKbkuLLovazmjaLkuLpiYXNlNjTnvJbnoIFcclxuXHQgXHRpZighZXZlbnRJRC5pbmNsdWRlcygneycpKSBldmVudElEPSAneycrIGV2ZW50SUQgKyd9JztcclxuXHQgXHR2YXIgZGF0YUluZm89e1xyXG5cdCBcdCAgZWRfdHlwZTogXCI3XCIsXHJcblx0XHQgIHN0YXJ0X3RyYW5zYWN0aW9uOiB0cnVlLFxyXG5cdCBcdCAgY2xhc3NfaWQ6ICdNQk9YJyxcclxuXHQgXHQgIGNsYXNzX25hbWU6ICcnLFxyXG5cdCBcdCAgZXZlbnRfaWQ6IGV2ZW50SUQsXHJcblx0IFx0ICBldmVudF9uYW1lOiAnJyxcclxuXHQgXHQgIGRhdGFfb2JqX2lkOiAnJyxcclxuXHQgXHQgIG9ial9hdHRyOiAnJyxcclxuXHQgXHQgIHByal9pZDogJycsXHJcblx0IFx0ICByZWZfY2xzX2lkOiAnJyxcclxuXHQgXHQgIHJlbF9vYmpfaWQ6ICcnLFxyXG5cdCBcdCAgdXNlcl9sb2dpbjogJycsXHJcblx0IFx0ICBkYXRhX2pzb246IGRhdGFKc29uLFxyXG5cdCBcdCAgY29tcG9zZV9pbmZvOiAnJyxcclxuXHQgXHQgIGV4dF9pbmZvOiAnJyxcclxuXHQgXHQgIGdsb2JhbF9hdHRyOiBnbG9iYWxfYXR0cixcclxuXHQgXHQgIGlucHV0X3BhcmFtOiAnJyxcclxuXHQgXHR9O1xyXG5cdCBcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdC8vIHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdCAvLyBcdHJldHVybjtcclxuXHQgXHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgncnVuQ3VzdG9tRXZlbnQnLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHQgXHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHQgXHRcdGlmIChzdWNjZXNzLmVycl9jb2RlID09IDApIHtcclxuXHQgXHRcdFx0dmFyIGRhdGEgPSBzdWNjZXNzLnJlc3VsdDtcclxuXHRcdFx0XHRpZiAoZGF0YS5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdCAgICB2YXIgdGlwID0gZGF0YS5lcnJfaW5mbyA/IHR5cGVvZiBkYXRhLmVycl9pbmZvID09ICdzdHJpbmcnID8gZGF0YS5lcnJfaW5mbyA6IGRhdGEuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdCAgICBpZiAoZGF0YS5yZXQgPT0gODAxKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHQgICAgZWxzZSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCsnLOaPkOekujonK2RhdGEucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlXHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR2YXIgdGlwID0gZGF0YS5pbmZvID8gdHlwZW9mIGRhdGEuaW5mbyA9PSAnc3RyaW5nJyA/IGRhdGEuaW5mbyA6IGRhdGEuaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcdHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcclxuXHRcdFx0XHRcdGlmKGV2ZW50SUQgIT0gJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQpXHJcblx0XHRcdFx0XHRcdCR0aGlzLnNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQpO1xyXG5cdFx0XHRcdFx0ZWxzZXtcclxuXHRcdFx0XHRcdFx0Ly/liLfmlrBcclxuXHRcdFx0XHRcdFx0dW5pLnJlZGlyZWN0VG8oe1xyXG5cdFx0XHRcdFx0XHRcdHVybDonLi4vbW9kYWwvMzAzN18yP3BhcmFtPScrSlNPTi5zdHJpbmdpZnkoJHRoaXMuJGRhdGEucGFyYW0pK1wiJnRpdGxlbmFtZT1cIiskdGhpcy4kZGF0YS50aXRsZVxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0IFx0XHR9ZWxzZXtcclxuXHQgXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor684XCIsY29udGVudDpzdWNjZXNzLmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0IFx0XHR9XHJcblx0IFx0fSkuY2F0Y2goZXg9PntcclxuXHQgXHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0IFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzguMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCBcdH0pO1xyXG5cdCB9LFxyXG5cdCBcclxuXHRcclxuXHRjYW5jZWwoZSl7IC8v5Y+W5raIXHJcblx0XHR1bmkubmF2aWdhdGVCYWNrKHtcclxuXHRcdFx0ZGVsdGE6MSAvL+i/lOWbnuWxguaVsO+8jDLliJnkuIrkuIrpobVcclxuXHRcdH0pO1xyXG5cdH0sXHJcbiAgfSxcbn07XG48L3NjcmlwdD5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///160\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 _base = _interopRequireDefault(__webpack_require__(/*! ../../components/js-base64/base64.js */ 65));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\nvar _default = {\n modules: {\n Base64: _base.default\n },\n data: function data() {\n return {\n title: '新增',\n param: {},\n edit_inital_event: \"\",\n //弹窗初始化事件ID\n edit_ok_event: \"\",\n //弹窗点击OK 触发事件ID\n edit_select_compose_event: \"\",\n //选择组成对象时调用\n edit_compose_cls_id: \"\",\n global_attr: [],\n refdatastore: [],\n //引用数据存储区// {attr:'G_PRJ_' + bindattr + '_ID', value:info.id}\n scanCodeVal: \"\",\n subClassAttrList: [],\n subPanelList: [],\n subClassGridStyle: [],\n popupType: \"center\",\n check_list: {},\n focusMateria: false,\n head_styledef: {\n form: {\n items: []\n }\n },\n detail1_styledef: {},\n detail1StyleDefList: [],\n activelist: []\n };\n },\n onLoad: function onLoad(options) {\n // console.log(options);\n uni.setNavigationBarTitle({\n title: options.titlename\n }); //设置顶部标题 \n this.$data.title = options.titlename;\n this.$data.param = JSON.parse(options.param);\n __f__(\"log\", this.$data.param, \" at pages/modal/3037_2.vue:767\");\n //获取数据类的自定义表单参数\n this.Head_UIStyleGetInfo(this.param.Master_Cls.ID, this.param.Master_Cls.UI_Style.ID);\n this.Detail1_UIstyleGetInfo(this.param.Sub_Cls.ID, this.$data.param.Sub_Cls.UI_Style.ID);\n\n //页面初始化获取焦点\n // this.focusMateria=true; \n },\n\n methods: {\n Head_UIStyleGetInfo: function Head_UIStyleGetInfo(class_id, style_id) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n //获取自定义表单样式\n $this = _this;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n };\n _this.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var _$this$head_styledef$;\n var styledef = \"\";\n if (ret.result.style_def) {\n //mobox2的style_def是json字符串\n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3的style_def是base64字符串\n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.$data.head_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n // console.log($this.$data.head_styledef);\n $this.head_styledef.form.items.forEach( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(ele, index) {\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n ele.show = true;\n if (!(ele.useDict == true)) {\n _context.next = 4;\n break;\n }\n _context.next = 4;\n return _this.DictGetInfo(ele.bind.dict, index, 'mast');\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n if (((_$this$head_styledef$ = $this.head_styledef.event) === null || _$this$head_styledef$ === void 0 ? void 0 : _$this$head_styledef$.length) > 0) {\n $this.head_styledef.event.forEach( /*#__PURE__*/function () {\n var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2(a) {\n return _regenerator.default.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n if (!(a.event_id == \"initial\")) {\n _context2.next = 3;\n break;\n }\n _context2.next = 3;\n return _this.loadInitEvent(a.scrip_id, 'head');\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n return function (_x3) {\n return _ref2.apply(this, arguments);\n };\n }());\n }\n } else {\n uni.showModal({\n title: \"错误1\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误1.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 3:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }))();\n },\n Detail1_UIstyleGetInfo: function Detail1_UIstyleGetInfo(class_id, style_id) {\n var _this2 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n //获取自定义表单样式\n $this = _this2;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n };\n _this2.$store.dispatch('UIStyleGetInfo', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var _$this$detail1_styled;\n var styledef = \"\";\n if (ret.result.style_def) {\n //mobox2的style_def是json字符串\n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3的style_def是base64字符串\n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.$data.detail1_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n $this.$data.detail1_styledef.SelBut_Checked = true;\n $this.detail1_styledef.form.items.forEach( /*#__PURE__*/function () {\n var _ref3 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4(ele, index) {\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!(ele.useDict == true)) {\n _context4.next = 3;\n break;\n }\n _context4.next = 3;\n return _this2.DictGetInfo(ele.bind.dict, index, 'sub');\n case 3:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n return function (_x4, _x5) {\n return _ref3.apply(this, arguments);\n };\n }());\n if (((_$this$detail1_styled = $this.detail1_styledef.event) === null || _$this$detail1_styled === void 0 ? void 0 : _$this$detail1_styled.length) > 0) {\n $detail1_styledefforEach( /*#__PURE__*/function () {\n var _ref4 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(a) {\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n if (!(a.event_id == \"initial\")) {\n _context5.next = 3;\n break;\n }\n _context5.next = 3;\n return _this2.loadInitEvent(a.scrip_id, 'detail');\n case 3:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n return function (_x6) {\n return _ref4.apply(this, arguments);\n };\n }());\n }\n // var aa = JSON.stringify(this.detail1_styledef);\n // $this.$data.detail1StyleDefList.push(JSON.parse(aa));\n // console.log($this.$data.detail1StyleDefList);\n } else {\n uni.showModal({\n title: \"错误2\",\n content: ret.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误2.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 3:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n },\n DictGetInfo: function DictGetInfo(dict, index, type) {\n var _this3 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee8() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee8$(_context8) {\n while (1) {\n switch (_context8.prev = _context8.next) {\n case 0:\n //Mobox3得到得到字典信息字典项列表\n _this3.data = [];\n $this = _this3;\n dataInfo = {\n dict_id: dict.id,\n dict_name: dict.name\n }; // console.log(dataInfo);\n _this3.$store.dispatch('DictGetInfo', dataInfo).then( /*#__PURE__*/function () {\n var _ref5 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee7(success) {\n var list, itemName, attr;\n return _regenerator.default.wrap(function _callee7$(_context7) {\n while (1) {\n switch (_context7.prev = _context7.next) {\n case 0:\n // console.log(success);\n if (success.err_code == 0) {\n list = [];\n itemName = '';\n success.result.dict_item_list.forEach(function (item) {\n if (item.is_default == '1') itemName = item.name;\n list.push({\n text: item.value,\n value: item.name\n });\n });\n if (type == 'mast') {\n //有默认值,显示默认值\n if (itemName) {\n $this.head_styledef.form.items[index].value = itemName;\n attr = $this.head_styledef.form.items[index].fieldId;\n $this.head_styledef.form.model[attr] = itemName;\n }\n $this.head_styledef.form.items[index].dict = list;\n // console.log($this.$data.detail1StyleDefList);\n } else {\n if (itemName) {\n $this.detail1_styledef.form.items[index].value = itemName;\n attr = $this.detail1_styledef.form.items[index].fieldId;\n $this.detail1_styledef.form.model[attr] = itemName;\n }\n $this.detail1_styledef.form.items[index].dict = list;\n __f__(\"log\", $this.$data.detail1_styledef, \" at pages/modal/3037_2.vue:898\");\n }\n } else {\n uni.showModal({\n title: \"错误1.2\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n case 1:\n case \"end\":\n return _context7.stop();\n }\n }\n }, _callee7);\n }));\n return function (_x7) {\n return _ref5.apply(this, arguments);\n };\n }()).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误1.3\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 4:\n case \"end\":\n return _context8.stop();\n }\n }\n }, _callee8);\n }))();\n },\n loadInitEvent: function loadInitEvent(eventid, type) {\n var _this4 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee11() {\n var $this, styledef, dataInfo;\n return _regenerator.default.wrap(function _callee11$(_context11) {\n while (1) {\n switch (_context11.prev = _context11.next) {\n case 0:\n $this = _this4;\n styledef = type == 'head' ? _this4.head_styledef : _this4.detail1_styledef;\n if (!eventid.includes('{')) eventid = '{' + eventid + '}';\n dataInfo = {\n ed_type: 0,\n start_transaction: true,\n class_id: _this4.param.DataCls.id,\n event_id: eventid\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3037_2.vue:919\");\n // return;\n _this4.$store.dispatch('runCustomEvent', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3037_2.vue:922\");\n if (success.err_code == 0) {\n var data = success.result;\n if (data.ret != 0) {\n var tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info.join('<br/>') : '';\n if (data.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + data.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = data.info ? typeof data.info == 'string' ? data.info : data.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n var actionlist = data.action;\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/3037_2.vue:936\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var c = 0; c < styledef.form.items.length; c++) {\n var attr = styledef.form.items[c];\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"text\": val,\n \"value\": val\n });\n }\n attr.dict = dictItemList;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"text\": val,\n \"value\": val\n });\n }\n col.dict = dictItemList;\n }\n }\n });\n }\n }\n }\n for (var c = 0; c < styledef.form.items.length; c++) {\n var attr = styledef.form.items[c];\n // console.log(attr[j].Name+'=='+result[i].attr);\n //判断表单里是否有返回字段,没有就装载到model里,点击确定提交的时候带上这些数据\n if ($this.head_styledef.form.model[result[i].attr] == undefined) {\n $this.head_styledef.form.model[result[i].attr] = result[i].value;\n }\n //判断是否是栅格表单\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n attr.value = '';\n attr.oldvalue = '';\n attr.value = result[i].value;\n attr.oldvalue = result[i].value;\n $this.head_styledef.form.model[attr.fieldId] = result[i].value;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n col.value = '';\n col.oldvalue = '';\n col.value = result[i].value;\n col.oldvalue = result[i].value;\n $this.head_styledef.form.model[col.fieldId] = result[i].value;\n }\n }\n });\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_dlg_attr_show') {\n var result = action.value;\n result.forEach( /*#__PURE__*/function () {\n var _ref6 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee10(attr, key) {\n return _regenerator.default.wrap(function _callee10$(_context10) {\n while (1) {\n switch (_context10.prev = _context10.next) {\n case 0:\n styledef.form.items.forEach( /*#__PURE__*/function () {\n var _ref7 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee9(ele, index) {\n return _regenerator.default.wrap(function _callee9$(_context9) {\n while (1) {\n switch (_context9.prev = _context9.next) {\n case 0:\n //判断是否是栅格表单\n if (ele.name != 'Layout') {\n if (ele.fieldId == attr.attr) {\n ele.show = attr.show;\n }\n } else if (ele.name == 'Layout') {\n ele.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == attr.attr) {\n col.show = attr.show;\n }\n }\n });\n }\n case 1:\n case \"end\":\n return _context9.stop();\n }\n }\n }, _callee9);\n }));\n return function (_x10, _x11) {\n return _ref7.apply(this, arguments);\n };\n }());\n case 1:\n case \"end\":\n return _context10.stop();\n }\n }\n }, _callee10);\n }));\n return function (_x8, _x9) {\n return _ref6.apply(this, arguments);\n };\n }());\n var style_def = JSON.parse(JSON.stringify(styledef));\n if (type == 'head') {\n $this.$data.head_styledef = [];\n $this.$data.head_styledef = style_def;\n // console.log($this.$data.head_styledef);\n } else {\n $this.$data.detail1_styledef = [];\n $this.$data.detail1_styledef = style_def;\n // console.log($this.$data.detail1_styledef);\n }\n } else {\n uni.showModal({\n title: \"提示\",\n content: \"执行初始化事件失败:\" + item.action_type + '此action尚未处理!',\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误3\",\n content: \"执行初始化事件失败:\" + success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误3.1\",\n content: \"执行初始化事件失败:\" + ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n case 6:\n case \"end\":\n return _context11.stop();\n }\n }\n }, _callee11);\n }))();\n },\n ontap: function ontap(item) {\n var _this5 = this;\n //扫码功能\n //console.log(e.target)\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n uni.hideKeyboard();\n var $this = _this5;\n __f__(\"log\", item, \" at pages/modal/3037_2.vue:1067\");\n if (item.oldvalue != result.decodedata) {\n item.oldvalue = result.decodedata;\n item.value = result.decodedata;\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = result.decodedata;\n if (result.decodedata) {\n //第一个输入框不为空\n $this.focusMateria = true; //初始化,第二个输入框focus属性\n // setTimeout(function(){\n // \t$this.focusMateria=true; //第二个输入框获取焦点\n setTimeout(function () {\n uni.hideKeyboard();\n }, 1000);\n // },500);\n }\n //子数据类扫码区事件脚本\n var eventid = _this5.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n var obj_attr = _this5.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: \"7\",\n //\"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n //this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req,\n mast_attr: [],\n inputParamter: [{\n attr: 'mast_input_3037',\n value: result.decodedata\n }]\n };\n _this5.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n });\n },\n onevent: function onevent(item) {\n // console.log(e.target);\n var $this = this;\n __f__(\"log\", item, \" at pages/modal/3037_2.vue:1113\");\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = item.value;\n //子数据类扫码区事件脚本\n var eventid = this.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: \"7\",\n //\"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n //this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req,\n mast_attr: [],\n inputParamter: [{\n attr: 'mast_input_3037',\n value: item.value\n }]\n };\n this.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n },\n onchange: function onchange(item) {\n __f__(\"log\", item, \" at pages/modal/3037_2.vue:1147\");\n var $this = this;\n __f__(\"log\", item, \" at pages/modal/3037_2.vue:1149\");\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = item.value;\n var eventid = item.bind.onChangeEvent.id; //内容变化后事件\n if (eventid) {\n // self.event_no_sub = 1;\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: req\n };\n this.DataObjRunCustomEvent(info);\n }\n }\n },\n scan_ontap: function scan_ontap(e) {\n var _this6 = this;\n //扫码区扫码功能\n //console.log(e.target)\n getApp().onScan(function (result) {\n __f__(\"log\", result.decodedata, \" at pages/modal/3037_2.vue:1182\");\n var isflag = true;\n for (var i in _this6.$data.subPanelList) {\n if (_this6.$data.subPanelList[i].scanCodeVal == result.decodedata) isflag = false;\n }\n //子数据类扫码查询数据\n if (isflag) {\n uni.hideKeyboard();\n _this6.$data.scanCodeVal = result.decodedata;\n var eventid = _this6.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n //主数据类属性\n var obj_attr = _this6.head_styledef.form.model;\n // console.log(obj_attr);\n var mast_req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n var obj_attr2 = _this6.detail1_styledef.form.model;\n var req = Object.keys(obj_attr2).map(function (a) {\n return {\n attr: a,\n value: obj_attr2[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: '7',\n //\"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n //this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: mast_req,\n sub_attr: req,\n inputParamter: [{\n attr: 'input_3037',\n value: _this6.$data.scanCodeVal\n }]\n };\n _this6.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n });\n },\n scan_onevent: function scan_onevent(e) {\n // console.log(e.target);\n if (e.target.value) {\n var isflag = true;\n for (var i in this.$data.subPanelList) {\n if (this.$data.subPanelList[i].scanCodeVal == e.target.value) isflag = false;\n }\n //子数据类扫码查询数据\n if (isflag) {\n uni.hideKeyboard();\n this.$data.scanCodeVal = e.target.value;\n var eventid = this.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n //主数据类属性\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var mast_req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n // var input_param = Base64.encode(\n // JSON.stringify(\n // Object.keys(obj_attr).map((a) => ({\n // attr: a,\n // value: obj_attr[a] || \"\",\n // }))\n // )\n // );\n var obj_attr2 = this.detail1_styledef.form.model;\n var req = Object.keys(obj_attr2).map(function (a) {\n return {\n attr: a,\n value: obj_attr2[a] || \"\"\n };\n });\n var info = {\n eventid: eventid,\n edtype: '7',\n //\"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n //this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: mast_req,\n sub_attr: req,\n inputParamter: [{\n attr: 'input_3037',\n value: this.$data.scanCodeVal\n }]\n };\n this.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n }\n },\n onModelValue: function onModelValue(item) {\n //绑定Model值\n //console.log(e.target)\n var attr = item.fieldId;\n $this.head_styledef.form.model[attr] = item.value;\n },\n panel_del: function panel_del(index) {\n //面板删除\n var $this = this;\n if (this.$data.subPanelList[index].scanCodeVal == this.$data.scanCodeVal) {\n this.$data.scanCodeVal = '';\n }\n if (!this.$data.subPanelList[index].ObjID) this.$data.subPanelList.splice(index, 1);else {\n var dataInfo = {\n class_id: this.$data.param.Sub_Cls.ID,\n class_name: '',\n obj_id: this.$data.subPanelList[index].ObjID\n };\n // console.log(dataInfo);\n // return;\n uni.showLoading({\n title: \"加载中...\"\n });\n this.$store.dispatch('dataObjDel', dataInfo).then(function (success) {\n // console.log(success);\n uni.hideLoading();\n if (ret.err_code == 0) {\n $this.$data.subPanelList.splice(index, 1);\n uni.showModal({\n title: \"提示\",\n content: \"删除成功!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n } else {\n uni.showModal({\n title: \"错误9\",\n content: success.msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/3037_2.vue:1310\");\n uni.hideLoading();\n uni.showModal({\n title: \"提示9.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n }\n },\n scan_classAttr_extButton: function scan_classAttr_extButton(e) {\n //选择按钮前\n var $this = this;\n var Before_Select_Event = $this.$data.param.Scan_Code.Before_Select_Event;\n if (!Before_Select_Event) {\n uni.showModal({\n title: \"提示\",\n content: \"选择前事件为空!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var mast_attr = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n var objects = [];\n var subPanelList = $this.$data.subPanelList;\n for (var s = 0; s < subPanelList.length; s++) {\n var detail_attr = {};\n subPanelList[s].subClassAttr.form.items.forEach(function (item) {\n if (item.name == \"Layout\") {\n //判断是否是栅栏格式\n item.setting.colList.forEach(function (cols) {\n if (cols != null) detail_attr[cols.fieldId] = cols.value;\n });\n } else detail_attr[item.fieldId] = item.value;\n });\n var sub_req = Object.keys(detail_attr).map(function (a) {\n return {\n attr: a,\n value: detail_attr[a] || \"\"\n };\n });\n objects.push({\n obj_id: subPanelList[s].scanCodeVal,\n obj_attrs: sub_req\n });\n }\n var req = [];\n var enviroment = {\n 'function': '3000',\n // 功能点编号\n cls_id: 'MBOX',\n //this.$data.param.Sub_Cls.ID, // 功能点从数据类标识\n 'button': 'top',\n // top/bottom\n button_name: '新增',\n edit_dlg: {\n type: 'small',\n //小窗口\n class_id: 'MBOX' //this.$data.param.Sub_Cls.ID,//当前数据类id\n },\n\n master_cls: {\n cls_name: 'MBOX',\n //$this.$data.param.Master_Cls.Name,\n obj_attrs: mast_attr\n },\n sub_cls: {\n cls_name: 'MBOX',\n //$this.$data.param.Sub_Cls.Name,\n objects: objects\n }\n };\n var info = {\n eventid: Before_Select_Event.ID,\n edtype: \"7\",\n //\"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n //this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: [],\n global_attr: req,\n mast_attr: mast_attr,\n inputParamter: mast_attr,\n enviroment: enviroment\n };\n // console.log(info);\n this.scan_DataObjRunCustomEvent(info, \"\");\n },\n popupChange: function popupChange(e) {\n __f__(\"log\", '当前模式:' + e.type + ',状态:' + e.show, \" at pages/modal/3037_2.vue:1391\");\n },\n checkChange: function checkChange(e) {\n //弹框check选择\n // console.log(e.target.dataset);\n var index = e.target.dataset.index;\n var ischeck = e.target.dataset.ischeck;\n var data = this.$data.check_list.items;\n // this.$data.check_list.items=[];\n if (this.$data.check_list.multiple_choice == \"0\") {\n //判断时单选还是多选\n for (var i in data) {\n data[i].check = false;\n }\n }\n data[index].check = ischeck ? false : true;\n this.$data.check_list.items = data;\n },\n popup_cancel: function popup_cancel(e) {\n //弹框取消\n this.$refs.popup.close();\n },\n popup_sava: function popup_sava(e) {\n //弹框确定 选择按钮后\n var $this = this;\n var After_Select_Event = $this.$data.param.Scan_Code.After_Select_Event;\n if (!After_Select_Event) {\n uni.showModal({\n title: \"提示\",\n content: \"选择后事件为空!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n var items = $this.$data.check_list.items;\n var data = [];\n var name = \"\";\n for (var i = 0; i < items.length; i++) {\n if (items[i].check == true) {\n if (name) name += ';';\n name += items[i].name;\n data.push({\n id: items[i].id,\n name: items[i].name\n });\n }\n }\n if (data.length == 0) {\n uni.showModal({\n title: \"提示\",\n content: \"未选择数据!\",\n showCancel: false,\n confirmText: \"取消\"\n });\n return;\n }\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var mast_attr = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n $this.$data.scanCodeVal = name;\n var info = {\n eventid: After_Select_Event.ID,\n edtype: \"7\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n objid: \"\",\n attr: [{\n attr: 'mast_input_3037',\n value: name\n }],\n global_attr: mast_attr,\n inputParamter: data,\n enviroment: ''\n };\n // console.log(info);\n this.scan_DataObjRunCustomEvent(info, \"\");\n this.$refs.popup.close();\n },\n onPanelClick: function onPanelClick(value) {\n //点击面板高亮显示\n // console.log(value);\n this.activelist.forEach(function (ele) {\n ele.active = false;\n });\n this.activelist[value].active = true;\n },\n DataObjRunCustomEvent: function DataObjRunCustomEvent(info, data_attr) {\n var $this = this;\n var enviroment = {\n 'function': '3000',\n // 功能点编号\n cls_id: this.$data.param.Master_Cls.ID,\n // 功能点主数据类标识\n 'button': 'top',\n // top/bottom\n button_name: '新增',\n master: {\n cls_id: this.$data.param.Master_Cls.ID // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n }\n };\n\n enviroment.edit_dlg = {\n type: 'small',\n //小窗口\n class_id: this.$data.param.Master_Cls.ID //当前数据类id\n };\n\n if (data_attr) {\n enviroment.edit_dlg.form_control = {\n //所属的表单控件\n name: data_attr.Name,\n //字段属性\n text: data_attr.DispName,\n //显示文本\n group_name: data_attr.GroupName,\n //属性组\n type: data_attr.Type,\n //字段类型\n readonly: data_attr.ReadOnly,\n //是否只读\n button_img: data_attr.button_img,\n //引用按钮的图标\n button_tooltip: data_attr.button_tooltip //引用按钮的tooltip\n };\n }\n // var dataInfo = {\n // edtype: info.edtype, eventid: info.eventid, projectid: info.projectid.replace('{','').replace('}',''),\n // rclsid: info.rclsid, robjid: info.robjid, userlogin: info.userlogin, clsid: info.clsid, objid: info.objid,\n // attr: JSON.stringify(info.attr), extinfo: JSON.stringify(enviroment), inputparameter: '', global_attr: JSON.stringify(this.$data.global_attr)\n // }\n enviroment = _base.default.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码\n var global_attr = _base.default.encode(JSON.stringify(this.$data.global_attr)); //将字符串转换为base64编码\n if (info.dataJson) info.dataJson = _base.default.encode(JSON.stringify(info.dataJson)); //将字符串转换为base64编码\n var obj_attr = {};\n info.attr.forEach(function (item) {\n obj_attr[item.attr] = item.val;\n });\n if (!info.eventid.includes('{')) info.eventid = '{' + info.eventid + '}';\n var dataInfo = {\n ed_type: info.edtype,\n start_transaction: true,\n class_id: info.clsid,\n class_name: '',\n event_id: info.eventid,\n event_name: '',\n data_obj_id: info.objid,\n obj_attr: obj_attr,\n prj_id: info.projectid,\n ref_cls_id: info.rclsid,\n rel_obj_id: info.robjid,\n user_login: info.userlogin,\n data_json: info.dataJson,\n compose_info: '',\n ext_info: enviroment,\n global_attr: global_attr,\n input_param: ''\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3037_2.vue:1527\");\n // return;\n this.$store.dispatch('runCustomEvent', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3037_2.vue:1530\");\n if (success.err_code == 0) {\n var data = success.result;\n if (data.ret != 0) {\n var tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info.join('<br/>') : '';\n if (data.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + data.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = data.info ? typeof data.info == 'string' ? data.info : data.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n var actionlist = data.action;\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/3037_2.vue:1544\");\n for (var i = 0; i < actionlist.length; i++) {\n var action = actionlist[i];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var c = 0; c < $this.head_styledef.form.items.length; c++) {\n var attr = $this.head_styledef.form.items[c];\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"text\": val,\n \"value\": val\n });\n }\n attr.dict = dictItemList;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"text\": val,\n \"value\": val\n });\n }\n col.dict = dictItemList;\n }\n }\n });\n }\n }\n }\n for (var c = 0; c < $this.$data.head_styledef.form.items.length; c++) {\n var attr = $this.$data.head_styledef.form.items[c];\n // console.log(attr[j].Name+'=='+result[i].attr);\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n attr.value = '';\n attr.oldvalue = '';\n attr.value = result[i].value;\n attr.oldvalue = result[i].value;\n $this.head_styledef.form.model[attr.fieldId] = result[i].value;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n col.value = '';\n col.oldvalue = '';\n col.value = result[i].value;\n col.oldvalue = result[i].value;\n $this.head_styledef.form.model[col.fieldId] = result[i].value;\n }\n }\n });\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (data.action[i].action_type == 'set_global_attr') {\n $this.$data.global_attr = data.action[i].value || [];\n }\n }\n }\n if (data.result) {\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var c = 0; c < $this.$data.head_styledef.form.items.length; c++) {\n var attr = $this.$data.head_styledef.form.items[c];\n if (attr.name != 'Layout') {\n if (attr.fieldId == result[i].attr) {\n attr.value = '';\n attr.oldvalue = '';\n attr.value = result[i].value;\n attr.oldvalue = result[i].value;\n $this.head_styledef.form.model[attr.fieldId] = result[i].value;\n }\n } else if (attr.name == 'Layout') {\n attr.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) {\n col.value = '';\n col.oldvalue = '';\n col.value = result[i].value;\n col.oldvalue = result[i].value;\n $this.head_styledef.form.model[col.fieldId] = result[i].value;\n }\n }\n });\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误3\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误3.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n scan_DataObjRunCustomEvent: function scan_DataObjRunCustomEvent(info, data_attr) {\n var _this7 = this;\n var $this = this;\n var obj_attr = {};\n info.attr.forEach(function (item) {\n obj_attr[item.attr] = item.value;\n });\n var enviroment = {};\n if (info.enviroment) {\n enviroment = info.enviroment;\n } else {\n enviroment = {\n 'function': '3000',\n // 功能点编号\n cls_id: 'MBOX',\n //this.$data.param.Sub_Cls.ID, // 功能点从数据类标识\n 'button': 'top',\n // top/bottom\n button_name: '新增',\n edit_dlg: {\n type: 'small',\n //小窗口\n class_id: 'MBOX' //this.$data.param.Sub_Cls.ID,//当前数据类id\n },\n\n master: {\n cls_id: info.clsid,\n // button=bottom时 master的cls_id\n //obj_id: '' // button=bottom时 master的obj_id\n obj_attrs: obj_attr\n }\n };\n }\n var global_attr = this.$data.global_attr;\n if (info.global_attr) {\n global_attr = info.global_attr;\n }\n enviroment = _base.default.encode(JSON.stringify(enviroment)); //将字符串转换为base64编码\n var inputParamter = info.inputParamter;\n if (info.inputParamter) {\n info.inputParamter = _base.default.encode(JSON.stringify(info.inputParamter)); //将字符串转换为base64编码\n }\n\n var global_attr = _base.default.encode(JSON.stringify(this.$data.global_attr)); //将字符串转换为base64编码\n\n if (!info.eventid.includes('{')) info.eventid = '{' + info.eventid + '}';\n var dataInfo = {\n ed_type: info.edtype,\n start_transaction: true,\n class_id: info.clsid,\n class_name: '',\n event_id: info.eventid,\n event_name: '',\n data_obj_id: info.objid,\n obj_attr: obj_attr,\n prj_id: info.projectid.replace('{', '').replace('}', ''),\n ref_cls_id: info.rclsid,\n rel_obj_id: info.robjid,\n user_login: info.userlogin,\n data_json: '',\n compose_info: '',\n ext_info: enviroment,\n global_attr: global_attr,\n input_param: info.inputParamter\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3037_2.vue:1738\");\n // return;\n this.$store.dispatch('runCustomEvent', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3037_2.vue:1741\");\n if (success.err_code == 0) {\n var data = success.result;\n if (data.ret != 0) {\n var tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info.join('<br/>') : '';\n if (data.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + data.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = data.info ? typeof data.info == 'string' ? data.info : data.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n var actionlist = data.action;\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/3037_2.vue:1755\");\n for (var ii = 0; ii < actionlist.length; ii++) {\n var action = actionlist[ii];\n if (action.action_type == 'set_dlg_attr') {\n var result = action.value;\n for (var i = 0; i < result.length; i++) {\n if (result[i].choice_list) {\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n for (var c = 0; c < $this.$data.subPanelList[s].subClassAttrList.length; c++) {\n var attr = $this.$data.subPanelList[s].subClassAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n if (attr[j].Type == '字典' || attr[j].Type == '字典-字符串' || attr[j].Type == '字典-整数') {\n var dictItemList = [];\n for (var d in result[i].choice_list) {\n var val = result[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"CN_S_VALUE\": val,\n \"Name\": val,\n \"label\": val,\n \"value\": val\n });\n }\n attr[j].dictitem = dictItemList;\n // attr[j].dictitem = result[i].choice_list;\n }\n }\n }\n }\n }\n }\n\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n for (var c = 0; c < $this.$data.subPanelList[s].subClassAttrList.length; c++) {\n var attr = $this.$data.subPanelList[s].subClassAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/3037_2.vue:1785\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n // attr.value = '';\n // attr.oldvalue = '';\n // attr.value = result[i].value;\n // attr.oldvalue = result[i].value;\n }\n }\n }\n }\n\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n } else if (action.action_type == 'set_global_attr') {\n $this.$actiontr = action.value || [];\n } else if (action.action_type == 'open_common_dlg') {\n //打开侧滑弹框\n var $this = _this7;\n if (action.value.common_dlg_id == 'check_list') {\n $this.$data.check_list = action.value.config;\n if (action.value.config.appear_style == 'sideslip')\n //判断是否是侧滑\n $this.$data.popupType = 'right';else $this.$data.popupType = 'center';\n // open 方法传入参数 等同在 uni-popup 组件上绑定 type属性\n $this.$refs.popup.open($this.$data.popupType);\n }\n } else if (action.action_type == 'add_subcls_panel') {\n //主从数据类扫码查询数据\n var result = action.value;\n var $this = _this7;\n var list_1 = JSON.parse(JSON.stringify(_this7.$data.detail1_styledef));\n var scanCodeVal = $this.$data.scanCodeVal;\n var rand = '';\n for (var i = 0; i < 5; i++) {\n //生成5位随机数\n rand += Math.floor(Math.random() * 10);\n }\n if (inputParamter[0].attr) {\n if (inputParamter[0].attr == \"mast_input_3037\")\n //判断是主数据类扫码查询数据\n scanCodeVal = \"mast_input_3037-\" + rand;\n }\n if (info.attr[0].attr) {\n if (info.attr[0].attr == \"mast_input_3037\")\n //判断是主数据类扫码查询数据\n scanCodeVal = \"mast_input_3037-\" + rand;\n }\n $this.$data.subPanelList.push({\n scanCodeVal: scanCodeVal,\n subClassAttr: list_1\n });\n $this.activelist.push({\n active: false\n });\n for (var i = 0; i < result.length; i++) {\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n if ($this.$data.subPanelList[s].scanCodeVal == scanCodeVal) {\n if (result[i].attr == \"S_ID\") $this.$data.subPanelList[s].ObjID = result[i].value;\n var _subClassAttr = $this.$data.subPanelList[s].subClassAttr.form.items;\n for (var c = 0; c < _subClassAttr.length; c++) {\n if (_subClassAttr[c].name != 'Layout') {\n if (_subClassAttr[c].fieldId == result[i].attr) _subClassAttr[c].value = result[i].value;\n } else if (_subClassAttr[c].name == 'Layout') {\n _subClassAttr[c].setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) col.value = result[i].value;\n }\n });\n }\n }\n\n // $this.$data.subPanelList[s].subClassAttr=list_1;\n }\n }\n // console.log($this.$data.subPanelList);\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n }\n }\n if (data.result) {\n var list_1 = JSON.parse(JSON.stringify(_this7.$data.detail1_styledef));\n var scanCodeVal = $this.$data.scanCodeVal;\n var rand = '';\n for (var i = 0; i < 5; i++) {\n //生成5位随机数\n rand += Math.floor(Math.random() * 10);\n }\n if (inputParamter[0].attr) {\n if (inputParamter[0].attr == \"mast_input_3037\")\n //判断是主数据类扫码查询数据\n scanCodeVal = \"mast_input_3037-\" + rand;\n }\n if (info.attr[0].attr) {\n if (info.attr[0].attr == \"mast_input_3037\")\n //判断是主数据类扫码查询数据\n scanCodeVal = \"mast_input_3037-\" + rand;\n }\n $this.$data.subPanelList.push({\n scanCodeVal: scanCodeVal,\n subClassAttr: list_1\n });\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n for (var s = 0; s < $this.$data.subPanelList.length; s++) {\n if ($this.$data.subPanelList[s].scanCodeVal == scanCodeVal) {\n if (result[i].attr == \"S_ID\") $this.$data.subPanelList[s].ObjID = result[i].value;\n var _subClassAttr = $this.$data.subPanelList[s].subClassAttr.form.items;\n for (var c = 0; c < _subClassAttr.length; c++) {\n if (_subClassAttr[c].name != 'Layout') {\n if (_subClassAttr[c].fieldId == result[i].attr) _subClassAttr[c].value = result[i].value;\n } else if (_subClassAttr[c].name == 'Layout') {\n _subClassAttr[c].setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == result[i].attr) col.value = result[i].value;\n }\n });\n }\n }\n }\n }\n var length = 0;\n if (!$this.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n $this.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < $this.$data.refdatastore.length; j++) {\n if ($this.$data.refdatastore[j].attr == result[i].attr) {\n $this.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n }\n }\n } else {\n uni.showModal({\n title: \"错误7\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"错误7.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n //确定\n sava: function sava() {\n if (this.$data.param.Before_OK_Event)\n //判断功能点参数是否有确定前脚本\n this.scan_OKDataObjRunCustomEvent(this.$data.param.Before_OK_Event.ID);else if (this.$data.param.After_OK_Event)\n //判断功能点参数是否有确定后脚本\n this.scan_OKDataObjRunCustomEvent(this.$data.param.After_OK_Event.ID);else uni.navigateBack({\n delta: 1\n }); //返回层数,2则上上页\n },\n scan_OKDataObjRunCustomEvent: function scan_OKDataObjRunCustomEvent(eventID) {\n uni.showLoading({\n title: \"加载中...\",\n mask: true\n });\n var $this = this;\n //获取表头属性\n var obj_attr = this.head_styledef.form.model;\n // console.log(obj_attr);\n var req = Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n });\n var objects = [];\n var subPanelList = $this.$data.subPanelList;\n for (var s = 0; s < subPanelList.length; s++) {\n var detail_attr = {};\n subPanelList[s].subClassAttr.form.items.forEach(function (item) {\n if (item.name == \"Layout\") {\n //判断是否是栅栏格式\n item.setting.colList.forEach(function (cols) {\n if (cols != null) detail_attr[cols.fieldId] = cols.value;\n });\n } else detail_attr[item.fieldId] = item.value;\n });\n var sub_req = Object.keys(detail_attr).map(function (a) {\n return {\n attr: a,\n value: detail_attr[a] || \"\"\n };\n });\n objects.push({\n obj_id: subPanelList[s].scanCodeVal,\n obj_attrs: sub_req\n });\n }\n var dataJson = {\n master_cls: {\n cls_name: 'MBOX',\n //$this.$data.param.Master_Cls.Name,\n obj_attrs: req\n },\n input_3037: $this.$data.scanCodeVal,\n //扫码内容\n op_type: $this.$data.param.OperationType,\n //作业类型定义\n sub_cls: {\n cls_name: 'MBOX',\n //$this.$data.param.Sub_Cls.Name,\n objects: objects\n }\n };\n // console.log(JSON.stringify(dataJson));\n var dataJson = _base.default.encode(JSON.stringify(dataJson)); //将字符串转换为base64编码\n var global_attr = _base.default.encode(JSON.stringify(this.$data.global_attr)); //将字符串转换为base64编码\n if (!eventID.includes('{')) eventID = '{' + eventID + '}';\n var dataInfo = {\n ed_type: \"7\",\n start_transaction: true,\n class_id: 'MBOX',\n class_name: '',\n event_id: eventID,\n event_name: '',\n data_obj_id: '',\n obj_attr: '',\n prj_id: '',\n ref_cls_id: '',\n rel_obj_id: '',\n user_login: '',\n data_json: dataJson,\n compose_info: '',\n ext_info: '',\n global_attr: global_attr,\n input_param: ''\n };\n __f__(\"log\", dataInfo, \" at pages/modal/3037_2.vue:2037\");\n // uni.hideLoading();\n // \treturn;\n this.$store.dispatch('runCustomEvent', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/3037_2.vue:2041\");\n uni.hideLoading();\n if (success.err_code == 0) {\n var data = success.result;\n if (data.ret != 0) {\n var tip = data.err_info ? typeof data.err_info == 'string' ? data.err_info : data.err_info.join('<br/>') : '';\n if (data.ret == 801) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });else uni.showModal({\n title: '提示',\n content: tip + ',提示:' + data.ret,\n showCancel: false,\n confirmText: \"取消\"\n });\n return false;\n } else {\n var tip = data.info ? typeof data.info == 'string' ? data.info : data.info.join('<br/>') : '';\n if (tip) uni.showModal({\n title: '提示',\n content: tip,\n showCancel: false,\n confirmText: \"取消\"\n });\n var result = data.result;\n if (eventID != $this.$data.param.After_OK_Event.ID) $this.scan_OKDataObjRunCustomEvent($this.$data.param.After_OK_Event.ID);else {\n //刷新\n uni.redirectTo({\n url: '../modal/3037_2?param=' + JSON.stringify($this.$data.param) + \"&titlename=\" + $this.$data.title\n });\n }\n }\n } else {\n uni.showModal({\n title: \"错误8\",\n content: success.err_msg,\n showCancel: false,\n confirmText: \"取消\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.hideLoading();\n uni.showModal({\n title: \"错误8.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"取消\"\n });\n });\n },\n cancel: function cancel(e) {\n //取消\n uni.navigateBack({\n delta: 1 //返回层数,2则上上页\n });\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvMzAzN18yLnZ1ZSJdLCJuYW1lcyI6WyJtb2R1bGVzIiwiQmFzZTY0IiwiZGF0YSIsInRpdGxlIiwicGFyYW0iLCJlZGl0X2luaXRhbF9ldmVudCIsImVkaXRfb2tfZXZlbnQiLCJlZGl0X3NlbGVjdF9jb21wb3NlX2V2ZW50IiwiZWRpdF9jb21wb3NlX2Nsc19pZCIsImdsb2JhbF9hdHRyIiwicmVmZGF0YXN0b3JlIiwic2NhbkNvZGVWYWwiLCJzdWJDbGFzc0F0dHJMaXN0Iiwic3ViUGFuZWxMaXN0Iiwic3ViQ2xhc3NHcmlkU3R5bGUiLCJwb3B1cFR5cGUiLCJjaGVja19saXN0IiwiZm9jdXNNYXRlcmlhIiwiaGVhZF9zdHlsZWRlZiIsImZvcm0iLCJpdGVtcyIsImRldGFpbDFfc3R5bGVkZWYiLCJkZXRhaWwxU3R5bGVEZWZMaXN0IiwiYWN0aXZlbGlzdCIsIm9uTG9hZCIsIm9wdGlvbnMiLCJ1bmkiLCJzZXROYXZpZ2F0aW9uQmFyVGl0bGUiLCJ0aXRsZW5hbWUiLCIkZGF0YSIsIkpTT04iLCJwYXJzZSIsIkhlYWRfVUlTdHlsZUdldEluZm8iLCJNYXN0ZXJfQ2xzIiwiSUQiLCJVSV9TdHlsZSIsIkRldGFpbDFfVUlzdHlsZUdldEluZm8iLCJTdWJfQ2xzIiwibWV0aG9kcyIsImNsYXNzX2lkIiwic3R5bGVfaWQiLCIkdGhpcyIsImRhdGFJbmZvIiwidWlfc3R5bGVfaWQiLCIkc3RvcmUiLCJkaXNwYXRjaCIsInRoZW4iLCJyZXQiLCJlcnJfY29kZSIsInN0eWxlZGVmIiwicmVzdWx0Iiwic3R5bGVfZGVmIiwicmVwbGFjZSIsImluY2x1ZGVzIiwiZGVjb2RlIiwiZm9yRWFjaCIsImVsZSIsImluZGV4Iiwic2hvdyIsInVzZURpY3QiLCJEaWN0R2V0SW5mbyIsImJpbmQiLCJkaWN0IiwiZXZlbnQiLCJsZW5ndGgiLCJhIiwiZXZlbnRfaWQiLCJsb2FkSW5pdEV2ZW50Iiwic2NyaXBfaWQiLCJzaG93TW9kYWwiLCJjb250ZW50IiwiZXJyX21zZyIsInNob3dDYW5jZWwiLCJjb25maXJtVGV4dCIsImNhdGNoIiwiZXgiLCJlcnJNc2ciLCJTZWxCdXRfQ2hlY2tlZCIsIiRkZXRhaWwxX3N0eWxlZGVmZm9yRWFjaCIsInR5cGUiLCJkaWN0X2lkIiwiaWQiLCJkaWN0X25hbWUiLCJuYW1lIiwic3VjY2VzcyIsImxpc3QiLCJpdGVtTmFtZSIsImRpY3RfaXRlbV9saXN0IiwiaXRlbSIsImlzX2RlZmF1bHQiLCJwdXNoIiwidGV4dCIsInZhbHVlIiwiYXR0ciIsImZpZWxkSWQiLCJtb2RlbCIsImV2ZW50aWQiLCJlZF90eXBlIiwic3RhcnRfdHJhbnNhY3Rpb24iLCJEYXRhQ2xzIiwidGlwIiwiZXJyX2luZm8iLCJqb2luIiwiaW5mbyIsImFjdGlvbmxpc3QiLCJhY3Rpb24iLCJpIiwiYWN0aW9uX3R5cGUiLCJjaG9pY2VfbGlzdCIsImMiLCJkaWN0SXRlbUxpc3QiLCJkIiwidmFsIiwic2V0dGluZyIsImNvbExpc3QiLCJjb2wiLCJ1bmRlZmluZWQiLCJvbGR2YWx1ZSIsImZpbHRlciIsInMiLCJqIiwia2V5Iiwic3RyaW5naWZ5Iiwib250YXAiLCJnZXRBcHAiLCJvblNjYW4iLCJoaWRlS2V5Ym9hcmQiLCJkZWNvZGVkYXRhIiwic2V0VGltZW91dCIsIlNjYW5fQ29kZSIsIklucHV0X0NoYW5nZV9FdmVudCIsIm9ial9hdHRyIiwicmVxIiwiT2JqZWN0Iiwia2V5cyIsIm1hcCIsImVkdHlwZSIsInByb2plY3RpZCIsInJjbHNpZCIsInJvYmppZCIsInVzZXJsb2dpbiIsImNsc2lkIiwib2JqaWQiLCJtYXN0X2F0dHIiLCJpbnB1dFBhcmFtdGVyIiwic2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJvbmV2ZW50Iiwib25jaGFuZ2UiLCJvbkNoYW5nZUV2ZW50IiwiRGF0YU9ialJ1bkN1c3RvbUV2ZW50Iiwic2Nhbl9vbnRhcCIsImUiLCJpc2ZsYWciLCJtYXN0X3JlcSIsIm9ial9hdHRyMiIsInN1Yl9hdHRyIiwic2Nhbl9vbmV2ZW50IiwidGFyZ2V0Iiwib25Nb2RlbFZhbHVlIiwicGFuZWxfZGVsIiwiT2JqSUQiLCJzcGxpY2UiLCJjbGFzc19uYW1lIiwib2JqX2lkIiwic2hvd0xvYWRpbmciLCJoaWRlTG9hZGluZyIsIm1zZyIsInNjYW5fY2xhc3NBdHRyX2V4dEJ1dHRvbiIsIkJlZm9yZV9TZWxlY3RfRXZlbnQiLCJvYmplY3RzIiwiZGV0YWlsX2F0dHIiLCJzdWJDbGFzc0F0dHIiLCJjb2xzIiwic3ViX3JlcSIsIm9ial9hdHRycyIsImVudmlyb21lbnQiLCJjbHNfaWQiLCJidXR0b25fbmFtZSIsImVkaXRfZGxnIiwibWFzdGVyX2NscyIsImNsc19uYW1lIiwic3ViX2NscyIsInBvcHVwQ2hhbmdlIiwiY2hlY2tDaGFuZ2UiLCJkYXRhc2V0IiwiaXNjaGVjayIsIm11bHRpcGxlX2Nob2ljZSIsImNoZWNrIiwicG9wdXBfY2FuY2VsIiwiJHJlZnMiLCJwb3B1cCIsImNsb3NlIiwicG9wdXBfc2F2YSIsIkFmdGVyX1NlbGVjdF9FdmVudCIsIm9uUGFuZWxDbGljayIsImFjdGl2ZSIsImRhdGFfYXR0ciIsIm1hc3RlciIsImZvcm1fY29udHJvbCIsIk5hbWUiLCJEaXNwTmFtZSIsImdyb3VwX25hbWUiLCJHcm91cE5hbWUiLCJUeXBlIiwicmVhZG9ubHkiLCJSZWFkT25seSIsImJ1dHRvbl9pbWciLCJidXR0b25fdG9vbHRpcCIsImVuY29kZSIsImRhdGFKc29uIiwiZXZlbnRfbmFtZSIsImRhdGFfb2JqX2lkIiwicHJqX2lkIiwicmVmX2Nsc19pZCIsInJlbF9vYmpfaWQiLCJ1c2VyX2xvZ2luIiwiZGF0YV9qc29uIiwiY29tcG9zZV9pbmZvIiwiZXh0X2luZm8iLCJpbnB1dF9wYXJhbSIsImlpIiwiQXR0ciIsImRpY3RpdGVtIiwiVmFsdWUiLCIkYWN0aW9udHIiLCJjb21tb25fZGxnX2lkIiwiY29uZmlnIiwiYXBwZWFyX3N0eWxlIiwib3BlbiIsImxpc3RfMSIsInJhbmQiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJfc3ViQ2xhc3NBdHRyIiwic2F2YSIsIkJlZm9yZV9PS19FdmVudCIsInNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJBZnRlcl9PS19FdmVudCIsIm5hdmlnYXRlQmFjayIsImRlbHRhIiwiZXZlbnRJRCIsIm1hc2siLCJpbnB1dF8zMDM3Iiwib3BfdHlwZSIsIk9wZXJhdGlvblR5cGUiLCJyZWRpcmVjdFRvIiwidXJsIiwiY2FuY2VsIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUF3dEJBO0FBeHRCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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QUMsYUFBYSxHQUFDcUMsS0FBSyxDQUFDWixLQUFLLENBQUMxQjtjQUMxRixDQUFDLENBQUM7WUFDSDtVQUNEO1FBQ0EsQ0FBQyxNQUFJO1VBQ0p1QixHQUFHLENBQUMyQyxTQUFTLENBQUM7WUFBQ2xFLEtBQUssRUFBQyxLQUFLO1lBQUNtRSxPQUFPLEVBQUNjLE9BQU8sQ0FBQ2IsT0FBTztZQUFDQyxVQUFVLEVBQUMsS0FBSztZQUFDQyxXQUFXLEVBQUM7VUFBSSxDQUFDLENBQUM7UUFDdkY7TUFDRCxDQUFDLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLFVBQUFDLEVBQUUsRUFBRTtRQUNaO1FBQ0RqRCxHQUFHLENBQUMySSxXQUFXLEVBQUU7UUFDaEIzSSxHQUFHLENBQUMyQyxTQUFTLENBQUM7VUFBQ2xFLEtBQUssRUFBQyxPQUFPO1VBQUNtRSxPQUFPLEVBQUNLLEVBQUUsQ0FBQ0MsTUFBTTtVQUFDSixVQUFVLEVBQUMsS0FBSztVQUFDQyxXQUFXLEVBQUM7UUFBSSxDQUFDLENBQUM7TUFDbkYsQ0FBQyxDQUFDO0lBQ0gsQ0FBQztJQUdGK0ssTUFBTSxrQkFBQ2pHLENBQUMsRUFBQztNQUFFO01BQ1Y3SCxHQUFHLENBQUNxTixZQUFZLENBQUM7UUFDaEJDLEtBQUssRUFBQyxDQUFDLENBQUM7TUFDVCxDQUFDLENBQUM7SUFDSDtFQUNDO0FBQ0YsQ0FBQztBQUFBLDJCIiwiZmlsZSI6IjE2MC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcbi8vXHJcblxyXG5pbXBvcnQgQmFzZTY0IGZyb20gJy4uLy4uL2NvbXBvbmVudHMvanMtYmFzZTY0L2Jhc2U2NC5qcydcclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gIG1vZHVsZXM6e1xyXG5cdEJhc2U2NCxcclxuICB9LFxyXG4gIGRhdGEoKSB7XHJcbiAgICByZXR1cm4ge1xyXG5cdCAgdGl0bGU6J+aWsOWinicsXHJcbiAgICAgIHBhcmFtOiB7fSxcclxuXHQgIGVkaXRfaW5pdGFsX2V2ZW50OlwiXCIsICAvL+W8ueeql+WIneWni+WMluS6i+S7tklEXHJcblx0ICBlZGl0X29rX2V2ZW50OlwiXCIsICAgICAgLy/lvLnnqpfngrnlh7tPSyDop6blj5Hkuovku7ZJRFxyXG5cdCAgZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudDpcIlwiLCAgLy/pgInmi6nnu4TmiJDlr7nosaHml7bosIPnlKhcclxuXHQgIGVkaXRfY29tcG9zZV9jbHNfaWQ6XCJcIixcclxuXHQgIGdsb2JhbF9hdHRyOltdLFxyXG5cdCAgcmVmZGF0YXN0b3JlOiBbXSxcdCAgIC8v5byV55So5pWw5o2u5a2Y5YKo5Yy6Ly8ge2F0dHI6J0dfUFJKXycgKyBiaW5kYXR0ciArICdfSUQnLCB2YWx1ZTppbmZvLmlkfVxyXG5cdCAgc2NhbkNvZGVWYWw6XCJcIixcclxuXHQgIHN1YkNsYXNzQXR0ckxpc3Q6W10sXHJcblx0ICBzdWJQYW5lbExpc3Q6W10sXHJcblx0ICBzdWJDbGFzc0dyaWRTdHlsZTpbXSxcclxuXHQgIHBvcHVwVHlwZTpcImNlbnRlclwiLFxyXG5cdCAgY2hlY2tfbGlzdDp7fSxcclxuXHQgIFxyXG5cdCAgZm9jdXNNYXRlcmlhOmZhbHNlLFxyXG5cdCAgaGVhZF9zdHlsZWRlZjp7XHJcblx0XHRmb3JtOntcclxuXHRcdFx0aXRlbXM6W11cclxuXHRcdH1cclxuXHQgIH0sXHJcbiAgICAgIGRldGFpbDFfc3R5bGVkZWY6e30sXHJcbiAgICAgIGRldGFpbDFTdHlsZURlZkxpc3Q6W10sXHJcblx0ICBhY3RpdmVsaXN0OltdLFxyXG4gICAgfTtcclxuICB9LFxyXG4gIG9uTG9hZChvcHRpb25zKSB7XHJcblx0Ly8gY29uc29sZS5sb2cob3B0aW9ucyk7XHJcblx0dW5pLnNldE5hdmlnYXRpb25CYXJUaXRsZSh7IHRpdGxlOiBvcHRpb25zLnRpdGxlbmFtZX0pOyAvL+iuvue9rumhtumDqOagh+mimCBcclxuXHR0aGlzLiRkYXRhLnRpdGxlID0gb3B0aW9ucy50aXRsZW5hbWU7XHJcblx0dGhpcy4kZGF0YS5wYXJhbSA9IEpTT04ucGFyc2Uob3B0aW9ucy5wYXJhbSk7XHJcblx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5wYXJhbSk7XHJcblx0IC8v6I635Y+W5pWw5o2u57G755qE6Ieq5a6a5LmJ6KGo5Y2V5Y+C5pWwXHJcblx0dGhpcy5IZWFkX1VJU3R5bGVHZXRJbmZvKHRoaXMucGFyYW0uTWFzdGVyX0Nscy5JRCx0aGlzLnBhcmFtLk1hc3Rlcl9DbHMuVUlfU3R5bGUuSUQpO1xyXG5cdHRoaXMuRGV0YWlsMV9VSXN0eWxlR2V0SW5mbyh0aGlzLnBhcmFtLlN1Yl9DbHMuSUQsdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLlVJX1N0eWxlLklEKTtcclxuXHRcclxuXHQvL+mhtemdouWIneWni+WMluiOt+WPlueEpueCuVxyXG5cdC8vIHRoaXMuZm9jdXNNYXRlcmlhPXRydWU7IFxyXG4gIH0sXHRcclxuICBtZXRob2RzOiB7XHJcbiAgICBhc3luYyBIZWFkX1VJU3R5bGVHZXRJbmZvKGNsYXNzX2lkLHN0eWxlX2lkKXsgICAvL+iOt+WPluiHquWumuS5ieihqOWNleagt+W8j1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdGNsYXNzX2lkOmNsYXNzX2lkLFxyXG5cdFx0XHR1aV9zdHlsZV9pZDpzdHlsZV9pZCxcclxuXHRcdH07XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnVUlTdHlsZUdldEluZm8nLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgc3R5bGVkZWY9XCJcIjtcclxuXHRcdFx0XHRpZihyZXQucmVzdWx0LnN0eWxlX2RlZil7XHJcblx0XHRcdFx0ICAgICAvL21vYm94MueahHN0eWxlX2RlZuaYr2pzb27lrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIHN0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWYucmVwbGFjZSgvXFxcXC9nLFwiXCIpO1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDPnmoRzdHlsZV9kZWbmmK9iYXNlNjTlrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIGlmKCFyZXQucmVzdWx0LnN0eWxlX2RlZi5pbmNsdWRlcygnXCInKSkgc3R5bGVkZWYgPSBCYXNlNjQuZGVjb2RlKHJldC5yZXN1bHQuc3R5bGVfZGVmKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0JHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmPyBKU09OLnBhcnNlKHN0eWxlZGVmKToge307XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZik7XHJcblx0XHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmZvckVhY2goYXN5bmMgKGVsZSxpbmRleCkgPT4ge1xyXG5cdFx0XHRcdFx0ZWxlLnNob3c9dHJ1ZTtcclxuXHRcdFx0XHQgICAgaWYoZWxlLnVzZURpY3Q9PXRydWUpeyAvL+WIpOaWrXVzZURpY3TmmK/lkKbkvb/nlKjlrZflhbhcclxuXHRcdFx0XHQgICAgICAgIGF3YWl0IHRoaXMuRGljdEdldEluZm8oZWxlLmJpbmQuZGljdCxpbmRleCwnbWFzdCcpO1xyXG5cdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0aWYoJHRoaXMuaGVhZF9zdHlsZWRlZi5ldmVudD8ubGVuZ3RoPjApe1xyXG5cdFx0XHRcdCAgJHRoaXMuaGVhZF9zdHlsZWRlZi5ldmVudC5mb3JFYWNoKGFzeW5jIChhKT0+eyAgLy/liKTmlq3mmK/lkKbmmK/liJ3lp4vljJbkuovku7ZcclxuXHRcdFx0XHQgICAgaWYoYS5ldmVudF9pZCA9PSBcImluaXRpYWxcIil7XHJcblx0XHRcdFx0ICAgICAgYXdhaXQgdGhpcy5sb2FkSW5pdEV2ZW50KGEuc2NyaXBfaWQsJ2hlYWQnKTtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzFcIixjb250ZW50OnJldC5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHR9KTtcclxuICAgICAgICBcclxuICAgIH0sXHJcbiAgICBhc3luYyBEZXRhaWwxX1VJc3R5bGVHZXRJbmZvKGNsYXNzX2lkLHN0eWxlX2lkKXsgICAvL+iOt+WPluiHquWumuS5ieihqOWNleagt+W8j1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdGNsYXNzX2lkOmNsYXNzX2lkLFxyXG5cdFx0XHR1aV9zdHlsZV9pZDpzdHlsZV9pZCxcclxuXHRcdH07XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnVUlTdHlsZUdldEluZm8nLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgc3R5bGVkZWY9XCJcIjtcclxuXHRcdFx0XHRpZihyZXQucmVzdWx0LnN0eWxlX2RlZil7XHJcblx0XHRcdFx0ICAgICAvL21vYm94MueahHN0eWxlX2RlZuaYr2pzb27lrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIHN0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWYucmVwbGFjZSgvXFxcXC9nLFwiXCIpO1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDPnmoRzdHlsZV9kZWbmmK9iYXNlNjTlrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIGlmKCFyZXQucmVzdWx0LnN0eWxlX2RlZi5pbmNsdWRlcygnXCInKSkgc3R5bGVkZWYgPSBCYXNlNjQuZGVjb2RlKHJldC5yZXN1bHQuc3R5bGVfZGVmKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0JHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmPyBKU09OLnBhcnNlKHN0eWxlZGVmKToge307XHJcblx0XHRcdFx0JHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZi5TZWxCdXRfQ2hlY2tlZCA9IHRydWU7XHJcblx0XHRcdFx0JHRoaXMuZGV0YWlsMV9zdHlsZWRlZi5mb3JtLml0ZW1zLmZvckVhY2goYXN5bmMgKGVsZSxpbmRleCkgPT4ge1xyXG5cdFx0XHRcdCAgICBpZihlbGUudXNlRGljdD09dHJ1ZSl7IC8v5Yik5patdXNlRGljdOaYr+WQpuS9v+eUqOWtl+WFuFxyXG5cdFx0XHRcdCAgICAgICAgYXdhaXQgdGhpcy5EaWN0R2V0SW5mbyhlbGUuYmluZC5kaWN0LGluZGV4LCdzdWInKTtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdGlmKCR0aGlzLmRldGFpbDFfc3R5bGVkZWYuZXZlbnQ/Lmxlbmd0aD4wKXtcclxuXHRcdFx0XHQgICRkZXRhaWwxX3N0eWxlZGVmZm9yRWFjaChhc3luYyAoYSk9PnsgIC8v5Yik5pat5piv5ZCm5piv5Yid5aeL5YyW5LqL5Lu2XHJcblx0XHRcdFx0ICAgIGlmKGEuZXZlbnRfaWQgPT0gXCJpbml0aWFsXCIpe1xyXG5cdFx0XHRcdCAgICAgIGF3YWl0IHRoaXMubG9hZEluaXRFdmVudChhLnNjcmlwX2lkLCdkZXRhaWwnKTtcclxuXHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8vIHZhciBhYSA9IEpTT04uc3RyaW5naWZ5KHRoaXMuZGV0YWlsMV9zdHlsZWRlZik7XHJcblx0XHRcdFx0Ly8gJHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdC5wdXNoKEpTT04ucGFyc2UoYWEpKTtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yXCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzIuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcbiAgICAgICAgXHJcbiAgICB9LFxyXG4gICAgYXN5bmMgRGljdEdldEluZm8oZGljdCxpbmRleCx0eXBlKXsgLy9Nb2JveDPlvpfliLDlvpfliLDlrZflhbjkv6Hmga/lrZflhbjpobnliJfooahcclxuXHRcdHRoaXMuZGF0YT1bXTtcclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YUluZm8gPXtcclxuXHRcdFx0ZGljdF9pZDogZGljdC5pZCxcclxuXHRcdFx0ZGljdF9uYW1lOiBkaWN0Lm5hbWVcclxuXHRcdH07XHJcblx0XHQvLyBjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGljdEdldEluZm8nLGRhdGFJbmZvKS50aGVuKGFzeW5jIChzdWNjZXNzKT0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0aWYgKHN1Y2Nlc3MuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBsaXN0PVtdO1xyXG5cdFx0XHRcdHZhciBpdGVtTmFtZT0nJztcclxuXHRcdFx0XHRzdWNjZXNzLnJlc3VsdC5kaWN0X2l0ZW1fbGlzdC5mb3JFYWNoKChpdGVtKSA9PiB7XHJcblx0XHRcdFx0ICAgIGlmKGl0ZW0uaXNfZGVmYXVsdD09JzEnKVxyXG5cdFx0XHRcdCAgICAgICAgaXRlbU5hbWUgPSBpdGVtLm5hbWU7XHJcblx0XHRcdFx0ICAgIGxpc3QucHVzaCh7XHJcblx0XHRcdFx0ICAgICAgICB0ZXh0Oml0ZW0udmFsdWUsXHJcblx0XHRcdFx0ICAgICAgICB2YWx1ZTppdGVtLm5hbWUsXHJcblx0XHRcdFx0ICAgIH0pO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcclxuXHRcdFx0XHRpZih0eXBlPT0nbWFzdCcpey8v5pyJ6buY6K6k5YC877yM5pi+56S66buY6K6k5YC8XHJcblx0XHRcdFx0XHRpZihpdGVtTmFtZSl7XHJcblx0XHRcdFx0XHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tpbmRleF0udmFsdWU9aXRlbU5hbWU7XHJcblx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zW2luZGV4XS5maWVsZElkO1xyXG5cdFx0XHRcdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0cl0gPSBpdGVtTmFtZTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tpbmRleF0uZGljdD1saXN0O1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRlbHNle1xyXG5cdFx0XHRcdFx0aWYoaXRlbU5hbWUpe1xyXG5cdFx0XHRcdFx0XHQkdGhpcy5kZXRhaWwxX3N0eWxlZGVmLmZvcm0uaXRlbXNbaW5kZXhdLnZhbHVlPWl0ZW1OYW1lO1xyXG5cdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLmRldGFpbDFfc3R5bGVkZWYuZm9ybS5pdGVtc1tpbmRleF0uZmllbGRJZDtcclxuXHRcdFx0XHRcdFx0JHRoaXMuZGV0YWlsMV9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gaXRlbU5hbWU7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQkdGhpcy5kZXRhaWwxX3N0eWxlZGVmLmZvcm0uaXRlbXNbaW5kZXhdLmRpY3Q9bGlzdDtcclxuXHRcdFx0XHRcdGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xLjJcIixjb250ZW50OnN1Y2Nlc3MuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuM1wiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHRhc3luYyBsb2FkSW5pdEV2ZW50KGV2ZW50aWQsdHlwZSl7XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIHN0eWxlZGVmID0gdHlwZT09J2hlYWQnP3RoaXMuaGVhZF9zdHlsZWRlZjp0aGlzLmRldGFpbDFfc3R5bGVkZWY7XHJcblx0XHRpZighZXZlbnRpZC5pbmNsdWRlcygneycpKSBldmVudGlkID0gJ3snK2V2ZW50aWQrJ30nO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHQgICAgICBlZF90eXBlOiAwLFxyXG5cdCAgICAgIHN0YXJ0X3RyYW5zYWN0aW9uOiB0cnVlLFxyXG5cdCAgICAgIGNsYXNzX2lkOiB0aGlzLnBhcmFtLkRhdGFDbHMuaWQsXHJcblx0ICAgICAgZXZlbnRfaWQ6IGV2ZW50aWQsXHJcblx0XHR9O1xyXG5cdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0Ly8gcmV0dXJuO1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3J1bkN1c3RvbUV2ZW50JyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRpZiAoc3VjY2Vzcy5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIGRhdGEgPSBzdWNjZXNzLnJlc3VsdDtcclxuXHRcdFx0XHRpZiAoZGF0YS5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdCAgICB2YXIgdGlwID0gZGF0YS5lcnJfaW5mbyA/IHR5cGVvZiBkYXRhLmVycl9pbmZvID09ICdzdHJpbmcnID8gZGF0YS5lcnJfaW5mbyA6IGRhdGEuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdCAgICBpZiAoZGF0YS5yZXQgPT0gODAxKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHQgICAgZWxzZSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCsnLOaPkOekujonK2RhdGEucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlXHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR2YXIgdGlwID0gZGF0YS5pbmZvID8gdHlwZW9mIGRhdGEuaW5mbyA9PSAnc3RyaW5nJyA/IGRhdGEuaW5mbyA6IGRhdGEuaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XHJcblx0XHRcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25saXN0KTtcclxuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25saXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbmxpc3RbaV07XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnc2V0X2RsZ19hdHRyJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyZXN1bHRbaV0uY2hvaWNlX2xpc3QpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8IHN0eWxlZGVmLmZvcm0uaXRlbXMubGVuZ3RoOyBjKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gc3R5bGVkZWYuZm9ybS5pdGVtc1tjXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHIubmFtZSE9J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBpZihhdHRyLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdGZvcih2YXIgZCBpbiByZXN1bHRbaV0uY2hvaWNlX2xpc3Qpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiQ05fU19WQUxVRVwiOnZhbCxcInRleHRcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLmRpY3QgPSBkaWN0SXRlbUxpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihhdHRyLm5hbWU9PSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgYXR0ci5zZXR0aW5nLmNvbExpc3QuZm9yRWFjaChjb2w9PntcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgaWYoY29sLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0dmFyIGRpY3RJdGVtTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Zm9yKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcIkNOX1NfTkFNRVwiOnZhbCxcIkNOX1NfVkFMVUVcIjp2YWwsXCJ0ZXh0XCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wuZGljdCA9IGRpY3RJdGVtTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgc3R5bGVkZWYuZm9ybS5pdGVtcy5sZW5ndGg7IGMrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gc3R5bGVkZWYuZm9ybS5pdGVtc1tjXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Ly/liKTmlq3ooajljZXph4zmmK/lkKbmnInov5Tlm57lrZfmrrXvvIzmsqHmnInlsLHoo4Xovb3liLBtb2RlbOmHjO+8jOeCueWHu+ehruWumuaPkOS6pOeahOaXtuWAmeW4puS4iui/meS6m+aVsOaNrlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmKCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFtyZXN1bHRbaV0uYXR0cl09PXVuZGVmaW5lZCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFtyZXN1bHRbaV0uYXR0cl09cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQvL+WIpOaWreaYr+WQpuaYr+agheagvOihqOWNlVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHIubmFtZSE9J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgaWYoYXR0ci5maWVsZElkPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIudmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLm9sZHZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0ci5maWVsZElkXSA9cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihhdHRyLm5hbWU9PSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIGF0dHIuc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgIGlmKGNvbCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgaWYoY29sLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC52YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLm9sZHZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wudmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wub2xkdmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbY29sLmZpZWxkSWRdID1yZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZGF0YS5hY3Rpb25baV0uYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cl9zaG93Jykge1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdHJlc3VsdC5mb3JFYWNoKGFzeW5jIChhdHRyLGtleSkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBzdHlsZWRlZi5mb3JtLml0ZW1zLmZvckVhY2goYXN5bmMgKGVsZSxpbmRleCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgIC8v5Yik5pat5piv5ZCm5piv5qCF5qC86KGo5Y2VXHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmKGVsZS5uYW1lIT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoZWxlLmZpZWxkSWQ9PWF0dHIuYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbGUuc2hvdz1hdHRyLnNob3c7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYoZWxlLm5hbWU9PSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRlbGUuc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihjb2wuZmllbGRJZD09YXR0ci5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2wuc2hvdz1hdHRyLnNob3c7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHN0eWxlX2RlZiA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoc3R5bGVkZWYpKTtcclxuXHRcdFx0XHRcdFx0XHRcdGlmKHR5cGU9PSdoZWFkJyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYgPVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmID0gc3R5bGVfZGVmO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5kZXRhaWwxX3N0eWxlZGVmID1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZiA9IHN0eWxlX2RlZjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZik7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuaJp+ihjOWIneWni+WMluS6i+S7tuWksei0pe+8mlwiK2l0ZW0uYWN0aW9uX3R5cGUgKyAn5q2kYWN0aW9u5bCa5pyq5aSE55CG77yBJyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHR9IFxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzNcIixjb250ZW50Olwi5omn6KGM5Yid5aeL5YyW5LqL5Lu25aSx6LSl77yaXCIrc3VjY2Vzcy5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMy4xXCIsY29udGVudDpcIuaJp+ihjOWIneWni+WMluS6i+S7tuWksei0pe+8mlwiK2V4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG5cdH0sXHJcblx0XHJcblx0b250YXAoaXRlbSl7IC8v5omr56CB5Yqf6IO9XHJcblx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxyXG5cdFx0Z2V0QXBwKCkub25TY2FuKChyZXN1bHQpPT57XHJcblx0XHRcdC8vY29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xyXG5cdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XHJcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdGNvbnNvbGUubG9nKGl0ZW0pO1xyXG5cdFx0XHRpZihpdGVtLm9sZHZhbHVlICE9IHJlc3VsdC5kZWNvZGVkYXRhKXtcclxuXHRcdFx0ICAgIGl0ZW0ub2xkdmFsdWUgPSByZXN1bHQuZGVjb2RlZGF0YTtcclxuXHRcdFx0XHRpdGVtLnZhbHVlID0gcmVzdWx0LmRlY29kZWRhdGE7XHJcblx0XHRcdFx0dmFyIGF0dHIgPSBpdGVtLmZpZWxkSWQ7XHJcblx0XHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gcmVzdWx0LmRlY29kZWRhdGE7XHJcblx0XHRcdFx0aWYocmVzdWx0LmRlY29kZWRhdGEpeyAvL+esrOS4gOS4qui+k+WFpeahhuS4jeS4uuepulxyXG5cdFx0XHRcdFx0JHRoaXMuZm9jdXNNYXRlcmlhID0gdHJ1ZTsgLy/liJ3lp4vljJbvvIznrKzkuozkuKrovpPlhaXmoYZmb2N1c+WxnuaAp1xyXG5cdFx0XHRcdFx0Ly8gc2V0VGltZW91dChmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0Ly8gXHQkdGhpcy5mb2N1c01hdGVyaWE9dHJ1ZTsgLy/nrKzkuozkuKrovpPlhaXmoYbojrflj5bnhKbngrlcclxuXHRcdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0XHRcdFx0fSwxMDAwKTtcclxuXHRcdFx0XHRcdC8vIH0sNTAwKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHljLrkuovku7bohJrmnKxcclxuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLklucHV0X0NoYW5nZV9FdmVudC5JRDtcclxuXHRcdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHQgICAgICAgIHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0XHQgICAgICAgIC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHRcdFx0ICAgICAgICB2YXIgcmVxID0gT2JqZWN0LmtleXMob2JqX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdFx0ICAgICAgICBcdGF0dHI6IGEsXHJcblx0XHRcdCAgICAgICAgXHR2YWx1ZTogb2JqX2F0dHJbYV0gfHwgXCJcIixcclxuXHRcdFx0ICAgICAgICB9KSk7XHJcblx0XHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHRcdCAgICAgICAgICAgIGVkdHlwZTogXCI3XCIsLy9cIjBcIixcclxuXHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICdNQk9YJywvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcclxuXHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdFx0XHRcdFx0bWFzdF9hdHRyOiBbXSxcclxuXHRcdFx0XHRcdFx0aW5wdXRQYXJhbXRlcjpbeyBhdHRyOiAnbWFzdF9pbnB1dF8zMDM3JywgdmFsdWU6IHJlc3VsdC5kZWNvZGVkYXRhIH1dXHJcblx0XHRcdCAgICAgICAgfVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdCAgICAgICAgdGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcclxuXHRcdFx0ICAgIH1cclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdG9uZXZlbnQoaXRlbSl7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0Y29uc29sZS5sb2coaXRlbSk7XHJcblx0XHRpZihpdGVtLm9sZHZhbHVlICE9IGl0ZW0udmFsdWUpe1xyXG5cdFx0ICAgIGl0ZW0ub2xkdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHR2YXIgYXR0ciA9IGl0ZW0uZmllbGRJZDtcclxuXHRcdFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHljLrkuovku7bohJrmnKxcclxuXHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5JbnB1dF9DaGFuZ2VfRXZlbnQuSUQ7XHJcblx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHQgICAgICAgIHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0ICAgICAgICAvLyBjb25zb2xlLmxvZyhvYmpfYXR0cik7XHJcblx0XHQgICAgICAgIHZhciByZXEgPSBPYmplY3Qua2V5cyhvYmpfYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdFx0ICAgICAgICBcdGF0dHI6IGEsXHJcblx0XHQgICAgICAgIFx0dmFsdWU6IG9ial9hdHRyW2FdIHx8IFwiXCIsXHJcblx0XHQgICAgICAgIH0pKTtcclxuXHRcdCAgICAgICAgdmFyIGluZm8gPSB7XHJcblx0XHQgICAgICAgICAgICBldmVudGlkOiBldmVudGlkLFxyXG5cdFx0ICAgICAgICAgICAgZWR0eXBlOiBcIjdcIiwvL1wiMFwiLFxyXG5cdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdCAgICAgICAgICAgIGNsc2lkOiAnTUJPWCcsLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXHJcblx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdCAgICAgICAgXHRtYXN0X2F0dHI6IFtdLFxyXG5cdFx0ICAgICAgICBcdGlucHV0UGFyYW10ZXI6W3sgYXR0cjogJ21hc3RfaW5wdXRfMzAzNycsIHZhbHVlOiBpdGVtLnZhbHVlIH1dXHJcblx0XHQgICAgICAgIH1cclxuXHRcdCAgICAgICAgXHJcblx0XHQgICAgICAgIHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XHJcblx0XHQgICAgfVxyXG5cdFx0fVxyXG5cdFx0XHJcblx0fSxcclxuXHRvbmNoYW5nZShpdGVtKSB7XHJcblx0XHRjb25zb2xlLmxvZyhpdGVtKTtcclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRjb25zb2xlLmxvZyhpdGVtKTtcclxuXHRcdGlmKGl0ZW0ub2xkdmFsdWUgIT0gaXRlbS52YWx1ZSl7XHJcblx0XHQgICAgaXRlbS5vbGR2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdHZhciBhdHRyID0gaXRlbS5maWVsZElkO1xyXG5cdFx0XHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0cl0gPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHR2YXIgZXZlbnRpZCA9IGl0ZW0uYmluZC5vbkNoYW5nZUV2ZW50LmlkOyAgIC8v5YaF5a655Y+Y5YyW5ZCO5LqL5Lu2XHJcblx0XHRcdGlmIChldmVudGlkKSB7XHJcblx0XHQgICAgICAgIC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcclxuXHRcdCAgICAgICAgdmFyIG9ial9hdHRyID0gdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWw7XHJcblx0XHQgICAgICAgIC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHRcdCAgICAgICAgdmFyIHJlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHQgICAgICAgIFx0YXR0cjogYSxcclxuXHRcdCAgICAgICAgXHR2YWx1ZTogb2JqX2F0dHJbYV0gfHwgXCJcIixcclxuXHRcdCAgICAgICAgfSkpO1xyXG5cdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdCAgICAgICAgICAgIGV2ZW50aWQ6IGV2ZW50aWQsXHJcblx0XHQgICAgICAgICAgICBlZHR5cGU6IFwiMFwiLFxyXG5cdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdCAgICAgICAgICAgIHJjbHNpZDogJycsXHJcblx0XHQgICAgICAgICAgICByb2JqaWQ6ICcnLFxyXG5cdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdCAgICAgICAgICAgIGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXHJcblx0XHQgICAgICAgICAgICBvYmppZDogXCJcIixcclxuXHRcdCAgICAgICAgICAgIGF0dHI6IHJlcSxcclxuXHRcdCAgICAgICAgfVxyXG5cdFx0ICAgICAgICB0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcclxuXHRcdCAgICB9XHJcblx0XHR9XHJcblx0XHRcclxuXHR9LFxyXG5cdHNjYW5fb250YXAoZSl7IC8v5omr56CB5Yy65omr56CB5Yqf6IO9XHJcblx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxyXG5cdFx0Z2V0QXBwKCkub25TY2FuKChyZXN1bHQpPT57XHJcblx0XHRcdGNvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcclxuXHRcdFx0dmFyIGlzZmxhZz10cnVlO1xyXG5cdFx0XHRmb3IodmFyIGkgaW4gdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Qpe1xyXG5cdFx0XHRcdGlmKHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2ldLnNjYW5Db2RlVmFsID09IHJlc3VsdC5kZWNvZGVkYXRhKSBcclxuXHRcdFx0XHRcdGlzZmxhZz1mYWxzZTtcclxuXHRcdFx0fVxyXG5cdFx0XHQvL+WtkOaVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxyXG5cdFx0XHRpZiAoaXNmbGFnKSB7XHJcblx0XHRcdFx0dW5pLmhpZGVLZXlib2FyZCgpO1xyXG5cdFx0XHRcdHRoaXMuJGRhdGEuc2NhbkNvZGVWYWw9cmVzdWx0LmRlY29kZWRhdGE7XHJcblx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5JbnB1dF9DaGFuZ2VfRXZlbnQuSUQ7XHJcblx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcclxuXHRcdFx0XHRcdC8v5Li75pWw5o2u57G75bGe5oCnXHJcblx0XHRcdFx0XHR2YXIgb2JqX2F0dHIgPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHRcdFx0XHRcdHZhciBtYXN0X3JlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHRcdFx0XHRcdGF0dHI6IGEsXHJcblx0XHRcdFx0XHRcdHZhbHVlOiBvYmpfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0XHRcdFx0fSkpO1xyXG5cdFx0XHRcdFx0dmFyIG9ial9hdHRyMiA9IHRoaXMuZGV0YWlsMV9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0XHRcdFx0dmFyIHJlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyMikubWFwKChhKSA9PiAoe1xyXG5cdFx0XHRcdFx0XHRhdHRyOiBhLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTogb2JqX2F0dHIyW2FdIHx8IFwiXCIsXHJcblx0XHRcdFx0XHR9KSk7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0ICAgICAgICB2YXIgaW5mbyA9IHtcclxuXHRcdFx0ICAgICAgICAgICAgZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0ICAgICAgICAgICAgZWR0eXBlOiAnNycsLy9cIjBcIixcclxuXHRcdFx0ICAgICAgICAgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgcmNsc2lkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgcm9iamlkOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0ICAgICAgICAgICAgY2xzaWQ6ICdNQk9YJywvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcclxuXHRcdFx0ICAgICAgICAgICAgb2JqaWQ6IFwiXCIsXHJcblx0XHRcdCAgICAgICAgICAgIGF0dHI6IG1hc3RfcmVxLFxyXG5cdFx0XHRcdFx0XHRzdWJfYXR0cjogcmVxLFxyXG5cdFx0XHRcdFx0XHRpbnB1dFBhcmFtdGVyOlt7IGF0dHI6ICdpbnB1dF8zMDM3JywgdmFsdWU6IHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwgfV1cclxuXHRcdFx0ICAgICAgICB9XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0ICAgICAgICB0aGlzLnNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIFwiXCIpO1xyXG5cdFx0XHQgICAgfVxyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH0sXHJcblx0c2Nhbl9vbmV2ZW50KGUpe1xyXG5cdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQpO1xyXG5cdFx0aWYoZS50YXJnZXQudmFsdWUpe1xyXG5cdFx0XHR2YXIgaXNmbGFnPXRydWU7XHJcblx0XHRcdGZvcih2YXIgaSBpbiB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdCl7XHJcblx0XHRcdFx0aWYodGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbaV0uc2NhbkNvZGVWYWwgPT0gZS50YXJnZXQudmFsdWUpIFxyXG5cdFx0XHRcdFx0aXNmbGFnPWZhbHNlO1xyXG5cdFx0XHR9XHJcblx0XHRcdC8v5a2Q5pWw5o2u57G75omr56CB5p+l6K+i5pWw5o2uXHJcblx0XHRcdGlmIChpc2ZsYWcpIHtcclxuXHRcdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XHJcblx0XHRcdFx0dGhpcy4kZGF0YS5zY2FuQ29kZVZhbD1lLnRhcmdldC52YWx1ZTtcclxuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLklucHV0X0NoYW5nZV9FdmVudC5JRDtcclxuXHRcdFx0XHRpZiAoZXZlbnRpZCkge1xyXG5cdFx0XHRcdFx0Ly/kuLvmlbDmja7nsbvlsZ7mgKdcclxuXHRcdFx0XHRcdHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cob2JqX2F0dHIpO1xyXG5cdFx0XHRcdFx0dmFyIG1hc3RfcmVxID0gT2JqZWN0LmtleXMob2JqX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdFx0XHRcdFx0YXR0cjogYSxcclxuXHRcdFx0XHRcdFx0dmFsdWU6IG9ial9hdHRyW2FdIHx8IFwiXCIsXHJcblx0XHRcdFx0XHR9KSk7XHJcblx0XHRcdFx0XHQvLyB2YXIgaW5wdXRfcGFyYW0gPSBCYXNlNjQuZW5jb2RlKFxyXG5cdFx0XHRcdFx0Ly8gICBKU09OLnN0cmluZ2lmeShcclxuXHRcdFx0XHRcdC8vICAgICBPYmplY3Qua2V5cyhvYmpfYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdFx0XHRcdFx0Ly8gICAgICAgYXR0cjogYSxcclxuXHRcdFx0XHRcdC8vICAgICAgIHZhbHVlOiBvYmpfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0XHRcdFx0Ly8gICAgIH0pKVxyXG5cdFx0XHRcdFx0Ly8gICApXHJcblx0XHRcdFx0XHQvLyApO1xyXG5cdFx0XHRcdFx0dmFyIG9ial9hdHRyMiA9IHRoaXMuZGV0YWlsMV9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0XHRcdFx0dmFyIHJlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyMikubWFwKChhKSA9PiAoe1xyXG5cdFx0XHRcdFx0XHRhdHRyOiBhLFxyXG5cdFx0XHRcdFx0XHR2YWx1ZTogb2JqX2F0dHIyW2FdIHx8IFwiXCIsXHJcblx0XHRcdFx0XHR9KSk7XHJcblx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcclxuXHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcclxuXHRcdFx0XHRcdFx0ZWR0eXBlOiAnNycsLy9cIjBcIixcclxuXHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcclxuXHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcclxuXHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcclxuXHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcclxuXHRcdFx0XHRcdFx0Y2xzaWQ6ICdNQk9YJywvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcclxuXHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXHJcblx0XHRcdCAgICAgICAgICAgIGF0dHI6IG1hc3RfcmVxLFxyXG5cdFx0XHRcdFx0XHRzdWJfYXR0cjogcmVxLFxyXG5cdFx0XHRcdFx0XHRpbnB1dFBhcmFtdGVyOlt7IGF0dHI6ICdpbnB1dF8zMDM3JywgdmFsdWU6IHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwgfV1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0dGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHR9LFxyXG5cdG9uTW9kZWxWYWx1ZShpdGVtKSB7IC8v57uR5a6aTW9kZWzlgLxcclxuXHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXHJcblx0XHR2YXIgYXR0ciA9IGl0ZW0uZmllbGRJZDtcclxuXHRcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IGl0ZW0udmFsdWU7XHJcblx0fSxcclxuXHRwYW5lbF9kZWwoaW5kZXgpeyAvL+mdouadv+WIoOmZpFxyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdGlmICh0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtpbmRleF0uc2NhbkNvZGVWYWwgPT0gdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCkge1xyXG5cdFx0XHR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsPScnO1xyXG5cdFx0fVxyXG5cdFx0aWYoIXRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2luZGV4XS5PYmpJRClcclxuXHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3Quc3BsaWNlKGluZGV4LCAxKTtcclxuXHRcdGVsc2V7XHJcblx0XHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdFx0Y2xhc3NfaWQ6dGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxyXG5cdFx0XHRcdGNsYXNzX25hbWU6JycsXHJcblx0XHRcdFx0b2JqX2lkOnRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2luZGV4XS5PYmpJRFxyXG5cdFx0XHR9O1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHRcdC8vIHJldHVybjtcclxuXHRcdFx0dW5pLnNob3dMb2FkaW5nKHsgdGl0bGU6XCLliqDovb3kuK0uLi5cIiB9KTtcclxuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2RhdGFPYmpEZWwnLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHRcdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5zcGxpY2UoaW5kZXgsIDEpO1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi5Yig6Zmk5oiQ5Yqf77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzlcIixjb250ZW50OnN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLo5LjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0fSxcclxuXHRzY2FuX2NsYXNzQXR0cl9leHRCdXR0b24oZSl7IC8v6YCJ5oup5oyJ6ZKu5YmNXHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIEJlZm9yZV9TZWxlY3RfRXZlbnQgPSAkdGhpcy4kZGF0YS5wYXJhbS5TY2FuX0NvZGUuQmVmb3JlX1NlbGVjdF9FdmVudDtcclxuXHRcdGlmKCFCZWZvcmVfU2VsZWN0X0V2ZW50KXtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi6YCJ5oup5YmN5LqL5Lu25Li656m677yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdHJldHVybjtcclxuXHRcdH1cclxuXHRcdHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0Ly8gY29uc29sZS5sb2cob2JqX2F0dHIpO1xyXG5cdFx0dmFyIG1hc3RfYXR0ciA9IE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHRcdGF0dHI6IGEsXHJcblx0XHRcdHZhbHVlOiBvYmpfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0fSkpO1xyXG5cdFx0dmFyIG9iamVjdHM9W107XHJcblx0XHR2YXIgc3ViUGFuZWxMaXN0ID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0O1xyXG5cdFx0Zm9yICh2YXIgcyA9IDA7IHMgPCBzdWJQYW5lbExpc3QubGVuZ3RoOyBzKyspIHtcclxuXHRcdFx0dmFyIGRldGFpbF9hdHRyPXt9O1xyXG5cdFx0XHRzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyLmZvcm0uaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuXHRcdFx0ICAgIGlmKGl0ZW0ubmFtZSA9PSBcIkxheW91dFwiKXsgIC8v5Yik5pat5piv5ZCm5piv5qCF5qCP5qC85byPXHJcblx0XHRcdCAgICAgIGl0ZW0uc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29scyA9PiB7XHJcblx0XHRcdCAgICAgICAgaWYoY29scyE9bnVsbCkgZGV0YWlsX2F0dHJbY29scy5maWVsZElkXSA9IGNvbHMudmFsdWU7XHJcblx0XHRcdCAgICAgIH0pO1xyXG5cdFx0XHQgICAgfWVsc2VcclxuXHRcdFx0ICAgICAgZGV0YWlsX2F0dHJbaXRlbS5maWVsZElkXSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdH0pO1xyXG5cdFx0XHR2YXIgc3ViX3JlcSA9IE9iamVjdC5rZXlzKGRldGFpbF9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHRcdFx0YXR0cjogYSxcclxuXHRcdFx0XHR2YWx1ZTogZGV0YWlsX2F0dHJbYV0gfHwgXCJcIixcclxuXHRcdFx0fSkpO1xyXG5cdFx0XHRvYmplY3RzLnB1c2goe1xyXG5cdFx0XHRcdG9ial9pZDpzdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwsXHJcblx0XHRcdFx0b2JqX2F0dHJzOnN1Yl9yZXFcclxuXHRcdFx0fSk7XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdHZhciByZXE9W107XHJcblx0XHR2YXIgZW52aXJvbWVudCA9IHtcclxuXHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcclxuXHRcdFx0Y2xzX2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCAgICAgLy8g5Yqf6IO954K55LuO5pWw5o2u57G75qCH6K+GXHJcblx0XHRcdCdidXR0b24nOiAndG9wJywgLy8gdG9wL2JvdHRvbVxyXG5cdFx0XHRidXR0b25fbmFtZTogJ+aWsOWinicsXHJcblx0XHRcdGVkaXRfZGxnOiB7XHJcblx0XHRcdFx0dHlwZTogJ3NtYWxsJywgLy/lsI/nqpflj6NcclxuXHRcdFx0XHRjbGFzc19pZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwvL+W9k+WJjeaVsOaNruexu2lkXHJcblx0XHRcdH0sXHJcblx0XHRcdG1hc3Rlcl9jbHM6IHtcclxuXHRcdFx0XHRjbHNfbmFtZTogJ01CT1gnLCAvLyR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuTmFtZSxcclxuXHRcdFx0XHRvYmpfYXR0cnM6IG1hc3RfYXR0clxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzdWJfY2xzOiB7XHJcblx0XHRcdFx0Y2xzX25hbWU6ICdNQk9YJywgLy8kdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLk5hbWUsXHJcblx0XHRcdFx0b2JqZWN0czogb2JqZWN0c1xyXG5cdFx0XHR9XHJcblx0XHRcdFxyXG5cdFx0fTtcclxuXHRcdFxyXG5cdFx0dmFyIGluZm8gPSB7XHJcblx0XHQgICAgZXZlbnRpZDogQmVmb3JlX1NlbGVjdF9FdmVudC5JRCxcclxuXHRcdCAgICBlZHR5cGU6IFwiN1wiLC8vXCIwXCIsXHJcblx0XHQgICAgcHJvamVjdGlkOiAnJyxcclxuXHRcdCAgICByY2xzaWQ6ICcnLFxyXG5cdFx0ICAgIHJvYmppZDogJycsXHJcblx0XHQgICAgdXNlcmxvZ2luOiAnJyxcclxuXHRcdCAgICBjbHNpZDogJ01CT1gnLC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxyXG5cdFx0ICAgIG9iamlkOiBcIlwiLFxyXG5cdFx0ICAgIGF0dHI6IFtdLFxyXG5cdFx0XHRnbG9iYWxfYXR0cjogcmVxLFxyXG5cdFx0XHRtYXN0X2F0dHI6IG1hc3RfYXR0cixcclxuXHRcdFx0aW5wdXRQYXJhbXRlcjogbWFzdF9hdHRyLFxyXG5cdFx0XHRlbnZpcm9tZW50OiBlbnZpcm9tZW50XHJcblx0XHR9XHJcblx0XHQvLyBjb25zb2xlLmxvZyhpbmZvKTtcclxuXHRcdHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XHJcblx0fSxcclxuXHRwb3B1cENoYW5nZShlKSB7XHJcblx0XHRjb25zb2xlLmxvZygn5b2T5YmN5qih5byP77yaJyArIGUudHlwZSArICcs54q25oCB77yaJyArIGUuc2hvdyk7XHJcblx0fSxcclxuXHRjaGVja0NoYW5nZShlKXsgLy/lvLnmoYZjaGVja+mAieaLqVxyXG5cdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQuZGF0YXNldCk7XHJcblx0XHR2YXIgaW5kZXggPSBlLnRhcmdldC5kYXRhc2V0LmluZGV4O1xyXG5cdFx0dmFyIGlzY2hlY2sgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2s7XHJcblx0XHR2YXIgZGF0YSA9IHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcztcclxuXHRcdC8vIHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcz1bXTtcclxuXHRcdGlmKHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5tdWx0aXBsZV9jaG9pY2U9PVwiMFwiKXsgLy/liKTmlq3ml7bljZXpgInov5jmmK/lpJrpgIlcclxuXHRcdFx0Zm9yKHZhciBpIGluIGRhdGEpe1xyXG5cdFx0XHRcdGRhdGFbaV0uY2hlY2s9ZmFsc2U7XHJcblx0XHRcdH1cclxuXHRcdH1cclxuXHRcdGRhdGFbaW5kZXhdLmNoZWNrPWlzY2hlY2s/ZmFsc2U6dHJ1ZTtcclxuXHRcdHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcz1kYXRhO1xyXG5cdFx0XHJcblx0fSxcclxuXHRwb3B1cF9jYW5jZWwoZSl7IC8v5by55qGG5Y+W5raIXHJcblx0XHR0aGlzLiRyZWZzLnBvcHVwLmNsb3NlKCk7XHJcblx0fSxcclxuXHRwb3B1cF9zYXZhKGUpeyAvL+W8ueahhuehruWumiDpgInmi6nmjInpkq7lkI5cclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgQWZ0ZXJfU2VsZWN0X0V2ZW50ID0gJHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLkFmdGVyX1NlbGVjdF9FdmVudDtcclxuXHRcdGlmKCFBZnRlcl9TZWxlY3RfRXZlbnQpe1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLpgInmi6nlkI7kuovku7bkuLrnqbrvvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0cmV0dXJuO1xyXG5cdFx0fVxyXG5cdFx0dmFyIGl0ZW1zID0gJHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcztcclxuXHRcdHZhciBkYXRhPVtdO1xyXG5cdFx0dmFyIG5hbWU9XCJcIjtcclxuXHRcdGZvciAodmFyIGkgPSAwOyBpIDwgaXRlbXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0aWYoaXRlbXNbaV0uY2hlY2s9PXRydWUpe1xyXG5cdFx0XHRcdGlmKG5hbWUpXHJcblx0XHRcdFx0XHRuYW1lKz0nOyc7XHJcblx0XHRcdFx0bmFtZSs9aXRlbXNbaV0ubmFtZTtcclxuXHRcdFx0XHRkYXRhLnB1c2goe2lkOml0ZW1zW2ldLmlkLG5hbWU6aXRlbXNbaV0ubmFtZX0pO1xyXG5cdFx0XHR9XHJcblx0XHR9XHJcblx0XHRpZihkYXRhLmxlbmd0aD09MCl7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuacqumAieaLqeaVsOaNru+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRyZXR1cm47XHJcblx0XHR9XHJcblx0XHR2YXIgb2JqX2F0dHIgPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHRcdC8vIGNvbnNvbGUubG9nKG9ial9hdHRyKTtcclxuXHRcdHZhciBtYXN0X2F0dHIgPSBPYmplY3Qua2V5cyhvYmpfYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdFx0XHRhdHRyOiBhLFxyXG5cdFx0XHR2YWx1ZTogb2JqX2F0dHJbYV0gfHwgXCJcIixcclxuXHRcdH0pKTtcclxuXHRcdFxyXG5cdFx0JHRoaXMuJGRhdGEuc2NhbkNvZGVWYWw9bmFtZTtcclxuXHRcdHZhciBpbmZvID0ge1xyXG5cdFx0ICAgIGV2ZW50aWQ6IEFmdGVyX1NlbGVjdF9FdmVudC5JRCxcclxuXHRcdCAgICBlZHR5cGU6IFwiN1wiLFxyXG5cdFx0ICAgIHByb2plY3RpZDogJycsXHJcblx0XHQgICAgcmNsc2lkOiAnJyxcclxuXHRcdCAgICByb2JqaWQ6ICcnLFxyXG5cdFx0XHR1c2VybG9naW46ICcnLFxyXG5cdFx0XHRjbHNpZDogJ01CT1gnLFxyXG5cdFx0XHRvYmppZDogXCJcIixcclxuXHRcdFx0YXR0cjogW3thdHRyOiAnbWFzdF9pbnB1dF8zMDM3Jyx2YWx1ZTogbmFtZX1dLFxyXG5cdFx0XHRnbG9iYWxfYXR0cjogbWFzdF9hdHRyLFxyXG5cdFx0XHRpbnB1dFBhcmFtdGVyOiBkYXRhLFxyXG5cdFx0XHRlbnZpcm9tZW50OiAnJ1xyXG5cdFx0fVxyXG5cdFx0Ly8gY29uc29sZS5sb2coaW5mbyk7XHJcblx0XHR0aGlzLnNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIFwiXCIpO1xyXG5cdFx0dGhpcy4kcmVmcy5wb3B1cC5jbG9zZSgpO1xyXG5cdH0sXHJcblx0b25QYW5lbENsaWNrKHZhbHVlKXsgLy/ngrnlh7vpnaLmnb/pq5jkuq7mmL7npLpcclxuXHRcdC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcclxuXHQgICAgdGhpcy5hY3RpdmVsaXN0LmZvckVhY2goZWxlPT57XHJcblx0ICAgICAgICBlbGUuYWN0aXZlID0gZmFsc2U7XHJcblx0ICAgIH0pO1xyXG5cdCAgICB0aGlzLmFjdGl2ZWxpc3RbdmFsdWVdLmFjdGl2ZSA9IHRydWU7XHJcblx0fSxcclxuXHRcclxuXHREYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyxkYXRhX2F0dHIpe1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBlbnZpcm9tZW50ID0ge1xyXG5cdFx0ICAgICdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHQgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsICAgICAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4ZcclxuXHRcdCAgICAnYnV0dG9uJzogJ3RvcCcsICAgLy8gdG9wL2JvdHRvbVxyXG5cdFx0ICAgIGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcclxuXHRcdCAgICBtYXN0ZXI6IHtcclxuXHRcdCAgICAgICAgY2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXHJcblx0XHQgICAgICAgIC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcclxuXHRcdCAgICB9XHJcblx0XHR9O1xyXG5cdFx0ZW52aXJvbWVudC5lZGl0X2RsZyA9IHtcclxuXHRcdCAgICB0eXBlOiAnc21hbGwnLC8v5bCP56qX5Y+jXHJcblx0XHQgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwvL+W9k+WJjeaVsOaNruexu2lkXHJcblx0XHR9XHJcblx0XHRpZiAoZGF0YV9hdHRyKSB7XHJcblx0XHQgICAgZW52aXJvbWVudC5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7Ly/miYDlsZ7nmoTooajljZXmjqfku7ZcclxuXHRcdCAgICAgICAgbmFtZTogZGF0YV9hdHRyLk5hbWUsLy/lrZfmrrXlsZ7mgKdcclxuXHRcdCAgICAgICAgdGV4dDogZGF0YV9hdHRyLkRpc3BOYW1lLC8v5pi+56S65paH5pysXHJcblx0XHQgICAgICAgIGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsLy/lsZ7mgKfnu4RcclxuXHRcdCAgICAgICAgdHlwZTogZGF0YV9hdHRyLlR5cGUsLy/lrZfmrrXnsbvlnotcclxuXHRcdCAgICAgICAgcmVhZG9ubHk6IGRhdGFfYXR0ci5SZWFkT25seSwvL+aYr+WQpuWPquivu1xyXG5cdFx0ICAgICAgICBidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywvL+W8leeUqOaMiemSrueahOWbvuagh1xyXG5cdFx0ICAgICAgICBidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXHJcblx0XHQgICAgfVxyXG5cdFx0fVxyXG5cdFx0Ly8gdmFyIGRhdGFJbmZvID0ge1xyXG5cdCAvLyAgICAgICAgZWR0eXBlOiBpbmZvLmVkdHlwZSwgZXZlbnRpZDogaW5mby5ldmVudGlkLCBwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLnJlcGxhY2UoJ3snLCcnKS5yZXBsYWNlKCd9JywnJyksXHJcblx0IC8vICAgICAgICByY2xzaWQ6IGluZm8ucmNsc2lkLCByb2JqaWQ6IGluZm8ucm9iamlkLCB1c2VybG9naW46IGluZm8udXNlcmxvZ2luLCBjbHNpZDogaW5mby5jbHNpZCwgb2JqaWQ6IGluZm8ub2JqaWQsXHJcblx0IC8vICAgICAgICBhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLCBleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSwgaW5wdXRwYXJhbWV0ZXI6ICcnLCBnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcclxuXHQgLy8gICAgfVxyXG5cdFx0ZW52aXJvbWVudCA9IEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCkpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0XHR2YXIgZ2xvYmFsX2F0dHIgPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpKTsvL+WwhuWtl+espuS4sui9rOaNouS4umJhc2U2NOe8lueggVxyXG5cdFx0aWYoaW5mby5kYXRhSnNvbilcclxuXHRcdFx0aW5mby5kYXRhSnNvbiA9IEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoaW5mby5kYXRhSnNvbikpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0XHR2YXIgb2JqX2F0dHI9e307XHJcblx0XHRpbmZvLmF0dHIuZm9yRWFjaChpdGVtPT57XHJcblx0XHRcdG9ial9hdHRyW2l0ZW0uYXR0cl0gPSBpdGVtLnZhbDtcclxuXHRcdH0pO1xyXG5cdFx0aWYoIWluZm8uZXZlbnRpZC5pbmNsdWRlcygneycpKSBpbmZvLmV2ZW50aWQgPSAneycraW5mby5ldmVudGlkKyd9JztcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHQgIGVkX3R5cGU6IGluZm8uZWR0eXBlLFxyXG5cdFx0ICBzdGFydF90cmFuc2FjdGlvbjogdHJ1ZSxcclxuXHRcdCAgY2xhc3NfaWQ6IGluZm8uY2xzaWQsXHJcblx0XHQgIGNsYXNzX25hbWU6ICcnLFxyXG5cdFx0ICBldmVudF9pZDogaW5mby5ldmVudGlkLFxyXG5cdFx0ICBldmVudF9uYW1lOiAnJyxcclxuXHRcdCAgZGF0YV9vYmpfaWQ6IGluZm8ub2JqaWQsXHJcblx0XHQgIG9ial9hdHRyOiBvYmpfYXR0cixcclxuXHRcdCAgcHJqX2lkOiBpbmZvLnByb2plY3RpZCxcclxuXHRcdCAgcmVmX2Nsc19pZDogaW5mby5yY2xzaWQsXHJcblx0XHQgIHJlbF9vYmpfaWQ6IGluZm8ucm9iamlkLFxyXG5cdFx0ICB1c2VyX2xvZ2luOiBpbmZvLnVzZXJsb2dpbixcclxuXHRcdCAgZGF0YV9qc29uOiBpbmZvLmRhdGFKc29uLFxyXG5cdFx0ICBjb21wb3NlX2luZm86ICcnLFxyXG5cdFx0ICBleHRfaW5mbzogZW52aXJvbWVudCxcclxuXHRcdCAgZ2xvYmFsX2F0dHI6IGdsb2JhbF9hdHRyLFxyXG5cdFx0ICBpbnB1dF9wYXJhbTogJycsXHJcblx0XHR9O1xyXG5cdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0Ly8gcmV0dXJuO1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3J1bkN1c3RvbUV2ZW50JyxkYXRhSW5mbykudGhlbihzdWNjZXNzPT57XHJcblx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHRpZiAoc3VjY2Vzcy5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIGRhdGEgPSBzdWNjZXNzLnJlc3VsdDtcclxuXHRcdFx0XHRpZiAoZGF0YS5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdCAgICB2YXIgdGlwID0gZGF0YS5lcnJfaW5mbyA/IHR5cGVvZiBkYXRhLmVycl9pbmZvID09ICdzdHJpbmcnID8gZGF0YS5lcnJfaW5mbyA6IGRhdGEuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdCAgICBpZiAoZGF0YS5yZXQgPT0gODAxKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHQgICAgZWxzZSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCsnLOaPkOekujonK2RhdGEucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlXHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR2YXIgdGlwID0gZGF0YS5pbmZvID8gdHlwZW9mIGRhdGEuaW5mbyA9PSAnc3RyaW5nJyA/IGRhdGEuaW5mbyA6IGRhdGEuaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XHJcblx0XHRcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25saXN0KTtcclxuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25saXN0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbmxpc3RbaV07XHJcblx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnc2V0X2RsZ19hdHRyJykge1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tjXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKGF0dHIubmFtZSE9J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBpZihhdHRyLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHR2YXIgZGljdEl0ZW1MaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdGZvcih2YXIgZCBpbiByZXN1bHRbaV0uY2hvaWNlX2xpc3Qpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1wiQ05fU19OQU1FXCI6dmFsLFwiQ05fU19WQUxVRVwiOnZhbCxcInRleHRcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLmRpY3QgPSBkaWN0SXRlbUxpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZihhdHRyLm5hbWU9PSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgYXR0ci5zZXR0aW5nLmNvbExpc3QuZm9yRWFjaChjb2w9PntcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgaWYoY29sLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0dmFyIGRpY3RJdGVtTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Zm9yKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcIkNOX1NfTkFNRVwiOnZhbCxcIkNOX1NfVkFMVUVcIjp2YWwsXCJ0ZXh0XCI6dmFsLFwidmFsdWVcIjp2YWx9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wuZGljdCA9IGRpY3RJdGVtTGlzdDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtcy5sZW5ndGg7IGMrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zW2NdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGF0dHJbal0uTmFtZSsnPT0nK3Jlc3VsdFtpXS5hdHRyKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZihhdHRyLm5hbWUhPSdMYXlvdXQnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIGlmKGF0dHIuZmllbGRJZD09cmVzdWx0W2ldLmF0dHIpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLnZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIub2xkdmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci5vbGR2YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHIuZmllbGRJZF0gPXJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYoYXR0ci5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBhdHRyLnNldHRpbmcuY29sTGlzdC5mb3JFYWNoKGNvbD0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIGlmKGNvbC5maWVsZElkPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wudmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLm9sZHZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0JHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2NvbC5maWVsZElkXSA9cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgfVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGRhdGEuYWN0aW9uW2ldLmFjdGlvbl90eXBlID09ICdzZXRfZ2xvYmFsX2F0dHInKSB7XHJcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5nbG9iYWxfYXR0ciA9IGRhdGEuYWN0aW9uW2ldLnZhbHVlIHx8IFtdO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcclxuXHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xyXG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xyXG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtc1tjXTtcclxuXHRcdFx0XHRcdFx0XHRcdGlmKGF0dHIubmFtZSE9J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBpZihhdHRyLmZpZWxkSWQ9PXJlc3VsdFtpXS5hdHRyKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgXHRhdHRyLnZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBcdGF0dHIudmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHQgIFx0YXR0ci5vbGR2YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgXHQkdGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0ci5maWVsZElkXSA9cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICB9XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYoYXR0ci5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHQgIGF0dHIuc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgaWYoY29sKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgICAgIGlmKGNvbC5maWVsZElkPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgICBcdGNvbC52YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wub2xkdmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdCAgICAgIFx0Y29sLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgICAgXHRjb2wub2xkdmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHQgICAgICBcdCR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFtjb2wuZmllbGRJZF0gPXJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdCAgICAgIH1cclxuXHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHQgIH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0XHRcdFx0XHRcdGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbiAocykge1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxyXG5cdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzNcIixjb250ZW50OnN1Y2Nlc3MuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzMuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHRzY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLGRhdGFfYXR0cil7XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIG9ial9hdHRyPXt9O1xyXG5cdFx0aW5mby5hdHRyLmZvckVhY2goaXRlbT0+e1xyXG5cdFx0XHRvYmpfYXR0cltpdGVtLmF0dHJdID0gaXRlbS52YWx1ZTtcclxuXHRcdH0pO1xyXG5cdFx0dmFyIGVudmlyb21lbnQgPSB7fTtcclxuXHRcdGlmKGluZm8uZW52aXJvbWVudCl7XHJcblx0XHRcdGVudmlyb21lbnQgPSBpbmZvLmVudmlyb21lbnQ7XHJcblx0XHR9IGVsc2Uge1xyXG5cdFx0XHRlbnZpcm9tZW50ID0ge1xyXG5cdFx0XHRcdCdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XHJcblx0XHRcdFx0Y2xzX2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCAgICAgLy8g5Yqf6IO954K55LuO5pWw5o2u57G75qCH6K+GXHJcblx0XHRcdFx0J2J1dHRvbic6ICd0b3AnLCAvLyB0b3AvYm90dG9tXHJcblx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxyXG5cdFx0XHRcdGVkaXRfZGxnOiB7XHJcblx0XHRcdFx0XHR0eXBlOiAnc21hbGwnLCAvL+Wwj+eql+WPo1xyXG5cdFx0XHRcdFx0Y2xhc3NfaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsLy/lvZPliY3mlbDmja7nsbtpZFxyXG5cdFx0XHRcdH0sXHJcblx0XHQgICAgICAgIG1hc3Rlcjoge1xyXG5cdFx0ICAgICAgICAgICAgY2xzX2lkOiBpbmZvLmNsc2lkLCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxyXG5cdFx0ICAgICAgICAgICAgLy9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxyXG5cdFx0XHRcdFx0b2JqX2F0dHJzOm9ial9hdHRyLFxyXG5cdFx0ICAgICAgICB9XHJcblx0XHRcdH07XHJcblx0XHRcdFxyXG5cdFx0fVxyXG5cdFx0dmFyIGdsb2JhbF9hdHRyID0gdGhpcy4kZGF0YS5nbG9iYWxfYXR0cjtcclxuXHRcdGlmIChpbmZvLmdsb2JhbF9hdHRyKSB7XHJcblx0XHRcdGdsb2JhbF9hdHRyID0gaW5mby5nbG9iYWxfYXR0cjtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0ZW52aXJvbWVudCA9IEJhc2U2NC5lbmNvZGUoSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCkpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0XHR2YXIgaW5wdXRQYXJhbXRlcj1pbmZvLmlucHV0UGFyYW10ZXI7XHJcblx0XHRpZihpbmZvLmlucHV0UGFyYW10ZXIpe1xyXG5cdFx0XHRpbmZvLmlucHV0UGFyYW10ZXIgPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KGluZm8uaW5wdXRQYXJhbXRlcikpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0XHR9XHJcblx0XHR2YXIgZ2xvYmFsX2F0dHIgPSBCYXNlNjQuZW5jb2RlKEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpKTsvL+WwhuWtl+espuS4sui9rOaNouS4umJhc2U2NOe8lueggVxyXG5cdFx0XHJcblx0XHRpZighaW5mby5ldmVudGlkLmluY2x1ZGVzKCd7JykpIGluZm8uZXZlbnRpZD0gJ3snKyBpbmZvLmV2ZW50aWQgKyd9JztcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHQgIGVkX3R5cGU6IGluZm8uZWR0eXBlLFxyXG5cdFx0ICBzdGFydF90cmFuc2FjdGlvbjogdHJ1ZSxcclxuXHRcdCAgY2xhc3NfaWQ6IGluZm8uY2xzaWQsXHJcblx0XHQgIGNsYXNzX25hbWU6ICcnLFxyXG5cdFx0ICBldmVudF9pZDogaW5mby5ldmVudGlkLFxyXG5cdFx0ICBldmVudF9uYW1lOiAnJyxcclxuXHRcdCAgZGF0YV9vYmpfaWQ6IGluZm8ub2JqaWQsXHJcblx0XHQgIG9ial9hdHRyOiBvYmpfYXR0cixcclxuXHRcdCAgcHJqX2lkOiBpbmZvLnByb2plY3RpZC5yZXBsYWNlKCd7JywnJykucmVwbGFjZSgnfScsJycpLFxyXG5cdFx0ICByZWZfY2xzX2lkOiBpbmZvLnJjbHNpZCxcclxuXHRcdCAgcmVsX29ial9pZDogaW5mby5yb2JqaWQsXHJcblx0XHQgIHVzZXJfbG9naW46IGluZm8udXNlcmxvZ2luLFxyXG5cdFx0ICBkYXRhX2pzb246ICcnLFxyXG5cdFx0ICBjb21wb3NlX2luZm86ICcnLFxyXG5cdFx0ICBleHRfaW5mbzogZW52aXJvbWVudCxcclxuXHRcdCAgZ2xvYmFsX2F0dHI6IGdsb2JhbF9hdHRyLFxyXG5cdFx0ICBpbnB1dF9wYXJhbTogaW5mby5pbnB1dFBhcmFtdGVyLFxyXG5cdFx0fTtcclxuXHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdC8vIHJldHVybjtcclxuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdydW5DdXN0b21FdmVudCcsZGF0YUluZm8pLnRoZW4oc3VjY2Vzcz0+e1xyXG5cdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcclxuXHRcdFx0aWYgKHN1Y2Nlc3MuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBkYXRhID0gc3VjY2Vzcy5yZXN1bHQ7XHJcblx0XHRcdFx0aWYgKGRhdGEucmV0ICE9IDApIHtcclxuXHRcdFx0XHQgICAgdmFyIHRpcCA9IGRhdGEuZXJyX2luZm8gPyB0eXBlb2YgZGF0YS5lcnJfaW5mbyA9PSAnc3RyaW5nJyA/IGRhdGEuZXJyX2luZm8gOiBkYXRhLmVycl9pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHQgICAgaWYgKGRhdGEucmV0ID09IDgwMSkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytkYXRhLnJldCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0dmFyIHRpcCA9IGRhdGEuaW5mbyA/IHR5cGVvZiBkYXRhLmluZm8gPT0gJ3N0cmluZycgPyBkYXRhLmluZm8gOiBkYXRhLmluZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdFx0aWYgKHRpcCkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHR2YXIgYWN0aW9ubGlzdCA9IGRhdGEuYWN0aW9uO1xyXG5cdFx0XHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XHJcblx0XHRcdFx0XHRcdGZvciAodmFyIGlpID0gMDsgaWkgPCBhY3Rpb25saXN0Lmxlbmd0aDsgaWkrKykge1xyXG5cdFx0XHRcdFx0XHRcdHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2lpXTtcclxuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gYWN0aW9uLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3RbY10uQXR0cjtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5OYW1lPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZihhdHRyW2pdLlR5cGU9PSflrZflhbgnIHx8IGF0dHJbal0uVHlwZT09J+Wtl+WFuC3lrZfnrKbkuLInIHx8IGF0dHJbal0uVHlwZT09J+Wtl+WFuC3mlbTmlbAnKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9cmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcIkNOX1NfTkFNRVwiOnZhbCxcIkNOX1NfVkFMVUVcIjp2YWwsXCJOYW1lXCI6dmFsLFwibGFiZWxcIjp2YWwsXCJ2YWx1ZVwiOnZhbH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSByZXN1bHRbaV0uY2hvaWNlX2xpc3Q7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGF0dHJbal0uTmFtZSsnPT0nK3Jlc3VsdFtpXS5hdHRyKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoYXR0cltqXS5OYW1lPT1yZXN1bHRbaV0uYXR0cil7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBhdHRyLnZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0ci5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHIudmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0ci5vbGR2YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ3NldF9nbG9iYWxfYXR0cicpIHtcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRhY3Rpb250ciA9IGFjdGlvbi52YWx1ZSB8fCBbXTtcclxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9jb21tb25fZGxnJykgeyAgLy/miZPlvIDkvqfmu5HlvLnmoYZcclxuXHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0XHRcdFx0XHRpZihhY3Rpb24udmFsdWUuY29tbW9uX2RsZ19pZCA9PSAnY2hlY2tfbGlzdCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgJHRoaXMuJGRhdGEuY2hlY2tfbGlzdD0gYWN0aW9uLnZhbHVlLmNvbmZpZztcclxuXHRcdFx0XHRcdFx0XHRcdCAgIGlmKGFjdGlvbi52YWx1ZS5jb25maWcuYXBwZWFyX3N0eWxlID09ICdzaWRlc2xpcCcpIC8v5Yik5pat5piv5ZCm5piv5L6n5ruRXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucG9wdXBUeXBlID0gJ3JpZ2h0JztcclxuXHRcdFx0XHRcdFx0XHRcdCAgIGVsc2VcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5wb3B1cFR5cGUgPSAnY2VudGVyJ1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgLy8gb3BlbiDmlrnms5XkvKDlhaXlj4LmlbAg562J5ZCM5ZyoIHVuaS1wb3B1cCDnu4Tku7bkuIrnu5HlrpogdHlwZeWxnuaAp1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAgJHRoaXMuJHJlZnMucG9wdXAub3BlbigkdGhpcy4kZGF0YS5wb3B1cFR5cGUpO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdhZGRfc3ViY2xzX3BhbmVsJykgeyAvL+S4u+S7juaVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdFx0XHRcdFx0XHR2YXIgbGlzdF8xID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYpKTtcclxuXHRcdFx0XHRcdFx0XHRcdHZhciBzY2FuQ29kZVZhbCA9ICR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsO1xyXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJhbmQgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7IC8v55Sf5oiQNeS9jemaj+acuuaVsFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRyYW5kICs9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIDEwKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdGlmIChpbnB1dFBhcmFtdGVyWzBdLmF0dHIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGlucHV0UGFyYW10ZXJbMF0uYXR0ciA9PSBcIm1hc3RfaW5wdXRfMzAzN1wiKSAvL+WIpOaWreaYr+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsID0gXCJtYXN0X2lucHV0XzMwMzctXCIgKyByYW5kO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGluZm8uYXR0clswXS5hdHRyKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChpbmZvLmF0dHJbMF0uYXR0ciA9PSBcIm1hc3RfaW5wdXRfMzAzN1wiKSAvL+WIpOaWreaYr+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsID0gXCJtYXN0X2lucHV0XzMwMzctXCIgKyByYW5kO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRzY2FuQ29kZVZhbDpzY2FuQ29kZVZhbCxcclxuXHRcdFx0XHRcdFx0XHRcdFx0c3ViQ2xhc3NBdHRyOmxpc3RfMVxyXG5cdFx0XHRcdFx0XHRcdFx0fSk7IFxyXG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuYWN0aXZlbGlzdC5wdXNoKHthY3RpdmU6ZmFsc2V9KTtcclxuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnNjYW5Db2RlVmFsID09IHNjYW5Db2RlVmFsKXtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKHJlc3VsdFtpXS5hdHRyPT1cIlNfSURcIilcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLk9iaklEPXJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBfc3ViQ2xhc3NBdHRyID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ci5mb3JtLml0ZW1zO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCBfc3ViQ2xhc3NBdHRyLmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmKF9zdWJDbGFzc0F0dHJbY10ubmFtZSE9J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIGlmKF9zdWJDbGFzc0F0dHJbY10uZmllbGRJZCA9PSByZXN1bHRbaV0uYXR0cikgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0X3N1YkNsYXNzQXR0cltjXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKF9zdWJDbGFzc0F0dHJbY10ubmFtZT09J0xheW91dCcpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgIF9zdWJDbGFzc0F0dHJbY10uc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICAgICBpZihjb2wuZmllbGRJZCA9PSByZXN1bHRbaV0uYXR0cikgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb2wudmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgfSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0cj1saXN0XzE7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdCk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24gKHMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0aWYgKGRhdGEucmVzdWx0KSB7XHJcblx0XHRcdFx0XHRcdHZhciBsaXN0XzEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZikpO1xyXG5cdFx0XHRcdFx0XHR2YXIgc2NhbkNvZGVWYWwgPSAkdGhpcy4kZGF0YS5zY2FuQ29kZVZhbDtcclxuXHRcdFx0XHRcdFx0dmFyIHJhbmQgPSAnJztcclxuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCA1OyBpKyspIHsgLy/nlJ/miJA15L2N6ZqP5py65pWwXHJcblx0XHRcdFx0XHRcdFx0cmFuZCArPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0aWYgKGlucHV0UGFyYW10ZXJbMF0uYXR0cikge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChpbnB1dFBhcmFtdGVyWzBdLmF0dHIgPT0gXCJtYXN0X2lucHV0XzMwMzdcIikgLy/liKTmlq3mmK/kuLvmlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cclxuXHRcdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsID0gXCJtYXN0X2lucHV0XzMwMzctXCIgKyByYW5kO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChpbmZvLmF0dHJbMF0uYXR0cikge1xyXG5cdFx0XHRcdFx0XHRcdGlmIChpbmZvLmF0dHJbMF0uYXR0ciA9PSBcIm1hc3RfaW5wdXRfMzAzN1wiKSAvL+WIpOaWreaYr+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxyXG5cdFx0XHRcdFx0XHRcdFx0c2NhbkNvZGVWYWwgPSBcIm1hc3RfaW5wdXRfMzAzNy1cIiArIHJhbmQ7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0LnB1c2goe1xyXG5cdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsOnNjYW5Db2RlVmFsLFxyXG5cdFx0XHRcdFx0XHRcdHN1YkNsYXNzQXR0cjpsaXN0XzFcclxuXHRcdFx0XHRcdFx0fSk7IFxyXG5cdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XHJcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgcyA9IDA7IHMgPCAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3QubGVuZ3RoOyBzKyspIHtcclxuXHRcdFx0XHRcdFx0XHRcdGlmKCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zY2FuQ29kZVZhbCA9PSBzY2FuQ29kZVZhbCl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdGlmKHJlc3VsdFtpXS5hdHRyPT1cIlNfSURcIilcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uT2JqSUQ9cmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgX3N1YkNsYXNzQXR0ciA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHIuZm9ybS5pdGVtcztcclxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCBfc3ViQ2xhc3NBdHRyLmxlbmd0aDsgYysrKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYoX3N1YkNsYXNzQXR0cltjXS5uYW1lIT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBpZihfc3ViQ2xhc3NBdHRyW2NdLmZpZWxkSWQgPT0gcmVzdWx0W2ldLmF0dHIpIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0X3N1YkNsYXNzQXR0cltjXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYoX3N1YkNsYXNzQXR0cltjXS5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICBfc3ViQ2xhc3NBdHRyW2NdLnNldHRpbmcuY29sTGlzdC5mb3JFYWNoKGNvbD0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICBpZihjb2wpe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICAgIGlmKGNvbC5maWVsZElkID09IHJlc3VsdFtpXS5hdHRyKSBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29sLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCAgICB9XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0ICB9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XHJcblx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uIChzKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXHJcblx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xyXG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vN1wiLGNvbnRlbnQ6c3VjY2Vzcy5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNy4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHR9KTtcclxuXHR9LFxyXG5cdFxyXG5cdC8v56Gu5a6aXHJcblx0c2F2YSgpe1xyXG5cdFx0aWYgKHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50KSAvL+WIpOaWreWKn+iDveeCueWPguaVsOaYr+WQpuacieehruWumuWJjeiEmuacrFxyXG5cdFx0XHR0aGlzLnNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQodGhpcy4kZGF0YS5wYXJhbS5CZWZvcmVfT0tfRXZlbnQuSUQpO1xyXG5cdFx0ZWxzZSBpZiAodGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudCkgLy/liKTmlq3lip/og73ngrnlj4LmlbDmmK/lkKbmnInnoa7lrprlkI7ohJrmnKxcclxuXHRcdFx0dGhpcy5zY2FuX09LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQpO1xyXG5cdFx0ZWxzZVxyXG5cdFx0XHR1bmkubmF2aWdhdGVCYWNrKHtkZWx0YToxIH0pOy8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxyXG5cdH0sXHJcblx0c2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudChldmVudElEKXtcclxuXHRcdHVuaS5zaG93TG9hZGluZyh7XHJcblx0XHRcdHRpdGxlOlwi5Yqg6L295LitLi4uXCIsXHJcblx0XHRcdG1hc2s6dHJ1ZVxyXG5cdFx0fSk7XHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0Ly/ojrflj5booajlpLTlsZ7mgKdcclxuXHRcdHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0Ly8gY29uc29sZS5sb2cob2JqX2F0dHIpO1xyXG5cdFx0dmFyIHJlcSA9IE9iamVjdC5rZXlzKG9ial9hdHRyKS5tYXAoKGEpID0+ICh7XHJcblx0XHRcdGF0dHI6IGEsXHJcblx0XHRcdHZhbHVlOiBvYmpfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0fSkpO1xyXG5cdFx0XHJcblx0XHR2YXIgb2JqZWN0cz1bXTtcclxuXHRcdHZhciBzdWJQYW5lbExpc3QgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Q7XHJcblx0XHRmb3IgKHZhciBzID0gMDsgcyA8IHN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xyXG5cdFx0XHR2YXIgZGV0YWlsX2F0dHI9e307XHJcblx0XHRcdHN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHIuZm9ybS5pdGVtcy5mb3JFYWNoKGl0ZW0gPT4ge1xyXG5cdFx0XHQgICAgaWYoaXRlbS5uYW1lID09IFwiTGF5b3V0XCIpeyAgLy/liKTmlq3mmK/lkKbmmK/moIXmoI/moLzlvI9cclxuXHRcdFx0ICAgICAgaXRlbS5zZXR0aW5nLmNvbExpc3QuZm9yRWFjaChjb2xzID0+IHtcclxuXHRcdFx0ICAgICAgICBpZihjb2xzIT1udWxsKSBkZXRhaWxfYXR0cltjb2xzLmZpZWxkSWRdID0gY29scy52YWx1ZTtcclxuXHRcdFx0ICAgICAgfSk7XHJcblx0XHRcdCAgICB9ZWxzZVxyXG5cdFx0XHQgICAgICBkZXRhaWxfYXR0cltpdGVtLmZpZWxkSWRdID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0fSk7XHJcblx0XHRcdHZhciBzdWJfcmVxID0gT2JqZWN0LmtleXMoZGV0YWlsX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdFx0XHRhdHRyOiBhLFxyXG5cdFx0XHRcdHZhbHVlOiBkZXRhaWxfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0XHR9KSk7XHJcblx0XHRcdG9iamVjdHMucHVzaCh7XHJcblx0XHRcdFx0b2JqX2lkOnN1YlBhbmVsTGlzdFtzXS5zY2FuQ29kZVZhbCxcclxuXHRcdFx0XHRvYmpfYXR0cnM6c3ViX3JlcVxyXG5cdFx0XHR9KTtcclxuXHRcdH1cclxuXHRcdFxyXG5cdFx0dmFyIGRhdGFKc29uPXtcclxuXHRcdFx0bWFzdGVyX2Nsczp7XHJcblx0XHRcdFx0Y2xzX25hbWU6J01CT1gnLC8vJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5OYW1lLFxyXG5cdFx0XHRcdG9ial9hdHRyczpyZXFcclxuXHRcdFx0fSxcclxuXHRcdFx0aW5wdXRfMzAzNzokdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCwgICAvL+aJq+eggeWGheWuuVxyXG5cdFx0XHRvcF90eXBlOiR0aGlzLiRkYXRhLnBhcmFtLk9wZXJhdGlvblR5cGUsIC8v5L2c5Lia57G75Z6L5a6a5LmJXHJcblx0XHRcdHN1Yl9jbHM6e1xyXG5cdFx0XHRcdGNsc19uYW1lOidNQk9YJywvLyR0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuTmFtZSxcclxuXHRcdFx0XHRvYmplY3RzOm9iamVjdHNcclxuXHRcdFx0fVxyXG5cdFx0fTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGFKc29uKSk7XHJcblx0IFx0dmFyIGRhdGFKc29uID0gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeShkYXRhSnNvbikpOy8v5bCG5a2X56ym5Liy6L2s5o2i5Li6YmFzZTY057yW56CBXHJcblx0IFx0dmFyIGdsb2JhbF9hdHRyID0gQmFzZTY0LmVuY29kZShKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKSk7Ly/lsIblrZfnrKbkuLLovazmjaLkuLpiYXNlNjTnvJbnoIFcclxuXHQgXHRpZighZXZlbnRJRC5pbmNsdWRlcygneycpKSBldmVudElEPSAneycrIGV2ZW50SUQgKyd9JztcclxuXHQgXHR2YXIgZGF0YUluZm89e1xyXG5cdCBcdCAgZWRfdHlwZTogXCI3XCIsXHJcblx0XHQgIHN0YXJ0X3RyYW5zYWN0aW9uOiB0cnVlLFxyXG5cdCBcdCAgY2xhc3NfaWQ6ICdNQk9YJyxcclxuXHQgXHQgIGNsYXNzX25hbWU6ICcnLFxyXG5cdCBcdCAgZXZlbnRfaWQ6IGV2ZW50SUQsXHJcblx0IFx0ICBldmVudF9uYW1lOiAnJyxcclxuXHQgXHQgIGRhdGFfb2JqX2lkOiAnJyxcclxuXHQgXHQgIG9ial9hdHRyOiAnJyxcclxuXHQgXHQgIHByal9pZDogJycsXHJcblx0IFx0ICByZWZfY2xzX2lkOiAnJyxcclxuXHQgXHQgIHJlbF9vYmpfaWQ6ICcnLFxyXG5cdCBcdCAgdXNlcl9sb2dpbjogJycsXHJcblx0IFx0ICBkYXRhX2pzb246IGRhdGFKc29uLFxyXG5cdCBcdCAgY29tcG9zZV9pbmZvOiAnJyxcclxuXHQgXHQgIGV4dF9pbmZvOiAnJyxcclxuXHQgXHQgIGdsb2JhbF9hdHRyOiBnbG9iYWxfYXR0cixcclxuXHQgXHQgIGlucHV0X3BhcmFtOiAnJyxcclxuXHQgXHR9O1xyXG5cdCBcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcclxuXHRcdC8vIHVuaS5oaWRlTG9hZGluZygpO1xyXG5cdCAvLyBcdHJldHVybjtcclxuXHQgXHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgncnVuQ3VzdG9tRXZlbnQnLGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3M9PntcclxuXHQgXHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xyXG5cdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcclxuXHQgXHRcdGlmIChzdWNjZXNzLmVycl9jb2RlID09IDApIHtcclxuXHQgXHRcdFx0dmFyIGRhdGEgPSBzdWNjZXNzLnJlc3VsdDtcclxuXHRcdFx0XHRpZiAoZGF0YS5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdCAgICB2YXIgdGlwID0gZGF0YS5lcnJfaW5mbyA/IHR5cGVvZiBkYXRhLmVycl9pbmZvID09ICdzdHJpbmcnID8gZGF0YS5lcnJfaW5mbyA6IGRhdGEuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdCAgICBpZiAoZGF0YS5yZXQgPT0gODAxKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHQgICAgZWxzZSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCsnLOaPkOekujonK2RhdGEucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlXHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHR2YXIgdGlwID0gZGF0YS5pbmZvID8gdHlwZW9mIGRhdGEuaW5mbyA9PSAnc3RyaW5nJyA/IGRhdGEuaW5mbyA6IGRhdGEuaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcdHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcclxuXHRcdFx0XHRcdGlmKGV2ZW50SUQgIT0gJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQpXHJcblx0XHRcdFx0XHRcdCR0aGlzLnNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQpO1xyXG5cdFx0XHRcdFx0ZWxzZXtcclxuXHRcdFx0XHRcdFx0Ly/liLfmlrBcclxuXHRcdFx0XHRcdFx0dW5pLnJlZGlyZWN0VG8oe1xyXG5cdFx0XHRcdFx0XHRcdHVybDonLi4vbW9kYWwvMzAzN18yP3BhcmFtPScrSlNPTi5zdHJpbmdpZnkoJHRoaXMuJGRhdGEucGFyYW0pK1wiJnRpdGxlbmFtZT1cIiskdGhpcy4kZGF0YS50aXRsZVxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0IFx0XHR9ZWxzZXtcclxuXHQgXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor684XCIsY29udGVudDpzdWNjZXNzLmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0IFx0XHR9XHJcblx0IFx0fSkuY2F0Y2goZXg9PntcclxuXHQgXHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XHJcblx0IFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzguMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCBcdH0pO1xyXG5cdCB9LFxyXG5cdCBcclxuXHRcclxuXHRjYW5jZWwoZSl7IC8v5Y+W5raIXHJcblx0XHR1bmkubmF2aWdhdGVCYWNrKHtcclxuXHRcdFx0ZGVsdGE6MSAvL+i/lOWbnuWxguaVsO+8jDLliJnkuIrkuIrpobVcclxuXHRcdH0pO1xyXG5cdH0sXHJcbiAgfSxcclxufTtcclxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///160\n"); |
| | | |
| | | /***/ }), |
| | | /* 161 */ |
| | |
| | | /***/ (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 _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 127));\nvar _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ 201));\nvar _base = _interopRequireDefault(__webpack_require__(/*! ../components/js-base64/base64.js */ 65));\nvar _app = _interopRequireDefault(__webpack_require__(/*! ./modules/app */ 202));\n_vue.default.use(_vuex.default);\nvar store = new _vuex.default.Store({\n modules: {\n app: _app.default,\n Base64: _base.default\n },\n state: {\n hasLogin: false,\n apkVersionInfo: \"\",\n loginProvider: \"\",\n areaFunc: '',\n thisareaFuncID: '',\n thisareaFuncSubID: '',\n thisEditName: '',\n thisEditSubName: '',\n thisDictName: '',\n _classAttrList: {},\n _classGridStyleInfo: {},\n _subClassAttrList: {},\n _subClassGridStyleInfo: {},\n _dicValueInfo: {},\n DataObjRunCustomEventInfo: '',\n querySelpsn: '',\n ProjectGetAnalysisList: '',\n addclassattr: '',\n DelObj: '',\n username: \"sa\",\n userpwd: \"0000\",\n url: \"139.159.144.10:8080/mobox3\",\n //115.29.185.26:5000\n OIOrgSAPI: '',\n //115.29.185.26:5101\n OIMoboxSAPI: '',\n //115.29.185.26:5102\n OIDataSAPI: '',\n //115.29.185.26:5103\n OIMongodbSvr: '' //115.29.185.26:5201\n },\n\n mutations: {\n setUrl: function setUrl(state, url) {\n state.url = url;\n },\n setOrgSApi: function setOrgSApi(state, url) {\n state.OIOrgSAPI = url;\n },\n setMobxoSApi: function setMobxoSApi(state, url) {\n state.OIMoboxSAPI = url;\n },\n setDataSApi: function setDataSApi(state, url) {\n state.OIDataSAPI = url;\n },\n setMongodbSvr: function setMongodbSvr(state, url) {\n state.OIMongodbSvr = url;\n },\n setApkVersionInfo: function setApkVersionInfo(state, ret) {\n state.apkVersionInfo = ret;\n },\n login: function login(state, provider) {\n state.hasLogin = true;\n state.loginProvider = provider;\n },\n areaFunc: function areaFunc(state, ret) {\n state.areaFunc = ret;\n },\n setareaFuncid: function setareaFuncid(state, id) {\n state.thisareaFuncID = id;\n },\n setareaFunSubcid: function setareaFunSubcid(state, id) {\n state.thisareaFuncSubID = id;\n },\n seteditName: function seteditName(state, editName) {\n state.thisEditName = editName;\n },\n seteditSubName: function seteditSubName(state, editName) {\n state.thisEditSubName = editName;\n },\n setDictName: function setDictName(state, dictName) {\n state.thisDictName = dictName;\n },\n classAttrList: function classAttrList(state, ret) {\n // state._classAttrList[state.thisareaFuncID] = ret;\n _vue.default.set(state._classAttrList, state.thisareaFuncID, ret);\n },\n classGridStyleInfo: function classGridStyleInfo(state, ret) {\n // state._classGridStyleInfo[state.thisareaFuncID] = ret;\n var data = {};\n if (state._classGridStyleInfo[state.thisareaFuncID]) data = state._classGridStyleInfo[state.thisareaFuncID];\n _vue.default.set(data, state.thisEditName, ret);\n _vue.default.set(state._classGridStyleInfo, state.thisareaFuncID, data);\n },\n subClassAttrList: function subClassAttrList(state, ret) {\n _vue.default.set(state._subClassAttrList, state.thisareaFuncSubID, ret);\n },\n subClassGridStyleInfo: function subClassGridStyleInfo(state, ret) {\n var data = {};\n if (state._subClassGridStyleInfo[state.thisareaFuncSubID]) data = state._subClassGridStyleInfo[state.thisareaFuncSubID];\n _vue.default.set(data, state.thisEditSubName, ret);\n _vue.default.set(state._subClassGridStyleInfo, state.thisareaFuncSubID, data);\n },\n dicValueInfo: function dicValueInfo(state, ret) {\n // state._dicValueInfo[state.thisareaFuncID] = ret;\n _vue.default.set(state._dicValueInfo, state.thisDictName, ret);\n },\n DataObjRunCustomEventInfo: function DataObjRunCustomEventInfo(state, ret) {\n state.DataObjRunCustomEventInfo = ret;\n },\n querySelpsn: function querySelpsn(state, ret) {\n state.querySelpsn = ret;\n },\n ProjectGetAnalysisList: function ProjectGetAnalysisList(state, ret) {\n state.ProjectGetAnalysisList = ret;\n },\n addclassattr: function addclassattr(state, ret) {\n state.addclassattr = ret;\n },\n DelObj: function DelObj(state, ret) {\n state.DelObj = ret;\n },\n logout: function logout(state) {\n state.hasLogin = false;\n }\n },\n getters: {\n GetApkServionInfo: function GetApkServionInfo(state) {\n return state.apkVersionInfo;\n },\n loginid: function loginid(state) {\n return state.loginProvider.loginid;\n },\n getUrl: function getUrl(state) {\n return state.url;\n },\n getOrgSApi: function getOrgSApi(state, url) {\n return state.OIOrgSAPI;\n },\n getMobxoSApi: function getMobxoSApi(state, url) {\n return state.OIMoboxSAPI;\n },\n getDataSApi: function getDataSApi(state, url) {\n return state.OIDataSAPI;\n },\n getMongodbSvr: function getMongodbSvr(state, url) {\n return state.OIMongodbSvr;\n },\n getclassAttrList: function getclassAttrList(state) {\n return state._classAttrList[state.thisareaFuncID];\n },\n getclassGridStyleInfo: function getclassGridStyleInfo(state) {\n if (state._classGridStyleInfo[state.thisareaFuncID]) return state._classGridStyleInfo[state.thisareaFuncID][state.thisEditName];else return \"\";\n },\n getSubClassAttrList: function getSubClassAttrList(state) {\n return state._subClassAttrList[state.thisareaFuncSubID];\n },\n getSubClassGridStyleInfo: function getSubClassGridStyleInfo(state) {\n if (state._subClassGridStyleInfo[state.thisareaFuncSubID]) return state._subClassGridStyleInfo[state.thisareaFuncSubID][state.thisEditSubName];else return \"\";\n },\n getdicValueInfo: function getdicValueInfo(state) {\n return state._dicValueInfo[state.thisDictName];\n }\n },\n actions: {\n //{commit} 解构,\n //univerifyInfo 自定义参数\n GetApkVersionInfo: function GetApkVersionInfo(_ref, univerifyInfo) {\n var commit = _ref.commit,\n state = _ref.state;\n return new Promise(function (resolve, reject) {\n univerifyInfo = univerifyInfo || {};\n univerifyInfo.server = univerifyInfo.server || '';\n if (univerifyInfo.server.length == 0) {\n reject({\n \"errMsg\": '服务器地址不能为空!'\n });\n }\n var openinfo = \"http://\" + univerifyInfo.server + \"/\"; //+\"/OrgWebS\"\n //设置全局参数:url-服务器地址\n commit(\"setUrl\", openinfo);\n // var ser = univerifyInfo.server.split('/');\n // if(ser[1] == 'mobox3'){\n // \t// reject({\"errMsg\":\"Mobox3暂时未支持自动更新!\"});\n // \tresolve({code:'00000',data:\"\",msg:\"\"});\n // \treturn;\n // }\n uni.request({\n url: openinfo + \"PDA/GetApkVersionInfo\",\n data: {},\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:203\");\n if (res.statusCode == 404) {\n reject({\n \"errMsg\": \"地址不对,请检查该地址:\" + openinfo + \",方法:GetApkVersionInfo,是否正确\"\n });\n } else if (res.statusCode == 500) {\n reject({\n \"errMsg\": \"未找到更新包所在目录!\"\n });\n }\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"setApkVersionInfo\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:218\");\n reject(err);\n }\n });\n });\n },\n login: function login(_ref2, univerifyInfo) {\n var commit = _ref2.commit,\n state = _ref2.state;\n return new Promise(function (resolve, reject) {\n univerifyInfo = univerifyInfo || {};\n univerifyInfo.server = univerifyInfo.server || '';\n univerifyInfo.uname = univerifyInfo.uname || '';\n univerifyInfo.pwd = univerifyInfo.pwd || '';\n if (univerifyInfo.server.length == 0) {\n reject({\n \"errMsg\": '服务器地址不能为空!'\n });\n }\n if (univerifyInfo.uname.length < 2) {\n reject({\n \"errMsg\": '账号最短为 2 个字符!'\n });\n }\n if (univerifyInfo.pwd.length < 1) {\n reject({\n \"errMsg\": '密码最短为 1个字符!'\n });\n }\n var openinfo = \"http://\" + univerifyInfo.server + \"/\";\n //设置全局参数:url-服务器地址\n commit(\"setUrl\", openinfo);\n var ser = univerifyInfo.server.split('/');\n var url = openinfo + \"PDA/SignIn\";\n var header = {\n 'content-type': 'application/x-www-form-urlencoded'\n };\n commit(\"setOrgSApi\", '');\n commit(\"setMobxoSApi\", '');\n commit(\"setDataSApi\", '');\n commit(\"setMongodbSvr\", '');\n if (ser[1] == 'mobox3') {\n //判断地址是否是Mobox3\n var orgSApi = \"http://\" + ser[0].split(':')[0] + \":5101/\";\n var mobxoSApi = \"http://\" + ser[0].split(':')[0] + \":5102/\";\n var dataSApi = \"http://\" + ser[0].split(':')[0] + \":5103/\";\n var mongodbSvr = \"http://\" + ser[0].split(':')[0] + \":5201/\";\n commit(\"setOrgSApi\", orgSApi);\n commit(\"setMobxoSApi\", mobxoSApi);\n commit(\"setDataSApi\", dataSApi);\n commit(\"setMongodbSvr\", mongodbSvr);\n url = orgSApi + 'api/user/ace/VerifyPassword';\n univerifyInfo = {\n app_type: \"mobox\",\n user_login: _base.default.encode(univerifyInfo.uname),\n user_psw: _base.default.encode(univerifyInfo.pwd)\n };\n header = {};\n }\n uni.request({\n url: url,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: header,\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:278\");\n var ret = res.data;\n if (ret.code == '00000' || ret.err_code == 0) {\n commit(\"login\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg ? ret.msg : ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:288\");\n reject(err);\n }\n });\n });\n },\n areaFunc: function areaFunc(_ref3, univerifyInfo) {\n var commit = _ref3.commit,\n state = _ref3.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n var url = state.url + \"PDA/PDAArea\";\n var header = {\n 'content-type': 'application/x-www-form-urlencoded'\n };\n if (state.OIMoboxSAPI) {\n //判断是否是Mobox3\n url = state.OIMoboxSAPI + 'api/app/area/GetList?sessionid=' + state.loginProvider.loginid.result.session_id;\n univerifyInfo = {\n app_type: \"MES\"\n };\n header = {};\n }\n uni.request({\n url: url,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: header,\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:325\");\n if (res.statusCode == 404) {\n reject({\n \"errMsg\": \"地址不对,请检查该地址:\" + openinfo\n });\n }\n // if(JSON.stringify(res.data).includes('Login Page - Ace Admin')){\n // \tuni.reLaunch({\n // \t\turl: '../login/index'\n // \t})\n // \treject({\"errMsg\":\"登录已过期,请重新登录\"});\n // }\n var ret = res.data;\n if (ret.code == '00000' || ret.err_code == 0) {\n commit(\"areaFunc\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg ? ret.msg : ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // Mobox3获取应用领域下的功能点\n GetFuncTree: function GetFuncTree(_ref4, univerifyInfo) {\n var commit = _ref4.commit,\n state = _ref4.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n uni.request({\n url: state.OIMoboxSAPI + 'api/app/GetFuncTree?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n // commit(\"areaFunc\",ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n classAttrList: function classAttrList(_ref5, univerifyInfo) {\n var commit = _ref5.commit,\n state = _ref5.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/PDAAttrList\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:403\");\n // if(JSON.stringify(res.data).includes('Login Page - Ace Admin')){\n // \tuni.reLaunch({\n // \t\turl: '../login/index'\n // \t})\n // \treject({\"errMsg\":\"登录已过期,请重新登录\"});\n // }\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"classAttrList\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n classGridStyleInfo: function classGridStyleInfo(_ref6, univerifyInfo) {\n var commit = _ref6.commit,\n state = _ref6.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/PDAGridStyleGetInfo\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:449\");\n // if(JSON.stringify(res.data).includes('Login Page - Ace Admin')){\n // \tuni.reLaunch({\n // \t\turl: '../login/index'\n // \t})\n // \treject({\"errMsg\":\"登录已过期,请重新登录\"});\n // }\n var ret = res.data;\n if (ret.code == '00000') {\n // var data ={};\n // Vue.set(data,univerifyInfo.name,ret);\n commit(\"classGridStyleInfo\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n subClassAttrList: function subClassAttrList(_ref7, univerifyInfo) {\n var commit = _ref7.commit,\n state = _ref7.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/PDAAttrList\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:497\");\n // if(JSON.stringify(res.data).includes('Login Page - Ace Admin')){\n // \tuni.reLaunch({\n // \t\turl: '../login/index'\n // \t})\n // \treject({\"errMsg\":\"登录已过期,请重新登录\"});\n // }\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"subClassAttrList\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n subClassGridStyleInfo: function subClassGridStyleInfo(_ref8, univerifyInfo) {\n var commit = _ref8.commit,\n state = _ref8.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/PDAGridStyleGetInfo\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:543\");\n // if(JSON.stringify(res.data).includes('Login Page - Ace Admin')){\n // \tuni.reLaunch({\n // \t\turl: '../login/index'\n // \t})\n // \treject({\"errMsg\":\"登录已过期,请重新登录\"});\n // }\n var ret = res.data;\n if (ret.code == '00000') {\n // var data ={};\n // Vue.set(data,univerifyInfo.name,ret);\n commit(\"subClassGridStyleInfo\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n dicValueInfo: function dicValueInfo(_ref9, univerifyInfo) {\n var commit = _ref9.commit,\n state = _ref9.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/PDADicValueGetInfo\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n // console.log(res);\n var ret = res.data;\n if (ret.code == '00000') {\n state.thisDictName = univerifyInfo.dic_name;\n commit(\"dicValueInfo\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:602\");\n reject(err);\n }\n });\n });\n },\n DataObjRunCustomEventInfo: function DataObjRunCustomEventInfo(_ref10, univerifyInfo) {\n var commit = _ref10.commit,\n state = _ref10.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/PDADataObjRunCustomEvent\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n // console.log(res);\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"DataObjRunCustomEventInfo\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:641\");\n reject(err);\n }\n });\n });\n },\n querySelpsn: function querySelpsn(_ref11, univerifyInfo) {\n var commit = _ref11.commit,\n state = _ref11.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n var url = state.url + \"selpsn/queryjson\";\n var datajson = univerifyInfo;\n var header = {\n 'content-type': 'application/x-www-form-urlencoded'\n };\n if (state.OIOrgSAPI) {\n //判断是否是Mobox3\n url = state.OIOrgSAPI + 'api/user/query/query?sessionid=' + state.loginProvider.loginid.result.session_id;\n datajson = {\n query_str: univerifyInfo.jp\n };\n header = {};\n }\n uni.request({\n url: url,\n data: datajson,\n method: 'POST',\n dataType: \"json\",\n header: header,\n success: function success(res) {\n // console.log(res);\n try {\n res = JSON.parse(res.data);\n } catch (e) {\n res = res.data;\n }\n if (res.code == '00000' || res.err_code == 0) {\n commit(\"querySelpsn\", res);\n resolve(res);\n } else {\n reject({\n \"errMsg\": res.msg ? res.msg : res.err_msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:685\");\n reject(err);\n }\n });\n });\n },\n ProjectGetAnalysisList: function ProjectGetAnalysisList(_ref12, univerifyInfo) {\n var commit = _ref12.commit,\n state = _ref12.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n var url = state.url + \"bpm/ProjectGetAnalysisList\";\n var header = {\n 'content-type': 'application/x-www-form-urlencoded'\n };\n if (state.OIMoboxSAPI) {\n //判断是否是Mobox3\n // url = state.OIMoboxSAPI+'api/app/area/GetList?sessionid='+state.loginProvider.loginid.result.session_id;\n // univerifyInfo = {\n // \tapp_type: \"MES\",\n // };\n // header={};\n reject({\n \"errMsg\": \"Mobox3暂时未支持选择项目接口!\"\n });\n // resolve({code:'00000',data:\"\",msg:\"\"});\n return;\n }\n uni.request({\n url: url,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: header,\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:718\");\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"ProjectGetAnalysisList\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:728\");\n reject(err);\n }\n });\n });\n },\n addclassattr: function addclassattr(_ref13, univerifyInfo) {\n var commit = _ref13.commit,\n state = _ref13.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/addclassattr\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n // console.log(res);\n // if(JSON.stringify(res.data).includes('Login Page - Ace Admin')){\n // \tuni.reLaunch({\n // \t\turl: '../login/index'\n // \t})\n // \treject({\"errMsg\":\"登录已过期,请重新登录\"});\n // }\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"addclassattr\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": JSON.stringify(ret)\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:773\");\n reject(err);\n }\n });\n });\n },\n DelObj: function DelObj(_ref14, univerifyInfo) {\n var commit = _ref14.commit,\n state = _ref14.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n uni.request({\n url: state.url + \"PDA/DelObj\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:795\");\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"DelObj\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": JSON.stringify(ret)\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:805\");\n reject(err);\n }\n });\n });\n },\n // api/class/attr/GetList?sessionid=SESSION_ID\n // Mobox3得到数据类属性\n classAttrGetList: function classAttrGetList(_ref15, univerifyInfo) {\n var commit = _ref15.commit,\n state = _ref15.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n uni.request({\n url: state.OIDataSAPI + 'api/class/attr/GetList?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n commit(\"classAttrList\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/class/attr/GetList?sessionid=SESSION_ID\n // Mobox3得到数据类属性\n subClassAttrGetList: function subClassAttrGetList(_ref16, univerifyInfo) {\n var commit = _ref16.commit,\n state = _ref16.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n uni.request({\n url: state.OIDataSAPI + 'api/class/attr/GetList?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n commit(\"subClassAttrList\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/dict/item/GetInfo?sessionid=SESSION_ID\n // Mobox3得到字典项列表\n DictItemGetList: function DictItemGetList(_ref17, univerifyInfo) {\n var commit = _ref17.commit,\n state = _ref17.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n uni.request({\n url: state.OIMoboxSAPI + 'api/dict/item/GetInfo?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/dict/GetInfo2?sessionid=SESSION_ID\n // Mobox3得到字典信息\n DictGetInfo: function DictGetInfo(_ref18, univerifyInfo) {\n var commit = _ref18.commit,\n state = _ref18.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n uni.request({\n url: state.OIMoboxSAPI + 'api/dict/GetInfo2?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/dataobj/Create?sessionid=SESSION_ID\n // Mobox3创建数据对象\n createDataObj: function createDataObj(_ref19, univerifyInfo) {\n var commit = _ref19.commit,\n state = _ref19.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n uni.request({\n url: state.OIDataSAPI + 'api/dataobj/Create?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:955\");\n reject(err);\n }\n });\n });\n },\n // api/class/uistyle/GetInfo?sessionid=SESSION_ID\n // Mobox3得到数据类显示样式信息\n UIStyleGetInfo: function UIStyleGetInfo(_ref20, univerifyInfo) {\n var commit = _ref20.commit,\n state = _ref20.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n uni.request({\n url: state.OIDataSAPI + 'api/class/uistyle/GetInfo?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n __f__(\"log\", _res, \" at store/index.js:976\");\n var ret = _res.data;\n if (ret.err_code == 0) {\n // commit(\"areaFunc\",ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/dataobj/RunCustomEvent?sessionid=SESSION_ID\n // Mobox3执行自定义脚本\n runCustomEvent: function runCustomEvent(_ref21, univerifyInfo) {\n var commit = _ref21.commit,\n state = _ref21.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n uni.request({\n url: state.OIDataSAPI + 'api/dataobj/RunCustomEvent?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n // commit(\"areaFunc\",ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/dataobj/Delete?sessionid=SESSION_ID\n // Mobox3删除数据对象\n dataObjDel: function dataObjDel(_ref22, univerifyInfo) {\n var commit = _ref22.commit,\n state = _ref22.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n uni.request({\n url: state.OIDataSAPI + 'api/dataobj/Delete?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n // commit(\"areaFunc\",ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/dataobj/query/Query?sessionid=SESSION_ID\n // Mobox3查询数据对象\n dataObjQuery: function dataObjQuery(_ref23, univerifyInfo) {\n var commit = _ref23.commit,\n state = _ref23.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n uni.request({\n url: state.OIDataSAPI + 'api/dataobj/query/Query?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n // commit(\"areaFunc\",ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/app/GetInfo?sessionid=SESSION_ID\n // Mobox3获取功能点信息\n appGetInfo: function appGetInfo(_ref24, univerifyInfo) {\n var commit = _ref24.commit,\n state = _ref24.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n uni.request({\n url: state.OIMoboxSAPI + 'api/app/GetInfo?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n // commit(\"areaFunc\",ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n }\n }\n});\nvar _default = store;\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RvcmUvaW5kZXguanMiXSwibmFtZXMiOlsiVnVlIiwidXNlIiwiVnVleCIsInN0b3JlIiwiU3RvcmUiLCJtb2R1bGVzIiwiYXBwIiwiQmFzZTY0Iiwic3RhdGUiLCJoYXNMb2dpbiIsImFwa1ZlcnNpb25JbmZvIiwibG9naW5Qcm92aWRlciIsImFyZWFGdW5jIiwidGhpc2FyZWFGdW5jSUQiLCJ0aGlzYXJlYUZ1bmNTdWJJRCIsInRoaXNFZGl0TmFtZSIsInRoaXNFZGl0U3ViTmFtZSIsInRoaXNEaWN0TmFtZSIsIl9jbGFzc0F0dHJMaXN0IiwiX2NsYXNzR3JpZFN0eWxlSW5mbyIsIl9zdWJDbGFzc0F0dHJMaXN0IiwiX3N1YkNsYXNzR3JpZFN0eWxlSW5mbyIsIl9kaWNWYWx1ZUluZm8iLCJEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvIiwicXVlcnlTZWxwc24iLCJQcm9qZWN0R2V0QW5hbHlzaXNMaXN0IiwiYWRkY2xhc3NhdHRyIiwiRGVsT2JqIiwidXNlcm5hbWUiLCJ1c2VycHdkIiwidXJsIiwiT0lPcmdTQVBJIiwiT0lNb2JveFNBUEkiLCJPSURhdGFTQVBJIiwiT0lNb25nb2RiU3ZyIiwibXV0YXRpb25zIiwic2V0VXJsIiwic2V0T3JnU0FwaSIsInNldE1vYnhvU0FwaSIsInNldERhdGFTQXBpIiwic2V0TW9uZ29kYlN2ciIsInNldEFwa1ZlcnNpb25JbmZvIiwicmV0IiwibG9naW4iLCJwcm92aWRlciIsInNldGFyZWFGdW5jaWQiLCJpZCIsInNldGFyZWFGdW5TdWJjaWQiLCJzZXRlZGl0TmFtZSIsImVkaXROYW1lIiwic2V0ZWRpdFN1Yk5hbWUiLCJzZXREaWN0TmFtZSIsImRpY3ROYW1lIiwiY2xhc3NBdHRyTGlzdCIsInNldCIsImNsYXNzR3JpZFN0eWxlSW5mbyIsImRhdGEiLCJzdWJDbGFzc0F0dHJMaXN0Iiwic3ViQ2xhc3NHcmlkU3R5bGVJbmZvIiwiZGljVmFsdWVJbmZvIiwibG9nb3V0IiwiZ2V0dGVycyIsIkdldEFwa1NlcnZpb25JbmZvIiwibG9naW5pZCIsImdldFVybCIsImdldE9yZ1NBcGkiLCJnZXRNb2J4b1NBcGkiLCJnZXREYXRhU0FwaSIsImdldE1vbmdvZGJTdnIiLCJnZXRjbGFzc0F0dHJMaXN0IiwiZ2V0Y2xhc3NHcmlkU3R5bGVJbmZvIiwiZ2V0U3ViQ2xhc3NBdHRyTGlzdCIsImdldFN1YkNsYXNzR3JpZFN0eWxlSW5mbyIsImdldGRpY1ZhbHVlSW5mbyIsImFjdGlvbnMiLCJHZXRBcGtWZXJzaW9uSW5mbyIsInVuaXZlcmlmeUluZm8iLCJjb21taXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNlcnZlciIsImxlbmd0aCIsIm9wZW5pbmZvIiwidW5pIiwicmVxdWVzdCIsIm1ldGhvZCIsImRhdGFUeXBlIiwiaGVhZGVyIiwic3VjY2VzcyIsInJlcyIsInN0YXR1c0NvZGUiLCJjb2RlIiwibXNnIiwiZmFpbCIsImVyciIsInVuYW1lIiwicHdkIiwic2VyIiwic3BsaXQiLCJvcmdTQXBpIiwibW9ieG9TQXBpIiwiZGF0YVNBcGkiLCJtb25nb2RiU3ZyIiwiYXBwX3R5cGUiLCJ1c2VyX2xvZ2luIiwiZW5jb2RlIiwidXNlcl9wc3ciLCJlcnJfY29kZSIsImVycl9tc2ciLCJsb2dpbkluZm8iLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0U3RvcmFnZVN5bmMiLCJjbmFtZSIsInBsdXMiLCJkZXZpY2UiLCJtb2RlbCIsInR5cGUiLCJyZXN1bHQiLCJzZXNzaW9uX2lkIiwiR2V0RnVuY1RyZWUiLCJfcmVzIiwiZGljX25hbWUiLCJkYXRhanNvbiIsInF1ZXJ5X3N0ciIsImpwIiwicGFyc2UiLCJlIiwiY2xhc3NBdHRyR2V0TGlzdCIsInN1YkNsYXNzQXR0ckdldExpc3QiLCJEaWN0SXRlbUdldExpc3QiLCJEaWN0R2V0SW5mbyIsImNyZWF0ZURhdGFPYmoiLCJVSVN0eWxlR2V0SW5mbyIsInJ1bkN1c3RvbUV2ZW50IiwiZGF0YU9iakRlbCIsImRhdGFPYmpRdWVyeSIsImFwcEdldElu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RWE1RixLQUFLO0FBQUEsMkIiLCJmaWxlIjoiMjAwLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFZ1ZSBmcm9tICd2dWUnXHJcbmltcG9ydCBWdWV4IGZyb20gJ3Z1ZXgnXHJcbmltcG9ydCBCYXNlNjQgZnJvbSAnLi4vY29tcG9uZW50cy9qcy1iYXNlNjQvYmFzZTY0LmpzJ1xyXG5WdWUudXNlKFZ1ZXgpXHJcblxyXG5pbXBvcnQgYXBwIGZyb20gJy4vbW9kdWxlcy9hcHAnXHJcbmNvbnN0IHN0b3JlID0gbmV3IFZ1ZXguU3RvcmUoe1xyXG5cdG1vZHVsZXM6e1xyXG5cdFx0YXBwLFxyXG5cdFx0QmFzZTY0LFxyXG5cdH0sXHJcblx0c3RhdGU6IHtcclxuXHRcdGhhc0xvZ2luOiBmYWxzZSxcclxuXHRcdGFwa1ZlcnNpb25JbmZvOiBcIlwiLFxyXG5cdFx0bG9naW5Qcm92aWRlcjogXCJcIixcclxuXHRcdGFyZWFGdW5jOicnLFxyXG5cdFx0dGhpc2FyZWFGdW5jSUQ6JycsXHJcblx0XHR0aGlzYXJlYUZ1bmNTdWJJRDonJyxcclxuXHRcdHRoaXNFZGl0TmFtZTonJyxcclxuXHRcdHRoaXNFZGl0U3ViTmFtZTonJyxcclxuXHRcdHRoaXNEaWN0TmFtZTonJyxcclxuXHRcdF9jbGFzc0F0dHJMaXN0Ont9LFxyXG5cdFx0X2NsYXNzR3JpZFN0eWxlSW5mbzp7fSxcclxuXHRcdF9zdWJDbGFzc0F0dHJMaXN0Ont9LFxyXG5cdFx0X3N1YkNsYXNzR3JpZFN0eWxlSW5mbzp7fSxcclxuXHRcdF9kaWNWYWx1ZUluZm86e30sXHJcblx0XHREYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvOicnLFxyXG5cdFx0cXVlcnlTZWxwc246JycsXHJcblx0XHRQcm9qZWN0R2V0QW5hbHlzaXNMaXN0OicnLFxyXG5cdFx0YWRkY2xhc3NhdHRyOicnLFxyXG5cdFx0RGVsT2JqOicnLFxyXG5cdFx0dXNlcm5hbWU6XCJzYVwiLFxyXG5cdFx0dXNlcnB3ZDpcIjAwMDBcIixcclxuXHRcdHVybDpcIjEzOS4xNTkuMTQ0LjEwOjgwODAvbW9ib3gzXCIsIC8vMTE1LjI5LjE4NS4yNjo1MDAwXHJcblx0XHRPSU9yZ1NBUEk6ICcnLCAvLzExNS4yOS4xODUuMjY6NTEwMVxyXG5cdFx0T0lNb2JveFNBUEk6ICcnLCAvLzExNS4yOS4xODUuMjY6NTEwMlxyXG5cdFx0T0lEYXRhU0FQSTogJycsIC8vMTE1LjI5LjE4NS4yNjo1MTAzXHJcblx0XHRPSU1vbmdvZGJTdnI6ICcnIC8vMTE1LjI5LjE4NS4yNjo1MjAxXHJcblx0fSxcclxuXHRtdXRhdGlvbnM6IHtcclxuXHRcdHNldFVybChzdGF0ZSwgdXJsKSB7XHJcblx0XHRcdHN0YXRlLnVybCA9IHVybDtcclxuXHRcdH0sXHJcblx0XHRzZXRPcmdTQXBpKHN0YXRlLCB1cmwpIHtcclxuXHRcdFx0c3RhdGUuT0lPcmdTQVBJID0gdXJsO1xyXG5cdFx0fSxcclxuXHRcdHNldE1vYnhvU0FwaShzdGF0ZSwgdXJsKSB7XHJcblx0XHRcdHN0YXRlLk9JTW9ib3hTQVBJID0gdXJsO1xyXG5cdFx0fSxcclxuXHRcdHNldERhdGFTQXBpKHN0YXRlLCB1cmwpIHtcclxuXHRcdFx0c3RhdGUuT0lEYXRhU0FQSSA9IHVybDtcclxuXHRcdH0sXHJcblx0XHRzZXRNb25nb2RiU3ZyKHN0YXRlLCB1cmwpIHtcclxuXHRcdFx0c3RhdGUuT0lNb25nb2RiU3ZyID0gdXJsO1xyXG5cdFx0fSxcclxuXHRcdHNldEFwa1ZlcnNpb25JbmZvKHN0YXRlLCByZXQpIHtcclxuXHRcdFx0c3RhdGUuYXBrVmVyc2lvbkluZm8gPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0bG9naW4oc3RhdGUsIHByb3ZpZGVyKSB7XHJcblx0XHRcdHN0YXRlLmhhc0xvZ2luID0gdHJ1ZTtcclxuXHRcdFx0c3RhdGUubG9naW5Qcm92aWRlciA9IHByb3ZpZGVyO1xyXG5cdFx0fSxcclxuXHRcdGFyZWFGdW5jKHN0YXRlLCByZXQpIHtcclxuXHRcdFx0c3RhdGUuYXJlYUZ1bmMgPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0c2V0YXJlYUZ1bmNpZChzdGF0ZSxpZCl7XHJcblx0XHRcdHN0YXRlLnRoaXNhcmVhRnVuY0lEPWlkO1xyXG5cdFx0fSxcclxuXHRcdHNldGFyZWFGdW5TdWJjaWQoc3RhdGUsaWQpe1xyXG5cdFx0XHRzdGF0ZS50aGlzYXJlYUZ1bmNTdWJJRD1pZDtcclxuXHRcdH0sXHJcblx0XHRzZXRlZGl0TmFtZShzdGF0ZSxlZGl0TmFtZSl7XHJcblx0XHRcdHN0YXRlLnRoaXNFZGl0TmFtZT1lZGl0TmFtZTtcclxuXHRcdH0sXHJcblx0XHRzZXRlZGl0U3ViTmFtZShzdGF0ZSxlZGl0TmFtZSl7XHJcblx0XHRcdHN0YXRlLnRoaXNFZGl0U3ViTmFtZT1lZGl0TmFtZTtcclxuXHRcdH0sXHJcblx0XHRzZXREaWN0TmFtZShzdGF0ZSxkaWN0TmFtZSl7XHJcblx0XHRcdHN0YXRlLnRoaXNEaWN0TmFtZT1kaWN0TmFtZTtcclxuXHRcdH0sXHJcblx0XHRjbGFzc0F0dHJMaXN0KHN0YXRlLCByZXQpIHtcclxuXHRcdFx0Ly8gc3RhdGUuX2NsYXNzQXR0ckxpc3Rbc3RhdGUudGhpc2FyZWFGdW5jSURdID0gcmV0O1xyXG5cdFx0XHRWdWUuc2V0KHN0YXRlLl9jbGFzc0F0dHJMaXN0LHN0YXRlLnRoaXNhcmVhRnVuY0lELHJldCk7XHJcblx0XHR9LFxyXG5cdFx0Y2xhc3NHcmlkU3R5bGVJbmZvKHN0YXRlLCByZXQpIHtcclxuXHRcdFx0Ly8gc3RhdGUuX2NsYXNzR3JpZFN0eWxlSW5mb1tzdGF0ZS50aGlzYXJlYUZ1bmNJRF0gPSByZXQ7XHJcblx0XHRcdHZhciBkYXRhID0ge307XHJcblx0XHRcdGlmKHN0YXRlLl9jbGFzc0dyaWRTdHlsZUluZm9bc3RhdGUudGhpc2FyZWFGdW5jSURdKVxyXG5cdFx0XHRcdGRhdGEgPSBzdGF0ZS5fY2xhc3NHcmlkU3R5bGVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY0lEXTtcclxuXHRcdFx0VnVlLnNldChkYXRhLHN0YXRlLnRoaXNFZGl0TmFtZSxyZXQpO1xyXG5cdFx0XHRWdWUuc2V0KHN0YXRlLl9jbGFzc0dyaWRTdHlsZUluZm8sc3RhdGUudGhpc2FyZWFGdW5jSUQsZGF0YSk7XHJcblx0XHR9LFxyXG5cdFx0c3ViQ2xhc3NBdHRyTGlzdChzdGF0ZSwgcmV0KSB7XHJcblx0XHRcdFZ1ZS5zZXQoc3RhdGUuX3N1YkNsYXNzQXR0ckxpc3Qsc3RhdGUudGhpc2FyZWFGdW5jU3ViSUQscmV0KTtcclxuXHRcdH0sXHJcblx0XHRzdWJDbGFzc0dyaWRTdHlsZUluZm8oc3RhdGUsIHJldCkge1xyXG5cdFx0XHR2YXIgZGF0YSA9IHt9O1xyXG5cdFx0XHRpZihzdGF0ZS5fc3ViQ2xhc3NHcmlkU3R5bGVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY1N1YklEXSlcclxuXHRcdFx0XHRkYXRhID0gc3RhdGUuX3N1YkNsYXNzR3JpZFN0eWxlSW5mb1tzdGF0ZS50aGlzYXJlYUZ1bmNTdWJJRF07XHJcblx0XHRcdFZ1ZS5zZXQoZGF0YSxzdGF0ZS50aGlzRWRpdFN1Yk5hbWUscmV0KTtcclxuXHRcdFx0VnVlLnNldChzdGF0ZS5fc3ViQ2xhc3NHcmlkU3R5bGVJbmZvLHN0YXRlLnRoaXNhcmVhRnVuY1N1YklELGRhdGEpO1xyXG5cdFx0fSxcclxuXHRcdGRpY1ZhbHVlSW5mbyhzdGF0ZSwgcmV0KSB7XHJcblx0XHRcdC8vIHN0YXRlLl9kaWNWYWx1ZUluZm9bc3RhdGUudGhpc2FyZWFGdW5jSURdID0gcmV0O1xyXG5cdFx0XHRWdWUuc2V0KHN0YXRlLl9kaWNWYWx1ZUluZm8sc3RhdGUudGhpc0RpY3ROYW1lLHJldCk7XHJcblx0XHR9LFxyXG5cdFx0RGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbyhzdGF0ZSwgcmV0KSB7XHJcblx0XHRcdHN0YXRlLkRhdGFPYmpSdW5DdXN0b21FdmVudEluZm8gPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0cXVlcnlTZWxwc24oc3RhdGUsIHJldCkge1xyXG5cdFx0XHRzdGF0ZS5xdWVyeVNlbHBzbiA9IHJldDtcclxuXHRcdH0sXHJcblx0XHRQcm9qZWN0R2V0QW5hbHlzaXNMaXN0KHN0YXRlLCByZXQpIHtcclxuXHRcdFx0c3RhdGUuUHJvamVjdEdldEFuYWx5c2lzTGlzdCA9IHJldDtcclxuXHRcdH0sXHJcblx0XHRhZGRjbGFzc2F0dHIoc3RhdGUsIHJldCkge1xyXG5cdFx0XHRzdGF0ZS5hZGRjbGFzc2F0dHIgPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0RGVsT2JqKHN0YXRlLCByZXQpIHtcclxuXHRcdFx0c3RhdGUuRGVsT2JqID0gcmV0O1xyXG5cdFx0fSxcclxuXHRcdGxvZ291dChzdGF0ZSkge1xyXG5cdFx0XHRzdGF0ZS5oYXNMb2dpbiA9IGZhbHNlXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0Z2V0dGVyczoge1xyXG5cdFx0R2V0QXBrU2VydmlvbkluZm8oc3RhdGUpIHtcclxuXHRcdFx0cmV0dXJuIHN0YXRlLmFwa1ZlcnNpb25JbmZvXHJcblx0XHR9LFxyXG5cdFx0bG9naW5pZChzdGF0ZSkge1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkXHJcblx0XHR9LFxyXG5cdFx0Z2V0VXJsKHN0YXRlKSB7XHJcblx0XHRcdHJldHVybiBzdGF0ZS51cmxcclxuXHRcdH0sXHJcblx0XHRnZXRPcmdTQXBpKHN0YXRlLCB1cmwpIHtcclxuXHRcdFx0cmV0dXJuIHN0YXRlLk9JT3JnU0FQSTtcclxuXHRcdH0sXHJcblx0XHRnZXRNb2J4b1NBcGkoc3RhdGUsIHVybCkge1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUuT0lNb2JveFNBUEk7XHJcblx0XHR9LFxyXG5cdFx0Z2V0RGF0YVNBcGkoc3RhdGUsIHVybCkge1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUuT0lEYXRhU0FQSTtcclxuXHRcdH0sXHJcblx0XHRnZXRNb25nb2RiU3ZyKHN0YXRlLCB1cmwpIHtcclxuXHRcdFx0cmV0dXJuIHN0YXRlLk9JTW9uZ29kYlN2cjtcclxuXHRcdH0sXHJcblx0XHRnZXRjbGFzc0F0dHJMaXN0KHN0YXRlKXtcclxuXHRcdFx0cmV0dXJuIHN0YXRlLl9jbGFzc0F0dHJMaXN0W3N0YXRlLnRoaXNhcmVhRnVuY0lEXTtcclxuXHRcdH0sXHJcblx0XHRnZXRjbGFzc0dyaWRTdHlsZUluZm8oc3RhdGUpe1xyXG5cdFx0XHRpZihzdGF0ZS5fY2xhc3NHcmlkU3R5bGVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY0lEXSlcclxuXHRcdFx0XHRyZXR1cm4gc3RhdGUuX2NsYXNzR3JpZFN0eWxlSW5mb1tzdGF0ZS50aGlzYXJlYUZ1bmNJRF1bc3RhdGUudGhpc0VkaXROYW1lXTtcclxuXHRcdFx0ZWxzZSBcclxuXHRcdFx0XHRyZXR1cm4gXCJcIjtcclxuXHRcdH0sXHJcblx0XHRnZXRTdWJDbGFzc0F0dHJMaXN0KHN0YXRlKXtcclxuXHRcdFx0cmV0dXJuIHN0YXRlLl9zdWJDbGFzc0F0dHJMaXN0W3N0YXRlLnRoaXNhcmVhRnVuY1N1YklEXTtcclxuXHRcdH0sXHJcblx0XHRnZXRTdWJDbGFzc0dyaWRTdHlsZUluZm8oc3RhdGUpe1xyXG5cdFx0XHRpZihzdGF0ZS5fc3ViQ2xhc3NHcmlkU3R5bGVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY1N1YklEXSlcclxuXHRcdFx0XHRyZXR1cm4gc3RhdGUuX3N1YkNsYXNzR3JpZFN0eWxlSW5mb1tzdGF0ZS50aGlzYXJlYUZ1bmNTdWJJRF1bc3RhdGUudGhpc0VkaXRTdWJOYW1lXTtcclxuXHRcdFx0ZWxzZSBcclxuXHRcdFx0XHRyZXR1cm4gXCJcIjtcclxuXHRcdH0sXHJcblx0XHRnZXRkaWNWYWx1ZUluZm8oc3RhdGUpe1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUuX2RpY1ZhbHVlSW5mb1tzdGF0ZS50aGlzRGljdE5hbWVdO1xyXG5cdFx0fVxyXG5cdFx0XHJcblx0XHRcclxuXHR9LFxyXG5cdGFjdGlvbnM6IHtcclxuXHRcdC8ve2NvbW1pdH0g6Kej5p6E77yMXHJcblx0XHQvL3VuaXZlcmlmeUluZm8g6Ieq5a6a5LmJ5Y+C5pWwXHJcblx0XHRHZXRBcGtWZXJzaW9uSW5mbzogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0dW5pdmVyaWZ5SW5mbyA9IHVuaXZlcmlmeUluZm8gfHwge307XHJcblx0XHRcdFx0dW5pdmVyaWZ5SW5mby5zZXJ2ZXIgPSB1bml2ZXJpZnlJbmZvLnNlcnZlciB8fCAnJztcclxuXHRcdFx0XHRpZiAodW5pdmVyaWZ5SW5mby5zZXJ2ZXIubGVuZ3RoID09IDApIHtcclxuXHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjon5pyN5Yqh5Zmo5Zyw5Z2A5LiN6IO95Li656m6ISd9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIG9wZW5pbmZvID0gXCJodHRwOi8vXCIgKyB1bml2ZXJpZnlJbmZvLnNlcnZlciArIFwiL1wiOyAvLytcIi9PcmdXZWJTXCJcclxuXHRcdFx0XHQvL+iuvue9ruWFqOWxgOWPguaVsO+8mnVybC3mnI3liqHlmajlnLDlnYBcclxuXHRcdFx0XHRjb21taXQoXCJzZXRVcmxcIixvcGVuaW5mbyk7XHJcblx0XHRcdFx0Ly8gdmFyIHNlciA9IHVuaXZlcmlmeUluZm8uc2VydmVyLnNwbGl0KCcvJyk7XHJcblx0XHRcdFx0Ly8gaWYoc2VyWzFdID09ICdtb2JveDMnKXtcclxuXHRcdFx0XHQvLyBcdC8vIHJlamVjdCh7XCJlcnJNc2dcIjpcIk1vYm94M+aaguaXtuacquaUr+aMgeiHquWKqOabtOaWsO+8gVwifSk7XHJcblx0XHRcdFx0Ly8gXHRyZXNvbHZlKHtjb2RlOicwMDAwMCcsZGF0YTpcIlwiLG1zZzpcIlwifSk7XHJcblx0XHRcdFx0Ly8gXHRyZXR1cm47XHJcblx0XHRcdFx0Ly8gfVxyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogb3BlbmluZm8gKyBcIlBEQS9HZXRBcGtWZXJzaW9uSW5mb1wiLFxyXG5cdFx0XHRcdFx0ZGF0YToge30sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XHQgICAgJ2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpOyBcclxuXHRcdFx0XHRcdFx0aWYocmVzLnN0YXR1c0NvZGU9PTQwNCl7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOlwi5Zyw5Z2A5LiN5a+577yM6K+35qOA5p+l6K+l5Zyw5Z2A77yaXCIrIG9wZW5pbmZvICtcIizmlrnms5XvvJpHZXRBcGtWZXJzaW9uSW5mbyzmmK/lkKbmraPnoa5cIn0pO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2UgaWYocmVzLnN0YXR1c0NvZGU9PTUwMCl7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOlwi5pyq5om+5Yiw5pu05paw5YyF5omA5Zyo55uu5b2V77yBXCJ9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSByZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJzZXRBcGtWZXJzaW9uSW5mb1wiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQubXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHRsb2dpbjogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0dW5pdmVyaWZ5SW5mbyA9IHVuaXZlcmlmeUluZm8gfHwge307XHJcblx0XHRcdFx0dW5pdmVyaWZ5SW5mby5zZXJ2ZXIgPSB1bml2ZXJpZnlJbmZvLnNlcnZlciB8fCAnJztcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvLnVuYW1lID0gdW5pdmVyaWZ5SW5mby51bmFtZSB8fCAnJztcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvLnB3ZCA9IHVuaXZlcmlmeUluZm8ucHdkIHx8ICcnO1xyXG5cdFx0XHRcdGlmICh1bml2ZXJpZnlJbmZvLnNlcnZlci5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOifmnI3liqHlmajlnLDlnYDkuI3og73kuLrnqbohJ30pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRpZiAodW5pdmVyaWZ5SW5mby51bmFtZS5sZW5ndGggPCAyKSB7XHJcblx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6J+i0puWPt+acgOefreS4uiAyIOS4quWtl+espiEnfSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICh1bml2ZXJpZnlJbmZvLnB3ZC5sZW5ndGggPCAxKSB7XHJcblx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6J+WvhueggeacgOefreS4uiAx5Liq5a2X56ymISd9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dmFyIG9wZW5pbmZvID0gXCJodHRwOi8vXCIgKyB1bml2ZXJpZnlJbmZvLnNlcnZlciArIFwiL1wiO1xyXG5cdFx0XHRcdC8v6K6+572u5YWo5bGA5Y+C5pWw77yadXJsLeacjeWKoeWZqOWcsOWdgFxyXG5cdFx0XHRcdGNvbW1pdChcInNldFVybFwiLG9wZW5pbmZvKTtcclxuXHRcdFx0XHR2YXIgc2VyID0gdW5pdmVyaWZ5SW5mby5zZXJ2ZXIuc3BsaXQoJy8nKTtcclxuXHRcdFx0XHR2YXIgdXJsID0gb3BlbmluZm8gKyBcIlBEQS9TaWduSW5cIjtcclxuXHRcdFx0XHR2YXIgaGVhZGVyID0geydjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ307XHJcblx0XHRcdFx0Y29tbWl0KFwic2V0T3JnU0FwaVwiLCcnKTtcclxuXHRcdFx0XHRjb21taXQoXCJzZXRNb2J4b1NBcGlcIiwnJyk7XHJcblx0XHRcdFx0Y29tbWl0KFwic2V0RGF0YVNBcGlcIiwnJyk7XHJcblx0XHRcdFx0Y29tbWl0KFwic2V0TW9uZ29kYlN2clwiLCcnKTtcclxuXHRcdFx0XHRpZihzZXJbMV0gPT0gJ21vYm94MycpeyAvL+WIpOaWreWcsOWdgOaYr+WQpuaYr01vYm94M1xyXG5cdFx0XHRcdFx0dmFyIG9yZ1NBcGkgPSBcImh0dHA6Ly9cIiArIHNlclswXS5zcGxpdCgnOicpWzBdICsgXCI6NTEwMS9cIjtcclxuXHRcdFx0XHRcdHZhciBtb2J4b1NBcGkgPSBcImh0dHA6Ly9cIiArIHNlclswXS5zcGxpdCgnOicpWzBdICsgXCI6NTEwMi9cIjtcclxuXHRcdFx0XHRcdHZhciBkYXRhU0FwaSA9IFwiaHR0cDovL1wiICsgc2VyWzBdLnNwbGl0KCc6JylbMF0gKyBcIjo1MTAzL1wiO1xyXG5cdFx0XHRcdFx0dmFyIG1vbmdvZGJTdnIgPSBcImh0dHA6Ly9cIiArIHNlclswXS5zcGxpdCgnOicpWzBdICsgXCI6NTIwMS9cIjtcclxuXHRcdFx0XHRcdGNvbW1pdChcInNldE9yZ1NBcGlcIixvcmdTQXBpKTtcclxuXHRcdFx0XHRcdGNvbW1pdChcInNldE1vYnhvU0FwaVwiLG1vYnhvU0FwaSk7XHJcblx0XHRcdFx0XHRjb21taXQoXCJzZXREYXRhU0FwaVwiLGRhdGFTQXBpKTtcclxuXHRcdFx0XHRcdGNvbW1pdChcInNldE1vbmdvZGJTdnJcIixtb25nb2RiU3ZyKTtcclxuXHRcdFx0XHRcdHVybCA9IG9yZ1NBcGkrJ2FwaS91c2VyL2FjZS9WZXJpZnlQYXNzd29yZCc7XHJcblx0XHRcdFx0XHR1bml2ZXJpZnlJbmZvID0ge1xyXG5cdFx0XHRcdFx0XHRhcHBfdHlwZTogXCJtb2JveFwiLFxyXG5cdFx0XHRcdFx0XHR1c2VyX2xvZ2luOiBCYXNlNjQuZW5jb2RlKHVuaXZlcmlmeUluZm8udW5hbWUpLFxyXG5cdFx0XHRcdFx0XHR1c2VyX3BzdzogQmFzZTY0LmVuY29kZSh1bml2ZXJpZnlJbmZvLnB3ZCksXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0aGVhZGVyPXt9O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHVybCxcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiBoZWFkZXIsXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcyk7IFxyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSByZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcgfHwgcmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJsb2dpblwiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQubXNnP3JldC5tc2c6cmV0LmVycl9tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdGFyZWFGdW5jOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkKTtcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvLmxvZ2luSW5mbyA9IEpTT04uc3RyaW5naWZ5KHtcclxuXHRcdFx0XHRcdHNlcnZlcjogdW5pLmdldFN0b3JhZ2VTeW5jKCdzZXJ2ZXInKSxcclxuXHRcdFx0XHRcdHVuYW1lOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ2FjY291bnQnKSxcclxuXHRcdFx0XHRcdHB3ZDogdW5pLmdldFN0b3JhZ2VTeW5jKCdwYXNzd29yZCcpLFxyXG5cdFx0XHRcdFx0Y25hbWU6IHBsdXMuZGV2aWNlLm1vZGVsLFxyXG5cdFx0XHRcdFx0dHlwZTogXCIwXCJcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHR2YXIgdXJsID0gc3RhdGUudXJsICsgXCJQREEvUERBQXJlYVwiO1xyXG5cdFx0XHRcdHZhciBoZWFkZXIgPSB7J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfTtcclxuXHRcdFx0XHRpZihzdGF0ZS5PSU1vYm94U0FQSSl7IC8v5Yik5pat5piv5ZCm5pivTW9ib3gzXHJcblx0XHRcdFx0XHR1cmwgPSBzdGF0ZS5PSU1vYm94U0FQSSsnYXBpL2FwcC9hcmVhL0dldExpc3Q/c2Vzc2lvbmlkPScrc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkO1xyXG5cdFx0XHRcdFx0dW5pdmVyaWZ5SW5mbyA9IHtcclxuXHRcdFx0XHRcdFx0YXBwX3R5cGU6IFwiTUVTXCIsXHJcblx0XHRcdFx0XHR9O1xyXG5cdFx0XHRcdFx0aGVhZGVyPXt9O1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB1cmwsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjogaGVhZGVyLFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHRpZihyZXMuc3RhdHVzQ29kZT09NDA0KXtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6XCLlnLDlnYDkuI3lr7nvvIzor7fmo4Dmn6Xor6XlnLDlnYDvvJpcIisgb3BlbmluZm99KTtcclxuXHRcdFx0XHRcdFx0fSBcclxuXHRcdFx0XHRcdFx0Ly8gaWYoSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEpLmluY2x1ZGVzKCdMb2dpbiBQYWdlIC0gQWNlIEFkbWluJykpe1xyXG5cdFx0XHRcdFx0XHQvLyBcdHVuaS5yZUxhdW5jaCh7XHJcblx0XHRcdFx0XHRcdC8vIFx0XHR1cmw6ICcuLi9sb2dpbi9pbmRleCdcclxuXHRcdFx0XHRcdFx0Ly8gXHR9KVxyXG5cdFx0XHRcdFx0XHQvLyBcdHJlamVjdCh7XCJlcnJNc2dcIjpcIueZu+W9leW3sui/h+acn++8jOivt+mHjeaWsOeZu+W9lVwifSk7XHJcblx0XHRcdFx0XHRcdC8vIH1cclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGE7XHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJyB8fCByZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcImFyZWFGdW5jXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5tc2c/cmV0Lm1zZzpyZXQuZXJyX21zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdC8vIE1vYm94M+iOt+WPluW6lOeUqOmihuWfn+S4i+eahOWKn+iDveeCuVxyXG5cdFx0R2V0RnVuY1RyZWU6IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQpO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUuT0lNb2JveFNBUEkrJ2FwaS9hcHAvR2V0RnVuY1RyZWU/c2Vzc2lvbmlkPScrc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAoX3JlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhfcmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gX3Jlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbW1pdChcImFyZWFGdW5jXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5lcnJfbXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHRjbGFzc0F0dHJMaXN0OiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvLmxvZ2luSW5mbyA9IEpTT04uc3RyaW5naWZ5KHtcclxuXHRcdFx0XHRcdHNlcnZlcjogdW5pLmdldFN0b3JhZ2VTeW5jKCdzZXJ2ZXInKSxcclxuXHRcdFx0XHRcdHVuYW1lOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ2FjY291bnQnKSxcclxuXHRcdFx0XHRcdHB3ZDogdW5pLmdldFN0b3JhZ2VTeW5jKCdwYXNzd29yZCcpLFxyXG5cdFx0XHRcdFx0Y25hbWU6IHBsdXMuZGV2aWNlLm1vZGVsLFxyXG5cdFx0XHRcdFx0dHlwZTogXCIwXCJcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLnVybCArIFwiUERBL1BEQUF0dHJMaXN0XCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0XHQnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdC8vIGlmKEpTT04uc3RyaW5naWZ5KHJlcy5kYXRhKS5pbmNsdWRlcygnTG9naW4gUGFnZSAtIEFjZSBBZG1pbicpKXtcclxuXHRcdFx0XHRcdFx0Ly8gXHR1bmkucmVMYXVuY2goe1xyXG5cdFx0XHRcdFx0XHQvLyBcdFx0dXJsOiAnLi4vbG9naW4vaW5kZXgnXHJcblx0XHRcdFx0XHRcdC8vIFx0fSlcclxuXHRcdFx0XHRcdFx0Ly8gXHRyZWplY3Qoe1wiZXJyTXNnXCI6XCLnmbvlvZXlt7Lov4fmnJ/vvIzor7fph43mlrDnmbvlvZVcIn0pO1xyXG5cdFx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcImNsYXNzQXR0ckxpc3RcIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0Lm1zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0Y2xhc3NHcmlkU3R5bGVJbmZvOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvLmxvZ2luSW5mbyA9IEpTT04uc3RyaW5naWZ5KHtcclxuXHRcdFx0XHRcdHNlcnZlcjogdW5pLmdldFN0b3JhZ2VTeW5jKCdzZXJ2ZXInKSxcclxuXHRcdFx0XHRcdHVuYW1lOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ2FjY291bnQnKSxcclxuXHRcdFx0XHRcdHB3ZDogdW5pLmdldFN0b3JhZ2VTeW5jKCdwYXNzd29yZCcpLFxyXG5cdFx0XHRcdFx0Y25hbWU6IHBsdXMuZGV2aWNlLm1vZGVsLFxyXG5cdFx0XHRcdFx0dHlwZTogXCIwXCJcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS51cmwgKyBcIlBEQS9QREFHcmlkU3R5bGVHZXRJbmZvXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0XHQnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdC8vIGlmKEpTT04uc3RyaW5naWZ5KHJlcy5kYXRhKS5pbmNsdWRlcygnTG9naW4gUGFnZSAtIEFjZSBBZG1pbicpKXtcclxuXHRcdFx0XHRcdFx0Ly8gXHR1bmkucmVMYXVuY2goe1xyXG5cdFx0XHRcdFx0XHQvLyBcdFx0dXJsOiAnLi4vbG9naW4vaW5kZXgnXHJcblx0XHRcdFx0XHRcdC8vIFx0fSlcclxuXHRcdFx0XHRcdFx0Ly8gXHRyZWplY3Qoe1wiZXJyTXNnXCI6XCLnmbvlvZXlt7Lov4fmnJ/vvIzor7fph43mlrDnmbvlvZVcIn0pO1xyXG5cdFx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdC8vIHZhciBkYXRhID17fTtcclxuXHRcdFx0XHRcdFx0XHQvLyBWdWUuc2V0KGRhdGEsdW5pdmVyaWZ5SW5mby5uYW1lLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwiY2xhc3NHcmlkU3R5bGVJbmZvXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdHN1YkNsYXNzQXR0ckxpc3Q6IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHVuaXZlcmlmeUluZm8ubG9naW5JbmZvID0gSlNPTi5zdHJpbmdpZnkoe1xyXG5cdFx0XHRcdFx0c2VydmVyOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3NlcnZlcicpLFxyXG5cdFx0XHRcdFx0dW5hbWU6IHVuaS5nZXRTdG9yYWdlU3luYygnYWNjb3VudCcpLFxyXG5cdFx0XHRcdFx0cHdkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3Bhc3N3b3JkJyksXHJcblx0XHRcdFx0XHRjbmFtZTogcGx1cy5kZXZpY2UubW9kZWwsXHJcblx0XHRcdFx0XHR0eXBlOiBcIjBcIlxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUudXJsICsgXCJQREEvUERBQXR0ckxpc3RcIixcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XHRcdCdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0Ly8gaWYoSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEpLmluY2x1ZGVzKCdMb2dpbiBQYWdlIC0gQWNlIEFkbWluJykpe1xyXG5cdFx0XHRcdFx0XHQvLyBcdHVuaS5yZUxhdW5jaCh7XHJcblx0XHRcdFx0XHRcdC8vIFx0XHR1cmw6ICcuLi9sb2dpbi9pbmRleCdcclxuXHRcdFx0XHRcdFx0Ly8gXHR9KVxyXG5cdFx0XHRcdFx0XHQvLyBcdHJlamVjdCh7XCJlcnJNc2dcIjpcIueZu+W9leW3sui/h+acn++8jOivt+mHjeaWsOeZu+W9lVwifSk7XHJcblx0XHRcdFx0XHRcdC8vIH1cclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwic3ViQ2xhc3NBdHRyTGlzdFwiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQubXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHRzdWJDbGFzc0dyaWRTdHlsZUluZm86IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHVuaXZlcmlmeUluZm8ubG9naW5JbmZvID0gSlNPTi5zdHJpbmdpZnkoe1xyXG5cdFx0XHRcdFx0c2VydmVyOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3NlcnZlcicpLFxyXG5cdFx0XHRcdFx0dW5hbWU6IHVuaS5nZXRTdG9yYWdlU3luYygnYWNjb3VudCcpLFxyXG5cdFx0XHRcdFx0cHdkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3Bhc3N3b3JkJyksXHJcblx0XHRcdFx0XHRjbmFtZTogcGx1cy5kZXZpY2UubW9kZWwsXHJcblx0XHRcdFx0XHR0eXBlOiBcIjBcIlxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLnVybCArIFwiUERBL1BEQUdyaWRTdHlsZUdldEluZm9cIixcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XHRcdCdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0Ly8gaWYoSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEpLmluY2x1ZGVzKCdMb2dpbiBQYWdlIC0gQWNlIEFkbWluJykpe1xyXG5cdFx0XHRcdFx0XHQvLyBcdHVuaS5yZUxhdW5jaCh7XHJcblx0XHRcdFx0XHRcdC8vIFx0XHR1cmw6ICcuLi9sb2dpbi9pbmRleCdcclxuXHRcdFx0XHRcdFx0Ly8gXHR9KVxyXG5cdFx0XHRcdFx0XHQvLyBcdHJlamVjdCh7XCJlcnJNc2dcIjpcIueZu+W9leW3sui/h+acn++8jOivt+mHjeaWsOeZu+W9lVwifSk7XHJcblx0XHRcdFx0XHRcdC8vIH1cclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gdmFyIGRhdGEgPXt9O1xyXG5cdFx0XHRcdFx0XHRcdC8vIFZ1ZS5zZXQoZGF0YSx1bml2ZXJpZnlJbmZvLm5hbWUscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJzdWJDbGFzc0dyaWRTdHlsZUluZm9cIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0LmVycl9tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdGRpY1ZhbHVlSW5mbzogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0dW5pdmVyaWZ5SW5mby5sb2dpbkluZm8gPSBKU09OLnN0cmluZ2lmeSh7XHJcblx0XHRcdFx0XHRzZXJ2ZXI6IHVuaS5nZXRTdG9yYWdlU3luYygnc2VydmVyJyksXHJcblx0XHRcdFx0XHR1bmFtZTogdW5pLmdldFN0b3JhZ2VTeW5jKCdhY2NvdW50JyksXHJcblx0XHRcdFx0XHRwd2Q6IHVuaS5nZXRTdG9yYWdlU3luYygncGFzc3dvcmQnKSxcclxuXHRcdFx0XHRcdGNuYW1lOiBwbHVzLmRldmljZS5tb2RlbCxcclxuXHRcdFx0XHRcdHR5cGU6IFwiMFwiXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUudXJsICsgXCJQREEvUERBRGljVmFsdWVHZXRJbmZvXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0XHQnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdHN0YXRlLnRoaXNEaWN0TmFtZSA9IHVuaXZlcmlmeUluZm8uZGljX25hbWVcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJkaWNWYWx1ZUluZm9cIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0Lm1zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0RGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbzogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0dW5pdmVyaWZ5SW5mby5sb2dpbkluZm8gPSBKU09OLnN0cmluZ2lmeSh7XHJcblx0XHRcdFx0XHRzZXJ2ZXI6IHVuaS5nZXRTdG9yYWdlU3luYygnc2VydmVyJyksXHJcblx0XHRcdFx0XHR1bmFtZTogdW5pLmdldFN0b3JhZ2VTeW5jKCdhY2NvdW50JyksXHJcblx0XHRcdFx0XHRwd2Q6IHVuaS5nZXRTdG9yYWdlU3luYygncGFzc3dvcmQnKSxcclxuXHRcdFx0XHRcdGNuYW1lOiBwbHVzLmRldmljZS5tb2RlbCxcclxuXHRcdFx0XHRcdHR5cGU6IFwiMFwiXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS51cmwgKyBcIlBEQS9QREFEYXRhT2JqUnVuQ3VzdG9tRXZlbnRcIixcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XHRcdCdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwiRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mb1wiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQubXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHRxdWVyeVNlbHBzbjogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0dmFyIHVybCA9IHN0YXRlLnVybCArIFwic2VscHNuL3F1ZXJ5anNvblwiO1xyXG5cdFx0XHRcdHZhciBkYXRhanNvbiA9IHVuaXZlcmlmeUluZm87XHJcblx0XHRcdFx0dmFyIGhlYWRlciA9IHsnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCd9O1xyXG5cdFx0XHRcdGlmKHN0YXRlLk9JT3JnU0FQSSl7IC8v5Yik5pat5piv5ZCm5pivTW9ib3gzXHJcblx0XHRcdFx0IFx0dXJsID0gc3RhdGUuT0lPcmdTQVBJKydhcGkvdXNlci9xdWVyeS9xdWVyeT9zZXNzaW9uaWQ9JytzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQ7XHJcblx0XHRcdFx0XHRkYXRhanNvbiA9IHtcclxuXHRcdFx0XHQgXHRcdHF1ZXJ5X3N0cjogdW5pdmVyaWZ5SW5mby5qcCxcclxuXHRcdFx0XHQgXHR9O1xyXG5cdFx0XHRcdCBcdGhlYWRlcj17fTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB1cmwsXHJcblx0XHRcdFx0XHRkYXRhOiBkYXRhanNvbixcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IGhlYWRlcixcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0dHJ5e1xyXG5cdFx0XHRcdFx0XHRcdHJlcyA9IEpTT04ucGFyc2UocmVzLmRhdGEpO1xyXG5cdFx0XHRcdFx0XHR9Y2F0Y2goZSl7IFxyXG5cdFx0XHRcdFx0XHRcdHJlcyA9IHJlcy5kYXRhO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGlmIChyZXMuY29kZT09JzAwMDAwJyB8fCByZXMuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcInF1ZXJ5U2VscHNuXCIscmVzKTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJlcyk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJlcy5tc2c/cmVzLm1zZzpyZXMuZXJyX21zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0UHJvamVjdEdldEFuYWx5c2lzTGlzdDogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0IHZhciB1cmwgPSBzdGF0ZS51cmwgKyBcImJwbS9Qcm9qZWN0R2V0QW5hbHlzaXNMaXN0XCI7XHJcblx0XHRcdFx0IHZhciBoZWFkZXIgPSB7J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfTtcclxuXHRcdFx0XHQgaWYoc3RhdGUuT0lNb2JveFNBUEkpeyAvL+WIpOaWreaYr+WQpuaYr01vYm94M1xyXG5cdFx0XHRcdCBcdC8vIHVybCA9IHN0YXRlLk9JTW9ib3hTQVBJKydhcGkvYXBwL2FyZWEvR2V0TGlzdD9zZXNzaW9uaWQ9JytzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQ7XHJcblx0XHRcdFx0IFx0Ly8gdW5pdmVyaWZ5SW5mbyA9IHtcclxuXHRcdFx0XHQgXHQvLyBcdGFwcF90eXBlOiBcIk1FU1wiLFxyXG5cdFx0XHRcdCBcdC8vIH07XHJcblx0XHRcdFx0IFx0Ly8gaGVhZGVyPXt9O1xyXG5cdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOlwiTW9ib3gz5pqC5pe25pyq5pSv5oyB6YCJ5oup6aG555uu5o6l5Y+j77yBXCJ9KTtcclxuXHRcdFx0XHRcdC8vIHJlc29sdmUoe2NvZGU6JzAwMDAwJyxkYXRhOlwiXCIsbXNnOlwiXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHQgfVxyXG5cdFx0XHRcdCAgXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB1cmwsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjogaGVhZGVyLFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSByZXMuZGF0YTtcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwiUHJvamVjdEdldEFuYWx5c2lzTGlzdFwiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQubXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHRhZGRjbGFzc2F0dHI6IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0dW5pdmVyaWZ5SW5mby5sb2dpbkluZm8gPSBKU09OLnN0cmluZ2lmeSh7XHJcblx0XHRcdFx0XHRzZXJ2ZXI6IHVuaS5nZXRTdG9yYWdlU3luYygnc2VydmVyJyksXHJcblx0XHRcdFx0XHR1bmFtZTogdW5pLmdldFN0b3JhZ2VTeW5jKCdhY2NvdW50JyksXHJcblx0XHRcdFx0XHRwd2Q6IHVuaS5nZXRTdG9yYWdlU3luYygncGFzc3dvcmQnKSxcclxuXHRcdFx0XHRcdGNuYW1lOiBwbHVzLmRldmljZS5tb2RlbCxcclxuXHRcdFx0XHRcdHR5cGU6IFwiMFwiXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS51cmwgKyBcIlBEQS9hZGRjbGFzc2F0dHJcIixcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiB7XHJcblx0XHRcdFx0XHRcdCdjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ1xyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0Ly8gaWYoSlNPTi5zdHJpbmdpZnkocmVzLmRhdGEpLmluY2x1ZGVzKCdMb2dpbiBQYWdlIC0gQWNlIEFkbWluJykpe1xyXG5cdFx0XHRcdFx0XHQvLyBcdHVuaS5yZUxhdW5jaCh7XHJcblx0XHRcdFx0XHRcdC8vIFx0XHR1cmw6ICcuLi9sb2dpbi9pbmRleCdcclxuXHRcdFx0XHRcdFx0Ly8gXHR9KVxyXG5cdFx0XHRcdFx0XHQvLyBcdHJlamVjdCh7XCJlcnJNc2dcIjpcIueZu+W9leW3sui/h+acn++8jOivt+mHjeaWsOeZu+W9lVwifSk7XHJcblx0XHRcdFx0XHRcdC8vIH1cclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGE7XHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcImFkZGNsYXNzYXR0clwiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpKU09OLnN0cmluZ2lmeShyZXQpfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHREZWxPYmo6IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUudXJsICsgXCJQREEvRGVsT2JqXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0XHQnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhO1xyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJEZWxPYmpcIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6SlNPTi5zdHJpbmdpZnkocmV0KX0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0XHJcblx0XHQvLyBhcGkvY2xhc3MvYXR0ci9HZXRMaXN0P3Nlc3Npb25pZD1TRVNTSU9OX0lEXHJcblx0XHQvLyBNb2JveDPlvpfliLDmlbDmja7nsbvlsZ7mgKdcclxuXHRcdGNsYXNzQXR0ckdldExpc3Q6IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS5PSURhdGFTQVBJKydhcGkvY2xhc3MvYXR0ci9HZXRMaXN0P3Nlc3Npb25pZD0nK3N0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZCxcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKF9yZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coX3Jlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IF9yZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJjbGFzc0F0dHJMaXN0XCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5lcnJfbXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0Ly8gYXBpL2NsYXNzL2F0dHIvR2V0TGlzdD9zZXNzaW9uaWQ9U0VTU0lPTl9JRFxyXG5cdFx0Ly8gTW9ib3gz5b6X5Yiw5pWw5o2u57G75bGe5oCnXHJcblx0XHRzdWJDbGFzc0F0dHJHZXRMaXN0OiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUuT0lEYXRhU0FQSSsnYXBpL2NsYXNzL2F0dHIvR2V0TGlzdD9zZXNzaW9uaWQ9JytzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChfcmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKF9yZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSBfcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwic3ViQ2xhc3NBdHRyTGlzdFwiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQuZXJyX21zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdC8vIGFwaS9kaWN0L2l0ZW0vR2V0SW5mbz9zZXNzaW9uaWQ9U0VTU0lPTl9JRFxyXG5cdFx0Ly8gTW9ib3gz5b6X5Yiw5a2X5YW46aG55YiX6KGoXHJcblx0XHREaWN0SXRlbUdldExpc3Q6IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS5PSU1vYm94U0FQSSsnYXBpL2RpY3QvaXRlbS9HZXRJbmZvP3Nlc3Npb25pZD0nK3N0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZCxcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKF9yZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coX3Jlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IF9yZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5lcnJfbXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0Ly8gYXBpL2RpY3QvR2V0SW5mbzI/c2Vzc2lvbmlkPVNFU1NJT05fSURcclxuXHRcdC8vIE1vYm94M+W+l+WIsOWtl+WFuOS/oeaBr1xyXG5cdFx0RGljdEdldEluZm86IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS5PSU1vYm94U0FQSSsnYXBpL2RpY3QvR2V0SW5mbzI/c2Vzc2lvbmlkPScrc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAoX3JlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhfcmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gX3Jlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0LmVycl9tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdC8vIGFwaS9kYXRhb2JqL0NyZWF0ZT9zZXNzaW9uaWQ9U0VTU0lPTl9JRFxyXG5cdFx0Ly8gTW9ib3gz5Yib5bu65pWw5o2u5a+56LGhXHJcblx0XHRjcmVhdGVEYXRhT2JqOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLk9JRGF0YVNBUEkrJ2FwaS9kYXRhb2JqL0NyZWF0ZT9zZXNzaW9uaWQ9JytzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChfcmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKF9yZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSBfcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQuZXJyX21zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0Ly8gYXBpL2NsYXNzL3Vpc3R5bGUvR2V0SW5mbz9zZXNzaW9uaWQ9U0VTU0lPTl9JRFxyXG5cdFx0Ly8gTW9ib3gz5b6X5Yiw5pWw5o2u57G75pi+56S65qC35byP5L+h5oGvXHJcblx0XHRVSVN0eWxlR2V0SW5mbzogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkKTtcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLk9JRGF0YVNBUEkrJ2FwaS9jbGFzcy91aXN0eWxlL0dldEluZm8/c2Vzc2lvbmlkPScrc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAoX3JlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhfcmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gX3Jlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbW1pdChcImFyZWFGdW5jXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5lcnJfbXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0Ly8gYXBpL2RhdGFvYmovUnVuQ3VzdG9tRXZlbnQ/c2Vzc2lvbmlkPVNFU1NJT05fSURcclxuXHRcdC8vIE1vYm94M+aJp+ihjOiHquWumuS5ieiEmuacrFxyXG5cdFx0cnVuQ3VzdG9tRXZlbnQ6IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZCk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS5PSURhdGFTQVBJKydhcGkvZGF0YW9iai9SdW5DdXN0b21FdmVudD9zZXNzaW9uaWQ9JytzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChfcmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKF9yZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSBfcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gY29tbWl0KFwiYXJlYUZ1bmNcIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0LmVycl9tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHQvLyBhcGkvZGF0YW9iai9EZWxldGU/c2Vzc2lvbmlkPVNFU1NJT05fSURcclxuXHRcdC8vIE1vYm94M+WIoOmZpOaVsOaNruWvueixoVxyXG5cdFx0ZGF0YU9iakRlbDogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkKTtcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLk9JRGF0YVNBUEkrJ2FwaS9kYXRhb2JqL0RlbGV0ZT9zZXNzaW9uaWQ9JytzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChfcmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKF9yZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSBfcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gY29tbWl0KFwiYXJlYUZ1bmNcIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0LmVycl9tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHQvLyBhcGkvZGF0YW9iai9xdWVyeS9RdWVyeT9zZXNzaW9uaWQ9U0VTU0lPTl9JRFxyXG5cdFx0Ly8gTW9ib3gz5p+l6K+i5pWw5o2u5a+56LGhXHJcblx0XHRkYXRhT2JqUXVlcnk6IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZCk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS5PSURhdGFTQVBJKydhcGkvZGF0YW9iai9xdWVyeS9RdWVyeT9zZXNzaW9uaWQ9JytzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChfcmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKF9yZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSBfcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gY29tbWl0KFwiYXJlYUZ1bmNcIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0LmVycl9tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHQvLyBhcGkvYXBwL0dldEluZm8/c2Vzc2lvbmlkPVNFU1NJT05fSURcclxuXHRcdC8vIE1vYm94M+iOt+WPluWKn+iDveeCueS/oeaBr1xyXG5cdFx0YXBwR2V0SW5mbzogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZCk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS5PSU1vYm94U0FQSSsnYXBpL2FwcC9HZXRJbmZvP3Nlc3Npb25pZD0nK3N0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZCxcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKF9yZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coX3Jlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IF9yZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBjb21taXQoXCJhcmVhRnVuY1wiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQuZXJyX21zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdH1cclxufSlcclxuXHJcbmV4cG9ydCBkZWZhdWx0IHN0b3JlXHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///200\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 _vue = _interopRequireDefault(__webpack_require__(/*! vue */ 127));\nvar _vuex = _interopRequireDefault(__webpack_require__(/*! vuex */ 201));\nvar _base = _interopRequireDefault(__webpack_require__(/*! ../components/js-base64/base64.js */ 65));\nvar _app = _interopRequireDefault(__webpack_require__(/*! ./modules/app */ 202));\n_vue.default.use(_vuex.default);\nvar store = new _vuex.default.Store({\n modules: {\n app: _app.default,\n Base64: _base.default\n },\n state: {\n hasLogin: false,\n deviceId: '',\n apkVersionInfo: \"\",\n loginProvider: \"\",\n areaFunc: '',\n thisareaFuncID: '',\n thisareaFuncSubID: '',\n thisEditName: '',\n thisEditSubName: '',\n thisDictName: '',\n _classAttrList: {},\n _classGridStyleInfo: {},\n _subClassAttrList: {},\n _subClassGridStyleInfo: {},\n _dicValueInfo: {},\n DataObjRunCustomEventInfo: '',\n querySelpsn: '',\n ProjectGetAnalysisList: '',\n addclassattr: '',\n DelObj: '',\n username: \"sa\",\n userpwd: \"0000\",\n url: \"139.159.144.10:8080/mobox3\",\n //115.29.185.26:5000\n OIOrgSAPI: '',\n //115.29.185.26:5101\n OIMoboxSAPI: '',\n //115.29.185.26:5102\n OIDataSAPI: '',\n //115.29.185.26:5103\n OIMongodbSvr: '' //115.29.185.26:5201\n },\n\n mutations: {\n setDeviceId: function setDeviceId(state, ret) {\n state.deviceId = ret;\n },\n setUrl: function setUrl(state, url) {\n state.url = url;\n },\n setOrgSApi: function setOrgSApi(state, url) {\n state.OIOrgSAPI = url;\n },\n setMobxoSApi: function setMobxoSApi(state, url) {\n state.OIMoboxSAPI = url;\n },\n setDataSApi: function setDataSApi(state, url) {\n state.OIDataSAPI = url;\n },\n setMongodbSvr: function setMongodbSvr(state, url) {\n state.OIMongodbSvr = url;\n },\n setApkVersionInfo: function setApkVersionInfo(state, ret) {\n state.apkVersionInfo = ret;\n },\n login: function login(state, provider) {\n state.hasLogin = true;\n state.loginProvider = provider;\n },\n areaFunc: function areaFunc(state, ret) {\n state.areaFunc = ret;\n },\n setareaFuncid: function setareaFuncid(state, id) {\n state.thisareaFuncID = id;\n },\n setareaFunSubcid: function setareaFunSubcid(state, id) {\n state.thisareaFuncSubID = id;\n },\n seteditName: function seteditName(state, editName) {\n state.thisEditName = editName;\n },\n seteditSubName: function seteditSubName(state, editName) {\n state.thisEditSubName = editName;\n },\n setDictName: function setDictName(state, dictName) {\n state.thisDictName = dictName;\n },\n classAttrList: function classAttrList(state, ret) {\n // state._classAttrList[state.thisareaFuncID] = ret;\n _vue.default.set(state._classAttrList, state.thisareaFuncID, ret);\n },\n classGridStyleInfo: function classGridStyleInfo(state, ret) {\n // state._classGridStyleInfo[state.thisareaFuncID] = ret;\n var data = {};\n if (state._classGridStyleInfo[state.thisareaFuncID]) data = state._classGridStyleInfo[state.thisareaFuncID];\n _vue.default.set(data, state.thisEditName, ret);\n _vue.default.set(state._classGridStyleInfo, state.thisareaFuncID, data);\n },\n subClassAttrList: function subClassAttrList(state, ret) {\n _vue.default.set(state._subClassAttrList, state.thisareaFuncSubID, ret);\n },\n subClassGridStyleInfo: function subClassGridStyleInfo(state, ret) {\n var data = {};\n if (state._subClassGridStyleInfo[state.thisareaFuncSubID]) data = state._subClassGridStyleInfo[state.thisareaFuncSubID];\n _vue.default.set(data, state.thisEditSubName, ret);\n _vue.default.set(state._subClassGridStyleInfo, state.thisareaFuncSubID, data);\n },\n dicValueInfo: function dicValueInfo(state, ret) {\n // state._dicValueInfo[state.thisareaFuncID] = ret;\n _vue.default.set(state._dicValueInfo, state.thisDictName, ret);\n },\n DataObjRunCustomEventInfo: function DataObjRunCustomEventInfo(state, ret) {\n state.DataObjRunCustomEventInfo = ret;\n },\n querySelpsn: function querySelpsn(state, ret) {\n state.querySelpsn = ret;\n },\n ProjectGetAnalysisList: function ProjectGetAnalysisList(state, ret) {\n state.ProjectGetAnalysisList = ret;\n },\n addclassattr: function addclassattr(state, ret) {\n state.addclassattr = ret;\n },\n DelObj: function DelObj(state, ret) {\n state.DelObj = ret;\n },\n logout: function logout(state) {\n state.hasLogin = false;\n }\n },\n getters: {\n getDeviceId: function getDeviceId(state, ret) {\n return state.deviceId;\n },\n GetApkServionInfo: function GetApkServionInfo(state) {\n return state.apkVersionInfo;\n },\n loginid: function loginid(state) {\n return state.loginProvider.loginid;\n },\n getUrl: function getUrl(state) {\n return state.url;\n },\n getOrgSApi: function getOrgSApi(state, url) {\n return state.OIOrgSAPI;\n },\n getMobxoSApi: function getMobxoSApi(state, url) {\n return state.OIMoboxSAPI;\n },\n getDataSApi: function getDataSApi(state, url) {\n return state.OIDataSAPI;\n },\n getMongodbSvr: function getMongodbSvr(state, url) {\n return state.OIMongodbSvr;\n },\n getclassAttrList: function getclassAttrList(state) {\n return state._classAttrList[state.thisareaFuncID];\n },\n getclassGridStyleInfo: function getclassGridStyleInfo(state) {\n if (state._classGridStyleInfo[state.thisareaFuncID]) return state._classGridStyleInfo[state.thisareaFuncID][state.thisEditName];else return \"\";\n },\n getSubClassAttrList: function getSubClassAttrList(state) {\n return state._subClassAttrList[state.thisareaFuncSubID];\n },\n getSubClassGridStyleInfo: function getSubClassGridStyleInfo(state) {\n if (state._subClassGridStyleInfo[state.thisareaFuncSubID]) return state._subClassGridStyleInfo[state.thisareaFuncSubID][state.thisEditSubName];else return \"\";\n },\n getdicValueInfo: function getdicValueInfo(state) {\n return state._dicValueInfo[state.thisDictName];\n }\n },\n actions: {\n //{commit} 解构,\n //univerifyInfo 自定义参数\n GetApkVersionInfo: function GetApkVersionInfo(_ref, univerifyInfo) {\n var commit = _ref.commit,\n state = _ref.state;\n return new Promise(function (resolve, reject) {\n univerifyInfo = univerifyInfo || {};\n univerifyInfo.server = univerifyInfo.server || '';\n if (univerifyInfo.server.length == 0) {\n reject({\n \"errMsg\": '服务器地址不能为空!'\n });\n }\n var openinfo = \"http://\" + univerifyInfo.server + \"/\"; //+\"/OrgWebS\"\n //设置全局参数:url-服务器地址\n commit(\"setUrl\", openinfo);\n // var ser = univerifyInfo.server.split('/');\n // if(ser[1] == 'mobox3'){\n // \t// reject({\"errMsg\":\"Mobox3暂时未支持自动更新!\"});\n // \tresolve({code:'00000',data:\"\",msg:\"\"});\n // \treturn;\n // }\n uni.request({\n url: openinfo + \"PDA/GetApkVersionInfo\",\n data: {},\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:210\");\n if (res.statusCode == 404) {\n reject({\n \"errMsg\": \"地址不对,请检查该地址:\" + openinfo + \",方法:GetApkVersionInfo,是否正确\"\n });\n } else if (res.statusCode == 500) {\n reject({\n \"errMsg\": \"未找到更新包所在目录!\"\n });\n }\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"setApkVersionInfo\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:225\");\n reject(err);\n }\n });\n });\n },\n login: function login(_ref2, univerifyInfo) {\n var commit = _ref2.commit,\n state = _ref2.state;\n return new Promise(function (resolve, reject) {\n univerifyInfo = univerifyInfo || {};\n univerifyInfo.server = univerifyInfo.server || '';\n univerifyInfo.uname = univerifyInfo.uname || '';\n univerifyInfo.pwd = univerifyInfo.pwd || '';\n if (univerifyInfo.server.length == 0) {\n reject({\n \"errMsg\": '服务器地址不能为空!'\n });\n }\n if (univerifyInfo.uname.length < 2) {\n reject({\n \"errMsg\": '账号最短为 2 个字符!'\n });\n }\n if (univerifyInfo.pwd.length < 1) {\n reject({\n \"errMsg\": '密码最短为 1个字符!'\n });\n }\n var openinfo = \"http://\" + univerifyInfo.server + \"/\";\n //设置全局参数:url-服务器地址\n commit(\"setUrl\", openinfo);\n var ser = univerifyInfo.server.split('/');\n var url = openinfo + \"PDA/SignIn\";\n var header = {\n 'content-type': 'application/x-www-form-urlencoded'\n };\n commit(\"setOrgSApi\", '');\n commit(\"setMobxoSApi\", '');\n commit(\"setDataSApi\", '');\n commit(\"setMongodbSvr\", '');\n if (ser[1] == 'mobox3') {\n //判断地址是否是Mobox3\n var orgSApi = \"http://\" + ser[0].split(':')[0] + \":5101/\";\n var mobxoSApi = \"http://\" + ser[0].split(':')[0] + \":5102/\";\n var dataSApi = \"http://\" + ser[0].split(':')[0] + \":5103/\";\n var mongodbSvr = \"http://\" + ser[0].split(':')[0] + \":5201/\";\n commit(\"setOrgSApi\", orgSApi);\n commit(\"setMobxoSApi\", mobxoSApi);\n commit(\"setDataSApi\", dataSApi);\n commit(\"setMongodbSvr\", mongodbSvr);\n url = orgSApi + 'api/user/ace/VerifyPassword';\n univerifyInfo = {\n app_type: \"mobox\",\n user_login: _base.default.encode(univerifyInfo.uname),\n user_psw: _base.default.encode(univerifyInfo.pwd),\n client_info: {\n type: 3,\n //客户端类型:0–PC,1–WEB,2–安卓,3–安卓PAD,4–iPhone, 5–iPad, 6–其它\n num: state.deviceId //PDA的设备号\n }\n };\n\n header = {};\n }\n __f__(\"log\", univerifyInfo, \" at store/index.js:281\");\n uni.request({\n url: url,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: header,\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:289\");\n var ret = res.data;\n if (ret.code == '00000' || ret.err_code == 0) {\n commit(\"login\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg ? ret.msg : ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:299\");\n reject(err);\n }\n });\n });\n },\n areaFunc: function areaFunc(_ref3, univerifyInfo) {\n var commit = _ref3.commit,\n state = _ref3.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n var url = state.url + \"PDA/PDAArea\";\n var header = {\n 'content-type': 'application/x-www-form-urlencoded'\n };\n if (state.OIMoboxSAPI) {\n //判断是否是Mobox3\n url = state.OIMoboxSAPI + 'api/app/area/GetList?sessionid=' + state.loginProvider.loginid.result.session_id;\n univerifyInfo = {\n app_type: \"MES\"\n };\n header = {};\n }\n uni.request({\n url: url,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: header,\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:336\");\n if (res.statusCode == 404) {\n reject({\n \"errMsg\": \"地址不对,请检查该地址:\" + openinfo\n });\n }\n // if(JSON.stringify(res.data).includes('Login Page - Ace Admin')){\n // \tuni.reLaunch({\n // \t\turl: '../login/index'\n // \t})\n // \treject({\"errMsg\":\"登录已过期,请重新登录\"});\n // }\n var ret = res.data;\n if (ret.code == '00000' || ret.err_code == 0) {\n commit(\"areaFunc\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg ? ret.msg : ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // Mobox3获取应用领域下的功能点\n GetFuncTree: function GetFuncTree(_ref4, univerifyInfo) {\n var commit = _ref4.commit,\n state = _ref4.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n uni.request({\n url: state.OIMoboxSAPI + 'api/app/GetFuncTree?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n // commit(\"areaFunc\",ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n classAttrList: function classAttrList(_ref5, univerifyInfo) {\n var commit = _ref5.commit,\n state = _ref5.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/PDAAttrList\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:414\");\n // if(JSON.stringify(res.data).includes('Login Page - Ace Admin')){\n // \tuni.reLaunch({\n // \t\turl: '../login/index'\n // \t})\n // \treject({\"errMsg\":\"登录已过期,请重新登录\"});\n // }\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"classAttrList\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n classGridStyleInfo: function classGridStyleInfo(_ref6, univerifyInfo) {\n var commit = _ref6.commit,\n state = _ref6.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/PDAGridStyleGetInfo\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:460\");\n // if(JSON.stringify(res.data).includes('Login Page - Ace Admin')){\n // \tuni.reLaunch({\n // \t\turl: '../login/index'\n // \t})\n // \treject({\"errMsg\":\"登录已过期,请重新登录\"});\n // }\n var ret = res.data;\n if (ret.code == '00000') {\n // var data ={};\n // Vue.set(data,univerifyInfo.name,ret);\n commit(\"classGridStyleInfo\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n subClassAttrList: function subClassAttrList(_ref7, univerifyInfo) {\n var commit = _ref7.commit,\n state = _ref7.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/PDAAttrList\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:508\");\n // if(JSON.stringify(res.data).includes('Login Page - Ace Admin')){\n // \tuni.reLaunch({\n // \t\turl: '../login/index'\n // \t})\n // \treject({\"errMsg\":\"登录已过期,请重新登录\"});\n // }\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"subClassAttrList\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n subClassGridStyleInfo: function subClassGridStyleInfo(_ref8, univerifyInfo) {\n var commit = _ref8.commit,\n state = _ref8.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/PDAGridStyleGetInfo\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:554\");\n // if(JSON.stringify(res.data).includes('Login Page - Ace Admin')){\n // \tuni.reLaunch({\n // \t\turl: '../login/index'\n // \t})\n // \treject({\"errMsg\":\"登录已过期,请重新登录\"});\n // }\n var ret = res.data;\n if (ret.code == '00000') {\n // var data ={};\n // Vue.set(data,univerifyInfo.name,ret);\n commit(\"subClassGridStyleInfo\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n dicValueInfo: function dicValueInfo(_ref9, univerifyInfo) {\n var commit = _ref9.commit,\n state = _ref9.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/PDADicValueGetInfo\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n // console.log(res);\n var ret = res.data;\n if (ret.code == '00000') {\n state.thisDictName = univerifyInfo.dic_name;\n commit(\"dicValueInfo\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:613\");\n reject(err);\n }\n });\n });\n },\n DataObjRunCustomEventInfo: function DataObjRunCustomEventInfo(_ref10, univerifyInfo) {\n var commit = _ref10.commit,\n state = _ref10.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/PDADataObjRunCustomEvent\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n // console.log(res);\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"DataObjRunCustomEventInfo\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:652\");\n reject(err);\n }\n });\n });\n },\n querySelpsn: function querySelpsn(_ref11, univerifyInfo) {\n var commit = _ref11.commit,\n state = _ref11.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n var url = state.url + \"selpsn/queryjson\";\n var datajson = univerifyInfo;\n var header = {\n 'content-type': 'application/x-www-form-urlencoded'\n };\n if (state.OIOrgSAPI) {\n //判断是否是Mobox3\n url = state.OIOrgSAPI + 'api/user/query/query?sessionid=' + state.loginProvider.loginid.result.session_id;\n datajson = {\n query_str: univerifyInfo.jp\n };\n header = {};\n }\n uni.request({\n url: url,\n data: datajson,\n method: 'POST',\n dataType: \"json\",\n header: header,\n success: function success(res) {\n // console.log(res);\n try {\n res = JSON.parse(res.data);\n } catch (e) {\n res = res.data;\n }\n if (res.code == '00000' || res.err_code == 0) {\n commit(\"querySelpsn\", res);\n resolve(res);\n } else {\n reject({\n \"errMsg\": res.msg ? res.msg : res.err_msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:696\");\n reject(err);\n }\n });\n });\n },\n ProjectGetAnalysisList: function ProjectGetAnalysisList(_ref12, univerifyInfo) {\n var commit = _ref12.commit,\n state = _ref12.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n var url = state.url + \"bpm/ProjectGetAnalysisList\";\n var header = {\n 'content-type': 'application/x-www-form-urlencoded'\n };\n if (state.OIMoboxSAPI) {\n //判断是否是Mobox3\n // url = state.OIMoboxSAPI+'api/app/area/GetList?sessionid='+state.loginProvider.loginid.result.session_id;\n // univerifyInfo = {\n // \tapp_type: \"MES\",\n // };\n // header={};\n reject({\n \"errMsg\": \"Mobox3暂时未支持选择项目接口!\"\n });\n // resolve({code:'00000',data:\"\",msg:\"\"});\n return;\n }\n uni.request({\n url: url,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: header,\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:729\");\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"ProjectGetAnalysisList\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:739\");\n reject(err);\n }\n });\n });\n },\n addclassattr: function addclassattr(_ref13, univerifyInfo) {\n var commit = _ref13.commit,\n state = _ref13.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n univerifyInfo.loginInfo = JSON.stringify({\n server: uni.getStorageSync('server'),\n uname: uni.getStorageSync('account'),\n pwd: uni.getStorageSync('password'),\n cname: plus.device.model,\n type: \"0\"\n });\n uni.request({\n url: state.url + \"PDA/addclassattr\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n // console.log(res);\n // if(JSON.stringify(res.data).includes('Login Page - Ace Admin')){\n // \tuni.reLaunch({\n // \t\turl: '../login/index'\n // \t})\n // \treject({\"errMsg\":\"登录已过期,请重新登录\"});\n // }\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"addclassattr\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": JSON.stringify(ret)\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:784\");\n reject(err);\n }\n });\n });\n },\n DelObj: function DelObj(_ref14, univerifyInfo) {\n var commit = _ref14.commit,\n state = _ref14.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n uni.request({\n url: state.url + \"PDA/DelObj\",\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n header: {\n 'content-type': 'application/x-www-form-urlencoded'\n },\n success: function success(res) {\n __f__(\"log\", res, \" at store/index.js:806\");\n var ret = res.data;\n if (ret.code == '00000') {\n commit(\"DelObj\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": JSON.stringify(ret)\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:816\");\n reject(err);\n }\n });\n });\n },\n // api/class/attr/GetList?sessionid=SESSION_ID\n // Mobox3得到数据类属性\n classAttrGetList: function classAttrGetList(_ref15, univerifyInfo) {\n var commit = _ref15.commit,\n state = _ref15.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n uni.request({\n url: state.OIDataSAPI + 'api/class/attr/GetList?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n commit(\"classAttrList\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/class/attr/GetList?sessionid=SESSION_ID\n // Mobox3得到数据类属性\n subClassAttrGetList: function subClassAttrGetList(_ref16, univerifyInfo) {\n var commit = _ref16.commit,\n state = _ref16.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n uni.request({\n url: state.OIDataSAPI + 'api/class/attr/GetList?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n commit(\"subClassAttrList\", ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/dict/item/GetInfo?sessionid=SESSION_ID\n // Mobox3得到字典项列表\n DictItemGetList: function DictItemGetList(_ref17, univerifyInfo) {\n var commit = _ref17.commit,\n state = _ref17.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n uni.request({\n url: state.OIMoboxSAPI + 'api/dict/item/GetInfo?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/dict/GetInfo2?sessionid=SESSION_ID\n // Mobox3得到字典信息\n DictGetInfo: function DictGetInfo(_ref18, univerifyInfo) {\n var commit = _ref18.commit,\n state = _ref18.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n uni.request({\n url: state.OIMoboxSAPI + 'api/dict/GetInfo2?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/dataobj/Create?sessionid=SESSION_ID\n // Mobox3创建数据对象\n createDataObj: function createDataObj(_ref19, univerifyInfo) {\n var commit = _ref19.commit,\n state = _ref19.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.url);\n uni.request({\n url: state.OIDataSAPI + 'api/dataobj/Create?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n __f__(\"log\", err, \" at store/index.js:966\");\n reject(err);\n }\n });\n });\n },\n // api/class/uistyle/GetInfo?sessionid=SESSION_ID\n // Mobox3得到数据类显示样式信息\n UIStyleGetInfo: function UIStyleGetInfo(_ref20, univerifyInfo) {\n var commit = _ref20.commit,\n state = _ref20.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n uni.request({\n url: state.OIDataSAPI + 'api/class/uistyle/GetInfo?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n __f__(\"log\", _res, \" at store/index.js:987\");\n var ret = _res.data;\n if (ret.err_code == 0) {\n // commit(\"areaFunc\",ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/dataobj/RunCustomEvent?sessionid=SESSION_ID\n // Mobox3执行自定义脚本\n runCustomEvent: function runCustomEvent(_ref21, univerifyInfo) {\n var commit = _ref21.commit,\n state = _ref21.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n uni.request({\n url: state.OIDataSAPI + 'api/dataobj/RunCustomEvent?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n // commit(\"areaFunc\",ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/dataobj/Delete?sessionid=SESSION_ID\n // Mobox3删除数据对象\n dataObjDel: function dataObjDel(_ref22, univerifyInfo) {\n var commit = _ref22.commit,\n state = _ref22.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n uni.request({\n url: state.OIDataSAPI + 'api/dataobj/Delete?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n // commit(\"areaFunc\",ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/dataobj/query/Query?sessionid=SESSION_ID\n // Mobox3查询数据对象\n dataObjQuery: function dataObjQuery(_ref23, univerifyInfo) {\n var commit = _ref23.commit,\n state = _ref23.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n uni.request({\n url: state.OIDataSAPI + 'api/dataobj/query/Query?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n // commit(\"areaFunc\",ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n },\n // api/app/GetInfo?sessionid=SESSION_ID\n // Mobox3获取功能点信息\n appGetInfo: function appGetInfo(_ref24, univerifyInfo) {\n var commit = _ref24.commit,\n state = _ref24.state;\n return new Promise(function (resolve, reject) {\n // console.log(state.loginProvider.loginid.result.session_id);\n uni.request({\n url: state.OIMoboxSAPI + 'api/app/GetInfo?sessionid=' + state.loginProvider.loginid.result.session_id,\n data: univerifyInfo,\n method: 'POST',\n dataType: \"json\",\n success: function success(_res) {\n // console.log(_res);\n var ret = _res.data;\n if (ret.err_code == 0) {\n // commit(\"areaFunc\",ret);\n resolve(ret);\n } else {\n reject({\n \"errMsg\": ret.err_msg\n });\n }\n },\n fail: function fail(err) {\n // console.log(err);\n reject(err);\n }\n });\n });\n }\n }\n});\nvar _default = store;\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vc3RvcmUvaW5kZXguanMiXSwibmFtZXMiOlsiVnVlIiwidXNlIiwiVnVleCIsInN0b3JlIiwiU3RvcmUiLCJtb2R1bGVzIiwiYXBwIiwiQmFzZTY0Iiwic3RhdGUiLCJoYXNMb2dpbiIsImRldmljZUlkIiwiYXBrVmVyc2lvbkluZm8iLCJsb2dpblByb3ZpZGVyIiwiYXJlYUZ1bmMiLCJ0aGlzYXJlYUZ1bmNJRCIsInRoaXNhcmVhRnVuY1N1YklEIiwidGhpc0VkaXROYW1lIiwidGhpc0VkaXRTdWJOYW1lIiwidGhpc0RpY3ROYW1lIiwiX2NsYXNzQXR0ckxpc3QiLCJfY2xhc3NHcmlkU3R5bGVJbmZvIiwiX3N1YkNsYXNzQXR0ckxpc3QiLCJfc3ViQ2xhc3NHcmlkU3R5bGVJbmZvIiwiX2RpY1ZhbHVlSW5mbyIsIkRhdGFPYmpSdW5DdXN0b21FdmVudEluZm8iLCJxdWVyeVNlbHBzbiIsIlByb2plY3RHZXRBbmFseXNpc0xpc3QiLCJhZGRjbGFzc2F0dHIiLCJEZWxPYmoiLCJ1c2VybmFtZSIsInVzZXJwd2QiLCJ1cmwiLCJPSU9yZ1NBUEkiLCJPSU1vYm94U0FQSSIsIk9JRGF0YVNBUEkiLCJPSU1vbmdvZGJTdnIiLCJtdXRhdGlvbnMiLCJzZXREZXZpY2VJZCIsInJldCIsInNldFVybCIsInNldE9yZ1NBcGkiLCJzZXRNb2J4b1NBcGkiLCJzZXREYXRhU0FwaSIsInNldE1vbmdvZGJTdnIiLCJzZXRBcGtWZXJzaW9uSW5mbyIsImxvZ2luIiwicHJvdmlkZXIiLCJzZXRhcmVhRnVuY2lkIiwiaWQiLCJzZXRhcmVhRnVuU3ViY2lkIiwic2V0ZWRpdE5hbWUiLCJlZGl0TmFtZSIsInNldGVkaXRTdWJOYW1lIiwic2V0RGljdE5hbWUiLCJkaWN0TmFtZSIsImNsYXNzQXR0ckxpc3QiLCJzZXQiLCJjbGFzc0dyaWRTdHlsZUluZm8iLCJkYXRhIiwic3ViQ2xhc3NBdHRyTGlzdCIsInN1YkNsYXNzR3JpZFN0eWxlSW5mbyIsImRpY1ZhbHVlSW5mbyIsImxvZ291dCIsImdldHRlcnMiLCJnZXREZXZpY2VJZCIsIkdldEFwa1NlcnZpb25JbmZvIiwibG9naW5pZCIsImdldFVybCIsImdldE9yZ1NBcGkiLCJnZXRNb2J4b1NBcGkiLCJnZXREYXRhU0FwaSIsImdldE1vbmdvZGJTdnIiLCJnZXRjbGFzc0F0dHJMaXN0IiwiZ2V0Y2xhc3NHcmlkU3R5bGVJbmZvIiwiZ2V0U3ViQ2xhc3NBdHRyTGlzdCIsImdldFN1YkNsYXNzR3JpZFN0eWxlSW5mbyIsImdldGRpY1ZhbHVlSW5mbyIsImFjdGlvbnMiLCJHZXRBcGtWZXJzaW9uSW5mbyIsInVuaXZlcmlmeUluZm8iLCJjb21taXQiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsInNlcnZlciIsImxlbmd0aCIsIm9wZW5pbmZvIiwidW5pIiwicmVxdWVzdCIsIm1ldGhvZCIsImRhdGFUeXBlIiwiaGVhZGVyIiwic3VjY2VzcyIsInJlcyIsInN0YXR1c0NvZGUiLCJjb2RlIiwibXNnIiwiZmFpbCIsImVyciIsInVuYW1lIiwicHdkIiwic2VyIiwic3BsaXQiLCJvcmdTQXBpIiwibW9ieG9TQXBpIiwiZGF0YVNBcGkiLCJtb25nb2RiU3ZyIiwiYXBwX3R5cGUiLCJ1c2VyX2xvZ2luIiwiZW5jb2RlIiwidXNlcl9wc3ciLCJjbGllbnRfaW5mbyIsInR5cGUiLCJudW0iLCJlcnJfY29kZSIsImVycl9tc2ciLCJsb2dpbkluZm8iLCJKU09OIiwic3RyaW5naWZ5IiwiZ2V0U3RvcmFnZVN5bmMiLCJjbmFtZSIsInBsdXMiLCJkZXZpY2UiLCJtb2RlbCIsInJlc3VsdCIsInNlc3Npb25faWQiLCJHZXRGdW5jVHJlZSIsIl9yZXMiLCJkaWNfbmFtZSIsImRhdGFqc29uIiwicXVlcnlfc3RyIiwianAiLCJwYXJzZSIsImUiLCJjbGFzc0F0dHJHZXRMaXN0Iiwic3ViQ2xhc3NBdHRyR2V0TGlzdCIsIkRpY3RJdGVtR2V0TGlzdCIsIkRpY3RHZXRJbmZvIiwiY3JlYXRlRGF0YU9iaiIsIlVJU3R5bGVHZXRJbmZvIiwicnVuQ3VzdG9tRXZlbnQiLCJkYXRhT2JqRGVsIiwiZGF0YU9ialF1ZXJ5IiwiYXBwR2V0SW5mbyJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUdBO0FBRkFBLFlBQUcsQ0FBQ0MsR0FBRyxDQUFDQyxhQUFJLENBQUM7QUFHYixJQUFNQyxLQUFLLEdBQUcsSUFBSUQsYUFBSSxDQUFDRSxLQUFLLENBQUM7RUFDNUJDLE9BQU8sRUFBQztJQUNQQyxHQUFHLEVBQUhBLFlBQUc7SUFDSEMsTUFBTSxFQUFOQTtFQUNELENBQUM7RUFDREMsS0FBSyxFQUFFO0lBQ05DLFFBQVEsRUFBRSxLQUFLO0lBQ2ZDLFFBQVEsRUFBQyxFQUFFO0lBQ1hDLGNBQWMsRUFBRSxFQUFFO0lBQ2xCQyxhQUFhLEVBQUUsRUFBRTtJQUNqQkMsUUFBUSxFQUFDLEVBQUU7SUFDWEMsY0FBYyxFQUFDLEVBQUU7SUFDakJDLGlCQUFpQixFQUFDLEVBQUU7SUFDcEJDLFlBQVksRUFBQyxFQUFFO0lBQ2ZDLGVBQWUsRUFBQyxFQUFFO0lBQ2xCQyxZQUFZLEVBQUMsRUFBRTtJQUNmQyxjQUFjLEVBQUMsQ0FBQyxDQUFDO0lBQ2pCQyxtQkFBbUIsRUFBQyxDQUFDLENBQUM7SUFDdEJDLGlCQUFpQixFQUFDLENBQUMsQ0FBQztJQUNwQkMsc0JBQXNCLEVBQUMsQ0FBQyxDQUFDO0lBQ3pCQyxhQUFhLEVBQUMsQ0FBQyxDQUFDO0lBQ2hCQyx5QkFBeUIsRUFBQyxFQUFFO0lBQzVCQyxXQUFXLEVBQUMsRUFBRTtJQUNkQyxzQkFBc0IsRUFBQyxFQUFFO0lBQ3pCQyxZQUFZLEVBQUMsRUFBRTtJQUNmQyxNQUFNLEVBQUMsRUFBRTtJQUNUQyxRQUFRLEVBQUMsSUFBSTtJQUNiQyxPQUFPLEVBQUMsTUFBTTtJQUNkQyxHQUFHLEVBQUMsNEJBQTRCO0lBQUU7SUFDbENDLFNBQVMsRUFBRSxFQUFFO0lBQUU7SUFDZkMsV0FBVyxFQUFFLEVBQUU7SUFBRTtJQUNqQkMsVUFBVSxFQUFFLEVBQUU7SUFBRTtJQUNoQkMsWUFB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QUFDLE1BQU07VUFDZkUsT0FBTyxFQUFFLGlCQUFDbUMsSUFBSSxFQUFLO1lBQ2xCO1lBQ0EsSUFBTXpGLEdBQUcsR0FBR3lGLElBQUksQ0FBQ3JFLElBQUk7WUFDckIsSUFBSXBCLEdBQUcsQ0FBQzRFLFFBQVEsSUFBSSxDQUFDLEVBQUU7Y0FDdEI7Y0FDQWhDLE9BQU8sQ0FBQzVDLEdBQUcsQ0FBQztZQUNiLENBQUMsTUFBTTtjQUNONkMsTUFBTSxDQUFDO2dCQUFDLFFBQVEsRUFBQzdDLEdBQUcsQ0FBQzZFO2NBQU8sQ0FBQyxDQUFDO1lBQy9CO1VBQ0QsQ0FBQztVQUNEbEIsSUFBSSxFQUFFLGNBQUNDLEdBQUcsRUFBSztZQUNkO1lBQ0FmLE1BQU0sQ0FBQ2UsR0FBRyxDQUFDO1VBQ1o7UUFDRCxDQUFDLENBQUM7TUFDSCxDQUFDLENBQUM7SUFDSDtFQUVEO0FBQ0QsQ0FBQyxDQUFDO0FBQUEsZUFFYS9GLEtBQUs7QUFBQSwyQiIsImZpbGUiOiIyMDAuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgVnVlIGZyb20gJ3Z1ZSdcclxuaW1wb3J0IFZ1ZXggZnJvbSAndnVleCdcclxuaW1wb3J0IEJhc2U2NCBmcm9tICcuLi9jb21wb25lbnRzL2pzLWJhc2U2NC9iYXNlNjQuanMnXHJcblZ1ZS51c2UoVnVleClcclxuXHJcbmltcG9ydCBhcHAgZnJvbSAnLi9tb2R1bGVzL2FwcCdcclxuY29uc3Qgc3RvcmUgPSBuZXcgVnVleC5TdG9yZSh7XHJcblx0bW9kdWxlczp7XHJcblx0XHRhcHAsXHJcblx0XHRCYXNlNjQsXHJcblx0fSxcclxuXHRzdGF0ZToge1xyXG5cdFx0aGFzTG9naW46IGZhbHNlLFxyXG5cdFx0ZGV2aWNlSWQ6JycsXHJcblx0XHRhcGtWZXJzaW9uSW5mbzogXCJcIixcclxuXHRcdGxvZ2luUHJvdmlkZXI6IFwiXCIsXHJcblx0XHRhcmVhRnVuYzonJyxcclxuXHRcdHRoaXNhcmVhRnVuY0lEOicnLFxyXG5cdFx0dGhpc2FyZWFGdW5jU3ViSUQ6JycsXHJcblx0XHR0aGlzRWRpdE5hbWU6JycsXHJcblx0XHR0aGlzRWRpdFN1Yk5hbWU6JycsXHJcblx0XHR0aGlzRGljdE5hbWU6JycsXHJcblx0XHRfY2xhc3NBdHRyTGlzdDp7fSxcclxuXHRcdF9jbGFzc0dyaWRTdHlsZUluZm86e30sXHJcblx0XHRfc3ViQ2xhc3NBdHRyTGlzdDp7fSxcclxuXHRcdF9zdWJDbGFzc0dyaWRTdHlsZUluZm86e30sXHJcblx0XHRfZGljVmFsdWVJbmZvOnt9LFxyXG5cdFx0RGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbzonJyxcclxuXHRcdHF1ZXJ5U2VscHNuOicnLFxyXG5cdFx0UHJvamVjdEdldEFuYWx5c2lzTGlzdDonJyxcclxuXHRcdGFkZGNsYXNzYXR0cjonJyxcclxuXHRcdERlbE9iajonJyxcclxuXHRcdHVzZXJuYW1lOlwic2FcIixcclxuXHRcdHVzZXJwd2Q6XCIwMDAwXCIsXHJcblx0XHR1cmw6XCIxMzkuMTU5LjE0NC4xMDo4MDgwL21vYm94M1wiLCAvLzExNS4yOS4xODUuMjY6NTAwMFxyXG5cdFx0T0lPcmdTQVBJOiAnJywgLy8xMTUuMjkuMTg1LjI2OjUxMDFcclxuXHRcdE9JTW9ib3hTQVBJOiAnJywgLy8xMTUuMjkuMTg1LjI2OjUxMDJcclxuXHRcdE9JRGF0YVNBUEk6ICcnLCAvLzExNS4yOS4xODUuMjY6NTEwM1xyXG5cdFx0T0lNb25nb2RiU3ZyOiAnJyAvLzExNS4yOS4xODUuMjY6NTIwMVxyXG5cdH0sXHJcblx0bXV0YXRpb25zOiB7XHJcblx0XHRzZXREZXZpY2VJZChzdGF0ZSwgcmV0KSB7XHJcblx0XHRcdHN0YXRlLmRldmljZUlkID0gcmV0O1xyXG5cdFx0fSxcclxuXHRcdHNldFVybChzdGF0ZSwgdXJsKSB7XHJcblx0XHRcdHN0YXRlLnVybCA9IHVybDtcclxuXHRcdH0sXHJcblx0XHRzZXRPcmdTQXBpKHN0YXRlLCB1cmwpIHtcclxuXHRcdFx0c3RhdGUuT0lPcmdTQVBJID0gdXJsO1xyXG5cdFx0fSxcclxuXHRcdHNldE1vYnhvU0FwaShzdGF0ZSwgdXJsKSB7XHJcblx0XHRcdHN0YXRlLk9JTW9ib3hTQVBJID0gdXJsO1xyXG5cdFx0fSxcclxuXHRcdHNldERhdGFTQXBpKHN0YXRlLCB1cmwpIHtcclxuXHRcdFx0c3RhdGUuT0lEYXRhU0FQSSA9IHVybDtcclxuXHRcdH0sXHJcblx0XHRzZXRNb25nb2RiU3ZyKHN0YXRlLCB1cmwpIHtcclxuXHRcdFx0c3RhdGUuT0lNb25nb2RiU3ZyID0gdXJsO1xyXG5cdFx0fSxcclxuXHRcdHNldEFwa1ZlcnNpb25JbmZvKHN0YXRlLCByZXQpIHtcclxuXHRcdFx0c3RhdGUuYXBrVmVyc2lvbkluZm8gPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0bG9naW4oc3RhdGUsIHByb3ZpZGVyKSB7XHJcblx0XHRcdHN0YXRlLmhhc0xvZ2luID0gdHJ1ZTtcclxuXHRcdFx0c3RhdGUubG9naW5Qcm92aWRlciA9IHByb3ZpZGVyO1xyXG5cdFx0fSxcclxuXHRcdGFyZWFGdW5jKHN0YXRlLCByZXQpIHtcclxuXHRcdFx0c3RhdGUuYXJlYUZ1bmMgPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0c2V0YXJlYUZ1bmNpZChzdGF0ZSxpZCl7XHJcblx0XHRcdHN0YXRlLnRoaXNhcmVhRnVuY0lEPWlkO1xyXG5cdFx0fSxcclxuXHRcdHNldGFyZWFGdW5TdWJjaWQoc3RhdGUsaWQpe1xyXG5cdFx0XHRzdGF0ZS50aGlzYXJlYUZ1bmNTdWJJRD1pZDtcclxuXHRcdH0sXHJcblx0XHRzZXRlZGl0TmFtZShzdGF0ZSxlZGl0TmFtZSl7XHJcblx0XHRcdHN0YXRlLnRoaXNFZGl0TmFtZT1lZGl0TmFtZTtcclxuXHRcdH0sXHJcblx0XHRzZXRlZGl0U3ViTmFtZShzdGF0ZSxlZGl0TmFtZSl7XHJcblx0XHRcdHN0YXRlLnRoaXNFZGl0U3ViTmFtZT1lZGl0TmFtZTtcclxuXHRcdH0sXHJcblx0XHRzZXREaWN0TmFtZShzdGF0ZSxkaWN0TmFtZSl7XHJcblx0XHRcdHN0YXRlLnRoaXNEaWN0TmFtZT1kaWN0TmFtZTtcclxuXHRcdH0sXHJcblx0XHRjbGFzc0F0dHJMaXN0KHN0YXRlLCByZXQpIHtcclxuXHRcdFx0Ly8gc3RhdGUuX2NsYXNzQXR0ckxpc3Rbc3RhdGUudGhpc2FyZWFGdW5jSURdID0gcmV0O1xyXG5cdFx0XHRWdWUuc2V0KHN0YXRlLl9jbGFzc0F0dHJMaXN0LHN0YXRlLnRoaXNhcmVhRnVuY0lELHJldCk7XHJcblx0XHR9LFxyXG5cdFx0Y2xhc3NHcmlkU3R5bGVJbmZvKHN0YXRlLCByZXQpIHtcclxuXHRcdFx0Ly8gc3RhdGUuX2NsYXNzR3JpZFN0eWxlSW5mb1tzdGF0ZS50aGlzYXJlYUZ1bmNJRF0gPSByZXQ7XHJcblx0XHRcdHZhciBkYXRhID0ge307XHJcblx0XHRcdGlmKHN0YXRlLl9jbGFzc0dyaWRTdHlsZUluZm9bc3RhdGUudGhpc2FyZWFGdW5jSURdKVxyXG5cdFx0XHRcdGRhdGEgPSBzdGF0ZS5fY2xhc3NHcmlkU3R5bGVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY0lEXTtcclxuXHRcdFx0VnVlLnNldChkYXRhLHN0YXRlLnRoaXNFZGl0TmFtZSxyZXQpO1xyXG5cdFx0XHRWdWUuc2V0KHN0YXRlLl9jbGFzc0dyaWRTdHlsZUluZm8sc3RhdGUudGhpc2FyZWFGdW5jSUQsZGF0YSk7XHJcblx0XHR9LFxyXG5cdFx0c3ViQ2xhc3NBdHRyTGlzdChzdGF0ZSwgcmV0KSB7XHJcblx0XHRcdFZ1ZS5zZXQoc3RhdGUuX3N1YkNsYXNzQXR0ckxpc3Qsc3RhdGUudGhpc2FyZWFGdW5jU3ViSUQscmV0KTtcclxuXHRcdH0sXHJcblx0XHRzdWJDbGFzc0dyaWRTdHlsZUluZm8oc3RhdGUsIHJldCkge1xyXG5cdFx0XHR2YXIgZGF0YSA9IHt9O1xyXG5cdFx0XHRpZihzdGF0ZS5fc3ViQ2xhc3NHcmlkU3R5bGVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY1N1YklEXSlcclxuXHRcdFx0XHRkYXRhID0gc3RhdGUuX3N1YkNsYXNzR3JpZFN0eWxlSW5mb1tzdGF0ZS50aGlzYXJlYUZ1bmNTdWJJRF07XHJcblx0XHRcdFZ1ZS5zZXQoZGF0YSxzdGF0ZS50aGlzRWRpdFN1Yk5hbWUscmV0KTtcclxuXHRcdFx0VnVlLnNldChzdGF0ZS5fc3ViQ2xhc3NHcmlkU3R5bGVJbmZvLHN0YXRlLnRoaXNhcmVhRnVuY1N1YklELGRhdGEpO1xyXG5cdFx0fSxcclxuXHRcdGRpY1ZhbHVlSW5mbyhzdGF0ZSwgcmV0KSB7XHJcblx0XHRcdC8vIHN0YXRlLl9kaWNWYWx1ZUluZm9bc3RhdGUudGhpc2FyZWFGdW5jSURdID0gcmV0O1xyXG5cdFx0XHRWdWUuc2V0KHN0YXRlLl9kaWNWYWx1ZUluZm8sc3RhdGUudGhpc0RpY3ROYW1lLHJldCk7XHJcblx0XHR9LFxyXG5cdFx0RGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbyhzdGF0ZSwgcmV0KSB7XHJcblx0XHRcdHN0YXRlLkRhdGFPYmpSdW5DdXN0b21FdmVudEluZm8gPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0cXVlcnlTZWxwc24oc3RhdGUsIHJldCkge1xyXG5cdFx0XHRzdGF0ZS5xdWVyeVNlbHBzbiA9IHJldDtcclxuXHRcdH0sXHJcblx0XHRQcm9qZWN0R2V0QW5hbHlzaXNMaXN0KHN0YXRlLCByZXQpIHtcclxuXHRcdFx0c3RhdGUuUHJvamVjdEdldEFuYWx5c2lzTGlzdCA9IHJldDtcclxuXHRcdH0sXHJcblx0XHRhZGRjbGFzc2F0dHIoc3RhdGUsIHJldCkge1xyXG5cdFx0XHRzdGF0ZS5hZGRjbGFzc2F0dHIgPSByZXQ7XHJcblx0XHR9LFxyXG5cdFx0RGVsT2JqKHN0YXRlLCByZXQpIHtcclxuXHRcdFx0c3RhdGUuRGVsT2JqID0gcmV0O1xyXG5cdFx0fSxcclxuXHRcdGxvZ291dChzdGF0ZSkge1xyXG5cdFx0XHRzdGF0ZS5oYXNMb2dpbiA9IGZhbHNlXHJcblx0XHR9LFxyXG5cdH0sXHJcblx0Z2V0dGVyczoge1xyXG5cdFx0Z2V0RGV2aWNlSWQoc3RhdGUsIHJldCkge1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUuZGV2aWNlSWRcclxuXHRcdH0sXHJcblx0XHRHZXRBcGtTZXJ2aW9uSW5mbyhzdGF0ZSkge1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUuYXBrVmVyc2lvbkluZm9cclxuXHRcdH0sXHJcblx0XHRsb2dpbmlkKHN0YXRlKSB7XHJcblx0XHRcdHJldHVybiBzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWRcclxuXHRcdH0sXHJcblx0XHRnZXRVcmwoc3RhdGUpIHtcclxuXHRcdFx0cmV0dXJuIHN0YXRlLnVybFxyXG5cdFx0fSxcclxuXHRcdGdldE9yZ1NBcGkoc3RhdGUsIHVybCkge1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUuT0lPcmdTQVBJO1xyXG5cdFx0fSxcclxuXHRcdGdldE1vYnhvU0FwaShzdGF0ZSwgdXJsKSB7XHJcblx0XHRcdHJldHVybiBzdGF0ZS5PSU1vYm94U0FQSTtcclxuXHRcdH0sXHJcblx0XHRnZXREYXRhU0FwaShzdGF0ZSwgdXJsKSB7XHJcblx0XHRcdHJldHVybiBzdGF0ZS5PSURhdGFTQVBJO1xyXG5cdFx0fSxcclxuXHRcdGdldE1vbmdvZGJTdnIoc3RhdGUsIHVybCkge1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUuT0lNb25nb2RiU3ZyO1xyXG5cdFx0fSxcclxuXHRcdGdldGNsYXNzQXR0ckxpc3Qoc3RhdGUpe1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUuX2NsYXNzQXR0ckxpc3Rbc3RhdGUudGhpc2FyZWFGdW5jSURdO1xyXG5cdFx0fSxcclxuXHRcdGdldGNsYXNzR3JpZFN0eWxlSW5mbyhzdGF0ZSl7XHJcblx0XHRcdGlmKHN0YXRlLl9jbGFzc0dyaWRTdHlsZUluZm9bc3RhdGUudGhpc2FyZWFGdW5jSURdKVxyXG5cdFx0XHRcdHJldHVybiBzdGF0ZS5fY2xhc3NHcmlkU3R5bGVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY0lEXVtzdGF0ZS50aGlzRWRpdE5hbWVdO1xyXG5cdFx0XHRlbHNlIFxyXG5cdFx0XHRcdHJldHVybiBcIlwiO1xyXG5cdFx0fSxcclxuXHRcdGdldFN1YkNsYXNzQXR0ckxpc3Qoc3RhdGUpe1xyXG5cdFx0XHRyZXR1cm4gc3RhdGUuX3N1YkNsYXNzQXR0ckxpc3Rbc3RhdGUudGhpc2FyZWFGdW5jU3ViSURdO1xyXG5cdFx0fSxcclxuXHRcdGdldFN1YkNsYXNzR3JpZFN0eWxlSW5mbyhzdGF0ZSl7XHJcblx0XHRcdGlmKHN0YXRlLl9zdWJDbGFzc0dyaWRTdHlsZUluZm9bc3RhdGUudGhpc2FyZWFGdW5jU3ViSURdKVxyXG5cdFx0XHRcdHJldHVybiBzdGF0ZS5fc3ViQ2xhc3NHcmlkU3R5bGVJbmZvW3N0YXRlLnRoaXNhcmVhRnVuY1N1YklEXVtzdGF0ZS50aGlzRWRpdFN1Yk5hbWVdO1xyXG5cdFx0XHRlbHNlIFxyXG5cdFx0XHRcdHJldHVybiBcIlwiO1xyXG5cdFx0fSxcclxuXHRcdGdldGRpY1ZhbHVlSW5mbyhzdGF0ZSl7XHJcblx0XHRcdHJldHVybiBzdGF0ZS5fZGljVmFsdWVJbmZvW3N0YXRlLnRoaXNEaWN0TmFtZV07XHJcblx0XHR9XHJcblx0XHRcclxuXHRcdFxyXG5cdH0sXHJcblx0YWN0aW9uczoge1xyXG5cdFx0Ly97Y29tbWl0fSDop6PmnoTvvIxcclxuXHRcdC8vdW5pdmVyaWZ5SW5mbyDoh6rlrprkuYnlj4LmlbBcclxuXHRcdEdldEFwa1ZlcnNpb25JbmZvOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvID0gdW5pdmVyaWZ5SW5mbyB8fCB7fTtcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvLnNlcnZlciA9IHVuaXZlcmlmeUluZm8uc2VydmVyIHx8ICcnO1xyXG5cdFx0XHRcdGlmICh1bml2ZXJpZnlJbmZvLnNlcnZlci5sZW5ndGggPT0gMCkge1xyXG5cdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOifmnI3liqHlmajlnLDlnYDkuI3og73kuLrnqbohJ30pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgb3BlbmluZm8gPSBcImh0dHA6Ly9cIiArIHVuaXZlcmlmeUluZm8uc2VydmVyICsgXCIvXCI7IC8vK1wiL09yZ1dlYlNcIlxyXG5cdFx0XHRcdC8v6K6+572u5YWo5bGA5Y+C5pWw77yadXJsLeacjeWKoeWZqOWcsOWdgFxyXG5cdFx0XHRcdGNvbW1pdChcInNldFVybFwiLG9wZW5pbmZvKTtcclxuXHRcdFx0XHQvLyB2YXIgc2VyID0gdW5pdmVyaWZ5SW5mby5zZXJ2ZXIuc3BsaXQoJy8nKTtcclxuXHRcdFx0XHQvLyBpZihzZXJbMV0gPT0gJ21vYm94Mycpe1xyXG5cdFx0XHRcdC8vIFx0Ly8gcmVqZWN0KHtcImVyck1zZ1wiOlwiTW9ib3gz5pqC5pe25pyq5pSv5oyB6Ieq5Yqo5pu05paw77yBXCJ9KTtcclxuXHRcdFx0XHQvLyBcdHJlc29sdmUoe2NvZGU6JzAwMDAwJyxkYXRhOlwiXCIsbXNnOlwiXCJ9KTtcclxuXHRcdFx0XHQvLyBcdHJldHVybjtcclxuXHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBvcGVuaW5mbyArIFwiUERBL0dldEFwa1ZlcnNpb25JbmZvXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB7fSxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IHtcclxuXHRcdFx0XHRcdCAgICAnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcyk7IFxyXG5cdFx0XHRcdFx0XHRpZihyZXMuc3RhdHVzQ29kZT09NDA0KXtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6XCLlnLDlnYDkuI3lr7nvvIzor7fmo4Dmn6Xor6XlnLDlnYDvvJpcIisgb3BlbmluZm8gK1wiLOaWueazle+8mkdldEFwa1ZlcnNpb25JbmZvLOaYr+WQpuato+ehrlwifSk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZihyZXMuc3RhdHVzQ29kZT09NTAwKXtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6XCLmnKrmib7liLDmm7TmlrDljIXmiYDlnKjnm67lvZXvvIFcIn0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcInNldEFwa1ZlcnNpb25JbmZvXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdGxvZ2luOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvID0gdW5pdmVyaWZ5SW5mbyB8fCB7fTtcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvLnNlcnZlciA9IHVuaXZlcmlmeUluZm8uc2VydmVyIHx8ICcnO1xyXG5cdFx0XHRcdHVuaXZlcmlmeUluZm8udW5hbWUgPSB1bml2ZXJpZnlJbmZvLnVuYW1lIHx8ICcnO1xyXG5cdFx0XHRcdHVuaXZlcmlmeUluZm8ucHdkID0gdW5pdmVyaWZ5SW5mby5wd2QgfHwgJyc7XHJcblx0XHRcdFx0aWYgKHVuaXZlcmlmeUluZm8uc2VydmVyLmxlbmd0aCA9PSAwKSB7XHJcblx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6J+acjeWKoeWZqOWcsOWdgOS4jeiDveS4uuepuiEnfSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdGlmICh1bml2ZXJpZnlJbmZvLnVuYW1lLmxlbmd0aCA8IDIpIHtcclxuXHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjon6LSm5Y+35pyA55+t5Li6IDIg5Liq5a2X56ymISd9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0aWYgKHVuaXZlcmlmeUluZm8ucHdkLmxlbmd0aCA8IDEpIHtcclxuXHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjon5a+G56CB5pyA55+t5Li6IDHkuKrlrZfnrKYhJ30pO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHR2YXIgb3BlbmluZm8gPSBcImh0dHA6Ly9cIiArIHVuaXZlcmlmeUluZm8uc2VydmVyICsgXCIvXCI7XHJcblx0XHRcdFx0Ly/orr7nva7lhajlsYDlj4LmlbDvvJp1cmwt5pyN5Yqh5Zmo5Zyw5Z2AXHJcblx0XHRcdFx0Y29tbWl0KFwic2V0VXJsXCIsb3BlbmluZm8pO1xyXG5cdFx0XHRcdHZhciBzZXIgPSB1bml2ZXJpZnlJbmZvLnNlcnZlci5zcGxpdCgnLycpO1xyXG5cdFx0XHRcdHZhciB1cmwgPSBvcGVuaW5mbyArIFwiUERBL1NpZ25JblwiO1xyXG5cdFx0XHRcdHZhciBoZWFkZXIgPSB7J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfTtcclxuXHRcdFx0XHRjb21taXQoXCJzZXRPcmdTQXBpXCIsJycpO1xyXG5cdFx0XHRcdGNvbW1pdChcInNldE1vYnhvU0FwaVwiLCcnKTtcclxuXHRcdFx0XHRjb21taXQoXCJzZXREYXRhU0FwaVwiLCcnKTtcclxuXHRcdFx0XHRjb21taXQoXCJzZXRNb25nb2RiU3ZyXCIsJycpO1xyXG5cdFx0XHRcdGlmKHNlclsxXSA9PSAnbW9ib3gzJyl7IC8v5Yik5pat5Zyw5Z2A5piv5ZCm5pivTW9ib3gzXHJcblx0XHRcdFx0XHR2YXIgb3JnU0FwaSA9IFwiaHR0cDovL1wiICsgc2VyWzBdLnNwbGl0KCc6JylbMF0gKyBcIjo1MTAxL1wiO1xyXG5cdFx0XHRcdFx0dmFyIG1vYnhvU0FwaSA9IFwiaHR0cDovL1wiICsgc2VyWzBdLnNwbGl0KCc6JylbMF0gKyBcIjo1MTAyL1wiO1xyXG5cdFx0XHRcdFx0dmFyIGRhdGFTQXBpID0gXCJodHRwOi8vXCIgKyBzZXJbMF0uc3BsaXQoJzonKVswXSArIFwiOjUxMDMvXCI7XHJcblx0XHRcdFx0XHR2YXIgbW9uZ29kYlN2ciA9IFwiaHR0cDovL1wiICsgc2VyWzBdLnNwbGl0KCc6JylbMF0gKyBcIjo1MjAxL1wiO1xyXG5cdFx0XHRcdFx0Y29tbWl0KFwic2V0T3JnU0FwaVwiLG9yZ1NBcGkpO1xyXG5cdFx0XHRcdFx0Y29tbWl0KFwic2V0TW9ieG9TQXBpXCIsbW9ieG9TQXBpKTtcclxuXHRcdFx0XHRcdGNvbW1pdChcInNldERhdGFTQXBpXCIsZGF0YVNBcGkpO1xyXG5cdFx0XHRcdFx0Y29tbWl0KFwic2V0TW9uZ29kYlN2clwiLG1vbmdvZGJTdnIpO1xyXG5cdFx0XHRcdFx0dXJsID0gb3JnU0FwaSsnYXBpL3VzZXIvYWNlL1ZlcmlmeVBhc3N3b3JkJztcclxuXHRcdFx0XHRcdHVuaXZlcmlmeUluZm8gPSB7XHJcblx0XHRcdFx0XHRcdGFwcF90eXBlOiBcIm1vYm94XCIsXHJcblx0XHRcdFx0XHRcdHVzZXJfbG9naW46IEJhc2U2NC5lbmNvZGUodW5pdmVyaWZ5SW5mby51bmFtZSksXHJcblx0XHRcdFx0XHRcdHVzZXJfcHN3OiBCYXNlNjQuZW5jb2RlKHVuaXZlcmlmeUluZm8ucHdkKSxcclxuXHRcdFx0XHRcdFx0Y2xpZW50X2luZm86e1xyXG5cdFx0XHRcdFx0XHRcdHR5cGU6IDMsIC8v5a6i5oi356uv57G75Z6L77yaMOKAk1BD77yMMeKAk1dFQu+8jDLigJPlronljZPvvIwz4oCT5a6J5Y2TUEFE77yMNOKAk2lQaG9uZe+8jCA14oCTaVBhZO+8jCA24oCT5YW25a6DXHJcblx0XHRcdFx0XHRcdFx0bnVtOiBzdGF0ZS5kZXZpY2VJZCAgLy9QREHnmoTorr7lpIflj7dcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGhlYWRlcj17fTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Y29uc29sZS5sb2codW5pdmVyaWZ5SW5mbyk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiB1cmwsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjogaGVhZGVyLFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpOyBcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnIHx8IHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwibG9naW5cIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0Lm1zZz9yZXQubXNnOnJldC5lcnJfbXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHRhcmVhRnVuYzogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZCk7XHJcblx0XHRcdFx0dW5pdmVyaWZ5SW5mby5sb2dpbkluZm8gPSBKU09OLnN0cmluZ2lmeSh7XHJcblx0XHRcdFx0XHRzZXJ2ZXI6IHVuaS5nZXRTdG9yYWdlU3luYygnc2VydmVyJyksXHJcblx0XHRcdFx0XHR1bmFtZTogdW5pLmdldFN0b3JhZ2VTeW5jKCdhY2NvdW50JyksXHJcblx0XHRcdFx0XHRwd2Q6IHVuaS5nZXRTdG9yYWdlU3luYygncGFzc3dvcmQnKSxcclxuXHRcdFx0XHRcdGNuYW1lOiBwbHVzLmRldmljZS5tb2RlbCxcclxuXHRcdFx0XHRcdHR5cGU6IFwiMFwiXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0dmFyIHVybCA9IHN0YXRlLnVybCArIFwiUERBL1BEQUFyZWFcIjtcclxuXHRcdFx0XHR2YXIgaGVhZGVyID0geydjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ307XHJcblx0XHRcdFx0aWYoc3RhdGUuT0lNb2JveFNBUEkpeyAvL+WIpOaWreaYr+WQpuaYr01vYm94M1xyXG5cdFx0XHRcdFx0dXJsID0gc3RhdGUuT0lNb2JveFNBUEkrJ2FwaS9hcHAvYXJlYS9HZXRMaXN0P3Nlc3Npb25pZD0nK3N0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZDtcclxuXHRcdFx0XHRcdHVuaXZlcmlmeUluZm8gPSB7XHJcblx0XHRcdFx0XHRcdGFwcF90eXBlOiBcIk1FU1wiLFxyXG5cdFx0XHRcdFx0fTtcclxuXHRcdFx0XHRcdGhlYWRlcj17fTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogdXJsLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IGhlYWRlcixcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0aWYocmVzLnN0YXR1c0NvZGU9PTQwNCl7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOlwi5Zyw5Z2A5LiN5a+577yM6K+35qOA5p+l6K+l5Zyw5Z2A77yaXCIrIG9wZW5pbmZvfSk7XHJcblx0XHRcdFx0XHRcdH0gXHJcblx0XHRcdFx0XHRcdC8vIGlmKEpTT04uc3RyaW5naWZ5KHJlcy5kYXRhKS5pbmNsdWRlcygnTG9naW4gUGFnZSAtIEFjZSBBZG1pbicpKXtcclxuXHRcdFx0XHRcdFx0Ly8gXHR1bmkucmVMYXVuY2goe1xyXG5cdFx0XHRcdFx0XHQvLyBcdFx0dXJsOiAnLi4vbG9naW4vaW5kZXgnXHJcblx0XHRcdFx0XHRcdC8vIFx0fSlcclxuXHRcdFx0XHRcdFx0Ly8gXHRyZWplY3Qoe1wiZXJyTXNnXCI6XCLnmbvlvZXlt7Lov4fmnJ/vvIzor7fph43mlrDnmbvlvZVcIn0pO1xyXG5cdFx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhO1xyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcgfHwgcmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJhcmVhRnVuY1wiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQubXNnP3JldC5tc2c6cmV0LmVycl9tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHQvLyBNb2JveDPojrflj5blupTnlKjpoobln5/kuIvnmoTlip/og73ngrlcclxuXHRcdEdldEZ1bmNUcmVlOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkKTtcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLk9JTW9ib3hTQVBJKydhcGkvYXBwL0dldEZ1bmNUcmVlP3Nlc3Npb25pZD0nK3N0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZCxcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKF9yZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coX3Jlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IF9yZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBjb21taXQoXCJhcmVhRnVuY1wiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQuZXJyX21zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0Y2xhc3NBdHRyTGlzdDogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0dW5pdmVyaWZ5SW5mby5sb2dpbkluZm8gPSBKU09OLnN0cmluZ2lmeSh7XHJcblx0XHRcdFx0XHRzZXJ2ZXI6IHVuaS5nZXRTdG9yYWdlU3luYygnc2VydmVyJyksXHJcblx0XHRcdFx0XHR1bmFtZTogdW5pLmdldFN0b3JhZ2VTeW5jKCdhY2NvdW50JyksXHJcblx0XHRcdFx0XHRwd2Q6IHVuaS5nZXRTdG9yYWdlU3luYygncGFzc3dvcmQnKSxcclxuXHRcdFx0XHRcdGNuYW1lOiBwbHVzLmRldmljZS5tb2RlbCxcclxuXHRcdFx0XHRcdHR5cGU6IFwiMFwiXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS51cmwgKyBcIlBEQS9QREFBdHRyTGlzdFwiLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IHtcclxuXHRcdFx0XHRcdFx0J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHQvLyBpZihKU09OLnN0cmluZ2lmeShyZXMuZGF0YSkuaW5jbHVkZXMoJ0xvZ2luIFBhZ2UgLSBBY2UgQWRtaW4nKSl7XHJcblx0XHRcdFx0XHRcdC8vIFx0dW5pLnJlTGF1bmNoKHtcclxuXHRcdFx0XHRcdFx0Ly8gXHRcdHVybDogJy4uL2xvZ2luL2luZGV4J1xyXG5cdFx0XHRcdFx0XHQvLyBcdH0pXHJcblx0XHRcdFx0XHRcdC8vIFx0cmVqZWN0KHtcImVyck1zZ1wiOlwi55m75b2V5bey6L+H5pyf77yM6K+36YeN5paw55m75b2VXCJ9KTtcclxuXHRcdFx0XHRcdFx0Ly8gfVxyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSByZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJjbGFzc0F0dHJMaXN0XCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdGNsYXNzR3JpZFN0eWxlSW5mbzogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0dW5pdmVyaWZ5SW5mby5sb2dpbkluZm8gPSBKU09OLnN0cmluZ2lmeSh7XHJcblx0XHRcdFx0XHRzZXJ2ZXI6IHVuaS5nZXRTdG9yYWdlU3luYygnc2VydmVyJyksXHJcblx0XHRcdFx0XHR1bmFtZTogdW5pLmdldFN0b3JhZ2VTeW5jKCdhY2NvdW50JyksXHJcblx0XHRcdFx0XHRwd2Q6IHVuaS5nZXRTdG9yYWdlU3luYygncGFzc3dvcmQnKSxcclxuXHRcdFx0XHRcdGNuYW1lOiBwbHVzLmRldmljZS5tb2RlbCxcclxuXHRcdFx0XHRcdHR5cGU6IFwiMFwiXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFx0IFxyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUudXJsICsgXCJQREEvUERBR3JpZFN0eWxlR2V0SW5mb1wiLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IHtcclxuXHRcdFx0XHRcdFx0J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHQvLyBpZihKU09OLnN0cmluZ2lmeShyZXMuZGF0YSkuaW5jbHVkZXMoJ0xvZ2luIFBhZ2UgLSBBY2UgQWRtaW4nKSl7XHJcblx0XHRcdFx0XHRcdC8vIFx0dW5pLnJlTGF1bmNoKHtcclxuXHRcdFx0XHRcdFx0Ly8gXHRcdHVybDogJy4uL2xvZ2luL2luZGV4J1xyXG5cdFx0XHRcdFx0XHQvLyBcdH0pXHJcblx0XHRcdFx0XHRcdC8vIFx0cmVqZWN0KHtcImVyck1zZ1wiOlwi55m75b2V5bey6L+H5pyf77yM6K+36YeN5paw55m75b2VXCJ9KTtcclxuXHRcdFx0XHRcdFx0Ly8gfVxyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSByZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHQvLyB2YXIgZGF0YSA9e307XHJcblx0XHRcdFx0XHRcdFx0Ly8gVnVlLnNldChkYXRhLHVuaXZlcmlmeUluZm8ubmFtZSxyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcImNsYXNzR3JpZFN0eWxlSW5mb1wiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQubXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHRzdWJDbGFzc0F0dHJMaXN0OiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvLmxvZ2luSW5mbyA9IEpTT04uc3RyaW5naWZ5KHtcclxuXHRcdFx0XHRcdHNlcnZlcjogdW5pLmdldFN0b3JhZ2VTeW5jKCdzZXJ2ZXInKSxcclxuXHRcdFx0XHRcdHVuYW1lOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ2FjY291bnQnKSxcclxuXHRcdFx0XHRcdHB3ZDogdW5pLmdldFN0b3JhZ2VTeW5jKCdwYXNzd29yZCcpLFxyXG5cdFx0XHRcdFx0Y25hbWU6IHBsdXMuZGV2aWNlLm1vZGVsLFxyXG5cdFx0XHRcdFx0dHlwZTogXCIwXCJcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLnVybCArIFwiUERBL1BEQUF0dHJMaXN0XCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0XHQnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdC8vIGlmKEpTT04uc3RyaW5naWZ5KHJlcy5kYXRhKS5pbmNsdWRlcygnTG9naW4gUGFnZSAtIEFjZSBBZG1pbicpKXtcclxuXHRcdFx0XHRcdFx0Ly8gXHR1bmkucmVMYXVuY2goe1xyXG5cdFx0XHRcdFx0XHQvLyBcdFx0dXJsOiAnLi4vbG9naW4vaW5kZXgnXHJcblx0XHRcdFx0XHRcdC8vIFx0fSlcclxuXHRcdFx0XHRcdFx0Ly8gXHRyZWplY3Qoe1wiZXJyTXNnXCI6XCLnmbvlvZXlt7Lov4fmnJ/vvIzor7fph43mlrDnmbvlvZVcIn0pO1xyXG5cdFx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcInN1YkNsYXNzQXR0ckxpc3RcIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0Lm1zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0c3ViQ2xhc3NHcmlkU3R5bGVJbmZvOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHR1bml2ZXJpZnlJbmZvLmxvZ2luSW5mbyA9IEpTT04uc3RyaW5naWZ5KHtcclxuXHRcdFx0XHRcdHNlcnZlcjogdW5pLmdldFN0b3JhZ2VTeW5jKCdzZXJ2ZXInKSxcclxuXHRcdFx0XHRcdHVuYW1lOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ2FjY291bnQnKSxcclxuXHRcdFx0XHRcdHB3ZDogdW5pLmdldFN0b3JhZ2VTeW5jKCdwYXNzd29yZCcpLFxyXG5cdFx0XHRcdFx0Y25hbWU6IHBsdXMuZGV2aWNlLm1vZGVsLFxyXG5cdFx0XHRcdFx0dHlwZTogXCIwXCJcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHQgXHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS51cmwgKyBcIlBEQS9QREFHcmlkU3R5bGVHZXRJbmZvXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0XHQnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdC8vIGlmKEpTT04uc3RyaW5naWZ5KHJlcy5kYXRhKS5pbmNsdWRlcygnTG9naW4gUGFnZSAtIEFjZSBBZG1pbicpKXtcclxuXHRcdFx0XHRcdFx0Ly8gXHR1bmkucmVMYXVuY2goe1xyXG5cdFx0XHRcdFx0XHQvLyBcdFx0dXJsOiAnLi4vbG9naW4vaW5kZXgnXHJcblx0XHRcdFx0XHRcdC8vIFx0fSlcclxuXHRcdFx0XHRcdFx0Ly8gXHRyZWplY3Qoe1wiZXJyTXNnXCI6XCLnmbvlvZXlt7Lov4fmnJ/vvIzor7fph43mlrDnmbvlvZVcIn0pO1xyXG5cdFx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdC8vIHZhciBkYXRhID17fTtcclxuXHRcdFx0XHRcdFx0XHQvLyBWdWUuc2V0KGRhdGEsdW5pdmVyaWZ5SW5mby5uYW1lLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwic3ViQ2xhc3NHcmlkU3R5bGVJbmZvXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5lcnJfbXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHRkaWNWYWx1ZUluZm86IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHVuaXZlcmlmeUluZm8ubG9naW5JbmZvID0gSlNPTi5zdHJpbmdpZnkoe1xyXG5cdFx0XHRcdFx0c2VydmVyOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3NlcnZlcicpLFxyXG5cdFx0XHRcdFx0dW5hbWU6IHVuaS5nZXRTdG9yYWdlU3luYygnYWNjb3VudCcpLFxyXG5cdFx0XHRcdFx0cHdkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3Bhc3N3b3JkJyksXHJcblx0XHRcdFx0XHRjbmFtZTogcGx1cy5kZXZpY2UubW9kZWwsXHJcblx0XHRcdFx0XHR0eXBlOiBcIjBcIlxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdCBcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLnVybCArIFwiUERBL1BEQURpY1ZhbHVlR2V0SW5mb1wiLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IHtcclxuXHRcdFx0XHRcdFx0J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSByZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRzdGF0ZS50aGlzRGljdE5hbWUgPSB1bml2ZXJpZnlJbmZvLmRpY19uYW1lXHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwiZGljVmFsdWVJbmZvXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdERhdGFPYmpSdW5DdXN0b21FdmVudEluZm86IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHVuaXZlcmlmeUluZm8ubG9naW5JbmZvID0gSlNPTi5zdHJpbmdpZnkoe1xyXG5cdFx0XHRcdFx0c2VydmVyOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3NlcnZlcicpLFxyXG5cdFx0XHRcdFx0dW5hbWU6IHVuaS5nZXRTdG9yYWdlU3luYygnYWNjb3VudCcpLFxyXG5cdFx0XHRcdFx0cHdkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3Bhc3N3b3JkJyksXHJcblx0XHRcdFx0XHRjbmFtZTogcGx1cy5kZXZpY2UubW9kZWwsXHJcblx0XHRcdFx0XHR0eXBlOiBcIjBcIlxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUudXJsICsgXCJQREEvUERBRGF0YU9ialJ1bkN1c3RvbUV2ZW50XCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0XHQnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcIkRhdGFPYmpSdW5DdXN0b21FdmVudEluZm9cIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0Lm1zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0cXVlcnlTZWxwc246IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHZhciB1cmwgPSBzdGF0ZS51cmwgKyBcInNlbHBzbi9xdWVyeWpzb25cIjtcclxuXHRcdFx0XHR2YXIgZGF0YWpzb24gPSB1bml2ZXJpZnlJbmZvO1xyXG5cdFx0XHRcdHZhciBoZWFkZXIgPSB7J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnfTtcclxuXHRcdFx0XHRpZihzdGF0ZS5PSU9yZ1NBUEkpeyAvL+WIpOaWreaYr+WQpuaYr01vYm94M1xyXG5cdFx0XHRcdCBcdHVybCA9IHN0YXRlLk9JT3JnU0FQSSsnYXBpL3VzZXIvcXVlcnkvcXVlcnk/c2Vzc2lvbmlkPScrc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkO1xyXG5cdFx0XHRcdFx0ZGF0YWpzb24gPSB7XHJcblx0XHRcdFx0IFx0XHRxdWVyeV9zdHI6IHVuaXZlcmlmeUluZm8uanAsXHJcblx0XHRcdFx0IFx0fTtcclxuXHRcdFx0XHQgXHRoZWFkZXI9e307XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogdXJsLFxyXG5cdFx0XHRcdFx0ZGF0YTogZGF0YWpzb24sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0aGVhZGVyOiBoZWFkZXIsXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdHRyeXtcclxuXHRcdFx0XHRcdFx0XHRyZXMgPSBKU09OLnBhcnNlKHJlcy5kYXRhKTtcclxuXHRcdFx0XHRcdFx0fWNhdGNoKGUpeyBcclxuXHRcdFx0XHRcdFx0XHRyZXMgPSByZXMuZGF0YTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRpZiAocmVzLmNvZGU9PScwMDAwMCcgfHwgcmVzLmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJxdWVyeVNlbHBzblwiLHJlcyk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXMpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXMubXNnP3Jlcy5tc2c6cmVzLmVycl9tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdFByb2plY3RHZXRBbmFseXNpc0xpc3Q6IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdCB2YXIgdXJsID0gc3RhdGUudXJsICsgXCJicG0vUHJvamVjdEdldEFuYWx5c2lzTGlzdFwiO1xyXG5cdFx0XHRcdCB2YXIgaGVhZGVyID0geydjb250ZW50LXR5cGUnOiAnYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkJ307XHJcblx0XHRcdFx0IGlmKHN0YXRlLk9JTW9ib3hTQVBJKXsgLy/liKTmlq3mmK/lkKbmmK9Nb2JveDNcclxuXHRcdFx0XHQgXHQvLyB1cmwgPSBzdGF0ZS5PSU1vYm94U0FQSSsnYXBpL2FwcC9hcmVhL0dldExpc3Q/c2Vzc2lvbmlkPScrc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkO1xyXG5cdFx0XHRcdCBcdC8vIHVuaXZlcmlmeUluZm8gPSB7XHJcblx0XHRcdFx0IFx0Ly8gXHRhcHBfdHlwZTogXCJNRVNcIixcclxuXHRcdFx0XHQgXHQvLyB9O1xyXG5cdFx0XHRcdCBcdC8vIGhlYWRlcj17fTtcclxuXHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpcIk1vYm94M+aaguaXtuacquaUr+aMgemAieaLqemhueebruaOpeWPo++8gVwifSk7XHJcblx0XHRcdFx0XHQvLyByZXNvbHZlKHtjb2RlOicwMDAwMCcsZGF0YTpcIlwiLG1zZzpcIlwifSk7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0IH1cclxuXHRcdFx0XHQgIFxyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogdXJsLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IGhlYWRlcixcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gcmVzLmRhdGE7XHJcblx0XHRcdFx0XHRcdGlmIChyZXQuY29kZT09JzAwMDAwJykge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcIlByb2plY3RHZXRBbmFseXNpc0xpc3RcIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0Lm1zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0YWRkY2xhc3NhdHRyOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHVuaXZlcmlmeUluZm8ubG9naW5JbmZvID0gSlNPTi5zdHJpbmdpZnkoe1xyXG5cdFx0XHRcdFx0c2VydmVyOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3NlcnZlcicpLFxyXG5cdFx0XHRcdFx0dW5hbWU6IHVuaS5nZXRTdG9yYWdlU3luYygnYWNjb3VudCcpLFxyXG5cdFx0XHRcdFx0cHdkOiB1bmkuZ2V0U3RvcmFnZVN5bmMoJ3Bhc3N3b3JkJyksXHJcblx0XHRcdFx0XHRjbmFtZTogcGx1cy5kZXZpY2UubW9kZWwsXHJcblx0XHRcdFx0XHR0eXBlOiBcIjBcIlxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUudXJsICsgXCJQREEvYWRkY2xhc3NhdHRyXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdGhlYWRlcjoge1xyXG5cdFx0XHRcdFx0XHQnY29udGVudC10eXBlJzogJ2FwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCdcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlcyk7XHJcblx0XHRcdFx0XHRcdC8vIGlmKEpTT04uc3RyaW5naWZ5KHJlcy5kYXRhKS5pbmNsdWRlcygnTG9naW4gUGFnZSAtIEFjZSBBZG1pbicpKXtcclxuXHRcdFx0XHRcdFx0Ly8gXHR1bmkucmVMYXVuY2goe1xyXG5cdFx0XHRcdFx0XHQvLyBcdFx0dXJsOiAnLi4vbG9naW4vaW5kZXgnXHJcblx0XHRcdFx0XHRcdC8vIFx0fSlcclxuXHRcdFx0XHRcdFx0Ly8gXHRyZWplY3Qoe1wiZXJyTXNnXCI6XCLnmbvlvZXlt7Lov4fmnJ/vvIzor7fph43mlrDnmbvlvZVcIn0pO1xyXG5cdFx0XHRcdFx0XHQvLyB9XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IHJlcy5kYXRhO1xyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmNvZGU9PScwMDAwMCcpIHtcclxuXHRcdFx0XHRcdFx0XHRjb21taXQoXCJhZGRjbGFzc2F0dHJcIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6SlNPTi5zdHJpbmdpZnkocmV0KX0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdFxyXG5cdFx0RGVsT2JqOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQgLy8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLnVybCArIFwiUERBL0RlbE9ialwiLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRoZWFkZXI6IHtcclxuXHRcdFx0XHRcdFx0J2NvbnRlbnQtdHlwZSc6ICdhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWQnXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSByZXMuZGF0YTtcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5jb2RlPT0nMDAwMDAnKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwiRGVsT2JqXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOkpTT04uc3RyaW5naWZ5KHJldCl9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdFxyXG5cdFx0Ly8gYXBpL2NsYXNzL2F0dHIvR2V0TGlzdD9zZXNzaW9uaWQ9U0VTU0lPTl9JRFxyXG5cdFx0Ly8gTW9ib3gz5b6X5Yiw5pWw5o2u57G75bGe5oCnXHJcblx0XHRjbGFzc0F0dHJHZXRMaXN0OiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUuT0lEYXRhU0FQSSsnYXBpL2NsYXNzL2F0dHIvR2V0TGlzdD9zZXNzaW9uaWQ9JytzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChfcmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKF9yZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSBfcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0Y29tbWl0KFwiY2xhc3NBdHRyTGlzdFwiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQuZXJyX21zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdC8vIGFwaS9jbGFzcy9hdHRyL0dldExpc3Q/c2Vzc2lvbmlkPVNFU1NJT05fSURcclxuXHRcdC8vIE1vYm94M+W+l+WIsOaVsOaNruexu+WxnuaAp1xyXG5cdFx0c3ViQ2xhc3NBdHRyR2V0TGlzdDogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3RhdGUudXJsKTtcclxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XHJcblx0XHRcdFx0XHR1cmw6IHN0YXRlLk9JRGF0YVNBUEkrJ2FwaS9jbGFzcy9hdHRyL0dldExpc3Q/c2Vzc2lvbmlkPScrc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAoX3JlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhfcmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gX3Jlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdGNvbW1pdChcInN1YkNsYXNzQXR0ckxpc3RcIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0LmVycl9tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHQvLyBhcGkvZGljdC9pdGVtL0dldEluZm8/c2Vzc2lvbmlkPVNFU1NJT05fSURcclxuXHRcdC8vIE1vYm94M+W+l+WIsOWtl+WFuOmhueWIl+ihqFxyXG5cdFx0RGljdEl0ZW1HZXRMaXN0OiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUuT0lNb2JveFNBUEkrJ2FwaS9kaWN0L2l0ZW0vR2V0SW5mbz9zZXNzaW9uaWQ9JytzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChfcmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKF9yZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSBfcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQuZXJyX21zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdC8vIGFwaS9kaWN0L0dldEluZm8yP3Nlc3Npb25pZD1TRVNTSU9OX0lEXHJcblx0XHQvLyBNb2JveDPlvpfliLDlrZflhbjkv6Hmga9cclxuXHRcdERpY3RHZXRJbmZvOiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdGF0ZS51cmwpO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUuT0lNb2JveFNBUEkrJ2FwaS9kaWN0L0dldEluZm8yP3Nlc3Npb25pZD0nK3N0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZCxcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKF9yZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coX3Jlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IF9yZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5lcnJfbXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0XHJcblx0XHQvLyBhcGkvZGF0YW9iai9DcmVhdGU/c2Vzc2lvbmlkPVNFU1NJT05fSURcclxuXHRcdC8vIE1vYm94M+WIm+W7uuaVsOaNruWvueixoVxyXG5cdFx0Y3JlYXRlRGF0YU9iajogZnVuY3Rpb24oe1xyXG5cdFx0XHRjb21taXQsXHJcblx0XHRcdHN0YXRlXHJcblx0XHR9LCB1bml2ZXJpZnlJbmZvKSB7XHJcblx0XHRcdHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcblx0XHRcdFx0IC8vIGNvbnNvbGUubG9nKHN0YXRlLnVybCk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS5PSURhdGFTQVBJKydhcGkvZGF0YW9iai9DcmVhdGU/c2Vzc2lvbmlkPScrc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAoX3JlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhfcmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gX3Jlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0LmVycl9tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHRcdC8vIGFwaS9jbGFzcy91aXN0eWxlL0dldEluZm8/c2Vzc2lvbmlkPVNFU1NJT05fSURcclxuXHRcdC8vIE1vYm94M+W+l+WIsOaVsOaNruexu+aYvuekuuagt+W8j+S/oeaBr1xyXG5cdFx0VUlTdHlsZUdldEluZm86IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZCk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS5PSURhdGFTQVBJKydhcGkvY2xhc3MvdWlzdHlsZS9HZXRJbmZvP3Nlc3Npb25pZD0nK3N0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZCxcclxuXHRcdFx0XHRcdGRhdGE6IHVuaXZlcmlmeUluZm8sXHJcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcclxuXHRcdFx0XHRcdGRhdGFUeXBlOlwianNvblwiLFxyXG5cdFx0XHRcdFx0c3VjY2VzczogKF9yZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coX3Jlcyk7XHJcblx0XHRcdFx0XHRcdGNvbnN0IHJldCA9IF9yZXMuZGF0YVxyXG5cdFx0XHRcdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHRcdFx0XHQvLyBjb21taXQoXCJhcmVhRnVuY1wiLHJldCk7XHJcblx0XHRcdFx0XHRcdFx0cmVzb2x2ZShyZXQpO1xyXG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdHJlamVjdCh7XCJlcnJNc2dcIjpyZXQuZXJyX21zZ30pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhlcnIpO1xyXG5cdFx0XHRcdFx0XHRyZWplY3QoZXJyKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9KVxyXG5cdFx0fSxcclxuXHRcdC8vIGFwaS9kYXRhb2JqL1J1bkN1c3RvbUV2ZW50P3Nlc3Npb25pZD1TRVNTSU9OX0lEXHJcblx0XHQvLyBNb2JveDPmiafooYzoh6rlrprkuYnohJrmnKxcclxuXHRcdHJ1bkN1c3RvbUV2ZW50OiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQpO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUuT0lEYXRhU0FQSSsnYXBpL2RhdGFvYmovUnVuQ3VzdG9tRXZlbnQ/c2Vzc2lvbmlkPScrc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAoX3JlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhfcmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gX3Jlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbW1pdChcImFyZWFGdW5jXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5lcnJfbXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0Ly8gYXBpL2RhdGFvYmovRGVsZXRlP3Nlc3Npb25pZD1TRVNTSU9OX0lEXHJcblx0XHQvLyBNb2JveDPliKDpmaTmlbDmja7lr7nosaFcclxuXHRcdGRhdGFPYmpEZWw6IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN0YXRlLmxvZ2luUHJvdmlkZXIubG9naW5pZC5yZXN1bHQuc2Vzc2lvbl9pZCk7XHJcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBzdGF0ZS5PSURhdGFTQVBJKydhcGkvZGF0YW9iai9EZWxldGU/c2Vzc2lvbmlkPScrc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAoX3JlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhfcmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gX3Jlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbW1pdChcImFyZWFGdW5jXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5lcnJfbXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0Ly8gYXBpL2RhdGFvYmovcXVlcnkvUXVlcnk/c2Vzc2lvbmlkPVNFU1NJT05fSURcclxuXHRcdC8vIE1vYm94M+afpeivouaVsOaNruWvueixoVxyXG5cdFx0ZGF0YU9ialF1ZXJ5OiBmdW5jdGlvbih7XHJcblx0XHRcdGNvbW1pdCxcclxuXHRcdFx0c3RhdGVcclxuXHRcdH0sIHVuaXZlcmlmeUluZm8pIHtcclxuXHRcdFx0cmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQpO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUuT0lEYXRhU0FQSSsnYXBpL2RhdGFvYmovcXVlcnkvUXVlcnk/c2Vzc2lvbmlkPScrc3RhdGUubG9naW5Qcm92aWRlci5sb2dpbmlkLnJlc3VsdC5zZXNzaW9uX2lkLFxyXG5cdFx0XHRcdFx0ZGF0YTogdW5pdmVyaWZ5SW5mbyxcclxuXHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxyXG5cdFx0XHRcdFx0ZGF0YVR5cGU6XCJqc29uXCIsXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAoX3JlcykgPT4ge1xyXG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhfcmVzKTtcclxuXHRcdFx0XHRcdFx0Y29uc3QgcmV0ID0gX3Jlcy5kYXRhXHJcblx0XHRcdFx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0XHRcdC8vIGNvbW1pdChcImFyZWFGdW5jXCIscmV0KTtcclxuXHRcdFx0XHRcdFx0XHRyZXNvbHZlKHJldCk7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0cmVqZWN0KHtcImVyck1zZ1wiOnJldC5lcnJfbXNnfSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGVycik7XHJcblx0XHRcdFx0XHRcdHJlamVjdChlcnIpO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0pXHJcblx0XHR9LFxyXG5cdFx0Ly8gYXBpL2FwcC9HZXRJbmZvP3Nlc3Npb25pZD1TRVNTSU9OX0lEXHJcblx0XHQvLyBNb2JveDPojrflj5blip/og73ngrnkv6Hmga9cclxuXHRcdGFwcEdldEluZm86IGZ1bmN0aW9uKHtcclxuXHRcdFx0Y29tbWl0LFxyXG5cdFx0XHRzdGF0ZVxyXG5cdFx0fSwgdW5pdmVyaWZ5SW5mbykge1xyXG5cdFx0XHRyZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG5cdFx0XHRcdCAvLyBjb25zb2xlLmxvZyhzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQpO1xyXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcclxuXHRcdFx0XHRcdHVybDogc3RhdGUuT0lNb2JveFNBUEkrJ2FwaS9hcHAvR2V0SW5mbz9zZXNzaW9uaWQ9JytzdGF0ZS5sb2dpblByb3ZpZGVyLmxvZ2luaWQucmVzdWx0LnNlc3Npb25faWQsXHJcblx0XHRcdFx0XHRkYXRhOiB1bml2ZXJpZnlJbmZvLFxyXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXHJcblx0XHRcdFx0XHRkYXRhVHlwZTpcImpzb25cIixcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChfcmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKF9yZXMpO1xyXG5cdFx0XHRcdFx0XHRjb25zdCByZXQgPSBfcmVzLmRhdGFcclxuXHRcdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8gY29tbWl0KFwiYXJlYUZ1bmNcIixyZXQpO1xyXG5cdFx0XHRcdFx0XHRcdHJlc29sdmUocmV0KTtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRyZWplY3Qoe1wiZXJyTXNnXCI6cmV0LmVycl9tc2d9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXJyKTtcclxuXHRcdFx0XHRcdFx0cmVqZWN0KGVycik7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSlcclxuXHRcdH0sXHJcblx0XHRcclxuXHR9XHJcbn0pXHJcblxyXG5leHBvcnQgZGVmYXVsdCBzdG9yZVxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///200\n"); |
| | | |
| | | /***/ }), |
| | | /* 201 */ |