From 3dd7c408b5a8066d2726c05aaddd8c972367d0e0 Mon Sep 17 00:00:00 2001 From: jt <jt@activesoft.com.cn> Date: 星期日, 08 十月 2023 15:24:11 +0800 Subject: [PATCH] test --- unpackage/dist/dev/app-plus/app-service.js | 75 ++++++++++++++++++++----------------- 1 files changed, 41 insertions(+), 34 deletions(-) diff --git a/unpackage/dist/dev/app-plus/app-service.js b/unpackage/dist/dev/app-plus/app-service.js index dbf3354..69acd2a 100644 --- a/unpackage/dist/dev/app-plus/app-service.js +++ b/unpackage/dist/dev/app-plus/app-service.js @@ -17868,6 +17868,13 @@ [_vm._v(_vm._$s(281, "t0-0", _vm._s(_vm.title)))] ) : _vm._e(), + _vm._$s(282, "i", _vm.param.After_Trigger_Event) + ? _c("button", { + staticClass: _vm._$s(282, "sc", "btn_trigger"), + attrs: { _i: 282 }, + on: { click: _vm.trigger }, + }) + : _vm._e(), _c( "view", [ @@ -17875,28 +17882,28 @@ "uni-popup", { ref: "popup", - staticClass: _vm._$s(283, "sc", "view-popup"), - attrs: { "background-color": "#fff", _i: 283 }, + staticClass: _vm._$s(284, "sc", "view-popup"), + attrs: { "background-color": "#fff", _i: 284 }, on: { change: _vm.popupChange }, }, [ _c( "view", { - staticClass: _vm._$s(284, "sc", "popup-header"), - attrs: { _i: 284 }, + staticClass: _vm._$s(285, "sc", "popup-header"), + attrs: { _i: 285 }, }, - [_vm._v(_vm._$s(284, "t0-0", _vm._s(_vm.check_list.title)))] + [_vm._v(_vm._$s(285, "t0-0", _vm._s(_vm.check_list.title)))] ), _c( "view", { - staticClass: _vm._$s(285, "sc", "popup-content"), - class: _vm._$s(285, "c", { + staticClass: _vm._$s(286, "sc", "popup-content"), + class: _vm._$s(286, "c", { "popup-height": _vm.popupType === "left" || _vm.popupType === "right", }), - style: _vm._$s(285, "s", { + style: _vm._$s(286, "s", { width: _vm.check_list.width ? _vm.check_list.width + "px" : "200px", @@ -17904,61 +17911,61 @@ ? _vm.check_list.height + "px" : "88%", }), - attrs: { _i: 285 }, + attrs: { _i: 286 }, }, [ _c( "view", { - staticClass: _vm._$s(286, "sc", "popup-cont"), - style: _vm._$s(286, "s", { + staticClass: _vm._$s(287, "sc", "popup-cont"), + style: _vm._$s(287, "s", { height: _vm.check_list.height ? _vm.check_list.height - 45 + "px" : "415px", }), - attrs: { _i: 286 }, + attrs: { _i: 287 }, }, _vm._l( - _vm._$s(287, "f", { forItems: _vm.check_list.items }), + _vm._$s(288, "f", { forItems: _vm.check_list.items }), function (item, index, $25, $35) { return _c( "view", { - key: _vm._$s(287, "f", { + key: _vm._$s(288, "f", { forIndex: $25, - key: 287 + "-" + $35, + key: 288 + "-" + $35, }), staticClass: _vm._$s( - "287-" + $35, + "288-" + $35, "sc", "view_popup_CheckList" ), - attrs: { _i: "287-" + $35 }, + attrs: { _i: "288-" + $35 }, }, [ _c( "checkbox-group", { staticClass: _vm._$s( - "288-" + $35, + "289-" + $35, "sc", "check_list" ), - style: _vm._$s("288-" + $35, "s", { + style: _vm._$s("289-" + $35, "s", { "margin-left": "10rpx", }), attrs: { "data-ischeck": _vm._$s( - "288-" + $35, + "289-" + $35, "a-data-ischeck", item.check ), "data-index": _vm._$s( - "288-" + $35, + "289-" + $35, "a-data-index", index ), - _i: "288-" + $35, + _i: "289-" + $35, }, on: { change: _vm.checkChange }, }, @@ -17967,22 +17974,22 @@ _c("checkbox", { attrs: { value: _vm._$s( - "290-" + $35, + "291-" + $35, "a-value", item.check ), checked: _vm._$s( - "290-" + $35, + "291-" + $35, "a-checked", item.check ), - _i: "290-" + $35, + _i: "291-" + $35, }, }), _c("text", [ _vm._v( _vm._$s( - "291-" + $35, + "292-" + $35, "t0-0", _vm._s(item.name) ) @@ -18000,18 +18007,18 @@ _c( "view", { - staticClass: _vm._$s(292, "sc", "popup-footer"), - attrs: { _i: 292 }, + staticClass: _vm._$s(293, "sc", "popup-footer"), + attrs: { _i: 293 }, }, [ _c("button", { - staticClass: _vm._$s(293, "sc", "btn_popup_add"), - attrs: { _i: 293 }, + staticClass: _vm._$s(294, "sc", "btn_popup_add"), + attrs: { _i: 294 }, on: { click: _vm.popup_sava }, }), _c("button", { - staticClass: _vm._$s(294, "sc", "btn_popup_cancel"), - attrs: { _i: 294 }, + staticClass: _vm._$s(295, "sc", "btn_popup_cancel"), + attrs: { _i: 295 }, on: { click: _vm.popup_cancel }, }), ] @@ -18053,7 +18060,7 @@ /***/ (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 _pickerAddress = _interopRequireDefault(__webpack_require__(/*! ../../js/pickerAddress/pickerAddress.vue */ 80));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 components: {\n pickerAddress: _pickerAddress.default\n },\n data: function data() {\n return {\n title: '鏂板',\n param: {},\n classAttrList: [],\n classGridStyle: [],\n edit_inital_event: \"\",\n //寮圭獥鍒濆鍖栦簨浠禝D\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 };\n },\n onLoad: function onLoad(options) {\n // console.log(options);\n uni.setNavigationBarTitle({\n title: options.titlename\n }); //璁剧疆椤堕儴鏍囬 \n var param = JSON.parse(options.param);\n this.$data.title = param.Add_BtnName ? param.Add_BtnName : options.titlename; //璁剧疆鎸夐挳鏂囧瓧\n __f__(\"log\", param, \" at pages/modal/ms_classAttr.vue:1012\");\n if (!param.Master_Cls.View_Style) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"璇ュ姛鑳界偣鏈厤缃晫闈㈢獥鍙o紝璇烽噸鏂伴厤缃紒\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n if (!param.Master_Cls.View_Style.Name) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"璇ュ姛鑳界偣鏈厤缃獥鍙f牱寮忥紝璇烽噸鏂伴厤缃紒\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n this.$data.param = param;\n // var edit_dlg = {\n // Model: param.EditDlgMode,\n // Name: param.Master_Cls.View_Style.Name\n // }\n //涓绘暟鎹被鑾峰彇\n var dataInfo = {\n class_id: param.Master_Cls.ID\n };\n var $this = this;\n $this.$store.state.thisareaFuncID = param.Master_Cls.ID;\n // console.log($this.$store.getters.getclassAttrList);\n if ($this.$store.getters.getclassAttrList) {\n $this.$data.classAttrList = $this.$store.getters.getclassAttrList.data;\n $this.classGridStyleInfo(param.Master_Cls.ID, $this.$data.param.Master_Cls.View_Style.Name, 'Mast');\n } else {\n $this.$store.dispatch('classAttrList', dataInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n $this.$data.classAttrList = success.data;\n $this.classGridStyleInfo(param.Master_Cls.ID, $this.$data.param.Master_Cls.View_Style.Name, 'Mast');\n } else {\n uni.showModal({\n title: \"閿欒1\",\n content: success.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 }\n\n //浠庢暟鎹被鑾峰彇\n var subdataInfo = {\n class_id: param.Sub_Cls.ID\n };\n $this.$store.state.thisareaFuncSubID = param.Sub_Cls.ID;\n if ($this.$store.getters.getSubClassAttrList) {\n $this.$data.subClassAttrList = $this.$store.getters.getSubClassAttrList.data;\n $this.classGridStyleInfo(param.Sub_Cls.ID, $this.$data.param.Sub_Cls.View_Style.Name, 'Sub');\n } else {\n $this.$store.dispatch('subClassAttrList', subdataInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n $this.$data.subClassAttrList = success.data;\n $this.classGridStyleInfo(param.Sub_Cls.ID, $this.$data.param.Sub_Cls.View_Style.Name, 'Sub');\n } else {\n uni.showModal({\n title: \"閿欒1_1\",\n content: success.msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"閿欒1_1.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n }\n },\n methods: {\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 mast_attr = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷�) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + \"鏈�鎷╂暟鎹紒\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_attr.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) mast_attr.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else mast_attr.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n }\n }\n var objects = [];\n var subPanelList = $this.$data.subPanelList;\n for (var s = 0; s < subPanelList.length; s++) {\n var sub_req = [];\n for (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n var attr = subPanelList[s].subClassAttr[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') sub_req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) sub_req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n if (ar.select == true) {\n //鍒ゆ柇涓嬫媺鏄惁澶氶�\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr) valStr += \";\";\n valStr += ar.Value[v];\n }\n sub_req.push({\n attr: ar.Name,\n value: valStr\n });\n } else sub_req.push({\n attr: ar.Name,\n value: ar.Value\n });\n } else sub_req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n if (ar.notempty == true && !ar.Value) {\n // if(ar.NotEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'涓嶈兘涓虹┖锛�,icon:\"success\",duration:3000});\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + '涓嶈兘涓虹┖锛�,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n }\n }\n objects.push({\n obj_id: subPanelList[s].scanCodeVal,\n obj_attrs: sub_req\n });\n }\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,//褰撳墠鏁版嵁绫籭d\n },\n\n master_cls: {\n cls_name: 'MBOX',\n //$this.$data.param.Master_Cls.Name,\n obj_attrs: req\n },\n sub_cls: {\n cls_name: 'MBOX',\n //$this.$data.param.Sub_Cls.Name,\n objects: objects\n }\n };\n var req = [];\n // var subPanelList = $this.$data.subPanelList;\n // for (var s = 0; s < subPanelList.length; s++) {\n // \tvar json = {};\n // \tfor (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n // \t\tvar attr = subPanelList[s].subClassAttr[i].Attr;\n // \t\tfor (var j = 0; j < attr.length; j++) {\n // \t\t\tvar ar = attr[j];\n // \t\t\tjson[ar.Name] = ar.Value;\n // \t\t}\n // \t}\n // \treq.push(json);\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/ms_classAttr.vue:1271\");\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 mast_attr = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷�) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + \"鏈�鎷╂暟鎹紒\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_attr.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) mast_attr.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else mast_attr.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\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 };\n // console.log(info);\n this.scan_DataObjRunCustomEvent(info, \"\");\n this.$refs.popup.close();\n },\n cancel: function cancel(e) {\n uni.navigateBack({\n delta: 1 //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\n });\n },\n panel_del: function panel_del(index) {\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 clsId: this.$data.param.Sub_Cls.ID,\n objId: this.$data.subPanelList[index].ObjID\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1373\");\n // return;\n uni.showLoading({\n title: \"鍔犺浇涓�..\"\n });\n this.$store.dispatch('DelObj', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1379\");\n uni.hideLoading();\n if (success.code == '00000') {\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/ms_classAttr.vue:1398\");\n uni.hideLoading();\n uni.showModal({\n title: \"鎻愮ず9.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n }\n },\n classGridStyleInfo: function classGridStyleInfo(clsid, styleName, clsType) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var $this, gridstyleInfo;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n $this = _this;\n gridstyleInfo = {\n class_id: clsid,\n name: styleName,\n type: '2'\n }; // console.log($this.$store.getters.getclassGridStyleInfo);\n //鑾峰彇涓绘暟鎹被鐣岄潰鏍峰紡\n if (clsType == 'Mast') {\n $this.$store.state.thisEditName = styleName;\n if ($this.$store.getters.getclassGridStyleInfo) {\n $this.$data.classGridStyle = $this.$store.getters.getclassGridStyleInfo.data;\n $this.class_attr_init();\n } else {\n //console.log(gridstyleInfo);\n $this.$store.dispatch('classGridStyleInfo', gridstyleInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n success.data.StyleDef = JSON.parse(success.data.StyleDef);\n $this.$data.classGridStyle = success.data;\n $this.class_attr_init();\n } else {\n uni.showModal({\n title: \"閿欒1.2\",\n content: success.msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:1441\");\n uni.showModal({\n title: \"閿欒1.3\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n }\n } else if (clsType == 'Sub') {\n //鑾峰彇浠庢暟鎹被鐣岄潰鏍峰紡\n $this.$store.state.thisEditSubName = styleName;\n if ($this.$store.getters.getSubClassGridStyleInfo) {\n $this.$data.subClassGridStyle = $this.$store.getters.getSubClassGridStyleInfo.data;\n $this.subClass_attr_init();\n } else {\n //console.log(gridstyleInfo);\n $this.$store.dispatch('subClassGridStyleInfo', gridstyleInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n success.data.StyleDef = JSON.parse(success.data.StyleDef);\n $this.$data.subClassGridStyle = success.data;\n $this.subClass_attr_init();\n } else {\n uni.showModal({\n title: \"閿欒1.2\",\n content: success.msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:1473\");\n uni.showModal({\n title: \"閿欒1.3\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n }\n }\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n ontap: function ontap(e) {\n var _this2 = this;\n //鎵爜鍔熻兘\n //console.log(e.target)\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n var isVal = _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n // if(!isVal){\n // \tthis.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=result.decodedata;\n // \tvar isVald =this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n // \treturn;\n // }\n //涓绘暟鎹被鎵爜鏌ヨ鏁版嵁\n if (isVal != result.decodedata) {\n _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n uni.hideKeyboard();\n //瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈琝n var eventid = _this2.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n var req = [];\n var attrlist = _this2.$data.classAttrList; //涓绘暟鎹被灞炴�\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\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 _this2.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n });\n },\n subontap: function subontap(e) {\n var _this3 = this;\n //鎵爜鍔熻兘\n //console.log(e.target)\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n var isVal = _this3.$data.subClassAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n //涓绘暟鎹被鎵爜鏌ヨ鏁版嵁\n if (isVal != result.decodedata) {\n _this3.$data.subClassAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n uni.hideKeyboard();\n //瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈琝n var eventid = _this3.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n var req = [];\n var attrlist = _this3.$data.subClassAttrList; //涓绘暟鎹被灞炴�\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\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 _this3.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n });\n },\n scan_ontap: function scan_ontap(e) {\n var _this4 = this;\n //鎵爜鍖烘壂鐮佸姛鑳絓n //console.log(e.target)\n getApp().onScan(function (result) {\n __f__(\"log\", result.decodedata, \" at pages/modal/ms_classAttr.vue:1614\");\n var isflag = true;\n for (var i in _this4.$data.subPanelList) {\n if (_this4.$data.subPanelList[i].scanCodeVal == result.decodedata) isflag = false;\n }\n //瀛愭暟鎹被鎵爜鏌ヨ鏁版嵁\n if (isflag) {\n uni.hideKeyboard();\n _this4.$data.scanCodeVal = result.decodedata;\n var eventid = _this4.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n var mast_req = [];\n //涓绘暟鎹被灞炴�\n var classattrlist = _this4.$data.classAttrList;\n for (var i = 0; i < classattrlist.length; i++) {\n var attr = classattrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) mast_req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else mast_req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n }\n }\n var req = [];\n //瀛愭暟鎹被灞炴�\n var attrlist = _this4.$data.subClassAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\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: mast_req,\n inputParamter: [{\n attr: 'input_3037',\n value: _this4.$data.scanCodeVal\n }]\n };\n _this4.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 var mast_req = [];\n //涓绘暟鎹被灞炴�\n var classattrlist = this.$data.classAttrList;\n for (var i = 0; i < classattrlist.length; i++) {\n var attr = classattrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) mast_req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else mast_req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n }\n }\n var req = [];\n //瀛愭暟鎹被灞炴�\n var attrlist = this.$data.subClassAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\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: mast_req,\n inputParamter: [{\n attr: 'input_3037',\n value: this.$data.scanCodeVal\n }]\n };\n this.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n }\n },\n onarrow: function onarrow(index, open) {\n // console.log(index+'--'+open);\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Open;\n if (!data_attr) {\n this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = open == true ? false : true;\n return;\n }\n this.$data.classAttrList[e.target.dataset['iiindex']].subClassAttr[index].Open = open == true ? false : true;\n },\n ondateTime: function ondateTime(e) {\n //console.log(e.target)\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n if (!data_attr) {\n this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n return;\n }\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n },\n onchange: function onchange(e) {\n __f__(\"log\", e.target, \" at pages/modal/ms_classAttr.vue:1812\");\n var value = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:1816\");\n if (value.Name != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n __f__(\"log\", this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/ms_classAttr.vue:1820\");\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n val: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n val: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n val: ar.Value ? ar.Value : ''\n });\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 onchange2: function onchange2(item, value, delvalue) {\n // console.log(item);\n // console.log(value);\n // console.log(delvalue);\n if (item.length == 0) {\n //涓虹┖鏃讹紝娓呯┖灞炴�value\n var index,\n iindex,\n dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n if (delvalue[0].attr == this.$data.classAttrList[i].Attr[j].Name) {\n this.$data.classAttrList[i].Attr[j].Value = \"\";\n }\n }\n }\n }\n for (var v in item) {\n var index,\n iindex,\n dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n if (item[v].attr == this.$data.classAttrList[i].Attr[j].Name) {\n index = i;\n iindex = j;\n }\n }\n }\n var itemvalue = item[v];\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:1895\");\n if (itemvalue.Name != data_attr.Value) {\n this.$data.classAttrList[index].Attr[iindex].Value = value;\n __f__(\"log\", this.$data.classAttrList[index].Attr[iindex].Value, \" at pages/modal/ms_classAttr.vue:1898\");\n var eventid = this.$data.classAttrList[index].Attr[iindex].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n val: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n val: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') req.push({\n attr: ar.Name,\n val: itemvalue.Name\n });else req.push({\n attr: ar.Name,\n val: ar.Value ? ar.Value : ''\n });\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 },\n sub_onchange: function sub_onchange(e) {\n __f__(\"log\", e.target, \" at pages/modal/ms_classAttr.vue:1951\");\n var value = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n var data_attr = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:1956\");\n if (value.Name != data_attr.Value) {\n this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n __f__(\"log\", this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/ms_classAttr.vue:1960\");\n var eventid = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n val: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n val: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n val: ar.Value ? ar.Value : ''\n });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req\n };\n this.DataObjRunCustomEvent(info);\n }\n }\n },\n sub_onchange2: function sub_onchange2(item, value, delvalue) {\n // console.log(item);\n // console.log(value);\n // console.log(delvalue);\n var subClassAttr = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr;\n if (item.length == 0) {\n //涓虹┖鏃讹紝娓呯┖灞炴�value\n var index,\n iindex,\n dindex = 0;\n for (var i in subClassAttr) {\n for (var j in subClassAttr[i].Attr) {\n for (var d in subClassAttr[i].Attr[j].dictitem) {\n if (delvalue[0].Name == subClassAttr[i].Attr[j].dictitem[d].Name) {\n subClassAttr[i].Attr[j].Value = \"\";\n }\n }\n }\n }\n }\n for (var v in item) {\n var index,\n iindex,\n dindex = 0;\n for (var i in subClassAttr) {\n for (var j in subClassAttr[i].Attr) {\n for (var d in subClassAttr[i].Attr[j].dictitem) {\n if (item[v].Name == subClassAttr[i].Attr[j].dictitem[d].Name) {\n index = i;\n iindex = j;\n dindex = d;\n }\n }\n }\n }\n var itemvalue = item[v];\n var data_attr = subClassAttr[index].Attr[iindex];\n __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:2041\");\n if (itemvalue.Name != data_attr.Value) {\n subClassAttr[index].Attr[iindex].Value = value;\n __f__(\"log\", subClassAttr[index].Attr[iindex].Value, \" at pages/modal/ms_classAttr.vue:2044\");\n var eventid = subClassAttr[index].Attr[iindex].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = subClassAttr;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n val: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n val: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') req.push({\n attr: ar.Name,\n val: itemvalue.Name\n });else req.push({\n attr: ar.Name,\n val: ar.Value ? ar.Value : ''\n });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req\n };\n this.DataObjRunCustomEvent(info);\n }\n }\n }\n },\n onevent: function onevent(e) {\n // console.log(e.target);\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n if (!data_attr) {\n this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n return;\n }\n // console.log(data_attr);\n if (e.target.value != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n // var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n //瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈琝n var eventid = this.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList; //涓绘暟鎹被灞炴�\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\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: e.target.value\n }]\n };\n this.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n },\n oncheck: function oncheck(e) {\n // console.log(e.target);\n var ischecked = e.target.dataset.ischeck ? false : true;\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n if (!data_attr) {\n this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n return;\n }\n // console.log(data_attr);\n if (ischecked != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n val: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n val: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n val: ar.Value ? ar.Value : ''\n });\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 inputValListIsDel: function inputValListIsDel(index) {\n // console.log(index);\n this.$data.inputValList.splice(index, 1); //鍒犻櫎tabPagejson鐨勫唴瀹筡n // console.log(this.$data.inputValList);\n },\n addresschange: function addresschange(e) {\n // console.log(e.target);\n __f__(\"log\", e.data.join(';'), \" at pages/modal/ms_classAttr.vue:2225\");\n this.$data.subClassAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.data.join(';');\n },\n classAttr_extButton: function classAttr_extButton(index, iindex) {\n var $this = this;\n var before_click_button = $this.$data.classAttrList[index].Attr[iindex].before_click_button;\n var button_callback = $this.$data.classAttrList[index].Attr[iindex].button_callback;\n if (!before_click_button) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"before_click_button-event_id涓虹┖锛乗",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n if (!button_callback) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"button_callback-event_id涓虹┖锛乗",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n this.DataObjRunCustomEvent_Return(before_click_button, data_attr, button_callback, index, iindex);\n },\n classAttr_AddPer: function classAttr_AddPer(index, iindex) {\n var param = {\n index: index,\n iindex: iindex\n };\n var $this = this;\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/ms_classAttr.vue:2265\");\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].Login + ';' + data[0].Name;\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"4\",\n projectid: \"\",\n rclsid: \"\",\n robjid: \"\",\n userlogin: data[0].Login,\n clsid: $this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: []\n };\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n }\n }\n });\n },\n classAttr_AddRef: function classAttr_AddRef(e) {\n __f__(\"log\", e.target, \" at pages/modal/ms_classAttr.vue:2295\");\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"姝ゅ姛鑳借繕鏈疄鐜帮紒\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n // var value=this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].RelCls[e.target.value];\n // this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=value;\n },\n classAttr_AddPrj: function classAttr_AddPrj(index, iindex) {\n var param = {\n index: index,\n iindex: iindex\n };\n var $this = this;\n uni.navigateTo({\n url: '../selPrj/index?relation=-1¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n // console.log(data);\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 eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: []\n };\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\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 }); //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\n },\n add: function add() {\n var _this5 = this;\n uni.showLoading({\n title: \"鍔犺浇涓�..\",\n mask: true\n });\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n name: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n name: ar.Name,\n value: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n if (ar.select == true) {\n //鍒ゆ柇涓嬫媺鏄惁澶氶�\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr) valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({\n name: ar.Name,\n value: valStr\n });\n } else req.push({\n name: ar.Name,\n value: ar.Value\n });\n } else req.push({\n name: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n if (ar.notempty == true && !ar.Value) {\n // if(ar.NotEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'涓嶈兘涓虹┖锛�,icon:\"success\",duration:3000});\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + '涓嶈兘涓虹┖锛�,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n }\n }\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\n }\n };\n var dataInfo = {\n class_id: this.$data.param.Master_Cls.ID,\n data_obj_id: '',\n masterclsid: '',\n req: JSON.stringify(req),\n upfile: JSON.stringify([]),\n post_data: JSON.stringify({}),\n compose: JSON.stringify([]),\n refdatastore: JSON.stringify([]),\n extinfo: JSON.stringify(enviroment),\n not_trigger_sys_event: ''\n };\n\n // return\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2440\");\n this.$store.dispatch('addclassattr', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2442\");\n uni.hideLoading();\n if (success.code == '00000') {\n var action = JSON.parse(success.data.Action);\n if (action.ret == '0') {\n if (action.result_type == '0') {\n uni.showToast({\n title: action.result,\n icon: \"success\",\n duration: 3000\n });\n }\n // \"{\"ret\":0, \"result_type\":0, \"result\":\"鍒涘缓鎴愬姛123123123\",\"info\":\"\"}\"\n }\n //鍒锋柊\n uni.redirectTo({\n url: '../modal/ms_classAttr?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.msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:2471\");\n uni.hideLoading();\n uni.showModal({\n title: \"鎻愮ず\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n },\n class_attr_init: function class_attr_init() {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n var newattrlist = [];\n if (this.$data.classAttrList.length > 0) {\n for (var i = 0; i < attrlist.length; i++) {\n var open = attrlist[i].open;\n var name = attrlist[i].attrgroup_name;\n var attrs = attrlist[i].attrs;\n for (var s = 0; s < this.$data.classAttrList.length; s++) {\n var clsattr = this.$data.classAttrList[s];\n if (name == clsattr.Name) {\n var attr = [];\n for (var j = 0; j < attrs.length; j++) {\n for (var l = 0; l < clsattr.Attr.length; l++) {\n var ca = clsattr.Attr[l];\n if (attrs[j].attr == ca.Name) {\n ca.action = attrs[j].action;\n ca.edit = attrs[j].edit;\n ca.notempty = attrs[j].notempty;\n ca.ext_button = attrs[j].ext_button;\n ca.button_img = attrs[j].button_img;\n ca.button_tooltip = attrs[j].button_tooltip;\n ca.before_click_button = attrs[j].before_click_button;\n ca.button_callback = attrs[j].button_callback;\n ca.hidden = attrs[j].hidden;\n ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n ca.Value = \"\";\n if (ca.dictitem) {\n if (ca.select == true) ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n else ca.Value = '璇烽�鎷�; //ca.dictitem[0].CN_S_NAME;\n var dictitemlist = [];\n for (var d = 0; d < ca.dictitem.length; d++) {\n ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].attr = ca.Name;\n if (ca.dictitem[d].CN_C_IS_DEFAULT == '1') ca.Value = ca.dictitem[d].CN_S_NAME;\n }\n }\n if (ca.Type == '鏃ユ湡' || ca.Type == '鏃堕棿') {\n var nowDate = new Date();\n var date = {\n year: nowDate.getFullYear(),\n month: nowDate.getMonth() + 1,\n day: nowDate.getDate()\n };\n ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n }\n if (ca.Type == '寮曠敤瀵硅薄(澶氫釜)') {\n var relClsList = [];\n var attr_rescls = ca.RelCls.split(',');\n for (var ii in attr_rescls) {\n var rescls = attr_rescls[ii].split('|');\n relClsList.push({\n id: rescls[0],\n name: rescls[1]\n });\n }\n ca.RelClsList = relClsList;\n ca.Value = '璇�;\n }\n if (ca.Type == '鐪佸競鍖�) ca.Value = '璇烽�鎷�;\n if (ca.Type == '甯冨皵鍊�) ca.Value = false;\n attr.push(ca);\n }\n }\n }\n newattrlist.push({\n BkColor: clsattr.BkColor,\n HasAce: clsattr.HasAce,\n ImgFontStyle: clsattr.ImgFontStyle,\n Name: clsattr.Name,\n Order: clsattr.Order,\n Open: open,\n Attr: attr,\n control_style: this.$data.classGridStyle.StyleDef.control_style,\n title_p_wdith: this.$data.classGridStyle.StyleDef.title_p_wdith,\n Font: this.$data.classGridStyle.StyleDef.Font ? this.$data.classGridStyle.StyleDef.Font : {},\n Bk_Color: this.$data.classGridStyle.StyleDef.Bk_Color ? this.$data.classGridStyle.StyleDef.Bk_Color : '#FFFFFF',\n Text_Color: this.$data.classGridStyle.StyleDef.Text_Color ? this.$data.classGridStyle.StyleDef.Text_Color : '#000000'\n });\n }\n }\n }\n if (newattrlist.length > 0) {\n this.$data.classAttrList = newattrlist;\n }\n var req = [];\n if (this.$data.classGridStyle.StyleDef) {\n if (this.$data.classGridStyle.StyleDef.show_style.length > 0) {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n // $el.find('.attr_field').prop('readonly', true);\n // $el.find('.attr_field').prop('disabled', true);\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].attrs;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n req.push({\n attr: ar.attr,\n value: ar.value ? ar.value : ''\n });\n }\n }\n }\n }\n var eventlist = this.$data.classGridStyle.StyleDef.event;\n if (eventlist) {\n if (eventlist.length > 0) {\n for (var i = 0; i < eventlist.length; i++) {\n if (eventlist[i].event_id == 'before_ok') {\n this.$data.edit_ok_event = eventlist[i];\n } else if (eventlist[i].event_id == 'initial') {\n this.$data.edit_inital_event = eventlist[i];\n } else if (eventlist[i].event_id == 'before_select_compose') {\n this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n }\n }\n }\n }\n // console.log(req);\n if (this.$data.edit_inital_event) {\n var eventid = this.$data.edit_inital_event.scrip_id;\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.ini_DataObjRunCustomEvent(info);\n }\n __f__(\"log\", this.$data.classGridStyle, \" at pages/modal/ms_classAttr.vue:2627\");\n __f__(\"log\", this.$data.classAttrList, \" at pages/modal/ms_classAttr.vue:2628\");\n } else {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"鏈壘鍒板彲鏄剧ず鐨勭殑灞炴�\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n },\n subClass_attr_init: function subClass_attr_init() {\n var attrlist = this.$data.subClassGridStyle.StyleDef.show_style;\n var newattrlist = [];\n if (this.$data.subClassAttrList.length > 0) {\n for (var i = 0; i < attrlist.length; i++) {\n var open = attrlist[i].open;\n var name = attrlist[i].attrgroup_name;\n var attrs = attrlist[i].attrs;\n for (var s = 0; s < this.$data.subClassAttrList.length; s++) {\n var clsattr = this.$data.subClassAttrList[s];\n if (name == clsattr.Name) {\n var attr = [];\n for (var j = 0; j < attrs.length; j++) {\n for (var l = 0; l < clsattr.Attr.length; l++) {\n var ca = clsattr.Attr[l];\n if (attrs[j].attr == ca.Name) {\n ca.action = attrs[j].action;\n ca.edit = attrs[j].edit;\n ca.notempty = attrs[j].notempty;\n ca.ext_button = attrs[j].ext_button;\n ca.button_img = attrs[j].button_img;\n ca.button_tooltip = attrs[j].button_tooltip;\n ca.before_click_button = attrs[j].before_click_button;\n ca.button_callback = attrs[j].button_callback;\n ca.hidden = attrs[j].hidden;\n ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n ca.Value = \"\";\n if (ca.dictitem) {\n if (ca.select == true) ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n else ca.Value = '璇烽�鎷�; //ca.dictitem[0].CN_S_NAME;\n var dictitemlist = [];\n for (var d = 0; d < ca.dictitem.length; d++) {\n ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].attr = ca.Name;\n if (ca.dictitem[d].CN_C_IS_DEFAULT == '1') ca.Value = ca.dictitem[d].CN_S_NAME;\n }\n }\n if (ca.Type == '鏃ユ湡' || ca.Type == '鏃堕棿') {\n var nowDate = new Date();\n var date = {\n year: nowDate.getFullYear(),\n month: nowDate.getMonth() + 1,\n day: nowDate.getDate()\n };\n ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n }\n if (ca.Type == '寮曠敤瀵硅薄(澶氫釜)') {\n var relClsList = [];\n var attr_rescls = ca.RelCls.split(',');\n for (var ii in attr_rescls) {\n var rescls = attr_rescls[ii].split('|');\n relClsList.push({\n id: rescls[0],\n name: rescls[1]\n });\n }\n ca.RelClsList = relClsList;\n ca.Value = '璇�;\n }\n if (ca.Type == '鐪佸競鍖�) ca.Value = '璇烽�鎷�;\n if (ca.Type == '甯冨皵鍊�) ca.Value = false;\n attr.push(ca);\n }\n }\n }\n newattrlist.push({\n BkColor: clsattr.BkColor,\n HasAce: clsattr.HasAce,\n ImgFontStyle: clsattr.ImgFontStyle,\n Name: clsattr.Name,\n Order: clsattr.Order,\n Open: open,\n Attr: attr,\n control_style: this.$data.subClassGridStyle.StyleDef.control_style,\n title_p_wdith: this.$data.subClassGridStyle.StyleDef.title_p_wdith,\n Font: this.$data.subClassGridStyle.StyleDef.Font ? this.$data.subClassGridStyle.StyleDef.Font : {},\n Bk_Color: this.$data.subClassGridStyle.StyleDef.Bk_Color ? this.$data.subClassGridStyle.StyleDef.Bk_Color : '#FFFFFF',\n Text_Color: this.$data.subClassGridStyle.StyleDef.Text_Color ? this.$data.subClassGridStyle.StyleDef.Text_Color : '#000000'\n });\n }\n }\n }\n if (newattrlist.length > 0) {\n this.$data.subClassAttrList = newattrlist;\n }\n var req = [];\n if (this.$data.subClassGridStyle.StyleDef) {\n if (this.$data.subClassGridStyle.StyleDef.show_style.length > 0) {\n var attrlist = this.$data.subClassGridStyle.StyleDef.show_style;\n // $el.find('.attr_field').prop('readonly', true);\n // $el.find('.attr_field').prop('disabled', true);\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].attrs;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n req.push({\n attr: ar.attr,\n value: ar.value ? ar.value : ''\n });\n }\n }\n }\n }\n var eventlist = this.$data.subClassGridStyle.StyleDef.event;\n if (eventlist) {\n if (eventlist.length > 0) {\n for (var i = 0; i < eventlist.length; i++) {\n if (eventlist[i].event_id == 'before_ok') {\n this.$data.edit_ok_event = eventlist[i];\n } else if (eventlist[i].event_id == 'initial') {\n this.$data.edit_inital_event = eventlist[i];\n } else if (eventlist[i].event_id == 'before_select_compose') {\n this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n }\n }\n }\n }\n // console.log(req);\n if (this.$data.edit_inital_event) {\n var eventid = this.$data.edit_inital_event.scrip_id;\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req\n };\n this.scan_ini_DataObjRunCustomEvent(info);\n }\n __f__(\"log\", this.$data.subClassGridStyle, \" at pages/modal/ms_classAttr.vue:2785\");\n __f__(\"log\", this.$data.subClassAttrList, \" at pages/modal/ms_classAttr.vue:2786\");\n } else {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"鏈壘鍒板彲鏄剧ず鐨勭殑灞炴�\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n },\n ini_DataObjRunCustomEvent: function ini_DataObjRunCustomEvent(info) {\n var _this6 = this;\n var param = {\n EditStyle: this.$data.param.Master_Cls.View_Style.Name,\n ViewStyle: this.$data.param.Master_Cls.View_Style.Name,\n NotTriggerSysEvent: 0,\n 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鐨刢ls_id\n //obj_id: '' // button=bottom鏃�master鐨刼bj_id\n }\n }\n };\n\n var inputparameter = '';\n var global_attr = '';\n var dataInfo = {\n edtype: info.edtype,\n eventid: info.eventid,\n projectid: info.projectid,\n rclsid: info.rclsid,\n robjid: info.robjid,\n userlogin: info.userlogin,\n clsid: info.clsid,\n objid: info.objid,\n attr: JSON.stringify(info.attr),\n extinfo: JSON.stringify(param),\n inputparameter: inputparameter,\n global_attr: global_attr\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2830\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2832\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n for (var j = 0; j < actionlist.length; j++) {\n var action = actionlist[j];\n var action_type = action.action_type;\n var value = action.value;\n if (action_type == 'set_dlg_attr') {\n if (value) {\n var val = value;\n if (typeof value == 'string') {\n val = JSON.parse(value);\n }\n __f__(\"log\", val, \" at pages/modal/ms_classAttr.vue:2847\");\n for (var i = 0; i < val.length; i++) {\n for (var a = 0; a < _this6.$data.classAttrList.length; a++) {\n for (var l = 0; l < _this6.$data.classAttrList[a].Attr.length; l++) {\n var ca = _this6.$data.classAttrList[a].Attr[l];\n if (val[i].attr == ca.Name) {\n if (ca.Type == '瀛楀吀' || ca.Type == '瀛楀吀-瀛楃涓� || ca.Type == '瀛楀吀-鏁存暟') {\n var dictItemList = [];\n for (var d in val[i].choice_list) {\n var val = val[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"Name\": val,\n \"label\": val,\n \"value\": val\n });\n }\n ca.dictitem = dictItemList;\n // attr[j].dictitem = val[i].choice_list;\n } else {\n // ca.value = val[i].value;\n }\n }\n }\n }\n var length = 0;\n if (!_this6.$data.refdatastore.filter(function (s) {\n return val[i].attr == s.attr;\n }).length) {\n length = 1;\n _this6.$data.refdatastore.push(val[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this6.$data.refdatastore.length; j++) {\n if (_this6.$data.refdatastore[j].attr == val[i].attr) {\n _this6.$data.refdatastore[j].value = val[i].value;\n }\n }\n }\n }\n }\n }\n if (action_type == 'open_select_userdlg') {\n uni.showModal({\n title: \"閿欒2.2\",\n content: \"open_select_userdlg杩欎釜action_type杩樻湭澶勭悊锛乗",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"閿欒2\",\n content: success.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 },\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鐨刢ls_id\n //obj_id: '' // button=bottom鏃�master鐨刼bj_id\n }\n };\n\n enviroment.edit_dlg = {\n type: 'small',\n //灏忕獥鍙n class_id: this.$data.param.Master_Cls.ID //褰撳墠鏁版嵁绫籭d\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 //寮曠敤鎸夐挳鐨則ooltip\n };\n }\n\n var dataInfo = {\n edtype: info.edtype,\n eventid: info.eventid,\n projectid: info.projectid.replace('{', '').replace('}', ''),\n rclsid: info.rclsid,\n robjid: info.robjid,\n userlogin: info.userlogin,\n clsid: info.clsid,\n objid: info.objid,\n attr: JSON.stringify(info.attr),\n extinfo: JSON.stringify(enviroment),\n inputparameter: '',\n global_attr: JSON.stringify(this.$data.global_attr)\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2962\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2964\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/ms_classAttr.vue:2970\");\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.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[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 \"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 for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/ms_classAttr.vue:3003\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\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.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\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 } else {\n uni.showModal({\n title: \"閿欒3\",\n content: success.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 OKDataObjRunCustomEvent: function OKDataObjRunCustomEvent() {\n var _this7 = 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鐨刢ls_id\n }\n };\n\n var eventid = this.$data.edit_ok_event.scrip_id;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value\n });\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 'value': this.$data.refdatastore[i].value\n });\n }\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 var dataInfo = {\n edtype: info.edtype,\n eventid: info.eventid,\n projectid: info.projectid,\n rclsid: info.rclsid,\n robjid: info.robjid,\n userlogin: info.userlogin,\n clsid: info.clsid,\n objid: info.objid,\n attr: JSON.stringify(info.attr),\n extinfo: JSON.stringify(enviroment),\n global_attr: JSON.stringify(this.$data.global_attr)\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3153\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3155\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n // self.class_attr_ele.find('.attr_field[data-field=\"' + result[i].attr + '\"]').val(result[i].value).data('val', result[i].value);\n var length = 0;\n if (!_this7.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n _this7.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this7.$data.refdatastore.length; j++) {\n if (_this7.$data.refdatastore[j].attr == result[i].attr) {\n _this7.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n _this7.add();\n } else {\n uni.showModal({\n title: \"閿欒4\",\n content: success.msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"閿欒4.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n },\n DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {\n var _this8 = 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鐨刢ls_id\n //obj_id: '' // button=bottom鏃�master鐨刼bj_id\n }\n };\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value\n });\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 'value': 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.Master_Cls.ID //褰撳墠鏁版嵁绫籭d\n };\n\n if (data_attr) {\n extinfo.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 //寮曠敤鎸夐挳鐨則ooltip\n };\n }\n\n var dataInfo = {\n edtype: \"0\",\n eventid: eventid,\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: '',\n attr: JSON.stringify(req),\n extinfo: JSON.stringify(extinfo),\n global_attr: JSON.stringify(this.$data.global_attr)\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3274\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3276\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n if (data != \"\") {\n var actions = data.action;\n __f__(\"log\", actions, \" at pages/modal/ms_classAttr.vue:3282\");\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 + '姝ction灏氭湭澶勭悊锛�\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 = _this8;\n var param = {\n index: index,\n iindex: iindex,\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/ms_classAttr.vue:3312\");\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.Master_Cls.ID,\n objid: \"\",\n attr: param.req,\n inputparameter: data\n };\n $this.DataObjRunCustomEvent(info, param.data_attr);\n }\n }\n });\n } else if (action.action_type == 'open_data_query_dlg') {} else if (action.action_type == 'open_common_dlg') {\n var value = action.value;\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '鎻愮ず',\n content: action.action_type + '姝ction灏氭湭澶勭悊锛�\n });\n d.show();\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 == '鎴戣礋璐g殑椤圭洰') 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 = _this8;\n var param_ = {\n index: index,\n iindex: iindex,\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 $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.Master_Cls.ID,\n objid: \"\",\n attr: param.req\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 + '姝ction灏氭湭澶勭悊锛�\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 } else {\n uni.showModal({\n title: \"閿欒5\",\n content: success.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 scan_ini_DataObjRunCustomEvent: function scan_ini_DataObjRunCustomEvent(info) {\n var _this9 = this;\n var param = {\n EditStyle: this.$data.param.Sub_Cls.View_Style.Name,\n ViewStyle: this.$data.param.Sub_Cls.View_Style.Name,\n NotTriggerSysEvent: 0,\n enviroment: {\n 'function': '3000',\n // 鍔熻兘鐐圭紪鍙穃n cls_id: this.$data.param.Sub_Cls.ID,\n // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n 'button': 'top',\n // top/bottom\n button_name: '鏂板',\n master: {\n cls_id: this.$data.param.Sub_Cls.ID // button=bottom鏃�master鐨刢ls_id\n //obj_id: '' // button=bottom鏃�master鐨刼bj_id\n }\n }\n };\n\n var inputparameter = '';\n var global_attr = '';\n var dataInfo = {\n edtype: info.edtype,\n eventid: info.eventid,\n projectid: info.projectid,\n rclsid: info.rclsid,\n robjid: info.robjid,\n userlogin: info.userlogin,\n clsid: info.clsid,\n objid: info.objid,\n attr: JSON.stringify(info.attr),\n extinfo: JSON.stringify(param),\n inputparameter: inputparameter,\n global_attr: global_attr\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3461\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3463\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n for (var j = 0; j < actionlist.length; j++) {\n var action = actionlist[j];\n var action_type = action.action_type;\n var value = action.value;\n if (action_type == 'set_dlg_attr') {\n if (value) {\n var val = value;\n if (typeof value == 'string') {\n val = JSON.parse(value);\n }\n __f__(\"log\", val, \" at pages/modal/ms_classAttr.vue:3478\");\n for (var i = 0; i < val.length; i++) {\n for (var a = 0; a < _this9.$data.subClassAttrList.length; a++) {\n for (var l = 0; l < _this9.$data.subClassAttrList[a].Attr.length; l++) {\n var ca = _this9.$data.subClassAttrList[a].Attr[l];\n if (val[i].attr == ca.Name) {\n if (ca.Type == '瀛楀吀' || ca.Type == '瀛楀吀-瀛楃涓� || ca.Type == '瀛楀吀-鏁存暟') {\n var dictItemList = [];\n for (var d in val[i].choice_list) {\n var val = val[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"Name\": val,\n \"label\": val,\n \"value\": val\n });\n }\n ca.dictitem = dictItemList;\n // attr[j].dictitem = val[i].choice_list;\n } else {\n // ca.value = val[i].value;\n }\n }\n }\n }\n var length = 0;\n if (!_this9.$data.refdatastore.filter(function (s) {\n return val[i].attr == s.attr;\n }).length) {\n length = 1;\n _this9.$data.refdatastore.push(val[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this9.$data.refdatastore.length; j++) {\n if (_this9.$data.refdatastore[j].attr == val[i].attr) {\n _this9.$data.refdatastore[j].value = val[i].value;\n }\n }\n }\n }\n }\n }\n if (action_type == 'open_select_userdlg') {\n uni.showModal({\n title: \"閿欒6.2\",\n content: \"open_select_userdlg杩欎釜action_type杩樻湭澶勭悊锛乗",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"閿欒6\",\n content: success.msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"閿欒6.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n },\n scan_DataObjRunCustomEvent: function scan_DataObjRunCustomEvent(info, data_attr) {\n var _this10 = this;\n var $this = this;\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,//褰撳墠鏁版嵁绫籭d\n }\n };\n }\n\n var global_attr = this.$data.global_attr;\n if (info.global_attr) {\n global_attr = info.global_attr;\n }\n var dataInfo = {\n edtype: info.edtype,\n eventid: info.eventid,\n projectid: info.projectid.replace('{', '').replace('}', ''),\n rclsid: info.rclsid,\n robjid: info.robjid,\n userlogin: info.userlogin,\n clsid: info.clsid,\n objid: info.objid,\n attr: JSON.stringify(info.attr),\n extinfo: JSON.stringify(enviroment),\n inputparameter: JSON.stringify(info.inputParamter),\n global_attr: JSON.stringify(global_attr)\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3589\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3591\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/ms_classAttr.vue:3597\");\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 \"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/ms_classAttr.vue:3636\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\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 = _this10;\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 = _this10;\n var list_1 = JSON.parse(JSON.stringify(_this10.$data.subClassAttrList));\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 (info.inputParamter[0].attr) {\n if (info.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 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;\n for (var c = 0; c < _subClassAttr.length; c++) {\n var attr = _subClassAttr[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n // console.log(attr[j].Name+'=='+result[i].attr);\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n\n // $this.$data.subPanelList[s].subClassAttr=list_1;\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 }\n if (data.result) {\n var _list_ = JSON.parse(JSON.stringify(_this10.$data.subClassAttrList));\n var scanCodeVal = $this.$data.scanCodeVal;\n if (info.inputParamter[0].attr == \"mast_input_3037\") scanCodeVal = \"mast_input_3037-\" + ii;\n $this.$data.subPanelList.push({\n scanCodeVal: scanCodeVal,\n subClassAttr: _list_\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;\n for (var c = 0; c < _subClassAttr.length; c++) {\n var attr = _subClassAttr[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n // console.log(attr[j].Name+'=='+result[i].attr);\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = 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 } else {\n uni.showModal({\n title: \"閿欒7\",\n content: success.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 scan_OKDataObjRunCustomEvent: function scan_OKDataObjRunCustomEvent(eventID) {\n uni.showLoading({\n title: \"鍔犺浇涓�..\",\n mask: true\n });\n var $this = this;\n var req = [];\n var attrlist = $this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n if (ar.select == true) {\n //鍒ゆ柇涓嬫媺鏄惁澶氶�\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr) valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({\n attr: ar.Name,\n value: valStr\n });\n } else req.push({\n attr: ar.Name,\n value: ar.Value\n });\n } else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n if (ar.notempty == true && !ar.Value) {\n // if(ar.NotEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'涓嶈兘涓虹┖锛�,icon:\"success\",duration:3000});\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + '涓嶈兘涓虹┖锛�,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n }\n }\n var objects = [];\n var subPanelList = $this.$data.subPanelList;\n for (var s = 0; s < subPanelList.length; s++) {\n var sub_req = [];\n for (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n var attr = subPanelList[s].subClassAttr[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') sub_req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) sub_req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n if (ar.select == true) {\n //鍒ゆ柇涓嬫媺鏄惁澶氶�\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr) valStr += \";\";\n valStr += ar.Value[v];\n }\n sub_req.push({\n attr: ar.Name,\n value: valStr\n });\n } else sub_req.push({\n attr: ar.Name,\n value: ar.Value\n });\n } else sub_req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n if (ar.notempty == true && !ar.Value) {\n // if(ar.NotEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'涓嶈兘涓虹┖锛�,icon:\"success\",duration:3000});\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + '涓嶈兘涓虹┖锛�,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\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 dataInfo = {\n edtype: \"7\",\n eventid: eventID,\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n objid: '',\n attr: JSON.stringify([]),\n extinfo: JSON.stringify([]),\n global_attr: JSON.stringify($this.$data.global_attr),\n dataJson: JSON.stringify(dataJson)\n };\n // console.log(JSON.stringify(dataInfo));\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3933\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3935\");\n uni.hideLoading();\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\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/ms_classAttr?param=' + JSON.stringify($this.$data.param) + \"&titlename=\" + $this.$data.title\n });\n }\n } else {\n uni.showModal({\n title: \"閿欒8\",\n content: success.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 }\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvbXNfY2xhc3NBdHRyLnZ1ZSJdLCJuYW1lcyI6WyJjb21wb25lbnRzIiwicGlja2VyQWRkcmVzcyIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiY2xhc3NBdHRyTGlzdCIsImNsYXNzR3JpZFN0eWxlIiwiZWRpdF9pbml0YWxfZXZlbnQiLCJlZGl0X29rX2V2ZW50IiwiZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCIsImVkaXRfY29tcG9zZV9jbHNfaWQiLCJnbG9iYWxfYXR0ciIsInJlZmRhdGFzdG9yZSIsInNjYW5Db2RlVmFsIiwic3ViQ2xhc3NBdHRyTGlzdCIsInN1YlBhbmVsTGlzdCIsInN1YkNsYXNzR3JpZFN0eWxlIiwicG9wdXBUeXBlIiwiY2hlY2tfbGlzdCIsIm9uTG9hZCIsIm9wdGlvbnMiLCJ1bmkiLCJzZXROYXZpZ2F0aW9uQmFyVGl0bGUiLCJ0aXRsZW5hbWUiLCJKU09OIiwicGFyc2UiLCIkZGF0YSIsIkFkZF9CdG5OYW1lIiwiTWFzdGVyX0NscyIsIlZpZXdfU3R5bGUiLCJzaG93TW9kYWwiLCJjb250ZW50Iiwic2hvd0NhbmNlbCIsImNvbmZpcm1UZXh0IiwiTmFtZSIsImRhdGFJbmZvIiwiY2xhc3NfaWQiLCJJRCIsIiR0aGlzIiwiJHN0b3JlIiwic3RhdGUiLCJ0aGlzYXJlYUZ1bmNJRCIsImdldHRlcnMiLCJnZXRjbGFzc0F0dHJMaXN0IiwiY2xhc3NHcmlkU3R5bGVJbmZvIiwiZGlzcGF0Y2giLCJ0aGVuIiwic3VjY2VzcyIsImNvZGUiLCJtc2ciLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwic3ViZGF0YUluZm8iLCJTdWJfQ2xzIiwidGhpc2FyZWFGdW5jU3ViSUQiLCJnZXRTdWJDbGFzc0F0dHJMaXN0IiwibWV0aG9kcyIsInNjYW5fY2xhc3NBdHRyX2V4dEJ1dHRvbiIsImUiLCJCZWZvcmVfU2VsZWN0X0V2ZW50IiwiU2Nhbl9Db2RlIiwibWFzdF9hdHRyIiwiYXR0cmxpc3QiLCJpIiwibGVuZ3RoIiwiYXR0ciIsIkF0dHIiLCJqIiwiYXIiLCJWYWx1ZSIsIkRpc3BOYW1lIiwiVHlwZSIsInB1c2giLCJ2YWx1ZSIsIlZhbElEIiwib2JqZWN0cyIsInMiLCJzdWJfcmVxIiwic3ViQ2xhc3NBdHRyIiwic2VsZWN0IiwidmFsU3RyIiwidiIsIm5vdGVtcHR5IiwiaGlkZUxvYWRpbmciLCJvYmpfaWQiLCJvYmpfYXR0cnMiLCJlbnZpcm9tZW50IiwiY2xzX2lkIiwiYnV0dG9uX25hbWUiLCJlZGl0X2RsZyIsInR5cGUiLCJtYXN0ZXJfY2xzIiwiY2xzX25hbWUiLCJyZXEiLCJzdWJfY2xzIiwiaW5mbyIsImV2ZW50aWQiLCJlZHR5cGUiLCJwcm9qZWN0aWQiLCJyY2xzaWQiLCJyb2JqaWQiLCJ1c2VybG9naW4iLCJjbHNpZCIsIm9iamlkIiwiaW5wdXRQYXJhbXRlciIsInNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwicG9wdXBDaGFuZ2UiLCJzaG93IiwiY2hlY2tDaGFuZ2UiLCJpbmRleCIsInRhcmdldCIsImRhdGFzZXQiLCJpc2NoZWNrIiwiaXRlbXMiLCJtdWx0aXBsZV9jaG9pY2UiLCJjaGVjayIsInBvcHVwX2NhbmNlbCIsIiRyZWZzIiwicG9wdXAiLCJjbG9zZSIsInBvcHVwX3NhdmEiLCJBZnRlcl9TZWxlY3RfRXZlbnQiLCJuYW1lIiwiaWQiLCJjYW5jZWwiLCJuYXZpZ2F0ZUJhY2siLCJkZWx0YSIsInBhbmVsX2RlbCIsIk9iaklEIiwic3BsaWNlIiwiY2xzSWQiLCJvYmpJZCIsInNob3dMb2FkaW5nIiwic3R5bGVOYW1lIiwiY2xzVHlwZSIsImdyaWRzdHlsZUluZm8iLCJ0aGlzRWRpdE5hbWUiLCJnZXRjbGFzc0dyaWRTdHlsZUluZm8iLCJjbGFzc19hdHRyX2luaXQiLCJTdHlsZURlZiIsInRoaXNFZGl0U3ViTmFtZSIsImdldFN1YkNsYXNzR3JpZFN0eWxlSW5mbyIsInN1YkNsYXNzX2F0dHJfaW5pdCIsIm9udGFwIiwiZ2V0QXBwIiwib25TY2FuIiwicmVzdWx0IiwiaXNWYWwiLCJkZWNvZGVkYXRhIiwiaGlkZUtleWJvYXJkIiwiSW5wdXRfQ2hhbmdlX0V2ZW50Iiwic3Vib250YXAiLCJzY2FuX29udGFwIiwiaXNmbGFnIiwibWFzdF9yZXEiLCJjbGFzc2F0dHJsaXN0Iiwic2Nhbl9vbmV2ZW50Iiwib25hcnJvdyIsIm9wZW4iLCJkYXRhX2F0dHIiLCJPcGVuIiwib25kYXRlVGltZSIsIm9uY2hhbmdlIiwiZGljdGl0ZW0iLCJhY3Rpb24iLCJ2YWwiLCJEYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJvbmNoYW5nZTIiLCJpdGVtIiwiZGVsdmFsdWUiLCJpaW5kZXgiLCJkaW5kZXgiLCJpdGVtdmFsdWUiLCJzdWJfb25jaGFuZ2UiLCJzdWJfb25jaGFuZ2UyIiwiZCIsIm9uZXZlbnQiLCJvbmNoZWNrIiwiaXNjaGVja2VkIiwiaW5wdXRWYWxMaXN0SXNEZWwiLCJpbnB1dFZhbExpc3QiLCJhZGRyZXNzY2hhbmdlIiwiam9pbiIsImNsYXNzQXR0cl9leHRCdXR0b24iLCJiZWZvcmVfY2xpY2tfYnV0dG9uIiwiYnV0dG9uX2NhbGxiYWNrIiwiRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybiIsImNsYXNzQXR0cl9BZGRQZXIiLCJuYXZpZ2F0ZVRvIiwidXJsIiwic3RyaW5naWZ5IiwiZXZlbnRzIiwiQWRkUGVyIiwiTG9naW4iLCJ0cmltIiwiY2xhc3NBdHRyX0FkZFJlZiIsImNsYXNzQXR0cl9BZGRQcmoiLCJzYXZhIiwiQmVmb3JlX09LX0V2ZW50Iiwic2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudCIsIkFmdGVyX09LX0V2ZW50IiwiYWRkIiwibWFzayIsIm1hc3RlciIsImRhdGFfb2JqX2lkIiwibWFzdGVyY2xzaWQiLCJ1cGZpbGUiLCJwb3N0X2RhdGEiLCJjb21wb3NlIiwiZXh0aW5mbyIsIm5vdF90cmlnZ2VyX3N5c19ldmVudCIsIkFjdGlvbiIsInJldCIsInJlc3VsdF90eXBlIiwic2hvd1RvYXN0IiwiaWNvbiIsImR1cmF0aW9uIiwicmVkaXJlY3RUbyIsInNob3dfc3R5bGUiLCJuZXdhdHRybGlzdCIsImF0dHJncm91cF9uYW1lIiwiYXR0cnMiLCJjbHNhdHRyIiwibCIsImNhIiwiZWRpdCIsImV4dF9idXR0b24iLCJidXR0b25faW1nIiwiYnV0dG9uX3Rvb2x0aXAiLCJoaWRkZW4iLCJ1bmRlZmluZWQiLCJkaWN0aXRlbWxpc3QiLCJsYWJlbCIsIkNOX1NfTkFNRSIsIkNOX0NfSVNfREVGQVVMVCIsIm5vd0RhdGUiLCJEYXRlIiwiZGF0ZSIsInllYXIiLCJnZXRGdWxsWWVhciIsIm1vbnRoIiwiZ2V0TW9udGgiLCJkYXkiLCJnZXREYXRlIiwicmVsQ2xzTGlzdCIsImF0dHJfcmVzY2xzIiwiUmVsQ2xzIiwic3BsaXQiLCJpaSIsInJlc2NscyIsIlJlbENsc0xpc3QiLCJCa0NvbG9yIiwiSGFzQWNlIiwiSW1nRm9udFN0eWxlIiwiT3JkZXIiLCJjb250cm9sX3N0eWxlIiwidGl0bGVfcF93ZGl0aCIsIkZvbnQiLCJCa19Db2xvciIsIlRleHRfQ29sb3IiLCJldmVudGxpc3QiLCJldmVudCIsImV2ZW50X2lkIiwic2NyaXBfaWQiLCJjb21wb3NlX2Nsc19pZCIsImluaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJzY2FuX2luaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJFZGl0U3R5bGUiLCJWaWV3U3R5bGUiLCJOb3RUcmlnZ2VyU3lzRXZlbnQiLCJpbnB1dHBhcmFtZXRlciIsImFjdGlvbmxpc3QiLCJhY3Rpb25fdHlwZSIsImEiLCJkaWN0SXRlbUxpc3QiLCJjaG9pY2VfbGlzdCIsImZpbHRlciIsImZvcm1fY29udHJvbCIsInRleHQiLCJncm91cF9uYW1lIiwiR3JvdXBOYW1lIiwicmVhZG9ubHkiLCJSZWFkT25seSIsInJlcGxhY2UiLCJjIiwiT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJhY3Rpb25zIiwiZGlhbG9nIiwic3R5bGUiLCJjYWxsYmFja19ldmVudGlkIiwicHJpUmVsIiwic2VsZWN0X3JhbmdlIiwicGFyYW1fIiwiJGFjdGlvbnRyIiwiY29tbW9uX2RsZ19pZCIsImNvbmZpZyIsImFwcGVhcl9zdHlsZSIsImxpc3RfMSIsInJhbmQiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJfc3ViQ2xhc3NBdHRyIiwiZXZlbnRJRCIsImRhdGFKc29uIiwiaW5wdXRfMzAzNyIsIm9wX3R5cGUiLCJPcGVyYXRpb25UeXBlIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFtOUJBO0FBbjlCQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtB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bi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG5cbmltcG9ydCBwaWNrZXJBZGRyZXNzIGZyb20gJy4uLy4uL2pzL3BpY2tlckFkZHJlc3MvcGlja2VyQWRkcmVzcy52dWUnXG5leHBvcnQgZGVmYXVsdCB7XG5cdGNvbXBvbmVudHM6IHtcblx0XHRwaWNrZXJBZGRyZXNzXG5cdH0sXG5cdGRhdGEoKSB7XG5cdFx0cmV0dXJuIHtcblx0XHRcdHRpdGxlOiAn5paw5aKeJyxcblx0XHRcdHBhcmFtOiB7fSxcblx0XHRcdGNsYXNzQXR0ckxpc3Q6IFtdLFxuXHRcdFx0Y2xhc3NHcmlkU3R5bGU6IFtdLFxuXHRcdFx0ZWRpdF9pbml0YWxfZXZlbnQ6IFwiXCIsIC8v5by556qX5Yid5aeL5YyW5LqL5Lu2SURcblx0XHRcdGVkaXRfb2tfZXZlbnQ6IFwiXCIsIC8v5by556qX54K55Ye7T0sg6Kem5Y+R5LqL5Lu2SURcblx0XHRcdGVkaXRfc2VsZWN0X2NvbXBvc2VfZXZlbnQ6IFwiXCIsIC8v6YCJ5oup57uE5oiQ5a+56LGh5pe26LCD55SoXG5cdFx0XHRlZGl0X2NvbXBvc2VfY2xzX2lkOiBcIlwiLFxuXHRcdFx0Z2xvYmFsX2F0dHI6IFtdLFxuXHRcdFx0cmVmZGF0YXN0b3JlOiBbXSwgLy/lvJXnlKjmlbDmja7lrZjlgqjljLovLyB7YXR0cjonR19QUkpfJyArIGJpbmRhdHRyICsgJ19JRCcsIHZhbHVlOmluZm8uaWR9XG5cdFx0XHRzY2FuQ29kZVZhbDogXCJcIixcblx0XHRcdHN1YkNsYXNzQXR0ckxpc3Q6IFtdLFxuXHRcdFx0c3ViUGFuZWxMaXN0OiBbXSxcblx0XHRcdHN1YkNsYXNzR3JpZFN0eWxlOiBbXSxcblx0XHRcdHBvcHVwVHlwZTogXCJjZW50ZXJcIixcblx0XHRcdGNoZWNrX2xpc3Q6IHt9LFxuXHRcdH1cblx0fSxcblx0b25Mb2FkKG9wdGlvbnMpIHtcblx0XHQvLyBjb25zb2xlLmxvZyhvcHRpb25zKTtcblx0XHR1bmkuc2V0TmF2aWdhdGlvbkJhclRpdGxlKHtcblx0XHRcdHRpdGxlOiBvcHRpb25zLnRpdGxlbmFtZVxuXHRcdH0pOyAvL+iuvue9rumhtumDqOagh+mimCBcblx0XHR2YXIgcGFyYW0gPSBKU09OLnBhcnNlKG9wdGlvbnMucGFyYW0pO1xuXHRcdHRoaXMuJGRhdGEudGl0bGUgPSBwYXJhbS5BZGRfQnRuTmFtZSA/IHBhcmFtLkFkZF9CdG5OYW1lIDogb3B0aW9ucy50aXRsZW5hbWU7IC8v6K6+572u5oyJ6ZKu5paH5a2XXG5cdFx0Y29uc29sZS5sb2cocGFyYW0pO1xuXHRcdGlmICghcGFyYW0uTWFzdGVyX0Nscy5WaWV3X1N0eWxlKSB7XG5cdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdGNvbnRlbnQ6IFwi6K+l5Yqf6IO954K55pyq6YWN572u55WM6Z2i56qX5Y+j77yM6K+36YeN5paw6YWN572u77yBXCIsXG5cdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0fSk7XG5cdFx0XHRyZXR1cm47XG5cdFx0fVxuXHRcdGlmICghcGFyYW0uTWFzdGVyX0Nscy5WaWV3X1N0eWxlLk5hbWUpIHtcblx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0Y29udGVudDogXCLor6Xlip/og73ngrnmnKrphY3nva7nqpflj6PmoLflvI/vvIzor7fph43mlrDphY3nva7vvIFcIixcblx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0dGhpcy4kZGF0YS5wYXJhbSA9IHBhcmFtO1xuXHRcdC8vIHZhciBlZGl0X2RsZyA9IHtcblx0XHQvLyAgICAgTW9kZWw6IHBhcmFtLkVkaXREbGdNb2RlLFxuXHRcdC8vICAgICBOYW1lOiBwYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZVxuXHRcdC8vIH1cblx0XHQvL+S4u+aVsOaNruexu+iOt+WPllxuXHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdGNsYXNzX2lkOiBwYXJhbS5NYXN0ZXJfQ2xzLklEXG5cdFx0fTtcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzYXJlYUZ1bmNJRCA9IHBhcmFtLk1hc3Rlcl9DbHMuSUQ7XG5cdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdCk7XG5cdFx0aWYgKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3QpIHtcblx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSAkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0F0dHJMaXN0LmRhdGE7XG5cdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8ocGFyYW0uTWFzdGVyX0Nscy5JRCwgJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5WaWV3X1N0eWxlLk5hbWUsICdNYXN0Jyk7XG5cdFx0fSBlbHNlIHtcblx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NBdHRyTGlzdCcsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCA9IHN1Y2Nlc3MuZGF0YTtcblxuXHRcdFx0XHRcdCR0aGlzLmNsYXNzR3JpZFN0eWxlSW5mbyhwYXJhbS5NYXN0ZXJfQ2xzLklELCAkdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZSxcblx0XHRcdFx0XHRcdCdNYXN0Jyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68xXCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzEuMVwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH1cblxuXHRcdC8v5LuO5pWw5o2u57G76I635Y+WXG5cdFx0dmFyIHN1YmRhdGFJbmZvID0ge1xuXHRcdFx0Y2xhc3NfaWQ6IHBhcmFtLlN1Yl9DbHMuSURcblx0XHR9O1xuXHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzYXJlYUZ1bmNTdWJJRCA9IHBhcmFtLlN1Yl9DbHMuSUQ7XG5cdFx0aWYgKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN1YkNsYXNzQXR0ckxpc3QpIHtcblx0XHRcdCR0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QgPSAkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTdWJDbGFzc0F0dHJMaXN0LmRhdGE7XG5cdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8ocGFyYW0uU3ViX0Nscy5JRCwgJHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5WaWV3X1N0eWxlLk5hbWUsICdTdWInKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdzdWJDbGFzc0F0dHJMaXN0Jywgc3ViZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0ID0gc3VjY2Vzcy5kYXRhO1xuXG5cdFx0XHRcdFx0JHRoaXMuY2xhc3NHcmlkU3R5bGVJbmZvKHBhcmFtLlN1Yl9DbHMuSUQsICR0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuVmlld19TdHlsZS5OYW1lLFxuXHRcdFx0XHRcdFx0J1N1YicpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMV8xXCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzFfMS4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXHR9LFxuXHRtZXRob2RzOiB7XG5cdFx0c2Nhbl9jbGFzc0F0dHJfZXh0QnV0dG9uKGUpIHsgLy/pgInmi6nmjInpkq7liY1cblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgQmVmb3JlX1NlbGVjdF9FdmVudCA9ICR0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5CZWZvcmVfU2VsZWN0X0V2ZW50O1xuXHRcdFx0aWYgKCFCZWZvcmVfU2VsZWN0X0V2ZW50KSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwi6YCJ5oup5YmN5LqL5Lu25Li656m677yBXCIsXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHZhciBtYXN0X2F0dHIgPSBbXTtcblx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+36YCJ5oupJykge1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBhci5EaXNwTmFtZSArIFwi5pyq6YCJ5oup5pWw5o2u77yBXCIsXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdG1hc3RfYXR0ci5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdG1hc3RfYXR0ci5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRtYXN0X2F0dHIucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRcblx0XHRcdHZhciBvYmplY3RzID0gW107XG5cdFx0XHR2YXIgc3ViUGFuZWxMaXN0ID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0O1xuXHRcdFx0Zm9yICh2YXIgcyA9IDA7IHMgPCBzdWJQYW5lbExpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdFx0dmFyIHN1Yl9yZXEgPSBbXTtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFyIGF0dHIgPSBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyW2ldLkF0dHI7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7fpgInmi6knIHx8IGFyLlZhbHVlID09ICfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5a2X5YW4JyB8fCBhci5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBhci5UeXBlID09ICflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuc2VsZWN0ID09IHRydWUpIHsgLy/liKTmlq3kuIvmi4nmmK/lkKblpJrpgIlcblx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsU3RyID0gXCJcIjtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciB2IGluIGFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsU3RyKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gXCI7XCI7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gYXIuVmFsdWVbdl07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHZhbFN0clxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XG5cdFx0XHRcdFx0XHRpZiAoYXIubm90ZW1wdHkgPT0gdHJ1ZSAmJiAhYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0Ly8gaWYoYXIuTm90RW1wdHk9PScxJyl7XG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogYXIuRGlzcE5hbWUgKyAn5LiN6IO95Li656m677yBJyxcblx0XHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRvYmplY3RzLnB1c2goe1xuXHRcdFx0XHRcdG9ial9pZDogc3ViUGFuZWxMaXN0W3NdLnNjYW5Db2RlVmFsLFxuXHRcdFx0XHRcdG9ial9hdHRyczogc3ViX3JlcVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xuXHRcdFx0XHQnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHRjbHNfaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsICAgICAvLyDlip/og73ngrnku47mlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0J2J1dHRvbic6ICd0b3AnLCAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0ZWRpdF9kbGc6IHtcblx0XHRcdFx0XHR0eXBlOiAnc21hbGwnLCAvL+Wwj+eql+WPo1xuXHRcdFx0XHRcdGNsYXNzX2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELC8v5b2T5YmN5pWw5o2u57G7aWRcblx0XHRcdFx0fSxcblx0XHRcdFx0bWFzdGVyX2Nsczoge1xuXHRcdFx0XHRcdGNsc19uYW1lOiAnTUJPWCcsIC8vJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5OYW1lLFxuXHRcdFx0XHRcdG9ial9hdHRyczogcmVxXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHN1Yl9jbHM6IHtcblx0XHRcdFx0XHRjbHNfbmFtZTogJ01CT1gnLCAvLyR0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuTmFtZSxcblx0XHRcdFx0XHRvYmplY3RzOiBvYmplY3RzXG5cdFx0XHRcdH1cblx0XHRcdFx0XG5cdFx0XHR9O1xuXHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0Ly8gdmFyIHN1YlBhbmVsTGlzdCA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdDtcblx0XHRcdC8vIGZvciAodmFyIHMgPSAwOyBzIDwgc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHQvLyBcdHZhciBqc29uID0ge307XG5cdFx0XHQvLyBcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ci5sZW5ndGg7IGkrKykge1xuXHRcdFx0Ly8gXHRcdHZhciBhdHRyID0gc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0cltpXS5BdHRyO1xuXHRcdFx0Ly8gXHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0Ly8gXHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdC8vIFx0XHRcdGpzb25bYXIuTmFtZV0gPSBhci5WYWx1ZTtcblx0XHRcdC8vIFx0XHR9XG5cdFx0XHQvLyBcdH1cblx0XHRcdC8vIFx0cmVxLnB1c2goanNvbik7XG5cdFx0XHQvLyB9XG5cblx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRldmVudGlkOiBCZWZvcmVfU2VsZWN0X0V2ZW50LklELFxuXHRcdFx0XHRlZHR5cGU6IFwiN1wiLCAvL1wiMFwiLFxuXHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRjbHNpZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdGF0dHI6IFtdLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogcmVxLFxuXHRcdFx0XHRtYXN0X2F0dHI6IG1hc3RfYXR0cixcblx0XHRcdFx0aW5wdXRQYXJhbXRlcjogbWFzdF9hdHRyLFxuXHRcdFx0XHRlbnZpcm9tZW50OiBlbnZpcm9tZW50XG5cdFx0XHR9XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhpbmZvKTtcblx0XHRcdHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XG5cdFx0fSxcblx0XHRwb3B1cENoYW5nZShlKSB7XG5cdFx0XHRjb25zb2xlLmxvZygn5b2T5YmN5qih5byP77yaJyArIGUudHlwZSArICcs54q25oCB77yaJyArIGUuc2hvdyk7XG5cdFx0fSxcblx0XHRjaGVja0NoYW5nZShlKSB7IC8v5by55qGGY2hlY2vpgInmi6lcblx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0LmRhdGFzZXQpO1xuXHRcdFx0dmFyIGluZGV4ID0gZS50YXJnZXQuZGF0YXNldC5pbmRleDtcblx0XHRcdHZhciBpc2NoZWNrID0gZS50YXJnZXQuZGF0YXNldC5pc2NoZWNrO1xuXHRcdFx0dmFyIGRhdGEgPSB0aGlzLiRkYXRhLmNoZWNrX2xpc3QuaXRlbXM7XG5cdFx0XHQvLyB0aGlzLiRkYXRhLmNoZWNrX2xpc3QuaXRlbXM9W107XG5cdFx0XHRpZiAodGhpcy4kZGF0YS5jaGVja19saXN0Lm11bHRpcGxlX2Nob2ljZSA9PSBcIjBcIikgeyAvL+WIpOaWreaXtuWNlemAiei/mOaYr+WkmumAiVxuXHRcdFx0XHRmb3IgKHZhciBpIGluIGRhdGEpIHtcblx0XHRcdFx0XHRkYXRhW2ldLmNoZWNrID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGRhdGFbaW5kZXhdLmNoZWNrID0gaXNjaGVjayA/IGZhbHNlIDogdHJ1ZTtcblx0XHRcdHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcyA9IGRhdGE7XG5cblx0XHR9LFxuXHRcdHBvcHVwX2NhbmNlbChlKSB7IC8v5by55qGG5Y+W5raIXG5cdFx0XHR0aGlzLiRyZWZzLnBvcHVwLmNsb3NlKCk7XG5cdFx0fSxcblx0XHRwb3B1cF9zYXZhKGUpIHsgLy/lvLnmoYbnoa7lrpog6YCJ5oup5oyJ6ZKu5ZCOXG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dmFyIEFmdGVyX1NlbGVjdF9FdmVudCA9ICR0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5BZnRlcl9TZWxlY3RfRXZlbnQ7XG5cdFx0XHRpZiAoIUFmdGVyX1NlbGVjdF9FdmVudCkge1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTogXCLmj5DnpLpcIixjb250ZW50OiBcIumAieaLqeWQjuS6i+S7tuS4uuepuu+8gVwiLHNob3dDYW5jZWw6IGZhbHNlLGNvbmZpcm1UZXh0OiBcIuWPlua2iFwifSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHZhciBpdGVtcyA9ICR0aGlzLiRkYXRhLmNoZWNrX2xpc3QuaXRlbXM7XG5cdFx0XHR2YXIgZGF0YSA9IFtdO1xuXHRcdFx0dmFyIG5hbWUgPSBcIlwiO1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBpdGVtcy5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRpZiAoaXRlbXNbaV0uY2hlY2sgPT0gdHJ1ZSkge1xuXHRcdFx0XHRcdGlmIChuYW1lKVxuXHRcdFx0XHRcdFx0bmFtZSArPSAnOyc7XG5cdFx0XHRcdFx0bmFtZSArPSBpdGVtc1tpXS5uYW1lO1xuXHRcdFx0XHRcdGRhdGEucHVzaCh7XG5cdFx0XHRcdFx0XHRpZDogaXRlbXNbaV0uaWQsXG5cdFx0XHRcdFx0XHRuYW1lOiBpdGVtc1tpXS5uYW1lXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdGlmIChkYXRhLmxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOiBcIuaPkOekulwiLGNvbnRlbnQ6IFwi5pyq6YCJ5oup5pWw5o2u77yBXCIsc2hvd0NhbmNlbDogZmFsc2UsY29uZmlybVRleHQ6IFwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dmFyIG1hc3RfYXR0ciA9IFtdO1xuXHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7fpgInmi6knKSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTogXCLmj5DnpLpcIixjb250ZW50OiBhci5EaXNwTmFtZSArIFwi5pyq6YCJ5oup5pWw5o2u77yBXCIsc2hvd0NhbmNlbDogZmFsc2UsY29uZmlybVRleHQ6IFwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0bWFzdF9hdHRyLnB1c2goe2F0dHI6IGFyLk5hbWUsdmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ30pO1xuXHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRtYXN0X2F0dHIucHVzaCh7YXR0cjogYXIuTmFtZSx2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCd9KTtcblx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRtYXN0X2F0dHIucHVzaCh7YXR0cjogYXIuTmFtZSx2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnfSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0JHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwgPSBuYW1lO1xuXHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdGV2ZW50aWQ6IEFmdGVyX1NlbGVjdF9FdmVudC5JRCxcblx0XHRcdFx0ZWR0eXBlOiBcIjdcIixcblx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0Y2xzaWQ6ICdNQk9YJyxcblx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdGF0dHI6IFt7YXR0cjogJ21hc3RfaW5wdXRfMzAzNycsdmFsdWU6IG5hbWV9XSxcblx0XHRcdFx0Z2xvYmFsX2F0dHI6IG1hc3RfYXR0cixcblx0XHRcdFx0aW5wdXRQYXJhbXRlcjogZGF0YVxuXHRcdFx0fVxuXHRcdFx0Ly8gY29uc29sZS5sb2coaW5mbyk7XG5cdFx0XHR0aGlzLnNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIFwiXCIpO1xuXHRcdFx0dGhpcy4kcmVmcy5wb3B1cC5jbG9zZSgpO1xuXHRcdH0sXG5cblx0XHRjYW5jZWwoZSkge1xuXHRcdFx0dW5pLm5hdmlnYXRlQmFjayh7XG5cdFx0XHRcdGRlbHRhOiAxIC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHRwYW5lbF9kZWwoaW5kZXgpIHtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRpZiAodGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbaW5kZXhdLnNjYW5Db2RlVmFsID09IHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5zY2FuQ29kZVZhbCA9ICcnO1xuXHRcdFx0fVxuXHRcdFx0aWYgKCF0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtpbmRleF0uT2JqSUQpXG5cdFx0XHRcdHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0LnNwbGljZShpbmRleCwgMSk7XG5cdFx0XHRlbHNlIHtcblx0XHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRcdGNsc0lkOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXG5cdFx0XHRcdFx0b2JqSWQ6IHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2luZGV4XS5PYmpJRFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHRcdC8vIHJldHVybjtcblx0XHRcdFx0dW5pLnNob3dMb2FkaW5nKHtcblx0XHRcdFx0XHR0aXRsZTogXCLliqDovb3kuK0uLi5cIlxuXHRcdFx0XHR9KTtcblx0XHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RlbE9iaicsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0LnNwbGljZShpbmRleCwgMSk7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwi5Yig6Zmk5oiQ5Yqf77yBXCIsXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor685XCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekujkuMVwiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdGFzeW5jIGNsYXNzR3JpZFN0eWxlSW5mbyhjbHNpZCwgc3R5bGVOYW1lLCBjbHNUeXBlKSB7XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dmFyIGdyaWRzdHlsZUluZm8gPSB7XG5cdFx0XHRcdGNsYXNzX2lkOiBjbHNpZCxcblx0XHRcdFx0bmFtZTogc3R5bGVOYW1lLFxuXHRcdFx0XHR0eXBlOiAnMidcblx0XHRcdH07XG5cdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0dyaWRTdHlsZUluZm8pO1xuXHRcdFx0Ly/ojrflj5bkuLvmlbDmja7nsbvnlYzpnaLmoLflvI9cblx0XHRcdGlmIChjbHNUeXBlID09ICdNYXN0Jykge1xuXHRcdFx0XHQkdGhpcy4kc3RvcmUuc3RhdGUudGhpc0VkaXROYW1lID0gc3R5bGVOYW1lO1xuXHRcdFx0XHRpZiAoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NHcmlkU3R5bGVJbmZvKSB7XG5cdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUgPSAkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0dyaWRTdHlsZUluZm8uZGF0YTtcblx0XHRcdFx0XHQkdGhpcy5jbGFzc19hdHRyX2luaXQoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKGdyaWRzdHlsZUluZm8pO1xuXHRcdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnY2xhc3NHcmlkU3R5bGVJbmZvJywgZ3JpZHN0eWxlSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0XHRcdHN1Y2Nlc3MuZGF0YS5TdHlsZURlZiA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhLlN0eWxlRGVmKTtcblx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUgPSBzdWNjZXNzLmRhdGE7XG5cblx0XHRcdFx0XHRcdFx0JHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68xLjJcIixcblx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMS4zXCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSBlbHNlIGlmIChjbHNUeXBlID09ICdTdWInKSB7IC8v6I635Y+W5LuO5pWw5o2u57G755WM6Z2i5qC35byPXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzRWRpdFN1Yk5hbWUgPSBzdHlsZU5hbWU7XG5cdFx0XHRcdGlmICgkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRTdWJDbGFzc0dyaWRTdHlsZUluZm8pIHtcblx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZSA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN1YkNsYXNzR3JpZFN0eWxlSW5mby5kYXRhO1xuXHRcdFx0XHRcdCR0aGlzLnN1YkNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vY29uc29sZS5sb2coZ3JpZHN0eWxlSW5mbyk7XG5cdFx0XHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdzdWJDbGFzc0dyaWRTdHlsZUluZm8nLCBncmlkc3R5bGVJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHRcdFx0c3VjY2Vzcy5kYXRhLlN0eWxlRGVmID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEuU3R5bGVEZWYpO1xuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZSA9IHN1Y2Nlc3MuZGF0YTtcblxuXHRcdFx0XHRcdFx0XHQkdGhpcy5zdWJDbGFzc19hdHRyX2luaXQoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzEuMlwiLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68xLjNcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvbnRhcChlKSB7IC8v5omr56CB5Yqf6IO9XG5cdFx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxuXHRcdFx0Z2V0QXBwKCkub25TY2FuKChyZXN1bHQpID0+IHtcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhyZXN1bHQuZGVjb2RlZGF0YSk7XG5cdFx0XHRcdHZhciBpc1ZhbCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbXG5cdFx0XHRcdFx0J2lpbmRleCddXS5WYWx1ZTtcblx0XHRcdFx0Ly8gaWYoIWlzVmFsKXtcblx0XHRcdFx0Ly8gXHR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZT1yZXN1bHQuZGVjb2RlZGF0YTtcblx0XHRcdFx0Ly8gXHR2YXIgaXNWYWxkID10aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZTtcblx0XHRcdFx0Ly8gXHRyZXR1cm47XG5cdFx0XHRcdC8vIH1cblx0XHRcdFx0Ly/kuLvmlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cblx0XHRcdFx0aWYgKGlzVmFsICE9IHJlc3VsdC5kZWNvZGVkYXRhKSB7XG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dXG5cdFx0XHRcdFx0XHQuVmFsdWUgPSByZXN1bHQuZGVjb2RlZGF0YTtcblx0XHRcdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XG5cdFx0XHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHljLrkuovku7bohJrmnKxcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLklucHV0X0NoYW5nZV9FdmVudC5JRDtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0OyAvL+S4u+aVsOaNruexu+WxnuaAp1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiN1wiLCAvL1wiMFwiLFxuXHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0XHRjbHNpZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHRcdFx0bWFzdF9hdHRyOiBbXSxcblx0XHRcdFx0XHRcdFx0aW5wdXRQYXJhbXRlcjogW3tcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiAnbWFzdF9pbnB1dF8zMDM3Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcmVzdWx0LmRlY29kZWRhdGFcblx0XHRcdFx0XHRcdFx0fV1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fSxcblx0XHRzdWJvbnRhcChlKSB7IC8v5omr56CB5Yqf6IO9XG5cdFx0XHQvL2NvbnNvbGUubG9nKGUudGFyZ2V0KVxuXHRcdFx0Z2V0QXBwKCkub25TY2FuKChyZXN1bHQpID0+IHtcblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhyZXN1bHQuZGVjb2RlZGF0YSk7XG5cdFx0XHRcdHZhciBpc1ZhbCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbXG5cdFx0XHRcdFx0J2lpbmRleCddXS5WYWx1ZTtcblx0XHRcdFx0Ly/kuLvmlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cblx0XHRcdFx0aWYgKGlzVmFsICE9IHJlc3VsdC5kZWNvZGVkYXRhKSB7XG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dXG5cdFx0XHRcdFx0XHQuVmFsdWUgPSByZXN1bHQuZGVjb2RlZGF0YTtcblx0XHRcdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XG5cdFx0XHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHljLrkuovku7bohJrmnKxcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLklucHV0X0NoYW5nZV9FdmVudC5JRDtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0OyAvL+S4u+aVsOaNruexu+WxnuaAp1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiN1wiLCAvL1wiMFwiLFxuXHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0XHRjbHNpZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHRcdFx0bWFzdF9hdHRyOiBbXSxcblx0XHRcdFx0XHRcdFx0aW5wdXRQYXJhbXRlcjogW3tcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiAnbWFzdF9pbnB1dF8zMDM3Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogcmVzdWx0LmRlY29kZWRhdGFcblx0XHRcdFx0XHRcdFx0fV1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fSxcblx0XHRzY2FuX29udGFwKGUpIHsgLy/miavnoIHljLrmiavnoIHlip/og71cblx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhyZXN1bHQuZGVjb2RlZGF0YSk7XG5cdFx0XHRcdHZhciBpc2ZsYWcgPSB0cnVlO1xuXHRcdFx0XHRmb3IgKHZhciBpIGluIHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0KSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2ldLnNjYW5Db2RlVmFsID09IHJlc3VsdC5kZWNvZGVkYXRhKVxuXHRcdFx0XHRcdFx0aXNmbGFnID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cblx0XHRcdFx0aWYgKGlzZmxhZykge1xuXHRcdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsID0gcmVzdWx0LmRlY29kZWRhdGE7XG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5JbnB1dF9DaGFuZ2VfRXZlbnQuSUQ7XG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdHZhciBtYXN0X3JlcSA9IFtdO1xuXHRcdFx0XHRcdFx0Ly/kuLvmlbDmja7nsbvlsZ7mgKdcblx0XHRcdFx0XHRcdHZhciBjbGFzc2F0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBjbGFzc2F0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gY2xhc3NhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdG1hc3RfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0bWFzdF9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0bWFzdF9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0XHQvL+WtkOaVsOaNruexu+WxnuaAp1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRlZHR5cGU6ICc3JywgLy9cIjBcIixcblx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRhdHRyOiByZXEsXG5cdFx0XHRcdFx0XHRcdG1hc3RfYXR0cjogbWFzdF9yZXEsXG5cdFx0XHRcdFx0XHRcdGlucHV0UGFyYW10ZXI6IFt7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogJ2lucHV0XzMwMzcnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiB0aGlzLiRkYXRhLnNjYW5Db2RlVmFsXG5cdFx0XHRcdFx0XHRcdH1dXG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KVxuXHRcdH0sXG5cdFx0c2Nhbl9vbmV2ZW50KGUpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcblx0XHRcdGlmIChlLnRhcmdldC52YWx1ZSkge1xuXHRcdFx0XHR2YXIgaXNmbGFnID0gdHJ1ZTtcblx0XHRcdFx0Zm9yICh2YXIgaSBpbiB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdCkge1xuXHRcdFx0XHRcdGlmICh0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtpXS5zY2FuQ29kZVZhbCA9PSBlLnRhcmdldC52YWx1ZSlcblx0XHRcdFx0XHRcdGlzZmxhZyA9IGZhbHNlO1xuXHRcdFx0XHR9XG5cdFx0XHRcdC8v5a2Q5pWw5o2u57G75omr56CB5p+l6K+i5pWw5o2uXG5cdFx0XHRcdGlmIChpc2ZsYWcpIHtcblx0XHRcdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5zY2FuQ29kZVZhbCA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5wYXJhbS5TY2FuX0NvZGUuSW5wdXRfQ2hhbmdlX0V2ZW50LklEO1xuXHRcdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHR2YXIgbWFzdF9yZXEgPSBbXTtcblx0XHRcdFx0XHRcdC8v5Li75pWw5o2u57G75bGe5oCnXG5cdFx0XHRcdFx0XHR2YXIgY2xhc3NhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgY2xhc3NhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGNsYXNzYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0XHRtYXN0X3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdG1hc3RfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdG1hc3RfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdFx0Ly/lrZDmlbDmja7nsbvlsZ7mgKdcblx0XHRcdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0ZWR0eXBlOiAnNycsIC8vXCIwXCIsXG5cdFx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRcdGNsc2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdFx0XHRtYXN0X2F0dHI6IG1hc3RfcmVxLFxuXHRcdFx0XHRcdFx0XHRpbnB1dFBhcmFtdGVyOiBbe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6ICdpbnB1dF8zMDM3Jyxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdGhpcy4kZGF0YS5zY2FuQ29kZVZhbFxuXHRcdFx0XHRcdFx0XHR9XVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR0aGlzLnNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIFwiXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdH0sXG5cdFx0b25hcnJvdyhpbmRleCwgb3Blbikge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coaW5kZXgrJy0tJytvcGVuKTtcblx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uT3Blbjtcblx0XHRcdGlmICghZGF0YV9hdHRyKSB7XG5cdFx0XHRcdHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZVxuXHRcdFx0XHRcdC50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gb3BlbiA9PSB0cnVlID8gZmFsc2UgOiB0cnVlO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbaW5kZXhdLk9wZW4gPSBvcGVuID09IHRydWUgPyBmYWxzZSA6XG5cdFx0XHRcdHRydWU7XG5cdFx0fSxcblx0XHRvbmRhdGVUaW1lKGUpIHtcblx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlO1xuXHRcdFx0aWYgKCFkYXRhX2F0dHIpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlXG5cdFx0XHRcdFx0LnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gZS50YXJnZXRcblx0XHRcdC52YWx1ZTtcblxuXHRcdH0sXG5cdFx0b25jaGFuZ2UoZSkge1xuXHRcdFx0Y29uc29sZS5sb2coZS50YXJnZXQpO1xuXHRcdFx0dmFyIHZhbHVlID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmRpY3RpdGVtW2Vcblx0XHRcdFx0LnRhcmdldC52YWx1ZV07XG5cdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xuXHRcdFx0Y29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdGlmICh2YWx1ZS5OYW1lICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSB2YWx1ZVxuXHRcdFx0XHQuTmFtZTtcblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dXG5cdFx0XHRcdC5WYWx1ZSk7XG5cdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dXG5cdFx0XHRcdFx0LmFjdGlvbjtcblx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHQvLyBzZWxmLmV2ZW50X25vX3N1YiA9IDE7XG5cdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0sXG5cdFx0b25jaGFuZ2UyKGl0ZW0sIHZhbHVlLCBkZWx2YWx1ZSkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coaXRlbSk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyh2YWx1ZSk7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhkZWx2YWx1ZSk7XG5cdFx0XHRpZiAoaXRlbS5sZW5ndGggPT0gMCkgeyAvL+S4uuepuuaXtu+8jOa4heepuuWxnuaAp3ZhbHVlXG5cdFx0XHRcdHZhciBpbmRleCwgaWluZGV4LCBkaW5kZXggPSAwO1xuXHRcdFx0XHRmb3IgKHZhciBpIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCkge1xuXHRcdFx0XHRcdGZvciAodmFyIGogaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHIpIHtcblx0XHRcdFx0XHRcdGlmIChkZWx2YWx1ZVswXS5hdHRyID09IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uVmFsdWUgPSBcIlwiO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRmb3IgKHZhciB2IGluIGl0ZW0pIHtcblx0XHRcdFx0dmFyIGluZGV4LCBpaW5kZXgsIGRpbmRleCA9IDA7XG5cdFx0XHRcdGZvciAodmFyIGkgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0KSB7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaiBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cikge1xuXHRcdFx0XHRcdFx0aWYgKGl0ZW1bdl0uYXR0ciA9PSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5OYW1lKSB7XG5cdFx0XHRcdFx0XHRcdGluZGV4ID0gaTtcblx0XHRcdFx0XHRcdFx0aWluZGV4ID0gajtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGl0ZW12YWx1ZSA9IGl0ZW1bdl07XG5cdFx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0XHRpZiAoaXRlbXZhbHVlLk5hbWUgIT0gZGF0YV9hdHRyLlZhbHVlKSB7XG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uVmFsdWUgPSB2YWx1ZTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5WYWx1ZSk7XG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5hY3Rpb247XG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeaVtOaVsCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbDogaXRlbXZhbHVlLk5hbWVcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cblx0XHR9LFxuXHRcdHN1Yl9vbmNoYW5nZShlKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHR2YXIgdmFsdWUgPSB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXVxuXHRcdFx0XHQuQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uZGljdGl0ZW1bZS50YXJnZXQudmFsdWVdO1xuXHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbXG5cdFx0XHRcdCdpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XG5cdFx0XHRpZiAodmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlXG5cdFx0XHRcdFx0LnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSB2YWx1ZS5OYW1lO1xuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0W1xuXHRcdFx0XHRcdCdpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSk7XG5cdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFtcblx0XHRcdFx0XHQnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uYWN0aW9uO1xuXHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHI7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRhdHRyOiByZXEsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHR9LFxuXHRcdHN1Yl9vbmNoYW5nZTIoaXRlbSwgdmFsdWUsIGRlbHZhbHVlKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhpdGVtKTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGRlbHZhbHVlKTtcblx0XHRcdHZhciBzdWJDbGFzc0F0dHIgPSB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cjtcblx0XHRcdGlmIChpdGVtLmxlbmd0aCA9PSAwKSB7IC8v5Li656m65pe277yM5riF56m65bGe5oCndmFsdWVcblx0XHRcdFx0dmFyIGluZGV4LCBpaW5kZXgsIGRpbmRleCA9IDA7XG5cdFx0XHRcdGZvciAodmFyIGkgaW4gc3ViQ2xhc3NBdHRyKSB7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaiBpbiBzdWJDbGFzc0F0dHJbaV0uQXR0cikge1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgZCBpbiBzdWJDbGFzc0F0dHJbaV0uQXR0cltqXS5kaWN0aXRlbSkge1xuXHRcdFx0XHRcdFx0XHRpZiAoZGVsdmFsdWVbMF0uTmFtZSA9PSBzdWJDbGFzc0F0dHJbaV0uQXR0cltqXS5kaWN0aXRlbVtkXS5OYW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0c3ViQ2xhc3NBdHRyW2ldLkF0dHJbal0uVmFsdWUgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAodmFyIHYgaW4gaXRlbSkge1xuXHRcdFx0XHR2YXIgaW5kZXgsIGlpbmRleCwgZGluZGV4ID0gMDtcblx0XHRcdFx0Zm9yICh2YXIgaSBpbiBzdWJDbGFzc0F0dHIpIHtcblx0XHRcdFx0XHRmb3IgKHZhciBqIGluIHN1YkNsYXNzQXR0cltpXS5BdHRyKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBkIGluIHN1YkNsYXNzQXR0cltpXS5BdHRyW2pdLmRpY3RpdGVtKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChpdGVtW3ZdLk5hbWUgPT0gc3ViQ2xhc3NBdHRyW2ldLkF0dHJbal0uZGljdGl0ZW1bZF0uTmFtZSkge1xuXHRcdFx0XHRcdFx0XHRcdGluZGV4ID0gaTtcblx0XHRcdFx0XHRcdFx0XHRpaW5kZXggPSBqO1xuXHRcdFx0XHRcdFx0XHRcdGRpbmRleCA9IGQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIGl0ZW12YWx1ZSA9IGl0ZW1bdl07XG5cdFx0XHRcdHZhciBkYXRhX2F0dHIgPSBzdWJDbGFzc0F0dHJbaW5kZXhdLkF0dHJbaWluZGV4XTtcblxuXHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0XHRpZiAoaXRlbXZhbHVlLk5hbWUgIT0gZGF0YV9hdHRyLlZhbHVlKSB7XG5cdFx0XHRcdFx0c3ViQ2xhc3NBdHRyW2luZGV4XS5BdHRyW2lpbmRleF0uVmFsdWUgPSB2YWx1ZTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhzdWJDbGFzc0F0dHJbaW5kZXhdLkF0dHJbaWluZGV4XS5WYWx1ZSk7XG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSBzdWJDbGFzc0F0dHJbaW5kZXhdLkF0dHJbaWluZGV4XS5hY3Rpb247XG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0XHRcdHZhciBhdHRybGlzdCA9IHN1YkNsYXNzQXR0cjtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeaVtOaVsCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbDogaXRlbXZhbHVlLk5hbWVcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cblx0XHR9LFxuXHRcdG9uZXZlbnQoZSkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQpO1xuXHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdGlmICghZGF0YV9hdHRyKSB7XG5cdFx0XHRcdHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZVxuXHRcdFx0XHRcdC50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gZS50YXJnZXQudmFsdWU7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XG5cdFx0XHRpZiAoZS50YXJnZXQudmFsdWUgIT0gZGF0YV9hdHRyLlZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSA9IGUudGFyZ2V0XG5cdFx0XHRcdFx0LnZhbHVlO1xuXHRcdFx0XHQvLyB2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5hY3Rpb247XG5cdFx0XHRcdC8v5a2Q5pWw5o2u57G75omr56CB5Yy65LqL5Lu26ISa5pysXG5cdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5wYXJhbS5TY2FuX0NvZGUuSW5wdXRfQ2hhbmdlX0V2ZW50LklEO1xuXHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0OyAvL+S4u+aVsOaNruexu+WxnuaAp1xuXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdGVkdHlwZTogXCI3XCIsIC8vXCIwXCIsXG5cdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0Y2xzaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHRcdG1hc3RfYXR0cjogW10sXG5cdFx0XHRcdFx0XHRpbnB1dFBhcmFtdGVyOiBbe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiAnbWFzdF9pbnB1dF8zMDM3Jyxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGUudGFyZ2V0LnZhbHVlXG5cdFx0XHRcdFx0XHR9XVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0sXG5cdFx0b25jaGVjayhlKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHR2YXIgaXNjaGVja2VkID0gZS50YXJnZXQuZGF0YXNldC5pc2NoZWNrID8gZmFsc2UgOiB0cnVlO1xuXHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXTtcblx0XHRcdGlmICghZGF0YV9hdHRyKSB7XG5cdFx0XHRcdHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZVxuXHRcdFx0XHRcdC50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gaXNjaGVja2VkO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0aWYgKGlzY2hlY2tlZCAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gaXNjaGVja2VkO1xuXHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXVxuXHRcdFx0XHRcdC5hY3Rpb247XG5cdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0Ly8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0sXG5cdFx0aW5wdXRWYWxMaXN0SXNEZWwoaW5kZXgpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGluZGV4KTtcblx0XHRcdHRoaXMuJGRhdGEuaW5wdXRWYWxMaXN0LnNwbGljZShpbmRleCwgMSk7IC8v5Yig6ZmkdGFiUGFnZWpzb27nmoTlhoXlrrlcblx0XHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuaW5wdXRWYWxMaXN0KTtcblx0XHR9LFxuXHRcdGFkZHJlc3NjaGFuZ2UoZSkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQpO1xuXHRcdFx0Y29uc29sZS5sb2coZS5kYXRhLmpvaW4oJzsnKSlcblx0XHRcdHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSA9IGUuZGF0YVxuXHRcdFx0XHQuam9pbignOycpO1xuXHRcdH0sXG5cdFx0Y2xhc3NBdHRyX2V4dEJ1dHRvbihpbmRleCwgaWluZGV4KSB7XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dmFyIGJlZm9yZV9jbGlja19idXR0b24gPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uYmVmb3JlX2NsaWNrX2J1dHRvbjtcblx0XHRcdHZhciBidXR0b25fY2FsbGJhY2sgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF0uYnV0dG9uX2NhbGxiYWNrO1xuXHRcdFx0aWYgKCFiZWZvcmVfY2xpY2tfYnV0dG9uKSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwiYmVmb3JlX2NsaWNrX2J1dHRvbi1ldmVudF9pZOS4uuepuu+8gVwiLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHRpZiAoIWJ1dHRvbl9jYWxsYmFjaykge1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRjb250ZW50OiBcImJ1dHRvbl9jYWxsYmFjay1ldmVudF9pZOS4uuepuu+8gVwiLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2luZGV4XS5BdHRyW2lpbmRleF07XG5cdFx0XHR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudF9SZXR1cm4oYmVmb3JlX2NsaWNrX2J1dHRvbiwgZGF0YV9hdHRyLCBidXR0b25fY2FsbGJhY2ssIGluZGV4LCBpaW5kZXgpO1xuXHRcdH0sXG5cdFx0Y2xhc3NBdHRyX0FkZFBlcihpbmRleCwgaWluZGV4KSB7XG5cdFx0XHR2YXIgcGFyYW0gPSB7XG5cdFx0XHRcdGluZGV4OiBpbmRleCxcblx0XHRcdFx0aWluZGV4OiBpaW5kZXhcblx0XHRcdH07XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHR1cmw6ICcuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JyArIEpTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0ZXZlbnRzOiB7XG5cdFx0XHRcdFx0QWRkUGVyKGRhdGEsIHBhcmFtKSB7XG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhKTtcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWx1ZSA9IGRhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWxJRCA9IGRhdGFbMF0uTG9naW4gKyAnOycgK1xuXHRcdFx0XHRcdFx0XHRkYXRhWzBdLk5hbWU7XG5cblx0XHRcdFx0XHRcdHZhciBldmVudGlkID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLmFjdGlvbjtcblx0XHRcdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiNFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0cmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0cm9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiBkYXRhWzBdLkxvZ2luLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IFtdLFxuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdC8vIHZhciBkYXRhX2F0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF07XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdGNsYXNzQXR0cl9BZGRSZWYoZSkge1xuXHRcdFx0Y29uc29sZS5sb2coZS50YXJnZXQpO1xuXHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRjb250ZW50OiBcIuatpOWKn+iDvei/mOacquWunueOsO+8gVwiLFxuXHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdH0pO1xuXHRcdFx0Ly8gdmFyIHZhbHVlPXRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5SZWxDbHNbZS50YXJnZXQudmFsdWVdO1xuXHRcdFx0Ly8gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPXZhbHVlO1xuXHRcdH0sXG5cdFx0Y2xhc3NBdHRyX0FkZFByaihpbmRleCwgaWluZGV4KSB7XG5cdFx0XHR2YXIgcGFyYW0gPSB7XG5cdFx0XHRcdGluZGV4OiBpbmRleCxcblx0XHRcdFx0aWluZGV4OiBpaW5kZXhcblx0XHRcdH07XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHR1cmw6ICcuLi9zZWxQcmovaW5kZXg/cmVsYXRpb249LTEmcGFyYW09JyArIEpTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0ZXZlbnRzOiB7XG5cdFx0XHRcdFx0QWRkUGVyKGRhdGEsIHBhcmFtKSB7XG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhkYXRhKTtcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWx1ZSA9IGRhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XS5WYWxJRCA9IGRhdGFbMF0uSUQgKyAnOycgK1xuXHRcdFx0XHRcdFx0XHRkYXRhWzBdLk5hbWU7XG5cblx0XHRcdFx0XHRcdHZhciBldmVudGlkID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLmFjdGlvbjtcblx0XHRcdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50aWQgPSBldmVudGlkLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiMlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiBkYXRhWzBdLklELFxuXHRcdFx0XHRcdFx0XHRcdFx0cmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0cm9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IFtdLFxuXHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdC8vIHZhciBkYXRhX2F0dHIgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF07XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHNhdmEoKSB7XG5cdFx0XHRpZiAodGhpcy4kZGF0YS5wYXJhbS5CZWZvcmVfT0tfRXZlbnQpIC8v5Yik5pat5Yqf6IO954K55Y+C5pWw5piv5ZCm5pyJ56Gu5a6a5YmN6ISa5pysXG5cdFx0XHRcdHRoaXMuc2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudCh0aGlzLiRkYXRhLnBhcmFtLkJlZm9yZV9PS19FdmVudC5JRCk7XG5cdFx0XHRlbHNlIGlmICh0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX09LX0V2ZW50KSAvL+WIpOaWreWKn+iDveeCueWPguaVsOaYr+WQpuacieehruWumuWQjuiEmuacrFxuXHRcdFx0XHR0aGlzLnNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQodGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRCk7XG5cdFx0XHRlbHNlXG5cdFx0XHRcdHVuaS5uYXZpZ2F0ZUJhY2soe1xuXHRcdFx0XHRcdGRlbHRhOiAxXG5cdFx0XHRcdH0pOyAvL+i/lOWbnuWxguaVsO+8jDLliJnkuIrkuIrpobVcblx0XHR9LFxuXHRcdGFkZCgpIHtcblx0XHRcdHVuaS5zaG93TG9hZGluZyh7XG5cdFx0XHRcdHRpdGxlOiBcIuWKoOi9veS4rS4uLlwiLFxuXHRcdFx0XHRtYXNrOiB0cnVlXG5cdFx0XHR9KTtcblx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+36YCJ5oupJyB8fCBhci5WYWx1ZSA9PSAn4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdG5hbWU6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdG5hbWU6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5a2X5YW4JyB8fCBhci5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBhci5UeXBlID09ICflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0aWYgKGFyLnNlbGVjdCA9PSB0cnVlKSB7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXG5cdFx0XHRcdFx0XHRcdHZhciB2YWxTdHIgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciB2IGluIGFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHZhbFN0cilcblx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBcIjtcIjtcblx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gYXIuVmFsdWVbdl07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdG5hbWU6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHZhbFN0clxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWVcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdG5hbWU6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0aWYgKGFyLm5vdGVtcHR5ID09IHRydWUgJiYgIWFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHQvLyBpZihhci5Ob3RFbXB0eT09JzEnKXtcblx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdFx0Ly8gdW5pLnNob3dUb2FzdCh7dGl0bGU6YXIuRGlzcE5hbWUrJ+S4jeiDveS4uuepuu+8gScsaWNvbjpcInN1Y2Nlc3NcIixkdXJhdGlvbjozMDAwfSk7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFyLkRpc3BOYW1lICsgJ+S4jeiDveS4uuepuu+8gScsXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR2YXIgZW52aXJvbWVudCA9IHtcblx0XHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHRtYXN0ZXI6IHtcblx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELFxuXHRcdFx0XHRkYXRhX29ial9pZDogJycsXG5cdFx0XHRcdG1hc3RlcmNsc2lkOiAnJyxcblx0XHRcdFx0cmVxOiBKU09OLnN0cmluZ2lmeShyZXEpLFxuXHRcdFx0XHR1cGZpbGU6IEpTT04uc3RyaW5naWZ5KFtdKSxcblx0XHRcdFx0cG9zdF9kYXRhOiBKU09OLnN0cmluZ2lmeSh7fSksXG5cdFx0XHRcdGNvbXBvc2U6IEpTT04uc3RyaW5naWZ5KFtdKSxcblx0XHRcdFx0cmVmZGF0YXN0b3JlOiBKU09OLnN0cmluZ2lmeShbXSksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLFxuXHRcdFx0XHRub3RfdHJpZ2dlcl9zeXNfZXZlbnQ6ICcnXG5cdFx0XHR9O1xuXG5cdFx0XHQvLyByZXR1cm5cblx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdhZGRjbGFzc2F0dHInLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHR2YXIgYWN0aW9uID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEuQWN0aW9uKTtcblx0XHRcdFx0XHRpZiAoYWN0aW9uLnJldCA9PSAnMCcpIHtcblx0XHRcdFx0XHRcdGlmIChhY3Rpb24ucmVzdWx0X3R5cGUgPT0gJzAnKSB7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBhY3Rpb24ucmVzdWx0LFxuXHRcdFx0XHRcdFx0XHRcdGljb246IFwic3VjY2Vzc1wiLFxuXHRcdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAzMDAwXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0Ly8gXCJ7XCJyZXRcIjowLCBcInJlc3VsdF90eXBlXCI6MCwgXCJyZXN1bHRcIjpcIuWIm+W7uuaIkOWKnzEyMzEyMzEyM1wiLFwiaW5mb1wiOlwiXCJ9XCJcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0Ly/liLfmlrBcblx0XHRcdFx0XHR1bmkucmVkaXJlY3RUbyh7XG5cdFx0XHRcdFx0XHR1cmw6ICcuLi9tb2RhbC9tc19jbGFzc0F0dHI/cGFyYW09JyArIEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEucGFyYW0pICtcblx0XHRcdFx0XHRcdFx0XCImdGl0bGVuYW1lPVwiICsgdGhpcy4kZGF0YS50aXRsZVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdC8vIHRoaXMuY2xhc3NfYXR0cl9pbml0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor69cIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0Y2xhc3NfYXR0cl9pbml0KCkge1xuXHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5zaG93X3N0eWxlXG5cdFx0XHR2YXIgbmV3YXR0cmxpc3QgPSBbXTtcblx0XHRcdGlmICh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFyIG9wZW4gPSBhdHRybGlzdFtpXS5vcGVuO1xuXHRcdFx0XHRcdHZhciBuYW1lID0gYXR0cmxpc3RbaV0uYXR0cmdyb3VwX25hbWU7XG5cdFx0XHRcdFx0dmFyIGF0dHJzID0gYXR0cmxpc3RbaV0uYXR0cnM7XG5cdFx0XHRcdFx0Zm9yICh2YXIgcyA9IDA7IHMgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdFx0XHRcdHZhciBjbHNhdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3NdO1xuXHRcdFx0XHRcdFx0aWYgKG5hbWUgPT0gY2xzYXR0ci5OYW1lKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gW107XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0cnMubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBsID0gMDsgbCA8IGNsc2F0dHIuQXR0ci5sZW5ndGg7IGwrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhID0gY2xzYXR0ci5BdHRyW2xdO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJzW2pdLmF0dHIgPT0gY2EuTmFtZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5hY3Rpb24gPSBhdHRyc1tqXS5hY3Rpb247XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmVkaXQgPSBhdHRyc1tqXS5lZGl0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5ub3RlbXB0eSA9IGF0dHJzW2pdLm5vdGVtcHR5O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5leHRfYnV0dG9uID0gYXR0cnNbal0uZXh0X2J1dHRvbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYnV0dG9uX2ltZyA9IGF0dHJzW2pdLmJ1dHRvbl9pbWc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmJ1dHRvbl90b29sdGlwID0gYXR0cnNbal0uYnV0dG9uX3Rvb2x0aXA7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmJlZm9yZV9jbGlja19idXR0b24gPSBhdHRyc1tqXS5iZWZvcmVfY2xpY2tfYnV0dG9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5idXR0b25fY2FsbGJhY2sgPSBhdHRyc1tqXS5idXR0b25fY2FsbGJhY2s7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmhpZGRlbiA9IGF0dHJzW2pdLmhpZGRlbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2Euc2VsZWN0ID0gYXR0cnNbal0uc2VsZWN0ID09IHVuZGVmaW5lZCA/IGZhbHNlIDogYXR0cnNbal0uc2VsZWN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5kaWN0aXRlbSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5zZWxlY3QgPT0gdHJ1ZSlcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gW107IC8vY2EuZGljdGl0ZW1bMF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivt+mAieaLqSc7IC8vY2EuZGljdGl0ZW1bMF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0aXRlbWxpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBkID0gMDsgZCA8IGNhLmRpY3RpdGVtLmxlbmd0aDsgZCsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS5sYWJlbCA9IGNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLnZhbHVlID0gY2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0uYXR0ciA9IGNhLk5hbWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuZGljdGl0ZW1bZF0uQ05fQ19JU19ERUZBVUxUID09ICcxJylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBjYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5UeXBlID09ICfml6XmnJ8nIHx8IGNhLlR5cGUgPT0gJ+aXtumXtCcpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbm93RGF0ZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRhdGUgPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR5ZWFyOiBub3dEYXRlLmdldEZ1bGxZZWFyKCksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRtb250aDogbm93RGF0ZS5nZXRNb250aCgpICsgMSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRheTogbm93RGF0ZS5nZXREYXRlKClcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBkYXRlLnllYXIgKyAnLScgKyAoZGF0ZS5tb250aCA+PSAxMCA/IGRhdGUubW9udGggOiAnMCcgKyBkYXRlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQubW9udGgpICsgJy0nICsgKGRhdGUuZGF5ID49IDEwID8gZGF0ZS5kYXkgOiAnMCcgKyBkYXRlLmRheSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByZWxDbHNMaXN0ID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHJfcmVzY2xzID0gY2EuUmVsQ2xzLnNwbGl0KCcsJyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaWkgaW4gYXR0cl9yZXNjbHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciByZXNjbHMgPSBhdHRyX3Jlc2Nsc1tpaV0uc3BsaXQoJ3wnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJlbENsc0xpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlkOiByZXNjbHNbMF0sXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG5hbWU6IHJlc2Nsc1sxXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlJlbENsc0xpc3QgPSByZWxDbHNMaXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivtyc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+ecgeW4guWMuicpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJztcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBmYWxzZTtcblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyLnB1c2goY2EpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRuZXdhdHRybGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRCa0NvbG9yOiBjbHNhdHRyLkJrQ29sb3IsXG5cdFx0XHRcdFx0XHRcdFx0SGFzQWNlOiBjbHNhdHRyLkhhc0FjZSxcblx0XHRcdFx0XHRcdFx0XHRJbWdGb250U3R5bGU6IGNsc2F0dHIuSW1nRm9udFN0eWxlLFxuXHRcdFx0XHRcdFx0XHRcdE5hbWU6IGNsc2F0dHIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRPcmRlcjogY2xzYXR0ci5PcmRlcixcblx0XHRcdFx0XHRcdFx0XHRPcGVuOiBvcGVuLFxuXHRcdFx0XHRcdFx0XHRcdEF0dHI6IGF0dHIsXG5cdFx0XHRcdFx0XHRcdFx0Y29udHJvbF9zdHlsZTogdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5jb250cm9sX3N0eWxlLFxuXHRcdFx0XHRcdFx0XHRcdHRpdGxlX3Bfd2RpdGg6IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYudGl0bGVfcF93ZGl0aCxcblx0XHRcdFx0XHRcdFx0XHRGb250OiB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLkZvbnQgPyB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlXG5cdFx0XHRcdFx0XHRcdFx0XHQuU3R5bGVEZWYuRm9udCA6IHt9LFxuXHRcdFx0XHRcdFx0XHRcdEJrX0NvbG9yOiB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLkJrX0NvbG9yID8gdGhpcy4kZGF0YVxuXHRcdFx0XHRcdFx0XHRcdFx0LmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLkJrX0NvbG9yIDogJyNGRkZGRkYnLFxuXHRcdFx0XHRcdFx0XHRcdFRleHRfQ29sb3I6IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuVGV4dF9Db2xvciA/IHRoaXMuJGRhdGFcblx0XHRcdFx0XHRcdFx0XHRcdC5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5UZXh0X0NvbG9yIDogJyMwMDAwMDAnXG5cdFx0XHRcdFx0XHRcdH0pXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdGlmIChuZXdhdHRybGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gbmV3YXR0cmxpc3Q7XG5cdFx0XHRcdH1cblx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRpZiAodGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZikge1xuXHRcdFx0XHRcdGlmICh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5zaG93X3N0eWxlXG5cdFx0XHRcdFx0XHQvLyAkZWwuZmluZCgnLmF0dHJfZmllbGQnKS5wcm9wKCdyZWFkb25seScsIHRydWUpO1xuXHRcdFx0XHRcdFx0Ly8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgnZGlzYWJsZWQnLCB0cnVlKTtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5hdHRyc1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLmF0dHIsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIudmFsdWUgPyBhci52YWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR2YXIgZXZlbnRsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5ldmVudDtcblx0XHRcdFx0aWYgKGV2ZW50bGlzdCkge1xuXHRcdFx0XHRcdGlmIChldmVudGxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBldmVudGxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0aWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnYmVmb3JlX29rJykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuZWRpdF9va19ldmVudCA9IGV2ZW50bGlzdFtpXTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2luaXRpYWwnKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCA9IGV2ZW50bGlzdFtpXTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2JlZm9yZV9zZWxlY3RfY29tcG9zZScpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmVkaXRfc2VsZWN0X2NvbXBvc2VfZXZlbnQgPSBldmVudGxpc3RbaV0uc2NyaXBfaWQ7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5lZGl0X2NvbXBvc2VfY2xzX2lkID0gZXZlbnRsaXN0W2ldLmNvbXBvc2VfY2xzX2lkO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHJlcSk7XG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50KSB7XG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50LnNjcmlwX2lkO1xuXHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLmluaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwi5pyq5om+5Yiw5Y+v5pi+56S655qE55qE5bGe5oCnXCIsXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRzdWJDbGFzc19hdHRyX2luaXQoKSB7XG5cdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcblx0XHRcdHZhciBuZXdhdHRybGlzdCA9IFtdO1xuXHRcdFx0aWYgKHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR2YXIgb3BlbiA9IGF0dHJsaXN0W2ldLm9wZW47XG5cdFx0XHRcdFx0dmFyIG5hbWUgPSBhdHRybGlzdFtpXS5hdHRyZ3JvdXBfbmFtZTtcblx0XHRcdFx0XHR2YXIgYXR0cnMgPSBhdHRybGlzdFtpXS5hdHRycztcblx0XHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHRcdFx0dmFyIGNsc2F0dHIgPSB0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3Rbc107XG5cdFx0XHRcdFx0XHRpZiAobmFtZSA9PSBjbHNhdHRyLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBbXTtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRycy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGwgPSAwOyBsIDwgY2xzYXR0ci5BdHRyLmxlbmd0aDsgbCsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgY2EgPSBjbHNhdHRyLkF0dHJbbF07XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cnNbal0uYXR0ciA9PSBjYS5OYW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmFjdGlvbiA9IGF0dHJzW2pdLmFjdGlvbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZWRpdCA9IGF0dHJzW2pdLmVkaXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLm5vdGVtcHR5ID0gYXR0cnNbal0ubm90ZW1wdHk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmV4dF9idXR0b24gPSBhdHRyc1tqXS5leHRfYnV0dG9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5idXR0b25faW1nID0gYXR0cnNbal0uYnV0dG9uX2ltZztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYnV0dG9uX3Rvb2x0aXAgPSBhdHRyc1tqXS5idXR0b25fdG9vbHRpcDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYmVmb3JlX2NsaWNrX2J1dHRvbiA9IGF0dHJzW2pdLmJlZm9yZV9jbGlja19idXR0b247XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmJ1dHRvbl9jYWxsYmFjayA9IGF0dHJzW2pdLmJ1dHRvbl9jYWxsYmFjaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuaGlkZGVuID0gYXR0cnNbal0uaGlkZGVuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5zZWxlY3QgPSBhdHRyc1tqXS5zZWxlY3QgPT0gdW5kZWZpbmVkID8gZmFsc2UgOiBhdHRyc1tqXS5zZWxlY3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gXCJcIjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLmRpY3RpdGVtKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLnNlbGVjdCA9PSB0cnVlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBbXTsgLy9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJzsgLy9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RpdGVtbGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgPSAwOyBkIDwgY2EuZGljdGl0ZW0ubGVuZ3RoOyBkKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLmxhYmVsID0gY2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0udmFsdWUgPSBjYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS5hdHRyID0gY2EuTmFtZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5kaWN0aXRlbVtkXS5DTl9DX0lTX0RFRkFVTFQgPT0gJzEnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+aXpeacnycgfHwgY2EuVHlwZSA9PSAn5pe26Ze0Jykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBub3dEYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGF0ZSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHllYXI6IG5vd0RhdGUuZ2V0RnVsbFllYXIoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1vbnRoOiBub3dEYXRlLmdldE1vbnRoKCkgKyAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF5OiBub3dEYXRlLmdldERhdGUoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGRhdGUueWVhciArICctJyArIChkYXRlLm1vbnRoID49IDEwID8gZGF0ZS5tb250aCA6ICcwJyArIGRhdGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5tb250aCkgKyAnLScgKyAoZGF0ZS5kYXkgPj0gMTAgPyBkYXRlLmRheSA6ICcwJyArIGRhdGUuZGF5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlbENsc0xpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0cl9yZXNjbHMgPSBjYS5SZWxDbHMuc3BsaXQoJywnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpaSBpbiBhdHRyX3Jlc2Nscykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlc2NscyA9IGF0dHJfcmVzY2xzW2lpXS5zcGxpdCgnfCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVsQ2xzTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ6IHJlc2Nsc1swXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogcmVzY2xzWzFdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuUmVsQ2xzTGlzdCA9IHJlbENsc0xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+3Jztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn55yB5biC5Yy6Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHIucHVzaChjYSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdG5ld2F0dHJsaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdEJrQ29sb3I6IGNsc2F0dHIuQmtDb2xvcixcblx0XHRcdFx0XHRcdFx0XHRIYXNBY2U6IGNsc2F0dHIuSGFzQWNlLFxuXHRcdFx0XHRcdFx0XHRcdEltZ0ZvbnRTdHlsZTogY2xzYXR0ci5JbWdGb250U3R5bGUsXG5cdFx0XHRcdFx0XHRcdFx0TmFtZTogY2xzYXR0ci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdE9yZGVyOiBjbHNhdHRyLk9yZGVyLFxuXHRcdFx0XHRcdFx0XHRcdE9wZW46IG9wZW4sXG5cdFx0XHRcdFx0XHRcdFx0QXR0cjogYXR0cixcblx0XHRcdFx0XHRcdFx0XHRjb250cm9sX3N0eWxlOiB0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmNvbnRyb2xfc3R5bGUsXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGVfcF93ZGl0aDogdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi50aXRsZV9wX3dkaXRoLFxuXHRcdFx0XHRcdFx0XHRcdEZvbnQ6IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuRm9udCA/IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGVcblx0XHRcdFx0XHRcdFx0XHRcdC5TdHlsZURlZi5Gb250IDoge30sXG5cdFx0XHRcdFx0XHRcdFx0QmtfQ29sb3I6IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuQmtfQ29sb3IgPyB0aGlzLiRkYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHQuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuQmtfQ29sb3IgOiAnI0ZGRkZGRicsXG5cdFx0XHRcdFx0XHRcdFx0VGV4dF9Db2xvcjogdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5UZXh0X0NvbG9yID8gdGhpcy4kZGF0YVxuXHRcdFx0XHRcdFx0XHRcdFx0LnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLlRleHRfQ29sb3IgOiAnIzAwMDAwMCdcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG5ld2F0dHJsaXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QgPSBuZXdhdHRybGlzdDtcblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcblx0XHRcdFx0XHRcdC8vICRlbC5maW5kKCcuYXR0cl9maWVsZCcpLnByb3AoJ3JlYWRvbmx5JywgdHJ1ZSk7XG5cdFx0XHRcdFx0XHQvLyAkZWwuZmluZCgnLmF0dHJfZmllbGQnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLmF0dHJzXG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuYXR0cixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci52YWx1ZSA/IGFyLnZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZhciBldmVudGxpc3QgPSB0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmV2ZW50O1xuXHRcdFx0XHRpZiAoZXZlbnRsaXN0KSB7XG5cdFx0XHRcdFx0aWYgKGV2ZW50bGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50bGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfb2snKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5lZGl0X29rX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnaW5pdGlhbCcpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnYmVmb3JlX3NlbGVjdF9jb21wb3NlJykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCA9IGV2ZW50bGlzdFtpXS5zY3JpcF9pZDtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmVkaXRfY29tcG9zZV9jbHNfaWQgPSBldmVudGxpc3RbaV0uY29tcG9zZV9jbHNfaWQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVxKTtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQpIHtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQuc2NyaXBfaWQ7XG5cdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRhdHRyOiByZXEsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuc2Nhbl9pbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHR9XG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUpO1xuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QpO1xuXG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRjb250ZW50OiBcIuacquaJvuWIsOWPr+aYvuekuueahOeahOWxnuaAp1wiLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0aW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKSB7XG5cdFx0XHR2YXIgcGFyYW0gPSB7XG5cdFx0XHRcdEVkaXRTdHlsZTogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZSxcblx0XHRcdFx0Vmlld1N0eWxlOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZS5OYW1lLFxuXHRcdFx0XHROb3RUcmlnZ2VyU3lzRXZlbnQ6IDAsXG5cdFx0XHRcdGVudmlyb21lbnQ6IHtcblx0XHRcdFx0XHQnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0XHRidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdFx0bWFzdGVyOiB7XG5cdFx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHRcdFx0XHRcdC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBpbnB1dHBhcmFtZXRlciA9ICcnO1xuXHRcdFx0dmFyIGdsb2JhbF9hdHRyID0gJyc7XG5cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0ZWR0eXBlOiBpbmZvLmVkdHlwZSxcblx0XHRcdFx0ZXZlbnRpZDogaW5mby5ldmVudGlkLFxuXHRcdFx0XHRwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLFxuXHRcdFx0XHRyY2xzaWQ6IGluZm8ucmNsc2lkLFxuXHRcdFx0XHRyb2JqaWQ6IGluZm8ucm9iamlkLFxuXHRcdFx0XHR1c2VybG9naW46IGluZm8udXNlcmxvZ2luLFxuXHRcdFx0XHRjbHNpZDogaW5mby5jbHNpZCxcblx0XHRcdFx0b2JqaWQ6IGluZm8ub2JqaWQsXG5cdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0aW5wdXRwYXJhbWV0ZXI6IGlucHV0cGFyYW1ldGVyLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogZ2xvYmFsX2F0dHJcblx0XHRcdH1cblx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHR2YXIgYWN0aW9ubGlzdCA9IGRhdGEuYWN0aW9uO1xuXHRcdFx0XHRcdGlmIChhY3Rpb25saXN0KSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGFjdGlvbmxpc3QubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbmxpc3Rbal1cblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbl90eXBlID0gYWN0aW9uLmFjdGlvbl90eXBlO1xuXHRcdFx0XHRcdFx0XHR2YXIgdmFsdWUgPSBhY3Rpb24udmFsdWU7XG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb25fdHlwZSA9PSAnc2V0X2RsZ19hdHRyJykge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWwgPSBKU09OLnBhcnNlKHZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHZhbCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBhID0gMDsgYSA8IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGErKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGwgPSAwOyBsIDwgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2FdLkF0dHIubGVuZ3RoOyBsKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYSA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFthXS5BdHRyW2xdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHZhbFtpXS5hdHRyID09IGNhLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgY2EuVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHwgY2EuVHlwZSA9PVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0SXRlbUxpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBkIGluIHZhbFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IHZhbFtpXS5jaG9pY2VfbGlzdFtkXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJDTl9TX05BTUVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk5hbWVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcImxhYmVsXCI6IHZhbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiB2YWxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtID0gZGljdEl0ZW1MaXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSB2YWxbaV0uY2hvaWNlX2xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY2EudmFsdWUgPSB2YWxbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaCh2YWxbaV0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHZhbFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gdmFsW2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uX3R5cGUgPT0gJ29wZW5fc2VsZWN0X3VzZXJkbGcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68yLjJcIixcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwib3Blbl9zZWxlY3RfdXNlcmRsZ+i/meS4qmFjdGlvbl90eXBl6L+Y5pyq5aSE55CG77yBXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzJcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMi4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHREYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgZGF0YV9hdHRyKSB7XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dmFyIGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdCdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0J2J1dHRvbic6ICd0b3AnLCAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0bWFzdGVyOiB7XG5cdFx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0XHRcdFx0Ly9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0ZW52aXJvbWVudC5lZGl0X2RsZyA9IHtcblx0XHRcdFx0dHlwZTogJ3NtYWxsJywgLy/lsI/nqpflj6Ncblx0XHRcdFx0Y2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy/lvZPliY3mlbDmja7nsbtpZFxuXHRcdFx0fVxuXHRcdFx0aWYgKGRhdGFfYXR0cikge1xuXHRcdFx0XHRlbnZpcm9tZW50LmVkaXRfZGxnLmZvcm1fY29udHJvbCA9IHsgLy/miYDlsZ7nmoTooajljZXmjqfku7Zcblx0XHRcdFx0XHRuYW1lOiBkYXRhX2F0dHIuTmFtZSwgLy/lrZfmrrXlsZ7mgKdcblx0XHRcdFx0XHR0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsIC8v5pi+56S65paH5pysXG5cdFx0XHRcdFx0Z3JvdXBfbmFtZTogZGF0YV9hdHRyLkdyb3VwTmFtZSwgLy/lsZ7mgKfnu4Rcblx0XHRcdFx0XHR0eXBlOiBkYXRhX2F0dHIuVHlwZSwgLy/lrZfmrrXnsbvlnotcblx0XHRcdFx0XHRyZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LCAvL+aYr+WQpuWPquivu1xuXHRcdFx0XHRcdGJ1dHRvbl9pbWc6IGRhdGFfYXR0ci5idXR0b25faW1nLCAvL+W8leeUqOaMiemSrueahOWbvuagh1xuXHRcdFx0XHRcdGJ1dHRvbl90b29sdGlwOiBkYXRhX2F0dHIuYnV0dG9uX3Rvb2x0aXAgLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0ZWR0eXBlOiBpbmZvLmVkdHlwZSxcblx0XHRcdFx0ZXZlbnRpZDogaW5mby5ldmVudGlkLFxuXHRcdFx0XHRwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLnJlcGxhY2UoJ3snLCAnJykucmVwbGFjZSgnfScsICcnKSxcblx0XHRcdFx0cmNsc2lkOiBpbmZvLnJjbHNpZCxcblx0XHRcdFx0cm9iamlkOiBpbmZvLnJvYmppZCxcblx0XHRcdFx0dXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbixcblx0XHRcdFx0Y2xzaWQ6IGluZm8uY2xzaWQsXG5cdFx0XHRcdG9iamlkOiBpbmZvLm9iamlkLFxuXHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLFxuXHRcdFx0XHRleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSxcblx0XHRcdFx0aW5wdXRwYXJhbWV0ZXI6ICcnLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcblx0XHRcdH1cblx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHR2YXIgYWN0aW9ubGlzdCA9IGRhdGEuYWN0aW9uO1xuXG5cdFx0XHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGFjdGlvbmxpc3QpO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25saXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2ldO1xuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyW2pdLk5hbWUgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uVHlwZSA9PSAn5a2X5YW4JyB8fCBhdHRyW2pdLlR5cGUgPT0gJ+Wtl+WFuC3lrZfnrKbkuLInIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5UeXBlID09ICflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0SXRlbUxpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IHJlc3VsdFtpXS5jaG9pY2VfbGlzdFtkXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJDTl9TX05BTUVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk5hbWVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcImxhYmVsXCI6IHZhbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiB2YWxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLmRpY3RpdGVtID0gZGljdEl0ZW1MaXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSByZXN1bHRbaV0uY2hvaWNlX2xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYXR0cltqXS5OYW1lICsgJz09JyArIHJlc3VsdFtpXS5hdHRyKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cltqXS5OYW1lID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZGF0YS5hY3Rpb25baV0uYWN0aW9uX3R5cGUgPT0gJ3NldF9nbG9iYWxfYXR0cicpIHtcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5nbG9iYWxfYXR0ciA9IGRhdGEuYWN0aW9uW2ldLnZhbHVlIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKGRhdGEucmVzdWx0KSB7XG5cdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QubGVuZ3RoOyBjKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbY10uQXR0cjtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyW2pdLk5hbWUgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vM1wiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLplJnor68zLjFcIixcblx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdE9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KCkge1xuXHRcdFx0dmFyIGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdCdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0J2J1dHRvbic6ICd0b3AnLCAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0bWFzdGVyOiB7XG5cdFx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cblx0XHRcdFx0fVxuXHRcdFx0fTtcblxuXHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmVkaXRfb2tfZXZlbnQuc2NyaXBfaWQ7XG5cdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivt+mAieaLqScgfHwgYXIuVmFsdWUgPT0gJ+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0XHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0aWYgKCFyZXEuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIgPT0gcy5uYW1lXG5cdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdCdhdHRyJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0cixcblx0XHRcdFx0XHRcdFx0J3ZhbHVlJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0udmFsdWVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRhdHRyOiByZXEsXG5cdFx0XHR9XG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdGVkdHlwZTogaW5mby5lZHR5cGUsXG5cdFx0XHRcdGV2ZW50aWQ6IGluZm8uZXZlbnRpZCxcblx0XHRcdFx0cHJvamVjdGlkOiBpbmZvLnByb2plY3RpZCxcblx0XHRcdFx0cmNsc2lkOiBpbmZvLnJjbHNpZCxcblx0XHRcdFx0cm9iamlkOiBpbmZvLnJvYmppZCxcblx0XHRcdFx0dXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbixcblx0XHRcdFx0Y2xzaWQ6IGluZm8uY2xzaWQsXG5cdFx0XHRcdG9iamlkOiBpbmZvLm9iamlkLFxuXHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLFxuXHRcdFx0XHRleHRpbmZvOiBKU09OLnN0cmluZ2lmeShlbnZpcm9tZW50KSxcblx0XHRcdFx0Z2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXG5cdFx0XHR9XG5cdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xuXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHQvLyBzZWxmLmNsYXNzX2F0dHJfZWxlLmZpbmQoJy5hdHRyX2ZpZWxkW2RhdGEtZmllbGQ9XCInICsgcmVzdWx0W2ldLmF0dHIgKyAnXCJdJykudmFsKHJlc3VsdFtpXS52YWx1ZSkuZGF0YSgndmFsJywgcmVzdWx0W2ldLnZhbHVlKTtcblx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0aWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdHRoaXMuYWRkKCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor680XCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzQuMVwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0RGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybihldmVudGlkLCBkYXRhX2F0dHIsIGJ1dHRvbl9jYWxsYmFjaywgaW5kZXgsIGlpbmRleCkge1xuXHRcdFx0dmFyIGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdCdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0J2J1dHRvbic6ICd0b3AnLCAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0bWFzdGVyOiB7XG5cdFx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0XHRcdFx0Ly9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdGlmICghcmVxLmZpbHRlcihmdW5jdGlvbihzKSB7XG5cdFx0XHRcdFx0XHRcdHJldHVybiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyID09IHMubmFtZVxuXHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHQnYXR0cic6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIsXG5cdFx0XHRcdFx0XHRcdCd2YWx1ZSc6IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLnZhbHVlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBleHRpbmZvID0gZW52aXJvbWVudDtcblx0XHRcdGV4dGluZm8uZWRpdF9kbGcgPSB7XG5cdFx0XHRcdHR5cGU6ICdzbWFsbCcsIC8v5bCP56qX5Y+jXG5cdFx0XHRcdGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8v5b2T5YmN5pWw5o2u57G7aWRcblx0XHRcdH1cblx0XHRcdGlmIChkYXRhX2F0dHIpIHtcblx0XHRcdFx0ZXh0aW5mby5lZGl0X2RsZy5mb3JtX2NvbnRyb2wgPSB7IC8v5omA5bGe55qE6KGo5Y2V5o6n5Lu2XG5cdFx0XHRcdFx0bmFtZTogZGF0YV9hdHRyLk5hbWUsIC8v5a2X5q615bGe5oCnXG5cdFx0XHRcdFx0dGV4dDogZGF0YV9hdHRyLkRpc3BOYW1lLCAvL+aYvuekuuaWh+acrFxuXHRcdFx0XHRcdGdyb3VwX25hbWU6IGRhdGFfYXR0ci5Hcm91cE5hbWUsIC8v5bGe5oCn57uEXG5cdFx0XHRcdFx0dHlwZTogZGF0YV9hdHRyLlR5cGUsIC8v5a2X5q6157G75Z6LXG5cdFx0XHRcdFx0cmVhZG9ubHk6IGRhdGFfYXR0ci5SZWFkT25seSwgLy/mmK/lkKblj6ror7tcblx0XHRcdFx0XHRidXR0b25faW1nOiBkYXRhX2F0dHIuYnV0dG9uX2ltZywgLy/lvJXnlKjmjInpkq7nmoTlm77moIdcblx0XHRcdFx0XHRidXR0b25fdG9vbHRpcDogZGF0YV9hdHRyLmJ1dHRvbl90b29sdGlwIC8v5byV55So5oyJ6ZKu55qEdG9vbHRpcFxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdG9iamlkOiAnJyxcblx0XHRcdFx0YXR0cjogSlNPTi5zdHJpbmdpZnkocmVxKSxcblx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZXh0aW5mbyksXG5cdFx0XHRcdGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxuXHRcdFx0fVxuXHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdGlmIChkYXRhICE9IFwiXCIpIHtcblxuXHRcdFx0XHRcdFx0dmFyIGFjdGlvbnMgPSBkYXRhLmFjdGlvbjtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGFjdGlvbnMpO1xuXHRcdFx0XHRcdFx0aWYgKGFjdGlvbnMpIHtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhY3Rpb25zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbnNbaV07XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IGFjdGlvbi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHR2YXIgZW52aXJvbWVudCA9IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpO1xuXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9wYW5lbCcpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBkID0gZGlhbG9nKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdGQuc2hvdygpO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3NlbGVjdF91c2VyZGxnJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHN0eWxlID0gdmFsLnN0eWxlO1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly8gc3R5bGUgPT0gJ3VzZXInID8gJ+mAieaLqeS6uuWRmCcgOiBzdHlsZSA9PSAnZGVwYXJ0bWVudCcgPyAn6YCJ5oup6YOo6ZeoJyA6IHN0eWxlID09ICdyb2xlJyA/ICfpgInmi6nop5LoibInIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW0gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluZGV4OiBpbmRleCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWluZGV4OiBpaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvbl9jYWxsYmFjazogYnV0dG9uX2NhbGxiYWNrLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXE6IHJlcSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF0YV9hdHRyOiBkYXRhX2F0dHJcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dXJsOiAnLi4vc2VscHNuL2luZGV4P211bGl0PWZhbHNlJnBhcmFtPScgKyBKU09OLnN0cmluZ2lmeShcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwYXJhbSksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50czoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEFkZFBlcihkYXRhLCBwYXJhbSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2cocGFyYW0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZGF0YSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgY2FsbGJhY2tfZXZlbnRpZCA9IHBhcmFtLmJ1dHRvbl9jYWxsYmFjay50cmltKCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogY2FsbGJhY2tfZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBwYXJhbS5yZXEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlucHV0cGFyYW1ldGVyOiBkYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgcGFyYW0uZGF0YV9hdHRyKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX2RhdGFfcXVlcnlfZGxnJykge1xuXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fY29tbW9uX2RsZycpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBkID0gZGlhbG9nKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdGQuc2hvdygpO1xuXHRcdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3Byb2plY3RfcXVlcnlfZGxnJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly9jb25zb2xlLmxvZyhhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlKTtcblx0XHRcdFx0XHRcdFx0XHRcdC8vY29uc29sZS5sb2coYWN0aW9uLnZhbHVlLm11bGl0X3NlbGVjdCk7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcHJpUmVsID0gJy0xJztcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICflhajpg6jnm7jlhbMnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnMCc7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHotJ/otKPnmoTpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnMSc7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHliJvlu7rnmoQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnMic7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LkuI7nmoQnIHx8IGFjdGlvbi52YWx1ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQuc2VsZWN0X3JhbmdlID09ICfmiJHlj4LliqDnmoQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnMyc7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHlhbPms6jnmoQnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnNCc7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhY3Rpb24udmFsdWUuc2VsZWN0X3JhbmdlID09ICfmiJHkuIvlsZ7nmoTpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRwcmlSZWwgPSAnNSc7XG5cblx0XHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgcGFyYW1fID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpbmRleDogaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlpbmRleDogaWluZGV4LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRidXR0b25fY2FsbGJhY2s6IGJ1dHRvbl9jYWxsYmFjayxcblx0XHRcdFx0XHRcdFx0XHRcdFx0cmVxOiByZXFcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHVuaS5uYXZpZ2F0ZVRvKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dXJsOiAnLi4vc2VsUHJqL2luZGV4P3JlbGF0aW9uPScgKyBwcmlSZWwgKyAnJnBhcmFtPScgKyBKU09OXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0LnN0cmluZ2lmeShwYXJhbV8pLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRldmVudHM6IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRBZGRQZXIoZGF0YSwgcGFyYW0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmlpbmRleF0uVmFsdWUgPSBkYXRhWzBdLk5hbWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LmlpbmRleF0uVmFsSUQgPSBkYXRhWzBdLklEICsgJzsnICsgZGF0YVswXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuTmFtZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYWxsYmFja19ldmVudGlkKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGNhbGxiYWNrX2V2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6IGRhdGFbMF0uSUQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmNsc2lkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VybG9naW46IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogcGFyYW0ucmVxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBkID0gZGlhbG9nKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICc8aSBjbGFzcz1cImFjZS1pY29uIGZhIGZhLWluZm8tY2lyY2xlXCI+PC9pPiAnICsgJ+aPkOekuicsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFjdGlvbi5hY3Rpb25fdHlwZSArICfmraRhY3Rpb27lsJrmnKrlpITnkIbvvIEnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdGQuc2hvdygpO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6NS4yXCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6ICfosIPnlKggYmVmb3JlX2NsaWNrX2J1dHRvbiDohJrmnKzov5Tlm57nqbrvvIxldmVudF9pZCcgKyBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzVcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6NS4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHRzY2FuX2luaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbykge1xuXHRcdFx0dmFyIHBhcmFtID0ge1xuXHRcdFx0XHRFZGl0U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5WaWV3X1N0eWxlLk5hbWUsXG5cdFx0XHRcdFZpZXdTdHlsZTogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLlZpZXdfU3R5bGUuTmFtZSxcblx0XHRcdFx0Tm90VHJpZ2dlclN5c0V2ZW50OiAwLFxuXHRcdFx0XHRlbnZpcm9tZW50OiB7XG5cdFx0XHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdFx0J2J1dHRvbic6ICd0b3AnLCAvLyB0b3AvYm90dG9tXG5cdFx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHRcdG1hc3Rlcjoge1xuXHRcdFx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEY2xzX2lkXG5cdFx0XHRcdFx0XHQvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR2YXIgaW5wdXRwYXJhbWV0ZXIgPSAnJztcblx0XHRcdHZhciBnbG9iYWxfYXR0ciA9ICcnO1xuXG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdGVkdHlwZTogaW5mby5lZHR5cGUsXG5cdFx0XHRcdGV2ZW50aWQ6IGluZm8uZXZlbnRpZCxcblx0XHRcdFx0cHJvamVjdGlkOiBpbmZvLnByb2plY3RpZCxcblx0XHRcdFx0cmNsc2lkOiBpbmZvLnJjbHNpZCxcblx0XHRcdFx0cm9iamlkOiBpbmZvLnJvYmppZCxcblx0XHRcdFx0dXNlcmxvZ2luOiBpbmZvLnVzZXJsb2dpbixcblx0XHRcdFx0Y2xzaWQ6IGluZm8uY2xzaWQsXG5cdFx0XHRcdG9iamlkOiBpbmZvLm9iamlkLFxuXHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShpbmZvLmF0dHIpLFxuXHRcdFx0XHRleHRpbmZvOiBKU09OLnN0cmluZ2lmeShwYXJhbSksXG5cdFx0XHRcdGlucHV0cGFyYW1ldGVyOiBpbnB1dHBhcmFtZXRlcixcblx0XHRcdFx0Z2xvYmFsX2F0dHI6IGdsb2JhbF9hdHRyXG5cdFx0XHR9XG5cdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0XHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhY3Rpb25saXN0Lmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhY3Rpb24gPSBhY3Rpb25saXN0W2pdXG5cdFx0XHRcdFx0XHRcdHZhciBhY3Rpb25fdHlwZSA9IGFjdGlvbi5hY3Rpb25fdHlwZTtcblx0XHRcdFx0XHRcdFx0dmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWwgPSB2YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh0eXBlb2YgdmFsdWUgPT0gJ3N0cmluZycpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsID0gSlNPTi5wYXJzZSh2YWx1ZSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyh2YWwpO1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCB2YWwubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYSA9IDA7IGEgPCB0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QubGVuZ3RoOyBhKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBsID0gMDsgbCA8IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdFthXS5BdHRyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQubGVuZ3RoOyBsKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYSA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdFthXS5BdHRyW2xdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHZhbFtpXS5hdHRyID09IGNhLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgY2EuVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHwgY2EuVHlwZSA9PVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkaWN0SXRlbUxpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBkIGluIHZhbFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IHZhbFtpXS5jaG9pY2VfbGlzdFtkXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGRpY3RJdGVtTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJDTl9TX05BTUVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk5hbWVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcImxhYmVsXCI6IHZhbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiB2YWxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtID0gZGljdEl0ZW1MaXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSB2YWxbaV0uY2hvaWNlX2xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY2EudmFsdWUgPSB2YWxbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCF0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHZhbFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaCh2YWxbaV0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHZhbFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gdmFsW2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uX3R5cGUgPT0gJ29wZW5fc2VsZWN0X3VzZXJkbGcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor682LjJcIixcblx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IFwib3Blbl9zZWxlY3RfdXNlcmRsZ+i/meS4qmFjdGlvbl90eXBl6L+Y5pyq5aSE55CG77yBXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzZcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vNi4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHRzY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBkYXRhX2F0dHIpIHtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgZW52aXJvbWVudCA9IHt9O1xuXHRcdFx0aWYoaW5mby5lbnZpcm9tZW50KXtcblx0XHRcdFx0ZW52aXJvbWVudCA9IGluZm8uZW52aXJvbWVudDtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0XHRjbHNfaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsICAgICAvLyDlip/og73ngrnku47mlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0XHRidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdFx0ZWRpdF9kbGc6IHtcblx0XHRcdFx0XHRcdHR5cGU6ICdzbWFsbCcsIC8v5bCP56qX5Y+jXG5cdFx0XHRcdFx0XHRjbGFzc19pZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwvL+W9k+WJjeaVsOaNruexu2lkXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0fTtcblx0XHRcdFx0XG5cdFx0XHR9XG5cdFx0XHR2YXIgZ2xvYmFsX2F0dHIgPSB0aGlzLiRkYXRhLmdsb2JhbF9hdHRyO1xuXHRcdFx0aWYgKGluZm8uZ2xvYmFsX2F0dHIpIHtcblx0XHRcdFx0Z2xvYmFsX2F0dHIgPSBpbmZvLmdsb2JhbF9hdHRyO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRlZHR5cGU6IGluZm8uZWR0eXBlLFxuXHRcdFx0XHRldmVudGlkOiBpbmZvLmV2ZW50aWQsXG5cdFx0XHRcdHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQucmVwbGFjZSgneycsICcnKS5yZXBsYWNlKCd9JywgJycpLFxuXHRcdFx0XHRyY2xzaWQ6IGluZm8ucmNsc2lkLFxuXHRcdFx0XHRyb2JqaWQ6IGluZm8ucm9iamlkLFxuXHRcdFx0XHR1c2VybG9naW46IGluZm8udXNlcmxvZ2luLFxuXHRcdFx0XHRjbHNpZDogaW5mby5jbHNpZCxcblx0XHRcdFx0b2JqaWQ6IGluZm8ub2JqaWQsXG5cdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLFxuXHRcdFx0XHRpbnB1dHBhcmFtZXRlcjogSlNPTi5zdHJpbmdpZnkoaW5mby5pbnB1dFBhcmFtdGVyKSxcblx0XHRcdFx0Z2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KGdsb2JhbF9hdHRyKVxuXHRcdFx0fVxuXHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XG5cblx0XHRcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpaSA9IDA7IGlpIDwgYWN0aW9ubGlzdC5sZW5ndGg7IGlpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbmxpc3RbaWldO1xuXHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGFjdGlvbi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyTGlzdFtjXVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0LkF0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uTmFtZSA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyW2pdLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgYXR0cltqXS5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5UeXBlID09ICflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZCBpbiByZXN1bHRbaV0uY2hvaWNlX2xpc3QpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IHJlc3VsdFtpXS5jaG9pY2VfbGlzdFtkXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiQ05fU19OQU1FXCI6IHZhbCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIk5hbWVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwibGFiZWxcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwidmFsdWVcIjogdmFsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5kaWN0aXRlbSA9IGRpY3RJdGVtTGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGF0dHJbal0uZGljdGl0ZW0gPSByZXN1bHRbaV0uY2hvaWNlX2xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHJMaXN0XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lmxlbmd0aDsgYysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYXR0cltqXS5OYW1lICsgJz09JyArIHJlc3VsdFtpXS5hdHRyKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyW2pdLk5hbWUgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnc2V0X2dsb2JhbF9hdHRyJykge1xuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRhY3Rpb250ciA9IGFjdGlvbi52YWx1ZSB8fCBbXTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fY29tbW9uX2RsZycpIHsgLy/miZPlvIDkvqfmu5HlvLnmoYZcblx0XHRcdFx0XHRcdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhY3Rpb24udmFsdWUuY29tbW9uX2RsZ19pZCA9PSAnY2hlY2tfbGlzdCcpIHtcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNoZWNrX2xpc3QgPSBhY3Rpb24udmFsdWUuY29uZmlnO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbi52YWx1ZS5jb25maWcuYXBwZWFyX3N0eWxlID09ICdzaWRlc2xpcCcpIC8v5Yik5pat5piv5ZCm5piv5L6n5ruRXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnBvcHVwVHlwZSA9ICdyaWdodCc7XG5cdFx0XHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnBvcHVwVHlwZSA9ICdjZW50ZXInXG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBvcGVuIOaWueazleS8oOWFpeWPguaVsCDnrYnlkIzlnKggdW5pLXBvcHVwIOe7hOS7tuS4iue7keWumiB0eXBl5bGe5oCnXG5cdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kcmVmcy5wb3B1cC5vcGVuKCR0aGlzLiRkYXRhLnBvcHVwVHlwZSk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnYWRkX3N1YmNsc19wYW5lbCcpIHsgLy/kuLvku47mlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cblx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0bGV0IGxpc3RfMSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0KSk7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHNjYW5Db2RlVmFsID0gJHRoaXMuJGRhdGEuc2NhbkNvZGVWYWw7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIHJhbmQgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IDU7IGkrKykgeyAvL+eUn+aIkDXkvY3pmo/mnLrmlbBcblx0XHRcdFx0XHRcdFx0XHRcdHJhbmQgKz0gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogMTApO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAoaW5mby5pbnB1dFBhcmFtdGVyWzBdLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChpbmZvLmlucHV0UGFyYW10ZXJbMF0uYXR0ciA9PSBcIm1hc3RfaW5wdXRfMzAzN1wiKSAvL+WIpOaWreaYr+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzY2FuQ29kZVZhbCA9IFwibWFzdF9pbnB1dF8zMDM3LVwiICsgcmFuZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGluZm8uYXR0clswXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoaW5mby5hdHRyWzBdLmF0dHIgPT0gXCJtYXN0X2lucHV0XzMwMzdcIikgLy/liKTmlq3mmK/kuLvmlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cblx0XHRcdFx0XHRcdFx0XHRcdFx0c2NhbkNvZGVWYWwgPSBcIm1hc3RfaW5wdXRfMzAzNy1cIiArIHJhbmQ7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsOiBzY2FuQ29kZVZhbCxcblx0XHRcdFx0XHRcdFx0XHRcdHN1YkNsYXNzQXR0cjogbGlzdF8xXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwgPT0gc2NhbkNvZGVWYWwpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0W2ldLmF0dHIgPT0gXCJTX0lEXCIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uT2JqSUQgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIF9zdWJDbGFzc0F0dHIgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgX3N1YkNsYXNzQXR0ci5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBfc3ViQ2xhc3NBdHRyW2NdLkF0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coYXR0cltqXS5OYW1lKyc9PScrcmVzdWx0W2ldLmF0dHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cltqXS5OYW1lID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHI9bGlzdF8xO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbihzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0aWYgKGRhdGEucmVzdWx0KSB7XG5cdFx0XHRcdFx0XHRsZXQgbGlzdF8xID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QpKTtcblx0XHRcdFx0XHRcdHZhciBzY2FuQ29kZVZhbCA9ICR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsO1xuXHRcdFx0XHRcdFx0aWYgKGluZm8uaW5wdXRQYXJhbXRlclswXS5hdHRyID09IFwibWFzdF9pbnB1dF8zMDM3XCIpXG5cdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsID0gXCJtYXN0X2lucHV0XzMwMzctXCIgKyBpaTtcblx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0c2NhbkNvZGVWYWw6IHNjYW5Db2RlVmFsLFxuXHRcdFx0XHRcdFx0XHRzdWJDbGFzc0F0dHI6IGxpc3RfMVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwgPT0gc2NhbkNvZGVWYWwpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChyZXN1bHRbaV0uYXR0ciA9PSBcIlNfSURcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLk9iaklEID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIF9zdWJDbGFzc0F0dHIgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyO1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCBfc3ViQ2xhc3NBdHRyLmxlbmd0aDsgYysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gX3N1YkNsYXNzQXR0cltjXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uTmFtZSA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cltqXS5WYWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOiBcIumUmeivrzdcIixjb250ZW50OiBzdWNjZXNzLm1zZyxzaG93Q2FuY2VsOiBmYWxzZSxjb25maXJtVGV4dDogXCLlj5bmtohcIn0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6IFwi6ZSZ6K+vNy4xXCIsY29udGVudDogZXguZXJyTXNnLHNob3dDYW5jZWw6IGZhbHNlLGNvbmZpcm1UZXh0OiBcIuWPlua2iFwifSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoZXZlbnRJRCkge1xuXHRcdFx0dW5pLnNob3dMb2FkaW5nKHt0aXRsZTogXCLliqDovb3kuK0uLi5cIixtYXNrOiB0cnVlfSk7XG5cdFx0XHR2YXIgJHRoaXMgPSB0aGlzO1xuXHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0dmFyIGF0dHJsaXN0ID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+36YCJ5oupJyB8fCBhci5WYWx1ZSA9PSAn4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5a2X5YW4JyB8fCBhci5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBhci5UeXBlID09ICflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0aWYgKGFyLnNlbGVjdCA9PSB0cnVlKSB7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXG5cdFx0XHRcdFx0XHRcdHZhciB2YWxTdHIgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciB2IGluIGFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHZhbFN0cilcblx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBcIjtcIjtcblx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gYXIuVmFsdWVbdl07XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHZhbFN0clxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWVcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0aWYgKGFyLm5vdGVtcHR5ID09IHRydWUgJiYgIWFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHQvLyBpZihhci5Ob3RFbXB0eT09JzEnKXtcblx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdFx0Ly8gdW5pLnNob3dUb2FzdCh7dGl0bGU6YXIuRGlzcE5hbWUrJ+S4jeiDveS4uuepuu+8gScsaWNvbjpcInN1Y2Nlc3NcIixkdXJhdGlvbjozMDAwfSk7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFyLkRpc3BOYW1lICsgJ+S4jeiDveS4uuepuu+8gScsXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR2YXIgb2JqZWN0cyA9IFtdO1xuXHRcdFx0dmFyIHN1YlBhbmVsTGlzdCA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdDtcblx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHRcdHZhciBzdWJfcmVxID0gW107XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ci5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBhdHRyID0gc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0cltpXS5BdHRyO1xuXHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+36YCJ5oupJyB8fCBhci5WYWx1ZSA9PSAn4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeaVtOaVsCcpIHtcblx0XHRcdFx0XHRcdFx0aWYgKGFyLnNlbGVjdCA9PSB0cnVlKSB7IC8v5Yik5pat5LiL5ouJ5piv5ZCm5aSa6YCJXG5cdFx0XHRcdFx0XHRcdFx0dmFyIHZhbFN0ciA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgdiBpbiBhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHZhbFN0cilcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyICs9IFwiO1wiO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyICs9IGFyLlZhbHVlW3ZdO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiB2YWxTdHJcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWVcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdFx0aWYgKGFyLm5vdGVtcHR5ID09IHRydWUgJiYgIWFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdC8vIGlmKGFyLk5vdEVtcHR5PT0nMScpe1xuXHRcdFx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0XHRcdFx0Ly8gdW5pLnNob3dUb2FzdCh7dGl0bGU6YXIuRGlzcE5hbWUrJ+S4jeiDveS4uuepuu+8gScsaWNvbjpcInN1Y2Nlc3NcIixkdXJhdGlvbjozMDAwfSk7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFyLkRpc3BOYW1lICsgJ+S4jeiDveS4uuepuu+8gScsXG5cdFx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0b2JqZWN0cy5wdXNoKHtcblx0XHRcdFx0XHRvYmpfaWQ6IHN1YlBhbmVsTGlzdFtzXS5zY2FuQ29kZVZhbCxcblx0XHRcdFx0XHRvYmpfYXR0cnM6IHN1Yl9yZXFcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0XHR2YXIgZGF0YUpzb24gPSB7XG5cdFx0XHRcdG1hc3Rlcl9jbHM6IHtcblx0XHRcdFx0XHRjbHNfbmFtZTogJ01CT1gnLCAvLyR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuTmFtZSxcblx0XHRcdFx0XHRvYmpfYXR0cnM6IHJlcVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRpbnB1dF8zMDM3OiAkdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCwgLy/miavnoIHlhoXlrrlcblx0XHRcdFx0b3BfdHlwZTogJHRoaXMuJGRhdGEucGFyYW0uT3BlcmF0aW9uVHlwZSwgLy/kvZzkuJrnsbvlnovlrprkuYlcblx0XHRcdFx0c3ViX2Nsczoge1xuXHRcdFx0XHRcdGNsc19uYW1lOiAnTUJPWCcsIC8vJHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5OYW1lLFxuXHRcdFx0XHRcdG9iamVjdHM6IG9iamVjdHNcblx0XHRcdFx0fVxuXHRcdFx0fTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGFKc29uKSk7XG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdGVkdHlwZTogXCI3XCIsXG5cdFx0XHRcdGV2ZW50aWQ6IGV2ZW50SUQsXG5cdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdGNsc2lkOiAnTUJPWCcsXG5cdFx0XHRcdG9iamlkOiAnJyxcblx0XHRcdFx0YXR0cjogSlNPTi5zdHJpbmdpZnkoW10pLFxuXHRcdFx0XHRleHRpbmZvOiBKU09OLnN0cmluZ2lmeShbXSksXG5cdFx0XHRcdGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSgkdGhpcy4kZGF0YS5nbG9iYWxfYXR0ciksXG5cdFx0XHRcdGRhdGFKc29uOiBKU09OLnN0cmluZ2lmeShkYXRhSnNvbilcblx0XHRcdH1cblx0XHRcdC8vIGNvbnNvbGUubG9nKEpTT04uc3RyaW5naWZ5KGRhdGFJbmZvKSk7XG5cdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcblx0XHRcdFx0XHRpZiAoZXZlbnRJRCAhPSAkdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRClcblx0XHRcdFx0XHRcdCR0aGlzLnNjYW5fT0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQpO1xuXHRcdFx0XHRcdGVsc2Uge1xuXHRcdFx0XHRcdFx0Ly/liLfmlrBcblx0XHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcblx0XHRcdFx0XHRcdFx0dXJsOiAnLi4vbW9kYWwvbXNfY2xhc3NBdHRyP3BhcmFtPScgKyBKU09OLnN0cmluZ2lmeSgkdGhpcy4kZGF0YS5wYXJhbSkgK1xuXHRcdFx0XHRcdFx0XHRcdFwiJnRpdGxlbmFtZT1cIiArICR0aGlzLiRkYXRhLnRpdGxlXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor684XCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLplJnor684LjFcIixcblx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXG5cblx0fVxufVxuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///90\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 _pickerAddress = _interopRequireDefault(__webpack_require__(/*! ../../js/pickerAddress/pickerAddress.vue */ 80));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\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 components: {\n pickerAddress: _pickerAddress.default\n },\n data: function data() {\n return {\n title: '鏂板',\n param: {},\n classAttrList: [],\n classGridStyle: [],\n edit_inital_event: \"\",\n //寮圭獥鍒濆鍖栦簨浠禝D\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 };\n },\n onLoad: function onLoad(options) {\n // console.log(options);\n uni.setNavigationBarTitle({\n title: options.titlename\n }); //璁剧疆椤堕儴鏍囬 \n var param = JSON.parse(options.param);\n this.$data.title = param.Add_BtnName ? param.Add_BtnName : options.titlename; //璁剧疆鎸夐挳鏂囧瓧\n __f__(\"log\", param, \" at pages/modal/ms_classAttr.vue:1030\");\n if (!param.Master_Cls.View_Style) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"璇ュ姛鑳界偣鏈厤缃晫闈㈢獥鍙o紝璇烽噸鏂伴厤缃紒\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n if (!param.Master_Cls.View_Style.Name) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"璇ュ姛鑳界偣鏈厤缃獥鍙f牱寮忥紝璇烽噸鏂伴厤缃紒\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n this.$data.param = param;\n // var edit_dlg = {\n // Model: param.EditDlgMode,\n // Name: param.Master_Cls.View_Style.Name\n // }\n //涓绘暟鎹被鑾峰彇\n var dataInfo = {\n class_id: param.Master_Cls.ID\n };\n var $this = this;\n $this.$store.state.thisareaFuncID = param.Master_Cls.ID;\n // console.log($this.$store.getters.getclassAttrList);\n if ($this.$store.getters.getclassAttrList) {\n $this.$data.classAttrList = $this.$store.getters.getclassAttrList.data;\n $this.classGridStyleInfo(param.Master_Cls.ID, $this.$data.param.Master_Cls.View_Style.Name, 'Mast');\n } else {\n $this.$store.dispatch('classAttrList', dataInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n $this.$data.classAttrList = success.data;\n $this.classGridStyleInfo(param.Master_Cls.ID, $this.$data.param.Master_Cls.View_Style.Name, 'Mast');\n } else {\n uni.showModal({\n title: \"閿欒1\",\n content: success.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 }\n\n //浠庢暟鎹被鑾峰彇\n var subdataInfo = {\n class_id: param.Sub_Cls.ID\n };\n $this.$store.state.thisareaFuncSubID = param.Sub_Cls.ID;\n if ($this.$store.getters.getSubClassAttrList) {\n $this.$data.subClassAttrList = $this.$store.getters.getSubClassAttrList.data;\n $this.classGridStyleInfo(param.Sub_Cls.ID, $this.$data.param.Sub_Cls.View_Style.Name, 'Sub');\n } else {\n $this.$store.dispatch('subClassAttrList', subdataInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n $this.$data.subClassAttrList = success.data;\n $this.classGridStyleInfo(param.Sub_Cls.ID, $this.$data.param.Sub_Cls.View_Style.Name, 'Sub');\n } else {\n uni.showModal({\n title: \"閿欒1_1\",\n content: success.msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"閿欒1_1.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n }\n },\n methods: {\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 mast_attr = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷�) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + \"鏈�鎷╂暟鎹紒\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_attr.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) mast_attr.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else mast_attr.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n }\n }\n var objects = [];\n var subPanelList = $this.$data.subPanelList;\n for (var s = 0; s < subPanelList.length; s++) {\n var sub_req = [];\n for (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n var attr = subPanelList[s].subClassAttr[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') sub_req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) sub_req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n if (ar.select == true) {\n //鍒ゆ柇涓嬫媺鏄惁澶氶�\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr) valStr += \";\";\n valStr += ar.Value[v];\n }\n sub_req.push({\n attr: ar.Name,\n value: valStr\n });\n } else sub_req.push({\n attr: ar.Name,\n value: ar.Value\n });\n } else sub_req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n if (ar.notempty == true && !ar.Value) {\n // if(ar.NotEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'涓嶈兘涓虹┖锛�,icon:\"success\",duration:3000});\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + '涓嶈兘涓虹┖锛�,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n }\n }\n objects.push({\n obj_id: subPanelList[s].scanCodeVal,\n obj_attrs: sub_req\n });\n }\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,//褰撳墠鏁版嵁绫籭d\n },\n\n master_cls: {\n cls_name: 'MBOX',\n //$this.$data.param.Master_Cls.Name,\n obj_attrs: req\n },\n sub_cls: {\n cls_name: 'MBOX',\n //$this.$data.param.Sub_Cls.Name,\n objects: objects\n }\n };\n var req = [];\n // var subPanelList = $this.$data.subPanelList;\n // for (var s = 0; s < subPanelList.length; s++) {\n // \tvar json = {};\n // \tfor (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n // \t\tvar attr = subPanelList[s].subClassAttr[i].Attr;\n // \t\tfor (var j = 0; j < attr.length; j++) {\n // \t\t\tvar ar = attr[j];\n // \t\t\tjson[ar.Name] = ar.Value;\n // \t\t}\n // \t}\n // \treq.push(json);\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/ms_classAttr.vue:1289\");\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 mast_attr = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷�) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + \"鏈�鎷╂暟鎹紒\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_attr.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) mast_attr.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else mast_attr.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\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 };\n // console.log(info);\n this.scan_DataObjRunCustomEvent(info, \"\");\n this.$refs.popup.close();\n },\n cancel: function cancel(e) {\n uni.navigateBack({\n delta: 1 //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\n });\n },\n panel_del: function panel_del(index) {\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 clsId: this.$data.param.Sub_Cls.ID,\n objId: this.$data.subPanelList[index].ObjID\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:1391\");\n // return;\n uni.showLoading({\n title: \"鍔犺浇涓�..\"\n });\n this.$store.dispatch('DelObj', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:1397\");\n uni.hideLoading();\n if (success.code == '00000') {\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/ms_classAttr.vue:1416\");\n uni.hideLoading();\n uni.showModal({\n title: \"鎻愮ず9.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n }\n },\n classGridStyleInfo: function classGridStyleInfo(clsid, styleName, clsType) {\n var _this = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee() {\n var $this, gridstyleInfo;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n $this = _this;\n gridstyleInfo = {\n class_id: clsid,\n name: styleName,\n type: '2'\n }; // console.log($this.$store.getters.getclassGridStyleInfo);\n //鑾峰彇涓绘暟鎹被鐣岄潰鏍峰紡\n if (clsType == 'Mast') {\n $this.$store.state.thisEditName = styleName;\n if ($this.$store.getters.getclassGridStyleInfo) {\n $this.$data.classGridStyle = $this.$store.getters.getclassGridStyleInfo.data;\n $this.class_attr_init();\n } else {\n //console.log(gridstyleInfo);\n $this.$store.dispatch('classGridStyleInfo', gridstyleInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n success.data.StyleDef = JSON.parse(success.data.StyleDef);\n $this.$data.classGridStyle = success.data;\n $this.class_attr_init();\n } else {\n uni.showModal({\n title: \"閿欒1.2\",\n content: success.msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:1459\");\n uni.showModal({\n title: \"閿欒1.3\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n }\n } else if (clsType == 'Sub') {\n //鑾峰彇浠庢暟鎹被鐣岄潰鏍峰紡\n $this.$store.state.thisEditSubName = styleName;\n if ($this.$store.getters.getSubClassGridStyleInfo) {\n $this.$data.subClassGridStyle = $this.$store.getters.getSubClassGridStyleInfo.data;\n $this.subClass_attr_init();\n } else {\n //console.log(gridstyleInfo);\n $this.$store.dispatch('subClassGridStyleInfo', gridstyleInfo).then(function (success) {\n // console.log(success);\n if (success.code == '00000') {\n success.data.StyleDef = JSON.parse(success.data.StyleDef);\n $this.$data.subClassGridStyle = success.data;\n $this.subClass_attr_init();\n } else {\n uni.showModal({\n title: \"閿欒1.2\",\n content: success.msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:1491\");\n uni.showModal({\n title: \"閿欒1.3\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n }\n }\n case 3:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }))();\n },\n ontap: function ontap(e) {\n var _this2 = this;\n //鎵爜鍔熻兘\n //console.log(e.target)\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n var isVal = _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n // if(!isVal){\n // \tthis.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=result.decodedata;\n // \tvar isVald =this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n // \treturn;\n // }\n //涓绘暟鎹被鎵爜鏌ヨ鏁版嵁\n if (isVal != result.decodedata) {\n _this2.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n uni.hideKeyboard();\n //瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈琝n var eventid = _this2.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n var req = [];\n var attrlist = _this2.$data.classAttrList; //涓绘暟鎹被灞炴�\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\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 _this2.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n });\n },\n subontap: function subontap(e) {\n var _this3 = this;\n //鎵爜鍔熻兘\n //console.log(e.target)\n getApp().onScan(function (result) {\n //console.log(result.decodedata);\n var isVal = _this3.$data.subClassAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n //涓绘暟鎹被鎵爜鏌ヨ鏁版嵁\n if (isVal != result.decodedata) {\n _this3.$data.subClassAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = result.decodedata;\n uni.hideKeyboard();\n //瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈琝n var eventid = _this3.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n var req = [];\n var attrlist = _this3.$data.subClassAttrList; //涓绘暟鎹被灞炴�\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\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 _this3.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n });\n },\n scan_ontap: function scan_ontap(e) {\n var _this4 = this;\n //鎵爜鍖烘壂鐮佸姛鑳絓n //console.log(e.target)\n getApp().onScan(function (result) {\n __f__(\"log\", result.decodedata, \" at pages/modal/ms_classAttr.vue:1632\");\n var isflag = true;\n for (var i in _this4.$data.subPanelList) {\n if (_this4.$data.subPanelList[i].scanCodeVal == result.decodedata) isflag = false;\n }\n //瀛愭暟鎹被鎵爜鏌ヨ鏁版嵁\n if (isflag) {\n uni.hideKeyboard();\n _this4.$data.scanCodeVal = result.decodedata;\n var eventid = _this4.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n var mast_req = [];\n //涓绘暟鎹被灞炴�\n var classattrlist = _this4.$data.classAttrList;\n for (var i = 0; i < classattrlist.length; i++) {\n var attr = classattrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) mast_req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else mast_req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n }\n }\n var req = [];\n //瀛愭暟鎹被灞炴�\n var attrlist = _this4.$data.subClassAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\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: mast_req,\n inputParamter: [{\n attr: 'input_3037',\n value: _this4.$data.scanCodeVal\n }]\n };\n _this4.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 var mast_req = [];\n //涓绘暟鎹被灞炴�\n var classattrlist = this.$data.classAttrList;\n for (var i = 0; i < classattrlist.length; i++) {\n var attr = classattrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') mast_req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) mast_req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else mast_req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n }\n }\n var req = [];\n //瀛愭暟鎹被灞炴�\n var attrlist = this.$data.subClassAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\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: mast_req,\n inputParamter: [{\n attr: 'input_3037',\n value: this.$data.scanCodeVal\n }]\n };\n this.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n }\n },\n onarrow: function onarrow(index, open) {\n // console.log(index+'--'+open);\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Open;\n if (!data_attr) {\n this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = open == true ? false : true;\n return;\n }\n this.$data.classAttrList[e.target.dataset['iiindex']].subClassAttr[index].Open = open == true ? false : true;\n },\n ondateTime: function ondateTime(e) {\n //console.log(e.target)\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value;\n if (!data_attr) {\n this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n return;\n }\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n },\n onchange: function onchange(e) {\n __f__(\"log\", e.target, \" at pages/modal/ms_classAttr.vue:1830\");\n var value = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:1834\");\n if (value.Name != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n __f__(\"log\", this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/ms_classAttr.vue:1838\");\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n val: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n val: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n val: ar.Value ? ar.Value : ''\n });\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 onchange2: function onchange2(item, value, delvalue) {\n // console.log(item);\n // console.log(value);\n // console.log(delvalue);\n if (item.length == 0) {\n //涓虹┖鏃讹紝娓呯┖灞炴�value\n var index,\n iindex,\n dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n if (delvalue[0].attr == this.$data.classAttrList[i].Attr[j].Name) {\n this.$data.classAttrList[i].Attr[j].Value = \"\";\n }\n }\n }\n }\n for (var v in item) {\n var index,\n iindex,\n dindex = 0;\n for (var i in this.$data.classAttrList) {\n for (var j in this.$data.classAttrList[i].Attr) {\n if (item[v].attr == this.$data.classAttrList[i].Attr[j].Name) {\n index = i;\n iindex = j;\n }\n }\n }\n var itemvalue = item[v];\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:1913\");\n if (itemvalue.Name != data_attr.Value) {\n this.$data.classAttrList[index].Attr[iindex].Value = value;\n __f__(\"log\", this.$data.classAttrList[index].Attr[iindex].Value, \" at pages/modal/ms_classAttr.vue:1916\");\n var eventid = this.$data.classAttrList[index].Attr[iindex].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n val: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n val: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') req.push({\n attr: ar.Name,\n val: itemvalue.Name\n });else req.push({\n attr: ar.Name,\n val: ar.Value ? ar.Value : ''\n });\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 },\n sub_onchange: function sub_onchange(e) {\n __f__(\"log\", e.target, \" at pages/modal/ms_classAttr.vue:1969\");\n var value = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].dictitem[e.target.value];\n var data_attr = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:1974\");\n if (value.Name != data_attr.Value) {\n this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = value.Name;\n __f__(\"log\", this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value, \" at pages/modal/ms_classAttr.vue:1978\");\n var eventid = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n val: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n val: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n val: ar.Value ? ar.Value : ''\n });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req\n };\n this.DataObjRunCustomEvent(info);\n }\n }\n },\n sub_onchange2: function sub_onchange2(item, value, delvalue) {\n // console.log(item);\n // console.log(value);\n // console.log(delvalue);\n var subClassAttr = this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr;\n if (item.length == 0) {\n //涓虹┖鏃讹紝娓呯┖灞炴�value\n var index,\n iindex,\n dindex = 0;\n for (var i in subClassAttr) {\n for (var j in subClassAttr[i].Attr) {\n for (var d in subClassAttr[i].Attr[j].dictitem) {\n if (delvalue[0].Name == subClassAttr[i].Attr[j].dictitem[d].Name) {\n subClassAttr[i].Attr[j].Value = \"\";\n }\n }\n }\n }\n }\n for (var v in item) {\n var index,\n iindex,\n dindex = 0;\n for (var i in subClassAttr) {\n for (var j in subClassAttr[i].Attr) {\n for (var d in subClassAttr[i].Attr[j].dictitem) {\n if (item[v].Name == subClassAttr[i].Attr[j].dictitem[d].Name) {\n index = i;\n iindex = j;\n dindex = d;\n }\n }\n }\n }\n var itemvalue = item[v];\n var data_attr = subClassAttr[index].Attr[iindex];\n __f__(\"log\", data_attr, \" at pages/modal/ms_classAttr.vue:2059\");\n if (itemvalue.Name != data_attr.Value) {\n subClassAttr[index].Attr[iindex].Value = value;\n __f__(\"log\", subClassAttr[index].Attr[iindex].Value, \" at pages/modal/ms_classAttr.vue:2062\");\n var eventid = subClassAttr[index].Attr[iindex].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = subClassAttr;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n val: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n val: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') req.push({\n attr: ar.Name,\n val: itemvalue.Name\n });else req.push({\n attr: ar.Name,\n val: ar.Value ? ar.Value : ''\n });\n }\n }\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req\n };\n this.DataObjRunCustomEvent(info);\n }\n }\n }\n },\n onevent: function onevent(e) {\n // console.log(e.target);\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n if (!data_attr) {\n this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n return;\n }\n // console.log(data_attr);\n if (e.target.value != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.target.value;\n // var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n //瀛愭暟鎹被鎵爜鍖轰簨浠惰剼鏈琝n var eventid = this.$data.param.Scan_Code.Input_Change_Event.ID;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList; //涓绘暟鎹被灞炴�\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\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: e.target.value\n }]\n };\n this.scan_DataObjRunCustomEvent(info, \"\");\n }\n }\n },\n oncheck: function oncheck(e) {\n // console.log(e.target);\n var ischecked = e.target.dataset.ischeck ? false : true;\n var data_attr = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']];\n if (!data_attr) {\n this.$data.subPanelList[e.target.dataset['iiindex']].subClassAttr[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n return;\n }\n // console.log(data_attr);\n if (ischecked != data_attr.Value) {\n this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = ischecked;\n var eventid = this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].action;\n if (eventid) {\n // self.event_no_sub = 1;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n val: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n val: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n val: ar.Value ? ar.Value : ''\n });\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 inputValListIsDel: function inputValListIsDel(index) {\n // console.log(index);\n this.$data.inputValList.splice(index, 1); //鍒犻櫎tabPagejson鐨勫唴瀹筡n // console.log(this.$data.inputValList);\n },\n addresschange: function addresschange(e) {\n // console.log(e.target);\n __f__(\"log\", e.data.join(';'), \" at pages/modal/ms_classAttr.vue:2243\");\n this.$data.subClassAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value = e.data.join(';');\n },\n classAttr_extButton: function classAttr_extButton(index, iindex) {\n var $this = this;\n var before_click_button = $this.$data.classAttrList[index].Attr[iindex].before_click_button;\n var button_callback = $this.$data.classAttrList[index].Attr[iindex].button_callback;\n if (!before_click_button) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"before_click_button-event_id涓虹┖锛乗",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n if (!button_callback) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"button_callback-event_id涓虹┖锛乗",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n var data_attr = this.$data.classAttrList[index].Attr[iindex];\n this.DataObjRunCustomEvent_Return(before_click_button, data_attr, button_callback, index, iindex);\n },\n classAttr_AddPer: function classAttr_AddPer(index, iindex) {\n var param = {\n index: index,\n iindex: iindex\n };\n var $this = this;\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/ms_classAttr.vue:2283\");\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].Login + ';' + data[0].Name;\n var eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"4\",\n projectid: \"\",\n rclsid: \"\",\n robjid: \"\",\n userlogin: data[0].Login,\n clsid: $this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: []\n };\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\n }\n }\n });\n },\n classAttr_AddRef: function classAttr_AddRef(e) {\n __f__(\"log\", e.target, \" at pages/modal/ms_classAttr.vue:2313\");\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"姝ゅ姛鑳借繕鏈疄鐜帮紒\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n // var value=this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].RelCls[e.target.value];\n // this.$data.classAttrList[e.target.dataset['index']].Attr[e.target.dataset['iindex']].Value=value;\n },\n classAttr_AddPrj: function classAttr_AddPrj(index, iindex) {\n var param = {\n index: index,\n iindex: iindex\n };\n var $this = this;\n uni.navigateTo({\n url: '../selPrj/index?relation=-1¶m=' + JSON.stringify(param),\n events: {\n AddPer: function AddPer(data, param) {\n // console.log(param);\n // console.log(data);\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 eventid = $this.$data.classAttrList[param.index].Attr[param.iindex].action;\n if (eventid) {\n eventid = eventid.trim();\n if (eventid) {\n var info = {\n eventid: eventid,\n edtype: \"2\",\n projectid: data[0].ID,\n rclsid: \"\",\n robjid: \"\",\n userlogin: \"\",\n clsid: $this.$data.param.Master_Cls.ID,\n objid: \"\",\n attr: []\n };\n\n // var data_attr = $this.$data.classAttrList[param.index].Attr[param.iindex];\n $this.DataObjRunCustomEvent(info);\n }\n }\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 }); //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\n },\n trigger: function trigger() {\n if (this.$data.param.Before_Trigger_Event)\n //鍒ゆ柇鍔熻兘鐐瑰弬鏁版槸鍚︽湁瑙﹀彂鍓嶈剼鏈琝n this.scan_TriggerDataObjRunCustomEvent(this.$data.param.Before_Trigger_Event.ID);else if (this.$data.param.After_Trigger_Event)\n //鍒ゆ柇鍔熻兘鐐瑰弬鏁版槸鍚︽湁瑙﹀彂鍚庤剼鏈琝n this.scan_TriggerDataObjRunCustomEvent(this.$data.param.After_Trigger_Event.ID);\n elsess;\n uni.navigateBack({\n delta: 1\n }); //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\n },\n add: function add() {\n var _this5 = this;\n uni.showLoading({\n title: \"鍔犺浇涓�..\",\n mask: true\n });\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n name: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n name: ar.Name,\n value: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n if (ar.select == true) {\n //鍒ゆ柇涓嬫媺鏄惁澶氶�\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr) valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({\n name: ar.Name,\n value: valStr\n });\n } else req.push({\n name: ar.Name,\n value: ar.Value\n });\n } else req.push({\n name: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n if (ar.notempty == true && !ar.Value) {\n // if(ar.NotEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'涓嶈兘涓虹┖锛�,icon:\"success\",duration:3000});\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + '涓嶈兘涓虹┖锛�,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n }\n }\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\n }\n };\n var dataInfo = {\n class_id: this.$data.param.Master_Cls.ID,\n data_obj_id: '',\n masterclsid: '',\n req: JSON.stringify(req),\n upfile: JSON.stringify([]),\n post_data: JSON.stringify({}),\n compose: JSON.stringify([]),\n refdatastore: JSON.stringify([]),\n extinfo: JSON.stringify(enviroment),\n not_trigger_sys_event: ''\n };\n\n // return\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2468\");\n this.$store.dispatch('addclassattr', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2470\");\n uni.hideLoading();\n if (success.code == '00000') {\n var action = JSON.parse(success.data.Action);\n if (action.ret == '0') {\n if (action.result_type == '0') {\n uni.showToast({\n title: action.result,\n icon: \"success\",\n duration: 3000\n });\n }\n // \"{\"ret\":0, \"result_type\":0, \"result\":\"鍒涘缓鎴愬姛123123123\",\"info\":\"\"}\"\n }\n //鍒锋柊\n uni.redirectTo({\n url: '../modal/ms_classAttr?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.msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n __f__(\"log\", ex, \" at pages/modal/ms_classAttr.vue:2499\");\n uni.hideLoading();\n uni.showModal({\n title: \"鎻愮ず\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n },\n class_attr_init: function class_attr_init() {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n var newattrlist = [];\n if (this.$data.classAttrList.length > 0) {\n for (var i = 0; i < attrlist.length; i++) {\n var open = attrlist[i].open;\n var name = attrlist[i].attrgroup_name;\n var attrs = attrlist[i].attrs;\n for (var s = 0; s < this.$data.classAttrList.length; s++) {\n var clsattr = this.$data.classAttrList[s];\n if (name == clsattr.Name) {\n var attr = [];\n for (var j = 0; j < attrs.length; j++) {\n for (var l = 0; l < clsattr.Attr.length; l++) {\n var ca = clsattr.Attr[l];\n if (attrs[j].attr == ca.Name) {\n ca.action = attrs[j].action;\n ca.edit = attrs[j].edit;\n ca.notempty = attrs[j].notempty;\n ca.ext_button = attrs[j].ext_button;\n ca.button_img = attrs[j].button_img;\n ca.button_tooltip = attrs[j].button_tooltip;\n ca.before_click_button = attrs[j].before_click_button;\n ca.button_callback = attrs[j].button_callback;\n ca.hidden = attrs[j].hidden;\n ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n ca.Value = \"\";\n if (ca.dictitem) {\n if (ca.select == true) ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n else ca.Value = '璇烽�鎷�; //ca.dictitem[0].CN_S_NAME;\n var dictitemlist = [];\n for (var d = 0; d < ca.dictitem.length; d++) {\n ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].attr = ca.Name;\n if (ca.dictitem[d].CN_C_IS_DEFAULT == '1') ca.Value = ca.dictitem[d].CN_S_NAME;\n }\n }\n if (ca.Type == '鏃ユ湡' || ca.Type == '鏃堕棿') {\n var nowDate = new Date();\n var date = {\n year: nowDate.getFullYear(),\n month: nowDate.getMonth() + 1,\n day: nowDate.getDate()\n };\n ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n }\n if (ca.Type == '寮曠敤瀵硅薄(澶氫釜)') {\n var relClsList = [];\n var attr_rescls = ca.RelCls.split(',');\n for (var ii in attr_rescls) {\n var rescls = attr_rescls[ii].split('|');\n relClsList.push({\n id: rescls[0],\n name: rescls[1]\n });\n }\n ca.RelClsList = relClsList;\n ca.Value = '璇�;\n }\n if (ca.Type == '鐪佸競鍖�) ca.Value = '璇烽�鎷�;\n if (ca.Type == '甯冨皵鍊�) ca.Value = false;\n attr.push(ca);\n }\n }\n }\n newattrlist.push({\n BkColor: clsattr.BkColor,\n HasAce: clsattr.HasAce,\n ImgFontStyle: clsattr.ImgFontStyle,\n Name: clsattr.Name,\n Order: clsattr.Order,\n Open: open,\n Attr: attr,\n control_style: this.$data.classGridStyle.StyleDef.control_style,\n title_p_wdith: this.$data.classGridStyle.StyleDef.title_p_wdith,\n Font: this.$data.classGridStyle.StyleDef.Font ? this.$data.classGridStyle.StyleDef.Font : {},\n Bk_Color: this.$data.classGridStyle.StyleDef.Bk_Color ? this.$data.classGridStyle.StyleDef.Bk_Color : '#FFFFFF',\n Text_Color: this.$data.classGridStyle.StyleDef.Text_Color ? this.$data.classGridStyle.StyleDef.Text_Color : '#000000'\n });\n }\n }\n }\n if (newattrlist.length > 0) {\n this.$data.classAttrList = newattrlist;\n }\n var req = [];\n if (this.$data.classGridStyle.StyleDef) {\n if (this.$data.classGridStyle.StyleDef.show_style.length > 0) {\n var attrlist = this.$data.classGridStyle.StyleDef.show_style;\n // $el.find('.attr_field').prop('readonly', true);\n // $el.find('.attr_field').prop('disabled', true);\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].attrs;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n req.push({\n attr: ar.attr,\n value: ar.value ? ar.value : ''\n });\n }\n }\n }\n }\n var eventlist = this.$data.classGridStyle.StyleDef.event;\n if (eventlist) {\n if (eventlist.length > 0) {\n for (var i = 0; i < eventlist.length; i++) {\n if (eventlist[i].event_id == 'before_ok') {\n this.$data.edit_ok_event = eventlist[i];\n } else if (eventlist[i].event_id == 'initial') {\n this.$data.edit_inital_event = eventlist[i];\n } else if (eventlist[i].event_id == 'before_select_compose') {\n this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n }\n }\n }\n }\n // console.log(req);\n if (this.$data.edit_inital_event) {\n var eventid = this.$data.edit_inital_event.scrip_id;\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.ini_DataObjRunCustomEvent(info);\n }\n __f__(\"log\", this.$data.classGridStyle, \" at pages/modal/ms_classAttr.vue:2655\");\n __f__(\"log\", this.$data.classAttrList, \" at pages/modal/ms_classAttr.vue:2656\");\n } else {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"鏈壘鍒板彲鏄剧ず鐨勭殑灞炴�\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n },\n subClass_attr_init: function subClass_attr_init() {\n var attrlist = this.$data.subClassGridStyle.StyleDef.show_style;\n var newattrlist = [];\n if (this.$data.subClassAttrList.length > 0) {\n for (var i = 0; i < attrlist.length; i++) {\n var open = attrlist[i].open;\n var name = attrlist[i].attrgroup_name;\n var attrs = attrlist[i].attrs;\n for (var s = 0; s < this.$data.subClassAttrList.length; s++) {\n var clsattr = this.$data.subClassAttrList[s];\n if (name == clsattr.Name) {\n var attr = [];\n for (var j = 0; j < attrs.length; j++) {\n for (var l = 0; l < clsattr.Attr.length; l++) {\n var ca = clsattr.Attr[l];\n if (attrs[j].attr == ca.Name) {\n ca.action = attrs[j].action;\n ca.edit = attrs[j].edit;\n ca.notempty = attrs[j].notempty;\n ca.ext_button = attrs[j].ext_button;\n ca.button_img = attrs[j].button_img;\n ca.button_tooltip = attrs[j].button_tooltip;\n ca.before_click_button = attrs[j].before_click_button;\n ca.button_callback = attrs[j].button_callback;\n ca.hidden = attrs[j].hidden;\n ca.select = attrs[j].select == undefined ? false : attrs[j].select;\n ca.Value = \"\";\n if (ca.dictitem) {\n if (ca.select == true) ca.Value = []; //ca.dictitem[0].CN_S_NAME;\n else ca.Value = '璇烽�鎷�; //ca.dictitem[0].CN_S_NAME;\n var dictitemlist = [];\n for (var d = 0; d < ca.dictitem.length; d++) {\n ca.dictitem[d].label = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].value = ca.dictitem[d].CN_S_NAME;\n ca.dictitem[d].attr = ca.Name;\n if (ca.dictitem[d].CN_C_IS_DEFAULT == '1') ca.Value = ca.dictitem[d].CN_S_NAME;\n }\n }\n if (ca.Type == '鏃ユ湡' || ca.Type == '鏃堕棿') {\n var nowDate = new Date();\n var date = {\n year: nowDate.getFullYear(),\n month: nowDate.getMonth() + 1,\n day: nowDate.getDate()\n };\n ca.Value = date.year + '-' + (date.month >= 10 ? date.month : '0' + date.month) + '-' + (date.day >= 10 ? date.day : '0' + date.day);\n }\n if (ca.Type == '寮曠敤瀵硅薄(澶氫釜)') {\n var relClsList = [];\n var attr_rescls = ca.RelCls.split(',');\n for (var ii in attr_rescls) {\n var rescls = attr_rescls[ii].split('|');\n relClsList.push({\n id: rescls[0],\n name: rescls[1]\n });\n }\n ca.RelClsList = relClsList;\n ca.Value = '璇�;\n }\n if (ca.Type == '鐪佸競鍖�) ca.Value = '璇烽�鎷�;\n if (ca.Type == '甯冨皵鍊�) ca.Value = false;\n attr.push(ca);\n }\n }\n }\n newattrlist.push({\n BkColor: clsattr.BkColor,\n HasAce: clsattr.HasAce,\n ImgFontStyle: clsattr.ImgFontStyle,\n Name: clsattr.Name,\n Order: clsattr.Order,\n Open: open,\n Attr: attr,\n control_style: this.$data.subClassGridStyle.StyleDef.control_style,\n title_p_wdith: this.$data.subClassGridStyle.StyleDef.title_p_wdith,\n Font: this.$data.subClassGridStyle.StyleDef.Font ? this.$data.subClassGridStyle.StyleDef.Font : {},\n Bk_Color: this.$data.subClassGridStyle.StyleDef.Bk_Color ? this.$data.subClassGridStyle.StyleDef.Bk_Color : '#FFFFFF',\n Text_Color: this.$data.subClassGridStyle.StyleDef.Text_Color ? this.$data.subClassGridStyle.StyleDef.Text_Color : '#000000'\n });\n }\n }\n }\n if (newattrlist.length > 0) {\n this.$data.subClassAttrList = newattrlist;\n }\n var req = [];\n if (this.$data.subClassGridStyle.StyleDef) {\n if (this.$data.subClassGridStyle.StyleDef.show_style.length > 0) {\n var attrlist = this.$data.subClassGridStyle.StyleDef.show_style;\n // $el.find('.attr_field').prop('readonly', true);\n // $el.find('.attr_field').prop('disabled', true);\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].attrs;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n req.push({\n attr: ar.attr,\n value: ar.value ? ar.value : ''\n });\n }\n }\n }\n }\n var eventlist = this.$data.subClassGridStyle.StyleDef.event;\n if (eventlist) {\n if (eventlist.length > 0) {\n for (var i = 0; i < eventlist.length; i++) {\n if (eventlist[i].event_id == 'before_ok') {\n this.$data.edit_ok_event = eventlist[i];\n } else if (eventlist[i].event_id == 'initial') {\n this.$data.edit_inital_event = eventlist[i];\n } else if (eventlist[i].event_id == 'before_select_compose') {\n this.$data.edit_select_compose_event = eventlist[i].scrip_id;\n this.$data.edit_compose_cls_id = eventlist[i].compose_cls_id;\n }\n }\n }\n }\n // console.log(req);\n if (this.$data.edit_inital_event) {\n var eventid = this.$data.edit_inital_event.scrip_id;\n var info = {\n eventid: eventid,\n edtype: \"0\",\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Sub_Cls.ID,\n objid: \"\",\n attr: req\n };\n this.scan_ini_DataObjRunCustomEvent(info);\n }\n __f__(\"log\", this.$data.subClassGridStyle, \" at pages/modal/ms_classAttr.vue:2813\");\n __f__(\"log\", this.$data.subClassAttrList, \" at pages/modal/ms_classAttr.vue:2814\");\n } else {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"鏈壘鍒板彲鏄剧ず鐨勭殑灞炴�\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n },\n ini_DataObjRunCustomEvent: function ini_DataObjRunCustomEvent(info) {\n var _this6 = this;\n var param = {\n EditStyle: this.$data.param.Master_Cls.View_Style.Name,\n ViewStyle: this.$data.param.Master_Cls.View_Style.Name,\n NotTriggerSysEvent: 0,\n 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鐨刢ls_id\n //obj_id: '' // button=bottom鏃�master鐨刼bj_id\n }\n }\n };\n\n var inputparameter = '';\n var global_attr = '';\n var dataInfo = {\n edtype: info.edtype,\n eventid: info.eventid,\n projectid: info.projectid,\n rclsid: info.rclsid,\n robjid: info.robjid,\n userlogin: info.userlogin,\n clsid: info.clsid,\n objid: info.objid,\n attr: JSON.stringify(info.attr),\n extinfo: JSON.stringify(param),\n inputparameter: inputparameter,\n global_attr: global_attr\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2858\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2860\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n for (var j = 0; j < actionlist.length; j++) {\n var action = actionlist[j];\n var action_type = action.action_type;\n var value = action.value;\n if (action_type == 'set_dlg_attr') {\n if (value) {\n var val = value;\n if (typeof value == 'string') {\n val = JSON.parse(value);\n }\n __f__(\"log\", val, \" at pages/modal/ms_classAttr.vue:2875\");\n for (var i = 0; i < val.length; i++) {\n for (var a = 0; a < _this6.$data.classAttrList.length; a++) {\n for (var l = 0; l < _this6.$data.classAttrList[a].Attr.length; l++) {\n var ca = _this6.$data.classAttrList[a].Attr[l];\n if (val[i].attr == ca.Name) {\n if (ca.Type == '瀛楀吀' || ca.Type == '瀛楀吀-瀛楃涓� || ca.Type == '瀛楀吀-鏁存暟') {\n var dictItemList = [];\n for (var d in val[i].choice_list) {\n var val = val[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"Name\": val,\n \"label\": val,\n \"value\": val\n });\n }\n ca.dictitem = dictItemList;\n // attr[j].dictitem = val[i].choice_list;\n } else {\n // ca.value = val[i].value;\n }\n }\n }\n }\n var length = 0;\n if (!_this6.$data.refdatastore.filter(function (s) {\n return val[i].attr == s.attr;\n }).length) {\n length = 1;\n _this6.$data.refdatastore.push(val[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this6.$data.refdatastore.length; j++) {\n if (_this6.$data.refdatastore[j].attr == val[i].attr) {\n _this6.$data.refdatastore[j].value = val[i].value;\n }\n }\n }\n }\n }\n }\n if (action_type == 'open_select_userdlg') {\n uni.showModal({\n title: \"閿欒2.2\",\n content: \"open_select_userdlg杩欎釜action_type杩樻湭澶勭悊锛乗",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"閿欒2\",\n content: success.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 },\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鐨刢ls_id\n //obj_id: '' // button=bottom鏃�master鐨刼bj_id\n }\n };\n\n enviroment.edit_dlg = {\n type: 'small',\n //灏忕獥鍙n class_id: this.$data.param.Master_Cls.ID //褰撳墠鏁版嵁绫籭d\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 //寮曠敤鎸夐挳鐨則ooltip\n };\n }\n\n var dataInfo = {\n edtype: info.edtype,\n eventid: info.eventid,\n projectid: info.projectid.replace('{', '').replace('}', ''),\n rclsid: info.rclsid,\n robjid: info.robjid,\n userlogin: info.userlogin,\n clsid: info.clsid,\n objid: info.objid,\n attr: JSON.stringify(info.attr),\n extinfo: JSON.stringify(enviroment),\n inputparameter: '',\n global_attr: JSON.stringify(this.$data.global_attr)\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:2990\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:2992\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/ms_classAttr.vue:2998\");\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.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[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 \"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 for (var c = 0; c < $this.$data.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n __f__(\"log\", attr[j].Name + '==' + result[i].attr, \" at pages/modal/ms_classAttr.vue:3031\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\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.classAttrList.length; c++) {\n var attr = $this.$data.classAttrList[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\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 } else {\n uni.showModal({\n title: \"閿欒3\",\n content: success.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 OKDataObjRunCustomEvent: function OKDataObjRunCustomEvent() {\n var _this7 = 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鐨刢ls_id\n }\n };\n\n var eventid = this.$data.edit_ok_event.scrip_id;\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value\n });\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 'value': this.$data.refdatastore[i].value\n });\n }\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 var dataInfo = {\n edtype: info.edtype,\n eventid: info.eventid,\n projectid: info.projectid,\n rclsid: info.rclsid,\n robjid: info.robjid,\n userlogin: info.userlogin,\n clsid: info.clsid,\n objid: info.objid,\n attr: JSON.stringify(info.attr),\n extinfo: JSON.stringify(enviroment),\n global_attr: JSON.stringify(this.$data.global_attr)\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3181\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3183\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var result = data.result;\n for (var i = 0; i < result.length; i++) {\n // self.class_attr_ele.find('.attr_field[data-field=\"' + result[i].attr + '\"]').val(result[i].value).data('val', result[i].value);\n var length = 0;\n if (!_this7.$data.refdatastore.filter(function (s) {\n return result[i].attr == s.attr;\n }).length) {\n length = 1;\n _this7.$data.refdatastore.push(result[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this7.$data.refdatastore.length; j++) {\n if (_this7.$data.refdatastore[j].attr == result[i].attr) {\n _this7.$data.refdatastore[j].value = result[i].value;\n }\n }\n }\n }\n _this7.add();\n } else {\n uni.showModal({\n title: \"閿欒4\",\n content: success.msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"閿欒4.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n },\n DataObjRunCustomEvent_Return: function DataObjRunCustomEvent_Return(eventid, data_attr, button_callback, index, iindex) {\n var _this8 = 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鐨刢ls_id\n //obj_id: '' // button=bottom鏃�master鐨刼bj_id\n }\n };\n\n var req = [];\n var attrlist = this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else req.push({\n attr: ar.Name,\n value: ar.Value\n });\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 'value': 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.Master_Cls.ID //褰撳墠鏁版嵁绫籭d\n };\n\n if (data_attr) {\n extinfo.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 //寮曠敤鎸夐挳鐨則ooltip\n };\n }\n\n var dataInfo = {\n edtype: \"0\",\n eventid: eventid,\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: this.$data.param.Master_Cls.ID,\n objid: '',\n attr: JSON.stringify(req),\n extinfo: JSON.stringify(extinfo),\n global_attr: JSON.stringify(this.$data.global_attr)\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3302\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3304\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n if (data != \"\") {\n var actions = data.action;\n __f__(\"log\", actions, \" at pages/modal/ms_classAttr.vue:3310\");\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 + '姝ction灏氭湭澶勭悊锛�\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 = _this8;\n var param = {\n index: index,\n iindex: iindex,\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/ms_classAttr.vue:3340\");\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.Master_Cls.ID,\n objid: \"\",\n attr: param.req,\n inputparameter: data\n };\n $this.DataObjRunCustomEvent(info, param.data_attr);\n }\n }\n });\n } else if (action.action_type == 'open_data_query_dlg') {} else if (action.action_type == 'open_common_dlg') {\n var value = action.value;\n var d = dialog({\n title: '<i class=\"ace-icon fa fa-info-circle\"></i> ' + '鎻愮ず',\n content: action.action_type + '姝ction灏氭湭澶勭悊锛�\n });\n d.show();\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 == '鎴戣礋璐g殑椤圭洰') 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 = _this8;\n var param_ = {\n index: index,\n iindex: iindex,\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 $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.Master_Cls.ID,\n objid: \"\",\n attr: param.req\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 + '姝ction灏氭湭澶勭悊锛�\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 } else {\n uni.showModal({\n title: \"閿欒5\",\n content: success.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 scan_ini_DataObjRunCustomEvent: function scan_ini_DataObjRunCustomEvent(info) {\n var _this9 = this;\n var param = {\n EditStyle: this.$data.param.Sub_Cls.View_Style.Name,\n ViewStyle: this.$data.param.Sub_Cls.View_Style.Name,\n NotTriggerSysEvent: 0,\n enviroment: {\n 'function': '3000',\n // 鍔熻兘鐐圭紪鍙穃n cls_id: this.$data.param.Sub_Cls.ID,\n // 鍔熻兘鐐逛富鏁版嵁绫绘爣璇哱n 'button': 'top',\n // top/bottom\n button_name: '鏂板',\n master: {\n cls_id: this.$data.param.Sub_Cls.ID // button=bottom鏃�master鐨刢ls_id\n //obj_id: '' // button=bottom鏃�master鐨刼bj_id\n }\n }\n };\n\n var inputparameter = '';\n var global_attr = '';\n var dataInfo = {\n edtype: info.edtype,\n eventid: info.eventid,\n projectid: info.projectid,\n rclsid: info.rclsid,\n robjid: info.robjid,\n userlogin: info.userlogin,\n clsid: info.clsid,\n objid: info.objid,\n attr: JSON.stringify(info.attr),\n extinfo: JSON.stringify(param),\n inputparameter: inputparameter,\n global_attr: global_attr\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3489\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3491\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n for (var j = 0; j < actionlist.length; j++) {\n var action = actionlist[j];\n var action_type = action.action_type;\n var value = action.value;\n if (action_type == 'set_dlg_attr') {\n if (value) {\n var val = value;\n if (typeof value == 'string') {\n val = JSON.parse(value);\n }\n __f__(\"log\", val, \" at pages/modal/ms_classAttr.vue:3506\");\n for (var i = 0; i < val.length; i++) {\n for (var a = 0; a < _this9.$data.subClassAttrList.length; a++) {\n for (var l = 0; l < _this9.$data.subClassAttrList[a].Attr.length; l++) {\n var ca = _this9.$data.subClassAttrList[a].Attr[l];\n if (val[i].attr == ca.Name) {\n if (ca.Type == '瀛楀吀' || ca.Type == '瀛楀吀-瀛楃涓� || ca.Type == '瀛楀吀-鏁存暟') {\n var dictItemList = [];\n for (var d in val[i].choice_list) {\n var val = val[i].choice_list[d];\n dictItemList.push({\n \"CN_S_NAME\": val,\n \"Name\": val,\n \"label\": val,\n \"value\": val\n });\n }\n ca.dictitem = dictItemList;\n // attr[j].dictitem = val[i].choice_list;\n } else {\n // ca.value = val[i].value;\n }\n }\n }\n }\n var length = 0;\n if (!_this9.$data.refdatastore.filter(function (s) {\n return val[i].attr == s.attr;\n }).length) {\n length = 1;\n _this9.$data.refdatastore.push(val[i]);\n }\n if (length == 0) {\n for (var j = 0; j < _this9.$data.refdatastore.length; j++) {\n if (_this9.$data.refdatastore[j].attr == val[i].attr) {\n _this9.$data.refdatastore[j].value = val[i].value;\n }\n }\n }\n }\n }\n }\n if (action_type == 'open_select_userdlg') {\n uni.showModal({\n title: \"閿欒6.2\",\n content: \"open_select_userdlg杩欎釜action_type杩樻湭澶勭悊锛乗",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"閿欒6\",\n content: success.msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n // console.log(ex);\n uni.showModal({\n title: \"閿欒6.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n },\n scan_DataObjRunCustomEvent: function scan_DataObjRunCustomEvent(info, data_attr) {\n var _this10 = this;\n var $this = this;\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,//褰撳墠鏁版嵁绫籭d\n }\n };\n }\n\n var global_attr = this.$data.global_attr;\n if (info.global_attr) {\n global_attr = info.global_attr;\n }\n var dataInfo = {\n edtype: info.edtype,\n eventid: info.eventid,\n projectid: info.projectid.replace('{', '').replace('}', ''),\n rclsid: info.rclsid,\n robjid: info.robjid,\n userlogin: info.userlogin,\n clsid: info.clsid,\n objid: info.objid,\n attr: JSON.stringify(info.attr),\n extinfo: JSON.stringify(enviroment),\n inputparameter: JSON.stringify(info.inputParamter),\n global_attr: JSON.stringify(global_attr)\n };\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3617\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3619\");\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var actionlist = data.action;\n if (actionlist) {\n __f__(\"log\", actionlist, \" at pages/modal/ms_classAttr.vue:3625\");\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 \"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/ms_classAttr.vue:3664\");\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\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 = _this10;\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 = _this10;\n var list_1 = JSON.parse(JSON.stringify(_this10.$data.subClassAttrList));\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 (info.inputParamter[0].attr) {\n if (info.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 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;\n for (var c = 0; c < _subClassAttr.length; c++) {\n var attr = _subClassAttr[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n // console.log(attr[j].Name+'=='+result[i].attr);\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = result[i].value;\n }\n }\n }\n\n // $this.$data.subPanelList[s].subClassAttr=list_1;\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 }\n if (data.result) {\n var _list_ = JSON.parse(JSON.stringify(_this10.$data.subClassAttrList));\n var scanCodeVal = $this.$data.scanCodeVal;\n if (info.inputParamter[0].attr == \"mast_input_3037\") scanCodeVal = \"mast_input_3037-\" + ii;\n $this.$data.subPanelList.push({\n scanCodeVal: scanCodeVal,\n subClassAttr: _list_\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;\n for (var c = 0; c < _subClassAttr.length; c++) {\n var attr = _subClassAttr[c].Attr;\n for (var j = 0; j < attr.length; j++) {\n // console.log(attr[j].Name+'=='+result[i].attr);\n if (attr[j].Name == result[i].attr) {\n attr[j].Value = 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 } else {\n uni.showModal({\n title: \"閿欒7\",\n content: success.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 scan_OKDataObjRunCustomEvent: function scan_OKDataObjRunCustomEvent(eventID) {\n uni.showLoading({\n title: \"鍔犺浇涓�..\",\n mask: true\n });\n var $this = this;\n var req = [];\n var attrlist = $this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n if (ar.select == true) {\n //鍒ゆ柇涓嬫媺鏄惁澶氶�\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr) valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({\n attr: ar.Name,\n value: valStr\n });\n } else req.push({\n attr: ar.Name,\n value: ar.Value\n });\n } else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n if (ar.notempty == true && !ar.Value) {\n // if(ar.NotEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'涓嶈兘涓虹┖锛�,icon:\"success\",duration:3000});\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + '涓嶈兘涓虹┖锛�,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n }\n }\n var objects = [];\n var subPanelList = $this.$data.subPanelList;\n for (var s = 0; s < subPanelList.length; s++) {\n var sub_req = [];\n for (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n var attr = subPanelList[s].subClassAttr[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') sub_req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) sub_req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n if (ar.select == true) {\n //鍒ゆ柇涓嬫媺鏄惁澶氶�\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr) valStr += \";\";\n valStr += ar.Value[v];\n }\n sub_req.push({\n attr: ar.Name,\n value: valStr\n });\n } else sub_req.push({\n attr: ar.Name,\n value: ar.Value\n });\n } else sub_req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n if (ar.notempty == true && !ar.Value) {\n // if(ar.NotEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'涓嶈兘涓虹┖锛�,icon:\"success\",duration:3000});\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + '涓嶈兘涓虹┖锛�,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\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 dataInfo = {\n edtype: \"7\",\n eventid: eventID,\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n objid: '',\n attr: JSON.stringify([]),\n extinfo: JSON.stringify([]),\n global_attr: JSON.stringify($this.$data.global_attr),\n dataJson: JSON.stringify(dataJson)\n };\n // console.log(JSON.stringify(dataInfo));\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:3961\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:3963\");\n uni.hideLoading();\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\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/ms_classAttr?param=' + JSON.stringify($this.$data.param) + \"&titlename=\" + $this.$data.title\n });\n }\n } else {\n uni.showModal({\n title: \"閿欒8\",\n content: success.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 scan_TriggerDataObjRunCustomEvent: function scan_TriggerDataObjRunCustomEvent(eventID) {\n uni.showLoading({\n title: \"鍔犺浇涓�..\",\n mask: true\n });\n var $this = this;\n var req = [];\n var attrlist = $this.$data.classAttrList;\n for (var i = 0; i < attrlist.length; i++) {\n var attr = attrlist[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n if (ar.select == true) {\n //鍒ゆ柇涓嬫媺鏄惁澶氶�\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr) valStr += \";\";\n valStr += ar.Value[v];\n }\n req.push({\n attr: ar.Name,\n value: valStr\n });\n } else req.push({\n attr: ar.Name,\n value: ar.Value\n });\n } else req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n if (ar.notempty == true && !ar.Value) {\n // if(ar.NotEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'涓嶈兘涓虹┖锛�,icon:\"success\",duration:3000});\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + '涓嶈兘涓虹┖锛�,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\n }\n }\n var objects = [];\n var subPanelList = $this.$data.subPanelList;\n for (var s = 0; s < subPanelList.length; s++) {\n var sub_req = [];\n for (var i = 0; i < subPanelList[s].subClassAttr.length; i++) {\n var attr = subPanelList[s].subClassAttr[i].Attr;\n for (var j = 0; j < attr.length; j++) {\n var ar = attr[j];\n if (ar.Value == '璇烽�鎷� || ar.Value == '鈥斺�璇烽�鎷┾�鈥�) ar.Value = '';\n if (ar.Type == '寮曠敤瀵硅薄(澶氫釜)') if (ar.Value == '璇�) ar.Value = '';\n if (ar.Type == '寮曠敤浜哄憳' || ar.Type == '寮曠敤椤圭洰') sub_req.push({\n attr: ar.Name,\n value: ar.ValID ? ar.ValID : ''\n });else if (ar.Type == '甯冨皵鍊�) sub_req.push({\n attr: ar.Name,\n value: ar.Value ? '1' : '0'\n });else if (ar.Type == '瀛楀吀' || ar.Type == '瀛楀吀-瀛楃涓� || ar.Type == '瀛楀吀-鏁存暟') {\n if (ar.select == true) {\n //鍒ゆ柇涓嬫媺鏄惁澶氶�\n var valStr = \"\";\n for (var v in ar.Value) {\n if (valStr) valStr += \";\";\n valStr += ar.Value[v];\n }\n sub_req.push({\n attr: ar.Name,\n value: valStr\n });\n } else sub_req.push({\n attr: ar.Name,\n value: ar.Value\n });\n } else sub_req.push({\n attr: ar.Name,\n value: ar.Value ? ar.Value : ''\n });\n if (ar.notempty == true && !ar.Value) {\n // if(ar.NotEmpty=='1'){\n uni.hideLoading();\n // uni.showToast({title:ar.DispName+'涓嶈兘涓虹┖锛�,icon:\"success\",duration:3000});\n uni.showModal({\n title: \"鎻愮ず\",\n content: ar.DispName + '涓嶈兘涓虹┖锛�,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return;\n }\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 dataInfo = {\n edtype: \"7\",\n eventid: eventID,\n projectid: '',\n rclsid: '',\n robjid: '',\n userlogin: '',\n clsid: 'MBOX',\n objid: '',\n attr: JSON.stringify([]),\n extinfo: JSON.stringify([]),\n global_attr: JSON.stringify($this.$data.global_attr),\n dataJson: JSON.stringify(dataJson)\n };\n // console.log(JSON.stringify(dataInfo));\n __f__(\"log\", dataInfo, \" at pages/modal/ms_classAttr.vue:4146\");\n this.$store.dispatch('DataObjRunCustomEventInfo', dataInfo).then(function (success) {\n __f__(\"log\", success, \" at pages/modal/ms_classAttr.vue:4148\");\n uni.hideLoading();\n if (success.code == '00000') {\n var data = JSON.parse(success.data);\n var result = data.result;\n if (eventID != $this.$data.param.After_Trigger_Event.ID) $this.scan_TriggerDataObjRunCustomEvent($this.$data.param.After_Trigger_Event.ID);else {\n //鍒锋柊\n uni.redirectTo({\n url: '../modal/ms_classAttr?param=' + JSON.stringify($this.$data.param) + \"&titlename=\" + $this.$data.title\n });\n }\n } else {\n uni.showModal({\n title: \"閿欒8\",\n content: success.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 }\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvbXNfY2xhc3NBdHRyLnZ1ZSJdLCJuYW1lcyI6WyJjb21wb25lbnRzIiwicGlja2VyQWRkcmVzcyIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiY2xhc3NBdHRyTGlzdCIsImNsYXNzR3JpZFN0eWxlIiwiZWRpdF9pbml0YWxfZXZlbnQiLCJlZGl0X29rX2V2ZW50IiwiZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCIsImVkaXRfY29tcG9zZV9jbHNfaWQiLCJnbG9iYWxfYXR0ciIsInJlZmRhdGFzdG9yZSIsInNjYW5Db2RlVmFsIiwic3ViQ2xhc3NBdHRyTGlzdCIsInN1YlBhbmVsTGlzdCIsInN1YkNsYXNzR3JpZFN0eWxlIiwicG9wdXBUeXBlIiwiY2hlY2tfbGlzdCIsIm9uTG9hZCIsIm9wdGlvbnMiLCJ1bmkiLCJzZXROYXZpZ2F0aW9uQmFyVGl0bGUiLCJ0aXRsZW5hbWUiLCJKU09OIiwicGFyc2UiLCIkZGF0YSIsIkFkZF9CdG5OYW1lIiwiTWFzdGVyX0NscyIsIlZpZXdfU3R5bGUiLCJzaG93TW9kYWwiLCJjb250ZW50Iiwic2hvd0NhbmNlbCIsImNvbmZpcm1UZXh0IiwiTmFtZSIsImRhdGFJbmZvIiwiY2xhc3NfaWQiLCJJRCIsIiR0aGlzIiwiJHN0b3JlIiwic3RhdGUiLCJ0aGlzYXJlYUZ1bmNJRCIsImdldHRlcnMiLCJnZXRjbGFzc0F0dHJMaXN0IiwiY2xhc3NHcmlkU3R5bGVJbmZvIiwiZGlzcGF0Y2giLCJ0aGVuIiwic3VjY2VzcyIsImNvZGUiLCJtc2ciLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwic3ViZGF0YUluZm8iLCJTdWJfQ2xzIiwidGhpc2FyZWFGdW5jU3ViSUQiLCJnZXRTdWJDbGFzc0F0dHJMaXN0IiwibWV0aG9kcyIsInNjYW5fY2xhc3NBdHRyX2V4dEJ1dHRvbiIsImUiLCJCZWZvcmVfU2VsZWN0X0V2ZW50IiwiU2Nhbl9Db2RlIiwibWFzdF9hdHRyIiwiYXR0cmxpc3QiLCJpIiwibGVuZ3RoIiwiYXR0ciIsIkF0dHIiLCJqIiwiYXIiLCJWYWx1ZSIsIkRpc3BOYW1lIiwiVHlwZSIsInB1c2giLCJ2YWx1ZSIsIlZhbElEIiwib2JqZWN0cyIsInMiLCJzdWJfcmVxIiwic3ViQ2xhc3NBdHRyIiwic2VsZWN0IiwidmFsU3RyIiwidiIsIm5vdGVtcHR5IiwiaGlkZUxvYWRpbmciLCJvYmpfaWQiLCJvYmpfYXR0cnMiLCJlbnZpcm9tZW50IiwiY2xzX2lkIiwiYnV0dG9uX25hbWUiLCJlZGl0X2RsZyIsInR5cGUiLCJtYXN0ZXJfY2xzIiwiY2xzX25hbWUiLCJyZXEiLCJzdWJfY2xzIiwiaW5mbyIsImV2ZW50aWQiLCJlZHR5cGUiLCJwcm9qZWN0aWQiLCJyY2xzaWQiLCJyb2JqaWQiLCJ1c2VybG9naW4iLCJjbHNpZCIsIm9iamlkIiwiaW5wdXRQYXJhbXRlciIsInNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwicG9wdXBDaGFuZ2UiLCJzaG93IiwiY2hlY2tDaGFuZ2UiLCJpbmRleCIsInRhcmdldCIsImRhdGFzZXQiLCJpc2NoZWNrIiwiaXRlbXMiLCJtdWx0aXBsZV9jaG9pY2UiLCJjaGVjayIsInBvcHVwX2NhbmNlbCIsIiRyZWZzIiwicG9wdXAiLCJjbG9zZSIsInBvcHVwX3NhdmEiLCJBZnRlcl9TZWxlY3RfRXZlbnQiLCJuYW1lIiwiaWQiLCJjYW5jZWwiLCJuYXZpZ2F0ZUJhY2siLCJkZWx0YSIsInBhbmVsX2RlbCIsIk9iaklEIiwic3BsaWNlIiwiY2xzSWQiLCJvYmpJZCIsInNob3dMb2FkaW5nIiwic3R5bGVOYW1lIiwiY2xzVHlwZSIsImdyaWRzdHlsZUluZm8iLCJ0aGlzRWRpdE5hbWUiLCJnZXRjbGFzc0dyaWRTdHlsZUluZm8iLCJjbGFzc19hdHRyX2luaXQiLCJTdHlsZURlZiIsInRoaXNFZGl0U3ViTmFtZSIsImdldFN1YkNsYXNzR3JpZFN0eWxlSW5mbyIsInN1YkNsYXNzX2F0dHJfaW5pdCIsIm9udGFwIiwiZ2V0QXBwIiwib25TY2FuIiwicmVzdWx0IiwiaXNWYWwiLCJkZWNvZGVkYXRhIiwiaGlkZUtleWJvYXJkIiwiSW5wdXRfQ2hhbmdlX0V2ZW50Iiwic3Vib250YXAiLCJzY2FuX29udGFwIiwiaXNmbGFnIiwibWFzdF9yZXEiLCJjbGFzc2F0dHJsaXN0Iiwic2Nhbl9vbmV2ZW50Iiwib25hcnJvdyIsIm9wZW4iLCJkYXRhX2F0dHIiLCJPcGVuIiwib25kYXRlVGltZSIsIm9uY2hhbmdlIiwiZGljdGl0ZW0iLCJhY3Rpb24iLCJ2YWwiLCJEYXRhT2JqUnVuQ3VzdG9tRXZlbnQiLCJvbmNoYW5nZTIiLCJpdGVtIiwiZGVsdmFsdWUiLCJpaW5kZXgiLCJkaW5kZXgiLCJpdGVtdmFsdWUiLCJzdWJfb25jaGFuZ2UiLCJzdWJfb25jaGFuZ2UyIiwiZCIsIm9uZXZlbnQiLCJvbmNoZWNrIiwiaXNjaGVja2VkIiwiaW5wdXRWYWxMaXN0SXNEZWwiLCJpbnB1dFZhbExpc3QiLCJhZGRyZXNzY2hhbmdlIiwiam9pbiIsImNsYXNzQXR0cl9leHRCdXR0b24iLCJiZWZvcmVfY2xpY2tfYnV0dG9uIiwiYnV0dG9uX2NhbGxiYWNrIiwiRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybiIsImNsYXNzQXR0cl9BZGRQZXIiLCJuYXZpZ2F0ZVRvIiwidXJsIiwic3RyaW5naWZ5IiwiZXZlbnRzIiwiQWRkUGVyIiwiTG9naW4iLCJ0cmltIiwiY2xhc3NBdHRyX0FkZFJlZiIsImNsYXNzQXR0cl9BZGRQcmoiLCJzYXZhIiwiQmVmb3JlX09LX0V2ZW50Iiwic2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudCIsIkFmdGVyX09LX0V2ZW50IiwidHJpZ2dlciIsIkJlZm9yZV9UcmlnZ2VyX0V2ZW50Iiwic2Nhbl9UcmlnZ2VyRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwiQWZ0ZXJfVHJpZ2dlcl9FdmVudCIsImVsc2VzcyIsImFkZCIsIm1hc2siLCJtYXN0ZXIiLCJkYXRhX29ial9pZCIsIm1hc3RlcmNsc2lkIiwidXBmaWxlIiwicG9zdF9kYXRhIiwiY29tcG9zZSIsImV4dGluZm8iLCJub3RfdHJpZ2dlcl9zeXNfZXZlbnQiLCJBY3Rpb24iLCJyZXQiLCJyZXN1bHRfdHlwZSIsInNob3dUb2FzdCIsImljb24iLCJkdXJhdGlvbiIsInJlZGlyZWN0VG8iLCJzaG93X3N0eWxlIiwibmV3YXR0cmxpc3QiLCJhdHRyZ3JvdXBfbmFtZSIsImF0dHJzIiwiY2xzYXR0ciIsImwiLCJjYSIsImVkaXQiLCJleHRfYnV0dG9uIiwiYnV0dG9uX2ltZyIsImJ1dHRvbl90b29sdGlwIiwiaGlkZGVuIiwidW5kZWZpbmVkIiwiZGljdGl0ZW1saXN0IiwibGFiZWwiLCJDTl9TX05BTUUiLCJDTl9DX0lTX0RFRkFVTFQiLCJub3dEYXRlIiwiRGF0ZSIsImRhdGUiLCJ5ZWFyIiwiZ2V0RnVsbFllYXIiLCJtb250aCIsImdldE1vbnRoIiwiZGF5IiwiZ2V0RGF0ZSIsInJlbENsc0xpc3QiLCJhdHRyX3Jlc2NscyIsIlJlbENscyIsInNwbGl0IiwiaWkiLCJyZXNjbHMiLCJSZWxDbHNMaXN0IiwiQmtDb2xvciIsIkhhc0FjZSIsIkltZ0ZvbnRTdHlsZSIsIk9yZGVyIiwiY29udHJvbF9zdHlsZSIsInRpdGxlX3Bfd2RpdGgiLCJGb250IiwiQmtfQ29sb3IiLCJUZXh0X0NvbG9yIiwiZXZlbnRsaXN0IiwiZXZlbnQiLCJldmVudF9pZCIsInNjcmlwX2lkIiwiY29tcG9zZV9jbHNfaWQiLCJpbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50Iiwic2Nhbl9pbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwiRWRpdFN0eWxlIiwiVmlld1N0eWxlIiwiTm90VHJpZ2dlclN5c0V2ZW50IiwiaW5wdXRwYXJhbWV0ZXIiLCJhY3Rpb25saXN0IiwiYWN0aW9uX3R5cGUiLCJhIiwiZGljdEl0ZW1MaXN0IiwiY2hvaWNlX2xpc3QiLCJmaWx0ZXIiLCJmb3JtX2NvbnRyb2wiLCJ0ZXh0IiwiZ3JvdXBfbmFtZSIsIkdyb3VwTmFtZSIsInJlYWRvbmx5IiwiUmVhZE9ubHkiLCJyZXBsYWNlIiwiYyIsIk9LRGF0YU9ialJ1bkN1c3RvbUV2ZW50IiwiYWN0aW9ucyIsImRpYWxvZyIsInN0eWxlIiwiY2FsbGJhY2tfZXZlbnRpZCIsInByaVJlbCIsInNlbGVjdF9yYW5nZSIsInBhcmFtXyIsIiRhY3Rpb250ciIsImNvbW1vbl9kbGdfaWQiLCJjb25maWciLCJhcHBlYXJfc3R5bGUiLCJsaXN0XzEiLCJyYW5kIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwiX3N1YkNsYXNzQXR0ciIsImV2ZW50SUQiLCJkYXRhSnNvbiIsImlucHV0XzMwMzciLCJvcF90eXBlIiwiT3BlcmF0aW9uVHlwZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBcStCQTtBQXIrQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUEsZUFHZTtFQUNkQSxVQUFVLEVBQUU7SUFDWEMsYUFBYSxFQUFiQTtFQUNELENBQUM7RUFDREMsSUFBSSxrQkFBRztJQUNOLE9BQU87TUFDTkMsS0FBSyxFQUFFLElBQUk7TUFDWEMsS0FBSyxFQUFFLENBQUMsQ0FBQztNQUNU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cEJqQixVQUFVLEVBQUUsS0FBSztZQUNqQkMsV0FBVyxFQUFFO1VBQ2QsQ0FBQyxDQUFDO1FBQ0g7TUFDRCxDQUFDLENBQUMsQ0FBQ2lCLEtBQUssQ0FBQyxVQUFBQyxFQUFFLEVBQUk7UUFDZDtRQUNBOUIsR0FBRyxDQUFDK0QsV0FBVyxFQUFFO1FBQ2pCL0QsR0FBRyxDQUFDUyxTQUFTLENBQUM7VUFDYjNCLEtBQUssRUFBRSxPQUFPO1VBQ2Q0QixPQUFPLEVBQUVvQixFQUFFLENBQUNDLE1BQU07VUFDbEJwQixVQUFVLEVBQUUsS0FBSztVQUNqQkMsV0FBVyxFQUFFO1FBQ2QsQ0FBQyxDQUFDO01BQ0gsQ0FBQyxDQUFDO0lBQ0g7RUFHRDtBQUNELENBQUM7QUFBQSwyQiIsImZpbGUiOiI5MC5qcyIsInNvdXJjZXNDb250ZW50IjpbIi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuaW1wb3J0IHBpY2tlckFkZHJlc3MgZnJvbSAnLi4vLi4vanMvcGlja2VyQWRkcmVzcy9waWNrZXJBZGRyZXNzLnZ1ZSdcbmV4cG9ydCBkZWZhdWx0IHtcblx0Y29tcG9uZW50czoge1xuXHRcdHBpY2tlckFkZHJlc3Ncblx0fSxcblx0ZGF0YSgpIHtcblx0XHRyZXR1cm4ge1xuXHRcdFx0dGl0bGU6ICfmlrDlop4nLFxuXHRcdFx0cGFyYW06IHt9LFxuXHRcdFx0Y2xhc3NBdHRyTGlzdDogW10sXG5cdFx0XHRjbGFzc0dyaWRTdHlsZTogW10sXG5cdFx0XHRlZGl0X2luaXRhbF9ldmVudDogXCJcIiwgLy/lvLnnqpfliJ3lp4vljJbkuovku7ZJRFxuXHRcdFx0ZWRpdF9va19ldmVudDogXCJcIiwgLy/lvLnnqpfngrnlh7tPSyDop6blj5Hkuovku7ZJRFxuXHRcdFx0ZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudDogXCJcIiwgLy/pgInmi6nnu4TmiJDlr7nosaHml7bosIPnlKhcblx0XHRcdGVkaXRfY29tcG9zZV9jbHNfaWQ6IFwiXCIsXG5cdFx0XHRnbG9iYWxfYXR0cjogW10sXG5cdFx0XHRyZWZkYXRhc3RvcmU6IFtdLCAvL+W8leeUqOaVsOaNruWtmOWCqOWMui8vIHthdHRyOidHX1BSSl8nICsgYmluZGF0dHIgKyAnX0lEJywgdmFsdWU6aW5mby5pZH1cblx0XHRcdHNjYW5Db2RlVmFsOiBcIlwiLFxuXHRcdFx0c3ViQ2xhc3NBdHRyTGlzdDogW10sXG5cdFx0XHRzdWJQYW5lbExpc3Q6IFtdLFxuXHRcdFx0c3ViQ2xhc3NHcmlkU3R5bGU6IFtdLFxuXHRcdFx0cG9wdXBUeXBlOiBcImNlbnRlclwiLFxuXHRcdFx0Y2hlY2tfbGlzdDoge30sXG5cdFx0fVxuXHR9LFxuXHRvbkxvYWQob3B0aW9ucykge1xuXHRcdC8vIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xuXHRcdHVuaS5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoe1xuXHRcdFx0dGl0bGU6IG9wdGlvbnMudGl0bGVuYW1lXG5cdFx0fSk7IC8v6K6+572u6aG26YOo5qCH6aKYIFxuXHRcdHZhciBwYXJhbSA9IEpTT04ucGFyc2Uob3B0aW9ucy5wYXJhbSk7XG5cdFx0dGhpcy4kZGF0YS50aXRsZSA9IHBhcmFtLkFkZF9CdG5OYW1lID8gcGFyYW0uQWRkX0J0bk5hbWUgOiBvcHRpb25zLnRpdGxlbmFtZTsgLy/orr7nva7mjInpkq7mloflrZdcblx0XHRjb25zb2xlLmxvZyhwYXJhbSk7XG5cdFx0aWYgKCFwYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUpIHtcblx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0Y29udGVudDogXCLor6Xlip/og73ngrnmnKrphY3nva7nlYzpnaLnqpflj6PvvIzor7fph43mlrDphY3nva7vvIFcIixcblx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHR9KTtcblx0XHRcdHJldHVybjtcblx0XHR9XG5cdFx0aWYgKCFwYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZSkge1xuXHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRjb250ZW50OiBcIuivpeWKn+iDveeCueacqumFjee9rueql+WPo+agt+W8j++8jOivt+mHjeaWsOmFjee9ru+8gVwiLFxuXHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdH0pO1xuXHRcdFx0cmV0dXJuO1xuXHRcdH1cblx0XHR0aGlzLiRkYXRhLnBhcmFtID0gcGFyYW07XG5cdFx0Ly8gdmFyIGVkaXRfZGxnID0ge1xuXHRcdC8vICAgICBNb2RlbDogcGFyYW0uRWRpdERsZ01vZGUsXG5cdFx0Ly8gICAgIE5hbWU6IHBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZS5OYW1lXG5cdFx0Ly8gfVxuXHRcdC8v5Li75pWw5o2u57G76I635Y+WXG5cdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0Y2xhc3NfaWQ6IHBhcmFtLk1hc3Rlcl9DbHMuSURcblx0XHR9O1xuXHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0JHRoaXMuJHN0b3JlLnN0YXRlLnRoaXNhcmVhRnVuY0lEID0gcGFyYW0uTWFzdGVyX0Nscy5JRDtcblx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0F0dHJMaXN0KTtcblx0XHRpZiAoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0Y2xhc3NBdHRyTGlzdCkge1xuXHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdCA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzQXR0ckxpc3QuZGF0YTtcblx0XHRcdCR0aGlzLmNsYXNzR3JpZFN0eWxlSW5mbyhwYXJhbS5NYXN0ZXJfQ2xzLklELCAkdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLlZpZXdfU3R5bGUuTmFtZSwgJ01hc3QnKTtcblx0XHR9IGVsc2Uge1xuXHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdjbGFzc0F0dHJMaXN0JywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0ID0gc3VjY2Vzcy5kYXRhO1xuXG5cdFx0XHRcdFx0JHRoaXMuY2xhc3NHcmlkU3R5bGVJbmZvKHBhcmFtLk1hc3Rlcl9DbHMuSUQsICR0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZS5OYW1lLFxuXHRcdFx0XHRcdFx0J01hc3QnKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzFcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMS4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fVxuXG5cdFx0Ly/ku47mlbDmja7nsbvojrflj5Zcblx0XHR2YXIgc3ViZGF0YUluZm8gPSB7XG5cdFx0XHRjbGFzc19pZDogcGFyYW0uU3ViX0Nscy5JRFxuXHRcdH07XG5cdFx0JHRoaXMuJHN0b3JlLnN0YXRlLnRoaXNhcmVhRnVuY1N1YklEID0gcGFyYW0uU3ViX0Nscy5JRDtcblx0XHRpZiAoJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0U3ViQ2xhc3NBdHRyTGlzdCkge1xuXHRcdFx0JHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN1YkNsYXNzQXR0ckxpc3QuZGF0YTtcblx0XHRcdCR0aGlzLmNsYXNzR3JpZFN0eWxlSW5mbyhwYXJhbS5TdWJfQ2xzLklELCAkdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLlZpZXdfU3R5bGUuTmFtZSwgJ1N1YicpO1xuXHRcdH0gZWxzZSB7XG5cdFx0XHQkdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3N1YkNsYXNzQXR0ckxpc3QnLCBzdWJkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QgPSBzdWNjZXNzLmRhdGE7XG5cblx0XHRcdFx0XHQkdGhpcy5jbGFzc0dyaWRTdHlsZUluZm8ocGFyYW0uU3ViX0Nscy5JRCwgJHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5WaWV3X1N0eWxlLk5hbWUsXG5cdFx0XHRcdFx0XHQnU3ViJyk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68xXzFcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMV8xLjFcIixcblx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9XG5cdH0sXG5cdG1ldGhvZHM6IHtcblx0XHRzY2FuX2NsYXNzQXR0cl9leHRCdXR0b24oZSkgeyAvL+mAieaLqeaMiemSruWJjVxuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdHZhciBCZWZvcmVfU2VsZWN0X0V2ZW50ID0gJHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLkJlZm9yZV9TZWxlY3RfRXZlbnQ7XG5cdFx0XHRpZiAoIUJlZm9yZV9TZWxlY3RfRXZlbnQpIHtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0Y29udGVudDogXCLpgInmi6nliY3kuovku7bkuLrnqbrvvIFcIixcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dmFyIG1hc3RfYXR0ciA9IFtdO1xuXHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7fpgInmi6knKSB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IGFyLkRpc3BOYW1lICsgXCLmnKrpgInmi6nmlbDmja7vvIFcIixcblx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0bWFzdF9hdHRyLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0bWFzdF9hdHRyLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdG1hc3RfYXR0ci5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdFxuXHRcdFx0dmFyIG9iamVjdHMgPSBbXTtcblx0XHRcdHZhciBzdWJQYW5lbExpc3QgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Q7XG5cdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8IHN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHR2YXIgc3ViX3JlcSA9IFtdO1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHIubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR2YXIgYXR0ciA9IHN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHJbaV0uQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivt+mAieaLqScgfHwgYXIuVmFsdWUgPT0gJ+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICflrZflhbgnIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3lrZfnrKbkuLInIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChhci5zZWxlY3QgPT0gdHJ1ZSkgeyAvL+WIpOaWreS4i+aLieaYr+WQpuWkmumAiVxuXHRcdFx0XHRcdFx0XHRcdHZhciB2YWxTdHIgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHYgaW4gYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh2YWxTdHIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBcIjtcIjtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBhci5WYWx1ZVt2XTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdmFsU3RyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcblx0XHRcdFx0XHRcdGlmIChhci5ub3RlbXB0eSA9PSB0cnVlICYmICFhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0XHQvLyBpZihhci5Ob3RFbXB0eT09JzEnKXtcblx0XHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0XHRcdC8vIHVuaS5zaG93VG9hc3Qoe3RpdGxlOmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiBhci5EaXNwTmFtZSArICfkuI3og73kuLrnqbrvvIEnLFxuXHRcdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdG9iamVjdHMucHVzaCh7XG5cdFx0XHRcdFx0b2JqX2lkOiBzdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwsXG5cdFx0XHRcdFx0b2JqX2F0dHJzOiBzdWJfcmVxXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGVudmlyb21lbnQgPSB7XG5cdFx0XHRcdCdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdGNsc19pZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwgICAgIC8vIOWKn+iDveeCueS7juaVsOaNruexu+agh+ivhlxuXHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHRlZGl0X2RsZzoge1xuXHRcdFx0XHRcdHR5cGU6ICdzbWFsbCcsIC8v5bCP56qX5Y+jXG5cdFx0XHRcdFx0Y2xhc3NfaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsLy/lvZPliY3mlbDmja7nsbtpZFxuXHRcdFx0XHR9LFxuXHRcdFx0XHRtYXN0ZXJfY2xzOiB7XG5cdFx0XHRcdFx0Y2xzX25hbWU6ICdNQk9YJywgLy8kdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLk5hbWUsXG5cdFx0XHRcdFx0b2JqX2F0dHJzOiByZXFcblx0XHRcdFx0fSxcblx0XHRcdFx0c3ViX2Nsczoge1xuXHRcdFx0XHRcdGNsc19uYW1lOiAnTUJPWCcsIC8vJHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5OYW1lLFxuXHRcdFx0XHRcdG9iamVjdHM6IG9iamVjdHNcblx0XHRcdFx0fVxuXHRcdFx0XHRcblx0XHRcdH07XG5cdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHQvLyB2YXIgc3ViUGFuZWxMaXN0ID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0O1xuXHRcdFx0Ly8gZm9yICh2YXIgcyA9IDA7IHMgPCBzdWJQYW5lbExpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdC8vIFx0dmFyIGpzb24gPSB7fTtcblx0XHRcdC8vIFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHQvLyBcdFx0dmFyIGF0dHIgPSBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyW2ldLkF0dHI7XG5cdFx0XHQvLyBcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHQvLyBcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0Ly8gXHRcdFx0anNvblthci5OYW1lXSA9IGFyLlZhbHVlO1xuXHRcdFx0Ly8gXHRcdH1cblx0XHRcdC8vIFx0fVxuXHRcdFx0Ly8gXHRyZXEucHVzaChqc29uKTtcblx0XHRcdC8vIH1cblxuXHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdGV2ZW50aWQ6IEJlZm9yZV9TZWxlY3RfRXZlbnQuSUQsXG5cdFx0XHRcdGVkdHlwZTogXCI3XCIsIC8vXCIwXCIsXG5cdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdGNsc2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0YXR0cjogW10sXG5cdFx0XHRcdGdsb2JhbF9hdHRyOiByZXEsXG5cdFx0XHRcdG1hc3RfYXR0cjogbWFzdF9hdHRyLFxuXHRcdFx0XHRpbnB1dFBhcmFtdGVyOiBtYXN0X2F0dHIsXG5cdFx0XHRcdGVudmlyb21lbnQ6IGVudmlyb21lbnRcblx0XHRcdH1cblx0XHRcdC8vIGNvbnNvbGUubG9nKGluZm8pO1xuXHRcdFx0dGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcblx0XHR9LFxuXHRcdHBvcHVwQ2hhbmdlKGUpIHtcblx0XHRcdGNvbnNvbGUubG9nKCflvZPliY3mqKHlvI/vvJonICsgZS50eXBlICsgJyznirbmgIHvvJonICsgZS5zaG93KTtcblx0XHR9LFxuXHRcdGNoZWNrQ2hhbmdlKGUpIHsgLy/lvLnmoYZjaGVja+mAieaLqVxuXHRcdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQuZGF0YXNldCk7XG5cdFx0XHR2YXIgaW5kZXggPSBlLnRhcmdldC5kYXRhc2V0LmluZGV4O1xuXHRcdFx0dmFyIGlzY2hlY2sgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2s7XG5cdFx0XHR2YXIgZGF0YSA9IHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcztcblx0XHRcdC8vIHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcz1bXTtcblx0XHRcdGlmICh0aGlzLiRkYXRhLmNoZWNrX2xpc3QubXVsdGlwbGVfY2hvaWNlID09IFwiMFwiKSB7IC8v5Yik5pat5pe25Y2V6YCJ6L+Y5piv5aSa6YCJXG5cdFx0XHRcdGZvciAodmFyIGkgaW4gZGF0YSkge1xuXHRcdFx0XHRcdGRhdGFbaV0uY2hlY2sgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0ZGF0YVtpbmRleF0uY2hlY2sgPSBpc2NoZWNrID8gZmFsc2UgOiB0cnVlO1xuXHRcdFx0dGhpcy4kZGF0YS5jaGVja19saXN0Lml0ZW1zID0gZGF0YTtcblxuXHRcdH0sXG5cdFx0cG9wdXBfY2FuY2VsKGUpIHsgLy/lvLnmoYblj5bmtohcblx0XHRcdHRoaXMuJHJlZnMucG9wdXAuY2xvc2UoKTtcblx0XHR9LFxuXHRcdHBvcHVwX3NhdmEoZSkgeyAvL+W8ueahhuehruWumiDpgInmi6nmjInpkq7lkI5cblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgQWZ0ZXJfU2VsZWN0X0V2ZW50ID0gJHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLkFmdGVyX1NlbGVjdF9FdmVudDtcblx0XHRcdGlmICghQWZ0ZXJfU2VsZWN0X0V2ZW50KSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOiBcIuaPkOekulwiLGNvbnRlbnQ6IFwi6YCJ5oup5ZCO5LqL5Lu25Li656m677yBXCIsc2hvd0NhbmNlbDogZmFsc2UsY29uZmlybVRleHQ6IFwi5Y+W5raIXCJ9KTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGl0ZW1zID0gJHRoaXMuJGRhdGEuY2hlY2tfbGlzdC5pdGVtcztcblx0XHRcdHZhciBkYXRhID0gW107XG5cdFx0XHR2YXIgbmFtZSA9IFwiXCI7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGl0ZW1zLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdGlmIChpdGVtc1tpXS5jaGVjayA9PSB0cnVlKSB7XG5cdFx0XHRcdFx0aWYgKG5hbWUpXG5cdFx0XHRcdFx0XHRuYW1lICs9ICc7Jztcblx0XHRcdFx0XHRuYW1lICs9IGl0ZW1zW2ldLm5hbWU7XG5cdFx0XHRcdFx0ZGF0YS5wdXNoKHtcblx0XHRcdFx0XHRcdGlkOiBpdGVtc1tpXS5pZCxcblx0XHRcdFx0XHRcdG5hbWU6IGl0ZW1zW2ldLm5hbWVcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0aWYgKGRhdGEubGVuZ3RoID09IDApIHtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6IFwi5o+Q56S6XCIsY29udGVudDogXCLmnKrpgInmi6nmlbDmja7vvIFcIixzaG93Q2FuY2VsOiBmYWxzZSxjb25maXJtVGV4dDogXCLlj5bmtohcIn0pO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR2YXIgbWFzdF9hdHRyID0gW107XG5cdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivt+mAieaLqScpIHtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOiBcIuaPkOekulwiLGNvbnRlbnQ6IGFyLkRpc3BOYW1lICsgXCLmnKrpgInmi6nmlbDmja7vvIFcIixzaG93Q2FuY2VsOiBmYWxzZSxjb25maXJtVGV4dDogXCLlj5bmtohcIn0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRtYXN0X2F0dHIucHVzaCh7YXR0cjogYXIuTmFtZSx2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnfSk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdG1hc3RfYXR0ci5wdXNoKHthdHRyOiBhci5OYW1lLHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ30pO1xuXHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdG1hc3RfYXR0ci5wdXNoKHthdHRyOiBhci5OYW1lLHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJyd9KTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0XG5cdFx0XHQkdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCA9IG5hbWU7XG5cdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0ZXZlbnRpZDogQWZ0ZXJfU2VsZWN0X0V2ZW50LklELFxuXHRcdFx0XHRlZHR5cGU6IFwiN1wiLFxuXHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRjbHNpZDogJ01CT1gnLFxuXHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0YXR0cjogW3thdHRyOiAnbWFzdF9pbnB1dF8zMDM3Jyx2YWx1ZTogbmFtZX1dLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogbWFzdF9hdHRyLFxuXHRcdFx0XHRpbnB1dFBhcmFtdGVyOiBkYXRhXG5cdFx0XHR9XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhpbmZvKTtcblx0XHRcdHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XG5cdFx0XHR0aGlzLiRyZWZzLnBvcHVwLmNsb3NlKCk7XG5cdFx0fSxcblxuXHRcdGNhbmNlbChlKSB7XG5cdFx0XHR1bmkubmF2aWdhdGVCYWNrKHtcblx0XHRcdFx0ZGVsdGE6IDEgLy/ov5Tlm57lsYLmlbDvvIwy5YiZ5LiK5LiK6aG1XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHBhbmVsX2RlbChpbmRleCkge1xuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdGlmICh0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtpbmRleF0uc2NhbkNvZGVWYWwgPT0gdGhpcy4kZGF0YS5zY2FuQ29kZVZhbCkge1xuXHRcdFx0XHR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsID0gJyc7XG5cdFx0XHR9XG5cdFx0XHRpZiAoIXRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2luZGV4XS5PYmpJRClcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3Quc3BsaWNlKGluZGV4LCAxKTtcblx0XHRcdGVsc2Uge1xuXHRcdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdFx0Y2xzSWQ6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0XHRvYmpJZDogdGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbaW5kZXhdLk9iaklEXG5cdFx0XHRcdH07XG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdFx0Ly8gcmV0dXJuO1xuXHRcdFx0XHR1bmkuc2hvd0xvYWRpbmcoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuWKoOi9veS4rS4uLlwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGVsT2JqJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Quc3BsaWNlKGluZGV4LCAxKTtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogXCLliKDpmaTmiJDlip/vvIFcIixcblx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzlcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6OS4xXCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdH0sXG5cdFx0YXN5bmMgY2xhc3NHcmlkU3R5bGVJbmZvKGNsc2lkLCBzdHlsZU5hbWUsIGNsc1R5cGUpIHtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgZ3JpZHN0eWxlSW5mbyA9IHtcblx0XHRcdFx0Y2xhc3NfaWQ6IGNsc2lkLFxuXHRcdFx0XHRuYW1lOiBzdHlsZU5hbWUsXG5cdFx0XHRcdHR5cGU6ICcyJ1xuXHRcdFx0fTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mbyk7XG5cdFx0XHQvL+iOt+WPluS4u+aVsOaNruexu+eVjOmdouagt+W8j1xuXHRcdFx0aWYgKGNsc1R5cGUgPT0gJ01hc3QnKSB7XG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5zdGF0ZS50aGlzRWRpdE5hbWUgPSBzdHlsZU5hbWU7XG5cdFx0XHRcdGlmICgkdGhpcy4kc3RvcmUuZ2V0dGVycy5nZXRjbGFzc0dyaWRTdHlsZUluZm8pIHtcblx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSA9ICR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldGNsYXNzR3JpZFN0eWxlSW5mby5kYXRhO1xuXHRcdFx0XHRcdCR0aGlzLmNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdC8vY29uc29sZS5sb2coZ3JpZHN0eWxlSW5mbyk7XG5cdFx0XHRcdFx0JHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdjbGFzc0dyaWRTdHlsZUluZm8nLCBncmlkc3R5bGVJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHRcdFx0c3VjY2Vzcy5kYXRhLlN0eWxlRGVmID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEuU3R5bGVEZWYpO1xuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZSA9IHN1Y2Nlc3MuZGF0YTtcblxuXHRcdFx0XHRcdFx0XHQkdGhpcy5jbGFzc19hdHRyX2luaXQoKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzEuMlwiLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68xLjNcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9IGVsc2UgaWYgKGNsc1R5cGUgPT0gJ1N1YicpIHsgLy/ojrflj5bku47mlbDmja7nsbvnlYzpnaLmoLflvI9cblx0XHRcdFx0JHRoaXMuJHN0b3JlLnN0YXRlLnRoaXNFZGl0U3ViTmFtZSA9IHN0eWxlTmFtZTtcblx0XHRcdFx0aWYgKCR0aGlzLiRzdG9yZS5nZXR0ZXJzLmdldFN1YkNsYXNzR3JpZFN0eWxlSW5mbykge1xuXHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlID0gJHRoaXMuJHN0b3JlLmdldHRlcnMuZ2V0U3ViQ2xhc3NHcmlkU3R5bGVJbmZvLmRhdGE7XG5cdFx0XHRcdFx0JHRoaXMuc3ViQ2xhc3NfYXR0cl9pbml0KCk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0Ly9jb25zb2xlLmxvZyhncmlkc3R5bGVJbmZvKTtcblx0XHRcdFx0XHQkdGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3N1YkNsYXNzR3JpZFN0eWxlSW5mbycsIGdyaWRzdHlsZUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdFx0XHRzdWNjZXNzLmRhdGEuU3R5bGVEZWYgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YS5TdHlsZURlZik7XG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlID0gc3VjY2Vzcy5kYXRhO1xuXG5cdFx0XHRcdFx0XHRcdCR0aGlzLnN1YkNsYXNzX2F0dHJfaW5pdCgpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMS4yXCIsXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzEuM1wiLFxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHR9LFxuXHRcdG9udGFwKGUpIHsgLy/miavnoIHlip/og71cblx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcblx0XHRcdFx0dmFyIGlzVmFsID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFtcblx0XHRcdFx0XHQnaWluZGV4J11dLlZhbHVlO1xuXHRcdFx0XHQvLyBpZighaXNWYWwpe1xuXHRcdFx0XHQvLyBcdHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlPXJlc3VsdC5kZWNvZGVkYXRhO1xuXHRcdFx0XHQvLyBcdHZhciBpc1ZhbGQgPXRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlO1xuXHRcdFx0XHQvLyBcdHJldHVybjtcblx0XHRcdFx0Ly8gfVxuXHRcdFx0XHQvL+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxuXHRcdFx0XHRpZiAoaXNWYWwgIT0gcmVzdWx0LmRlY29kZWRhdGEpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV1cblx0XHRcdFx0XHRcdC5WYWx1ZSA9IHJlc3VsdC5kZWNvZGVkYXRhO1xuXHRcdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcblx0XHRcdFx0XHQvL+WtkOaVsOaNruexu+aJq+eggeWMuuS6i+S7tuiEmuacrFxuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5wYXJhbS5TY2FuX0NvZGUuSW5wdXRfQ2hhbmdlX0V2ZW50LklEO1xuXHRcdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7IC8v5Li75pWw5o2u57G75bGe5oCnXG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdGVkdHlwZTogXCI3XCIsIC8vXCIwXCIsXG5cdFx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRcdGNsc2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdFx0XHRtYXN0X2F0dHI6IFtdLFxuXHRcdFx0XHRcdFx0XHRpbnB1dFBhcmFtdGVyOiBbe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6ICdtYXN0X2lucHV0XzMwMzcnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiByZXN1bHQuZGVjb2RlZGF0YVxuXHRcdFx0XHRcdFx0XHR9XVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR0aGlzLnNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIFwiXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9LFxuXHRcdHN1Ym9udGFwKGUpIHsgLy/miavnoIHlip/og71cblx0XHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXG5cdFx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCkgPT4ge1xuXHRcdFx0XHQvL2NvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcblx0XHRcdFx0dmFyIGlzVmFsID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFtcblx0XHRcdFx0XHQnaWluZGV4J11dLlZhbHVlO1xuXHRcdFx0XHQvL+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxuXHRcdFx0XHRpZiAoaXNWYWwgIT0gcmVzdWx0LmRlY29kZWRhdGEpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV1cblx0XHRcdFx0XHRcdC5WYWx1ZSA9IHJlc3VsdC5kZWNvZGVkYXRhO1xuXHRcdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcblx0XHRcdFx0XHQvL+WtkOaVsOaNruexu+aJq+eggeWMuuS6i+S7tuiEmuacrFxuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5wYXJhbS5TY2FuX0NvZGUuSW5wdXRfQ2hhbmdlX0V2ZW50LklEO1xuXHRcdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3Q7IC8v5Li75pWw5o2u57G75bGe5oCnXG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdGVkdHlwZTogXCI3XCIsIC8vXCIwXCIsXG5cdFx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRcdGNsc2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdFx0XHRtYXN0X2F0dHI6IFtdLFxuXHRcdFx0XHRcdFx0XHRpbnB1dFBhcmFtdGVyOiBbe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6ICdtYXN0X2lucHV0XzMwMzcnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiByZXN1bHQuZGVjb2RlZGF0YVxuXHRcdFx0XHRcdFx0XHR9XVxuXHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHR0aGlzLnNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIFwiXCIpO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fSlcblx0XHR9LFxuXHRcdHNjYW5fb250YXAoZSkgeyAvL+aJq+eggeWMuuaJq+eggeWKn+iDvVxuXHRcdFx0Ly9jb25zb2xlLmxvZyhlLnRhcmdldClcblx0XHRcdGdldEFwcCgpLm9uU2NhbigocmVzdWx0KSA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHJlc3VsdC5kZWNvZGVkYXRhKTtcblx0XHRcdFx0dmFyIGlzZmxhZyA9IHRydWU7XG5cdFx0XHRcdGZvciAodmFyIGkgaW4gdGhpcy4kZGF0YS5zdWJQYW5lbExpc3QpIHtcblx0XHRcdFx0XHRpZiAodGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbaV0uc2NhbkNvZGVWYWwgPT0gcmVzdWx0LmRlY29kZWRhdGEpXG5cdFx0XHRcdFx0XHRpc2ZsYWcgPSBmYWxzZTtcblx0XHRcdFx0fVxuXHRcdFx0XHQvL+WtkOaVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxuXHRcdFx0XHRpZiAoaXNmbGFnKSB7XG5cdFx0XHRcdFx0dW5pLmhpZGVLZXlib2FyZCgpO1xuXHRcdFx0XHRcdHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwgPSByZXN1bHQuZGVjb2RlZGF0YTtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEucGFyYW0uU2Nhbl9Db2RlLklucHV0X0NoYW5nZV9FdmVudC5JRDtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0dmFyIG1hc3RfcmVxID0gW107XG5cdFx0XHRcdFx0XHQvL+S4u+aVsOaNruexu+WxnuaAp1xuXHRcdFx0XHRcdFx0dmFyIGNsYXNzYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGNsYXNzYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBjbGFzc2F0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0bWFzdF9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRtYXN0X3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRtYXN0X3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0XHRcdC8v5a2Q5pWw5o2u57G75bGe5oCnXG5cdFx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdGVkdHlwZTogJzcnLCAvL1wiMFwiLFxuXHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0XHRjbHNpZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHRcdFx0bWFzdF9hdHRyOiBtYXN0X3JlcSxcblx0XHRcdFx0XHRcdFx0aW5wdXRQYXJhbXRlcjogW3tcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiAnaW5wdXRfMzAzNycsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHRoaXMuJGRhdGEuc2NhbkNvZGVWYWxcblx0XHRcdFx0XHRcdFx0fV1cblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0dGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pXG5cdFx0fSxcblx0XHRzY2FuX29uZXZlbnQoZSkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZS50YXJnZXQpO1xuXHRcdFx0aWYgKGUudGFyZ2V0LnZhbHVlKSB7XG5cdFx0XHRcdHZhciBpc2ZsYWcgPSB0cnVlO1xuXHRcdFx0XHRmb3IgKHZhciBpIGluIHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0KSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2ldLnNjYW5Db2RlVmFsID09IGUudGFyZ2V0LnZhbHVlKVxuXHRcdFx0XHRcdFx0aXNmbGFnID0gZmFsc2U7XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHmn6Xor6LmlbDmja5cblx0XHRcdFx0aWYgKGlzZmxhZykge1xuXHRcdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsID0gZS50YXJnZXQudmFsdWU7XG5cdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5JbnB1dF9DaGFuZ2VfRXZlbnQuSUQ7XG5cdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdHZhciBtYXN0X3JlcSA9IFtdO1xuXHRcdFx0XHRcdFx0Ly/kuLvmlbDmja7nsbvlsZ7mgKdcblx0XHRcdFx0XHRcdHZhciBjbGFzc2F0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBjbGFzc2F0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gY2xhc3NhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRcdG1hc3RfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0bWFzdF9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0bWFzdF9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0XHQvL+WtkOaVsOaNruexu+WxnuaAp1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRlZHR5cGU6ICc3JywgLy9cIjBcIixcblx0XHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdFx0Y2xzaWQ6ICdNQk9YJywgLy90aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRhdHRyOiByZXEsXG5cdFx0XHRcdFx0XHRcdG1hc3RfYXR0cjogbWFzdF9yZXEsXG5cdFx0XHRcdFx0XHRcdGlucHV0UGFyYW10ZXI6IFt7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogJ2lucHV0XzMwMzcnLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiB0aGlzLiRkYXRhLnNjYW5Db2RlVmFsXG5cdFx0XHRcdFx0XHRcdH1dXG5cdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdHRoaXMuc2Nhbl9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbywgXCJcIik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRvbmFycm93KGluZGV4LCBvcGVuKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhpbmRleCsnLS0nK29wZW4pO1xuXHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5PcGVuO1xuXHRcdFx0aWYgKCFkYXRhX2F0dHIpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlXG5cdFx0XHRcdFx0LnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSBvcGVuID09IHRydWUgPyBmYWxzZSA6IHRydWU7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltpbmRleF0uT3BlbiA9IG9wZW4gPT0gdHJ1ZSA/IGZhbHNlIDpcblx0XHRcdFx0dHJ1ZTtcblx0XHR9LFxuXHRcdG9uZGF0ZVRpbWUoZSkge1xuXHRcdFx0Ly9jb25zb2xlLmxvZyhlLnRhcmdldClcblx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU7XG5cdFx0XHRpZiAoIWRhdGFfYXR0cikge1xuXHRcdFx0XHR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2Vcblx0XHRcdFx0XHQudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSA9IGUudGFyZ2V0LnZhbHVlO1xuXHRcdFx0XHRyZXR1cm47XG5cdFx0XHR9XG5cdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSBlLnRhcmdldFxuXHRcdFx0LnZhbHVlO1xuXG5cdFx0fSxcblx0XHRvbmNoYW5nZShlKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHR2YXIgdmFsdWUgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uZGljdGl0ZW1bZVxuXHRcdFx0XHQudGFyZ2V0LnZhbHVlXTtcblx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV07XG5cdFx0XHRjb25zb2xlLmxvZyhkYXRhX2F0dHIpO1xuXHRcdFx0aWYgKHZhbHVlLk5hbWUgIT0gZGF0YV9hdHRyLlZhbHVlKSB7XG5cdFx0XHRcdHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSA9IHZhbHVlXG5cdFx0XHRcdC5OYW1lO1xuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV1cblx0XHRcdFx0LlZhbHVlKTtcblx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV1cblx0XHRcdFx0XHQuYWN0aW9uO1xuXHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdC8vIHNlbGYuZXZlbnRfbm9fc3ViID0gMTtcblx0XHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0fSxcblx0XHRvbmNoYW5nZTIoaXRlbSwgdmFsdWUsIGRlbHZhbHVlKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhpdGVtKTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKHZhbHVlKTtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGRlbHZhbHVlKTtcblx0XHRcdGlmIChpdGVtLmxlbmd0aCA9PSAwKSB7IC8v5Li656m65pe277yM5riF56m65bGe5oCndmFsdWVcblx0XHRcdFx0dmFyIGluZGV4LCBpaW5kZXgsIGRpbmRleCA9IDA7XG5cdFx0XHRcdGZvciAodmFyIGkgaW4gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0KSB7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaiBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cikge1xuXHRcdFx0XHRcdFx0aWYgKGRlbHZhbHVlWzBdLmF0dHIgPT0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2ldLkF0dHJbal0uTmFtZSkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaV0uQXR0cltqXS5WYWx1ZSA9IFwiXCI7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGZvciAodmFyIHYgaW4gaXRlbSkge1xuXHRcdFx0XHR2YXIgaW5kZXgsIGlpbmRleCwgZGluZGV4ID0gMDtcblx0XHRcdFx0Zm9yICh2YXIgaSBpbiB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QpIHtcblx0XHRcdFx0XHRmb3IgKHZhciBqIGluIHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyKSB7XG5cdFx0XHRcdFx0XHRpZiAoaXRlbVt2XS5hdHRyID09IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpXS5BdHRyW2pdLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0aW5kZXggPSBpO1xuXHRcdFx0XHRcdFx0XHRpaW5kZXggPSBqO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgaXRlbXZhbHVlID0gaXRlbVt2XTtcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XG5cdFx0XHRcdGlmIChpdGVtdmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5WYWx1ZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLlZhbHVlKTtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtpbmRleF0uQXR0cltpaW5kZXhdLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0Ly8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5a2X5YW4JyB8fCBhci5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBhci5UeXBlID09ICflrZflhbgt5pW05pWwJylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBpdGVtdmFsdWUuTmFtZVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0XHRjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELFxuXHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblxuXHRcdH0sXG5cdFx0c3ViX29uY2hhbmdlKGUpIHtcblx0XHRcdGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcblx0XHRcdHZhciB2YWx1ZSA9IHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dXG5cdFx0XHRcdC5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5kaWN0aXRlbVtlLnRhcmdldC52YWx1ZV07XG5cdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFtcblx0XHRcdFx0J2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xuXHRcdFx0Y29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdGlmICh2YWx1ZS5OYW1lICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xuXHRcdFx0XHR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0WydpbmRleCddXS5BdHRyW2Vcblx0XHRcdFx0XHQudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5WYWx1ZSA9IHZhbHVlLk5hbWU7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyW2UudGFyZ2V0LmRhdGFzZXRbXG5cdFx0XHRcdFx0J2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlKTtcblx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cltlLnRhcmdldC5kYXRhc2V0W1xuXHRcdFx0XHRcdCdpbmRleCddXS5BdHRyW2UudGFyZ2V0LmRhdGFzZXRbJ2lpbmRleCddXS5hY3Rpb247XG5cdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0Ly8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtlLnRhcmdldC5kYXRhc2V0WydpaWluZGV4J11dLnN1YkNsYXNzQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdH0sXG5cdFx0c3ViX29uY2hhbmdlMihpdGVtLCB2YWx1ZSwgZGVsdmFsdWUpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGl0ZW0pO1xuXHRcdFx0Ly8gY29uc29sZS5sb2codmFsdWUpO1xuXHRcdFx0Ly8gY29uc29sZS5sb2coZGVsdmFsdWUpO1xuXHRcdFx0dmFyIHN1YkNsYXNzQXR0ciA9IHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2lpaW5kZXgnXV0uc3ViQ2xhc3NBdHRyO1xuXHRcdFx0aWYgKGl0ZW0ubGVuZ3RoID09IDApIHsgLy/kuLrnqbrml7bvvIzmuIXnqbrlsZ7mgKd2YWx1ZVxuXHRcdFx0XHR2YXIgaW5kZXgsIGlpbmRleCwgZGluZGV4ID0gMDtcblx0XHRcdFx0Zm9yICh2YXIgaSBpbiBzdWJDbGFzc0F0dHIpIHtcblx0XHRcdFx0XHRmb3IgKHZhciBqIGluIHN1YkNsYXNzQXR0cltpXS5BdHRyKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBkIGluIHN1YkNsYXNzQXR0cltpXS5BdHRyW2pdLmRpY3RpdGVtKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChkZWx2YWx1ZVswXS5OYW1lID09IHN1YkNsYXNzQXR0cltpXS5BdHRyW2pdLmRpY3RpdGVtW2RdLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRzdWJDbGFzc0F0dHJbaV0uQXR0cltqXS5WYWx1ZSA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblxuXHRcdFx0Zm9yICh2YXIgdiBpbiBpdGVtKSB7XG5cdFx0XHRcdHZhciBpbmRleCwgaWluZGV4LCBkaW5kZXggPSAwO1xuXHRcdFx0XHRmb3IgKHZhciBpIGluIHN1YkNsYXNzQXR0cikge1xuXHRcdFx0XHRcdGZvciAodmFyIGogaW4gc3ViQ2xhc3NBdHRyW2ldLkF0dHIpIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIGQgaW4gc3ViQ2xhc3NBdHRyW2ldLkF0dHJbal0uZGljdGl0ZW0pIHtcblx0XHRcdFx0XHRcdFx0aWYgKGl0ZW1bdl0uTmFtZSA9PSBzdWJDbGFzc0F0dHJbaV0uQXR0cltqXS5kaWN0aXRlbVtkXS5OYW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0aW5kZXggPSBpO1xuXHRcdFx0XHRcdFx0XHRcdGlpbmRleCA9IGo7XG5cdFx0XHRcdFx0XHRcdFx0ZGluZGV4ID0gZDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgaXRlbXZhbHVlID0gaXRlbVt2XTtcblx0XHRcdFx0dmFyIGRhdGFfYXR0ciA9IHN1YkNsYXNzQXR0cltpbmRleF0uQXR0cltpaW5kZXhdO1xuXG5cdFx0XHRcdGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XG5cdFx0XHRcdGlmIChpdGVtdmFsdWUuTmFtZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0XHRzdWJDbGFzc0F0dHJbaW5kZXhdLkF0dHJbaWluZGV4XS5WYWx1ZSA9IHZhbHVlO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKHN1YkNsYXNzQXR0cltpbmRleF0uQXR0cltpaW5kZXhdLlZhbHVlKTtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHN1YkNsYXNzQXR0cltpbmRleF0uQXR0cltpaW5kZXhdLmFjdGlvbjtcblx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0Ly8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdFx0dmFyIGF0dHJsaXN0ID0gc3ViQ2xhc3NBdHRyO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5a2X5YW4JyB8fCBhci5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBhci5UeXBlID09ICflrZflhbgt5pW05pWwJylcblx0XHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFsOiBpdGVtdmFsdWUuTmFtZVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0XHRjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELFxuXHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0dGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblxuXHRcdH0sXG5cdFx0b25ldmVudChlKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xuXHRcdFx0aWYgKCFkYXRhX2F0dHIpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlXG5cdFx0XHRcdFx0LnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSBlLnRhcmdldC52YWx1ZTtcblx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0fVxuXHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YV9hdHRyKTtcblx0XHRcdGlmIChlLnRhcmdldC52YWx1ZSAhPSBkYXRhX2F0dHIuVmFsdWUpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gZS50YXJnZXRcblx0XHRcdFx0XHQudmFsdWU7XG5cdFx0XHRcdC8vIHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLmFjdGlvbjtcblx0XHRcdFx0Ly/lrZDmlbDmja7nsbvmiavnoIHljLrkuovku7bohJrmnKxcblx0XHRcdFx0dmFyIGV2ZW50aWQgPSB0aGlzLiRkYXRhLnBhcmFtLlNjYW5fQ29kZS5JbnB1dF9DaGFuZ2VfRXZlbnQuSUQ7XG5cdFx0XHRcdGlmIChldmVudGlkKSB7XG5cdFx0XHRcdFx0Ly8gc2VsZi5ldmVudF9ub19zdWIgPSAxO1xuXHRcdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7IC8v5Li75pWw5o2u57G75bGe5oCnXG5cdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjdcIiwgLy9cIjBcIixcblx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRjbHNpZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCxcblx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdFx0bWFzdF9hdHRyOiBbXSxcblx0XHRcdFx0XHRcdGlucHV0UGFyYW10ZXI6IFt7XG5cdFx0XHRcdFx0XHRcdGF0dHI6ICdtYXN0X2lucHV0XzMwMzcnLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogZS50YXJnZXQudmFsdWVcblx0XHRcdFx0XHRcdH1dXG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5zY2FuX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBcIlwiKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0fSxcblx0XHRvbmNoZWNrKGUpIHtcblx0XHRcdC8vIGNvbnNvbGUubG9nKGUudGFyZ2V0KTtcblx0XHRcdHZhciBpc2NoZWNrZWQgPSBlLnRhcmdldC5kYXRhc2V0LmlzY2hlY2sgPyBmYWxzZSA6IHRydWU7XG5cdFx0XHR2YXIgZGF0YV9hdHRyID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dO1xuXHRcdFx0aWYgKCFkYXRhX2F0dHIpIHtcblx0XHRcdFx0dGhpcy4kZGF0YS5zdWJQYW5lbExpc3RbZS50YXJnZXQuZGF0YXNldFsnaWlpbmRleCddXS5zdWJDbGFzc0F0dHJbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlXG5cdFx0XHRcdFx0LnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSBpc2NoZWNrZWQ7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGFfYXR0cik7XG5cdFx0XHRpZiAoaXNjaGVja2VkICE9IGRhdGFfYXR0ci5WYWx1ZSkge1xuXHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWUgPSBpc2NoZWNrZWQ7XG5cdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dXG5cdFx0XHRcdFx0LmFjdGlvbjtcblx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHQvLyBzZWxmLmV2ZW50X25vX3N1YiA9IDE7XG5cdFx0XHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbDogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWw6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdGVkdHlwZTogXCIwXCIsXG5cdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0XHRcdHJvYmppZDogJycsXG5cdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0YXR0cjogcmVxLFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcblx0XHRcdFx0fVxuXHRcdFx0fVxuXG5cdFx0fSxcblx0XHRpbnB1dFZhbExpc3RJc0RlbChpbmRleCkge1xuXHRcdFx0Ly8gY29uc29sZS5sb2coaW5kZXgpO1xuXHRcdFx0dGhpcy4kZGF0YS5pbnB1dFZhbExpc3Quc3BsaWNlKGluZGV4LCAxKTsgLy/liKDpmaR0YWJQYWdlanNvbueahOWGheWuuVxuXHRcdFx0Ly8gY29uc29sZS5sb2codGhpcy4kZGF0YS5pbnB1dFZhbExpc3QpO1xuXHRcdH0sXG5cdFx0YWRkcmVzc2NoYW5nZShlKSB7XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHRjb25zb2xlLmxvZyhlLmRhdGEuam9pbignOycpKVxuXHRcdFx0dGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlZhbHVlID0gZS5kYXRhXG5cdFx0XHRcdC5qb2luKCc7Jyk7XG5cdFx0fSxcblx0XHRjbGFzc0F0dHJfZXh0QnV0dG9uKGluZGV4LCBpaW5kZXgpIHtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgYmVmb3JlX2NsaWNrX2J1dHRvbiA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5iZWZvcmVfY2xpY2tfYnV0dG9uO1xuXHRcdFx0dmFyIGJ1dHRvbl9jYWxsYmFjayA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XS5idXR0b25fY2FsbGJhY2s7XG5cdFx0XHRpZiAoIWJlZm9yZV9jbGlja19idXR0b24pIHtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0Y29udGVudDogXCJiZWZvcmVfY2xpY2tfYnV0dG9uLWV2ZW50X2lk5Li656m677yBXCIsXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdGlmICghYnV0dG9uX2NhbGxiYWNrKSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwiYnV0dG9uX2NhbGxiYWNrLWV2ZW50X2lk5Li656m677yBXCIsXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHRcdHJldHVybjtcblx0XHRcdH1cblx0XHRcdHZhciBkYXRhX2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbaW5kZXhdLkF0dHJbaWluZGV4XTtcblx0XHRcdHRoaXMuRGF0YU9ialJ1bkN1c3RvbUV2ZW50X1JldHVybihiZWZvcmVfY2xpY2tfYnV0dG9uLCBkYXRhX2F0dHIsIGJ1dHRvbl9jYWxsYmFjaywgaW5kZXgsIGlpbmRleCk7XG5cdFx0fSxcblx0XHRjbGFzc0F0dHJfQWRkUGVyKGluZGV4LCBpaW5kZXgpIHtcblx0XHRcdHZhciBwYXJhbSA9IHtcblx0XHRcdFx0aW5kZXg6IGluZGV4LFxuXHRcdFx0XHRpaW5kZXg6IGlpbmRleFxuXHRcdFx0fTtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdHVybDogJy4uL3NlbHBzbi9pbmRleD9tdWxpdD1mYWxzZSZwYXJhbT0nICsgSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxuXHRcdFx0XHRldmVudHM6IHtcblx0XHRcdFx0XHRBZGRQZXIoZGF0YSwgcGFyYW0pIHtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKGRhdGEpO1xuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbHVlID0gZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEID0gZGF0YVswXS5Mb2dpbiArICc7JyArXG5cdFx0XHRcdFx0XHRcdGRhdGFbMF0uTmFtZTtcblxuXHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xuXHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnRpZCA9IGV2ZW50aWQudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0XHRcdGVkdHlwZTogXCI0XCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRyY2xzaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRyb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHR1c2VybG9naW46IGRhdGFbMF0uTG9naW4sXG5cdFx0XHRcdFx0XHRcdFx0XHRjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogW10sXG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gdmFyIGRhdGFfYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XTtcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0Y2xhc3NBdHRyX0FkZFJlZihlKSB7XG5cdFx0XHRjb25zb2xlLmxvZyhlLnRhcmdldCk7XG5cdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdGNvbnRlbnQ6IFwi5q2k5Yqf6IO96L+Y5pyq5a6e546w77yBXCIsXG5cdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0fSk7XG5cdFx0XHQvLyB2YXIgdmFsdWU9dGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2UudGFyZ2V0LmRhdGFzZXRbJ2luZGV4J11dLkF0dHJbZS50YXJnZXQuZGF0YXNldFsnaWluZGV4J11dLlJlbENsc1tlLnRhcmdldC52YWx1ZV07XG5cdFx0XHQvLyB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbZS50YXJnZXQuZGF0YXNldFsnaW5kZXgnXV0uQXR0cltlLnRhcmdldC5kYXRhc2V0WydpaW5kZXgnXV0uVmFsdWU9dmFsdWU7XG5cdFx0fSxcblx0XHRjbGFzc0F0dHJfQWRkUHJqKGluZGV4LCBpaW5kZXgpIHtcblx0XHRcdHZhciBwYXJhbSA9IHtcblx0XHRcdFx0aW5kZXg6IGluZGV4LFxuXHRcdFx0XHRpaW5kZXg6IGlpbmRleFxuXHRcdFx0fTtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR1bmkubmF2aWdhdGVUbyh7XG5cdFx0XHRcdHVybDogJy4uL3NlbFByai9pbmRleD9yZWxhdGlvbj0tMSZwYXJhbT0nICsgSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxuXHRcdFx0XHRldmVudHM6IHtcblx0XHRcdFx0XHRBZGRQZXIoZGF0YSwgcGFyYW0pIHtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKHBhcmFtKTtcblx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGRhdGEpO1xuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbHVlID0gZGF0YVswXS5OYW1lO1xuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbS5paW5kZXhdLlZhbElEID0gZGF0YVswXS5JRCArICc7JyArXG5cdFx0XHRcdFx0XHRcdGRhdGFbMF0uTmFtZTtcblxuXHRcdFx0XHRcdFx0dmFyIGV2ZW50aWQgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W3BhcmFtLmluZGV4XS5BdHRyW3BhcmFtLmlpbmRleF0uYWN0aW9uO1xuXHRcdFx0XHRcdFx0aWYgKGV2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0ZXZlbnRpZCA9IGV2ZW50aWQudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRpZCkge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0XHRcdGVkdHlwZTogXCIyXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6IGRhdGFbMF0uSUQsXG5cdFx0XHRcdFx0XHRcdFx0XHRyY2xzaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRyb2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHR1c2VybG9naW46IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdG9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogW10sXG5cdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0Ly8gdmFyIGRhdGFfYXR0ciA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW0uaWluZGV4XTtcblx0XHRcdFx0XHRcdFx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0c2F2YSgpIHtcblx0XHRcdGlmICh0aGlzLiRkYXRhLnBhcmFtLkJlZm9yZV9PS19FdmVudCkgLy/liKTmlq3lip/og73ngrnlj4LmlbDmmK/lkKbmnInnoa7lrprliY3ohJrmnKxcblx0XHRcdFx0dGhpcy5zY2FuX09LRGF0YU9ialJ1bkN1c3RvbUV2ZW50KHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50LklEKTtcblx0XHRcdGVsc2UgaWYgKHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQpIC8v5Yik5pat5Yqf6IO954K55Y+C5pWw5piv5ZCm5pyJ56Gu5a6a5ZCO6ISa5pysXG5cdFx0XHRcdHRoaXMuc2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudCh0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX09LX0V2ZW50LklEKTtcblx0XHRcdGVsc2Vcblx0XHRcdFx0dW5pLm5hdmlnYXRlQmFjayh7XG5cdFx0XHRcdFx0ZGVsdGE6IDFcblx0XHRcdFx0fSk7IC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxuXHRcdH0sXG5cdFx0dHJpZ2dlcigpIHsgXG5cdFx0XHRpZiAodGhpcy4kZGF0YS5wYXJhbS5CZWZvcmVfVHJpZ2dlcl9FdmVudCkgLy/liKTmlq3lip/og73ngrnlj4LmlbDmmK/lkKbmnInop6blj5HliY3ohJrmnKxcblx0XHRcdFx0dGhpcy5zY2FuX1RyaWdnZXJEYXRhT2JqUnVuQ3VzdG9tRXZlbnQodGhpcy4kZGF0YS5wYXJhbS5CZWZvcmVfVHJpZ2dlcl9FdmVudC5JRCk7XG5cdFx0XHRlbHNlIGlmICh0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX1RyaWdnZXJfRXZlbnQpIC8v5Yik5pat5Yqf6IO954K55Y+C5pWw5piv5ZCm5pyJ6Kem5Y+R5ZCO6ISa5pysXG5cdFx0XHRcdHRoaXMuc2Nhbl9UcmlnZ2VyRGF0YU9ialJ1bkN1c3RvbUV2ZW50KHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfVHJpZ2dlcl9FdmVudC5JRCk7XG5cdFx0XHRlbHNlc3Ncblx0XHRcdFx0dW5pLm5hdmlnYXRlQmFjayh7XG5cdFx0XHRcdFx0ZGVsdGE6IDFcblx0XHRcdFx0fSk7IC8v6L+U5Zue5bGC5pWw77yMMuWImeS4iuS4iumhtVxuXHRcdH0sXG5cdFx0YWRkKCkge1xuXHRcdFx0dW5pLnNob3dMb2FkaW5nKHtcblx0XHRcdFx0dGl0bGU6IFwi5Yqg6L295LitLi4uXCIsXG5cdFx0XHRcdG1hc2s6IHRydWVcblx0XHRcdH0pO1xuXHRcdFx0dmFyIHJlcSA9IFtdO1xuXHRcdFx0dmFyIGF0dHJsaXN0ID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7fpgInmi6knIHx8IGFyLlZhbHVlID09ICfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0bmFtZTogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0bmFtZTogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICflrZflhbgnIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3lrZfnrKbkuLInIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRpZiAoYXIuc2VsZWN0ID09IHRydWUpIHsgLy/liKTmlq3kuIvmi4nmmK/lkKblpJrpgIlcblx0XHRcdFx0XHRcdFx0dmFyIHZhbFN0ciA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIHYgaW4gYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodmFsU3RyKVxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyICs9IFwiO1wiO1xuXHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBhci5WYWx1ZVt2XTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0bmFtZTogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdmFsU3RyXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRuYW1lOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0bmFtZTogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRpZiAoYXIubm90ZW1wdHkgPT0gdHJ1ZSAmJiAhYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdC8vIGlmKGFyLk5vdEVtcHR5PT0nMScpe1xuXHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogYXIuRGlzcE5hbWUgKyAn5LiN6IO95Li656m677yBJyxcblx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBlbnZpcm9tZW50ID0ge1xuXHRcdFx0XHQnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy8g5Yqf6IO954K55Li75pWw5o2u57G75qCH6K+GXG5cdFx0XHRcdCdidXR0b24nOiAndG9wJywgLy8gdG9wL2JvdHRvbVxuXHRcdFx0XHRidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdG1hc3Rlcjoge1xuXHRcdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELFxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdGNsYXNzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsXG5cdFx0XHRcdGRhdGFfb2JqX2lkOiAnJyxcblx0XHRcdFx0bWFzdGVyY2xzaWQ6ICcnLFxuXHRcdFx0XHRyZXE6IEpTT04uc3RyaW5naWZ5KHJlcSksXG5cdFx0XHRcdHVwZmlsZTogSlNPTi5zdHJpbmdpZnkoW10pLFxuXHRcdFx0XHRwb3N0X2RhdGE6IEpTT04uc3RyaW5naWZ5KHt9KSxcblx0XHRcdFx0Y29tcG9zZTogSlNPTi5zdHJpbmdpZnkoW10pLFxuXHRcdFx0XHRyZWZkYXRhc3RvcmU6IEpTT04uc3RyaW5naWZ5KFtdKSxcblx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCksXG5cdFx0XHRcdG5vdF90cmlnZ2VyX3N5c19ldmVudDogJydcblx0XHRcdH07XG5cblx0XHRcdC8vIHJldHVyblxuXHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ2FkZGNsYXNzYXR0cicsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdHZhciBhY3Rpb24gPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YS5BY3Rpb24pO1xuXHRcdFx0XHRcdGlmIChhY3Rpb24ucmV0ID09ICcwJykge1xuXHRcdFx0XHRcdFx0aWYgKGFjdGlvbi5yZXN1bHRfdHlwZSA9PSAnMCcpIHtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IGFjdGlvbi5yZXN1bHQsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogXCJzdWNjZXNzXCIsXG5cdFx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDMwMDBcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHQvLyBcIntcInJldFwiOjAsIFwicmVzdWx0X3R5cGVcIjowLCBcInJlc3VsdFwiOlwi5Yib5bu65oiQ5YqfMTIzMTIzMTIzXCIsXCJpbmZvXCI6XCJcIn1cIlxuXHRcdFx0XHRcdH1cblx0XHRcdFx0XHQvL+WIt+aWsFxuXHRcdFx0XHRcdHVuaS5yZWRpcmVjdFRvKHtcblx0XHRcdFx0XHRcdHVybDogJy4uL21vZGFsL21zX2NsYXNzQXR0cj9wYXJhbT0nICsgSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5wYXJhbSkgK1xuXHRcdFx0XHRcdFx0XHRcIiZ0aXRsZW5hbWU9XCIgKyB0aGlzLiRkYXRhLnRpdGxlXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Ly8gdGhpcy5jbGFzc19hdHRyX2luaXQoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivr1wiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHRjbGFzc19hdHRyX2luaXQoKSB7XG5cdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcblx0XHRcdHZhciBuZXdhdHRybGlzdCA9IFtdO1xuXHRcdFx0aWYgKHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR2YXIgb3BlbiA9IGF0dHJsaXN0W2ldLm9wZW47XG5cdFx0XHRcdFx0dmFyIG5hbWUgPSBhdHRybGlzdFtpXS5hdHRyZ3JvdXBfbmFtZTtcblx0XHRcdFx0XHR2YXIgYXR0cnMgPSBhdHRybGlzdFtpXS5hdHRycztcblx0XHRcdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHRcdFx0dmFyIGNsc2F0dHIgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Rbc107XG5cdFx0XHRcdFx0XHRpZiAobmFtZSA9PSBjbHNhdHRyLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBbXTtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRycy5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGwgPSAwOyBsIDwgY2xzYXR0ci5BdHRyLmxlbmd0aDsgbCsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgY2EgPSBjbHNhdHRyLkF0dHJbbF07XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cnNbal0uYXR0ciA9PSBjYS5OYW1lKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmFjdGlvbiA9IGF0dHJzW2pdLmFjdGlvbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZWRpdCA9IGF0dHJzW2pdLmVkaXQ7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLm5vdGVtcHR5ID0gYXR0cnNbal0ubm90ZW1wdHk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmV4dF9idXR0b24gPSBhdHRyc1tqXS5leHRfYnV0dG9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5idXR0b25faW1nID0gYXR0cnNbal0uYnV0dG9uX2ltZztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYnV0dG9uX3Rvb2x0aXAgPSBhdHRyc1tqXS5idXR0b25fdG9vbHRpcDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYmVmb3JlX2NsaWNrX2J1dHRvbiA9IGF0dHJzW2pdLmJlZm9yZV9jbGlja19idXR0b247XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmJ1dHRvbl9jYWxsYmFjayA9IGF0dHJzW2pdLmJ1dHRvbl9jYWxsYmFjaztcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuaGlkZGVuID0gYXR0cnNbal0uaGlkZGVuO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5zZWxlY3QgPSBhdHRyc1tqXS5zZWxlY3QgPT0gdW5kZWZpbmVkID8gZmFsc2UgOiBhdHRyc1tqXS5zZWxlY3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gXCJcIjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLmRpY3RpdGVtKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLnNlbGVjdCA9PSB0cnVlKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBbXTsgLy9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+36YCJ5oupJzsgLy9jYS5kaWN0aXRlbVswXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RpdGVtbGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgPSAwOyBkIDwgY2EuZGljdGl0ZW0ubGVuZ3RoOyBkKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLmxhYmVsID0gY2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0udmFsdWUgPSBjYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS5hdHRyID0gY2EuTmFtZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5kaWN0aXRlbVtkXS5DTl9DX0lTX0RFRkFVTFQgPT0gJzEnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLlR5cGUgPT0gJ+aXpeacnycgfHwgY2EuVHlwZSA9PSAn5pe26Ze0Jykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBub3dEYXRlID0gbmV3IERhdGUoKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGF0ZSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHllYXI6IG5vd0RhdGUuZ2V0RnVsbFllYXIoKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdG1vbnRoOiBub3dEYXRlLmdldE1vbnRoKCkgKyAxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGF5OiBub3dEYXRlLmdldERhdGUoKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGRhdGUueWVhciArICctJyArIChkYXRlLm1vbnRoID49IDEwID8gZGF0ZS5tb250aCA6ICcwJyArIGRhdGVcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5tb250aCkgKyAnLScgKyAoZGF0ZS5kYXkgPj0gMTAgPyBkYXRlLmRheSA6ICcwJyArIGRhdGUuZGF5KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlbENsc0xpc3QgPSBbXTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0cl9yZXNjbHMgPSBjYS5SZWxDbHMuc3BsaXQoJywnKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpaSBpbiBhdHRyX3Jlc2Nscykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIHJlc2NscyA9IGF0dHJfcmVzY2xzW2lpXS5zcGxpdCgnfCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmVsQ2xzTGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWQ6IHJlc2Nsc1swXSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bmFtZTogcmVzY2xzWzFdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuUmVsQ2xzTGlzdCA9IHJlbENsc0xpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSAn6K+3Jztcblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn55yB5biC5Yy6Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHIucHVzaChjYSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdG5ld2F0dHJsaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdEJrQ29sb3I6IGNsc2F0dHIuQmtDb2xvcixcblx0XHRcdFx0XHRcdFx0XHRIYXNBY2U6IGNsc2F0dHIuSGFzQWNlLFxuXHRcdFx0XHRcdFx0XHRcdEltZ0ZvbnRTdHlsZTogY2xzYXR0ci5JbWdGb250U3R5bGUsXG5cdFx0XHRcdFx0XHRcdFx0TmFtZTogY2xzYXR0ci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdE9yZGVyOiBjbHNhdHRyLk9yZGVyLFxuXHRcdFx0XHRcdFx0XHRcdE9wZW46IG9wZW4sXG5cdFx0XHRcdFx0XHRcdFx0QXR0cjogYXR0cixcblx0XHRcdFx0XHRcdFx0XHRjb250cm9sX3N0eWxlOiB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmNvbnRyb2xfc3R5bGUsXG5cdFx0XHRcdFx0XHRcdFx0dGl0bGVfcF93ZGl0aDogdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi50aXRsZV9wX3dkaXRoLFxuXHRcdFx0XHRcdFx0XHRcdEZvbnQ6IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuRm9udCA/IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGVcblx0XHRcdFx0XHRcdFx0XHRcdC5TdHlsZURlZi5Gb250IDoge30sXG5cdFx0XHRcdFx0XHRcdFx0QmtfQ29sb3I6IHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuQmtfQ29sb3IgPyB0aGlzLiRkYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHQuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuQmtfQ29sb3IgOiAnI0ZGRkZGRicsXG5cdFx0XHRcdFx0XHRcdFx0VGV4dF9Db2xvcjogdGhpcy4kZGF0YS5jbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5UZXh0X0NvbG9yID8gdGhpcy4kZGF0YVxuXHRcdFx0XHRcdFx0XHRcdFx0LmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLlRleHRfQ29sb3IgOiAnIzAwMDAwMCdcblx0XHRcdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0aWYgKG5ld2F0dHJsaXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3QgPSBuZXdhdHRybGlzdDtcblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHRcdGlmICh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmKSB7XG5cdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuY2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnNob3dfc3R5bGVcblx0XHRcdFx0XHRcdC8vICRlbC5maW5kKCcuYXR0cl9maWVsZCcpLnByb3AoJ3JlYWRvbmx5JywgdHJ1ZSk7XG5cdFx0XHRcdFx0XHQvLyAkZWwuZmluZCgnLmF0dHJfZmllbGQnKS5wcm9wKCdkaXNhYmxlZCcsIHRydWUpO1xuXHRcdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLmF0dHJzXG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuYXR0cixcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci52YWx1ZSA/IGFyLnZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXG5cdFx0XHRcdHZhciBldmVudGxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLmV2ZW50O1xuXHRcdFx0XHRpZiAoZXZlbnRsaXN0KSB7XG5cdFx0XHRcdFx0aWYgKGV2ZW50bGlzdC5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGV2ZW50bGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfb2snKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5lZGl0X29rX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnaW5pdGlhbCcpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmVkaXRfaW5pdGFsX2V2ZW50ID0gZXZlbnRsaXN0W2ldO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGV2ZW50bGlzdFtpXS5ldmVudF9pZCA9PSAnYmVmb3JlX3NlbGVjdF9jb21wb3NlJykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuZWRpdF9zZWxlY3RfY29tcG9zZV9ldmVudCA9IGV2ZW50bGlzdFtpXS5zY3JpcF9pZDtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmVkaXRfY29tcG9zZV9jbHNfaWQgPSBldmVudGxpc3RbaV0uY29tcG9zZV9jbHNfaWQ7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdFx0Ly8gY29uc29sZS5sb2cocmVxKTtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQpIHtcblx0XHRcdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQuc2NyaXBfaWQ7XG5cdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRldmVudGlkOiBldmVudGlkLFxuXHRcdFx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0XHRcdHByb2plY3RpZDogJycsXG5cdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0XHRcdHVzZXJsb2dpbjogJycsXG5cdFx0XHRcdFx0XHRjbHNpZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELFxuXHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRhdHRyOiByZXEsXG5cdFx0XHRcdFx0fVxuXHRcdFx0XHRcdHRoaXMuaW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKTtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmNsYXNzR3JpZFN0eWxlKTtcblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0KTtcblxuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0Y29udGVudDogXCLmnKrmib7liLDlj6/mmL7npLrnmoTnmoTlsZ7mgKdcIixcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHR9LFxuXHRcdHN1YkNsYXNzX2F0dHJfaW5pdCgpIHtcblx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxuXHRcdFx0dmFyIG5ld2F0dHJsaXN0ID0gW107XG5cdFx0XHRpZiAodGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBvcGVuID0gYXR0cmxpc3RbaV0ub3Blbjtcblx0XHRcdFx0XHR2YXIgbmFtZSA9IGF0dHJsaXN0W2ldLmF0dHJncm91cF9uYW1lO1xuXHRcdFx0XHRcdHZhciBhdHRycyA9IGF0dHJsaXN0W2ldLmF0dHJzO1xuXHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHRcdFx0XHR2YXIgY2xzYXR0ciA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdFtzXTtcblx0XHRcdFx0XHRcdGlmIChuYW1lID09IGNsc2F0dHIuTmFtZSkge1xuXHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IFtdO1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHJzLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgbCA9IDA7IGwgPCBjbHNhdHRyLkF0dHIubGVuZ3RoOyBsKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYSA9IGNsc2F0dHIuQXR0cltsXTtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyc1tqXS5hdHRyID09IGNhLk5hbWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYWN0aW9uID0gYXR0cnNbal0uYWN0aW9uO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5lZGl0ID0gYXR0cnNbal0uZWRpdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2Eubm90ZW1wdHkgPSBhdHRyc1tqXS5ub3RlbXB0eTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZXh0X2J1dHRvbiA9IGF0dHJzW2pdLmV4dF9idXR0b247XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmJ1dHRvbl9pbWcgPSBhdHRyc1tqXS5idXR0b25faW1nO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5idXR0b25fdG9vbHRpcCA9IGF0dHJzW2pdLmJ1dHRvbl90b29sdGlwO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5iZWZvcmVfY2xpY2tfYnV0dG9uID0gYXR0cnNbal0uYmVmb3JlX2NsaWNrX2J1dHRvbjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuYnV0dG9uX2NhbGxiYWNrID0gYXR0cnNbal0uYnV0dG9uX2NhbGxiYWNrO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5oaWRkZW4gPSBhdHRyc1tqXS5oaWRkZW47XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGNhLnNlbGVjdCA9IGF0dHJzW2pdLnNlbGVjdCA9PSB1bmRlZmluZWQgPyBmYWxzZSA6IGF0dHJzW2pdLnNlbGVjdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuVmFsdWUgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuZGljdGl0ZW0pIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2Euc2VsZWN0ID09IHRydWUpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9IFtdOyAvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlbHNlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7fpgInmi6knOyAvL2NhLmRpY3RpdGVtWzBdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdGl0ZW1saXN0ID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgZCA9IDA7IGQgPCBjYS5kaWN0aXRlbS5sZW5ndGg7IGQrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW1bZF0ubGFiZWwgPSBjYS5kaWN0aXRlbVtkXS5DTl9TX05BTUU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5kaWN0aXRlbVtkXS52YWx1ZSA9IGNhLmRpY3RpdGVtW2RdLkNOX1NfTkFNRTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLmRpY3RpdGVtW2RdLmF0dHIgPSBjYS5OYW1lO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhLmRpY3RpdGVtW2RdLkNOX0NfSVNfREVGQVVMVCA9PSAnMScpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gY2EuZGljdGl0ZW1bZF0uQ05fU19OQU1FO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5pel5pyfJyB8fCBjYS5UeXBlID09ICfml7bpl7QnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIG5vd0RhdGUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBkYXRlID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0eWVhcjogbm93RGF0ZS5nZXRGdWxsWWVhcigpLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0bW9udGg6IG5vd0RhdGUuZ2V0TW9udGgoKSArIDEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkYXk6IG5vd0RhdGUuZ2V0RGF0ZSgpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gZGF0ZS55ZWFyICsgJy0nICsgKGRhdGUubW9udGggPj0gMTAgPyBkYXRlLm1vbnRoIDogJzAnICsgZGF0ZVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lm1vbnRoKSArICctJyArIChkYXRlLmRheSA+PSAxMCA/IGRhdGUuZGF5IDogJzAnICsgZGF0ZS5kYXkpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmVsQ2xzTGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyX3Jlc2NscyA9IGNhLlJlbENscy5zcGxpdCgnLCcpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGlpIGluIGF0dHJfcmVzY2xzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzY2xzID0gYXR0cl9yZXNjbHNbaWldLnNwbGl0KCd8Jyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZWxDbHNMaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZDogcmVzY2xzWzBdLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRuYW1lOiByZXNjbHNbMV1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5SZWxDbHNMaXN0ID0gcmVsQ2xzTGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjYS5WYWx1ZSA9ICfor7cnO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5UeXBlID09ICfnnIHluILljLonKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gJ+ivt+mAieaLqSc7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChjYS5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNhLlZhbHVlID0gZmFsc2U7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0YXR0ci5wdXNoKGNhKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0bmV3YXR0cmxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0QmtDb2xvcjogY2xzYXR0ci5Ca0NvbG9yLFxuXHRcdFx0XHRcdFx0XHRcdEhhc0FjZTogY2xzYXR0ci5IYXNBY2UsXG5cdFx0XHRcdFx0XHRcdFx0SW1nRm9udFN0eWxlOiBjbHNhdHRyLkltZ0ZvbnRTdHlsZSxcblx0XHRcdFx0XHRcdFx0XHROYW1lOiBjbHNhdHRyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0T3JkZXI6IGNsc2F0dHIuT3JkZXIsXG5cdFx0XHRcdFx0XHRcdFx0T3Blbjogb3Blbixcblx0XHRcdFx0XHRcdFx0XHRBdHRyOiBhdHRyLFxuXHRcdFx0XHRcdFx0XHRcdGNvbnRyb2xfc3R5bGU6IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuY29udHJvbF9zdHlsZSxcblx0XHRcdFx0XHRcdFx0XHR0aXRsZV9wX3dkaXRoOiB0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLnRpdGxlX3Bfd2RpdGgsXG5cdFx0XHRcdFx0XHRcdFx0Rm9udDogdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5Gb250ID8gdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZVxuXHRcdFx0XHRcdFx0XHRcdFx0LlN0eWxlRGVmLkZvbnQgOiB7fSxcblx0XHRcdFx0XHRcdFx0XHRCa19Db2xvcjogdGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5Ca19Db2xvciA/IHRoaXMuJGRhdGFcblx0XHRcdFx0XHRcdFx0XHRcdC5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5Ca19Db2xvciA6ICcjRkZGRkZGJyxcblx0XHRcdFx0XHRcdFx0XHRUZXh0X0NvbG9yOiB0aGlzLiRkYXRhLnN1YkNsYXNzR3JpZFN0eWxlLlN0eWxlRGVmLlRleHRfQ29sb3IgPyB0aGlzLiRkYXRhXG5cdFx0XHRcdFx0XHRcdFx0XHQuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuVGV4dF9Db2xvciA6ICcjMDAwMDAwJ1xuXHRcdFx0XHRcdFx0XHR9KVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRpZiAobmV3YXR0cmxpc3QubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCA9IG5ld2F0dHJsaXN0O1xuXHRcdFx0XHR9XG5cdFx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdFx0aWYgKHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYpIHtcblx0XHRcdFx0XHRpZiAodGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZS5TdHlsZURlZi5zaG93X3N0eWxlLmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuc2hvd19zdHlsZVxuXHRcdFx0XHRcdFx0Ly8gJGVsLmZpbmQoJy5hdHRyX2ZpZWxkJykucHJvcCgncmVhZG9ubHknLCB0cnVlKTtcblx0XHRcdFx0XHRcdC8vICRlbC5maW5kKCcuYXR0cl9maWVsZCcpLnByb3AoJ2Rpc2FibGVkJywgdHJ1ZSk7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uYXR0cnNcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5hdHRyLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLnZhbHVlID8gYXIudmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cblx0XHRcdFx0dmFyIGV2ZW50bGlzdCA9IHRoaXMuJGRhdGEuc3ViQ2xhc3NHcmlkU3R5bGUuU3R5bGVEZWYuZXZlbnQ7XG5cdFx0XHRcdGlmIChldmVudGxpc3QpIHtcblx0XHRcdFx0XHRpZiAoZXZlbnRsaXN0Lmxlbmd0aCA+IDApIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgZXZlbnRsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChldmVudGxpc3RbaV0uZXZlbnRfaWQgPT0gJ2JlZm9yZV9vaycpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLmVkaXRfb2tfZXZlbnQgPSBldmVudGxpc3RbaV07XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdpbml0aWFsJykge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuZWRpdF9pbml0YWxfZXZlbnQgPSBldmVudGxpc3RbaV07XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoZXZlbnRsaXN0W2ldLmV2ZW50X2lkID09ICdiZWZvcmVfc2VsZWN0X2NvbXBvc2UnKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5lZGl0X3NlbGVjdF9jb21wb3NlX2V2ZW50ID0gZXZlbnRsaXN0W2ldLnNjcmlwX2lkO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuJGRhdGEuZWRpdF9jb21wb3NlX2Nsc19pZCA9IGV2ZW50bGlzdFtpXS5jb21wb3NlX2Nsc19pZDtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXEpO1xuXHRcdFx0XHRpZiAodGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudCkge1xuXHRcdFx0XHRcdHZhciBldmVudGlkID0gdGhpcy4kZGF0YS5lZGl0X2luaXRhbF9ldmVudC5zY3JpcF9pZDtcblx0XHRcdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0XHRcdGV2ZW50aWQ6IGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0XHRcdHJjbHNpZDogJycsXG5cdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0XHRcdGNsc2lkOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuSUQsXG5cdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0dGhpcy5zY2FuX2luaV9EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdH1cblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy4kZGF0YS5zdWJDbGFzc0dyaWRTdHlsZSk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCk7XG5cblx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IFwi5pyq5om+5Yiw5Y+v5pi+56S655qE55qE5bGe5oCnXCIsXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9XG5cdFx0fSxcblx0XHRpbmlfRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8pIHtcblx0XHRcdHZhciBwYXJhbSA9IHtcblx0XHRcdFx0RWRpdFN0eWxlOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuVmlld19TdHlsZS5OYW1lLFxuXHRcdFx0XHRWaWV3U3R5bGU6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5WaWV3X1N0eWxlLk5hbWUsXG5cdFx0XHRcdE5vdFRyaWdnZXJTeXNFdmVudDogMCxcblx0XHRcdFx0ZW52aXJvbWVudDoge1xuXHRcdFx0XHRcdCdmdW5jdGlvbic6ICczMDAwJywgLy8g5Yqf6IO954K557yW5Y+3XG5cdFx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHRcdCdidXR0b24nOiAndG9wJywgLy8gdG9wL2JvdHRvbVxuXHRcdFx0XHRcdGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0XHRtYXN0ZXI6IHtcblx0XHRcdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahGNsc19pZFxuXHRcdFx0XHRcdFx0Ly9vYmpfaWQ6ICcnICAvLyBidXR0b249Ym90dG9t5pe2IG1hc3RlcueahG9ial9pZFxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dmFyIGlucHV0cGFyYW1ldGVyID0gJyc7XG5cdFx0XHR2YXIgZ2xvYmFsX2F0dHIgPSAnJztcblxuXHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRlZHR5cGU6IGluZm8uZWR0eXBlLFxuXHRcdFx0XHRldmVudGlkOiBpbmZvLmV2ZW50aWQsXG5cdFx0XHRcdHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQsXG5cdFx0XHRcdHJjbHNpZDogaW5mby5yY2xzaWQsXG5cdFx0XHRcdHJvYmppZDogaW5mby5yb2JqaWQsXG5cdFx0XHRcdHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sXG5cdFx0XHRcdGNsc2lkOiBpbmZvLmNsc2lkLFxuXHRcdFx0XHRvYmppZDogaW5mby5vYmppZCxcblx0XHRcdFx0YXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSxcblx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkocGFyYW0pLFxuXHRcdFx0XHRpbnB1dHBhcmFtZXRlcjogaW5wdXRwYXJhbWV0ZXIsXG5cdFx0XHRcdGdsb2JhbF9hdHRyOiBnbG9iYWxfYXR0clxuXHRcdFx0fVxuXHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XG5cdFx0XHRcdFx0aWYgKGFjdGlvbmxpc3QpIHtcblx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYWN0aW9ubGlzdC5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtqXVxuXHRcdFx0XHRcdFx0XHR2YXIgYWN0aW9uX3R5cGUgPSBhY3Rpb24uYWN0aW9uX3R5cGU7XG5cdFx0XHRcdFx0XHRcdHZhciB2YWx1ZSA9IGFjdGlvbi52YWx1ZTtcblx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbl90eXBlID09ICdzZXRfZGxnX2F0dHInKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKHZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gdmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodHlwZW9mIHZhbHVlID09ICdzdHJpbmcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbCA9IEpTT04ucGFyc2UodmFsdWUpO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2codmFsKTtcblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgdmFsLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGEgPSAwOyBhIDwgdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgbCA9IDA7IGwgPCB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbYV0uQXR0ci5sZW5ndGg7IGwrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhID0gdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0W2FdLkF0dHJbbF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsW2ldLmF0dHIgPT0gY2EuTmFtZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5a2X5YW4JyB8fCBjYS5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBjYS5UeXBlID09XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgaW4gdmFsW2ldLmNob2ljZV9saXN0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gdmFsW2ldLmNob2ljZV9saXN0W2RdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIkNOX1NfTkFNRVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTmFtZVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwibGFiZWxcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcInZhbHVlXCI6IHZhbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0cltqXS5kaWN0aXRlbSA9IHZhbFtpXS5jaG9pY2VfbGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjYS52YWx1ZSA9IHZhbFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbihzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsW2ldLmF0dHIgPT0gcy5hdHRyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHZhbFtpXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gdmFsW2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSB2YWxbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb25fdHlwZSA9PSAnb3Blbl9zZWxlY3RfdXNlcmRsZycpIHtcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzIuMlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogXCJvcGVuX3NlbGVjdF91c2VyZGxn6L+Z5LiqYWN0aW9uX3R5cGXov5jmnKrlpITnkIbvvIFcIixcblx0XHRcdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vMlwiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLplJnor68yLjFcIixcblx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdERhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBkYXRhX2F0dHIpIHtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgZW52aXJvbWVudCA9IHtcblx0XHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHRtYXN0ZXI6IHtcblx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHRcdFx0XHQvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHRlbnZpcm9tZW50LmVkaXRfZGxnID0ge1xuXHRcdFx0XHR0eXBlOiAnc21hbGwnLCAvL+Wwj+eql+WPo1xuXHRcdFx0XHRjbGFzc19pZDogdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLklELCAvL+W9k+WJjeaVsOaNruexu2lkXG5cdFx0XHR9XG5cdFx0XHRpZiAoZGF0YV9hdHRyKSB7XG5cdFx0XHRcdGVudmlyb21lbnQuZWRpdF9kbGcuZm9ybV9jb250cm9sID0geyAvL+aJgOWxnueahOihqOWNleaOp+S7tlxuXHRcdFx0XHRcdG5hbWU6IGRhdGFfYXR0ci5OYW1lLCAvL+Wtl+auteWxnuaAp1xuXHRcdFx0XHRcdHRleHQ6IGRhdGFfYXR0ci5EaXNwTmFtZSwgLy/mmL7npLrmlofmnKxcblx0XHRcdFx0XHRncm91cF9uYW1lOiBkYXRhX2F0dHIuR3JvdXBOYW1lLCAvL+WxnuaAp+e7hFxuXHRcdFx0XHRcdHR5cGU6IGRhdGFfYXR0ci5UeXBlLCAvL+Wtl+auteexu+Wei1xuXHRcdFx0XHRcdHJlYWRvbmx5OiBkYXRhX2F0dHIuUmVhZE9ubHksIC8v5piv5ZCm5Y+q6K+7XG5cdFx0XHRcdFx0YnV0dG9uX2ltZzogZGF0YV9hdHRyLmJ1dHRvbl9pbWcsIC8v5byV55So5oyJ6ZKu55qE5Zu+5qCHXG5cdFx0XHRcdFx0YnV0dG9uX3Rvb2x0aXA6IGRhdGFfYXR0ci5idXR0b25fdG9vbHRpcCAvL+W8leeUqOaMiemSrueahHRvb2x0aXBcblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRlZHR5cGU6IGluZm8uZWR0eXBlLFxuXHRcdFx0XHRldmVudGlkOiBpbmZvLmV2ZW50aWQsXG5cdFx0XHRcdHByb2plY3RpZDogaW5mby5wcm9qZWN0aWQucmVwbGFjZSgneycsICcnKS5yZXBsYWNlKCd9JywgJycpLFxuXHRcdFx0XHRyY2xzaWQ6IGluZm8ucmNsc2lkLFxuXHRcdFx0XHRyb2JqaWQ6IGluZm8ucm9iamlkLFxuXHRcdFx0XHR1c2VybG9naW46IGluZm8udXNlcmxvZ2luLFxuXHRcdFx0XHRjbHNpZDogaW5mby5jbHNpZCxcblx0XHRcdFx0b2JqaWQ6IGluZm8ub2JqaWQsXG5cdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLFxuXHRcdFx0XHRpbnB1dHBhcmFtZXRlcjogJycsXG5cdFx0XHRcdGdsb2JhbF9hdHRyOiBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKVxuXHRcdFx0fVxuXHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdGlmIChzdWNjZXNzLmNvZGUgPT0gJzAwMDAwJykge1xuXHRcdFx0XHRcdHZhciBkYXRhID0gSlNPTi5wYXJzZShzdWNjZXNzLmRhdGEpO1xuXHRcdFx0XHRcdHZhciBhY3Rpb25saXN0ID0gZGF0YS5hY3Rpb247XG5cblx0XHRcdFx0XHRpZiAoYWN0aW9ubGlzdCkge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ubGlzdCk7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFjdGlvbmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbmxpc3RbaV07XG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0W2ldLmNob2ljZV9saXN0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uTmFtZSA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cltqXS5UeXBlID09ICflrZflhbgnIHx8IGF0dHJbal0uVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlR5cGUgPT0gJ+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgaW4gcmVzdWx0W2ldLmNob2ljZV9saXN0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gcmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIkNOX1NfTkFNRVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTmFtZVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwibGFiZWxcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcInZhbHVlXCI6IHZhbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0cltqXS5kaWN0aXRlbSA9IHJlc3VsdFtpXS5jaG9pY2VfbGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0Lmxlbmd0aDsgYysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUgKyAnPT0nICsgcmVzdWx0W2ldLmF0dHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyW2pdLk5hbWUgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHJbal0uVmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgbGVuZ3RoID0gMDtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICghJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbihzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGlmIChsZW5ndGggPT0gMCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmICgkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLnZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChkYXRhLmFjdGlvbltpXS5hY3Rpb25fdHlwZSA9PSAnc2V0X2dsb2JhbF9hdHRyJykge1xuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmdsb2JhbF9hdHRyID0gZGF0YS5hY3Rpb25baV0udmFsdWUgfHwgW107XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcblx0XHRcdFx0XHRcdHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdC5sZW5ndGg7IGMrKykge1xuXHRcdFx0XHRcdFx0XHRcdHZhciBhdHRyID0gJHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtjXS5BdHRyO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uTmFtZSA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLplJnor68zXCIsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBzdWNjZXNzLm1zZyxcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSkuY2F0Y2goZXggPT4ge1xuXHRcdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzMuMVwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0T0tEYXRhT2JqUnVuQ3VzdG9tRXZlbnQoKSB7XG5cdFx0XHR2YXIgZW52aXJvbWVudCA9IHtcblx0XHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHRtYXN0ZXI6IHtcblx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblxuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXG5cdFx0XHR2YXIgZXZlbnRpZCA9IHRoaXMuJGRhdGEuZWRpdF9va19ldmVudC5zY3JpcF9pZDtcblx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdHZhciBhdHRybGlzdCA9IHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdDtcblx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYXR0cmxpc3QubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0dmFyIGF0dHIgPSBhdHRybGlzdFtpXS5BdHRyO1xuXHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+36YCJ5oupJyB8fCBhci5WYWx1ZSA9PSAn4oCU4oCU6K+36YCJ5oup4oCU4oCUJykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cblx0XHRcdGlmICh0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGggPiAwKSB7XG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRpZiAoIXJlcS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRyZXR1cm4gdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0ciA9PSBzLm5hbWVcblx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0J2F0dHInOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS5hdHRyLFxuXHRcdFx0XHRcdFx0XHQndmFsdWUnOiB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtpXS52YWx1ZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHR2YXIgaW5mbyA9IHtcblx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdGF0dHI6IHJlcSxcblx0XHRcdH1cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0ZWR0eXBlOiBpbmZvLmVkdHlwZSxcblx0XHRcdFx0ZXZlbnRpZDogaW5mby5ldmVudGlkLFxuXHRcdFx0XHRwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLFxuXHRcdFx0XHRyY2xzaWQ6IGluZm8ucmNsc2lkLFxuXHRcdFx0XHRyb2JqaWQ6IGluZm8ucm9iamlkLFxuXHRcdFx0XHR1c2VybG9naW46IGluZm8udXNlcmxvZ2luLFxuXHRcdFx0XHRjbHNpZDogaW5mby5jbHNpZCxcblx0XHRcdFx0b2JqaWQ6IGluZm8ub2JqaWQsXG5cdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KGVudmlyb21lbnQpLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5nbG9iYWxfYXR0cilcblx0XHRcdH1cblx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdC8vIHNlbGYuY2xhc3NfYXR0cl9lbGUuZmluZCgnLmF0dHJfZmllbGRbZGF0YS1maWVsZD1cIicgKyByZXN1bHRbaV0uYXR0ciArICdcIl0nKS52YWwocmVzdWx0W2ldLnZhbHVlKS5kYXRhKCd2YWwnLCByZXN1bHRbaV0udmFsdWUpO1xuXHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XG5cdFx0XHRcdFx0XHRpZiAoIXRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbihzKSB7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0uYXR0ciA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0dGhpcy5hZGQoKTtcblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzRcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vNC4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSxcblx0XHREYXRhT2JqUnVuQ3VzdG9tRXZlbnRfUmV0dXJuKGV2ZW50aWQsIGRhdGFfYXR0ciwgYnV0dG9uX2NhbGxiYWNrLCBpbmRleCwgaWluZGV4KSB7XG5cdFx0XHR2YXIgZW52aXJvbWVudCA9IHtcblx0XHRcdFx0J2Z1bmN0aW9uJzogJzMwMDAnLCAvLyDlip/og73ngrnnvJblj7dcblx0XHRcdFx0Y2xzX2lkOiB0aGlzLiRkYXRhLnBhcmFtLk1hc3Rlcl9DbHMuSUQsIC8vIOWKn+iDveeCueS4u+aVsOaNruexu+agh+ivhlxuXHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0YnV0dG9uX25hbWU6ICfmlrDlop4nLFxuXHRcdFx0XHRtYXN0ZXI6IHtcblx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHRcdFx0XHQvL29ial9pZDogJycgIC8vIGJ1dHRvbj1ib3R0b23ml7YgbWFzdGVy55qEb2JqX2lkXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHR2YXIgYXR0cmxpc3QgPSB0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjkurrlkZgnIHx8IGFyLlR5cGUgPT0gJ+W8leeUqOmhueebricpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/ICcxJyA6ICcwJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9XG5cdFx0XHRpZiAodGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0aWYgKCFyZXEuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcblx0XHRcdFx0XHRcdFx0cmV0dXJuIHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2ldLmF0dHIgPT0gcy5uYW1lXG5cdFx0XHRcdFx0XHR9KS5sZW5ndGgpIHtcblx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdCdhdHRyJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0uYXR0cixcblx0XHRcdFx0XHRcdFx0J3ZhbHVlJzogdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbaV0udmFsdWVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dmFyIGV4dGluZm8gPSBlbnZpcm9tZW50O1xuXHRcdFx0ZXh0aW5mby5lZGl0X2RsZyA9IHtcblx0XHRcdFx0dHlwZTogJ3NtYWxsJywgLy/lsI/nqpflj6Ncblx0XHRcdFx0Y2xhc3NfaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCwgLy/lvZPliY3mlbDmja7nsbtpZFxuXHRcdFx0fVxuXHRcdFx0aWYgKGRhdGFfYXR0cikge1xuXHRcdFx0XHRleHRpbmZvLmVkaXRfZGxnLmZvcm1fY29udHJvbCA9IHsgLy/miYDlsZ7nmoTooajljZXmjqfku7Zcblx0XHRcdFx0XHRuYW1lOiBkYXRhX2F0dHIuTmFtZSwgLy/lrZfmrrXlsZ7mgKdcblx0XHRcdFx0XHR0ZXh0OiBkYXRhX2F0dHIuRGlzcE5hbWUsIC8v5pi+56S65paH5pysXG5cdFx0XHRcdFx0Z3JvdXBfbmFtZTogZGF0YV9hdHRyLkdyb3VwTmFtZSwgLy/lsZ7mgKfnu4Rcblx0XHRcdFx0XHR0eXBlOiBkYXRhX2F0dHIuVHlwZSwgLy/lrZfmrrXnsbvlnotcblx0XHRcdFx0XHRyZWFkb25seTogZGF0YV9hdHRyLlJlYWRPbmx5LCAvL+aYr+WQpuWPquivu1xuXHRcdFx0XHRcdGJ1dHRvbl9pbWc6IGRhdGFfYXR0ci5idXR0b25faW1nLCAvL+W8leeUqOaMiemSrueahOWbvuagh1xuXHRcdFx0XHRcdGJ1dHRvbl90b29sdGlwOiBkYXRhX2F0dHIuYnV0dG9uX3Rvb2x0aXAgLy/lvJXnlKjmjInpkq7nmoR0b29sdGlwXG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0ZWR0eXBlOiBcIjBcIixcblx0XHRcdFx0ZXZlbnRpZDogZXZlbnRpZCxcblx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0Y2xzaWQ6IHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0b2JqaWQ6ICcnLFxuXHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShyZXEpLFxuXHRcdFx0XHRleHRpbmZvOiBKU09OLnN0cmluZ2lmeShleHRpbmZvKSxcblx0XHRcdFx0Z2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpXG5cdFx0XHR9XG5cdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0XHRcdFx0aWYgKGRhdGEgIT0gXCJcIikge1xuXG5cdFx0XHRcdFx0XHR2YXIgYWN0aW9ucyA9IGRhdGEuYWN0aW9uO1xuXHRcdFx0XHRcdFx0Y29uc29sZS5sb2coYWN0aW9ucyk7XG5cdFx0XHRcdFx0XHRpZiAoYWN0aW9ucykge1xuXHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGFjdGlvbnMubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgYWN0aW9uID0gYWN0aW9uc1tpXTtcblx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdHZhciBlbnZpcm9tZW50ID0gSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCk7XG5cblx0XHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdvcGVuX3BhbmVsJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGQgPSBkaWFsb2coe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZC5zaG93KCk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fc2VsZWN0X3VzZXJkbGcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgc3R5bGUgPSB2YWwuc3R5bGU7XG5cdFx0XHRcdFx0XHRcdFx0XHQvLyBzdHlsZSA9PSAndXNlcicgPyAn6YCJ5oup5Lq65ZGYJyA6IHN0eWxlID09ICdkZXBhcnRtZW50JyA/ICfpgInmi6npg6jpl6gnIDogc3R5bGUgPT0gJ3JvbGUnID8gJ+mAieaLqeinkuiJsicgOiAnJ1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBwYXJhbSA9IHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aW5kZXg6IGluZGV4LFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRpaW5kZXg6IGlpbmRleCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0YnV0dG9uX2NhbGxiYWNrOiBidXR0b25fY2FsbGJhY2ssXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHJlcTogcmVxLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRkYXRhX2F0dHI6IGRhdGFfYXR0clxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cmw6ICcuLi9zZWxwc24vaW5kZXg/bXVsaXQ9ZmFsc2UmcGFyYW09JyArIEpTT04uc3RyaW5naWZ5KFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHBhcmFtKSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRzOiB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QWRkUGVyKGRhdGEsIHBhcmFtKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhwYXJhbSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhkYXRhKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBjYWxsYmFja19ldmVudGlkID0gcGFyYW0uYnV0dG9uX2NhbGxiYWNrLnRyaW0oKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBpbmZvID0ge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRldmVudGlkOiBjYWxsYmFja19ldmVudGlkLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiMFwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0b2JqaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IHBhcmFtLnJlcSxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aW5wdXRwYXJhbWV0ZXI6IGRhdGFcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLkRhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvLCBwYXJhbS5kYXRhX2F0dHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fZGF0YV9xdWVyeV9kbGcnKSB7XG5cblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9jb21tb25fZGxnJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbHVlID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGQgPSBkaWFsb2coe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZC5zaG93KCk7XG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ29wZW5fcHJvamVjdF9xdWVyeV9kbGcnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHQvL2NvbnNvbGUubG9nKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UpO1xuXHRcdFx0XHRcdFx0XHRcdFx0Ly9jb25zb2xlLmxvZyhhY3Rpb24udmFsdWUubXVsaXRfc2VsZWN0KTtcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBwcmlSZWwgPSAnLTEnO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+WFqOmDqOebuOWFsycpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICcwJztcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkei0n+i0o+eahOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICcxJztcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWIm+W7uueahCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICcyJztcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWPguS4jueahCcgfHwgYWN0aW9uLnZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0XHRcdC5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWPguWKoOeahCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICczJztcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeWFs+azqOeahCcpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICc0Jztcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2UgaWYgKGFjdGlvbi52YWx1ZS5zZWxlY3RfcmFuZ2UgPT0gJ+aIkeS4i+WxnueahOmhueebricpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHByaVJlbCA9ICc1JztcblxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0XHRcdFx0XHRcdHZhciBwYXJhbV8gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGluZGV4OiBpbmRleCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWluZGV4OiBpaW5kZXgsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGJ1dHRvbl9jYWxsYmFjazogYnV0dG9uX2NhbGxiYWNrLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRyZXE6IHJlcVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0dW5pLm5hdmlnYXRlVG8oe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR1cmw6ICcuLi9zZWxQcmovaW5kZXg/cmVsYXRpb249JyArIHByaVJlbCArICcmcGFyYW09JyArIEpTT05cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuc3RyaW5naWZ5KHBhcmFtXyksXG5cdFx0XHRcdFx0XHRcdFx0XHRcdGV2ZW50czoge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEFkZFBlcihkYXRhLCBwYXJhbSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2xhc3NBdHRyTGlzdFtwYXJhbS5pbmRleF0uQXR0cltwYXJhbVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuaWluZGV4XS5WYWx1ZSA9IGRhdGFbMF0uTmFtZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3RbcGFyYW0uaW5kZXhdLkF0dHJbcGFyYW1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuaWluZGV4XS5WYWxJRCA9IGRhdGFbMF0uSUQgKyAnOycgKyBkYXRhWzBdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5OYW1lO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhbGxiYWNrX2V2ZW50aWQgPSBwYXJhbS5idXR0b25fY2FsbGJhY2sudHJpbSgpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGNhbGxiYWNrX2V2ZW50aWQpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGluZm8gPSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZXZlbnRpZDogY2FsbGJhY2tfZXZlbnRpZCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRlZHR5cGU6IFwiMlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHByb2plY3RpZDogZGF0YVswXS5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyY2xzaWQ6IFwiXCIsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0cm9iamlkOiBcIlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdHVzZXJsb2dpbjogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjbHNpZDogJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5JRCxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRvYmppZDogXCJcIixcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBwYXJhbS5yZXEsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy5EYXRhT2JqUnVuQ3VzdG9tRXZlbnQoaW5mbyk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGQgPSBkaWFsb2coe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJzxpIGNsYXNzPVwiYWNlLWljb24gZmEgZmEtaW5mby1jaXJjbGVcIj48L2k+ICcgKyAn5o+Q56S6Jyxcblx0XHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogYWN0aW9uLmFjdGlvbl90eXBlICsgJ+atpGFjdGlvbuWwmuacquWkhOeQhu+8gSdcblx0XHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0ZC5zaG93KCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLo1LjJcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogJ+iwg+eUqCBiZWZvcmVfY2xpY2tfYnV0dG9uIOiEmuacrOi/lOWbnuepuu+8jGV2ZW50X2lkJyArIGV2ZW50aWQsXG5cdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vNVwiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLo1LjFcIixcblx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHNjYW5faW5pX0RhdGFPYmpSdW5DdXN0b21FdmVudChpbmZvKSB7XG5cdFx0XHR2YXIgcGFyYW0gPSB7XG5cdFx0XHRcdEVkaXRTdHlsZTogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLlZpZXdfU3R5bGUuTmFtZSxcblx0XHRcdFx0Vmlld1N0eWxlOiB0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuVmlld19TdHlsZS5OYW1lLFxuXHRcdFx0XHROb3RUcmlnZ2VyU3lzRXZlbnQ6IDAsXG5cdFx0XHRcdGVudmlyb21lbnQ6IHtcblx0XHRcdFx0XHQnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHRcdGNsc19pZDogdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELCAvLyDlip/og73ngrnkuLvmlbDmja7nsbvmoIfor4Zcblx0XHRcdFx0XHQnYnV0dG9uJzogJ3RvcCcsIC8vIHRvcC9ib3R0b21cblx0XHRcdFx0XHRidXR0b25fbmFtZTogJ+aWsOWinicsXG5cdFx0XHRcdFx0bWFzdGVyOiB7XG5cdFx0XHRcdFx0XHRjbHNfaWQ6IHRoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRjbHNfaWRcblx0XHRcdFx0XHRcdC8vb2JqX2lkOiAnJyAgLy8gYnV0dG9uPWJvdHRvbeaXtiBtYXN0ZXLnmoRvYmpfaWRcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBpbnB1dHBhcmFtZXRlciA9ICcnO1xuXHRcdFx0dmFyIGdsb2JhbF9hdHRyID0gJyc7XG5cblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0ZWR0eXBlOiBpbmZvLmVkdHlwZSxcblx0XHRcdFx0ZXZlbnRpZDogaW5mby5ldmVudGlkLFxuXHRcdFx0XHRwcm9qZWN0aWQ6IGluZm8ucHJvamVjdGlkLFxuXHRcdFx0XHRyY2xzaWQ6IGluZm8ucmNsc2lkLFxuXHRcdFx0XHRyb2JqaWQ6IGluZm8ucm9iamlkLFxuXHRcdFx0XHR1c2VybG9naW46IGluZm8udXNlcmxvZ2luLFxuXHRcdFx0XHRjbHNpZDogaW5mby5jbHNpZCxcblx0XHRcdFx0b2JqaWQ6IGluZm8ub2JqaWQsXG5cdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KGluZm8uYXR0ciksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KHBhcmFtKSxcblx0XHRcdFx0aW5wdXRwYXJhbWV0ZXI6IGlucHV0cGFyYW1ldGVyLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogZ2xvYmFsX2F0dHJcblx0XHRcdH1cblx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHR2YXIgYWN0aW9ubGlzdCA9IGRhdGEuYWN0aW9uO1xuXHRcdFx0XHRcdGlmIChhY3Rpb25saXN0KSB7XG5cdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGFjdGlvbmxpc3QubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbiA9IGFjdGlvbmxpc3Rbal1cblx0XHRcdFx0XHRcdFx0dmFyIGFjdGlvbl90eXBlID0gYWN0aW9uLmFjdGlvbl90eXBlO1xuXHRcdFx0XHRcdFx0XHR2YXIgdmFsdWUgPSBhY3Rpb24udmFsdWU7XG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb25fdHlwZSA9PSAnc2V0X2RsZ19hdHRyJykge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh2YWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbCA9IHZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHR5cGVvZiB2YWx1ZSA9PSAnc3RyaW5nJykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWwgPSBKU09OLnBhcnNlKHZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHZhbCk7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHZhbC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBhID0gMDsgYSA8IHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdC5sZW5ndGg7IGErKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGwgPSAwOyBsIDwgdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2FdLkF0dHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdC5sZW5ndGg7IGwrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGNhID0gdGhpcy4kZGF0YS5zdWJDbGFzc0F0dHJMaXN0W2FdLkF0dHJbbF07XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsW2ldLmF0dHIgPT0gY2EuTmFtZSkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoY2EuVHlwZSA9PSAn5a2X5YW4JyB8fCBjYS5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBjYS5UeXBlID09XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0J+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGRpY3RJdGVtTGlzdCA9IFtdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGQgaW4gdmFsW2ldLmNob2ljZV9saXN0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gdmFsW2ldLmNob2ljZV9saXN0W2RdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ZGljdEl0ZW1MaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcIkNOX1NfTkFNRVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTmFtZVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwibGFiZWxcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcInZhbHVlXCI6IHZhbFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2EuZGljdGl0ZW0gPSBkaWN0SXRlbUxpc3Q7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0cltqXS5kaWN0aXRlbSA9IHZhbFtpXS5jaG9pY2VfbGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjYS52YWx1ZSA9IHZhbFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoIXRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmZpbHRlcihmdW5jdGlvbihzKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gdmFsW2ldLmF0dHIgPT0gcy5hdHRyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0bGVuZ3RoID0gMTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHZhbFtpXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gdmFsW2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0dGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSB2YWxbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb25fdHlwZSA9PSAnb3Blbl9zZWxlY3RfdXNlcmRsZycpIHtcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzYuMlwiLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29udGVudDogXCJvcGVuX3NlbGVjdF91c2VyZGxn6L+Z5LiqYWN0aW9uX3R5cGXov5jmnKrlpITnkIbvvIFcIixcblx0XHRcdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vNlwiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHR0aXRsZTogXCLplJnor682LjFcIixcblx0XHRcdFx0XHRjb250ZW50OiBleC5lcnJNc2csXG5cdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0fSk7XG5cdFx0XHR9KTtcblx0XHR9LFxuXHRcdHNjYW5fRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGluZm8sIGRhdGFfYXR0cikge1xuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdHZhciBlbnZpcm9tZW50ID0ge307XG5cdFx0XHRpZihpbmZvLmVudmlyb21lbnQpe1xuXHRcdFx0XHRlbnZpcm9tZW50ID0gaW5mby5lbnZpcm9tZW50O1xuXHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0ZW52aXJvbWVudCA9IHtcblx0XHRcdFx0XHQnZnVuY3Rpb24nOiAnMzAwMCcsIC8vIOWKn+iDveeCuee8luWPt1xuXHRcdFx0XHRcdGNsc19pZDogJ01CT1gnLCAvL3RoaXMuJGRhdGEucGFyYW0uU3ViX0Nscy5JRCwgICAgIC8vIOWKn+iDveeCueS7juaVsOaNruexu+agh+ivhlxuXHRcdFx0XHRcdCdidXR0b24nOiAndG9wJywgLy8gdG9wL2JvdHRvbVxuXHRcdFx0XHRcdGJ1dHRvbl9uYW1lOiAn5paw5aKeJyxcblx0XHRcdFx0XHRlZGl0X2RsZzoge1xuXHRcdFx0XHRcdFx0dHlwZTogJ3NtYWxsJywgLy/lsI/nqpflj6Ncblx0XHRcdFx0XHRcdGNsYXNzX2lkOiAnTUJPWCcsIC8vdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLklELC8v5b2T5YmN5pWw5o2u57G7aWRcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHR9O1xuXHRcdFx0XHRcblx0XHRcdH1cblx0XHRcdHZhciBnbG9iYWxfYXR0ciA9IHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHI7XG5cdFx0XHRpZiAoaW5mby5nbG9iYWxfYXR0cikge1xuXHRcdFx0XHRnbG9iYWxfYXR0ciA9IGluZm8uZ2xvYmFsX2F0dHI7XG5cdFx0XHR9XG5cdFx0XHR2YXIgZGF0YUluZm8gPSB7XG5cdFx0XHRcdGVkdHlwZTogaW5mby5lZHR5cGUsXG5cdFx0XHRcdGV2ZW50aWQ6IGluZm8uZXZlbnRpZCxcblx0XHRcdFx0cHJvamVjdGlkOiBpbmZvLnByb2plY3RpZC5yZXBsYWNlKCd7JywgJycpLnJlcGxhY2UoJ30nLCAnJyksXG5cdFx0XHRcdHJjbHNpZDogaW5mby5yY2xzaWQsXG5cdFx0XHRcdHJvYmppZDogaW5mby5yb2JqaWQsXG5cdFx0XHRcdHVzZXJsb2dpbjogaW5mby51c2VybG9naW4sXG5cdFx0XHRcdGNsc2lkOiBpbmZvLmNsc2lkLFxuXHRcdFx0XHRvYmppZDogaW5mby5vYmppZCxcblx0XHRcdFx0YXR0cjogSlNPTi5zdHJpbmdpZnkoaW5mby5hdHRyKSxcblx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoZW52aXJvbWVudCksXG5cdFx0XHRcdGlucHV0cGFyYW1ldGVyOiBKU09OLnN0cmluZ2lmeShpbmZvLmlucHV0UGFyYW10ZXIpLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkoZ2xvYmFsX2F0dHIpXG5cdFx0XHR9XG5cdFx0XHRjb25zb2xlLmxvZyhkYXRhSW5mbyk7XG5cdFx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnRGF0YU9ialJ1bkN1c3RvbUV2ZW50SW5mbycsIGRhdGFJbmZvKS50aGVuKHN1Y2Nlc3MgPT4ge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhzdWNjZXNzKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0XHRcdFx0dmFyIGFjdGlvbmxpc3QgPSBkYXRhLmFjdGlvbjtcblxuXHRcdFx0XHRcdGlmIChhY3Rpb25saXN0KSB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhY3Rpb25saXN0KTtcblx0XHRcdFx0XHRcdGZvciAodmFyIGlpID0gMDsgaWkgPCBhY3Rpb25saXN0Lmxlbmd0aDsgaWkrKykge1xuXHRcdFx0XHRcdFx0XHR2YXIgYWN0aW9uID0gYWN0aW9ubGlzdFtpaV07XG5cdFx0XHRcdFx0XHRcdGlmIChhY3Rpb24uYWN0aW9uX3R5cGUgPT0gJ3NldF9kbGdfYXR0cicpIHtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gYWN0aW9uLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzdWx0W2ldLmNob2ljZV9saXN0KSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyTGlzdFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Lmxlbmd0aDsgYysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHJMaXN0W2NdXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQuQXR0cjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cltqXS5OYW1lID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uVHlwZSA9PSAn5a2X5YW4JyB8fCBhdHRyW2pdLlR5cGUgPT0gJ+Wtl+WFuC3lrZfnrKbkuLInIHx8XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlR5cGUgPT0gJ+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgZGljdEl0ZW1MaXN0ID0gW107XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBkIGluIHJlc3VsdFtpXS5jaG9pY2VfbGlzdCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsID0gcmVzdWx0W2ldLmNob2ljZV9saXN0W2RdO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRkaWN0SXRlbUxpc3QucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJDTl9TX05BTUVcIjogdmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFwiTmFtZVwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJsYWJlbFwiOiB2YWwsXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XCJ2YWx1ZVwiOiB2YWxcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLmRpY3RpdGVtID0gZGljdEl0ZW1MaXN0O1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gYXR0cltqXS5kaWN0aXRlbSA9IHJlc3VsdFtpXS5jaG9pY2VfbGlzdDtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGMgPSAwOyBjIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0ckxpc3Rcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQubGVuZ3RoOyBjKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHJMaXN0W2NdLkF0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUgKyAnPT0nICsgcmVzdWx0W2ldLmF0dHIpO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKGF0dHJbal0uTmFtZSA9PSByZXN1bHRbaV0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIGxlbmd0aCA9IDA7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHJldHVybiByZXN1bHRbaV0uYXR0ciA9PSBzLmF0dHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0fSkubGVuZ3RoKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5wdXNoKHJlc3VsdFtpXSk7XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCAkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlW2pdLmF0dHIgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdzZXRfZ2xvYmFsX2F0dHInKSB7XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGFjdGlvbnRyID0gYWN0aW9uLnZhbHVlIHx8IFtdO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKGFjdGlvbi5hY3Rpb25fdHlwZSA9PSAnb3Blbl9jb21tb25fZGxnJykgeyAvL+aJk+W8gOS+p+a7keW8ueahhlxuXHRcdFx0XHRcdFx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKGFjdGlvbi52YWx1ZS5jb21tb25fZGxnX2lkID09ICdjaGVja19saXN0Jykge1xuXHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuY2hlY2tfbGlzdCA9IGFjdGlvbi52YWx1ZS5jb25maWc7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAoYWN0aW9uLnZhbHVlLmNvbmZpZy5hcHBlYXJfc3R5bGUgPT0gJ3NpZGVzbGlwJykgLy/liKTmlq3mmK/lkKbmmK/kvqfmu5Fcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucG9wdXBUeXBlID0gJ3JpZ2h0Jztcblx0XHRcdFx0XHRcdFx0XHRcdGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucG9wdXBUeXBlID0gJ2NlbnRlcidcblx0XHRcdFx0XHRcdFx0XHRcdC8vIG9wZW4g5pa55rOV5Lyg5YWl5Y+C5pWwIOetieWQjOWcqCB1bmktcG9wdXAg57uE5Lu25LiK57uR5a6aIHR5cGXlsZ7mgKdcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRyZWZzLnBvcHVwLm9wZW4oJHRoaXMuJGRhdGEucG9wdXBUeXBlKTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoYWN0aW9uLmFjdGlvbl90eXBlID09ICdhZGRfc3ViY2xzX3BhbmVsJykgeyAvL+S4u+S7juaVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxuXHRcdFx0XHRcdFx0XHRcdHZhciByZXN1bHQgPSBhY3Rpb24udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdFx0XHRcdFx0XHRsZXQgbGlzdF8xID0gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLnN1YkNsYXNzQXR0ckxpc3QpKTtcblx0XHRcdFx0XHRcdFx0XHR2YXIgc2NhbkNvZGVWYWwgPSAkdGhpcy4kZGF0YS5zY2FuQ29kZVZhbDtcblx0XHRcdFx0XHRcdFx0XHR2YXIgcmFuZCA9ICcnO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgNTsgaSsrKSB7IC8v55Sf5oiQNeS9jemaj+acuuaVsFxuXHRcdFx0XHRcdFx0XHRcdFx0cmFuZCArPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAxMCk7XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdGlmIChpbmZvLmlucHV0UGFyYW10ZXJbMF0uYXR0cikge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGluZm8uaW5wdXRQYXJhbXRlclswXS5hdHRyID09IFwibWFzdF9pbnB1dF8zMDM3XCIpIC8v5Yik5pat5piv5Li75pWw5o2u57G75omr56CB5p+l6K+i5pWw5o2uXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHNjYW5Db2RlVmFsID0gXCJtYXN0X2lucHV0XzMwMzctXCIgKyByYW5kO1xuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRpZiAoaW5mby5hdHRyWzBdLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmIChpbmZvLmF0dHJbMF0uYXR0ciA9PSBcIm1hc3RfaW5wdXRfMzAzN1wiKSAvL+WIpOaWreaYr+S4u+aVsOaNruexu+aJq+eggeafpeivouaVsOaNrlxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzY2FuQ29kZVZhbCA9IFwibWFzdF9pbnB1dF8zMDM3LVwiICsgcmFuZDtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0c2NhbkNvZGVWYWw6IHNjYW5Db2RlVmFsLFxuXHRcdFx0XHRcdFx0XHRcdFx0c3ViQ2xhc3NBdHRyOiBsaXN0XzFcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgcyA9IDA7IHMgPCAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zY2FuQ29kZVZhbCA9PSBzY2FuQ29kZVZhbCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChyZXN1bHRbaV0uYXR0ciA9PSBcIlNfSURcIilcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5PYmpJRCA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgX3N1YkNsYXNzQXR0ciA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgYyA9IDA7IGMgPCBfc3ViQ2xhc3NBdHRyLmxlbmd0aDsgYysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR2YXIgYXR0ciA9IF9zdWJDbGFzc0F0dHJbY10uQXR0cjtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhhdHRyW2pdLk5hbWUrJz09JytyZXN1bHRbaV0uYXR0cik7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdGlmIChhdHRyW2pdLk5hbWUgPT0gcmVzdWx0W2ldLmF0dHIpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Ly8gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0W3NdLnN1YkNsYXNzQXR0cj1saXN0XzE7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCEkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUuZmlsdGVyKGZ1bmN0aW9uKHMpIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRyZXR1cm4gcmVzdWx0W2ldLmF0dHIgPT0gcy5hdHRyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRsZW5ndGggPSAxO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmUucHVzaChyZXN1bHRbaV0pO1xuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKGxlbmd0aCA9PSAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgJHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5yZWZkYXRhc3RvcmVbal0udmFsdWUgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRpZiAoZGF0YS5yZXN1bHQpIHtcblx0XHRcdFx0XHRcdGxldCBsaXN0XzEgPSBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuc3ViQ2xhc3NBdHRyTGlzdCkpO1xuXHRcdFx0XHRcdFx0dmFyIHNjYW5Db2RlVmFsID0gJHRoaXMuJGRhdGEuc2NhbkNvZGVWYWw7XG5cdFx0XHRcdFx0XHRpZiAoaW5mby5pbnB1dFBhcmFtdGVyWzBdLmF0dHIgPT0gXCJtYXN0X2lucHV0XzMwMzdcIilcblx0XHRcdFx0XHRcdFx0c2NhbkNvZGVWYWwgPSBcIm1hc3RfaW5wdXRfMzAzNy1cIiArIGlpO1xuXHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRzY2FuQ29kZVZhbDogc2NhbkNvZGVWYWwsXG5cdFx0XHRcdFx0XHRcdHN1YkNsYXNzQXR0cjogbGlzdF8xXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHZhciByZXN1bHQgPSBkYXRhLnJlc3VsdDtcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgcmVzdWx0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIHMgPSAwOyBzIDwgJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0Lmxlbmd0aDsgcysrKSB7XG5cdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zY2FuQ29kZVZhbCA9PSBzY2FuQ29kZVZhbCkge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlc3VsdFtpXS5hdHRyID09IFwiU19JRFwiKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Rbc10uT2JqSUQgPSByZXN1bHRbaV0udmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgX3N1YkNsYXNzQXR0ciA9ICR0aGlzLiRkYXRhLnN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBjID0gMDsgYyA8IF9zdWJDbGFzc0F0dHIubGVuZ3RoOyBjKyspIHtcblx0XHRcdFx0XHRcdFx0XHRcdFx0dmFyIGF0dHIgPSBfc3ViQ2xhc3NBdHRyW2NdLkF0dHI7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdC8vIGNvbnNvbGUubG9nKGF0dHJbal0uTmFtZSsnPT0nK3Jlc3VsdFtpXS5hdHRyKTtcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAoYXR0cltqXS5OYW1lID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRhdHRyW2pdLlZhbHVlID0gcmVzdWx0W2ldLnZhbHVlO1xuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0fVxuXG5cdFx0XHRcdFx0XHRcdHZhciBsZW5ndGggPSAwO1xuXHRcdFx0XHRcdFx0XHRpZiAoISR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5maWx0ZXIoZnVuY3Rpb24ocykge1xuXHRcdFx0XHRcdFx0XHRcdFx0cmV0dXJuIHJlc3VsdFtpXS5hdHRyID09IHMuYXR0clxuXHRcdFx0XHRcdFx0XHRcdH0pLmxlbmd0aCkge1xuXHRcdFx0XHRcdFx0XHRcdGxlbmd0aCA9IDE7XG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEucmVmZGF0YXN0b3JlLnB1c2gocmVzdWx0W2ldKTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRpZiAobGVuZ3RoID09IDApIHtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8ICR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZS5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdFx0XHRcdFx0aWYgKCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS5hdHRyID09IHJlc3VsdFtpXS5hdHRyKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLnJlZmRhdGFzdG9yZVtqXS52YWx1ZSA9IHJlc3VsdFtpXS52YWx1ZTtcblx0XHRcdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6IFwi6ZSZ6K+vN1wiLGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLHNob3dDYW5jZWw6IGZhbHNlLGNvbmZpcm1UZXh0OiBcIuWPlua2iFwifSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTogXCLplJnor683LjFcIixjb250ZW50OiBleC5lcnJNc2csc2hvd0NhbmNlbDogZmFsc2UsY29uZmlybVRleHQ6IFwi5Y+W5raIXCJ9KTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0c2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudChldmVudElEKSB7XG5cdFx0XHR1bmkuc2hvd0xvYWRpbmcoe3RpdGxlOiBcIuWKoOi9veS4rS4uLlwiLG1hc2s6IHRydWV9KTtcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XG5cdFx0XHR2YXIgcmVxID0gW107XG5cdFx0XHR2YXIgYXR0cmxpc3QgPSAkdGhpcy4kZGF0YS5jbGFzc0F0dHJMaXN0O1xuXHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBhdHRybGlzdC5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHR2YXIgYXR0ciA9IGF0dHJsaXN0W2ldLkF0dHI7XG5cdFx0XHRcdGZvciAodmFyIGogPSAwOyBqIDwgYXR0ci5sZW5ndGg7IGorKykge1xuXHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7fpgInmi6knIHx8IGFyLlZhbHVlID09ICfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdGlmIChhci5UeXBlID09ICflvJXnlKjlr7nosaEo5aSa5LiqKScpXG5cdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5biD5bCU5YC8Jylcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICflrZflhbgnIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3lrZfnrKbkuLInIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRpZiAoYXIuc2VsZWN0ID09IHRydWUpIHsgLy/liKTmlq3kuIvmi4nmmK/lkKblpJrpgIlcblx0XHRcdFx0XHRcdFx0dmFyIHZhbFN0ciA9IFwiXCI7XG5cdFx0XHRcdFx0XHRcdGZvciAodmFyIHYgaW4gYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0XHRpZiAodmFsU3RyKVxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsU3RyICs9IFwiO1wiO1xuXHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBhci5WYWx1ZVt2XTtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRyZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdmFsU3RyXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZVxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gYXIuVmFsdWUgOiAnJ1xuXHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRpZiAoYXIubm90ZW1wdHkgPT0gdHJ1ZSAmJiAhYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdC8vIGlmKGFyLk5vdEVtcHR5PT0nMScpe1xuXHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRcdFx0Y29udGVudDogYXIuRGlzcE5hbWUgKyAn5LiN6IO95Li656m677yBJyxcblx0XHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH1cblx0XHRcdH1cblx0XHRcdHZhciBvYmplY3RzID0gW107XG5cdFx0XHR2YXIgc3ViUGFuZWxMaXN0ID0gJHRoaXMuJGRhdGEuc3ViUGFuZWxMaXN0O1xuXHRcdFx0Zm9yICh2YXIgcyA9IDA7IHMgPCBzdWJQYW5lbExpc3QubGVuZ3RoOyBzKyspIHtcblx0XHRcdFx0dmFyIHN1Yl9yZXEgPSBbXTtcblx0XHRcdFx0Zm9yICh2YXIgaSA9IDA7IGkgPCBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyLmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdFx0dmFyIGF0dHIgPSBzdWJQYW5lbExpc3Rbc10uc3ViQ2xhc3NBdHRyW2ldLkF0dHI7XG5cdFx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0XHR2YXIgYXIgPSBhdHRyW2pdO1xuXHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7fpgInmi6knIHx8IGFyLlZhbHVlID09ICfigJTigJTor7fpgInmi6nigJTigJQnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdFx0aWYgKGFyLlZhbHVlID09ICfor7cnKSBhci5WYWx1ZSA9ICcnO1xuXHRcdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOS6uuWRmCcgfHwgYXIuVHlwZSA9PSAn5byV55So6aG555uuJylcblx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWxJRCA/IGFyLlZhbElEIDogJydcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlID8gJzEnIDogJzAnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0ZWxzZSBpZiAoYXIuVHlwZSA9PSAn5a2X5YW4JyB8fCBhci5UeXBlID09ICflrZflhbgt5a2X56ym5LiyJyB8fCBhci5UeXBlID09ICflrZflhbgt5pW05pWwJykge1xuXHRcdFx0XHRcdFx0XHRpZiAoYXIuc2VsZWN0ID09IHRydWUpIHsgLy/liKTmlq3kuIvmi4nmmK/lkKblpJrpgIlcblx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsU3RyID0gXCJcIjtcblx0XHRcdFx0XHRcdFx0XHRmb3IgKHZhciB2IGluIGFyLlZhbHVlKSB7XG5cdFx0XHRcdFx0XHRcdFx0XHRpZiAodmFsU3RyKVxuXHRcdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gXCI7XCI7XG5cdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gYXIuVmFsdWVbdl07XG5cdFx0XHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IHZhbFN0clxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZVxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlXG5cdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXG5cdFx0XHRcdFx0XHRpZiAoYXIubm90ZW1wdHkgPT0gdHJ1ZSAmJiAhYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0Ly8gaWYoYXIuTm90RW1wdHk9PScxJyl7XG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd1RvYXN0KHt0aXRsZTphci5EaXNwTmFtZSsn5LiN6IO95Li656m677yBJyxpY29uOlwic3VjY2Vzc1wiLGR1cmF0aW9uOjMwMDB9KTtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5o+Q56S6XCIsXG5cdFx0XHRcdFx0XHRcdFx0Y29udGVudDogYXIuRGlzcE5hbWUgKyAn5LiN6IO95Li656m677yBJyxcblx0XHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0XHRvYmplY3RzLnB1c2goe1xuXHRcdFx0XHRcdG9ial9pZDogc3ViUGFuZWxMaXN0W3NdLnNjYW5Db2RlVmFsLFxuXHRcdFx0XHRcdG9ial9hdHRyczogc3ViX3JlcVxuXHRcdFx0XHR9KTtcblx0XHRcdH1cblx0XHRcdHZhciBkYXRhSnNvbiA9IHtcblx0XHRcdFx0bWFzdGVyX2Nsczoge1xuXHRcdFx0XHRcdGNsc19uYW1lOiAnTUJPWCcsIC8vJHRoaXMuJGRhdGEucGFyYW0uTWFzdGVyX0Nscy5OYW1lLFxuXHRcdFx0XHRcdG9ial9hdHRyczogcmVxXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGlucHV0XzMwMzc6ICR0aGlzLiRkYXRhLnNjYW5Db2RlVmFsLCAvL+aJq+eggeWGheWuuVxuXHRcdFx0XHRvcF90eXBlOiAkdGhpcy4kZGF0YS5wYXJhbS5PcGVyYXRpb25UeXBlLCAvL+S9nOS4muexu+Wei+WumuS5iVxuXHRcdFx0XHRzdWJfY2xzOiB7XG5cdFx0XHRcdFx0Y2xzX25hbWU6ICdNQk9YJywgLy8kdGhpcy4kZGF0YS5wYXJhbS5TdWJfQ2xzLk5hbWUsXG5cdFx0XHRcdFx0b2JqZWN0czogb2JqZWN0c1xuXHRcdFx0XHR9XG5cdFx0XHR9O1xuXHRcdFx0Ly8gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YUpzb24pKTtcblx0XHRcdHZhciBkYXRhSW5mbyA9IHtcblx0XHRcdFx0ZWR0eXBlOiBcIjdcIixcblx0XHRcdFx0ZXZlbnRpZDogZXZlbnRJRCxcblx0XHRcdFx0cHJvamVjdGlkOiAnJyxcblx0XHRcdFx0cmNsc2lkOiAnJyxcblx0XHRcdFx0cm9iamlkOiAnJyxcblx0XHRcdFx0dXNlcmxvZ2luOiAnJyxcblx0XHRcdFx0Y2xzaWQ6ICdNQk9YJyxcblx0XHRcdFx0b2JqaWQ6ICcnLFxuXHRcdFx0XHRhdHRyOiBKU09OLnN0cmluZ2lmeShbXSksXG5cdFx0XHRcdGV4dGluZm86IEpTT04uc3RyaW5naWZ5KFtdKSxcblx0XHRcdFx0Z2xvYmFsX2F0dHI6IEpTT04uc3RyaW5naWZ5KCR0aGlzLiRkYXRhLmdsb2JhbF9hdHRyKSxcblx0XHRcdFx0ZGF0YUpzb246IEpTT04uc3RyaW5naWZ5KGRhdGFKc29uKVxuXHRcdFx0fVxuXHRcdFx0Ly8gY29uc29sZS5sb2coSlNPTi5zdHJpbmdpZnkoZGF0YUluZm8pKTtcblx0XHRcdGNvbnNvbGUubG9nKGRhdGFJbmZvKTtcblx0XHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdEYXRhT2JqUnVuQ3VzdG9tRXZlbnRJbmZvJywgZGF0YUluZm8pLnRoZW4oc3VjY2VzcyA9PiB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHN1Y2Nlc3MpO1xuXHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0aWYgKHN1Y2Nlc3MuY29kZSA9PSAnMDAwMDAnKSB7XG5cdFx0XHRcdFx0dmFyIGRhdGEgPSBKU09OLnBhcnNlKHN1Y2Nlc3MuZGF0YSk7XG5cdFx0XHRcdFx0dmFyIHJlc3VsdCA9IGRhdGEucmVzdWx0O1xuXHRcdFx0XHRcdGlmIChldmVudElEICE9ICR0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX09LX0V2ZW50LklEKVxuXHRcdFx0XHRcdFx0JHRoaXMuc2Nhbl9PS0RhdGFPYmpSdW5DdXN0b21FdmVudCgkdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRCk7XG5cdFx0XHRcdFx0ZWxzZSB7XG5cdFx0XHRcdFx0XHQvL+WIt+aWsFxuXHRcdFx0XHRcdFx0dW5pLnJlZGlyZWN0VG8oe1xuXHRcdFx0XHRcdFx0XHR1cmw6ICcuLi9tb2RhbC9tc19jbGFzc0F0dHI/cGFyYW09JyArIEpTT04uc3RyaW5naWZ5KCR0aGlzLiRkYXRhLnBhcmFtKSArXG5cdFx0XHRcdFx0XHRcdFx0XCImdGl0bGVuYW1lPVwiICsgJHRoaXMuJGRhdGEudGl0bGVcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzhcIixcblx0XHRcdFx0XHRcdGNvbnRlbnQ6IHN1Y2Nlc3MubXNnLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9KS5jYXRjaChleCA9PiB7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcblx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIumUmeivrzguMVwiLFxuXHRcdFx0XHRcdGNvbnRlbnQ6IGV4LmVyck1zZyxcblx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRjb25maXJtVGV4dDogXCLlj5bmtohcIlxuXHRcdFx0XHR9KTtcblx0XHRcdH0pO1xuXHRcdH0sXG5cdFx0c2Nhbl9UcmlnZ2VyRGF0YU9ialJ1bkN1c3RvbUV2ZW50KGV2ZW50SUQpIHtcblx0XHRcdHVuaS5zaG93TG9hZGluZyh7dGl0bGU6IFwi5Yqg6L295LitLi4uXCIsbWFzazogdHJ1ZX0pO1xuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcblx0XHRcdHZhciByZXEgPSBbXTtcblx0XHRcdHZhciBhdHRybGlzdCA9ICR0aGlzLiRkYXRhLmNsYXNzQXR0ckxpc3Q7XG5cdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGF0dHJsaXN0Lmxlbmd0aDsgaSsrKSB7XG5cdFx0XHRcdHZhciBhdHRyID0gYXR0cmxpc3RbaV0uQXR0cjtcblx0XHRcdFx0Zm9yICh2YXIgaiA9IDA7IGogPCBhdHRyLmxlbmd0aDsgaisrKSB7XG5cdFx0XHRcdFx0dmFyIGFyID0gYXR0cltqXTtcblx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivt+mAieaLqScgfHwgYXIuVmFsdWUgPT0gJ+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0aWYgKGFyLlR5cGUgPT0gJ+W8leeUqOWvueixoSjlpJrkuKopJylcblx0XHRcdFx0XHRcdGlmIChhci5WYWx1ZSA9PSAn6K+3JykgYXIuVmFsdWUgPSAnJztcblx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsSUQgPyBhci5WYWxJRCA6ICcnXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICfluIPlsJTlgLwnKVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+Wtl+WFuCcgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeWtl+espuS4sicgfHwgYXIuVHlwZSA9PSAn5a2X5YW4LeaVtOaVsCcpIHtcblx0XHRcdFx0XHRcdGlmIChhci5zZWxlY3QgPT0gdHJ1ZSkgeyAvL+WIpOaWreS4i+aLieaYr+WQpuWkmumAiVxuXHRcdFx0XHRcdFx0XHR2YXIgdmFsU3RyID0gXCJcIjtcblx0XHRcdFx0XHRcdFx0Zm9yICh2YXIgdiBpbiBhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0XHRcdGlmICh2YWxTdHIpXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWxTdHIgKz0gXCI7XCI7XG5cdFx0XHRcdFx0XHRcdFx0dmFsU3RyICs9IGFyLlZhbHVlW3ZdO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdHJlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiB2YWxTdHJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0cmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyBhci5WYWx1ZSA6ICcnXG5cdFx0XHRcdFx0XHR9KTtcblxuXHRcdFx0XHRcdGlmIChhci5ub3RlbXB0eSA9PSB0cnVlICYmICFhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0Ly8gaWYoYXIuTm90RW1wdHk9PScxJyl7XG5cdFx0XHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0XHRcdC8vIHVuaS5zaG93VG9hc3Qoe3RpdGxlOmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuaPkOekulwiLFxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBhci5EaXNwTmFtZSArICfkuI3og73kuLrnqbrvvIEnLFxuXHRcdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Y29uZmlybVRleHQ6IFwi5Y+W5raIXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fVxuXHRcdFx0fVxuXHRcdFx0dmFyIG9iamVjdHMgPSBbXTtcblx0XHRcdHZhciBzdWJQYW5lbExpc3QgPSAkdGhpcy4kZGF0YS5zdWJQYW5lbExpc3Q7XG5cdFx0XHRmb3IgKHZhciBzID0gMDsgcyA8IHN1YlBhbmVsTGlzdC5sZW5ndGg7IHMrKykge1xuXHRcdFx0XHR2YXIgc3ViX3JlcSA9IFtdO1xuXHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IHN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHIubGVuZ3RoOyBpKyspIHtcblx0XHRcdFx0XHR2YXIgYXR0ciA9IHN1YlBhbmVsTGlzdFtzXS5zdWJDbGFzc0F0dHJbaV0uQXR0cjtcblx0XHRcdFx0XHRmb3IgKHZhciBqID0gMDsgaiA8IGF0dHIubGVuZ3RoOyBqKyspIHtcblx0XHRcdFx0XHRcdHZhciBhciA9IGF0dHJbal07XG5cdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivt+mAieaLqScgfHwgYXIuVmFsdWUgPT0gJ+KAlOKAlOivt+mAieaLqeKAlOKAlCcpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5a+56LGhKOWkmuS4qiknKVxuXHRcdFx0XHRcdFx0XHRpZiAoYXIuVmFsdWUgPT0gJ+ivtycpIGFyLlZhbHVlID0gJyc7XG5cdFx0XHRcdFx0XHRpZiAoYXIuVHlwZSA9PSAn5byV55So5Lq65ZGYJyB8fCBhci5UeXBlID09ICflvJXnlKjpobnnm64nKVxuXHRcdFx0XHRcdFx0XHRzdWJfcmVxLnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbElEID8gYXIuVmFsSUQgOiAnJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdGVsc2UgaWYgKGFyLlR5cGUgPT0gJ+W4g+WwlOWAvCcpXG5cdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0YXR0cjogYXIuTmFtZSxcblx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogYXIuVmFsdWUgPyAnMScgOiAnMCdcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRlbHNlIGlmIChhci5UeXBlID09ICflrZflhbgnIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3lrZfnrKbkuLInIHx8IGFyLlR5cGUgPT0gJ+Wtl+WFuC3mlbTmlbAnKSB7XG5cdFx0XHRcdFx0XHRcdGlmIChhci5zZWxlY3QgPT0gdHJ1ZSkgeyAvL+WIpOaWreS4i+aLieaYr+WQpuWkmumAiVxuXHRcdFx0XHRcdFx0XHRcdHZhciB2YWxTdHIgPSBcIlwiO1xuXHRcdFx0XHRcdFx0XHRcdGZvciAodmFyIHYgaW4gYXIuVmFsdWUpIHtcblx0XHRcdFx0XHRcdFx0XHRcdGlmICh2YWxTdHIpXG5cdFx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBcIjtcIjtcblx0XHRcdFx0XHRcdFx0XHRcdHZhbFN0ciArPSBhci5WYWx1ZVt2XTtcblx0XHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGF0dHI6IGFyLk5hbWUsXG5cdFx0XHRcdFx0XHRcdFx0XHR2YWx1ZTogdmFsU3RyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZVxuXHRcdFx0XHRcdFx0XHRcdHN1Yl9yZXEucHVzaCh7XG5cdFx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdFx0dmFsdWU6IGFyLlZhbHVlXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9IGVsc2Vcblx0XHRcdFx0XHRcdFx0c3ViX3JlcS5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRhdHRyOiBhci5OYW1lLFxuXHRcdFx0XHRcdFx0XHRcdHZhbHVlOiBhci5WYWx1ZSA/IGFyLlZhbHVlIDogJydcblx0XHRcdFx0XHRcdFx0fSk7XG5cblx0XHRcdFx0XHRcdGlmIChhci5ub3RlbXB0eSA9PSB0cnVlICYmICFhci5WYWx1ZSkge1xuXHRcdFx0XHRcdFx0XHQvLyBpZihhci5Ob3RFbXB0eT09JzEnKXtcblx0XHRcdFx0XHRcdFx0dW5pLmhpZGVMb2FkaW5nKCk7XG5cdFx0XHRcdFx0XHRcdC8vIHVuaS5zaG93VG9hc3Qoe3RpdGxlOmFyLkRpc3BOYW1lKyfkuI3og73kuLrnqbrvvIEnLGljb246XCJzdWNjZXNzXCIsZHVyYXRpb246MzAwMH0pO1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogXCLmj5DnpLpcIixcblx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiBhci5EaXNwTmFtZSArICfkuI3og73kuLrnqbrvvIEnLFxuXHRcdFx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9XG5cdFx0XHRcdG9iamVjdHMucHVzaCh7XG5cdFx0XHRcdFx0b2JqX2lkOiBzdWJQYW5lbExpc3Rbc10uc2NhbkNvZGVWYWwsXG5cdFx0XHRcdFx0b2JqX2F0dHJzOiBzdWJfcmVxXG5cdFx0XHRcdH0pO1xuXHRcdFx0fVxuXHRcdFx0dmFyIGRhdGFKc29uID0ge1xuXHRcdFx0XHRtYXN0ZXJfY2xzOiB7XG5cdFx0XHRcdFx0Y2xzX25hbWU6ICdNQk9YJywgLy8kdGhpcy4kZGF0YS5wYXJhbS5NYXN0ZXJfQ2xzLk5hbWUsXG5cdFx0XHRcdFx0b2JqX2F0dHJzOiByZXFcblx0XHRcdFx0fSxcblx0XHRcdFx0aW5wdXRfMzAzNzogJHRoaXMuJGRhdGEuc2NhbkNvZGVWYWwsIC8v5omr56CB5YaF5a65XG5cdFx0XHRcdG9wX3R5cGU6ICR0aGlzLiRkYXRhLnBhcmFtLk9wZXJhdGlvblR5cGUsIC8v5L2c5Lia57G75Z6L5a6a5LmJXG5cdFx0XHRcdHN1Yl9jbHM6IHtcblx0XHRcdFx0XHRjbHNfbmFtZTogJ01CT1gnLCAvLyR0aGlzLiRkYXRhLnBhcmFtLlN1Yl9DbHMuTmFtZSxcblx0XHRcdFx0XHRvYmplY3RzOiBvYmplY3RzXG5cdFx0XHRcdH1cblx0XHRcdH07XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkYXRhSnNvbikpO1xuXHRcdFx0dmFyIGRhdGFJbmZvID0ge1xuXHRcdFx0XHRlZHR5cGU6IFwiN1wiLFxuXHRcdFx0XHRldmVudGlkOiBldmVudElELFxuXHRcdFx0XHRwcm9qZWN0aWQ6ICcnLFxuXHRcdFx0XHRyY2xzaWQ6ICcnLFxuXHRcdFx0XHRyb2JqaWQ6ICcnLFxuXHRcdFx0XHR1c2VybG9naW46ICcnLFxuXHRcdFx0XHRjbHNpZDogJ01CT1gnLFxuXHRcdFx0XHRvYmppZDogJycsXG5cdFx0XHRcdGF0dHI6IEpTT04uc3RyaW5naWZ5KFtdKSxcblx0XHRcdFx0ZXh0aW5mbzogSlNPTi5zdHJpbmdpZnkoW10pLFxuXHRcdFx0XHRnbG9iYWxfYXR0cjogSlNPTi5zdHJpbmdpZnkoJHRoaXMuJGRhdGEuZ2xvYmFsX2F0dHIpLFxuXHRcdFx0XHRkYXRhSnNvbjogSlNPTi5zdHJpbmdpZnkoZGF0YUpzb24pXG5cdFx0XHR9XG5cdFx0XHQvLyBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShkYXRhSW5mbykpO1xuXHRcdFx0Y29uc29sZS5sb2coZGF0YUluZm8pO1xuXHRcdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ0RhdGFPYmpSdW5DdXN0b21FdmVudEluZm8nLCBkYXRhSW5mbykudGhlbihzdWNjZXNzID0+IHtcblx0XHRcdFx0Y29uc29sZS5sb2coc3VjY2Vzcyk7XG5cdFx0XHRcdHVuaS5oaWRlTG9hZGluZygpO1xuXHRcdFx0XHRpZiAoc3VjY2Vzcy5jb2RlID09ICcwMDAwMCcpIHtcblx0XHRcdFx0XHR2YXIgZGF0YSA9IEpTT04ucGFyc2Uoc3VjY2Vzcy5kYXRhKTtcblx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gZGF0YS5yZXN1bHQ7XG5cdFx0XHRcdFx0aWYgKGV2ZW50SUQgIT0gJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfVHJpZ2dlcl9FdmVudC5JRClcblx0XHRcdFx0XHRcdCR0aGlzLnNjYW5fVHJpZ2dlckRhdGFPYmpSdW5DdXN0b21FdmVudCgkdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9UcmlnZ2VyX0V2ZW50LklEKTtcblx0XHRcdFx0XHRlbHNlIHtcblx0XHRcdFx0XHRcdC8v5Yi35pawXG5cdFx0XHRcdFx0XHR1bmkucmVkaXJlY3RUbyh7XG5cdFx0XHRcdFx0XHRcdHVybDogJy4uL21vZGFsL21zX2NsYXNzQXR0cj9wYXJhbT0nICsgSlNPTi5zdHJpbmdpZnkoJHRoaXMuJGRhdGEucGFyYW0pICtcblx0XHRcdFx0XHRcdFx0XHRcIiZ0aXRsZW5hbWU9XCIgKyAkdGhpcy4kZGF0YS50aXRsZVxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vOFwiLFxuXHRcdFx0XHRcdFx0Y29udGVudDogc3VjY2Vzcy5tc2csXG5cdFx0XHRcdFx0XHRzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH1cblx0XHRcdH0pLmNhdGNoKGV4ID0+IHtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xuXHRcdFx0XHR1bmkuaGlkZUxvYWRpbmcoKTtcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi6ZSZ6K+vOC4xXCIsXG5cdFx0XHRcdFx0Y29udGVudDogZXguZXJyTXNnLFxuXHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdGNvbmZpcm1UZXh0OiBcIuWPlua2iFwiXG5cdFx0XHRcdH0pO1xuXHRcdFx0fSk7XG5cdFx0fSxcblxuXG5cdH1cbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///90\n"); /***/ }), /* 91 */ @@ -32502,7 +32509,7 @@ /***/ (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//\nvar _default = {\n modules: {\n Base64: _base.default\n },\n data: function data() {\n return {\n title: '鐮佺洏',\n param: {},\n focusMateria: false,\n head_styledef: {\n form: {\n items: []\n }\n },\n detail1_styledef: {},\n detail1StyleDefList: [],\n detail2_styledef: {},\n detail2StyleDefList: [],\n // 鍒嗘鍣ㄦ暟鎹甛n current: 0,\n items: ['姝e湪鐮佺洏', '宸茬爜鐩�]\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 // console.log(this.$data.param);\n //鑾峰彇CG_Detail锛堟墭鐩樿揣鍝佽〃锛夋暟鎹被鐨勮嚜瀹氫箟琛ㄥ崟鍙傛暟\n this.Head_UIStyleGetInfo('CG_Detail', this.$data.param.Head_Panel_Style.ID);\n this.Detail1_UIstyleGetInfo('CG_Detail', this.$data.param.Detail_List_Panel1_Style.ID);\n this.Detail2_UIstyleGetInfo('CG_Detail', this.$data.param.Detail_List_Panel2_Style.ID);\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 _callee() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.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鐨剆tyle_def鏄痡son瀛楃涓瞈n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓瞈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 // this.form = this.head_styledef.form.model;\n // console.log($this.$data.head_styledef);\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 _context.stop();\n }\n }\n }, _callee);\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 _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 = _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鐨剆tyle_def鏄痡son瀛楃涓瞈n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓瞈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 // console.log($this.$data.detail1_styledef);\n // $this.$data.detail1StyleDefList.push($this.$data.detail1_styledef);\n // let 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 _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n Detail2_UIstyleGetInfo: function Detail2_UIstyleGetInfo(class_id, style_id) {\n var _this3 = 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 = _this3;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n };\n _this3.$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鐨剆tyle_def鏄痡son瀛楃涓瞈n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓瞈n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.$data.detail2_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n // console.log($this.$data.detail2_styledef);\n } else {\n uni.showModal({\n title: \"閿欒3\",\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: \"閿欒3.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 ontap: function ontap(item) {\n var _this4 = this;\n //鎵爜鍔熻兘\n // var $ele = e;\n //console.log(e.target)\n getApp().onScan(function (result) {\n __f__(\"log\", result.decodedata, \" at pages/modal/5600.vue:462\");\n item.value = result.decodedata;\n uni.hideKeyboard();\n var $this = _this4;\n __f__(\"log\", item, \" at pages/modal/5600.vue:467\");\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n var attr = item.fieldId;\n _this4.head_styledef.form.model[attr] = item.value;\n var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠禱n var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠禱n var onSuffixClickEvent = item.bind.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋僜n var isflag = false;\n if (onChangeEvent.id) {\n //鍐呭鍙樺寲鍚庝簨浠禱n $this.onChange(onChangeEvent);\n }\n if (item.value) {\n //绗竴涓緭鍏ユ涓嶄负绌篭n $this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴�\n // setTimeout(function(){\n // \t$this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣\n setTimeout(function () {\n uni.hideKeyboard();\n }, 100);\n // },500);\n }\n // if(onSuffixClickCallbackEvent.id){ //鍚庡浘鏍囩偣鍑讳簨浠禱n // this.onSuffixClick(onSuffixClickCallbackEvent);\n // }\n // if(onSuffixClickEvent.id){ //鍚庡浘鏍囩偣鍑诲洖璋僜n // this.onSuffixClickCallback(onSuffixClickEvent);\n // }\n }\n });\n },\n onEnterChange: function onEnterChange(item) {\n //鍥炶溅锛岀偣鍑绘寜閽紝鍙栨秷鑺傜偣浜嬩欢\n // console.log(item);\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 onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠禱n var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠禱n var onSuffixClickEvent = item.bind.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋僜n var isflag = false;\n if (onChangeEvent.id) {\n //鍐呭鍙樺寲鍚庝簨浠禱n this.onChange(onChangeEvent);\n }\n // if(onSuffixClickCallbackEvent.id){ //鍚庡浘鏍囩偣鍑讳簨浠禱n // this.onSuffixClick(onSuffixClickCallbackEvent);\n // }\n // if(onSuffixClickEvent.id){ //鍚庡浘鏍囩偣鍑诲洖璋僜n // this.onSuffixClickCallback(onSuffixClickEvent);\n // }\n }\n },\n // 鍐呭鍙樺寲鍚庝簨浠禱n onChange: function onChange(event) {\n var _this5 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var obj_attr, input_param, $this, dataInfo, tip;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n try {\n if (event.id) {\n obj_attr = _this5.head_styledef.form.model; // console.log(obj_attr);\n input_param = _base.default.encode(JSON.stringify(Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n })));\n $this = _this5;\n dataInfo = {\n ed_type: 0,\n start_transaction: '',\n class_id: _this5.$data.head_styledef.form.clsId,\n class_name: '',\n event_id: event.id,\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: '',\n global_attr: '',\n input_param: input_param\n };\n _this5.$store.dispatch('runCustomEvent', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var result = ret.result;\n if (result.ret != 0) {\n var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n if (result.ret == 801) uni.showModal({\n title: '鎻愮ず',\n content: tip,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });else uni.showModal({\n title: '鎻愮ず',\n content: tip + ',鎻愮ず:' + result.ret,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return false;\n } else {\n var _tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n if (_tip) uni.showModal({\n title: '鎻愮ず',\n content: _tip,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n if (result.result_type == 0 && result.action) {\n result.action.forEach(function (item) {\n if (item.action_type == \"insert_subtable_page_row\") {\n //鐮佺洏涓璡n var value = item.value;\n $this.viewAceionRow(value);\n } else if (item.action_type == \"set_subtable_page_content\") {\n //宸茬爜鐩榎n var value = item.value;\n if (value.clear == true && $this.$data.detail1StyleDefList.length > 0) {\n //鍒ゆ柇鏄惁娓呯┖椤电鍐呭,姝e湪鐮佺洏鏄惁鏈夋暟鎹甛n uni.showModal({\n title: '鎻愮ず',\n content: '绯荤粺妫�祴鍒版湁姝e湪鐮佺洏涓殑璐у搧锛岀户缁搷浣滀細娓呯┖锛屾槸鍚︾户缁紵',\n success: function success(res) {\n if (res.confirm) {\n $this.$data.detail1StyleDefList = [];\n $this.$data.detail2StyleDefList = [];\n $this.viewAceionContent(value);\n } else if (res.cancel) {\n $this.$data.detail2StyleDefList = [];\n $this.viewAceionContent(value);\n }\n }\n });\n } else {\n $this.$data.detail2StyleDefList = [];\n $this.viewAceionContent(value);\n }\n }\n });\n } else {\n // this.detail2StyleDefList=[];\n if (result.info) {\n uni.showModal({\n title: \"閿欒4.3\",\n content: result.info,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"閿欒4\",\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: \"閿欒4.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n }\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"閿欒4.2\",\n content: \"鎵ц鈥滃唴瀹瑰彉鍖栧悗鈥濅簨浠跺け璐ワ細\" + tip,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n //鍔犺浇姝e湪鐮佺洏鍐呭\n viewAceionRow: function viewAceionRow(data, type) {\n // console.log(data);\n var styleStr = JSON.stringify(this.$data.detail1_styledef);\n if (type) {\n //纭畾鍚庤剼鏈繘鍏ュ姞杞藉凡鐮佺洏鏁版嵁\n styleStr = JSON.stringify(this.$data.detail2_styledef);\n }\n var detailStyle = JSON.parse(styleStr);\n data.row.attrs.forEach(function (attr) {\n detailStyle.form.items.forEach(function (ele) {\n if (ele.name != 'Layout') {\n if (ele.fieldId == attr.attr) ele.value = attr.value;\n } else if (ele.name == 'Layout') {\n ele.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == attr.attr) col.value = attr.value;\n }\n });\n }\n });\n });\n if (type) {\n //纭畾鍚庤剼鏈繘鍏ュ姞杞藉凡鐮佺洏鏁版嵁\n detailStyle.form.objId = data.row.id;\n this.$data.detail2StyleDefList.push(detailStyle);\n // console.log(this.$data.detail2StyleDefList);\n } else {\n detailStyle.form.attrs = data.row.attrs;\n this.$data.detail1StyleDefList.push(detailStyle);\n // console.log(this.$data.detail1StyleDefList);\n }\n },\n //鍔犺浇宸茬爜鐩樺唴瀹筡n viewAceionContent: function viewAceionContent(data) {\n var _this6 = this;\n data.content.forEach(function (cont) {\n var styleStr = JSON.stringify(_this6.$data.detail2_styledef);\n var detailStyle = JSON.parse(styleStr);\n detailStyle.form.objId = cont.id;\n cont.attrs.forEach(function (attr) {\n detailStyle.form.items.forEach(function (ele) {\n if (ele.name != 'Layout') {\n if (ele.fieldId == attr.attr) ele.value = attr.value;\n } else if (ele.name == 'Layout') {\n ele.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == attr.attr) col.value = attr.value;\n }\n });\n }\n });\n });\n _this6.$data.detail2StyleDefList.push(detailStyle);\n });\n // console.log(this.detail2StyleDefList);\n },\n onClickItem: function onClickItem(e) {\n //閫夋嫨椤电\n // console.log(e);\n this.current = e.currentIndex;\n },\n onDetail1EnterChange: function onDetail1EnterChange(item) {\n //鐮佺洏涓牱寮忓洖杞︿簨浠禱n __f__(\"log\", item, \" at pages/modal/5600.vue:676\");\n },\n delItem: function delItem(index) {\n //鍒犻櫎鐮佺洏涓牱寮忛潰鏉縗n this.detail1StyleDefList.splice(index, 1);\n },\n delDataObj: function delDataObj(style, index) {\n //鍒犻櫎宸茬爜鐩樻暟\n // console.log(style);\n var $this = this;\n uni.showModal({\n title: '鎻愮ず',\n content: '纭畾鍒犻櫎璇ュ凡鐮佺洏鏁版嵁锛�,\n success: function success(res) {\n if (res.confirm) {\n var objID = style.form.objId;\n if (!style.form.objId.includes('{')) objID = '{' + style.form.objId + '}';\n var dataInfo = {\n class_id: style.form.clsId,\n class_name: '',\n obj_id: objID\n };\n // console.log(dataInfo);\n $this.$store.dispatch('dataObjDel', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n $this.detail2StyleDefList.splice(index, 1);\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"鍒犻櫎鎴愬姛锛乗",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n } else {\n uni.showModal({\n title: \"閿欒5\",\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: \"閿欒5.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n } else if (res.cancel) {}\n }\n });\n },\n ok: function ok() {\n //纭畾\n // var $this = this;\n // console.log(this.$data.param.Before_OK_Event);\n // console.log(this.$data.param.After_OK_Event);\n if (this.$data.param.Before_OK_Event)\n //鏄惁鏈夌‘瀹氬墠浜嬩欢\n this.sava(this.$data.param.Before_OK_Event);else if (this.$data.param.After_OK_Event)\n //鏄惁鏈夌‘瀹氬悗浜嬩欢\n this.sava(this.$data.param.After_OK_Event);\n },\n sava: function sava(event) {\n var $this = this;\n if (this.$data.detail1StyleDefList.length == 0) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"娌℃湁姝e湪鐮佺洏鐨勬暟鎹紒\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return false;\n }\n //鑾峰彇琛ㄥご灞炴�\n var head_attr = {};\n this.$data.head_styledef.form.items.forEach(function (item) {\n head_attr[item.fieldId] = item.value;\n });\n // console.log(head_attr);\n //鑾峰彇姝e湪鐮佺洏灞炴�\n var detailAttrList = [];\n this.$data.detail1StyleDefList.forEach(function (style) {\n var detail_attr = {};\n style.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 detailAttrList.push(detail_attr);\n });\n // console.log(detailAttrList);\n //鑾峰彇姝e湪鐮佺洏閲屾病鏈夋樉绀虹殑瀛楁\n this.$data.detail1StyleDefList.forEach(function (style) {\n style.form.attrs.forEach(function (attr) {\n for (var key in detailAttrList) {\n var keys = Object.keys(detailAttrList[key]);\n var isflag = true;\n keys.forEach(function (ele) {\n if (ele == attr.attr) isflag = false;\n });\n if (isflag) {\n detailAttrList[attr.attr] = attr.value;\n }\n }\n });\n });\n // console.log(detailAttrList);\n // return;\n var input_param = _base.default.encode(JSON.stringify(Object.keys(head_attr).map(function (a) {\n return {\n attr: a,\n value: head_attr[a] || \"\"\n };\n })));\n var jsonlist = [];\n detailAttrList.forEach(function (attr) {\n jsonlist.push({\n id: '',\n attrs: Object.keys(attr).map(function (a) {\n return {\n attr: a,\n value: attr[a] || \"\"\n };\n })\n });\n });\n // console.log(jsonlist);\n jsonlist.forEach( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(json, key) {\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return $this.runCustomEvent(event, input_param, json);\n case 2:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n },\n //鎵ц纭畾鑴氭湰\n runCustomEvent: function runCustomEvent(event, input_param, json) {\n var _this7 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var $this, data_json, dataInfo;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n $this = _this7;\n data_json = _base.default.encode(JSON.stringify(json));\n dataInfo = {\n ed_type: 0,\n start_transaction: '',\n class_id: _this7.$data.head_styledef.form.clsId,\n class_name: '',\n event_id: _this7.$data.param.After_OK_Event.ID,\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: data_json,\n compose_info: '',\n ext_info: '',\n global_attr: '',\n input_param: input_param\n }; // console.log(dataInfo);\n _this7.$store.dispatch('runCustomEvent', dataInfo).then(function (res) {\n __f__(\"log\", res, \" at pages/modal/5600.vue:822\");\n if (res.err_code == 0) {\n var result = res.result;\n if (result.ret != 0) {\n var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n if (result.ret == 801) uni.showModal({\n title: '鎻愮ず',\n content: tip,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });else uni.showModal({\n title: '鎻愮ず',\n content: tip + ',鎻愮ず:' + result.ret,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return false;\n } else {\n var _tip2 = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n if (_tip2) uni.showModal({\n title: '鎻愮ず',\n content: _tip2,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n if (result.result_type == 0) {\n if (result.action) {\n result.action.forEach(function (item) {\n if (item.action_type == \"insert_subtable_page_row\") {\n //鐮佺洏涓璡n var value = item.value;\n //鍔犺浇宸茬粡鐮佺洏鏁版嵁\n $this.viewAceionRow(value, 'add');\n //娓呯┖鏉$爜鍐呭\n $this.$data.head_styledef.form.items.forEach(function (item, index) {\n if (item.fieldId != \"S_CNTR_CODE\") {\n item.value = '';\n item.oldvalue = '';\n $this.$data.head_styledef.form.model[item.fieldId] = '';\n }\n });\n //娓呴櫎姝e湪鐮佺洏涓垚鍔熺殑鏁版嵁\n $this.$data.detail1StyleDefList.forEach(function (style, index) {\n if (style.form.items[0].fieldId == json.attrs[0].attr && style.form.items[0].value == json.attrs[0].value) {\n $this.$data.detail1StyleDefList.splice(index, 1);\n return;\n }\n });\n // this.detail2StyleDefList=[];\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"鐮佺洏鎴愬姛\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n });\n } else {\n if ($this.$data.param.After_OK_Event.ID != event.ID) {\n //鍒ゆ柇褰撳墠浜嬩欢鏄惁鏄‘瀹氬悗浜嬩欢\n $this.sava($this.$data.param.After_OK_Event); //鎵ц纭畾鍚庝簨浠禱n }\n }\n } else {\n // $this.$data.detail2StyleDefList=[];\n if (result.info) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: result.info,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"閿欒8\",\n content: res.err_msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n var tip = typeof ex == \"string\" ? ex : ex.errMsg;\n uni.showModal({\n title: \"閿欒8.1\",\n content: \"鎵ц鈥滅‘瀹氬悗鈥濅簨浠跺け璐ワ細\" + tip,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n },\n cancel: function cancel(e) {\n //鍙栨秷\n uni.navigateBack({\n delta: 1 //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvNTYwMC52dWUiXSwibmFtZXMiOlsibW9kdWxlcyIsIkJhc2U2NCIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiZm9jdXNNYXRlcmlhIiwiaGVhZF9zdHlsZWRlZiIsImZvcm0iLCJpdGVtcyIsImRldGFpbDFfc3R5bGVkZWYiLCJkZXRhaWwxU3R5bGVEZWZMaXN0IiwiZGV0YWlsMl9zdHlsZWRlZiIsImRldGFpbDJTdHlsZURlZkxpc3QiLCJjdXJyZW50Iiwib25Mb2FkIiwidW5pIiwibWV0aG9kcyIsIkhlYWRfVUlTdHlsZUdldEluZm8iLCIkdGhpcyIsImRhdGFJbmZvIiwiY2xhc3NfaWQiLCJ1aV9zdHlsZV9pZCIsInN0eWxlZGVmIiwiY29udGVudCIsInNob3dDYW5jZWwiLCJjb25maXJtVGV4dCIsIkRldGFpbDFfVUlzdHlsZUdldEluZm8iLCJEZXRhaWwyX1VJc3R5bGVHZXRJbmZvIiwib250YXAiLCJnZXRBcHAiLCJpdGVtIiwic2V0VGltZW91dCIsIm9uRW50ZXJDaGFuZ2UiLCJvbkNoYW5nZSIsIm9ial9hdHRyIiwiaW5wdXRfcGFyYW0iLCJKU09OIiwiT2JqZWN0IiwiYXR0ciIsInZhbHVlIiwiZWRfdHlwZSIsInN0YXJ0X3RyYW5zYWN0aW9uIiwiY2xhc3NfbmFtZSIsImV2ZW50X2lkIiwiZXZlbnRfbmFtZSIsImRhdGFfb2JqX2lkIiwicHJqX2lkIiwicmVmX2Nsc19pZCIsInJlbF9vYmpfaWQiLCJ1c2VyX2xvZ2luIiwiZGF0YV9qc29uIiwiY29tcG9zZV9pbmZvIiwiZXh0X2luZm8iLCJnbG9iYWxfYXR0ciIsInJlc3VsdCIsInN1Y2Nlc3MiLCJ0aXAiLCJ2aWV3QWNlaW9uUm93Iiwic3R5bGVTdHIiLCJkZXRhaWxTdHlsZSIsImVsZSIsInZpZXdBY2Vpb25Db250ZW50IiwiY29udCIsIm9uQ2xpY2tJdGVtIiwib25EZXRhaWwxRW50ZXJDaGFuZ2UiLCJkZWxJdGVtIiwiZGVsRGF0YU9iaiIsIm9ial9pZCIsIm9rIiwic2F2YSIsImhlYWRfYXR0ciIsInN0eWxlIiwiZGV0YWlsX2F0dHIiLCJkZXRhaWxBdHRyTGlzdCIsImtleXMiLCJqc29ubGlzdCIsImlkIiwiYXR0cnMiLCJydW5DdXN0b21FdmVudCIsImNhbmNlbCIsImRlbHRhIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUEwVUE7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztlQUNBO0VBQ0FBO0lBQ0FDO0VBQ0E7RUFDQUM7SUFDQTtNQUNBQztNQUNBQztNQUNBQztNQUNBQztRQUNBQztVQUNBQztRQUNBO01BQ0E7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQUM7TUFDQTtNQUNBQztNQUNBTDtJQUNBO0VBQ0E7RUFDQU07SUFDQTtJQUNBQztNQUFBWjtJQUFBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFQUNBOztFQUNBYTtJQUNBQztNQUFBO01BQUE7UUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2dCQUFBO2dCQUNBQztnQkFDQUM7a0JBQ0FDO2tCQUNBQztnQkFDQTtnQkFDQTtrQkFDQTtrQkFDQTtvQkFDQTtvQkFDQTtzQkFDQTtzQkFDQUM7c0JBQ0E7c0JBQ0E7b0JBQ0E7b0JBQ0FKO29CQUNBO29CQUNBO2tCQUVBO29CQUNBSDtzQkFBQVo7c0JBQUFvQjtzQkFBQUM7c0JBQUFDO29CQUFBO2tCQUNBO2dCQUNBO2tCQUNBO2tCQUNBVjtvQkFBQVo7b0JBQUFvQjtvQkFBQUM7b0JBQUFDO2tCQUFBO2dCQUNBO2NBQUE7Y0FBQTtnQkFBQTtZQUFBO1VBQUE7UUFBQTtNQUFBO0lBRUE7SUFDQUM7TUFBQTtNQUFBO1FBQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtnQkFBQTtnQkFDQVI7Z0JBQ0FDO2tCQUNBQztrQkFDQUM7Z0JBQ0E7Z0JBQ0E7a0JBQ0E7a0JBQ0E7b0JBQ0E7b0JBQ0E7c0JBQ0E7c0JBQ0FDO3NCQUNBO3NCQUNBO29CQUNBO29CQUNBSjtvQkFDQTtvQkFDQTtvQkFDQTtvQkFDQTtvQkFDQTtrQkFFQTtvQkFDQUg7c0JBQUFaO3NCQUFBb0I7c0JBQUFDO3NCQUFBQztvQkFBQTtrQkFDQTtnQkFDQTtrQkFDQTtrQkFDQVY7b0JBQUFaO29CQUFBb0I7b0JBQUFDO29CQUFBQztrQkFBQTtnQkFDQTtjQUFBO2NBQUE7Z0JBQUE7WUFBQTtVQUFBO1FBQUE7TUFBQTtJQUVBO0lBQ0FFO01BQUE7TUFBQTtRQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUE7Z0JBQUE7Z0JBQ0FUO2dCQUNBQztrQkFDQUM7a0JBQ0FDO2dCQUNBO2dCQUNBO2tCQUNBO2tCQUNBO29CQUNBO29CQUNBO3NCQUNBO3NCQUNBQztzQkFDQTtzQkFDQTtvQkFDQTtvQkFDQUo7b0JBQ0E7a0JBRUE7b0JBQ0FIO3NCQUFBWjtzQkFBQW9CO3NCQUFBQztzQkFBQUM7b0JBQUE7a0JBQ0E7Z0JBQ0E7a0JBQ0E7a0JBQ0FWO29CQUFBWjtvQkFBQW9CO29CQUFBQztvQkFBQUM7a0JBQUE7Z0JBQ0E7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFFQTtJQUVBRztNQUFBO01BQUE7TUFDQTtNQUNBO01BQ0FDO1FBQ0E7UUFDQUM7UUFDQWY7UUFFQTtRQUNBO1FBQ0E7VUFDQWU7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFFQTtZQUFBO1lBQ0FaO1VBQ0E7VUFDQTtZQUFBO1lBQ0FBO1lB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QUFBQztzQkFBQSxRQUNBVjt3QkFBQVo7d0JBQUFvQjt3QkFBQUM7d0JBQUFDO3NCQUFBO3NCQUNBO29CQUNBO3NCQUNBO3NCQUNBO3dCQUFBdEI7d0JBQUFvQjt3QkFBQUM7d0JBQUFDO3NCQUFBO3NCQUVBO3dCQUNBOzBCQUNBNkI7NEJBQ0E7OEJBQUE7OEJBQ0E7OEJBQ0E7OEJBQ0FwQzs4QkFDQTs4QkFDQUE7Z0NBQ0E7a0NBQ0FZO2tDQUNBQTtrQ0FDQVo7Z0NBQ0E7OEJBQ0E7OEJBQ0E7OEJBQ0FBO2dDQUNBO2tDQUNBQTtrQ0FDQTtnQ0FDQTs4QkFDQTs4QkFDQTs4QkFDQUg7Z0NBQUFaO2dDQUFBb0I7Z0NBQUFDO2dDQUFBQzs4QkFBQTs0QkFDQTswQkFDQTt3QkFDQTswQkFDQTs0QkFBQTs0QkFDQVA7MEJBQ0E7d0JBQ0E7c0JBQ0E7d0JBQ0E7d0JBQ0E7MEJBQ0FIOzRCQUFBWjs0QkFBQW9COzRCQUFBQzs0QkFBQUM7MEJBQUE7d0JBQ0E7c0JBQ0E7b0JBQ0E7a0JBQ0E7b0JBQ0FWO3NCQUFBWjtzQkFBQW9CO3NCQUFBQztzQkFBQUM7b0JBQUE7a0JBQ0E7Z0JBQ0E7a0JBQ0E7a0JBQ0FWO29CQUFBWjtvQkFBQW9CO29CQUFBQztvQkFBQUM7a0JBQUE7Z0JBQ0E7Y0FBQTtjQUFBO2dCQUFBO1lBQUE7VUFBQTtRQUFBO01BQUE7SUFDQTtJQUVBc0Q7TUFBQTtNQUNBaEU7UUFDQWlFO01BQ0E7SUFDQTtFQUNBO0FBQ0E7QUFBQSwyQiIsImZpbGUiOiIxMzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8c3R5bGU+XHJcbi52LWhlYWRTdHlsZSAudHh0X3RpdGxle1xyXG4gIGZvbnQtc2l6ZTogMzRycHg7XHJcbiAgdGV4dC1hbGlnbjogcmlnaHQ7XHJcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG4gIHZlcnRpY2FsLWFsaWduOiAxMnB4O1xyXG59XHJcbi52LWhlYWRTdHlsZSBpbnB1dHtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0LyogYm9yZGVyOiAxcHggc29saWQgI2Q1ZDVkNTsgKi9cclxuXHQvKiB3aWR0aDogNjUlOyAqL1xyXG5cdHdpZHRoOiA4NSU7ICAgIFxyXG5cdGhlaWdodDogNTJycHg7XG4gICAgbGluZS1oZWlnaHQ6IDM0cnB4O1xyXG5cdGJhY2tncm91bmQ6ICNGRkY7XHJcblx0Ym9yZGVyLXJhZGl1czogMCAhaW1wb3J0YW50O1xyXG5cdGNvbG9yOiAjMmQ4Y2YwO1xyXG5cdHBhZGRpbmc6IDEwcnB4IDhycHggMTJycHg7XHJcblx0Zm9udC1zaXplOiAzNHJweDtcclxuXHRmb250LWZhbWlseTogaW5oZXJpdDtcclxuXHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0dHJhbnNpdGlvbi1kdXJhdGlvbjogMC4xcztcclxuXHRtYXJnaW4tdG9wOiA0cnB4O1xyXG59XHJcbi52LWhlYWRTdHlsZSBpbnB1dDo6LXdlYmtpdC1pbnB1dC1wbGFjZWhvbGRlciB7XHJcblx0Zm9udC1zaXplOiAxMnJweDtcclxufVxyXG4uaW5wdXQtd3JhcHBlcntcclxuXHRib3JkZXI6IDFweCBzb2xpZCAjZDVkNWQ1O1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgICB3aWR0aDogNjUlOyAgICBcclxuXHRsaW5lLWhlaWdodDogMjJycHg7XG59XHJcbltudnVlXSB1bmktdmlldyB7XG4gICAgcG9zaXRpb246IHJlbGF0aXZlO1xuICAgIGJvcmRlcjogMCBzb2xpZCAjMDAwO1xuICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XG59XHJcbi51bmktaW5wdXQge1xyXG5cdC8qIGJvcmRlcjogbm9uZTsgKi9cbn1cclxuLnVuaS1pY29ue1xyXG5cdC8qIGJvcmRlcjogMXB4IHNvbGlkIHJlZDsgKi9cclxuXHR3aWR0aDogOCU7XG4gICAgZm9udC1mYW1pbHk6IHVuaWljb25zO1xuICAgIGZvbnQtc2l6ZTogNDBycHg7XG4gICAgZm9udC13ZWlnaHQ6IDQwMDtcbiAgICBmb250LXN0eWxlOiBub3JtYWw7XG4gICAgLyogd2lkdGg6IDQ4cnB4OyAqL1xuICAgIGhlaWdodDogNDhycHg7XG4gICAgbGluZS1oZWlnaHQ6IDQ4cnB4O1xyXG5cdGNvbG9yOiAjMmQ4Y2YwO1xyXG4gICAgY3Vyc29yOiBwb2ludGVyO1xyXG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdHZlcnRpY2FsLWFsaWduOiAxOHJweDtcbn1cclxuLnZpZXctY29udGVudHtcclxuXHRtaW4taGVpZ2h0OiA3NjBycHg7XHJcblx0LyogYm9yZGVyOjFweCBzb2xpZCByZWQ7ICovXHJcbn1cclxuLmR2LXBhbmVse1xuICAgIGJhY2tncm91bmQtY29sb3I6I0VBRkVEOTtcbiAgICBwYWRkaW5nOiAyMHJweCAyMHJweCA0cnB4IDBweDtcbiAgICBib3JkZXItcmFkaXVzOiAxMnJweDtcbiAgICBtYXJnaW4tYm90dG9tOiAyMHJweDtcclxuXHR0ZXh0LWFsaWduOiByaWdodDtcclxufVxuLmR2LXBhbmVsLWlucHV0e1xyXG5cdHdpZHRoOiAxMDAlO1xuICAgIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxuXHR0ZXh0LWFsaWduOiBsZWZ0O1xufVxyXG4uZHYtcGFuZWwgLnR4dF90aXRsZXtcclxuICBmb250LXNpemU6IDM0cnB4O1xyXG4gIHRleHQtYWxpZ246IHJpZ2h0O1xyXG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG5cclxuLmR2LXBhbmVsIGlucHV0e1xyXG5cdHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcblx0ZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdGJvcmRlcjogMXB4IHNvbGlkICNkNWQ1ZDU7XHJcblx0d2lkdGg6IDY4JTsgXHJcblx0aGVpZ2h0OiA1MnJweDtcbiAgICBsaW5lLWhlaWdodDogMzRycHg7XHJcblx0YmFja2dyb3VuZDogI0ZGRjtcclxuXHRib3JkZXItcmFkaXVzOiA3cHggIWltcG9ydGFudDtcclxuXHRjb2xvcjogIzJkOGNmMDtcclxuXHRwYWRkaW5nOiA2cnB4IDhycHggOHJweDtcclxuXHRmb250LXNpemU6IDMycnB4O1xyXG5cdGZvbnQtZmFtaWx5OiBpbmhlcml0O1xyXG5cdGJveC1zaGFkb3c6IG5vbmUgIWltcG9ydGFudDtcclxuXHR0cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjFzO1xyXG5cdG1hcmdpbi10b3A6IDBycHg7XHJcbn1cclxuLmR2LXBhbmVsIGlucHV0Ojotd2Via2l0LWlucHV0LXBsYWNlaG9sZGVyIHtcclxuXHRmb250LXNpemU6IDEwcnB4O1xyXG59XHJcbi5kdi1wYW5lbCAuZm9ybS1pdGVtLXNwYW57XHJcblx0dmVydGljYWwtYWxpZ246IHRleHQtdG9wO1xyXG4gICAgY29sb3I6ICMyZDhjZjA7XHJcblx0d2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuXHR3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcblx0d2lkdGg6IGNhbGMoMTAwJSAtIDEwMHB4KTtcclxufVxyXG5cbi5kdi1wYW5lbC1idXR0b257XG4gICAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xyXG5cdG1hcmdpbi1yaWdodDogMjBycHg7XG59XHJcbi5kdi1wYW5lbC1idXR0b24gYnV0dG9uIHsgICAgXHJcblx0bGluZS1oZWlnaHQ6IDEuODtcbiAgICBib3JkZXI6IG5vbmU7XHJcblx0Zm9udC1zaXplOiAzNHJweDtcclxufVxyXG5idXR0b24uYnRuX2NhbmNlbCB7XHJcblx0d2lkdGg6NDkuNSU7XHJcblx0bWFyZ2luLXRvcDogNTBycHg7XHJcblx0cGFkZGluZzogMjBycHg7XHJcblx0bGluZS1oZWlnaHQ6IDEuNTtcclxuXHRib3JkZXI6IG5vbmU7XHJcblx0Zm9udC1zaXplOiAzOHJweDtcclxuXHRmb250LXdlaWdodDogYm9sZDtcclxuXHRmbG9hdDogbGVmdDtcclxuXHRkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XHJcbn1cclxuYnV0dG9uLmJ0bl9hZGQge1xyXG5cdHdpZHRoOjQ5LjUlO1xyXG5cdG1hcmdpbi10b3A6IDUwcnB4O1xyXG5cdHBhZGRpbmc6IDIwcnB4O1xyXG5cdGxpbmUtaGVpZ2h0OiAxLjU7XHJcblx0Ym9yZGVyOiBub25lO1xyXG5cdGZvbnQtc2l6ZTogMzhycHg7XHJcblx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0ZmxvYXQ6IHJpZ2h0O1xyXG5cdGRpc3BsYXk6IGlubGluZS1ibG9jaztcclxufVxyXG4ubG9nbyB7XHJcblx0aGVpZ2h0OiA1MHB4O1xuICAgIHdpZHRoOiAyMzBweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIG1hcmdpbjogMzglIGF1dG87XHJcbn1cclxuLmR2LWJvcmRlcntcclxuXHRib3JkZXI6IDFweCBzb2xpZCByZWQ7XHJcbn1cbjwvc3R5bGU+XHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxuXHQuZGVtby11bmktcm93IHtcblx0XHRtYXJnaW4tYm90dG9tOiAwcHg7XG5cdFx0ZGlzcGxheTogYmxvY2s7XG5cdH1cblx0Ojp2LWRlZXAgLnVuaS1yb3cge1xuXHRcdG1hcmdpbi1ib3R0b206IDBweDtcblx0fVxyXG5cdC52aWV3LXRhYnBhZ2UgOjp2LWRlZXAgLnVuaS1yb3cgIHtcblx0XHRtYXJnaW4tYm90dG9tOiA1cHg7XG5cdH1cblx0LmRlbW8tdW5pLWNvbCB7XG5cdFx0aGVpZ2h0OiAzNnB4O1xuXHRcdGJvcmRlci1yYWRpdXM6IDVweDtcblx0fVxyXG5cdC5kZW1vLXVuaS1yb3cgLnVuaS1pbnB1dHtcclxuXHRcdHdpZHRoOiBjYWxjKDEwMCUgLSAxMjBweCk7XHJcblx0fVxuPC9zdHlsZT5cblxuXHJcblxyXG48dGVtcGxhdGU+XHJcblx0PHZpZXcgY2xhc3M9XCJjb250ZW50XCI+XHJcblx0XHQ8IS0tIOihqOWktOagt+W8jyAtLT5cclxuXHRcdDx2aWV3IGNsYXNzPVwidi1oZWFkU3R5bGVcIiB2LWZvcj1cIihpdGVtLGluZGV4KSBpbiBoZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXNcIiA+XHJcblx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlXCIgOnN0eWxlPVwieyd3aWR0aCc6aXRlbS5sYWJlbFdpZHRoKydweCd9XCI+e3tpdGVtLmxhYmVsfX3vvJo8L3RleHQ+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwiaW5wdXQtd3JhcHBlclwiPlxuXHRcdFx0XHQ8dGV4dCB2LWlmPVwiaXRlbS5zZXR0aW5nLnByZWZpeFwiIFxyXG5cdFx0XHRcdFx0Y2xhc3M9XCJ1bmktaWNvblwiIFxyXG5cdFx0XHRcdFx0OmNsYXNzPVwiW2l0ZW0uc2V0dGluZy5wcmVmaXhdXCJcblx0XHRcdFx0XHRAY2xpY2s9XCJvbkVudGVyQ2hhbmdlKGl0ZW0pXCI+JiN4ZTU2ODs8L3RleHQ+XHJcblx0XHRcdFx0PGlucHV0XHJcblx0XHRcdFx0XHRjbGFzcz1cInVuaS1pbnB1dFwiXHJcblx0XHRcdFx0XHQ6dHlwZT1cIml0ZW0ubmFtZT09J0lucHV0Jz8ndGV4dCc6J3RleHQnXCIgXHJcblx0XHRcdFx0XHR2LW1vZGVsPVwiaXRlbS52YWx1ZVwiXHJcblx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHRcdDpwbGFjZWhvbGRlcj1cIml0ZW0ucGxhY2Vob2xkZXJcIlxyXG5cdFx0XHRcdFx0OnN0eWxlPVwieyd3aWR0aCc6aXRlbS5zZXR0aW5nLnByZWZpeCAmJiBpdGVtLnNldHRpbmcuc3VmZml4Pyc3OCUnOml0ZW0uc2V0dGluZy5wcmVmaXggfHwgaXRlbS5zZXR0aW5nLnN1ZmZpeD8nODclJzonOTYlJ31cIiBcclxuXHRcdFx0XHRcdDpmb2N1cz1cImZvY3VzTWF0ZXJpYVwiXHJcblx0XHRcdFx0XHRAZm9jdXM9XCJvbnRhcChpdGVtKVwiIFxuXHRcdFx0XHRcdEBrZXl1cC5lbnRlcj1cIm9uRW50ZXJDaGFuZ2UoaXRlbSlcIlxuXHRcdFx0XHRcdEBibHVyPVwib25FbnRlckNoYW5nZShpdGVtKVwiXHJcblx0XHRcdFx0Lz5cblx0XHRcdFx0PHRleHQgdi1pZj1cIml0ZW0uc2V0dGluZy5zdWZmaXhcIiBcclxuXHRcdFx0XHRcdGNsYXNzPVwidW5pLWljb25cIiBcclxuXHRcdFx0XHRcdDpjbGFzcz1cIltpdGVtLnNldHRpbmcuc3VmZml4XVwiXG5cdFx0XHRcdFx0QGNsaWNrPVwib25FbnRlckNoYW5nZShpdGVtKVwiPiYjeGU1Njg7PC90ZXh0PlxyXG5cdFx0ICAgIDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwidmlldy1jb250ZW50XCI+XHJcblx0XHRcdDwhLS0g6aG1562+IC0tPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cImR2LXRhYlwiPlxyXG5cdFx0XHRcdDx1bmktc2VnbWVudGVkLWNvbnRyb2wgOmN1cnJlbnQ9XCJjdXJyZW50XCIgOnZhbHVlcz1cIml0ZW1zXCIgQGNsaWNrSXRlbT1cIm9uQ2xpY2tJdGVtXCJcclxuXHRcdFx0XHRcdHN0eWxlVHlwZT1cImJ1dHRvblwiPlxyXG5cdFx0XHRcdDwvdW5pLXNlZ21lbnRlZC1jb250cm9sPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwhLS0g5q2j5Zyo56CB55uYIC0tPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInZpZXctdGFicGFnZVwiIHYtaWY9XCJjdXJyZW50PT0wXCI+XHJcblx0XHRcdFx0PGltYWdlIGNsYXNzPVwibG9nb1wiIHYtaWY9XCJkZXRhaWwxU3R5bGVEZWZMaXN0Lmxlbmd0aD09MFwiIHNyYz1cIi4uLy4uL2ltYWdlcy9tb2JveF9sb2dfMjAweDQwLnBuZ1wiPjwvaW1hZ2U+XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0PCEtLSA8ZGl2IGNsYXNzPVwiZHYtcGFuZWxcIj5cclxuXHRcdFx0XHQgICAgPGRpdiBjbGFzcz1cImR2LXBhbmVsLWlucHV0XCI+XHJcblx0XHRcdFx0XHRcdDxkaXYgPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlXCIgc3R5bGU9XCJ3aWR0aDoxMDBweFwiPnRlc3TvvJo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb3JtLWl0ZW0tc3BhblwiID4xMTExPC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQgICAgICAgIDxkaXYgPlxyXG5cdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlXCIgc3R5bGU9XCJ3aWR0aDoxMDBweFwiPnRlc3TvvJo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb3JtLWl0ZW0tc3BhblwiID4xMTExPC9zcGFuPlxyXG5cdFx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdFx0PGRpdj5cclxuXHRcdFx0XHRcdFx0XHQ8dW5pLXJvdyBjbGFzcz1cImRlbW8tdW5pLXJvd1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS1jb2wgOnNwYW49XCIxMlwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4dF90aXRsZSBkdi1mb3JtLWl0ZW0tY29sXCIgc3R5bGU9XCJ3aWR0aDoxMDBweFwiPnRlc3TvvJo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9ybS1pdGVtLXNwYW5cIiA+ZmZhYWE8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS1jb2w+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLWNvbCA6c3Bhbj1cIjEyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlIGR2LWZvcm0taXRlbS1jb2xcIiBzdHlsZT1cIndpZHRoOjEwMHB4XCI+dGVzdO+8mjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb3JtLWl0ZW0tc3BhblwiID5mZmFhYWZmYWFhZmZhYWFmZmFhYWZmYWFhPC9zcGFuPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktY29sPlxyXG5cdFx0XHRcdFx0XHRcdDwvdW5pLXJvdz5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHRcdDxkaXY+XHJcblx0XHRcdFx0XHRcdFx0PHVuaS1yb3cgY2xhc3M9XCJkZW1vLXVuaS1yb3dcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktY29sIDpzcGFuPVwiMTJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eHRfdGl0bGUgZHYtZm9ybS1pdGVtLWNvbFwiIHN0eWxlPVwid2lkdGg6MTAwcHhcIj50ZXN077yaPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvcm0taXRlbS1zcGFuXCIgPmZzZmVnZnM8L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS1jb2w+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLWNvbCA6c3Bhbj1cIjEyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlIGR2LWZvcm0taXRlbS1jb2xcIiBzdHlsZT1cIndpZHRoOjEwMHB4XCI+dGVzdO+8mjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IHR5cGU9XCJudW1iZXJcIiBjbGFzcz1cInVuaS1pbnB1dCBpbnB1dC1tYXJnaW50b3BcIiBzdHlsZT1cIndpZHRoOiBjYWxjKDEwMCUgLSAxMjBweCk7XCIvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktY29sPlxyXG5cdFx0XHRcdFx0XHRcdDwvdW5pLXJvdz5cclxuXHRcdFx0XHRcdFx0PC9kaXY+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJkdi1wYW5lbC1idXR0b25cIj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwid2FyblwiIEB0YXA9XCJkZWxJdGVtKDApXCI+5Yig6ZmkPC9idXR0b24+XHJcblx0XHRcdFx0XHQ8L2Rpdj5cclxuXHRcdFx0XHQ8L2Rpdj4gLS0+XHJcblx0XHRcdFx0PGRpdiBjbGFzcz1cImR2LXBhbmVsXCIgdi1mb3I9XCIoc3R5bGUsaWkpIGluIGRldGFpbDFTdHlsZURlZkxpc3RcIj5cclxuXHRcdFx0XHQgICAgPGRpdiBjbGFzcz1cImR2LXBhbmVsLWlucHV0XCI+XHJcblx0XHRcdFx0ICAgICAgICA8ZGl2IHYtZm9yPVwiKGl0ZW0saW5kZXgpIGluIHN0eWxlLmZvcm0uaXRlbXNcIj5cclxuXHRcdFx0XHQgICAgICAgICAgICA8IS0tIOaZrumAmuW4g+WxgCAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiaXRlbS5uYW1lPT0nSW5wdXQnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4dF90aXRsZVwiIDpzdHlsZT1cInsnd2lkdGgnOml0ZW0ubGFiZWxXaWR0aCsncHgnfVwiPnt7aXRlbS5sYWJlbH1977yaPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0PHNwYW4gY2xhc3M9XCJmb3JtLWl0ZW0tc3BhblwiIHYtaWY9XCJpdGVtLmRpc2FibGVkXCI+e3tpdGVtLnZhbHVlfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJ1bmktaW5wdXRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2LWlmPVwiIWl0ZW0uZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6dHlwZT1cIml0ZW0ubmFtZT09J0lucHV0TnVtYmVyJz8nbnVtYmVyJzondGV4dCdcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0OnZhbHVlPVwiaXRlbS52YWx1ZVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJpdGVtLmRpc2FibGVkXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0OnBsYWNlaG9sZGVyPVwiaXRlbS5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHRcdFx0XHQvPlxyXG5cdFx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQgICAgICAgICAgICA8IS0tIOagheagvOW4g+WxgCAtLT5cclxuXHRcdFx0XHRcdFx0XHQ8dW5pLXJvdyBjbGFzcz1cImRlbW8tdW5pLXJvd1wiIHYtaWY9XCJpdGVtLm5hbWU9PSdMYXlvdXQnXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLWNvbCBcclxuXHRcdFx0XHRcdFx0XHRcdFx0OnNwYW49XCIyNCAvIGl0ZW0uc2V0dGluZy5jb2xcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2LWZvcj1cIihjb2xzLGtleSkgaW4gaXRlbS5zZXR0aW5nLmNvbExpc3RcIiBcclxuXHRcdFx0XHRcdFx0XHRcdD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cImNvbHMhPW51bGxcIiA+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PHRleHQgY2xhc3M9XCJ0eHRfdGl0bGVcIiA6c3R5bGU9XCJ7J3dpZHRoJzpjb2xzLmxhYmVsV2lkdGgrJ3B4J31cIj57e2NvbHMubGFiZWx9fe+8mjwvdGV4dD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvcm0taXRlbS1zcGFuXCIgdi1pZj1cImNvbHMuZGlzYWJsZWRcIj57e2NvbHMudmFsdWV9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXRcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwidW5pLWlucHV0XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHYtaWY9XCIhY29scy5kaXNhYmxlZFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6dHlwZT1cImNvbHMubmFtZT09J0lucHV0TnVtYmVyJz8nbnVtYmVyJzondGV4dCdcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDp2YWx1ZT1cImNvbHMudmFsdWVcIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDpkaXNhYmxlZD1cImNvbHMuZGlzYWJsZWRcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OnBsYWNlaG9sZGVyPVwiY29scy5wbGFjZWhvbGRlclwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0Lz5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktY29sPlxyXG5cdFx0XHRcdFx0XHRcdDwvdW5pLXJvdz5cclxuXHRcdFx0XHQgICAgICAgIDwvZGl2PlxyXG5cdFx0XHRcdCAgICAgPC9kaXY+XHJcblx0XHRcdFx0ICAgIDxkaXYgY2xhc3M9XCJkdi1wYW5lbC1idXR0b25cIj5cclxuXHRcdFx0XHRcdFx0PGJ1dHRvbiB0eXBlPVwid2FyblwiIEB0YXA9XCJkZWxJdGVtKDApXCI+5Yig6ZmkPC9idXR0b24+XHJcblx0XHRcdFx0ICAgIDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwhLS0g5bey56CB55uYIC0tPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInZpZXctdGFicGFnZTJcIiB2LWlmPVwiY3VycmVudD09MVwiPlxyXG5cdFx0XHRcdDxpbWFnZSBjbGFzcz1cImxvZ29cIiB2LWlmPVwiZGV0YWlsMlN0eWxlRGVmTGlzdC5sZW5ndGg9PTBcIiBzcmM9XCIuLi8uLi9pbWFnZXMvbW9ib3hfbG9nXzIwMHg0MC5wbmdcIj48L2ltYWdlPlxyXG5cdFx0XHRcdDxkaXYgY2xhc3M9XCJkdi1wYW5lbFwiIHYtZm9yPVwiKHN0eWxlLGlpKSBpbiBkZXRhaWwyU3R5bGVEZWZMaXN0XCI+XHJcblx0XHRcdFx0ICAgIDxkaXYgY2xhc3M9XCJkdi1wYW5lbC1pbnB1dFwiPlxyXG5cdFx0XHRcdCAgICAgICAgPGRpdiB2LWZvcj1cIihpdGVtLGluZGV4KSBpbiBzdHlsZS5mb3JtLml0ZW1zXCI+XHJcblx0XHRcdFx0ICAgICAgICAgICAgPCEtLSDmma7pgJrluIPlsYAgLS0+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgdi1pZj1cIml0ZW0ubmFtZSE9J0xheW91dCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx0ZXh0IGNsYXNzPVwidHh0X3RpdGxlXCIgOnN0eWxlPVwieyd3aWR0aCc6aXRlbS5sYWJlbFdpZHRoKydweCd9XCI+e3tpdGVtLmxhYmVsfX3vvJo8L3RleHQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8c3BhbiBjbGFzcz1cImZvcm0taXRlbS1zcGFuXCI+e3tpdGVtLnZhbHVlfX08L3NwYW4+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdCAgICAgICAgICAgIDwhLS0g5qCF5qC85biD5bGAIC0tPlxyXG5cdFx0XHRcdFx0XHRcdDx1bmktcm93IGNsYXNzPVwiZGVtby11bmktcm93XCIgdi1pZj1cIml0ZW0ubmFtZT09J0xheW91dCdcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktY29sIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ6c3Bhbj1cIjI0IC8gaXRlbS5zZXR0aW5nLmNvbFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdHYtZm9yPVwiKGNvbHMsa2V5KSBpbiBpdGVtLnNldHRpbmcuY29sTGlzdFwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyB2LWlmPVwiY29scyE9bnVsbFwiID5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dGV4dCBjbGFzcz1cInR4dF90aXRsZVwiIDpzdHlsZT1cInsnd2lkdGgnOmNvbHMubGFiZWxXaWR0aCsncHgnfVwiPnt7Y29scy5sYWJlbH1977yaPC90ZXh0PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxzcGFuIGNsYXNzPVwiZm9ybS1pdGVtLXNwYW5cIj57e2NvbHMudmFsdWV9fTwvc3Bhbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktY29sPlxyXG5cdFx0XHRcdFx0XHRcdDwvdW5pLXJvdz5cclxuXHRcdFx0XHQgICAgICAgIDwvZGl2PlxyXG5cdFx0XHRcdCAgICA8L2Rpdj5cclxuXHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJkdi1wYW5lbC1idXR0b25cIj5cclxuXHRcdFx0XHRcdCBcdDxidXR0b24gdHlwZT1cIndhcm5cIiBAdGFwPVwiZGVsRGF0YU9iaihzdHlsZSxpaSlcIj7liKDpmaQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldz5cclxuXHRcdFx0PGJ1dHRvbiB0eXBlPVwiZGVmYXVsdFwiIEB0YXA9XCJjYW5jZWxcIiBjbGFzcz1cImJ0bl9jYW5jZWxcIj7lj5bmtog8L2J1dHRvbj5cclxuXHRcdCAgICA8YnV0dG9uIHR5cGU9XCJwcmltYXJ5XCIgQHRhcD1cIm9rXCIgY2xhc3M9XCJidG5fYWRkXCI+56Gu5a6aPC9idXR0b24+XHJcblx0XHQ8L3ZpZXc+XG4gICAgPC92aWV3PlxuPC90ZW1wbGF0ZT5cblxuPHNjcmlwdD5cclxuaW1wb3J0IEJhc2U2NCBmcm9tICcuLi8uLi9jb21wb25lbnRzL2pzLWJhc2U2NC9iYXNlNjQuanMnXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBtb2R1bGVzOntcclxuXHRCYXNlNjQsXHJcbiAgfSxcbiAgZGF0YSgpIHtcbiAgICByZXR1cm4ge1xyXG5cdCAgdGl0bGU6J+eggeebmCcsXG4gICAgICBwYXJhbToge30sXHJcblx0ICBmb2N1c01hdGVyaWE6ZmFsc2UsXHJcblx0ICBoZWFkX3N0eWxlZGVmOntcclxuXHRcdGZvcm06e1xyXG5cdFx0XHRpdGVtczpbXVxyXG5cdFx0fVxyXG5cdCAgfSxcbiAgICAgIGRldGFpbDFfc3R5bGVkZWY6e30sXG4gICAgICBkZXRhaWwxU3R5bGVEZWZMaXN0OltdLFxuICAgICAgZGV0YWlsMl9zdHlsZWRlZjp7fSxcbiAgICAgIGRldGFpbDJTdHlsZURlZkxpc3Q6W10sXHJcblx0ICAvLyDliIbmrrXlmajmlbDmja5cclxuXHQgIGN1cnJlbnQ6IDAsXHJcblx0ICBpdGVtczogWyfmraPlnKjnoIHnm5gnLCAn5bey56CB55uYJ10sXG4gICAgfTtcbiAgfSxcclxuICBvbkxvYWQob3B0aW9ucykge1xyXG5cdC8vIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cdHVuaS5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoeyB0aXRsZTogb3B0aW9ucy50aXRsZW5hbWV9KTsgLy/orr7nva7pobbpg6jmoIfpopggXHJcblx0dGhpcy4kZGF0YS5wYXJhbSA9IEpTT04ucGFyc2Uob3B0aW9ucy5wYXJhbSk7XHJcblx0Ly8gY29uc29sZS5sb2codGhpcy4kZGF0YS5wYXJhbSk7XHJcblx0IC8v6I635Y+WQ0dfRGV0YWls77yI5omY55uY6LSn5ZOB6KGo77yJ5pWw5o2u57G755qE6Ieq5a6a5LmJ6KGo5Y2V5Y+C5pWwXHJcblx0dGhpcy5IZWFkX1VJU3R5bGVHZXRJbmZvKCdDR19EZXRhaWwnLHRoaXMuJGRhdGEucGFyYW0uSGVhZF9QYW5lbF9TdHlsZS5JRCk7XHJcblx0dGhpcy5EZXRhaWwxX1VJc3R5bGVHZXRJbmZvKCdDR19EZXRhaWwnLHRoaXMuJGRhdGEucGFyYW0uRGV0YWlsX0xpc3RfUGFuZWwxX1N0eWxlLklEKTtcclxuXHR0aGlzLkRldGFpbDJfVUlzdHlsZUdldEluZm8oJ0NHX0RldGFpbCcsdGhpcy4kZGF0YS5wYXJhbS5EZXRhaWxfTGlzdF9QYW5lbDJfU3R5bGUuSUQpO1xyXG5cdC8v6aG16Z2i5Yid5aeL5YyW6I635Y+W54Sm54K5XHJcblx0Ly8gdGhpcy5mb2N1c01hdGVyaWE9dHJ1ZTsgXHJcbiAgfSxcdFxuICBtZXRob2RzOiB7XG4gICAgYXN5bmMgSGVhZF9VSVN0eWxlR2V0SW5mbyhjbGFzc19pZCxzdHlsZV9pZCl7ICAgLy/ojrflj5boh6rlrprkuYnooajljZXmoLflvI9cclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0XHRjbGFzc19pZDpjbGFzc19pZCxcclxuXHRcdFx0dWlfc3R5bGVfaWQ6c3R5bGVfaWQsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ1VJU3R5bGVHZXRJbmZvJyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIHN0eWxlZGVmPVwiXCI7XHJcblx0XHRcdFx0aWYocmV0LnJlc3VsdC5zdHlsZV9kZWYpe1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDLnmoRzdHlsZV9kZWbmmK9qc29u5a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBzdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmLnJlcGxhY2UoL1xcXFwvZyxcIlwiKTtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gz55qEc3R5bGVfZGVm5pivYmFzZTY05a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBpZighcmV0LnJlc3VsdC5zdHlsZV9kZWYuaW5jbHVkZXMoJ1wiJykpIHN0eWxlZGVmID0gQmFzZTY0LmRlY29kZShyZXQucmVzdWx0LnN0eWxlX2RlZik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdCR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZj8gSlNPTi5wYXJzZShzdHlsZWRlZik6IHt9O1xyXG5cdFx0XHRcdC8vIHRoaXMuZm9ybSA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzFcIixjb250ZW50OnJldC5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMS4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHR9KTtcclxuICAgICAgICBcclxuICAgIH0sXG4gICAgYXN5bmMgRGV0YWlsMV9VSXN0eWxlR2V0SW5mbyhjbGFzc19pZCxzdHlsZV9pZCl7ICAgLy/ojrflj5boh6rlrprkuYnooajljZXmoLflvI9cclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0XHRjbGFzc19pZDpjbGFzc19pZCxcclxuXHRcdFx0dWlfc3R5bGVfaWQ6c3R5bGVfaWQsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ1VJU3R5bGVHZXRJbmZvJyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIHN0eWxlZGVmPVwiXCI7XHJcblx0XHRcdFx0aWYocmV0LnJlc3VsdC5zdHlsZV9kZWYpe1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDLnmoRzdHlsZV9kZWbmmK9qc29u5a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBzdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmLnJlcGxhY2UoL1xcXFwvZyxcIlwiKTtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gz55qEc3R5bGVfZGVm5pivYmFzZTY05a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBpZighcmV0LnJlc3VsdC5zdHlsZV9kZWYuaW5jbHVkZXMoJ1wiJykpIHN0eWxlZGVmID0gQmFzZTY0LmRlY29kZShyZXQucmVzdWx0LnN0eWxlX2RlZik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdCR0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZj8gSlNPTi5wYXJzZShzdHlsZWRlZik6IHt9O1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdC8vICR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaCgkdGhpcy4kZGF0YS5kZXRhaWwxX3N0eWxlZGVmKTtcclxuXHRcdFx0XHQvLyBsZXQgYWEgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmRldGFpbDFfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdC8vICR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaChKU09OLnBhcnNlKGFhKSk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdCk7XHJcblx0XHRcdFx0XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMlwiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG4gICAgICAgIFxyXG4gICAgfSxcbiAgICBhc3luYyBEZXRhaWwyX1VJc3R5bGVHZXRJbmZvKGNsYXNzX2lkLHN0eWxlX2lkKXsgICAvL+iOt+WPluiHquWumuS5ieihqOWNleagt+W8j1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdGNsYXNzX2lkOmNsYXNzX2lkLFxyXG5cdFx0XHR1aV9zdHlsZV9pZDpzdHlsZV9pZCxcclxuXHRcdH07XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnVUlTdHlsZUdldEluZm8nLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRpZiAocmV0LmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgc3R5bGVkZWY9XCJcIjtcclxuXHRcdFx0XHRpZihyZXQucmVzdWx0LnN0eWxlX2RlZil7XHJcblx0XHRcdFx0ICAgICAvL21vYm94MueahHN0eWxlX2RlZuaYr2pzb27lrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIHN0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWYucmVwbGFjZSgvXFxcXC9nLFwiXCIpO1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDPnmoRzdHlsZV9kZWbmmK9iYXNlNjTlrZfnrKbkuLJcclxuXHRcdFx0XHQgICAgIGlmKCFyZXQucmVzdWx0LnN0eWxlX2RlZi5pbmNsdWRlcygnXCInKSkgc3R5bGVkZWYgPSBCYXNlNjQuZGVjb2RlKHJldC5yZXN1bHQuc3R5bGVfZGVmKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0JHRoaXMuJGRhdGEuZGV0YWlsMl9zdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmPyBKU09OLnBhcnNlKHN0eWxlZGVmKToge307XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEuZGV0YWlsMl9zdHlsZWRlZik7XHJcblx0XHRcdFx0XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vM1wiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuXHRcclxuXHRvbnRhcChpdGVtKXsgLy/miavnoIHlip/og71cclxuXHRcdC8vIHZhciAkZWxlID0gZTtcclxuXHRcdC8vY29uc29sZS5sb2coZS50YXJnZXQpXHJcblx0XHRnZXRBcHAoKS5vblNjYW4oKHJlc3VsdCk9PntcclxuXHRcdFx0Y29uc29sZS5sb2cocmVzdWx0LmRlY29kZWRhdGEpO1xyXG5cdFx0XHRpdGVtLnZhbHVlID0gcmVzdWx0LmRlY29kZWRhdGE7XHJcblx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0XHJcblx0XHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHRcdGNvbnNvbGUubG9nKGl0ZW0pO1xyXG5cdFx0XHRpZihpdGVtLm9sZHZhbHVlICE9IGl0ZW0udmFsdWUpe1xyXG5cdFx0XHQgICAgaXRlbS5vbGR2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0dmFyIGF0dHIgPSBpdGVtLmZpZWxkSWQ7XHJcblx0XHRcdFx0dGhpcy5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbYXR0cl0gPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdHZhciBvbkNoYW5nZUV2ZW50ID0gaXRlbS5iaW5kLm9uQ2hhbmdlRXZlbnQ7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdFx0XHR2YXIgb25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQ7ICAgLy/lkI7lm77moIfngrnlh7vkuovku7ZcclxuXHRcdFx0XHR2YXIgb25TdWZmaXhDbGlja0V2ZW50ID0gaXRlbS5iaW5kLm9uU3VmZml4Q2xpY2tFdmVudDsgICAvL+WQjuWbvuagh+eCueWHu+Wbnuiwg1xyXG5cdFx0XHRcdHZhciBpc2ZsYWcgPSBmYWxzZTtcclxuXHRcdFx0XHRcclxuXHRcdFx0ICAgIGlmKG9uQ2hhbmdlRXZlbnQuaWQpeyAgIC8v5YaF5a655Y+Y5YyW5ZCO5LqL5Lu2XHJcblx0XHRcdCAgICAgICR0aGlzLm9uQ2hhbmdlKG9uQ2hhbmdlRXZlbnQpOyBcclxuXHRcdFx0ICAgIH1cclxuXHRcdFx0XHRpZihpdGVtLnZhbHVlKXsgLy/nrKzkuIDkuKrovpPlhaXmoYbkuI3kuLrnqbpcclxuXHRcdFx0XHRcdCR0aGlzLmZvY3VzTWF0ZXJpYSA9IHRydWU7IC8v5Yid5aeL5YyW77yM56ys5LqM5Liq6L6T5YWl5qGGZm9jdXPlsZ7mgKdcclxuXHRcdFx0XHRcdC8vIHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcclxuXHRcdFx0XHRcdC8vIFx0JHRoaXMuZm9jdXNNYXRlcmlhPXRydWU7IC8v56ys5LqM5Liq6L6T5YWl5qGG6I635Y+W54Sm54K5XHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoZnVuY3Rpb24oKXtcclxuXHRcdFx0XHRcdFx0XHR1bmkuaGlkZUtleWJvYXJkKCk7XHJcblx0XHRcdFx0XHRcdH0sMTAwKTtcclxuXHRcdFx0XHRcdC8vIH0sNTAwKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdCAgICAvLyBpZihvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudC5pZCl7ICAgLy/lkI7lm77moIfngrnlh7vkuovku7ZcclxuXHRcdFx0ICAgIC8vICAgdGhpcy5vblN1ZmZpeENsaWNrKG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50KTtcclxuXHRcdFx0ICAgIC8vIH1cclxuXHRcdFx0ICAgIC8vIGlmKG9uU3VmZml4Q2xpY2tFdmVudC5pZCl7ICAgLy/lkI7lm77moIfngrnlh7vlm57osINcclxuXHRcdFx0ICAgIC8vICAgdGhpcy5vblN1ZmZpeENsaWNrQ2FsbGJhY2sob25TdWZmaXhDbGlja0V2ZW50KTtcclxuXHRcdFx0ICAgIC8vIH1cclxuXHRcdFx0fVxyXG5cdFx0fSlcclxuXHR9LFxyXG5cdG9uRW50ZXJDaGFuZ2UoaXRlbSl7IC8v5Zue6L2m77yM54K55Ye75oyJ6ZKu77yM5Y+W5raI6IqC54K55LqL5Lu2XHJcblx0XHQvLyBjb25zb2xlLmxvZyhpdGVtKTtcclxuXHRcdGlmKGl0ZW0ub2xkdmFsdWUgIT0gaXRlbS52YWx1ZSl7XHJcblx0XHQgICAgaXRlbS5vbGR2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdHZhciBhdHRyID0gaXRlbS5maWVsZElkO1xyXG5cdFx0XHR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdHZhciBvbkNoYW5nZUV2ZW50ID0gaXRlbS5iaW5kLm9uQ2hhbmdlRXZlbnQ7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdFx0dmFyIG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50ID0gaXRlbS5iaW5kLm9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50OyAgIC8v5ZCO5Zu+5qCH54K55Ye75LqL5Lu2XHJcblx0XHRcdHZhciBvblN1ZmZpeENsaWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0V2ZW50OyAgIC8v5ZCO5Zu+5qCH54K55Ye75Zue6LCDXHJcblx0XHRcdHZhciBpc2ZsYWcgPSBmYWxzZTtcclxuXHRcdFx0XHJcblx0XHQgICAgaWYob25DaGFuZ2VFdmVudC5pZCl7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdCAgICAgIHRoaXMub25DaGFuZ2Uob25DaGFuZ2VFdmVudCk7IFxyXG5cdFx0ICAgIH1cclxuXHRcdCAgICAvLyBpZihvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudC5pZCl7ICAgLy/lkI7lm77moIfngrnlh7vkuovku7ZcclxuXHRcdCAgICAvLyAgIHRoaXMub25TdWZmaXhDbGljayhvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudCk7XHJcblx0XHQgICAgLy8gfVxyXG5cdFx0ICAgIC8vIGlmKG9uU3VmZml4Q2xpY2tFdmVudC5pZCl7ICAgLy/lkI7lm77moIfngrnlh7vlm57osINcclxuXHRcdCAgICAvLyAgIHRoaXMub25TdWZmaXhDbGlja0NhbGxiYWNrKG9uU3VmZml4Q2xpY2tFdmVudCk7XHJcblx0XHQgICAgLy8gfVxyXG5cdFx0fVxyXG5cdH0sXHJcblx0Ly8g5YaF5a655Y+Y5YyW5ZCO5LqL5Lu2XHJcblx0YXN5bmMgb25DaGFuZ2UoZXZlbnQpIHtcclxuXHQgICAgdHJ5IHtcclxuXHQgICAgICAgIGlmIChldmVudC5pZCkge1xyXG5cdCAgICAgICAgICB2YXIgb2JqX2F0dHIgPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHQgICAgICAgICAgLy8gY29uc29sZS5sb2cob2JqX2F0dHIpO1xyXG5cdCAgICAgICAgICB2YXIgaW5wdXRfcGFyYW0gPSBCYXNlNjQuZW5jb2RlKFxyXG5cdCAgICAgICAgICAgIEpTT04uc3RyaW5naWZ5KFxyXG5cdCAgICAgICAgICAgICAgT2JqZWN0LmtleXMob2JqX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHQgICAgICAgICAgICAgICAgYXR0cjogYSxcclxuXHQgICAgICAgICAgICAgICAgdmFsdWU6IG9ial9hdHRyW2FdIHx8IFwiXCIsXHJcblx0ICAgICAgICAgICAgICB9KSlcclxuXHQgICAgICAgICAgICApXHJcblx0ICAgICAgICAgICk7XHJcblx0XHRcdCAgdmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0ICB2YXIgZGF0YUluZm89e1xyXG5cdCAgICAgICAgICAgIGVkX3R5cGU6IDAsXHJcblx0XHRcdFx0c3RhcnRfdHJhbnNhY3Rpb246ICcnLFxyXG5cdCAgICAgICAgICAgIGNsYXNzX2lkOiB0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5jbHNJZCxcclxuXHRcdFx0XHRjbGFzc19uYW1lOiAnJyxcclxuXHQgICAgICAgICAgICBldmVudF9pZDogZXZlbnQuaWQsXHJcblx0XHRcdFx0ZXZlbnRfbmFtZTogJycsXHJcblx0XHRcdFx0ZGF0YV9vYmpfaWQ6ICcnLFxyXG5cdCAgICAgICAgICAgIG9ial9hdHRyOiBvYmpfYXR0cixcclxuXHRcdFx0XHRwcmpfaWQ6ICcnLFxyXG5cdFx0XHRcdHJlZl9jbHNfaWQ6ICcnLFxyXG5cdFx0XHRcdHJlbF9vYmpfaWQ6ICcnLFxyXG5cdFx0XHRcdHVzZXJfbG9naW46ICcnLFxyXG5cdFx0XHRcdGRhdGFfanNvbjogJycsXHJcblx0XHRcdFx0Y29tcG9zZV9pbmZvOiAnJyxcclxuXHRcdFx0XHRleHRfaW5mbzogJycsXHJcblx0XHRcdFx0Z2xvYmFsX2F0dHI6ICcnLFxyXG5cdCAgICAgICAgICAgIGlucHV0X3BhcmFtOiBpbnB1dF9wYXJhbSxcclxuXHQgICAgICAgICAgfTtcclxuXHRcdFx0ICB0aGlzLiRzdG9yZS5kaXNwYXRjaCgncnVuQ3VzdG9tRXZlbnQnLGRhdGFJbmZvKS50aGVuKHJldD0+e1xyXG5cdFx0XHQgIFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0ICBcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdFx0dmFyIHJlc3VsdCA9IHJldC5yZXN1bHQ7IFxyXG5cdFx0XHRcdFx0aWYgKHJlc3VsdC5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdFx0ICAgIHZhciB0aXAgPSByZXN1bHQuZXJyX2luZm8gPyB0eXBlb2YgcmVzdWx0LmVycl9pbmZvID09ICdzdHJpbmcnID8gcmVzdWx0LmVycl9pbmZvIDogcmVzdWx0LmVycl9pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHRcdCAgICBpZiAocmVzdWx0LnJldCA9PSA4MDEpIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytyZXN1bHQucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gZmFsc2VcclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRsZXQgdGlwID0gcmVzdWx0LmluZm8gPyB0eXBlb2YgcmVzdWx0LmluZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuaW5mbyA6IHJlc3VsdC5pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHRcdFx0aWYgKHRpcCkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0aWYocmVzdWx0LnJlc3VsdF90eXBlID09IDAgJiYgcmVzdWx0LmFjdGlvbil7XHJcblx0XHRcdFx0XHRcdFx0cmVzdWx0LmFjdGlvbi5mb3JFYWNoKGl0ZW09PntcclxuXHRcdFx0XHRcdFx0XHRcdGlmKGl0ZW0uYWN0aW9uX3R5cGUgPT0gXCJpbnNlcnRfc3VidGFibGVfcGFnZV9yb3dcIil7IC8v56CB55uY5LitXHJcblx0XHRcdFx0XHRcdFx0XHRcdHZhciB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLnZpZXdBY2Vpb25Sb3codmFsdWUpO1xyXG5cdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmKGl0ZW0uYWN0aW9uX3R5cGUgPT0gXCJzZXRfc3VidGFibGVfcGFnZV9jb250ZW50XCIpeyAgLy/lt7LnoIHnm5hcclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWYodmFsdWUuY2xlYXIgPT0gdHJ1ZSAmJiAkdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0Lmxlbmd0aD4wKXsgLy/liKTmlq3mmK/lkKbmuIXnqbrpobXnrb7lhoXlrrks5q2j5Zyo56CB55uY5piv5ZCm5pyJ5pWw5o2uXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ+aPkOekuicsXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRjb250ZW50OiAn57O757uf5qOA5rWL5Yiw5pyJ5q2j5Zyo56CB55uY5Lit55qE6LSn5ZOB77yM57un57ut5pON5L2c5Lya5riF56m677yM5piv5ZCm57un57ut77yfJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0aWYgKHJlcy5jb25maXJtKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgJHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAkdGhpcy4kZGF0YS5kZXRhaWwyU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICR0aGlzLnZpZXdBY2Vpb25Db250ZW50KHZhbHVlKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChyZXMuY2FuY2VsKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgJHRoaXMuJGRhdGEuZGV0YWlsMlN0eWxlRGVmTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAkdGhpcy52aWV3QWNlaW9uQ29udGVudCh2YWx1ZSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5kZXRhaWwyU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLnZpZXdBY2Vpb25Db250ZW50KHZhbHVlKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0XHQvLyB0aGlzLmRldGFpbDJTdHlsZURlZkxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0aWYocmVzdWx0LmluZm8pe1xyXG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor680LjNcIixjb250ZW50OnJlc3VsdC5pbmZvLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHQgIFx0XHRcclxuXHRcdFx0ICBcdH1lbHNle1xyXG5cdFx0XHQgIFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzRcIixjb250ZW50OnJldC5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHQgIFx0fVxyXG5cdFx0XHQgIH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdCAgXHQvLyBjb25zb2xlLmxvZyhleCk7XHJcblx0XHRcdCAgXHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzQuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHQgIH0pO1xyXG5cdCAgICAgICAgfVxyXG5cdCAgICB9IGNhdGNoIChleCkge1xyXG5cdCAgICAgICAgdmFyIHRpcCA9IHR5cGVvZiBleCA9PSBcInN0cmluZ1wiID8gZXggOiBleC5tZXNzYWdlO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzQuMlwiLGNvbnRlbnQ6XCLmiafooYzigJzlhoXlrrnlj5jljJblkI7igJ3kuovku7blpLHotKXvvJpcIiArIHRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHJcblx0ICAgIH1cclxuXHR9LFxyXG5cdC8v5Yqg6L295q2j5Zyo56CB55uY5YaF5a65XHJcblx0dmlld0FjZWlvblJvdyhkYXRhLHR5cGUpe1xyXG5cdFx0Ly8gY29uc29sZS5sb2coZGF0YSk7XHJcblx0ICAgIHZhciBzdHlsZVN0ciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZGV0YWlsMV9zdHlsZWRlZik7XHJcblx0XHRpZih0eXBlKXsgLy/noa7lrprlkI7ohJrmnKzov5vlhaXliqDovb3lt7LnoIHnm5jmlbDmja5cclxuXHRcdCAgICBzdHlsZVN0ciA9IEpTT04uc3RyaW5naWZ5KHRoaXMuJGRhdGEuZGV0YWlsMl9zdHlsZWRlZik7XHJcblx0XHR9XHJcblx0ICAgIHZhciBkZXRhaWxTdHlsZSA9IEpTT04ucGFyc2Uoc3R5bGVTdHIpO1xyXG5cdCAgICBkYXRhLnJvdy5hdHRycy5mb3JFYWNoKGF0dHI9PntcclxuXHQgICAgICAgIGRldGFpbFN0eWxlLmZvcm0uaXRlbXMuZm9yRWFjaChlbGU9PntcclxuXHQgICAgICAgICAgICBpZihlbGUubmFtZSE9J0xheW91dCcpe1xyXG5cdCAgICAgICAgICAgICAgaWYoZWxlLmZpZWxkSWQgPT0gYXR0ci5hdHRyKSBlbGUudmFsdWUgPSBhdHRyLnZhbHVlO1xyXG5cdCAgICAgICAgICAgIH0gZWxzZSBpZihlbGUubmFtZT09J0xheW91dCcpe1xyXG5cdCAgICAgICAgICAgICAgZWxlLnNldHRpbmcuY29sTGlzdC5mb3JFYWNoKGNvbD0+e1xyXG5cdCAgICAgICAgICAgICAgICBpZihjb2wpe1xyXG5cdCAgICAgICAgICAgICAgICAgIGlmKGNvbC5maWVsZElkID09IGF0dHIuYXR0cikgY29sLnZhbHVlID0gYXR0ci52YWx1ZTtcclxuXHQgICAgICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgICAgICAgfSk7XHJcblx0ICAgICAgICAgICAgfVxyXG5cdCAgICAgICAgfSk7XHJcblx0ICAgIH0pO1xyXG5cdFx0aWYodHlwZSl7IC8v56Gu5a6a5ZCO6ISa5pys6L+b5YWl5Yqg6L295bey56CB55uY5pWw5o2uXHJcblx0XHQgICAgZGV0YWlsU3R5bGUuZm9ybS5vYmpJZCA9IGRhdGEucm93LmlkO1xyXG5cdFx0ICAgIHRoaXMuJGRhdGEuZGV0YWlsMlN0eWxlRGVmTGlzdC5wdXNoKGRldGFpbFN0eWxlKTtcclxuXHRcdCAgICAvLyBjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmRldGFpbDJTdHlsZURlZkxpc3QpO1xyXG5cdFx0fWVsc2V7XHJcblx0XHRcdGRldGFpbFN0eWxlLmZvcm0uYXR0cnMgPSBkYXRhLnJvdy5hdHRycztcclxuXHRcdFx0dGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0LnB1c2goZGV0YWlsU3R5bGUpO1xyXG5cdFx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QpO1xyXG5cdFx0fVxyXG5cdH0sXHJcblx0Ly/liqDovb3lt7LnoIHnm5jlhoXlrrlcclxuXHR2aWV3QWNlaW9uQ29udGVudChkYXRhKXtcclxuXHQgICAgZGF0YS5jb250ZW50LmZvckVhY2goY29udD0+e1xyXG5cdCAgICAgICAgdmFyIHN0eWxlU3RyID0gSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5kZXRhaWwyX3N0eWxlZGVmKTtcclxuXHQgICAgICAgIHZhciBkZXRhaWxTdHlsZSA9IEpTT04ucGFyc2Uoc3R5bGVTdHIpO1xyXG5cdCAgICAgICAgZGV0YWlsU3R5bGUuZm9ybS5vYmpJZCA9IGNvbnQuaWQ7XHJcblx0ICAgICAgICBjb250LmF0dHJzLmZvckVhY2goYXR0cj0+e1xyXG5cdCAgICAgICAgICBkZXRhaWxTdHlsZS5mb3JtLml0ZW1zLmZvckVhY2goZWxlPT57IFxyXG5cdCAgICAgICAgICAgIGlmKGVsZS5uYW1lIT0nTGF5b3V0Jyl7XHJcblx0ICAgICAgICAgICAgICBpZihlbGUuZmllbGRJZCA9PSBhdHRyLmF0dHIpIGVsZS52YWx1ZSA9IGF0dHIudmFsdWU7XHJcblx0ICAgICAgICAgICAgfSBlbHNlIGlmKGVsZS5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0ICAgICAgICAgICAgICBlbGUuc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0ICAgICAgICAgICAgICAgIGlmKGNvbCl7XHJcblx0ICAgICAgICAgICAgICAgICAgaWYoY29sLmZpZWxkSWQgPT0gYXR0ci5hdHRyKSBjb2wudmFsdWUgPSBhdHRyLnZhbHVlO1xyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICB9KTtcclxuXHQgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgIH0pO1xyXG5cdCAgICAgICAgfSk7XHJcblx0ICAgICAgICB0aGlzLiRkYXRhLmRldGFpbDJTdHlsZURlZkxpc3QucHVzaChkZXRhaWxTdHlsZSk7XHJcblx0ICAgIH0pO1xyXG5cdCAgICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuZGV0YWlsMlN0eWxlRGVmTGlzdCk7XHJcblx0fSxcblx0b25DbGlja0l0ZW0oZSkgeyAvL+mAieaLqemhteetvlxyXG5cdFx0Ly8gY29uc29sZS5sb2coZSk7XHJcblx0XHR0aGlzLmN1cnJlbnQgPSBlLmN1cnJlbnRJbmRleFxyXG5cdH0sXHJcblx0b25EZXRhaWwxRW50ZXJDaGFuZ2UoaXRlbSl7ICAvL+eggeebmOS4reagt+W8j+Wbnui9puS6i+S7tlxyXG5cdCAgICBjb25zb2xlLmxvZyhpdGVtKTtcclxuXHR9LFxyXG5cdGRlbEl0ZW0oaW5kZXgpeyAgLy/liKDpmaTnoIHnm5jkuK3moLflvI/pnaLmnb9cclxuXHQgICAgdGhpcy5kZXRhaWwxU3R5bGVEZWZMaXN0LnNwbGljZShpbmRleCwxKTtcclxuXHR9LFxuICAgIGRlbERhdGFPYmooc3R5bGUsaW5kZXgpeyAgLy/liKDpmaTlt7LnoIHnm5jmlbBcbiAgICAgIC8vIGNvbnNvbGUubG9nKHN0eWxlKTtcclxuXHQgIHZhciAkdGhpcyA9IHRoaXM7XHJcblx0ICB1bmkuc2hvd01vZGFsKHtcclxuXHQgIFx0dGl0bGU6ICfmj5DnpLonLFxyXG5cdCAgXHRjb250ZW50OiAn56Gu5a6a5Yig6Zmk6K+l5bey56CB55uY5pWw5o2u77yBJyxcclxuXHQgIFx0c3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xyXG5cdCAgXHRcdGlmIChyZXMuY29uZmlybSkge1xyXG5cdFx0XHRcdHZhciBvYmpJRD1zdHlsZS5mb3JtLm9iaklkO1xyXG5cdFx0XHRcdGlmKCFzdHlsZS5mb3JtLm9iaklkLmluY2x1ZGVzKCd7JykpIG9iaklEID0gJ3snK3N0eWxlLmZvcm0ub2JqSWQrJ30nO1xyXG5cdFx0XHRcdCAgICAgICAgICBcclxuXHRcdFx0XHR2YXIgZGF0YUluZm89e1xuXHRcdFx0XHRcdGNsYXNzX2lkOnN0eWxlLmZvcm0uY2xzSWQsXHJcblx0XHRcdFx0XHRjbGFzc19uYW1lOicnLFxyXG5cdFx0XHRcdFx0b2JqX2lkOm9iaklEXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZGF0YU9iakRlbCcsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdCR0aGlzLmRldGFpbDJTdHlsZURlZkxpc3Quc3BsaWNlKGluZGV4LDEpO1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLliKDpmaTmiJDlip/vvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor681XCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor681LjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHR9KTtcclxuXHQgIFx0XHR9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuXHRcdFx0XHRcclxuXHQgIFx0XHR9XHJcblx0ICBcdH1cclxuXHQgIH0pO1xuICAgICAgXG4gICAgfSxcclxuXHRcclxuXHRvaygpeyAvL+ehruWumlxyXG5cdFx0Ly8gdmFyICR0aGlzID0gdGhpcztcclxuXHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50KTtcclxuXHQgLy8gICAgY29uc29sZS5sb2codGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudCk7XHJcblx0ICAgIGlmKHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50KSAvL+aYr+WQpuacieehruWumuWJjeS6i+S7tlxyXG5cdCAgICAgICAgdGhpcy5zYXZhKHRoaXMuJGRhdGEucGFyYW0uQmVmb3JlX09LX0V2ZW50KTtcclxuXHQgICAgZWxzZSBpZih0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX09LX0V2ZW50KSAgLy/mmK/lkKbmnInnoa7lrprlkI7kuovku7ZcclxuXHQgICAgICAgIHRoaXMuc2F2YSh0aGlzLiRkYXRhLnBhcmFtLkFmdGVyX09LX0V2ZW50KTtcclxuXHR9LFxyXG5cdHNhdmEoZXZlbnQpe1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHQgICAgaWYodGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0Lmxlbmd0aD09MCl7XHJcblx0ICAgICAgdW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50Olwi5rKh5pyJ5q2j5Zyo56CB55uY55qE5pWw5o2u77yBXCIsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0ICAgICAgcmV0dXJuIGZhbHNlO1xyXG5cdCAgICB9XHJcblx0ICAgIC8v6I635Y+W6KGo5aS05bGe5oCnXHJcblx0ICAgIHZhciBoZWFkX2F0dHIgPSB7fTtcclxuXHQgICAgdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuXHQgICAgICBoZWFkX2F0dHJbaXRlbS5maWVsZElkXSA9IGl0ZW0udmFsdWU7XHJcblx0ICAgIH0pO1xyXG5cdCAgICAvLyBjb25zb2xlLmxvZyhoZWFkX2F0dHIpO1xyXG5cdCAgICAvL+iOt+WPluato+WcqOeggeebmOWxnuaAp1xyXG5cdCAgICB2YXIgZGV0YWlsQXR0ckxpc3QgPSBbXTtcclxuXHQgICAgdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0LmZvckVhY2goc3R5bGU9PntcclxuXHQgICAgICB2YXIgZGV0YWlsX2F0dHI9e307XHJcblx0XHQgIHN0eWxlLmZvcm0uaXRlbXMuZm9yRWFjaChpdGVtID0+IHtcclxuXHQgICAgICAgIGlmKGl0ZW0ubmFtZSA9PSBcIkxheW91dFwiKXsgIC8v5Yik5pat5piv5ZCm5piv5qCF5qCP5qC85byPXHJcblx0ICAgICAgICAgIGl0ZW0uc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29scyA9PiB7XHJcblx0ICAgICAgICAgICAgaWYoY29scyE9bnVsbCkgZGV0YWlsX2F0dHJbY29scy5maWVsZElkXSA9IGNvbHMudmFsdWU7XHJcblx0ICAgICAgICAgIH0pO1xyXG5cdCAgICAgICAgfWVsc2VcclxuXHQgICAgICAgICAgZGV0YWlsX2F0dHJbaXRlbS5maWVsZElkXSA9IGl0ZW0udmFsdWU7XHJcblx0ICAgICAgfSk7XHJcblx0ICAgICAgZGV0YWlsQXR0ckxpc3QucHVzaChkZXRhaWxfYXR0cik7XHJcblx0ICAgIH0pO1xyXG5cdCAgICAvLyBjb25zb2xlLmxvZyhkZXRhaWxBdHRyTGlzdCk7XHJcblx0XHQvL+iOt+WPluato+WcqOeggeebmOmHjOayoeacieaYvuekuueahOWtl+autVxyXG5cdFx0dGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0LmZvckVhY2goc3R5bGU9PntcclxuXHRcdCAgc3R5bGUuZm9ybS5hdHRycy5mb3JFYWNoKGF0dHIgPT4ge1xyXG5cdFx0ICAgIGZvcih2YXIga2V5IGluIGRldGFpbEF0dHJMaXN0KXtcclxuXHRcdCAgICAgIGxldCBrZXlzID0gT2JqZWN0LmtleXMoZGV0YWlsQXR0ckxpc3Rba2V5XSk7XHJcblx0XHQgICAgICBsZXQgaXNmbGFnID0gdHJ1ZTtcclxuXHRcdCAgICAgIGtleXMuZm9yRWFjaCgoZWxlKSA9PiB7XHJcblx0XHQgICAgICAgIGlmKGVsZSA9PSBhdHRyLmF0dHIpIGlzZmxhZyA9IGZhbHNlO1xyXG5cdFx0ICAgICAgfSk7XHJcblx0XHQgICAgICBpZihpc2ZsYWcpIHtcclxuXHRcdCAgICAgICAgZGV0YWlsQXR0ckxpc3RbYXR0ci5hdHRyXSA9IGF0dHIudmFsdWU7XHJcblx0XHQgICAgICB9XHJcblx0XHQgICAgfSBcclxuXHRcdCAgfSk7XHJcblx0XHR9KTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKGRldGFpbEF0dHJMaXN0KTtcclxuXHQgLy8gICAgcmV0dXJuO1xyXG5cdFx0dmFyIGlucHV0X3BhcmFtID0gQmFzZTY0LmVuY29kZShcclxuXHRcdCAgICBKU09OLnN0cmluZ2lmeShcclxuXHRcdCAgICAgIE9iamVjdC5rZXlzKGhlYWRfYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdFx0ICAgICAgICBhdHRyOiBhLFxyXG5cdFx0ICAgICAgICB2YWx1ZTogaGVhZF9hdHRyW2FdIHx8IFwiXCIsXHJcblx0XHQgICAgICB9KSlcclxuXHRcdCAgICApXHJcblx0XHQpO1xyXG5cdFx0IHZhciBqc29ubGlzdD1bXTtcclxuXHRcdGRldGFpbEF0dHJMaXN0LmZvckVhY2goYXR0cj0+e1xyXG5cdFx0ICAgIGpzb25saXN0LnB1c2goe1xyXG5cdFx0ICAgICAgaWQ6JycsXHJcblx0XHQgICAgICBhdHRyczogT2JqZWN0LmtleXMoYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdFx0ICAgICAgICBhdHRyOiBhLFxyXG5cdFx0ICAgICAgICB2YWx1ZTogYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0ICAgICAgfSkpXHJcblx0XHQgICAgfSk7XHJcblx0XHR9KTtcclxuXHRcdC8vIGNvbnNvbGUubG9nKGpzb25saXN0KTtcclxuXHRcdGpzb25saXN0LmZvckVhY2goYXN5bmMgKGpzb24sa2V5KT0+e1xyXG5cdFx0XHRhd2FpdCAkdGhpcy5ydW5DdXN0b21FdmVudChldmVudCxpbnB1dF9wYXJhbSxqc29uKTtcclxuXHRcdH0pO1xyXG5cdH0sXG4gICAgLy/miafooYznoa7lrprohJrmnKxcbiAgICBhc3luYyBydW5DdXN0b21FdmVudChldmVudCxpbnB1dF9wYXJhbSxqc29uKXtcclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YV9qc29uID0gQmFzZTY0LmVuY29kZShcclxuXHRcdCAgICBKU09OLnN0cmluZ2lmeShqc29uKVxyXG5cdFx0KTtcclxuXHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHQgIGVkX3R5cGU6IDAsXHJcblx0XHQgIHN0YXJ0X3RyYW5zYWN0aW9uOiAnJyxcclxuXHRcdCAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLmNsc0lkLFxyXG5cdFx0ICBjbGFzc19uYW1lOiAnJyxcclxuXHRcdCAgZXZlbnRfaWQ6IHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQsXHJcblx0XHQgIGV2ZW50X25hbWU6ICcnLFxyXG5cdFx0ICBkYXRhX29ial9pZDogJycsXHJcblx0XHQgIG9ial9hdHRyOiAnJyxcclxuXHRcdCAgcHJqX2lkOiAnJyxcclxuXHRcdCAgcmVmX2Nsc19pZDogJycsXHJcblx0XHQgIHJlbF9vYmpfaWQ6ICcnLFxyXG5cdFx0ICB1c2VyX2xvZ2luOiAnJyxcclxuXHRcdCAgZGF0YV9qc29uOiBkYXRhX2pzb24sXHJcblx0XHQgIGNvbXBvc2VfaW5mbzogJycsXHJcblx0XHQgIGV4dF9pbmZvOiAnJyxcclxuXHRcdCAgZ2xvYmFsX2F0dHI6ICcnLFxyXG5cdFx0ICBpbnB1dF9wYXJhbTogaW5wdXRfcGFyYW0sXHJcblx0XHR9O1xyXG5cdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ3J1bkN1c3RvbUV2ZW50JyxkYXRhSW5mbykudGhlbihyZXM9PntcclxuXHRcdFx0Y29uc29sZS5sb2cocmVzKTtcclxuXHRcdFx0aWYgKHJlcy5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIHJlc3VsdCA9IHJlcy5yZXN1bHQ7IFxyXG5cdFx0XHRcdGlmIChyZXN1bHQucmV0ICE9IDApIHtcclxuXHRcdFx0XHQgICAgdmFyIHRpcCA9IHJlc3VsdC5lcnJfaW5mbyA/IHR5cGVvZiByZXN1bHQuZXJyX2luZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuZXJyX2luZm8gOiByZXN1bHQuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdCAgICBpZiAocmVzdWx0LnJldCA9PSA4MDEpIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdCAgICBlbHNlIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwKycs5o+Q56S6OicrcmVzdWx0LnJldCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0bGV0IHRpcCA9IHJlc3VsdC5pbmZvID8gdHlwZW9mIHJlc3VsdC5pbmZvID09ICdzdHJpbmcnID8gcmVzdWx0LmluZm8gOiByZXN1bHQuaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcdGlmKHJlc3VsdC5yZXN1bHRfdHlwZSA9PSAwKXtcclxuXHRcdFx0XHRcdCAgaWYocmVzdWx0LmFjdGlvbil7XHJcblx0XHRcdFx0XHRcdHJlc3VsdC5hY3Rpb24uZm9yRWFjaChpdGVtPT57XHJcblx0XHRcdFx0XHRcdCAgaWYoaXRlbS5hY3Rpb25fdHlwZSA9PSBcImluc2VydF9zdWJ0YWJsZV9wYWdlX3Jvd1wiKXsgLy/noIHnm5jkuK1cclxuXHRcdFx0XHRcdFx0XHR2YXIgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdC8v5Yqg6L295bey57uP56CB55uY5pWw5o2uXHJcblx0XHRcdFx0XHRcdFx0JHRoaXMudmlld0FjZWlvblJvdyh2YWx1ZSwnYWRkJyk7XHJcblx0XHRcdFx0XHRcdFx0Ly/muIXnqbrmnaHnoIHlhoXlrrlcclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uaXRlbXMuZm9yRWFjaCgoaXRlbSxpbmRleCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYoaXRlbS5maWVsZElkICE9IFwiU19DTlRSX0NPREVcIil7XHJcblx0XHRcdFx0XHRcdFx0XHQgIGl0ZW0udmFsdWUgPSAnJztcclxuXHRcdFx0XHRcdFx0XHRcdCAgaXRlbS5vbGR2YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICAkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0ubW9kZWxbaXRlbS5maWVsZElkXSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHQvL+a4hemZpOato+WcqOeggeebmOS4reaIkOWKn+eahOaVsOaNrlxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0LmZvckVhY2goKHN0eWxlLGluZGV4KT0+e1xuXHRcdFx0XHRcdFx0XHQgIGlmKHN0eWxlLmZvcm0uaXRlbXNbMF0uZmllbGRJZCA9PSBqc29uLmF0dHJzWzBdLmF0dHIgJiYgc3R5bGUuZm9ybS5pdGVtc1swXS52YWx1ZSA9PSBqc29uLmF0dHJzWzBdLnZhbHVlKXsgXG5cdFx0XHRcdFx0XHRcdFx0JHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdC5zcGxpY2UoaW5kZXgsMSk7XG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHQgIH1cblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0Ly8gdGhpcy5kZXRhaWwyU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIueggeebmOaIkOWKn1wiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHQgIH1lbHNle1xyXG5cdFx0XHRcdFx0XHRpZigkdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRCAhPSBldmVudC5JRCl7IC8v5Yik5pat5b2T5YmN5LqL5Lu25piv5ZCm5piv56Gu5a6a5ZCO5LqL5Lu2XHJcblx0XHRcdFx0XHRcdFx0JHRoaXMuc2F2YSgkdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudCk7IC8v5omn6KGM56Gu5a6a5ZCO5LqL5Lu2XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdCAgfVxyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdC8vICR0aGlzLiRkYXRhLmRldGFpbDJTdHlsZURlZkxpc3Q9W107XHJcblx0XHRcdFx0XHRcdGlmKHJlc3VsdC5pbmZvKXtcclxuXHRcdFx0XHRcdFx0ICB1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6cmVzdWx0LmluZm8sc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vOFwiLGNvbnRlbnQ6cmVzLmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHQgICAgbGV0IHRpcCA9IHR5cGVvZiBleCA9PSBcInN0cmluZ1wiID8gZXggOiBleC5lcnJNc2c7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vOC4xXCIsY29udGVudDpcIuaJp+ihjOKAnOehruWumuWQjuKAneS6i+S7tuWksei0pe+8mlwiICsgdGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcblx0fSxcclxuXHRcclxuXHRjYW5jZWwoZSl7IC8v5Y+W5raIXHJcblx0XHR1bmkubmF2aWdhdGVCYWNrKHtcclxuXHRcdFx0ZGVsdGE6MSAvL+i/lOWbnuWxguaVsO+8jDLliJnkuIrkuIrpobVcclxuXHRcdH0pO1xyXG5cdH0sXHJcbiAgfSxcbn07XG48L3NjcmlwdD5cbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///136\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//\nvar _default = {\n modules: {\n Base64: _base.default\n },\n data: function data() {\n return {\n title: '鐮佺洏',\n param: {},\n focusMateria: false,\n head_styledef: {\n form: {\n items: []\n }\n },\n detail1_styledef: {},\n detail1StyleDefList: [],\n detail2_styledef: {},\n detail2StyleDefList: [],\n // 鍒嗘鍣ㄦ暟鎹甛n current: 0,\n items: ['姝e湪鐮佺洏', '宸茬爜鐩�]\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 // console.log(this.$data.param);\n //鑾峰彇CG_Detail锛堟墭鐩樿揣鍝佽〃锛夋暟鎹被鐨勮嚜瀹氫箟琛ㄥ崟鍙傛暟\n this.Head_UIStyleGetInfo('CG_Detail', this.$data.param.Head_Panel_Style.ID);\n this.Detail1_UIstyleGetInfo('CG_Detail', this.$data.param.Detail_List_Panel1_Style.ID);\n this.Detail2_UIstyleGetInfo('CG_Detail', this.$data.param.Detail_List_Panel2_Style.ID);\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 _callee() {\n var $this, dataInfo;\n return _regenerator.default.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.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鐨剆tyle_def鏄痡son瀛楃涓瞈n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓瞈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 // this.form = this.head_styledef.form.model;\n // console.log($this.$data.head_styledef);\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 _context.stop();\n }\n }\n }, _callee);\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 _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 = _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鐨剆tyle_def鏄痡son瀛楃涓瞈n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓瞈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 // console.log($this.$data.detail1_styledef);\n // $this.$data.detail1StyleDefList.push($this.$data.detail1_styledef);\n // let 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 _context2.stop();\n }\n }\n }, _callee2);\n }))();\n },\n Detail2_UIstyleGetInfo: function Detail2_UIstyleGetInfo(class_id, style_id) {\n var _this3 = 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 = _this3;\n dataInfo = {\n class_id: class_id,\n ui_style_id: style_id\n };\n _this3.$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鐨剆tyle_def鏄痡son瀛楃涓瞈n styledef = ret.result.style_def.replace(/\\\\/g, \"\");\n //mobox3鐨剆tyle_def鏄痓ase64瀛楃涓瞈n if (!ret.result.style_def.includes('\"')) styledef = _base.default.decode(ret.result.style_def);\n }\n $this.$data.detail2_styledef = ret.result.style_def ? JSON.parse(styledef) : {};\n // console.log($this.$data.detail2_styledef);\n } else {\n uni.showModal({\n title: \"閿欒3\",\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: \"閿欒3.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 ontap: function ontap(item) {\n var _this4 = this;\n //鎵爜鍔熻兘\n // var $ele = e;\n //console.log(e.target)\n getApp().onScan(function (result) {\n __f__(\"log\", result.decodedata, \" at pages/modal/5600.vue:462\");\n item.value = result.decodedata;\n uni.hideKeyboard();\n var $this = _this4;\n __f__(\"log\", item, \" at pages/modal/5600.vue:467\");\n if (item.oldvalue != item.value) {\n item.oldvalue = item.value;\n var attr = item.fieldId;\n _this4.head_styledef.form.model[attr] = item.value;\n var onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠禱n var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠禱n var onSuffixClickEvent = item.bind.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋僜n var isflag = false;\n if (onChangeEvent.id) {\n //鍐呭鍙樺寲鍚庝簨浠禱n $this.onChange(onChangeEvent);\n }\n if (item.value) {\n //绗竴涓緭鍏ユ涓嶄负绌篭n $this.focusMateria = true; //鍒濆鍖栵紝绗簩涓緭鍏ユfocus灞炴�\n // setTimeout(function(){\n // \t$this.focusMateria=true; //绗簩涓緭鍏ユ鑾峰彇鐒︾偣\n setTimeout(function () {\n uni.hideKeyboard();\n }, 100);\n // },500);\n }\n // if(onSuffixClickCallbackEvent.id){ //鍚庡浘鏍囩偣鍑讳簨浠禱n // this.onSuffixClick(onSuffixClickCallbackEvent);\n // }\n // if(onSuffixClickEvent.id){ //鍚庡浘鏍囩偣鍑诲洖璋僜n // this.onSuffixClickCallback(onSuffixClickEvent);\n // }\n }\n });\n },\n onEnterChange: function onEnterChange(item) {\n //鍥炶溅锛岀偣鍑绘寜閽紝鍙栨秷鑺傜偣浜嬩欢\n // console.log(item);\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 onChangeEvent = item.bind.onChangeEvent; //鍐呭鍙樺寲鍚庝簨浠禱n var onSuffixClickCallbackEvent = item.bind.onSuffixClickCallbackEvent; //鍚庡浘鏍囩偣鍑讳簨浠禱n var onSuffixClickEvent = item.bind.onSuffixClickEvent; //鍚庡浘鏍囩偣鍑诲洖璋僜n var isflag = false;\n if (onChangeEvent.id) {\n //鍐呭鍙樺寲鍚庝簨浠禱n this.onChange(onChangeEvent);\n }\n // if(onSuffixClickCallbackEvent.id){ //鍚庡浘鏍囩偣鍑讳簨浠禱n // this.onSuffixClick(onSuffixClickCallbackEvent);\n // }\n // if(onSuffixClickEvent.id){ //鍚庡浘鏍囩偣鍑诲洖璋僜n // this.onSuffixClickCallback(onSuffixClickEvent);\n // }\n }\n },\n // 鍐呭鍙樺寲鍚庝簨浠禱n onChange: function onChange(event) {\n var _this5 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n var obj_attr, input_param, $this, dataInfo, tip;\n return _regenerator.default.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n try {\n if (event.id) {\n obj_attr = _this5.head_styledef.form.model; // console.log(obj_attr);\n input_param = _base.default.encode(JSON.stringify(Object.keys(obj_attr).map(function (a) {\n return {\n attr: a,\n value: obj_attr[a] || \"\"\n };\n })));\n $this = _this5;\n dataInfo = {\n ed_type: 0,\n start_transaction: '',\n class_id: _this5.$data.head_styledef.form.clsId,\n class_name: '',\n event_id: event.id,\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: '',\n global_attr: '',\n input_param: input_param\n };\n _this5.$store.dispatch('runCustomEvent', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n var result = ret.result;\n if (result.ret != 0) {\n var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n if (result.ret == 801) uni.showModal({\n title: '鎻愮ず',\n content: tip,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });else uni.showModal({\n title: '鎻愮ず',\n content: tip + ',鎻愮ず:' + result.ret,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return false;\n } else {\n var _tip = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n if (_tip) uni.showModal({\n title: '鎻愮ず',\n content: _tip,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n if (result.result_type == 0 && result.action) {\n result.action.forEach(function (item) {\n if (item.action_type == \"insert_subtable_page_row\") {\n //鐮佺洏涓璡n var value = item.value;\n $this.viewAceionRow(value);\n } else if (item.action_type == \"set_subtable_page_content\") {\n //宸茬爜鐩榎n var value = item.value;\n if (value.clear == true && $this.$data.detail1StyleDefList.length > 0) {\n //鍒ゆ柇鏄惁娓呯┖椤电鍐呭,姝e湪鐮佺洏鏄惁鏈夋暟鎹甛n uni.showModal({\n title: '鎻愮ず',\n content: '绯荤粺妫�祴鍒版湁姝e湪鐮佺洏涓殑璐у搧锛岀户缁搷浣滀細娓呯┖锛屾槸鍚︾户缁紵',\n success: function success(res) {\n if (res.confirm) {\n $this.$data.detail1StyleDefList = [];\n $this.$data.detail2StyleDefList = [];\n $this.viewAceionContent(value);\n } else if (res.cancel) {\n $this.$data.detail2StyleDefList = [];\n $this.viewAceionContent(value);\n }\n }\n });\n } else {\n $this.$data.detail2StyleDefList = [];\n $this.viewAceionContent(value);\n }\n }\n });\n } else {\n // this.detail2StyleDefList=[];\n if (result.info) {\n uni.showModal({\n title: \"閿欒4.3\",\n content: result.info,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"閿欒4\",\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: \"閿欒4.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n }\n } catch (ex) {\n tip = typeof ex == \"string\" ? ex : ex.message;\n uni.showModal({\n title: \"閿欒4.2\",\n content: \"鎵ц鈥滃唴瀹瑰彉鍖栧悗鈥濅簨浠跺け璐ワ細\" + tip,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n case 1:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }))();\n },\n //鍔犺浇姝e湪鐮佺洏鍐呭\n viewAceionRow: function viewAceionRow(data, type) {\n // console.log(data);\n var styleStr = JSON.stringify(this.$data.detail1_styledef);\n if (type) {\n //纭畾鍚庤剼鏈繘鍏ュ姞杞藉凡鐮佺洏鏁版嵁\n styleStr = JSON.stringify(this.$data.detail2_styledef);\n }\n var detailStyle = JSON.parse(styleStr);\n data.row.attrs.forEach(function (attr) {\n detailStyle.form.items.forEach(function (ele) {\n if (ele.name != 'Layout') {\n if (ele.fieldId == attr.attr) ele.value = attr.value;\n } else if (ele.name == 'Layout') {\n ele.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == attr.attr) col.value = attr.value;\n }\n });\n }\n });\n });\n if (type) {\n //纭畾鍚庤剼鏈繘鍏ュ姞杞藉凡鐮佺洏鏁版嵁\n detailStyle.form.objId = data.row.id;\n this.$data.detail2StyleDefList.push(detailStyle);\n // console.log(this.$data.detail2StyleDefList);\n } else {\n detailStyle.form.attrs = data.row.attrs;\n this.$data.detail1StyleDefList.push(detailStyle);\n // console.log(this.$data.detail1StyleDefList);\n }\n },\n //鍔犺浇宸茬爜鐩樺唴瀹筡n viewAceionContent: function viewAceionContent(data) {\n var _this6 = this;\n data.content.forEach(function (cont) {\n var styleStr = JSON.stringify(_this6.$data.detail2_styledef);\n var detailStyle = JSON.parse(styleStr);\n detailStyle.form.objId = cont.id;\n cont.attrs.forEach(function (attr) {\n detailStyle.form.items.forEach(function (ele) {\n if (ele.name != 'Layout') {\n if (ele.fieldId == attr.attr) ele.value = attr.value;\n } else if (ele.name == 'Layout') {\n ele.setting.colList.forEach(function (col) {\n if (col) {\n if (col.fieldId == attr.attr) col.value = attr.value;\n }\n });\n }\n });\n });\n _this6.$data.detail2StyleDefList.push(detailStyle);\n });\n // console.log(this.detail2StyleDefList);\n },\n onClickItem: function onClickItem(e) {\n //閫夋嫨椤电\n // console.log(e);\n this.current = e.currentIndex;\n },\n onDetail1EnterChange: function onDetail1EnterChange(item) {\n //鐮佺洏涓牱寮忓洖杞︿簨浠禱n __f__(\"log\", item, \" at pages/modal/5600.vue:676\");\n },\n delItem: function delItem(index) {\n //鍒犻櫎鐮佺洏涓牱寮忛潰鏉縗n this.detail1StyleDefList.splice(index, 1);\n },\n delDataObj: function delDataObj(style, index) {\n //鍒犻櫎宸茬爜鐩樻暟\n // console.log(style);\n var $this = this;\n uni.showModal({\n title: '鎻愮ず',\n content: '纭畾鍒犻櫎璇ュ凡鐮佺洏鏁版嵁锛�,\n success: function success(res) {\n if (res.confirm) {\n var objID = style.form.objId;\n if (!style.form.objId.includes('{')) objID = '{' + style.form.objId + '}';\n var dataInfo = {\n class_id: style.form.clsId,\n class_name: '',\n obj_id: objID\n };\n // console.log(dataInfo);\n $this.$store.dispatch('dataObjDel', dataInfo).then(function (ret) {\n // console.log(ret);\n if (ret.err_code == 0) {\n $this.detail2StyleDefList.splice(index, 1);\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"鍒犻櫎鎴愬姛锛乗",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n } else {\n uni.showModal({\n title: \"閿欒5\",\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: \"閿欒5.1\",\n content: ex.errMsg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n } else if (res.cancel) {}\n }\n });\n },\n ok: function ok() {\n //纭畾\n // var $this = this;\n // console.log(this.$data.param.Before_OK_Event);\n // console.log(this.$data.param.After_OK_Event);\n if (this.$data.param.Before_OK_Event)\n //鏄惁鏈夌‘瀹氬墠浜嬩欢\n this.sava(this.$data.param.Before_OK_Event);else if (this.$data.param.After_OK_Event)\n //鏄惁鏈夌‘瀹氬悗浜嬩欢\n this.sava(this.$data.param.After_OK_Event);\n },\n sava: function sava(event) {\n var $this = this;\n if (this.$data.detail1StyleDefList.length == 0) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"娌℃湁姝e湪鐮佺洏鐨勬暟鎹紒\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return false;\n }\n //鑾峰彇琛ㄥご灞炴�\n var head_attr = {};\n this.$data.head_styledef.form.items.forEach(function (item) {\n head_attr[item.fieldId] = item.value;\n });\n // console.log(head_attr);\n //鑾峰彇姝e湪鐮佺洏灞炴�\n var detailAttrList = [];\n this.$data.detail1StyleDefList.forEach(function (style) {\n var detail_attr = {};\n style.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 detailAttrList.push(detail_attr);\n });\n // console.log(detailAttrList);\n //鑾峰彇姝e湪鐮佺洏閲屾病鏈夋樉绀虹殑瀛楁\n this.$data.detail1StyleDefList.forEach(function (style) {\n style.form.attrs.forEach(function (attr) {\n for (var key in detailAttrList) {\n var keys = Object.keys(detailAttrList[key]);\n var isflag = true;\n keys.forEach(function (ele) {\n if (ele == attr.attr) isflag = false;\n });\n if (isflag) {\n detailAttrList[attr.attr] = attr.value;\n }\n }\n });\n });\n // console.log(detailAttrList);\n // return;\n var input_param = _base.default.encode(JSON.stringify(Object.keys(head_attr).map(function (a) {\n return {\n attr: a,\n value: head_attr[a] || \"\"\n };\n })));\n var jsonlist = [];\n detailAttrList.forEach(function (attr) {\n jsonlist.push({\n id: '',\n attrs: Object.keys(attr).map(function (a) {\n return {\n attr: a,\n value: attr[a] || \"\"\n };\n })\n });\n });\n // console.log(jsonlist);\n jsonlist.forEach( /*#__PURE__*/function () {\n var _ref = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee5(json, key) {\n return _regenerator.default.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _context5.next = 2;\n return $this.runCustomEvent(event, input_param, json);\n case 2:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5);\n }));\n return function (_x, _x2) {\n return _ref.apply(this, arguments);\n };\n }());\n },\n //鎵ц纭畾鑴氭湰\n runCustomEvent: function runCustomEvent(event, input_param, json) {\n var _this7 = this;\n return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee6() {\n var $this, data_json, dataInfo;\n return _regenerator.default.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n $this = _this7;\n data_json = _base.default.encode(JSON.stringify(json));\n dataInfo = {\n ed_type: 0,\n start_transaction: '',\n class_id: _this7.$data.head_styledef.form.clsId,\n class_name: '',\n event_id: _this7.$data.param.After_OK_Event.ID,\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: data_json,\n compose_info: '',\n ext_info: '',\n global_attr: '',\n input_param: input_param\n }; // console.log(dataInfo);\n _this7.$store.dispatch('runCustomEvent', dataInfo).then(function (res) {\n __f__(\"log\", res, \" at pages/modal/5600.vue:822\");\n if (res.err_code == 0) {\n var result = res.result;\n if (result.ret != 0) {\n var tip = result.err_info ? typeof result.err_info == 'string' ? result.err_info : result.err_info.join('<br/>') : '';\n if (result.ret == 801) uni.showModal({\n title: '鎻愮ず',\n content: tip,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });else uni.showModal({\n title: '鎻愮ず',\n content: tip + ',鎻愮ず:' + result.ret,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n return false;\n } else {\n var _tip2 = result.info ? typeof result.info == 'string' ? result.info : result.info.join('<br/>') : '';\n if (_tip2) uni.showModal({\n title: '鎻愮ず',\n content: _tip2,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n if (result.result_type == 0) {\n if (result.action) {\n result.action.forEach(function (item) {\n if (item.action_type == \"insert_subtable_page_row\") {\n //鐮佺洏涓璡n var value = item.value;\n //鍔犺浇宸茬粡鐮佺洏鏁版嵁\n $this.viewAceionRow(value, 'add');\n //娓呯┖鏉$爜鍐呭\n $this.$data.head_styledef.form.items.forEach(function (item, index) {\n if (item.fieldId != \"S_CNTR_CODE\") {\n item.value = '';\n item.oldvalue = '';\n $this.$data.head_styledef.form.model[item.fieldId] = '';\n }\n });\n //娓呴櫎姝e湪鐮佺洏涓垚鍔熺殑鏁版嵁\n $this.$data.detail1StyleDefList.forEach(function (style, index) {\n if (style.form.items[0].fieldId == json.attrs[0].attr && style.form.items[0].value == json.attrs[0].value) {\n $this.$data.detail1StyleDefList.splice(index, 1);\n return;\n }\n });\n // this.detail2StyleDefList=[];\n uni.showModal({\n title: \"鎻愮ず\",\n content: \"鐮佺洏鎴愬姛\",\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n });\n } else {\n if ($this.$data.param.After_OK_Event.ID != event.ID) {\n //鍒ゆ柇褰撳墠浜嬩欢鏄惁鏄‘瀹氬悗浜嬩欢\n $this.sava($this.$data.param.After_OK_Event); //鎵ц纭畾鍚庝簨浠禱n }\n }\n } else {\n // $this.$data.detail2StyleDefList=[];\n if (result.info) {\n uni.showModal({\n title: \"鎻愮ず\",\n content: result.info,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }\n }\n } else {\n uni.showModal({\n title: \"閿欒8\",\n content: res.err_msg,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n }\n }).catch(function (ex) {\n var tip = typeof ex == \"string\" ? ex : ex.errMsg;\n uni.showModal({\n title: \"閿欒8.1\",\n content: \"鎵ц鈥滅‘瀹氬悗鈥濅簨浠跺け璐ワ細\" + tip,\n showCancel: false,\n confirmText: \"鍙栨秷\"\n });\n });\n case 4:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6);\n }))();\n },\n cancel: function cancel(e) {\n //鍙栨秷\n uni.navigateBack({\n delta: 1 //杩斿洖灞傛暟锛�鍒欎笂涓婇〉\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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvbW9kYWwvNTYwMC52dWUiXSwibmFtZXMiOlsibW9kdWxlcyIsIkJhc2U2NCIsImRhdGEiLCJ0aXRsZSIsInBhcmFtIiwiZm9jdXNNYXRlcmlhIiwiaGVhZF9zdHlsZWRlZiIsImZvcm0iLCJpdGVtcyIsImRldGFpbDFfc3R5bGVkZWYiLCJkZXRhaWwxU3R5bGVEZWZMaXN0IiwiZGV0YWlsMl9zdHlsZWRlZiIsImRldGFpbDJTdHlsZURlZkxpc3QiLCJjdXJyZW50Iiwib25Mb2FkIiwib3B0aW9ucyIsInVuaSIsInNldE5hdmlnYXRpb25CYXJUaXRsZSIsInRpdGxlbmFtZSIsIiRkYXRhIiwiSlNPTiIsInBhcnNlIiwiSGVhZF9VSVN0eWxlR2V0SW5mbyIsIkhlYWRfUGFuZWxfU3R5bGUiLCJJRCIsIkRldGFpbDFfVUlzdHlsZUdldEluZm8iLCJEZXRhaWxfTGlzdF9QYW5lbDFfU3R5bGUiLCJEZXRhaWwyX1VJc3R5bGVHZXRJbmZvIiwiRGV0YWlsX0xpc3RfUGFuZWwyX1N0eWxlIiwibWV0aG9kcyIsImNsYXNzX2lkIiwic3R5bGVfaWQiLCIkdGhpcyIsImRhdGFJbmZvIiwidWlfc3R5bGVfaWQiLCIkc3RvcmUiLCJkaXNwYXRjaCIsInRoZW4iLCJyZXQiLCJlcnJfY29kZSIsInN0eWxlZGVmIiwicmVzdWx0Iiwic3R5bGVfZGVmIiwicmVwbGFjZSIsImluY2x1ZGVzIiwiZGVjb2RlIiwic2hvd01vZGFsIiwiY29udGVudCIsImVycl9tc2ciLCJzaG93Q2FuY2VsIiwiY29uZmlybVRleHQiLCJjYXRjaCIsImV4IiwiZXJyTXNnIiwib250YXAiLCJpdGVtIiwiZ2V0QXBwIiwib25TY2FuIiwiZGVjb2RlZGF0YSIsInZhbHVlIiwiaGlkZUtleWJvYXJkIiwib2xkdmFsdWUiLCJhdHRyIiwiZmllbGRJZCIsIm1vZGVsIiwib25DaGFuZ2VFdmVudCIsImJpbmQiLCJvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudCIsIm9uU3VmZml4Q2xpY2tFdmVudCIsImlzZmxhZyIsImlkIiwib25DaGFuZ2UiLCJzZXRUaW1lb3V0Iiwib25FbnRlckNoYW5nZSIsImV2ZW50Iiwib2JqX2F0dHIiLCJpbnB1dF9wYXJhbSIsImVuY29kZSIsInN0cmluZ2lmeSIsIk9iamVjdCIsImtleXMiLCJtYXAiLCJhIiwiZWRfdHlwZSIsInN0YXJ0X3RyYW5zYWN0aW9uIiwiY2xzSWQiLCJjbGFzc19uYW1lIiwiZXZlbnRfaWQiLCJldmVudF9uYW1lIiwiZGF0YV9vYmpfaWQiLCJwcmpfaWQiLCJyZWZfY2xzX2lkIiwicmVsX29ial9pZCIsInVzZXJfbG9naW4iLCJkYXRhX2pzb24iLCJjb21wb3NlX2luZm8iLCJleHRfaW5mbyIsImdsb2JhbF9hdHRyIiwidGlwIiwiZXJyX2luZm8iLCJqb2luIiwiaW5mbyIsInJlc3VsdF90eXBlIiwiYWN0aW9uIiwiZm9yRWFjaCIsImFjdGlvbl90eXBlIiwidmlld0FjZWlvblJvdyIsImNsZWFyIiwibGVuZ3RoIiwic3VjY2VzcyIsInJlcyIsImNvbmZpcm0iLCJ2aWV3QWNlaW9uQ29udGVudCIsImNhbmNlbCIsIm1lc3NhZ2UiLCJ0eXBlIiwic3R5bGVTdHIiLCJkZXRhaWxTdHlsZSIsInJvdyIsImF0dHJzIiwiZWxlIiwibmFtZSIsInNldHRpbmciLCJjb2xMaXN0IiwiY29sIiwib2JqSWQiLCJwdXNoIiwiY29udCIsIm9uQ2xpY2tJdGVtIiwiZSIsImN1cnJlbnRJbmRleCIsIm9uRGV0YWlsMUVudGVyQ2hhbmdlIiwiZGVsSXRlbSIsImluZGV4Iiwic3BsaWNlIiwiZGVsRGF0YU9iaiIsInN0eWxlIiwib2JqSUQiLCJvYmpfaWQiLCJvayIsIkJlZm9yZV9PS19FdmVudCIsInNhdmEiLCJBZnRlcl9PS19FdmVudCIsImhlYWRfYXR0ciIsImRldGFpbEF0dHJMaXN0IiwiZGV0YWlsX2F0dHIiLCJjb2xzIiwia2V5IiwianNvbmxpc3QiLCJqc29uIiwicnVuQ3VzdG9tRXZlbnQiLCJuYXZpZ2F0ZUJhY2siLCJkZWx0YSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7O0FBMFVBO0FBMVVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFBQSxlQUdlO0VBQ2JBLE9BQU8sRUFBQztJQUNUQyxNQUFNLEVBQU5BO0VBQ0MsQ0FBQztFQUNEQyxJQUFJLGtCQUFHO0lBQ0wsT0FBTztNQUNSQyxLQUFLLEVBQUMsSUFBSTtNQUNQQyxLQUFLLEVBQUUsQ0FBQyxDQUFD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QUFNLENBQUM0RCxJQUFJLEVBQUM7MEJBQ2JyRixHQUFHLENBQUM4QixTQUFTLENBQUM7NEJBQUMzQyxLQUFLLEVBQUMsSUFBSTs0QkFBQzRDLE9BQU8sRUFBQ04sTUFBTSxDQUFDNEQsSUFBSTs0QkFBQ3BELFVBQVUsRUFBQyxLQUFLOzRCQUFDQyxXQUFXLEVBQUM7MEJBQUksQ0FBQyxDQUFDO3dCQUNuRjtzQkFDRDtvQkFDRDtrQkFDRCxDQUFDLE1BQUk7b0JBQ0psQyxHQUFHLENBQUM4QixTQUFTLENBQUM7c0JBQUMzQyxLQUFLLEVBQUMsS0FBSztzQkFBQzRDLE9BQU8sRUFBQytELEdBQUcsQ0FBQzlELE9BQU87c0JBQUNDLFVBQVUsRUFBQyxLQUFLO3NCQUFDQyxXQUFXLEVBQUM7b0JBQUksQ0FBQyxDQUFDO2tCQUNuRjtnQkFDRCxDQUFDLENBQUMsQ0FBQ0MsS0FBSyxDQUFDLFVBQUFDLEVBQUUsRUFBRTtrQkFDVCxJQUFJOEMsR0FBRyxHQUFHLE9BQU85QyxFQUFFLElBQUksUUFBUSxHQUFHQSxFQUFFLEdBQUdBLEVBQUUsQ0FBQ0MsTUFBTTtrQkFDbkRyQyxHQUFHLENBQUM4QixTQUFTLENBQUM7b0JBQUMzQyxLQUFLLEVBQUMsT0FBTztvQkFBQzRDLE9BQU8sRUFBQyxjQUFjLEdBQUdtRCxHQUFHO29CQUFDakQsVUFBVSxFQUFDLEtBQUs7b0JBQUNDLFdBQVcsRUFBQztrQkFBSSxDQUFDLENBQUM7Z0JBQzlGLENBQUMsQ0FBQztjQUFDO2NBQUE7Z0JBQUE7WUFBQTtVQUFBO1FBQUE7TUFBQTtJQUNKLENBQUM7SUFFRCtELE1BQU0sa0JBQUNnQixDQUFDLEVBQUM7TUFBRTtNQUNWakgsR0FBRyxDQUFDdUksWUFBWSxDQUFDO1FBQ2hCQyxLQUFLLEVBQUMsQ0FBQyxDQUFDO01BQ1QsQ0FBQyxDQUFDO0lBQ0g7RUFDQztBQUNGLENBQUM7QUFBQSwyQiIsImZpbGUiOiIxMzYuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG4vL1xyXG5cclxuaW1wb3J0IEJhc2U2NCBmcm9tICcuLi8uLi9jb21wb25lbnRzL2pzLWJhc2U2NC9iYXNlNjQuanMnXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICBtb2R1bGVzOntcclxuXHRCYXNlNjQsXHJcbiAgfSxcclxuICBkYXRhKCkge1xyXG4gICAgcmV0dXJuIHtcclxuXHQgIHRpdGxlOifnoIHnm5gnLFxyXG4gICAgICBwYXJhbToge30sXHJcblx0ICBmb2N1c01hdGVyaWE6ZmFsc2UsXHJcblx0ICBoZWFkX3N0eWxlZGVmOntcclxuXHRcdGZvcm06e1xyXG5cdFx0XHRpdGVtczpbXVxyXG5cdFx0fVxyXG5cdCAgfSxcclxuICAgICAgZGV0YWlsMV9zdHlsZWRlZjp7fSxcclxuICAgICAgZGV0YWlsMVN0eWxlRGVmTGlzdDpbXSxcclxuICAgICAgZGV0YWlsMl9zdHlsZWRlZjp7fSxcclxuICAgICAgZGV0YWlsMlN0eWxlRGVmTGlzdDpbXSxcclxuXHQgIC8vIOWIhuauteWZqOaVsOaNrlxyXG5cdCAgY3VycmVudDogMCxcclxuXHQgIGl0ZW1zOiBbJ+ato+WcqOeggeebmCcsICflt7LnoIHnm5gnXSxcclxuICAgIH07XHJcbiAgfSxcclxuICBvbkxvYWQob3B0aW9ucykge1xyXG5cdC8vIGNvbnNvbGUubG9nKG9wdGlvbnMpO1xyXG5cdHVuaS5zZXROYXZpZ2F0aW9uQmFyVGl0bGUoeyB0aXRsZTogb3B0aW9ucy50aXRsZW5hbWV9KTsgLy/orr7nva7pobbpg6jmoIfpopggXHJcblx0dGhpcy4kZGF0YS5wYXJhbSA9IEpTT04ucGFyc2Uob3B0aW9ucy5wYXJhbSk7XHJcblx0Ly8gY29uc29sZS5sb2codGhpcy4kZGF0YS5wYXJhbSk7XHJcblx0IC8v6I635Y+WQ0dfRGV0YWls77yI5omY55uY6LSn5ZOB6KGo77yJ5pWw5o2u57G755qE6Ieq5a6a5LmJ6KGo5Y2V5Y+C5pWwXHJcblx0dGhpcy5IZWFkX1VJU3R5bGVHZXRJbmZvKCdDR19EZXRhaWwnLHRoaXMuJGRhdGEucGFyYW0uSGVhZF9QYW5lbF9TdHlsZS5JRCk7XHJcblx0dGhpcy5EZXRhaWwxX1VJc3R5bGVHZXRJbmZvKCdDR19EZXRhaWwnLHRoaXMuJGRhdGEucGFyYW0uRGV0YWlsX0xpc3RfUGFuZWwxX1N0eWxlLklEKTtcclxuXHR0aGlzLkRldGFpbDJfVUlzdHlsZUdldEluZm8oJ0NHX0RldGFpbCcsdGhpcy4kZGF0YS5wYXJhbS5EZXRhaWxfTGlzdF9QYW5lbDJfU3R5bGUuSUQpO1xyXG5cdC8v6aG16Z2i5Yid5aeL5YyW6I635Y+W54Sm54K5XHJcblx0Ly8gdGhpcy5mb2N1c01hdGVyaWE9dHJ1ZTsgXHJcbiAgfSxcdFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIGFzeW5jIEhlYWRfVUlTdHlsZUdldEluZm8oY2xhc3NfaWQsc3R5bGVfaWQpeyAgIC8v6I635Y+W6Ieq5a6a5LmJ6KGo5Y2V5qC35byPXHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdFx0Y2xhc3NfaWQ6Y2xhc3NfaWQsXHJcblx0XHRcdHVpX3N0eWxlX2lkOnN0eWxlX2lkLFxyXG5cdFx0fTtcclxuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdVSVN0eWxlR2V0SW5mbycsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHJldCk7XHJcblx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBzdHlsZWRlZj1cIlwiO1xyXG5cdFx0XHRcdGlmKHJldC5yZXN1bHQuc3R5bGVfZGVmKXtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gy55qEc3R5bGVfZGVm5pivanNvbuWtl+espuS4slxyXG5cdFx0XHRcdCAgICAgc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZi5yZXBsYWNlKC9cXFxcL2csXCJcIik7XHJcblx0XHRcdFx0ICAgICAvL21vYm94M+eahHN0eWxlX2RlZuaYr2Jhc2U2NOWtl+espuS4slxyXG5cdFx0XHRcdCAgICAgaWYoIXJldC5yZXN1bHQuc3R5bGVfZGVmLmluY2x1ZGVzKCdcIicpKSBzdHlsZWRlZiA9IEJhc2U2NC5kZWNvZGUocmV0LnJlc3VsdC5zdHlsZV9kZWYpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWY/IEpTT04ucGFyc2Uoc3R5bGVkZWYpOiB7fTtcclxuXHRcdFx0XHQvLyB0aGlzLmZvcm0gPSB0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbDtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68xXCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzEuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcbiAgICAgICAgXHJcbiAgICB9LFxyXG4gICAgYXN5bmMgRGV0YWlsMV9VSXN0eWxlR2V0SW5mbyhjbGFzc19pZCxzdHlsZV9pZCl7ICAgLy/ojrflj5boh6rlrprkuYnooajljZXmoLflvI9cclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHR2YXIgZGF0YUluZm89e1xyXG5cdFx0XHRjbGFzc19pZDpjbGFzc19pZCxcclxuXHRcdFx0dWlfc3R5bGVfaWQ6c3R5bGVfaWQsXHJcblx0XHR9O1xyXG5cdFx0dGhpcy4kc3RvcmUuZGlzcGF0Y2goJ1VJU3R5bGVHZXRJbmZvJyxkYXRhSW5mbykudGhlbihyZXQ9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2cocmV0KTtcclxuXHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0dmFyIHN0eWxlZGVmPVwiXCI7XHJcblx0XHRcdFx0aWYocmV0LnJlc3VsdC5zdHlsZV9kZWYpe1xyXG5cdFx0XHRcdCAgICAgLy9tb2JveDLnmoRzdHlsZV9kZWbmmK9qc29u5a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBzdHlsZWRlZiA9IHJldC5yZXN1bHQuc3R5bGVfZGVmLnJlcGxhY2UoL1xcXFwvZyxcIlwiKTtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gz55qEc3R5bGVfZGVm5pivYmFzZTY05a2X56ym5LiyXHJcblx0XHRcdFx0ICAgICBpZighcmV0LnJlc3VsdC5zdHlsZV9kZWYuaW5jbHVkZXMoJ1wiJykpIHN0eWxlZGVmID0gQmFzZTY0LmRlY29kZShyZXQucmVzdWx0LnN0eWxlX2RlZik7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdCR0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZj8gSlNPTi5wYXJzZShzdHlsZWRlZik6IHt9O1xyXG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKCR0aGlzLiRkYXRhLmRldGFpbDFfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdC8vICR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaCgkdGhpcy4kZGF0YS5kZXRhaWwxX3N0eWxlZGVmKTtcclxuXHRcdFx0XHQvLyBsZXQgYWEgPSBKU09OLnN0cmluZ2lmeSh0aGlzLmRldGFpbDFfc3R5bGVkZWYpO1xyXG5cdFx0XHRcdC8vICR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaChKU09OLnBhcnNlKGFhKSk7XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coJHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdCk7XHJcblx0XHRcdFx0XHJcblx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vMlwiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdH1cclxuXHRcdH0pLmNhdGNoKGV4PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68yLjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG4gICAgICAgIFxyXG4gICAgfSxcclxuICAgIGFzeW5jIERldGFpbDJfVUlzdHlsZUdldEluZm8oY2xhc3NfaWQsc3R5bGVfaWQpeyAgIC8v6I635Y+W6Ieq5a6a5LmJ6KGo5Y2V5qC35byPXHJcblx0XHR2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdFx0Y2xhc3NfaWQ6Y2xhc3NfaWQsXHJcblx0XHRcdHVpX3N0eWxlX2lkOnN0eWxlX2lkLFxyXG5cdFx0fTtcclxuXHRcdHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdVSVN0eWxlR2V0SW5mbycsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHJldCk7XHJcblx0XHRcdGlmIChyZXQuZXJyX2NvZGUgPT0gMCkge1xyXG5cdFx0XHRcdHZhciBzdHlsZWRlZj1cIlwiO1xyXG5cdFx0XHRcdGlmKHJldC5yZXN1bHQuc3R5bGVfZGVmKXtcclxuXHRcdFx0XHQgICAgIC8vbW9ib3gy55qEc3R5bGVfZGVm5pivanNvbuWtl+espuS4slxyXG5cdFx0XHRcdCAgICAgc3R5bGVkZWYgPSByZXQucmVzdWx0LnN0eWxlX2RlZi5yZXBsYWNlKC9cXFxcL2csXCJcIik7XHJcblx0XHRcdFx0ICAgICAvL21vYm94M+eahHN0eWxlX2RlZuaYr2Jhc2U2NOWtl+espuS4slxyXG5cdFx0XHRcdCAgICAgaWYoIXJldC5yZXN1bHQuc3R5bGVfZGVmLmluY2x1ZGVzKCdcIicpKSBzdHlsZWRlZiA9IEJhc2U2NC5kZWNvZGUocmV0LnJlc3VsdC5zdHlsZV9kZWYpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHQkdGhpcy4kZGF0YS5kZXRhaWwyX3N0eWxlZGVmID0gcmV0LnJlc3VsdC5zdHlsZV9kZWY/IEpTT04ucGFyc2Uoc3R5bGVkZWYpOiB7fTtcclxuXHRcdFx0XHQvLyBjb25zb2xlLmxvZygkdGhpcy4kZGF0YS5kZXRhaWwyX3N0eWxlZGVmKTtcclxuXHRcdFx0XHRcclxuXHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor68zXCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0fVxyXG5cdFx0fSkuY2F0Y2goZXg9PntcclxuXHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzMuMVwiLGNvbnRlbnQ6ZXguZXJyTXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0fSk7XHJcbiAgICAgICAgXHJcbiAgICB9LFxyXG5cdFxyXG5cdG9udGFwKGl0ZW0peyAvL+aJq+eggeWKn+iDvVxyXG5cdFx0Ly8gdmFyICRlbGUgPSBlO1xyXG5cdFx0Ly9jb25zb2xlLmxvZyhlLnRhcmdldClcclxuXHRcdGdldEFwcCgpLm9uU2NhbigocmVzdWx0KT0+e1xyXG5cdFx0XHRjb25zb2xlLmxvZyhyZXN1bHQuZGVjb2RlZGF0YSk7XHJcblx0XHRcdGl0ZW0udmFsdWUgPSByZXN1bHQuZGVjb2RlZGF0YTtcclxuXHRcdFx0dW5pLmhpZGVLZXlib2FyZCgpO1xyXG5cdFx0XHRcclxuXHRcdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdFx0Y29uc29sZS5sb2coaXRlbSk7XHJcblx0XHRcdGlmKGl0ZW0ub2xkdmFsdWUgIT0gaXRlbS52YWx1ZSl7XHJcblx0XHRcdCAgICBpdGVtLm9sZHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0XHR2YXIgYXR0ciA9IGl0ZW0uZmllbGRJZDtcclxuXHRcdFx0XHR0aGlzLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFthdHRyXSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0dmFyIG9uQ2hhbmdlRXZlbnQgPSBpdGVtLmJpbmQub25DaGFuZ2VFdmVudDsgICAvL+WGheWuueWPmOWMluWQjuS6i+S7tlxyXG5cdFx0XHRcdHZhciBvblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudCA9IGl0ZW0uYmluZC5vblN1ZmZpeENsaWNrQ2FsbGJhY2tFdmVudDsgICAvL+WQjuWbvuagh+eCueWHu+S6i+S7tlxyXG5cdFx0XHRcdHZhciBvblN1ZmZpeENsaWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0V2ZW50OyAgIC8v5ZCO5Zu+5qCH54K55Ye75Zue6LCDXHJcblx0XHRcdFx0dmFyIGlzZmxhZyA9IGZhbHNlO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHQgICAgaWYob25DaGFuZ2VFdmVudC5pZCl7ICAgLy/lhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRcdFx0ICAgICAgJHRoaXMub25DaGFuZ2Uob25DaGFuZ2VFdmVudCk7IFxyXG5cdFx0XHQgICAgfVxyXG5cdFx0XHRcdGlmKGl0ZW0udmFsdWUpeyAvL+esrOS4gOS4qui+k+WFpeahhuS4jeS4uuepulxyXG5cdFx0XHRcdFx0JHRoaXMuZm9jdXNNYXRlcmlhID0gdHJ1ZTsgLy/liJ3lp4vljJbvvIznrKzkuozkuKrovpPlhaXmoYZmb2N1c+WxnuaAp1xyXG5cdFx0XHRcdFx0Ly8gc2V0VGltZW91dChmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0Ly8gXHQkdGhpcy5mb2N1c01hdGVyaWE9dHJ1ZTsgLy/nrKzkuozkuKrovpPlhaXmoYbojrflj5bnhKbngrlcclxuXHRcdFx0XHRcdFx0c2V0VGltZW91dChmdW5jdGlvbigpe1xyXG5cdFx0XHRcdFx0XHRcdHVuaS5oaWRlS2V5Ym9hcmQoKTtcclxuXHRcdFx0XHRcdFx0fSwxMDApO1xyXG5cdFx0XHRcdFx0Ly8gfSw1MDApO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0ICAgIC8vIGlmKG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50LmlkKXsgICAvL+WQjuWbvuagh+eCueWHu+S6i+S7tlxyXG5cdFx0XHQgICAgLy8gICB0aGlzLm9uU3VmZml4Q2xpY2sob25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQpO1xyXG5cdFx0XHQgICAgLy8gfVxyXG5cdFx0XHQgICAgLy8gaWYob25TdWZmaXhDbGlja0V2ZW50LmlkKXsgICAvL+WQjuWbvuagh+eCueWHu+Wbnuiwg1xyXG5cdFx0XHQgICAgLy8gICB0aGlzLm9uU3VmZml4Q2xpY2tDYWxsYmFjayhvblN1ZmZpeENsaWNrRXZlbnQpO1xyXG5cdFx0XHQgICAgLy8gfVxyXG5cdFx0XHR9XHJcblx0XHR9KVxyXG5cdH0sXHJcblx0b25FbnRlckNoYW5nZShpdGVtKXsgLy/lm57ovabvvIzngrnlh7vmjInpkq7vvIzlj5bmtojoioLngrnkuovku7ZcclxuXHRcdC8vIGNvbnNvbGUubG9nKGl0ZW0pO1xyXG5cdFx0aWYoaXRlbS5vbGR2YWx1ZSAhPSBpdGVtLnZhbHVlKXtcclxuXHRcdCAgICBpdGVtLm9sZHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0dmFyIGF0dHIgPSBpdGVtLmZpZWxkSWQ7XHJcblx0XHRcdHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsW2F0dHJdID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0dmFyIG9uQ2hhbmdlRXZlbnQgPSBpdGVtLmJpbmQub25DaGFuZ2VFdmVudDsgICAvL+WGheWuueWPmOWMluWQjuS6i+S7tlxyXG5cdFx0XHR2YXIgb25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQgPSBpdGVtLmJpbmQub25TdWZmaXhDbGlja0NhbGxiYWNrRXZlbnQ7ICAgLy/lkI7lm77moIfngrnlh7vkuovku7ZcclxuXHRcdFx0dmFyIG9uU3VmZml4Q2xpY2tFdmVudCA9IGl0ZW0uYmluZC5vblN1ZmZpeENsaWNrRXZlbnQ7ICAgLy/lkI7lm77moIfngrnlh7vlm57osINcclxuXHRcdFx0dmFyIGlzZmxhZyA9IGZhbHNlO1xyXG5cdFx0XHRcclxuXHRcdCAgICBpZihvbkNoYW5nZUV2ZW50LmlkKXsgICAvL+WGheWuueWPmOWMluWQjuS6i+S7tlxyXG5cdFx0ICAgICAgdGhpcy5vbkNoYW5nZShvbkNoYW5nZUV2ZW50KTsgXHJcblx0XHQgICAgfVxyXG5cdFx0ICAgIC8vIGlmKG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50LmlkKXsgICAvL+WQjuWbvuagh+eCueWHu+S6i+S7tlxyXG5cdFx0ICAgIC8vICAgdGhpcy5vblN1ZmZpeENsaWNrKG9uU3VmZml4Q2xpY2tDYWxsYmFja0V2ZW50KTtcclxuXHRcdCAgICAvLyB9XHJcblx0XHQgICAgLy8gaWYob25TdWZmaXhDbGlja0V2ZW50LmlkKXsgICAvL+WQjuWbvuagh+eCueWHu+Wbnuiwg1xyXG5cdFx0ICAgIC8vICAgdGhpcy5vblN1ZmZpeENsaWNrQ2FsbGJhY2sob25TdWZmaXhDbGlja0V2ZW50KTtcclxuXHRcdCAgICAvLyB9XHJcblx0XHR9XHJcblx0fSxcclxuXHQvLyDlhoXlrrnlj5jljJblkI7kuovku7ZcclxuXHRhc3luYyBvbkNoYW5nZShldmVudCkge1xyXG5cdCAgICB0cnkge1xyXG5cdCAgICAgICAgaWYgKGV2ZW50LmlkKSB7XHJcblx0ICAgICAgICAgIHZhciBvYmpfYXR0ciA9IHRoaXMuaGVhZF9zdHlsZWRlZi5mb3JtLm1vZGVsO1xyXG5cdCAgICAgICAgICAvLyBjb25zb2xlLmxvZyhvYmpfYXR0cik7XHJcblx0ICAgICAgICAgIHZhciBpbnB1dF9wYXJhbSA9IEJhc2U2NC5lbmNvZGUoXHJcblx0ICAgICAgICAgICAgSlNPTi5zdHJpbmdpZnkoXHJcblx0ICAgICAgICAgICAgICBPYmplY3Qua2V5cyhvYmpfYXR0cikubWFwKChhKSA9PiAoe1xyXG5cdCAgICAgICAgICAgICAgICBhdHRyOiBhLFxyXG5cdCAgICAgICAgICAgICAgICB2YWx1ZTogb2JqX2F0dHJbYV0gfHwgXCJcIixcclxuXHQgICAgICAgICAgICAgIH0pKVxyXG5cdCAgICAgICAgICAgIClcclxuXHQgICAgICAgICAgKTtcclxuXHRcdFx0ICB2YXIgJHRoaXMgPSB0aGlzO1xyXG5cdFx0XHQgIHZhciBkYXRhSW5mbz17XHJcblx0ICAgICAgICAgICAgZWRfdHlwZTogMCxcclxuXHRcdFx0XHRzdGFydF90cmFuc2FjdGlvbjogJycsXHJcblx0ICAgICAgICAgICAgY2xhc3NfaWQ6IHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLmNsc0lkLFxyXG5cdFx0XHRcdGNsYXNzX25hbWU6ICcnLFxyXG5cdCAgICAgICAgICAgIGV2ZW50X2lkOiBldmVudC5pZCxcclxuXHRcdFx0XHRldmVudF9uYW1lOiAnJyxcclxuXHRcdFx0XHRkYXRhX29ial9pZDogJycsXHJcblx0ICAgICAgICAgICAgb2JqX2F0dHI6IG9ial9hdHRyLFxyXG5cdFx0XHRcdHByal9pZDogJycsXHJcblx0XHRcdFx0cmVmX2Nsc19pZDogJycsXHJcblx0XHRcdFx0cmVsX29ial9pZDogJycsXHJcblx0XHRcdFx0dXNlcl9sb2dpbjogJycsXHJcblx0XHRcdFx0ZGF0YV9qc29uOiAnJyxcclxuXHRcdFx0XHRjb21wb3NlX2luZm86ICcnLFxyXG5cdFx0XHRcdGV4dF9pbmZvOiAnJyxcclxuXHRcdFx0XHRnbG9iYWxfYXR0cjogJycsXHJcblx0ICAgICAgICAgICAgaW5wdXRfcGFyYW06IGlucHV0X3BhcmFtLFxyXG5cdCAgICAgICAgICB9O1xyXG5cdFx0XHQgIHRoaXMuJHN0b3JlLmRpc3BhdGNoKCdydW5DdXN0b21FdmVudCcsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdCAgXHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHQgIFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHR2YXIgcmVzdWx0ID0gcmV0LnJlc3VsdDsgXHJcblx0XHRcdFx0XHRpZiAocmVzdWx0LnJldCAhPSAwKSB7XHJcblx0XHRcdFx0XHQgICAgdmFyIHRpcCA9IHJlc3VsdC5lcnJfaW5mbyA/IHR5cGVvZiByZXN1bHQuZXJyX2luZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuZXJyX2luZm8gOiByZXN1bHQuZXJyX2luZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdFx0ICAgIGlmIChyZXN1bHQucmV0ID09IDgwMSkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHQgICAgZWxzZSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCsnLOaPkOekujonK3Jlc3VsdC5yZXQsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZVxyXG5cdFx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRcdGxldCB0aXAgPSByZXN1bHQuaW5mbyA/IHR5cGVvZiByZXN1bHQuaW5mbyA9PSAnc3RyaW5nJyA/IHJlc3VsdC5pbmZvIDogcmVzdWx0LmluZm8uam9pbignPGJyLz4nKSA6ICcnO1xyXG5cdFx0XHRcdFx0XHRpZiAodGlwKSB1bmkuc2hvd01vZGFsKHt0aXRsZTon5o+Q56S6Jyxjb250ZW50OnRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRpZihyZXN1bHQucmVzdWx0X3R5cGUgPT0gMCAmJiByZXN1bHQuYWN0aW9uKXtcclxuXHRcdFx0XHRcdFx0XHRyZXN1bHQuYWN0aW9uLmZvckVhY2goaXRlbT0+e1xyXG5cdFx0XHRcdFx0XHRcdFx0aWYoaXRlbS5hY3Rpb25fdHlwZSA9PSBcImluc2VydF9zdWJ0YWJsZV9wYWdlX3Jvd1wiKXsgLy/noIHnm5jkuK1cclxuXHRcdFx0XHRcdFx0XHRcdFx0dmFyIHZhbHVlID0gaXRlbS52YWx1ZTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMudmlld0FjZWlvblJvdyh2YWx1ZSk7XHJcblx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYoaXRlbS5hY3Rpb25fdHlwZSA9PSBcInNldF9zdWJ0YWJsZV9wYWdlX2NvbnRlbnRcIil7ICAvL+W3sueggeebmFxyXG5cdFx0XHRcdFx0XHRcdFx0XHR2YXIgdmFsdWUgPSBpdGVtLnZhbHVlO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRpZih2YWx1ZS5jbGVhciA9PSB0cnVlICYmICR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QubGVuZ3RoPjApeyAvL+WIpOaWreaYr+WQpua4heepuumhteetvuWGheWuuSzmraPlnKjnoIHnm5jmmK/lkKbmnInmlbDmja5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAn5o+Q56S6JyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNvbnRlbnQ6ICfns7vnu5/mo4DmtYvliLDmnInmraPlnKjnoIHnm5jkuK3nmoTotKflk4HvvIznu6fnu63mk43kvZzkvJrmuIXnqbrvvIzmmK/lkKbnu6fnu63vvJ8nLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0c3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHRpZiAocmVzLmNvbmZpcm0pIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAkdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICR0aGlzLiRkYXRhLmRldGFpbDJTdHlsZURlZkxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCAgJHRoaXMudmlld0FjZWlvbkNvbnRlbnQodmFsdWUpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAkdGhpcy4kZGF0YS5kZXRhaWwyU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgICR0aGlzLnZpZXdBY2Vpb25Db250ZW50KHZhbHVlKTtcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmRldGFpbDJTdHlsZURlZkxpc3Q9W107XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0JHRoaXMudmlld0FjZWlvbkNvbnRlbnQodmFsdWUpO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHRcdC8vIHRoaXMuZGV0YWlsMlN0eWxlRGVmTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHRpZihyZXN1bHQuaW5mbyl7XHJcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzQuM1wiLGNvbnRlbnQ6cmVzdWx0LmluZm8sc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdCAgXHRcdFxyXG5cdFx0XHQgIFx0fWVsc2V7XHJcblx0XHRcdCAgXHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNFwiLGNvbnRlbnQ6cmV0LmVycl9tc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdCAgXHR9XHJcblx0XHRcdCAgfSkuY2F0Y2goZXg9PntcclxuXHRcdFx0ICBcdC8vIGNvbnNvbGUubG9nKGV4KTtcclxuXHRcdFx0ICBcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNC4xXCIsY29udGVudDpleC5lcnJNc2csc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdCAgfSk7XHJcblx0ICAgICAgICB9XHJcblx0ICAgIH0gY2F0Y2ggKGV4KSB7XHJcblx0ICAgICAgICB2YXIgdGlwID0gdHlwZW9mIGV4ID09IFwic3RyaW5nXCIgPyBleCA6IGV4Lm1lc3NhZ2U7XHJcblx0XHRcdHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi6ZSZ6K+vNC4yXCIsY29udGVudDpcIuaJp+ihjOKAnOWGheWuueWPmOWMluWQjuKAneS6i+S7tuWksei0pe+8mlwiICsgdGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcclxuXHQgICAgfVxyXG5cdH0sXHJcblx0Ly/liqDovb3mraPlnKjnoIHnm5jlhoXlrrlcclxuXHR2aWV3QWNlaW9uUm93KGRhdGEsdHlwZSl7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhkYXRhKTtcclxuXHQgICAgdmFyIHN0eWxlU3RyID0gSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5kZXRhaWwxX3N0eWxlZGVmKTtcclxuXHRcdGlmKHR5cGUpeyAvL+ehruWumuWQjuiEmuacrOi/m+WFpeWKoOi9veW3sueggeebmOaVsOaNrlxyXG5cdFx0ICAgIHN0eWxlU3RyID0gSlNPTi5zdHJpbmdpZnkodGhpcy4kZGF0YS5kZXRhaWwyX3N0eWxlZGVmKTtcclxuXHRcdH1cclxuXHQgICAgdmFyIGRldGFpbFN0eWxlID0gSlNPTi5wYXJzZShzdHlsZVN0cik7XHJcblx0ICAgIGRhdGEucm93LmF0dHJzLmZvckVhY2goYXR0cj0+e1xyXG5cdCAgICAgICAgZGV0YWlsU3R5bGUuZm9ybS5pdGVtcy5mb3JFYWNoKGVsZT0+e1xyXG5cdCAgICAgICAgICAgIGlmKGVsZS5uYW1lIT0nTGF5b3V0Jyl7XHJcblx0ICAgICAgICAgICAgICBpZihlbGUuZmllbGRJZCA9PSBhdHRyLmF0dHIpIGVsZS52YWx1ZSA9IGF0dHIudmFsdWU7XHJcblx0ICAgICAgICAgICAgfSBlbHNlIGlmKGVsZS5uYW1lPT0nTGF5b3V0Jyl7XHJcblx0ICAgICAgICAgICAgICBlbGUuc2V0dGluZy5jb2xMaXN0LmZvckVhY2goY29sPT57XHJcblx0ICAgICAgICAgICAgICAgIGlmKGNvbCl7XHJcblx0ICAgICAgICAgICAgICAgICAgaWYoY29sLmZpZWxkSWQgPT0gYXR0ci5hdHRyKSBjb2wudmFsdWUgPSBhdHRyLnZhbHVlO1xyXG5cdCAgICAgICAgICAgICAgICB9XHJcblx0ICAgICAgICAgICAgICB9KTtcclxuXHQgICAgICAgICAgICB9XHJcblx0ICAgICAgICB9KTtcclxuXHQgICAgfSk7XHJcblx0XHRpZih0eXBlKXsgLy/noa7lrprlkI7ohJrmnKzov5vlhaXliqDovb3lt7LnoIHnm5jmlbDmja5cclxuXHRcdCAgICBkZXRhaWxTdHlsZS5mb3JtLm9iaklkID0gZGF0YS5yb3cuaWQ7XHJcblx0XHQgICAgdGhpcy4kZGF0YS5kZXRhaWwyU3R5bGVEZWZMaXN0LnB1c2goZGV0YWlsU3R5bGUpO1xyXG5cdFx0ICAgIC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuZGV0YWlsMlN0eWxlRGVmTGlzdCk7XHJcblx0XHR9ZWxzZXtcclxuXHRcdFx0ZGV0YWlsU3R5bGUuZm9ybS5hdHRycyA9IGRhdGEucm93LmF0dHJzO1xyXG5cdFx0XHR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3QucHVzaChkZXRhaWxTdHlsZSk7XHJcblx0XHRcdC8vIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdCk7XHJcblx0XHR9XHJcblx0fSxcclxuXHQvL+WKoOi9veW3sueggeebmOWGheWuuVxyXG5cdHZpZXdBY2Vpb25Db250ZW50KGRhdGEpe1xyXG5cdCAgICBkYXRhLmNvbnRlbnQuZm9yRWFjaChjb250PT57XHJcblx0ICAgICAgICB2YXIgc3R5bGVTdHIgPSBKU09OLnN0cmluZ2lmeSh0aGlzLiRkYXRhLmRldGFpbDJfc3R5bGVkZWYpO1xyXG5cdCAgICAgICAgdmFyIGRldGFpbFN0eWxlID0gSlNPTi5wYXJzZShzdHlsZVN0cik7XHJcblx0ICAgICAgICBkZXRhaWxTdHlsZS5mb3JtLm9iaklkID0gY29udC5pZDtcclxuXHQgICAgICAgIGNvbnQuYXR0cnMuZm9yRWFjaChhdHRyPT57XHJcblx0ICAgICAgICAgIGRldGFpbFN0eWxlLmZvcm0uaXRlbXMuZm9yRWFjaChlbGU9PnsgXHJcblx0ICAgICAgICAgICAgaWYoZWxlLm5hbWUhPSdMYXlvdXQnKXtcclxuXHQgICAgICAgICAgICAgIGlmKGVsZS5maWVsZElkID09IGF0dHIuYXR0cikgZWxlLnZhbHVlID0gYXR0ci52YWx1ZTtcclxuXHQgICAgICAgICAgICB9IGVsc2UgaWYoZWxlLm5hbWU9PSdMYXlvdXQnKXtcclxuXHQgICAgICAgICAgICAgIGVsZS5zZXR0aW5nLmNvbExpc3QuZm9yRWFjaChjb2w9PntcclxuXHQgICAgICAgICAgICAgICAgaWYoY29sKXtcclxuXHQgICAgICAgICAgICAgICAgICBpZihjb2wuZmllbGRJZCA9PSBhdHRyLmF0dHIpIGNvbC52YWx1ZSA9IGF0dHIudmFsdWU7XHJcblx0ICAgICAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgICAgIH0pO1xyXG5cdCAgICAgICAgICAgIH1cclxuXHQgICAgICAgICAgfSk7XHJcblx0ICAgICAgICB9KTtcclxuXHQgICAgICAgIHRoaXMuJGRhdGEuZGV0YWlsMlN0eWxlRGVmTGlzdC5wdXNoKGRldGFpbFN0eWxlKTtcclxuXHQgICAgfSk7XHJcblx0ICAgICAgLy8gY29uc29sZS5sb2codGhpcy5kZXRhaWwyU3R5bGVEZWZMaXN0KTtcclxuXHR9LFxyXG5cdG9uQ2xpY2tJdGVtKGUpIHsgLy/pgInmi6npobXnrb5cclxuXHRcdC8vIGNvbnNvbGUubG9nKGUpO1xyXG5cdFx0dGhpcy5jdXJyZW50ID0gZS5jdXJyZW50SW5kZXhcclxuXHR9LFxyXG5cdG9uRGV0YWlsMUVudGVyQ2hhbmdlKGl0ZW0peyAgLy/noIHnm5jkuK3moLflvI/lm57ovabkuovku7ZcclxuXHQgICAgY29uc29sZS5sb2coaXRlbSk7XHJcblx0fSxcclxuXHRkZWxJdGVtKGluZGV4KXsgIC8v5Yig6Zmk56CB55uY5Lit5qC35byP6Z2i5p2/XHJcblx0ICAgIHRoaXMuZGV0YWlsMVN0eWxlRGVmTGlzdC5zcGxpY2UoaW5kZXgsMSk7XHJcblx0fSxcclxuICAgIGRlbERhdGFPYmooc3R5bGUsaW5kZXgpeyAgLy/liKDpmaTlt7LnoIHnm5jmlbBcclxuICAgICAgLy8gY29uc29sZS5sb2coc3R5bGUpO1xyXG5cdCAgdmFyICR0aGlzID0gdGhpcztcclxuXHQgIHVuaS5zaG93TW9kYWwoe1xyXG5cdCAgXHR0aXRsZTogJ+aPkOekuicsXHJcblx0ICBcdGNvbnRlbnQ6ICfnoa7lrprliKDpmaTor6Xlt7LnoIHnm5jmlbDmja7vvIEnLFxyXG5cdCAgXHRzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XHJcblx0ICBcdFx0aWYgKHJlcy5jb25maXJtKSB7XHJcblx0XHRcdFx0dmFyIG9iaklEPXN0eWxlLmZvcm0ub2JqSWQ7XHJcblx0XHRcdFx0aWYoIXN0eWxlLmZvcm0ub2JqSWQuaW5jbHVkZXMoJ3snKSkgb2JqSUQgPSAneycrc3R5bGUuZm9ybS5vYmpJZCsnfSc7XHJcblx0XHRcdFx0ICAgICAgICAgIFxyXG5cdFx0XHRcdHZhciBkYXRhSW5mbz17XHJcblx0XHRcdFx0XHRjbGFzc19pZDpzdHlsZS5mb3JtLmNsc0lkLFxyXG5cdFx0XHRcdFx0Y2xhc3NfbmFtZTonJyxcclxuXHRcdFx0XHRcdG9ial9pZDpvYmpJRFxyXG5cdFx0XHRcdH07XHJcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coZGF0YUluZm8pO1xyXG5cdFx0XHRcdCR0aGlzLiRzdG9yZS5kaXNwYXRjaCgnZGF0YU9iakRlbCcsZGF0YUluZm8pLnRoZW4ocmV0PT57XHJcblx0XHRcdFx0XHQvLyBjb25zb2xlLmxvZyhyZXQpO1xyXG5cdFx0XHRcdFx0aWYgKHJldC5lcnJfY29kZSA9PSAwKSB7XHJcblx0XHRcdFx0XHRcdCR0aGlzLmRldGFpbDJTdHlsZURlZkxpc3Quc3BsaWNlKGluZGV4LDEpO1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLliKDpmaTmiJDlip/vvIFcIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor681XCIsY29udGVudDpyZXQuZXJyX21zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0XHRcdFx0Ly8gY29uc29sZS5sb2coZXgpO1xyXG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7dGl0bGU6XCLplJnor681LjFcIixjb250ZW50OmV4LmVyck1zZyxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHR9KTtcclxuXHQgIFx0XHR9IGVsc2UgaWYgKHJlcy5jYW5jZWwpIHtcclxuXHRcdFx0XHRcclxuXHQgIFx0XHR9XHJcblx0ICBcdH1cclxuXHQgIH0pO1xyXG4gICAgICBcclxuICAgIH0sXHJcblx0XHJcblx0b2soKXsgLy/noa7lrppcclxuXHRcdC8vIHZhciAkdGhpcyA9IHRoaXM7XHJcblx0XHQvLyBjb25zb2xlLmxvZyh0aGlzLiRkYXRhLnBhcmFtLkJlZm9yZV9PS19FdmVudCk7XHJcblx0IC8vICAgIGNvbnNvbGUubG9nKHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQpO1xyXG5cdCAgICBpZih0aGlzLiRkYXRhLnBhcmFtLkJlZm9yZV9PS19FdmVudCkgLy/mmK/lkKbmnInnoa7lrprliY3kuovku7ZcclxuXHQgICAgICAgIHRoaXMuc2F2YSh0aGlzLiRkYXRhLnBhcmFtLkJlZm9yZV9PS19FdmVudCk7XHJcblx0ICAgIGVsc2UgaWYodGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudCkgIC8v5piv5ZCm5pyJ56Gu5a6a5ZCO5LqL5Lu2XHJcblx0ICAgICAgICB0aGlzLnNhdmEodGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudCk7XHJcblx0fSxcclxuXHRzYXZhKGV2ZW50KXtcclxuXHRcdHZhciAkdGhpcyA9IHRoaXM7XHJcblx0ICAgIGlmKHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdC5sZW5ndGg9PTApe1xyXG5cdCAgICAgIHVuaS5zaG93TW9kYWwoe3RpdGxlOlwi5o+Q56S6XCIsY29udGVudDpcIuayoeacieato+WcqOeggeebmOeahOaVsOaNru+8gVwiLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdCAgICAgIHJldHVybiBmYWxzZTtcclxuXHQgICAgfVxyXG5cdCAgICAvL+iOt+WPluihqOWktOWxnuaAp1xyXG5cdCAgICB2YXIgaGVhZF9hdHRyID0ge307XHJcblx0ICAgIHRoaXMuJGRhdGEuaGVhZF9zdHlsZWRlZi5mb3JtLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcblx0ICAgICAgaGVhZF9hdHRyW2l0ZW0uZmllbGRJZF0gPSBpdGVtLnZhbHVlO1xyXG5cdCAgICB9KTtcclxuXHQgICAgLy8gY29uc29sZS5sb2coaGVhZF9hdHRyKTtcclxuXHQgICAgLy/ojrflj5bmraPlnKjnoIHnm5jlsZ7mgKdcclxuXHQgICAgdmFyIGRldGFpbEF0dHJMaXN0ID0gW107XHJcblx0ICAgIHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdC5mb3JFYWNoKHN0eWxlPT57XHJcblx0ICAgICAgdmFyIGRldGFpbF9hdHRyPXt9O1xyXG5cdFx0ICBzdHlsZS5mb3JtLml0ZW1zLmZvckVhY2goaXRlbSA9PiB7XHJcblx0ICAgICAgICBpZihpdGVtLm5hbWUgPT0gXCJMYXlvdXRcIil7ICAvL+WIpOaWreaYr+WQpuaYr+agheagj+agvOW8j1xyXG5cdCAgICAgICAgICBpdGVtLnNldHRpbmcuY29sTGlzdC5mb3JFYWNoKGNvbHMgPT4ge1xyXG5cdCAgICAgICAgICAgIGlmKGNvbHMhPW51bGwpIGRldGFpbF9hdHRyW2NvbHMuZmllbGRJZF0gPSBjb2xzLnZhbHVlO1xyXG5cdCAgICAgICAgICB9KTtcclxuXHQgICAgICAgIH1lbHNlXHJcblx0ICAgICAgICAgIGRldGFpbF9hdHRyW2l0ZW0uZmllbGRJZF0gPSBpdGVtLnZhbHVlO1xyXG5cdCAgICAgIH0pO1xyXG5cdCAgICAgIGRldGFpbEF0dHJMaXN0LnB1c2goZGV0YWlsX2F0dHIpO1xyXG5cdCAgICB9KTtcclxuXHQgICAgLy8gY29uc29sZS5sb2coZGV0YWlsQXR0ckxpc3QpO1xyXG5cdFx0Ly/ojrflj5bmraPlnKjnoIHnm5jph4zmsqHmnInmmL7npLrnmoTlrZfmrrVcclxuXHRcdHRoaXMuJGRhdGEuZGV0YWlsMVN0eWxlRGVmTGlzdC5mb3JFYWNoKHN0eWxlPT57XHJcblx0XHQgIHN0eWxlLmZvcm0uYXR0cnMuZm9yRWFjaChhdHRyID0+IHtcclxuXHRcdCAgICBmb3IodmFyIGtleSBpbiBkZXRhaWxBdHRyTGlzdCl7XHJcblx0XHQgICAgICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKGRldGFpbEF0dHJMaXN0W2tleV0pO1xyXG5cdFx0ICAgICAgbGV0IGlzZmxhZyA9IHRydWU7XHJcblx0XHQgICAgICBrZXlzLmZvckVhY2goKGVsZSkgPT4ge1xyXG5cdFx0ICAgICAgICBpZihlbGUgPT0gYXR0ci5hdHRyKSBpc2ZsYWcgPSBmYWxzZTtcclxuXHRcdCAgICAgIH0pO1xyXG5cdFx0ICAgICAgaWYoaXNmbGFnKSB7XHJcblx0XHQgICAgICAgIGRldGFpbEF0dHJMaXN0W2F0dHIuYXR0cl0gPSBhdHRyLnZhbHVlO1xyXG5cdFx0ICAgICAgfVxyXG5cdFx0ICAgIH0gXHJcblx0XHQgIH0pO1xyXG5cdFx0fSk7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhkZXRhaWxBdHRyTGlzdCk7XHJcblx0IC8vICAgIHJldHVybjtcclxuXHRcdHZhciBpbnB1dF9wYXJhbSA9IEJhc2U2NC5lbmNvZGUoXHJcblx0XHQgICAgSlNPTi5zdHJpbmdpZnkoXHJcblx0XHQgICAgICBPYmplY3Qua2V5cyhoZWFkX2F0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdCAgICAgICAgYXR0cjogYSxcclxuXHRcdCAgICAgICAgdmFsdWU6IGhlYWRfYXR0clthXSB8fCBcIlwiLFxyXG5cdFx0ICAgICAgfSkpXHJcblx0XHQgICAgKVxyXG5cdFx0KTtcclxuXHRcdCB2YXIganNvbmxpc3Q9W107XHJcblx0XHRkZXRhaWxBdHRyTGlzdC5mb3JFYWNoKGF0dHI9PntcclxuXHRcdCAgICBqc29ubGlzdC5wdXNoKHtcclxuXHRcdCAgICAgIGlkOicnLFxyXG5cdFx0ICAgICAgYXR0cnM6IE9iamVjdC5rZXlzKGF0dHIpLm1hcCgoYSkgPT4gKHtcclxuXHRcdCAgICAgICAgYXR0cjogYSxcclxuXHRcdCAgICAgICAgdmFsdWU6IGF0dHJbYV0gfHwgXCJcIixcclxuXHRcdCAgICAgIH0pKVxyXG5cdFx0ICAgIH0pO1xyXG5cdFx0fSk7XHJcblx0XHQvLyBjb25zb2xlLmxvZyhqc29ubGlzdCk7XHJcblx0XHRqc29ubGlzdC5mb3JFYWNoKGFzeW5jIChqc29uLGtleSk9PntcclxuXHRcdFx0YXdhaXQgJHRoaXMucnVuQ3VzdG9tRXZlbnQoZXZlbnQsaW5wdXRfcGFyYW0sanNvbik7XHJcblx0XHR9KTtcclxuXHR9LFxyXG4gICAgLy/miafooYznoa7lrprohJrmnKxcclxuICAgIGFzeW5jIHJ1bkN1c3RvbUV2ZW50KGV2ZW50LGlucHV0X3BhcmFtLGpzb24pe1xyXG5cdFx0dmFyICR0aGlzID0gdGhpcztcclxuXHRcdHZhciBkYXRhX2pzb24gPSBCYXNlNjQuZW5jb2RlKFxyXG5cdFx0ICAgIEpTT04uc3RyaW5naWZ5KGpzb24pXHJcblx0XHQpO1xyXG5cdFx0dmFyIGRhdGFJbmZvPXtcclxuXHRcdCAgZWRfdHlwZTogMCxcclxuXHRcdCAgc3RhcnRfdHJhbnNhY3Rpb246ICcnLFxyXG5cdFx0ICBjbGFzc19pZDogdGhpcy4kZGF0YS5oZWFkX3N0eWxlZGVmLmZvcm0uY2xzSWQsXHJcblx0XHQgIGNsYXNzX25hbWU6ICcnLFxyXG5cdFx0ICBldmVudF9pZDogdGhpcy4kZGF0YS5wYXJhbS5BZnRlcl9PS19FdmVudC5JRCxcclxuXHRcdCAgZXZlbnRfbmFtZTogJycsXHJcblx0XHQgIGRhdGFfb2JqX2lkOiAnJyxcclxuXHRcdCAgb2JqX2F0dHI6ICcnLFxyXG5cdFx0ICBwcmpfaWQ6ICcnLFxyXG5cdFx0ICByZWZfY2xzX2lkOiAnJyxcclxuXHRcdCAgcmVsX29ial9pZDogJycsXHJcblx0XHQgIHVzZXJfbG9naW46ICcnLFxyXG5cdFx0ICBkYXRhX2pzb246IGRhdGFfanNvbixcclxuXHRcdCAgY29tcG9zZV9pbmZvOiAnJyxcclxuXHRcdCAgZXh0X2luZm86ICcnLFxyXG5cdFx0ICBnbG9iYWxfYXR0cjogJycsXHJcblx0XHQgIGlucHV0X3BhcmFtOiBpbnB1dF9wYXJhbSxcclxuXHRcdH07XHJcblx0XHQvLyBjb25zb2xlLmxvZyhkYXRhSW5mbyk7XHJcblx0XHR0aGlzLiRzdG9yZS5kaXNwYXRjaCgncnVuQ3VzdG9tRXZlbnQnLGRhdGFJbmZvKS50aGVuKHJlcz0+e1xyXG5cdFx0XHRjb25zb2xlLmxvZyhyZXMpO1xyXG5cdFx0XHRpZiAocmVzLmVycl9jb2RlID09IDApIHtcclxuXHRcdFx0XHR2YXIgcmVzdWx0ID0gcmVzLnJlc3VsdDsgXHJcblx0XHRcdFx0aWYgKHJlc3VsdC5yZXQgIT0gMCkge1xyXG5cdFx0XHRcdCAgICB2YXIgdGlwID0gcmVzdWx0LmVycl9pbmZvID8gdHlwZW9mIHJlc3VsdC5lcnJfaW5mbyA9PSAnc3RyaW5nJyA/IHJlc3VsdC5lcnJfaW5mbyA6IHJlc3VsdC5lcnJfaW5mby5qb2luKCc8YnIvPicpIDogJyc7XHJcblx0XHRcdFx0ICAgIGlmIChyZXN1bHQucmV0ID09IDgwMSkgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXAsc2hvd0NhbmNlbDpmYWxzZSxjb25maXJtVGV4dDpcIuWPlua2iFwifSk7XHJcblx0XHRcdFx0ICAgIGVsc2UgdW5pLnNob3dNb2RhbCh7dGl0bGU6J+aPkOekuicsY29udGVudDp0aXArJyzmj5DnpLo6JytyZXN1bHQucmV0LHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlXHJcblx0XHRcdFx0fWVsc2V7XHJcblx0XHRcdFx0XHRsZXQgdGlwID0gcmVzdWx0LmluZm8gPyB0eXBlb2YgcmVzdWx0LmluZm8gPT0gJ3N0cmluZycgPyByZXN1bHQuaW5mbyA6IHJlc3VsdC5pbmZvLmpvaW4oJzxici8+JykgOiAnJztcclxuXHRcdFx0XHRcdGlmICh0aXApIHVuaS5zaG93TW9kYWwoe3RpdGxlOifmj5DnpLonLGNvbnRlbnQ6dGlwLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdFx0aWYocmVzdWx0LnJlc3VsdF90eXBlID09IDApe1xyXG5cdFx0XHRcdFx0ICBpZihyZXN1bHQuYWN0aW9uKXtcclxuXHRcdFx0XHRcdFx0cmVzdWx0LmFjdGlvbi5mb3JFYWNoKGl0ZW09PntcclxuXHRcdFx0XHRcdFx0ICBpZihpdGVtLmFjdGlvbl90eXBlID09IFwiaW5zZXJ0X3N1YnRhYmxlX3BhZ2Vfcm93XCIpeyAvL+eggeebmOS4rVxyXG5cdFx0XHRcdFx0XHRcdHZhciB2YWx1ZSA9IGl0ZW0udmFsdWU7XHJcblx0XHRcdFx0XHRcdFx0Ly/liqDovb3lt7Lnu4/noIHnm5jmlbDmja5cclxuXHRcdFx0XHRcdFx0XHQkdGhpcy52aWV3QWNlaW9uUm93KHZhbHVlLCdhZGQnKTtcclxuXHRcdFx0XHRcdFx0XHQvL+a4heepuuadoeeggeWGheWuuVxyXG5cdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5pdGVtcy5mb3JFYWNoKChpdGVtLGluZGV4KSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZihpdGVtLmZpZWxkSWQgIT0gXCJTX0NOVFJfQ09ERVwiKXtcclxuXHRcdFx0XHRcdFx0XHRcdCAgaXRlbS52YWx1ZSA9ICcnO1xyXG5cdFx0XHRcdFx0XHRcdFx0ICBpdGVtLm9sZHZhbHVlID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHQgICR0aGlzLiRkYXRhLmhlYWRfc3R5bGVkZWYuZm9ybS5tb2RlbFtpdGVtLmZpZWxkSWRdID0gJyc7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0Ly/muIXpmaTmraPlnKjnoIHnm5jkuK3miJDlip/nmoTmlbDmja5cclxuXHRcdFx0XHRcdFx0XHQkdGhpcy4kZGF0YS5kZXRhaWwxU3R5bGVEZWZMaXN0LmZvckVhY2goKHN0eWxlLGluZGV4KT0+e1xyXG5cdFx0XHRcdFx0XHRcdCAgaWYoc3R5bGUuZm9ybS5pdGVtc1swXS5maWVsZElkID09IGpzb24uYXR0cnNbMF0uYXR0ciAmJiBzdHlsZS5mb3JtLml0ZW1zWzBdLnZhbHVlID09IGpzb24uYXR0cnNbMF0udmFsdWUpeyBcclxuXHRcdFx0XHRcdFx0XHRcdCR0aGlzLiRkYXRhLmRldGFpbDFTdHlsZURlZkxpc3Quc3BsaWNlKGluZGV4LDEpO1xyXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdFx0XHRcdCAgfVxyXG5cdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdC8vIHRoaXMuZGV0YWlsMlN0eWxlRGVmTGlzdD1bXTtcclxuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIuaPkOekulwiLGNvbnRlbnQ6XCLnoIHnm5jmiJDlip9cIixzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdFx0XHRcdFx0ICB9XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0ICB9ZWxzZXtcclxuXHRcdFx0XHRcdFx0aWYoJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQuSUQgIT0gZXZlbnQuSUQpeyAvL+WIpOaWreW9k+WJjeS6i+S7tuaYr+WQpuaYr+ehruWumuWQjuS6i+S7tlxyXG5cdFx0XHRcdFx0XHRcdCR0aGlzLnNhdmEoJHRoaXMuJGRhdGEucGFyYW0uQWZ0ZXJfT0tfRXZlbnQpOyAvL+aJp+ihjOehruWumuWQjuS6i+S7tlxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHQgIH1cclxuXHRcdFx0XHRcdH1lbHNle1xyXG5cdFx0XHRcdFx0XHQvLyAkdGhpcy4kZGF0YS5kZXRhaWwyU3R5bGVEZWZMaXN0PVtdO1xyXG5cdFx0XHRcdFx0XHRpZihyZXN1bHQuaW5mbyl7XHJcblx0XHRcdFx0XHRcdCAgdW5pLnNob3dNb2RhbCh7dGl0bGU6XCLmj5DnpLpcIixjb250ZW50OnJlc3VsdC5pbmZvLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9ZWxzZXtcclxuXHRcdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzhcIixjb250ZW50OnJlcy5lcnJfbXNnLHNob3dDYW5jZWw6ZmFsc2UsY29uZmlybVRleHQ6XCLlj5bmtohcIn0pO1xyXG5cdFx0XHR9XHJcblx0XHR9KS5jYXRjaChleD0+e1xyXG5cdFx0ICAgIGxldCB0aXAgPSB0eXBlb2YgZXggPT0gXCJzdHJpbmdcIiA/IGV4IDogZXguZXJyTXNnO1xyXG5cdFx0XHR1bmkuc2hvd01vZGFsKHt0aXRsZTpcIumUmeivrzguMVwiLGNvbnRlbnQ6XCLmiafooYzigJznoa7lrprlkI7igJ3kuovku7blpLHotKXvvJpcIiArIHRpcCxzaG93Q2FuY2VsOmZhbHNlLGNvbmZpcm1UZXh0Olwi5Y+W5raIXCJ9KTtcclxuXHRcdH0pO1xyXG5cdH0sXHJcblx0XHJcblx0Y2FuY2VsKGUpeyAvL+WPlua2iFxyXG5cdFx0dW5pLm5hdmlnYXRlQmFjayh7XHJcblx0XHRcdGRlbHRhOjEgLy/ov5Tlm57lsYLmlbDvvIwy5YiZ5LiK5LiK6aG1XHJcblx0XHR9KTtcclxuXHR9LFxyXG4gIH0sXHJcbn07XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///136\n"); /***/ }), /* 137 */ -- Gitblit v1.9.1