From ea5c60a0ac52216b22d6096d2d0394c2480f5bc3 Mon Sep 17 00:00:00 2001
From: yhj <1836460075@qq.com>
Date: 星期五, 19 十二月 2025 14:53:03 +0800
Subject: [PATCH] 20251219 cnf修改
---
夏蒙注塑报工/unpackage/dist/dev/app-plus/app-service.js | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git "a/\345\244\217\350\222\231\346\263\250\345\241\221\346\212\245\345\267\245/unpackage/dist/dev/app-plus/app-service.js" "b/\345\244\217\350\222\231\346\263\250\345\241\221\346\212\245\345\267\245/unpackage/dist/dev/app-plus/app-service.js"
index 60318e7..0eee413 100644
--- "a/\345\244\217\350\222\231\346\263\250\345\241\221\346\212\245\345\267\245/unpackage/dist/dev/app-plus/app-service.js"
+++ "b/\345\244\217\350\222\231\346\263\250\345\241\221\346\212\245\345\267\245/unpackage/dist/dev/app-plus/app-service.js"
@@ -1279,7 +1279,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 _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n// import JsBarcode from 'jsbarcode'; // 寮曞叆 JsBarcode 搴揬n// import printTemplate from '../../print.js'; // 瀵煎叆璺緞鍚戜笂涓ょ骇\n// import util from '@/components/kk-printer/utils/util.js';\n// import * as blesdk from '@/components/kk-printer/utils/bluetoolth.js';\n// import kkPrinter from '@/components/kk-printer/index.vue';\n//import CustomToast from '../../CustomToast/CustomToast.vue';\n\nvar tsc = __webpack_require__(/*! ../../components/gprint/tsc.js */ 13);\nvar esc = __webpack_require__(/*! ../../components/gprint/esc.js */ 16);\nvar UsbModule = uni.requireNativePlugin(\"gp-usb\");\nvar _default = {\n data: function data() {\n var _ref;\n return _ref = {\n showHistoryPopup: false,\n // 鎺у埗寮瑰嚭妗嗘樉绀篭n selectedPerson: '',\n selectedLine: '',\n selectedOrder: '',\n personOptions: [],\n personList: [],\n // 瀛樺偍浠庡悗绔幏鍙栫殑浜哄憳鏁版嵁\n personIndex: -1,\n personCode: '',\n //浜哄憳缂栫爜\n lineCode: '',\n //浜х嚎缂栫爜\n lineOptions: [],\n // 瀛樺偍浜х嚎鏁版嵁\n lineList: [],\n // 瀛樺偍浠庡悗绔幏鍙栫殑浜х嚎鏁版嵁\n orderOptions: [],\n // 瀛樺偍宸ュ崟鏁版嵁\n orderList: [],\n // 瀛樺偍浠庡悗绔幏鍙栫殑宸ュ崟鏁版嵁\n historyRecords: [],\n // 鐢ㄤ簬寮圭獥涓樉绀虹殑鍘嗗彶鎵撳嵃璁板綍\n dailyList: [],\n version: '1.0.0',\n // 榛樿鍊硷紝濡傛灉鏃犳硶鑾峰彇鍒欐樉绀烘鍊糪n orderDetails: {\n requirementDoc: '',\n // 闇�姹傚崟鎹甛n productionOrder: '',\n // 鐢熶骇璁㈠崟\n orderQuantity: '',\n // 璁㈠崟鏁伴噺\n producedQuantity: '',\n // 宸茬敓浜ф暟\n bzsl: '',\n // 鎺ㄨ崘鍖呰鏁癨n gdzt: '',\n itemId: '',\n // 鐗╂枡ID\n itemNo: '',\n // 鐗╂枡缂栫爜\n itemname: '',\n // 鐗╂枡鍚嶇О\n itemmodel: '' // 瑙勬牸鍨嬪彿\n },\n\n lastRequestData: null,\n // 鐢ㄤ簬淇濆瓨鏈�鍚庝竴娆℃墦鍗扮殑 requestData\n bgs: null,\n reportedQuantity: '',\n dailyCapacity: '0',\n // 姣忔棩浜ц兘\n checkedInspection: null,\n // 榛樿涓烘湭鐐规\n checkedMaintenance: null,\n // 榛樿涓烘湭缁存姢\n checkXJ: null,\n checkFirstPass: null,\n printData: {\n STRP1: \"001\",\n STRP2: \"渚涘簲鍟咥\",\n STRP3: \"鐗╂枡缂栫爜12345\",\n STRP4: \"鐗╂枡鍚嶇ОABC\",\n STRP5: \"100\",\n STRP6: \"2024-09-11\",\n STRP7: \"瑙勬牸鍨嬪彿鎻忚堪\",\n STRP8: \"鏉$爜鍐呭\",\n STRP13: \"闇�姹傚崟鎹�123\"\n },\n historyList: [],\n // 瀛樺偍鍘嗗彶鎵撳嵃璁板綍\n personName: '',\n // 鐢ㄤ簬鏄剧ず閫変腑鐨勪汉鍛樺悕绉癨n personId: 0,\n materialInfo: {},\n // 瀛樺偍鐗╂枡淇℃伅\n sendData: '',\n isButtonDisabled: false,\n // 鎺у埗鎸夐挳鐘舵�乗n isButtonDisabled2: false,\n // 鎺у埗鎸夐挳鐘舵�乗n networkState: \"妫�娴嬩腑...\",\n deviceState: \"妫�娴嬩腑...\",\n networkCheckInterval: null,\n usbCheckInterval: null,\n refreshTimer: null\n }, (0, _defineProperty2.default)(_ref, \"networkState\", \"妫�娴嬩腑...\"), (0, _defineProperty2.default)(_ref, \"deviceState\", \"妫�娴嬩腑...\"), (0, _defineProperty2.default)(_ref, \"networkModalVisible\", false), (0, _defineProperty2.default)(_ref, \"usbModalVisible\", false), (0, _defineProperty2.default)(_ref, \"updateChecked\", false), _ref;\n },\n // components:{\n // \tkkPrinter\n // },\n onReady: function onReady() {\n var _this = this;\n setTimeout(function () {\n _this.checkUsbStatus(); // 寤惰繜妫�娴� USB 鐘舵�侊紝閬垮厤鍒濆鍖栨湭瀹屾垚\n }, 1000);\n },\n mounted: function mounted() {\n this.startUsbCheck(); // 瀹氭椂妫�鏌� USB 杩炴帴鐘舵�乗n this.startRandomRefresh(); // 杩涘叆椤甸潰寮�濮嬮殢鏈哄埛鏂癨n this.loadPersons(); // 鍦ㄧ粍浠舵寕杞芥椂鍔犺浇浜哄憳淇℃伅\n this.loadLines(); // 鍦ㄧ粍浠舵寕杞芥椂鍔犺浇浜х嚎淇℃伅 \t\t\n __f__(\"log\", \"椤甸潰鍔犺浇锛屽紑濮嬫娴� USB 鍜岀綉缁�...\", \" at pages/scbg/scbg.vue:350\");\n __f__(\"log\", \"UsbModule:\", UsbModule, \" at pages/scbg/scbg.vue:351\"); // 鎵撳嵃 UsbModule 鏄惁鍙敤\n __f__(\"log\", \"UsbModule.isUsbConnect:\", UsbModule === null || UsbModule === void 0 ? void 0 : UsbModule.isUsbConnect, \" at pages/scbg/scbg.vue:352\"); // 鎵撳嵃鏂规硶鏄惁瀛樺湪\n if (typeof plus !== 'undefined') {\n this.version = plus.runtime.version;\n }\n this.checkForUpdate(); // 鍚姩鏃舵鏌ョ増鏈洿鏂癨n //this.startAutoUpdateCheck(); // 寮�濮嬪畾鏃舵鏌ョ増鏈洿鏂癨n this.listenNetworkStatus(); // 瀹炴椂鐩戝惉缃戠粶鍙樺寲\n\n this.manualCheck(); // 杩涘叆椤甸潰鍏堟娴嬩竴娆n this.startNetworkCheck(); // 瀹氭椂妫�鏌ョ綉缁滅姸鎬� \n\n this.usbConnect();\n },\n methods: {\n // 寮�鍚嚜鍔ㄦ洿鏂版娴媆n startAutoUpdateCheck: function startAutoUpdateCheck() {\n var _this2 = this;\n this.updateCheckInterval = setInterval(function () {\n _this2.checkForUpdate(); // 姣忛殧涓�娈垫椂闂存鏌ユ洿鏂癨n }, 1 * 60 * 1000); // 10 鍒嗛挓鑷姩妫�娴嬩竴娆n },\n beforeDestroy: function beforeDestroy() {\n this.stopAutoUpdateCheck(); // 椤甸潰閿�姣佹椂鍋滄瀹氭椂鍣紝闃叉鍐呭瓨娉勬紡\n },\n checkForUpdate: function checkForUpdate() {\n var _this3 = this;\n if (this.updateChecked) return;\n uni.request({\n url: \"http://192.168.0.107:10086/update.json\",\n // 浣犵殑鏈嶅姟鍣� JSON 鏂囦欢鍦板潃\n success: function success(res) {\n var newVersion = res.data.version;\n var currentVersion = plus.runtime.version; // 鑾峰彇褰撳墠 APK 鐗堟湰鍙穃n __f__(\"log\", \"褰撳墠鐗堟湰:\", currentVersion, \"鏈�鏂扮増鏈�:\", newVersion, \" at pages/scbg/scbg.vue:385\");\n if (newVersion > currentVersion) {\n // uni.showModal({\n // \ttitle: \"鍙戠幇鏂扮増鏈琝",\n // \tcontent: \"鏄惁涓嬭浇鏈�鏂扮増鏈�?\",\n // \tsuccess: (modalRes) => {\n // \t\tif (modalRes.confirm) {\n // \t\t\tthis.downloadNewApk(res.data.apkUrl);\n // \t\t}\n // \t}\n // });\n _this3.downloadNewApk(res.data.apkUrl);\n _this3.updateChecked = true; // 鏍囪鏇存柊宸叉鏌ヨ繃\n // // 濡傛灉鏈夋柊鐗堟湰锛屽紑濮嬩笅杞絓n //download(res.data.apkUrl);\n }\n },\n\n fail: function fail(err) {\n __f__(\"error\", \"鏇存柊妫�鏌ュけ璐�:\", err, \" at pages/scbg/scbg.vue:404\");\n }\n });\n },\n downloadNewApk: function downloadNewApk(apkUrl) {\n uni.showToast({\n title: \"寮�濮嬩笅杞芥洿鏂�...\",\n icon: \"none\",\n duration: 2000\n });\n uni.downloadFile({\n url: apkUrl,\n success: function success(res) {\n if (res.statusCode === 200) {\n plus.runtime.install(res.tempFilePath, {\n force: true\n }, function () {\n __f__(\"log\", \"瀹夎鎴愬姛锛岄噸鍚簲鐢╘", \" at pages/scbg/scbg.vue:424\");\n //plus.runtime.restart();\n //plus.runtime.quit();\n // uni.navigateBack()\n }, function (e) {\n __f__(\"error\", \"瀹夎澶辫触:\", e, \" at pages/scbg/scbg.vue:429\");\n });\n }\n },\n fail: function fail(err) {\n __f__(\"error\", \"涓嬭浇澶辫触:\", err, \" at pages/scbg/scbg.vue:434\");\n uni.showToast({\n title: \"涓嬭浇澶辫触锛岃妫�鏌ョ綉缁淺",\n icon: \"none\",\n duration: 2000\n });\n }\n });\n },\n // 鍚姩闅忔満鍒锋柊\n startRandomRefresh: function startRandomRefresh() {\n var _this4 = this;\n var randomInterval = Math.floor(Math.random() * (30000 - 10000 + 1)) + 10000; // 10~30绉掗殢鏈烘椂闂碶n __f__(\"log\", \"\\u4E0B\\u6B21\\u5237\\u65B0\\u5C06\\u5728 \".concat(randomInterval / 1000, \" \\u79D2\\u540E\\u6267\\u884C\"), \" at pages/scbg/scbg.vue:446\");\n this.refreshTimer = setTimeout(function () {\n _this4.refreshStatus(); // 鎵ц鍒锋柊\n _this4.startRandomRefresh(); // 閫掑綊璋冪敤锛岀‘淇濇寔缁埛鏂癨n }, randomInterval);\n },\n // 1. 瀹炴椂鐩戝惉缃戠粶鍙樺寲\n listenNetworkStatus: function listenNetworkStatus() {\n var _this5 = this;\n uni.onNetworkStatusChange(function (res) {\n _this5.networkState = res.isConnected ? \"缃戠粶杩炴帴姝e父\" : \"鏃犵綉缁滆繛鎺";\n __f__(\"log\", \"缃戠粶鐘舵�佸彉鏇�:\", _this5.networkState, \" at pages/scbg/scbg.vue:457\");\n uni.showToast({\n title: \"\\u7F51\\u7EDC\\u72B6\\u6001: \".concat(_this5.networkState),\n duration: 1500\n });\n });\n },\n // 2. 姣� 5 绉掓鏌ョ綉缁滅姸鎬乗n checkNetworkStatus: function checkNetworkStatus() {\n var _this6 = this;\n uni.getNetworkType({\n success: function success(res) {\n _this6.networkState = res.networkType !== \"none\" ? \"缃戠粶杩炴帴姝e父\" : \"鏃犵綉缁滆繛鎺";\n __f__(\"log\", \"缃戠粶妫�娴嬬粨鏋�:\", _this6.networkState, \" at pages/scbg/scbg.vue:470\");\n if (_this6.networkState == \"鏃犵綉缁滆繛鎺") {\n uni.showToast({\n title: \" \".concat(_this6.networkState),\n duration: 1500,\n icon: \"none\"\n });\n // uni.showModal({\n // title: ` ${this.networkState}`,\n // content: \"璇锋鏌ョ綉缁� 杩炴帴杩炴帴\",\n // showCancel: false,\n // \tsuccess: () => {\n // \t this.modalVisible = false;\n\n // \t\t\t\t\t\t\t\t\t\t }\n // });\n }\n }\n });\n },\n startNetworkCheck: function startNetworkCheck() {\n var _this7 = this;\n this.networkCheckInterval = setInterval(function () {\n _this7.checkNetworkStatus();\n }, 5000);\n },\n // 3. 姣� 5 绉掓鏌� USB 杩炴帴鐘舵�乗n checkUsbStatus: function checkUsbStatus() {\n try {\n if (!UsbModule || !UsbModule.isUsbConnect) {\n throw new Error(\"UsbModule 鏈畾涔夋垨鏂规硶涓嶅瓨鍦╘");\n }\n var _res = UsbModule.isUsbConnect();\n this.deviceState = _res ? \"鎵撳嵃鏈� 杩炴帴姝e父\" : \"鎵撳嵃鏈� 杩炴帴澶辫触\";\n __f__(\"log\", \"鎵撳嵃鏈� 妫�娴嬬粨鏋�:\", this.deviceState, \" at pages/scbg/scbg.vue:507\");\n if (this.deviceState == \"鎵撳嵃鏈� 杩炴帴澶辫触\") {\n uni.showToast({\n title: \" \".concat(this.deviceState),\n duration: 1500,\n icon: \"none\"\n });\n this.usbConnect();\n // uni.showModal({\n // title: ` ${this.deviceState}`,\n // content: \"璇锋鏌SB 杩炴帴杩炴帴\",\n // showCancel: false,\n // \t success: () => {\n // \t this.modalVisible = false;\n // \t \t\t\tthis.usbConnect();\n // \t }\n // });\n }\n } catch (error) {\n __f__(\"error\", \"鎵撳嵃鏈� 妫�娴嬮敊璇�:\", error, \" at pages/scbg/scbg.vue:530\");\n this.deviceState = \"鎵撳嵃鏈� 妫�娴嬪け璐";\n uni.showToast({\n title: \"鎵撳嵃鏈� 妫�娴嬪け璐ワ紝璇锋鏌ユ彃浠禱",\n duration: 2000,\n icon: \"none\"\n });\n // uni.showModal({\n // title: ` ${this.deviceState}`,\n // content: \"璇锋鏌SB 杩炴帴杩炴帴\",\n // showCancel: false,\n // \t success: () => {\n // \t this.modalVisible = false;\n // \t\t\t this.usbConnect();\n // \t }\n // });\n this.usbConnect();\n }\n },\n startUsbCheck: function startUsbCheck() {\n var _this8 = this;\n this.usbCheckInterval = setInterval(function () {\n _this8.checkUsbStatus();\n __f__(\"log\", \"瀹氭椂鍚姩鎴愬姛\", \" at pages/scbg/scbg.vue:554\");\n }, 5000);\n },\n // 4. 鎵嬪姩瑙﹀彂妫�娴媆n manualCheck: function manualCheck() {\n __f__(\"log\", \"鎵嬪姩妫�娴嬫墽琛�...\", \" at pages/scbg/scbg.vue:560\");\n this.checkNetworkStatus();\n this.checkUsbStatus();\n },\n senUSBData: function senUSBData() {\n if (this.sendData == null) {\n uni.showToast({\n title: \"璇峰厛鐢熸垚鎸囦护\",\n duration: 1500\n });\n return;\n }\n var hexStr = '';\n var data = Array.from(this.sendData);\n for (var i = 0; i < data.length; i++) {\n var str = Number(data[i]).toString(16);\n str = str.length == 1 ? \"0\" + str : str;\n hexStr += str;\n }\n //console.log(hexStr)\n var printNum = 1; // 鎵撳嵃娆℃暟\n var hexPrintData = '';\n for (var n = 0; n < printNum; n++) {\n hexPrintData += hexStr;\n }\n var res = UsbModule.write(hexPrintData);\n uni.showToast({\n title: res.msg,\n duration: 1500\n });\n this.result = '鍙戦�侀暱搴︼細' + hexPrintData.length + \"锛涜繑鍥炵粨鏋滐細\" + JSON.stringify(res);\n },\n usbConnect: function usbConnect() {\n __f__(\"log\", \"111\", UsbModule, \" at pages/scbg/scbg.vue:597\");\n var res = UsbModule.initUsbDevice();\n if (res) {\n this.deviceState = \"鎵撳嵃鏈� 杩炴帴姝e父\";\n } else {\n this.deviceState = \"鎵撳嵃鏈� 杩炴帴澶辫触\";\n }\n uni.showToast({\n title: this.deviceState,\n duration: 1500\n });\n },\n isConnect: function isConnect() {\n var res = UsbModule.isUsbConnect();\n if (res) {\n this.deviceState = \"閾炬帴鐘舵�佹甯竆";\n } else {\n this.deviceState = \"閾炬帴鐘舵�佸け璐";\n }\n uni.showToast({\n title: this.deviceState,\n duration: 1500\n });\n },\n disConnect: function disConnect() {\n var res = UsbModule.disUsbConnect();\n if (res) {\n this.deviceState = \"\";\n }\n uni.showToast({\n title: \"鏂紑杩炴帴鎴愬姛\",\n duration: 1500\n });\n },\n createLabel: function createLabel() {\n var command = tsc.jpPrinter.createNew();\n command.setSize(40, 30);\n command.setGap(2);\n command.setCls();\n command.setText(50, 10, \"TSS24.BF2\", 1, 1, \"鎵撳嵃娴嬭瘯\"); // 鏂囨湰\n command.setQR(50, 50, \"L\", 5, \"A\", \"www.poscom.cn\"); // 浜岀淮鐮乗n command.setBar(50, 180, \"128\", 64, 1, 2, 4, \"200902125410\"); // 鏉$爜\n command.setPagePrint();\n this.sendData = command.getData();\n uni.showToast({\n title: '鏍囩鎸囦护鐢熸垚鎴愬姛',\n duration: 1500\n });\n },\n // onPrint(opt){\n // \tlet strCmd =blesdk.CreatCPCLPage(560,500,1,0); \n // \tstrCmd += blesdk.addCPCLLine(0,210,560,210,3);\n // \tstrCmd += blesdk.addCPCLText(10,0,'4','3',0,'8.14');\n // \tstrCmd += blesdk.addCPCLBarCode(270,0,'128',80,0,1,1,'00051');\n // \tstrCmd += blesdk.addCPCLText(290,80,'7','2',0,'00051');\n // \tstrCmd += blesdk.addCPCLText(40,110,'3','0',0,'CHICKEN FEET (BONELESS)-Copy-Copy');\n // \tstrCmd += blesdk.addCPCLSETMAG(2,2);\n // \tstrCmd += blesdk.addCPCLText(40,150,'55','0',0,'鏃犻楦$埅 涓�鐩掞紙绾�1.5纾咃級');\n // \tstrCmd += blesdk.addCPCLSETMAG(0,0);\n // \tstrCmd += blesdk.addCPCLText(350,180,'7','2',0,'2019-08-12');\n // \tstrCmd += blesdk.addCPCLLocation(2);\n // \tstrCmd += blesdk.addCPCLQRCode(0,220,'M', 2, 6, 'qr code test');\n // \tstrCmd += blesdk.addCPCLPrint();\n // \tthis.bufferData = strCmd;\n // }, \n // 鍔犺浇浜哄憳淇℃伅\n fetchPersonInfo: function fetchPersonInfo() {\n var _this9 = this;\n __f__(\"log\", 'Fetching person info for:', this.personCode, \" at pages/scbg/scbg.vue:666\"); // 妫�鏌ヤ簨浠舵槸鍚﹁Е鍙慭n\n if (this.personCode.trim()) {\n uni.request({\n url: \"http://192.168.0.107:44380/api/persons/\".concat(encodeURIComponent(this.personCode)),\n // 淇敼鍚庣殑璇锋眰璺緞\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n __f__(\"log\", res.data.personnelName, \" at pages/scbg/scbg.vue:677\");\n _this9.selectedPerson = res.data.personnelName; // 璁剧疆浜哄憳淇℃伅\n __f__(\"log\", 'Person info loaded:', _this9.selectedPerson, \" at pages/scbg/scbg.vue:679\");\n } else {\n __f__(\"error\", 'Failed to fetch person info:', res, \" at pages/scbg/scbg.vue:681\");\n }\n },\n fail: function fail(err) {\n uni.showToast({\n title: res,\n icon: 'none',\n duration: 2000\n });\n }\n });\n }\n },\n // 鍔犺浇浜х嚎淇℃伅\n fetchLineInfo: function fetchLineInfo() {\n var _this10 = this;\n __f__(\"log\", 'Fetching line info for:', this.lineCode, \" at pages/scbg/scbg.vue:698\"); // 妫�鏌ヤ簨浠舵槸鍚﹁Е鍙慭n\n if (this.lineCode.trim()) {\n uni.request({\n url: \"http://192.168.0.107:44380/api/lines/\".concat(encodeURIComponent(this.lineCode.trim())),\n // 淇敼鍚庣殑璇锋眰璺緞\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n __f__(\"log\", 'Line info loaded:', res.data.lineNo, \" at pages/scbg/scbg.vue:709\");\n _this10.selectedLine = res.data.lineName; // 璁剧疆浜х嚎淇℃伅\n __f__(\"log\", 'Line info loaded:', _this10.selectedLine, \" at pages/scbg/scbg.vue:711\");\n // 閫夋嫨瀹屼骇绾垮悗鍔犺浇瀵瑰簲鐨勫伐鍗曚俊鎭痋n _this10.loadOrders(_this10.lineCode);\n // 閫夋嫨瀹屼骇绾垮悗鍔犺浇瀵瑰簲鐨勬瘡鏃ヤ骇鑳戒俊鎭痋n _this10.loadDailyCapacity(_this10.lineCode);\n } else {\n __f__(\"error\", 'Failed to fetch line info:', res, \" at pages/scbg/scbg.vue:717\");\n }\n },\n fail: function fail(err) {\n uni.showToast({\n title: res,\n icon: 'none',\n duration: 2000\n });\n }\n });\n }\n },\n viewHistory: function viewHistory() {\n this.fetchHistoryRecords(this.selectedOrder);\n this.showHistoryPopup = true;\n },\n // 鍏抽棴寮圭獥\n closePopup: function closePopup() {\n this.showHistoryPopup = false;\n },\n // 鑾峰彇鍘嗗彶鎵撳嵃璁板綍\n fetchHistoryRecords: function fetchHistoryRecords(orderNo) {\n var _this11 = this;\n uni.request({\n url: \"http://192.168.0.107:44380/api/print/printHistory?orderNo=\".concat(encodeURIComponent(orderNo)),\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n // 姝g‘瑙f瀽鍚庣杩斿洖鐨勬暟鎹甛n __f__(\"log\", '123', res.data.historyRecords, \" at pages/scbg/scbg.vue:751\");\n //鑾峰彇鏈�鏂版潯鐮乗n _this11.lastRequestData = res.data.historyRecords[0].itemBarcode;\n _this11.oldbgs = res.data.historyRecords[0].quantity;\n __f__(\"log\", _this11.lastRequestData, \" at pages/scbg/scbg.vue:755\");\n // 灏嗗悗绔暟鎹槧灏勫埌鍓嶇浣跨敤鐨勬牸寮廫n _this11.historyList = (res.data.historyRecords || []).map(function (record) {\n return {\n itemBarcode: record.itemBarcode || '鏈煡鏉$爜',\n // 纭繚瑙f瀽瀛楁\n quantity: record.quantity || '鏈煡鏁伴噺',\n // 鎵撳嵃鏁伴噺瀛楁\n printDate: record.printDate || '鏈煡鏃堕棿',\n // 鎵撳嵃鏃堕棿\n printedBy: record.printedBy || '' // 鎶ュ伐浜篭n };\n });\n\n __f__(\"log\", 'History records loaded:', _this11.historyList, \" at pages/scbg/scbg.vue:763\");\n } else {\n __f__(\"error\", 'Failed to fetch history records:', res, \" at pages/scbg/scbg.vue:765\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching history records:', err, \" at pages/scbg/scbg.vue:769\");\n }\n });\n },\n // 鍔犺浇浜哄憳淇℃伅\n loadPersons: function loadPersons() {\n var _this12 = this;\n uni.request({\n url: \"http://192.168.0.107:44380/api/persons\",\n // 鏇挎崲涓轰綘鐨� ASP.NET Core API 鍦板潃\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n // 杩囨护鎺夋湁绌哄�兼垨鏃犳晥鏁版嵁鐨勯」\n // this.personOptions = res.data.filter(person => person.personName && person.personName.trim());\n\n _this12.personList = res.data.filter(function (person) {\n return person.personName && person.personName.trim().length > 0;\n });\n _this12.personOptions = _this12.personList.map(function (it) {\n return it.personName;\n });\n _this12.personIndex = -1;\n } else {\n __f__(\"error\", 'Failed to fetch persons:', res, \" at pages/scbg/scbg.vue:793\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching persons:', err, \" at pages/scbg/scbg.vue:797\");\n }\n });\n },\n // 鏇存柊閫変腑鐨勪汉鍛樺悕绉癨n updatePersonName: function updatePersonName(e) {\n this.personIndex = e.detail.value;\n if (this.personIndex == -1) {\n return;\n }\n this.selectedPerson = this.personList[this.personIndex].personName;\n this.personId = this.personList[this.personIndex].personId;\n __f__(\"log\", this.personId + \" :\" + this.selectedPerson, \" at pages/scbg/scbg.vue:811\");\n },\n //鍔犺浇浜х嚎淇℃伅\n loadLines: function loadLines() {\n var _this13 = this;\n uni.request({\n url: \"http://192.168.0.107:44380/api/lines\",\n // 鏇挎崲涓轰綘鐨� API 鍦板潃\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n _this13.lineList = res.data.filter(function (line) {\n return line.lineName && line.lineName.trim().length > 0;\n });\n _this13.lineOptions = _this13.lineList.map(function (it) {\n return it.lineName;\n });\n __f__(\"log\", 'Line options loaded:', _this13.lineOptions, \" at pages/scbg/scbg.vue:827\");\n } else {\n __f__(\"error\", 'Failed to fetch lines:', res, \" at pages/scbg/scbg.vue:829\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching lines:', err, \" at pages/scbg/scbg.vue:833\");\n }\n });\n },\n // 鏇存柊閫変腑鐨勪骇绾縗n updateLine: function updateLine(e) {\n var selectedIndex = e.detail.value; //鏁扮粍涓嬫爣\n this.selectedLine = this.lineOptions[selectedIndex];\n this.lineCode = this.lineList[selectedIndex].lineNo; // 淇濆瓨閫変腑鐨勪骇绾跨紪鍙穃n __f__(\"log\", 'Selected line:', this.selectedLine, \" at pages/scbg/scbg.vue:842\");\n __f__(\"log\", 'Selected lineNo:', this.lineNo, \" at pages/scbg/scbg.vue:843\");\n this.selectedOrder = null;\n // 閫夋嫨瀹屼骇绾垮悗鍔犺浇瀵瑰簲鐨勫伐鍗曚俊鎭痋n this.loadOrders(this.lineCode);\n // 閫夋嫨瀹屼骇绾垮悗鍔犺浇瀵瑰簲鐨勬瘡鏃ヤ骇鑳戒俊鎭痋n this.loadDailyCapacity(this.lineCode);\n },\n // 鍔犺浇姣忔棩浜ц兘淇℃伅\n loadDailyCapacity: function loadDailyCapacity(lineNo) {\n var _this14 = this;\n uni.request({\n url: \"http://192.168.0.107:44380/api/capacity?lineNo=\".concat(encodeURIComponent(lineNo)),\n // 鍋囪浣犳湁涓�涓幏鍙栨瘡鏃ヤ骇鑳界殑API\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200 && Array.isArray(res.data) && res.data.length > 0) {\n // 鍙栧嚭杩斿洖鏁扮粍涓殑绗竴涓璞$殑 daily 鍊糪n __f__(\"log\", res.data, \" at pages/scbg/scbg.vue:861\");\n _this14.dailyCapacity = res.data[0].daily; // 鐩存帴淇濆瓨姣忔棩浜ц兘\n _this14.checkedInspection = res.data[0].is_DJ == 1;\n _this14.checkedMaintenance = res.data[0].is_WH == 1;\n _this14.checkXJ = null;\n _this14.checkFirstPass = null;\n __f__(\"log\", 'Daily capacity loaded:', _this14.dailyCapacity, \" at pages/scbg/scbg.vue:867\");\n } else {\n _this14.dailyCapacity = '鏆傛棤鏁版嵁'; // 鎴栬�呰缃负鍏朵粬榛樿鍊糪n _this14.checkedInspection = null; // 閲嶇疆鐐规鐘舵�乗n _this14.checkedMaintenance = null; // 閲嶇疆淇濆吇鐘舵�乗n _this14.checkXJ = null;\n _this14.checkFirstPass = null;\n __f__(\"error\", 'Failed to fetch daily capacity or no data:', res, \" at pages/scbg/scbg.vue:875\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching daily capacity:', err, \" at pages/scbg/scbg.vue:880\");\n }\n });\n },\n // 鍔犺浇宸ュ崟淇℃伅\n loadOrders: function loadOrders(lineNo) {\n var _this15 = this;\n uni.request({\n url: \"http://192.168.0.107:44380/api/orders?lineNo=\".concat(encodeURIComponent(lineNo)),\n // 浣跨敤瀛樺偍鐨刲ineNo\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n _this15.orderList = res.data.filter(function (order) {\n return order.orderNo && order.orderNo.trim().length > 0;\n });\n _this15.orderOptions = _this15.orderList.map(function (it) {\n return it.orderNo;\n });\n __f__(\"log\", 'Order options loaded:', _this15.orderOptions, \" at pages/scbg/scbg.vue:899\");\n } else {\n __f__(\"error\", 'Failed to fetch orders:', res, \" at pages/scbg/scbg.vue:901\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching orders:', err, \" at pages/scbg/scbg.vue:905\");\n }\n });\n },\n // 鏇存柊閫変腑鐨勫伐鍗昞n loadOrderDetails: function loadOrderDetails(e) {\n var _this16 = this;\n var selectedIndex = e.detail.value; // 鑾峰彇閫夋嫨鐨勭储寮昞n this.selectedOrder = this.orderOptions[selectedIndex]; // 鑾峰彇閫変腑鐨勫伐鍗曠紪鍙穃n this.orderNo = this.orderList[selectedIndex].orderNo; // 淇濆瓨閫変腑鐨勫伐鍗曠紪鍙穃n __f__(\"log\", 'tiaoma', this.selectedOrder, \" at pages/scbg/scbg.vue:914\");\n __f__(\"log\", 'Selected orderNo:', this.orderNo, \" at pages/scbg/scbg.vue:915\");\n this.orderDetails = {\n requirementDoc: '',\n // 闇�姹傚崟鎹甛n productionOrder: '',\n // 鐢熶骇璁㈠崟\n orderQuantity: '',\n // 璁㈠崟鏁伴噺\n bzsl: '',\n // 鎺ㄨ崘鍖呰鏁癨n gdzt: '',\n producedQuantity: '',\n // 宸茬敓浜ф暟\n itemId: '',\n // 鐗╂枡ID\n itemNo: '',\n // 鐗╂枡缂栫爜\n itemname: '',\n // 鐗╂枡鍚嶇О\n itemmodel: '' // 瑙勬牸鍨嬪彿\n };\n //20250213 淇敼鍘嗗彶鎵撳嵃璁板綍涓簄ull \n lastRequestData: null;\n __f__(\"log\", 'lastRequestData:', this.lastRequestData, \" at pages/scbg/scbg.vue:932\");\n // 璋冪敤寮�宸ュ伐鍗曟柟娉昞n this.startProduction();\n // 璋冪敤 API 鑾峰彇宸ュ崟璇︽儏\n uni.request({\n url: \"http://192.168.0.107:44380/api/orderDetails?orderNo=\".concat(encodeURIComponent(this.orderNo)),\n // 浣跨敤瀛樺偍鐨刼rderNo\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n __f__(\"log\", 'gongdanxinx', res.data, \" at pages/scbg/scbg.vue:943\");\n if (res.statusCode === 200) {\n _this16.orderDetails = {\n requirementDoc: res.data.requirementDoc,\n // 闇�姹傚崟鎹甛n productionOrder: res.data.productionOrder,\n // 鐢熶骇璁㈠崟\n orderQuantity: res.data.orderQuantity,\n // 璁㈠崟鏁伴噺\n bzsl: res.data.bzsl,\n // 鎺ㄨ崘鍖呰鏁癨n gdzt: res.data.gdzt,\n // 宸ュ崟鐘舵�乗n producedQuantity: res.data.producedQuantity,\n // 宸茬敓浜ф暟\n itemId: res.data.itemId,\n // 鐗╂枡ID\n itemNo: res.data.itemNO,\n // 鐗╂枡缂栫爜\n itemname: res.data.itemname,\n // 鐗╂枡鍚嶇О\n itemmodel: res.data.itemmodel // 瑙勬牸鍨嬪彿\n };\n // 鏍规嵁 sj 鍜� xj 鐨勫�兼潵璁剧疆棣栨鍜屽贰妫�鐘舵�乗n // 鏍规嵁 sj 鍜� xj 鐨勫�兼潵璁剧疆棣栨鍜屽贰妫�鐘舵�乗n if (res.data.sj === 1) {\n _this16.checkFirstPass = true; // 棣栨鍚堟牸\n } else if (res.data.sj === 2) {\n _this16.checkFirstPass = false; // 棣栨涓嶅悎鏍糪n } else {\n _this16.checkFirstPass = null; // 棣栨鏈仛\n }\n\n if (res.data.xj === 1) {\n _this16.checkXJ = true; // 宸℃鍚堟牸\n } else if (res.data.xj === 2) {\n _this16.checkXJ = false; // 宸℃涓嶅悎鏍糪n } else {\n _this16.checkXJ = null; // 宸℃鏈仛\n }\n\n __f__(\"log\", 'Order details loaded:', _this16.orderDetails, \" at pages/scbg/scbg.vue:978\");\n } else {\n __f__(\"error\", 'Failed to fetch order details:', res, \" at pages/scbg/scbg.vue:981\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching order details:', err, \" at pages/scbg/scbg.vue:985\");\n }\n });\n // 鑾峰彇鍘嗗彶鎵撳嵃璁板綍\n __f__(\"log\", '12355', this.orderNo, \" at pages/scbg/scbg.vue:989\");\n this.historyList = [];\n this.fetchHistoryRecords(this.orderNo);\n },\n //鍒锋柊\n refreshStatus: function refreshStatus() {\n var _this17 = this;\n if (!this.lineCode) {\n __f__(\"warn\", \"鏈�夋嫨浜х嚎锛氳澶囩偣妫�鍜屼繚鍏荤姸鎬佽缃负鏈仛\", \" at pages/scbg/scbg.vue:998\");\n this.checkedInspection = 0;\n this.checkedMaintenance = 0;\n }\n if (!this.selectedOrder) {\n __f__(\"warn\", \"鏈�夋嫨宸ュ崟锛氶妫�鍜屽贰妫�鐘舵�佽缃负鏈仛\", \" at pages/scbg/scbg.vue:1004\");\n this.checkFirstPass = null;\n this.checkXJ = null;\n }\n __f__(\"log\", this.lineCode, \" at pages/scbg/scbg.vue:1008\");\n __f__(\"log\", this.selectedOrder, \" at pages/scbg/scbg.vue:1009\");\n uni.request({\n url: \"http://192.168.0.107:44380/api/refresh\",\n method: 'POST',\n header: {\n 'Content-Type': 'application/json'\n },\n data: {\n lineNo: this.lineCode,\n orderNo: this.selectedOrder || \"N/A\" // 鏈�夋嫨宸ュ崟鏃朵娇鐢ㄥ崰浣嶇\n },\n\n success: function success(res) {\n if (res.statusCode === 200 && res.data) {\n __f__(\"log\", \"鍒锋柊鎴愬姛锛歕", res.data, \" at pages/scbg/scbg.vue:1022\");\n\n // 瑙f瀽鍚庣杩斿洖鐨勬暟瀛楃姸鎬乗n _this17.checkFirstPass = _this17.mapStatus(res.data.checkFirstPass); // 鏄犲皠棣栨鐘舵�乗n _this17.checkXJ = _this17.mapStatus(res.data.checkXJ); // 鏄犲皠宸℃鐘舵�乗n _this17.checkedInspection = res.data.checkedInspection === 1; // 鐐规锛�1=true, 2=false\n _this17.checkedMaintenance = res.data.checkedMaintenance === 1; // 淇濆吇锛�1=true, 2=false\n __f__(\"log\", \"鍒锋柊鎴愬姛锛氶妫�\", _this17.checkFirstPass, \" at pages/scbg/scbg.vue:1029\");\n __f__(\"log\", \"鍒锋柊鎴愬姛锛氬贰妫�\", _this17.checkXJ, \" at pages/scbg/scbg.vue:1030\");\n uni.showToast({\n title: '鍒锋柊鎴愬姛',\n icon: 'success'\n });\n } else {\n __f__(\"error\", \"鍒锋柊澶辫触锛歕", res, \" at pages/scbg/scbg.vue:1038\");\n uni.showToast({\n title: '鍒锋柊澶辫触锛屾暟鎹紓甯�',\n icon: 'none'\n });\n }\n },\n fail: function fail(err) {\n __f__(\"error\", \"鍒锋柊鎺ュ彛璇锋眰澶辫触锛歕", err, \" at pages/scbg/scbg.vue:1046\");\n uni.showToast({\n title: '鍒锋柊澶辫触锛岀綉缁滃紓甯�',\n icon: 'none'\n });\n }\n });\n\n // 璋冪敤 API 鑾峰彇宸ュ崟璇︽儏\n uni.request({\n url: \"http://192.168.0.107:44380/api/orderDetails?orderNo=\".concat(encodeURIComponent(this.orderNo)),\n // 浣跨敤瀛樺偍鐨刼rderNo\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n __f__(\"log\", 'gongdanxinx', res.data, \" at pages/scbg/scbg.vue:1062\");\n if (res.statusCode === 200) {\n _this17.orderDetails = {\n requirementDoc: res.data.requirementDoc,\n // 闇�姹傚崟鎹甛n productionOrder: res.data.productionOrder,\n // 鐢熶骇璁㈠崟\n orderQuantity: res.data.orderQuantity,\n // 璁㈠崟鏁伴噺\n bzsl: res.data.bzsl,\n // 鎺ㄨ崘鍖呰鏁癨n gdzt: res.data.gdzt,\n // 宸ュ崟鐘舵�乗n producedQuantity: res.data.producedQuantity,\n // 宸茬敓浜ф暟\n itemId: res.data.itemId,\n // 鐗╂枡ID\n itemNo: res.data.itemNO,\n // 鐗╂枡缂栫爜\n itemname: res.data.itemname,\n // 鐗╂枡鍚嶇О\n itemmodel: res.data.itemmodel // 瑙勬牸鍨嬪彿\n };\n // 鏍规嵁 sj 鍜� xj 鐨勫�兼潵璁剧疆棣栨鍜屽贰妫�鐘舵�乗n // 鏍规嵁 sj 鍜� xj 鐨勫�兼潵璁剧疆棣栨鍜屽贰妫�鐘舵�乗n if (res.data.sj === 1) {\n _this17.checkFirstPass = true; // 棣栨鍚堟牸\n } else if (res.data.sj === 2) {\n _this17.checkFirstPass = false; // 棣栨涓嶅悎鏍糪n } else {\n _this17.checkFirstPass = null; // 棣栨鏈仛\n }\n\n if (res.data.xj === 1) {\n _this17.checkXJ = true; // 宸℃鍚堟牸\n } else if (res.data.xj === 2) {\n _this17.checkXJ = false; // 宸℃涓嶅悎鏍糪n } else {\n _this17.checkXJ = null; // 宸℃鏈仛\n }\n\n __f__(\"log\", 'Order details loaded:', _this17.orderDetails, \" at pages/scbg/scbg.vue:1097\");\n } else {\n __f__(\"error\", 'Failed to fetch order details:', res, \" at pages/scbg/scbg.vue:1100\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching order details:', err, \" at pages/scbg/scbg.vue:1104\");\n }\n });\n },\n mapStatus: function mapStatus(status) {\n if (status === 3) {\n return null; // 鏈仛\n } else if (status === 1) {\n return true; // 鍚堟牸\n } else if (status === 2) {\n return false; // 涓嶅悎鏍糪n }\n\n return null; // 榛樿鏈仛\n },\n //寮�宸ュ伐鍗昞n startProduction: function startProduction() {\n if (!this.selectedOrder) {\n uni.showToast({\n title: '璇峰厛閫夋嫨宸ュ崟',\n icon: 'none'\n });\n return;\n }\n uni.request({\n url: 'http://192.168.0.107:44380/api/Inspection/startProduction',\n method: 'POST',\n header: {\n 'Content-Type': 'application/json'\n },\n data: {\n orderNo: this.selectedOrder,\n // 浼犲叆宸ュ崟鍙穃n UserId: this.selectedPerson\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n uni.showToast({\n title: res.data.message,\n icon: 'success'\n });\n } else {\n uni.showToast({\n title: res.data.message || '寮�宸ュけ璐�',\n icon: 'none'\n });\n }\n },\n fail: function fail(err) {\n __f__(\"error\", '寮�宸ヨ姹傚け璐�:', err, \" at pages/scbg/scbg.vue:1154\");\n uni.showToast({\n title: '寮�宸ヨ姹傚け璐�',\n icon: 'none'\n });\n }\n });\n },\n // 鏍煎紡鍖栨棩鏈熷嚱鏁癨n formatDate: function formatDate(date) {\n var year = date.getFullYear();\n var month = String(date.getMonth() + 1).padStart(2, '0');\n var day = String(date.getDate()).padStart(2, '0');\n var hours = String(date.getHours()).padStart(2, '0');\n var minutes = String(date.getMinutes()).padStart(2, '0');\n var seconds = String(date.getSeconds()).padStart(2, '0');\n var milliseconds = String(date.getMilliseconds()).padStart(3, '0'); // 姣\n return \"\".concat(year).concat(month).concat(day).concat(hours).concat(minutes).concat(seconds).concat(milliseconds);\n },\n formatDate2: function formatDate2(date) {\n var year = date.getFullYear();\n var month = String(date.getMonth() + 1).padStart(2, '0');\n var day = String(date.getDate()).padStart(2, '0');\n var hours = String(date.getHours()).padStart(2, '0');\n var minutes = String(date.getMinutes()).padStart(2, '0');\n var seconds = String(date.getSeconds()).padStart(2, '0');\n var milliseconds = String(date.getMilliseconds()).padStart(3, '0'); // 姣\n\n //return `${year}/${month}/${day} ${hours}:${minutes}:${seconds}`; // 浣跨敤缁熶竴鐨勬牸寮忥細YYYY/MM/DD HH:mm:ss\n return \"\".concat(year).concat(month).concat(day).concat(hours).concat(minutes).concat(seconds).concat(milliseconds);\n },\n // 棣栨閫佹鍔熻兘\n sendForFirstInspection: function sendForFirstInspection() {\n var orderNumber = this.selectedOrder; // 浠庣粍浠剁姸鎬佷腑鑾峰彇宸ュ崟鍙穃n __f__(\"log\", 'Sending for first inspection with order number:', orderNumber, \" at pages/scbg/scbg.vue:1190\");\n __f__(\"log\", 'Sending for first inspection with personCode:', this.personCode, \" at pages/scbg/scbg.vue:1191\");\n if (orderNumber.trim()) {\n var requestData = {\n ReleaseNo: orderNumber,\n // 浣跨敤浼犲叆鐨勫伐鍗曞彿\n UserId: this.personCode // 纭繚杩欓噷鏈夊搴旂殑鐢ㄦ埛ID\n };\n\n __f__(\"log\", requestData, \" at pages/scbg/scbg.vue:1199\");\n uni.request({\n url: 'http://192.168.0.107:44380/api/Inspection/firstinspection',\n // 纭繚璇锋眰璺緞姝g‘\n method: 'POST',\n header: {\n 'Content-Type': 'application/json'\n },\n data: requestData,\n // 鍙戦�佽姹傛暟鎹甛n success: function success(res) {\n if (res.statusCode === 200) {\n __f__(\"log\", 'First inspection submitted successfully:', res.data, \" at pages/scbg/scbg.vue:1210\");\n uni.showToast({\n title: '棣栨閫佹鎴愬姛',\n icon: 'success',\n duration: 2000\n });\n } else {\n __f__(\"error\", 'Failed to send for first inspection:', res, \" at pages/scbg/scbg.vue:1217\");\n __f__(\"error\", 'res.data.message:', res.data.message, \" at pages/scbg/scbg.vue:1218\");\n uni.showToast({\n title: res.data.message,\n icon: 'none',\n duration: 2000\n });\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Request failed:', err, \" at pages/scbg/scbg.vue:1227\");\n uni.showToast({\n title: '缃戠粶閿欒',\n icon: 'none',\n duration: 2000\n });\n }\n });\n } else {\n uni.showToast({\n title: '宸ュ崟鍙蜂笉鑳戒负绌�',\n icon: 'none',\n duration: 2000\n });\n }\n },\n // 鎻愪氦鎶ュ伐淇℃伅鐨勬柟娉昞n printBarcode: function printBarcode() {\n var _this18 = this;\n // **鍏堟鏌� USB 杩炴帴鐘舵��**\n if (!UsbModule || !UsbModule.isUsbConnect || !UsbModule.isUsbConnect()) {\n uni.showModal({\n title: \" \".concat(this.networkState),\n content: \"璇锋鏌ユ墦鍗版満杩炴帴\",\n showCancel: false,\n success: function success() {\n _this18.modalVisible = false;\n }\n });\n return; // **USB 杩炴帴澶辫触锛岀洿鎺ヨ繑鍥烇紝闃叉鎵ц鎵撳嵃**\n }\n\n uni.request({\n url: \"http://192.168.0.107:44380/api/persons/\".concat(encodeURIComponent(this.personCode)),\n // 淇敼鍚庣殑璇锋眰璺緞\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n __f__(\"log\", res.data.personnelName, \" at pages/scbg/scbg.vue:1269\");\n _this18.selectedPerson = res.data.personnelName; // 璁剧疆浜哄憳淇℃伅\n __f__(\"log\", 'Person info loaded:', _this18.selectedPerson, \" at pages/scbg/scbg.vue:1271\");\n } else {\n __f__(\"error\", 'Failed to fetch person info:', res, \" at pages/scbg/scbg.vue:1273\");\n }\n },\n fail: function fail(err) {\n uni.showToast({\n title: res,\n icon: 'none',\n duration: 2000\n });\n }\n });\n\n // 绂佺敤鎸夐挳5绉抃n this.isButtonDisabled = true;\n setTimeout(function () {\n _this18.isButtonDisabled = false;\n }, 5000);\n // 鏍¢獙鎶ュ伐鏁癨n if (this.reportedQuantity <= 0 || Number(this.reportedQuantity) + Number(this.orderDetails.producedQuantity) > Number(this.orderDetails.orderQuantity)) {\n uni.showToast({\n title: '鎶ュ伐鏁版棤鏁堟垨瓒呭嚭璁㈠崟鏁伴噺锛岃妫�鏌ャ��',\n icon: 'none',\n duration: 2000\n });\n // 鏄剧ず鑷畾涔夌殑绾㈣壊鑳屾櫙銆佺櫧鑹插瓧浣撶殑鎻愮ず妗哱n // this.$refs.customToast.showToast('鎶ュ伐鏁版棤鏁堟垨瓒呭嚭璁㈠崟鏁伴噺锛岃妫�鏌ャ��');\n\n return;\n }\n\n // 鏍煎紡鍖栧綋鍓嶆椂闂翠负\"骞存湀鏃ユ椂鍒嗙\"鏍煎紡\n var currentTime = new Date();\n var formattedTime = this.formatDate(currentTime);\n // 鏋勯�犺姹傛暟鎹甛n var requestData = {\n orderNo: this.selectedOrder,\n p_person: this.personCode,\n //reportedQuantity: this.reportedQuantity,\n itemId: this.orderDetails.itemId,\n uniqueValue: \"\".concat(this.orderDetails.itemNo, \"-\").concat(formattedTime),\n // 浣跨敤鏍煎紡鍖栧悗鐨勬椂闂碶n //itemCode: this.orderDetails.itemNo, // 鍋囪鐗╂枡缂栫爜涓篿temId\n //itemSpec: '瑙勬牸鍨嬪彿', // 杩欓噷鍙敼鎴愬疄闄呮暟鎹甛n quantity: Number(this.reportedQuantity) // 纭繚鏄暣鏁癨n };\n\n this.logPrintEvent(\"鎵撳嵃鍓峔", \"鎵撳嵃鏉$爜鍓峔", requestData.uniqueValue);\n // 灏� requestData 淇濆瓨鍒� lastRequestData 涓璡n this.lastRequestData = requestData;\n __f__(\"log\", requestData, \" at pages/scbg/scbg.vue:1324\");\n __f__(\"log\", this.selectedPerson, \" at pages/scbg/scbg.vue:1325\");\n try {\n // 璋冪敤鍚庣 API\n uni.request({\n url: \"http://192.168.0.107:44380/api/print\",\n method: 'POST',\n header: {\n 'Content-Type': 'application/json'\n },\n data: requestData,\n success: function success(response) {\n if (response.statusCode === 200) {\n uni.showToast({\n title: '鏁版嵁鎻愪氦鎴愬姛',\n icon: 'success',\n duration: 2000\n });\n var _currentTime = new Date();\n var formattedTime2 = _this18.formatDate2(_currentTime);\n _this18.lastRequestData = requestData.uniqueValue;\n // 灏嗘墦鍗扮殑鏉$爜璁板綍娣诲姞鍒板巻鍙茶褰曚腑\n _this18.historyList.push({\n itemBarcode: requestData.uniqueValue,\n printDate: formattedTime2.toLocaleString(),\n printedBy: _this18.selectedPerson\n });\n //鏄剧ず鐢熶骇鏁版坊鍔燶n _this18.orderDetails.producedQuantity = Number(_this18.orderDetails.producedQuantity) + Number(_this18.reportedQuantity);\n //鏄剧ず鎶ュ伐鏁版坊鍔燶n _this18.dailyCapacity = Number(_this18.dailyCapacity) + Number(_this18.reportedQuantity);\n _this18.logPrintEvent(\"鎵撳嵃鍓峔", \"鎶ュ伐鎴愬姛\", requestData.uniqueValue);\n } else {\n __f__(\"log\", response.data.message, \" at pages/scbg/scbg.vue:1360\");\n uni.showToast({\n title: response.data.message,\n icon: 'none',\n duration: 2000\n });\n __f__(\"error\", \"Print failed:\", response, \" at pages/scbg/scbg.vue:1366\");\n _this18.logPrintEvent(\"鎵撳嵃鍓峔", \"寮傚父涓旇繑鍥瀄", requestData.uniqueValue);\n //鎵撳嵃鏉$爜\n return;\n }\n // **鍏堣褰� \"鎵撳嵃鍓峔" 浜嬩欢**\n _this18.logPrintEvent(\"鎵撳嵃鍓峔", \"鎵撳嵃\", requestData.uniqueValue);\n //鎵撳嵃鏉$爜\n __f__(\"log\", 'tiaoma', requestData.uniqueValue, \" at pages/scbg/scbg.vue:1374\");\n __f__(\"log\", 'gd', _this18.orderDetails.productionOrder, \" at pages/scbg/scbg.vue:1375\");\n __f__(\"log\", 'tiaoma', _this18.selectedOrder, \" at pages/scbg/scbg.vue:1376\");\n __f__(\"log\", 'gys', _this18.orderDetails.requirementDoc, \" at pages/scbg/scbg.vue:1377\");\n __f__(\"log\", 'wlbm', _this18.orderDetails.itemNo, \" at pages/scbg/scbg.vue:1378\");\n __f__(\"log\", 'wlmc', _this18.orderDetails.itemname, \" at pages/scbg/scbg.vue:1379\");\n __f__(\"log\", 'ggxh', _this18.orderDetails.itemmodel, \" at pages/scbg/scbg.vue:1380\");\n __f__(\"log\", 'sl', _this18.reportedQuantity, \" at pages/scbg/scbg.vue:1381\");\n\n // 鎵撳嵃鍐呭鏍峰紡璁剧疆\n var command = tsc.jpPrinter.createNew();\n\n // 璁剧疆瀹藉害 100mm 鍜岄珮搴� 80mm锛堟崲绠楀悗澶х害 799x639 鍍忕礌锛塡n command.setSize(100, 80);\n\n //command.setBackFeed(2.5);\n\n // 澶栨绾挎潯\n command.setCls();\n command.setBox(10, 10, 789, 629); // 澶栨锛岃窛绂婚〉闈㈣竟缂� 10px\n\n // 绗竴閮ㄥ垎锛氭潯鐮併�佸伐鍗曞彿銆佷緵搴斿晢淇℃伅 + 澶т簩缁寸爜\n command.setBar(20, 40, \"128\", 100, 1, 0, 2, requestData.uniqueValue); // 鏉$爜\n command.setText(20, 40, \"TSS24.BF2\", 1, 1, \"鐗╂枡鏉$爜: \");\n command.setText(150, 40, \"TSS24.BF2\", 1, 1, requestData.uniqueValue);\n\n // 宸ュ崟鍙穃n command.setText(20, 100, \"TSS24.BF2\", 1, 1, \"宸ュ崟鍙�: \");\n command.setText(150, 100, \"TSS24.BF2\", 1, 1, _this18.selectedOrder);\n\n // 渚涘簲鍟嗕俊鎭痋n command.setText(20, 160, \"TSS24.BF2\", 1, 1, \"闇�姹傚崟鎹彿: \");\n command.setText(150, 160, \"TSS24.BF2\", 1, 1, _this18.orderDetails.requirementDoc);\n\n // 鍙充晶澶т簩缁寸爜\n command.setQR(550, 100, \"L\", 6, \"A\", requestData.uniqueValue); // 澶т簩缁寸爜\n\n // 绗簩閮ㄥ垎锛氱墿鏂欑紪鐮乗n command.setText(20, 220, \"TSS24.BF2\", 1, 1, \"鐗╂枡缂栫爜: \");\n command.setText(150, 220, \"TSS24.BF2\", 1, 1, _this18.orderDetails.itemNo);\n\n // 绗笁閮ㄥ垎锛氱墿鏂欏悕绉癨n command.setText(20, 280, \"TSS24.BF2\", 1, 1, \"鐗╂枡鍚嶇О: \");\n command.setText(150, 280, \"TSS24.BF2\", 1, 1, _this18.orderDetails.itemname);\n\n // 绗洓閮ㄥ垎锛氭暟閲忎笌闇�姹傚崟鎹彿\n command.setText(20, 340, \"TSS24.BF2\", 1, 1, \"鏁伴噺: \");\n command.setText(120, 340, \"TSS24.BF2\", 1, 1, _this18.reportedQuantity);\n command.setText(200, 340, \"TSS24.BF2\", 1, 1, \"鎶ュ伐浜�: \");\n command.setText(290, 340, \"TSS24.BF2\", 1, 1, _this18.selectedPerson);\n\n // command.setText(290, 340, \"FONT 3\", 1, 1, this.selectedPerson);\n // command.setText(290, 340, \"TSS24.BF2\", 1, 1, encodeURI(this.selectedPerson));\n command.setText(400, 340, \"TSS24.BF2\", 1, 1, \"鎵撳嵃鏃堕棿: \");\n command.setText(530, 340, \"TSS24.BF2\", 1, 1, _this18.formatDate2(new Date()));\n // 绗簲閮ㄥ垎锛氬乏渚т簩缁寸爜 + 瑙勬牸鍨嬪彿\n command.setQR(20, 400, \"L\", 5, \"A\", requestData.uniqueValue); // 宸︿晶浜岀淮鐮乗n command.setText(200, 400, \"TSS24.BF2\", 1, 1, \"瑙勬牸鍨嬪彿: \");\n command.setText(200, 440, \"TSS24.BF2\", 1, 1, _this18.orderDetails.itemmodel);\n command.setText(200, 535, \"TSS24.BF2\", 1, 1, \"鎱堟邯甯傚钂欑數鍣ㄦ湁闄愬叕鍙镐辅娉ㄥ杞﹂棿\");\n command.setText(201, 536, \"TSS24.BF2\", 1, 1, \"鎱堟邯甯傚钂欑數鍣ㄦ湁闄愬叕鍙镐辅娉ㄥ杞﹂棿\");\n // 鎵撳嵃鎸囦护\n command.setPagePrint();\n\n // command.setFeed(30);\n _this18.sendData = command.getData();\n\n // 1. 鎵ц鍙戦�乗n var printResult = _this18.senUSBData();\n\n // 2. 鍒ゆ柇鍙戦�佹槸鍚︽垚鍔焅n if (printResult.success) {\n // 鉁� 鍙戦�佹垚鍔燂紝璁板綍鎵撳嵃鏃ュ織\n _this18.logPrintEvent(\"鎵撳嵃鍚嶾", \"鎵撳嵃\", requestData.uniqueValue);\n } else {\n // 鉂� 鍙戦�佸け璐ワ紝鎻愮ず鐢ㄦ埛锛屼笉璁板綍鏃ュ織\n uni.showToast({\n title: \"鎵撳嵃澶辫触锛屾湭璁板綍鏃ュ織\",\n duration: 2000\n });\n }\n _this18.oldbgs = _this18.reportedQuantity;\n _this18.bgr =\n //浠庢柊鍒锋柊宸ュ崟淇℃伅\n loadOrderDetails();\n //浠庢柊鍒锋柊鍘嗗彶璁板綍\n\n _this18.fetchHistoryRecords(_this18.orderNo);\n },\n fail: function fail(err) {\n __f__(\"error\", \"Error during print request:\", err, \" at pages/scbg/scbg.vue:1471\");\n }\n });\n } catch (err) {\n __f__(\"error\", 'Error during print request:', err, \" at pages/scbg/scbg.vue:1477\");\n }\n },\n // splitTextByWidth(text, maxCharsPerLine) {\n // const lines = [];\n // while (text.length > maxCharsPerLine) {\n // lines.push(text.slice(0, maxCharsPerLine)); // 鎴彇鏈�澶ч暱搴n // text = text.slice(maxCharsPerLine); // 鍓╀笅鐨勭户缁埅鍙朶n // }\n // lines.push(text); // 鏈�鍚庝竴琛孿n // return lines;\n // },\n // 琛ユ墦涓婁竴寮犺褰昞n reprintLast: function reprintLast() {\n var _this19 = this;\n // 绂佺敤鎸夐挳5绉抃n this.isButtonDisabled2 = true;\n setTimeout(function () {\n _this19.isButtonDisabled2 = false;\n }, 5000);\n // **鍏堟鏌� USB 杩炴帴鐘舵��**\n if (!UsbModule || !UsbModule.isUsbConnect || !UsbModule.isUsbConnect()) {\n uni.showModal({\n title: \" \".concat(this.networkState),\n content: \"璇锋鏌ユ墦鍗版満杩炴帴\",\n showCancel: false,\n success: function success() {\n _this19.modalVisible = false;\n }\n });\n //return; // **USB 杩炴帴澶辫触锛岀洿鎺ヨ繑鍥烇紝闃叉鎵ц鎵撳嵃**\n }\n\n uni.request({\n url: \"http://192.168.0.107:44380/api/persons/\".concat(encodeURIComponent(this.personCode)),\n // 淇敼鍚庣殑璇锋眰璺緞\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n __f__(\"log\", res.data.personnelName, \" at pages/scbg/scbg.vue:1518\");\n _this19.selectedPerson = res.data.personnelName; // 璁剧疆浜哄憳淇℃伅\n __f__(\"log\", 'Person info loaded:', _this19.selectedPerson, \" at pages/scbg/scbg.vue:1520\");\n } else {\n __f__(\"error\", 'Failed to fetch person info:', res, \" at pages/scbg/scbg.vue:1522\");\n }\n },\n fail: function fail(err) {\n uni.showToast({\n title: res,\n icon: 'none',\n duration: 2000\n });\n }\n });\n this.selectedPerson = this.lastRequestData.printedBy;\n // 琛ユ墦涓婁竴寮犺褰昞n this.fetchHistoryRecords(this.orderNo);\n if (!this.lastRequestData) {\n uni.showToast({\n title: '娌℃湁鍙ˉ鎵撶殑璁板綍',\n icon: 'none',\n duration: 2000\n });\n return;\n }\n //20250507 鏂板姞璧嬪�煎巻鍙叉潯鐮佹姤宸ヤ汉\n this.selectedPerson = this.lastRequestData.printedBy;\n __f__(\"log\", \"鑰佹潯鐮乗", this.oldbgs, \" at pages/scbg/scbg.vue:1546\");\n // 閲嶆柊鎵撳嵃涓婁竴寮犺褰昞n // async reprintLast() {\n // // 娓呯┖涓婃鐨勬暟鎹紝纭繚鑾峰彇鍒版渶鏂版暟鎹甛n // this.lastRequestData = null;\n // this.bgs = null;\n\n // // 绛夊緟 fetchHistoryRecords 璇锋眰瀹屾垚\n // await this.fetchHistoryRecords(this.orderNo);\n // console.log(\"鍒锋柊\", this.lastRequestData);\n // // 妫�鏌ユ槸鍚︽湁鍘嗗彶璁板綍锛屽鏋滄病鏈夊垯鎻愮ず\n // if (!this.lastRequestData || this.bgs == null) {\n // uni.showToast({\n // title: '娌℃湁鍙ˉ鎵撶殑璁板綍',\n // icon: 'none',\n // duration: 2000\n // });\n // return; // 閫�鍑猴紝閬垮厤缁х画鎵ц鎵撳嵃\n // }\n // **璁板綍 \"琛ユ墦鍓峔" 浜嬩欢**\n this.logPrintEvent(\"鎵撳嵃鍓峔", \"琛ユ墦\", this.lastRequestData);\n // 鎵撳嵃鍐呭鏍峰紡璁剧疆\n var command = tsc.jpPrinter.createNew();\n\n // 璁剧疆瀹藉害 100mm 鍜岄珮搴� 80mm锛堟崲绠楀悗澶х害 799x639 鍍忕礌锛塡n command.setSize(100, 80);\n //command.setBackFeed(2.5);\n // 澶栨绾挎潯\n command.setCls();\n command.setBox(10, 10, 789, 629); // 澶栨锛岃窛绂婚〉闈㈣竟缂� 10px\n\n // 绗竴閮ㄥ垎锛氭潯鐮併�佸伐鍗曞彿銆佷緵搴斿晢淇℃伅 + 澶т簩缁寸爜\n command.setBar(20, 40, \"128\", 100, 1, 0, 2, this.lastRequestData); // 鏉$爜\n command.setText(20, 40, \"TSS24.BF2\", 1, 1, \"鐗╂枡鏉$爜: \");\n command.setText(150, 40, \"TSS24.BF2\", 1, 1, this.lastRequestData);\n\n // 宸ュ崟鍙穃n command.setText(20, 100, \"TSS24.BF2\", 1, 1, \"宸ュ崟鍙�: \");\n command.setText(150, 100, \"TSS24.BF2\", 1, 1, this.selectedOrder);\n\n // 渚涘簲鍟嗕俊鎭痋n command.setText(20, 160, \"TSS24.BF2\", 1, 1, \"闇�姹傚崟鎹彿: \");\n command.setText(150, 160, \"TSS24.BF2\", 1, 1, this.orderDetails.requirementDoc);\n\n // 鍙充晶澶т簩缁寸爜\n command.setQR(550, 100, \"L\", 6, \"A\", this.lastRequestData); // 澶т簩缁寸爜\n\n // 绗簩閮ㄥ垎锛氱墿鏂欑紪鐮乗n command.setText(20, 220, \"TSS24.BF2\", 1, 1, \"鐗╂枡缂栫爜: \");\n command.setText(150, 220, \"TSS24.BF2\", 1, 1, this.orderDetails.itemNo);\n\n // 绗笁閮ㄥ垎锛氱墿鏂欏悕绉癨n command.setText(20, 280, \"TSS24.BF2\", 1, 1, \"鐗╂枡鍚嶇О: \");\n command.setText(150, 280, \"TSS24.BF2\", 1, 1, this.orderDetails.itemname);\n\n // 绗洓閮ㄥ垎锛氭暟閲忎笌闇�姹傚崟鎹彿\n command.setText(20, 340, \"TSS24.BF2\", 1, 1, \"鏁伴噺: \");\n command.setText(120, 340, \"TSS24.BF2\", 1, 1, this.oldbgs);\n command.setText(200, 340, \"TSS24.BF2\", 1, 1, \"鎵撳嵃浜�: \");\n command.setText(290, 340, \"TSS24.BF2\", 1, 1, this.selectedPerson);\n command.setText(400, 340, \"TSS24.BF2\", 1, 1, \"鎵撳嵃鏃堕棿: \");\n command.setText(530, 340, \"TSS24.BF2\", 1, 1, this.formatDate2(new Date()));\n // 绗簲閮ㄥ垎锛氬乏渚т簩缁寸爜 + 瑙勬牸鍨嬪彿\n command.setQR(20, 400, \"L\", 5, \"A\", this.lastRequestData); // 宸︿晶浜岀淮鐮乗n command.setText(200, 400, \"TSS24.BF2\", 1, 1, \"瑙勬牸鍨嬪彿: \");\n command.setText(200, 440, \"TSS24.BF2\", 1, 1, this.orderDetails.itemmodel);\n\n // command.setText(350, 510, \"TSS24.BF2\", 1, 1, \"娉ㄥ杞﹂棿\");\n // command.setText(351, 511, \"TSS24.BF2\", 1, 1, \"娉ㄥ杞﹂棿\");\n command.setText(200, 535, \"TSS24.BF2\", 1, 1, \"鎱堟邯甯傚钂欑數鍣ㄦ湁闄愬叕鍙镐辅娉ㄥ杞﹂棿\");\n command.setText(201, 536, \"TSS24.BF2\", 1, 1, \"鎱堟邯甯傚钂欑數鍣ㄦ湁闄愬叕鍙镐辅娉ㄥ杞﹂棿\");\n\n // 鎵撳嵃鎸囦护\n command.setPagePrint();\n command.setFeed(3);\n this.sendData = command.getData();\n // 1. 鎵ц鍙戦�乗n var printResult = this.senUSBData();\n\n // 2. 鍒ゆ柇鍙戦�佹槸鍚︽垚鍔焅n if (printResult.success) {\n // 鍙戦�佹垚鍔燂紝璁板綍鎵撳嵃鏃ュ織\n this.logPrintEvent(\"鎵撳嵃鍚嶾", \"琛ユ墦\", this.lastRequestData);\n } else {\n // 鍙戦�佸け璐ワ紝鎻愮ず鐢ㄦ埛锛屼笉璁板綍鏃ュ織\n uni.showToast({\n title: \"鎵撳嵃澶辫触锛屾湭璁板綍鏃ュ織\",\n duration: 2000\n });\n }\n F;\n // 鍙戦�佹暟鎹甛n this.senUSBData();\n // **璁板綍 \"琛ユ墦鍚嶾" 浜嬩欢**\n },\n logPrintEvent: function logPrintEvent(eventType, printType, barcodeValue) {\n var requestData = {\n barcode: barcodeValue,\n // 鏉$爜\n worker: this.personCode,\n // 鎶ュ伐浜篭n eventType: eventType,\n // \"鎵撳嵃鍓峔" 鎴� \"鎵撳嵃鍚嶾"\n printType: printType,\n // \"鎵撳嵃\" 鎴� \"琛ユ墦\"\n orderNo: this.selectedOrder,\n // 宸ュ崟鍙穃n line: this.selectedLine,\n version: this.version // 绾夸綋\n };\n\n __f__(\"log\", requestData, \" at pages/scbg/scbg.vue:1658\");\n uni.request({\n url: \"http://192.168.0.107:44380/api/LogPrintEvent/logEvent\",\n method: 'POST',\n header: {\n 'Content-Type': 'application/json'\n },\n data: requestData,\n success: function success(response) {\n if (response.statusCode === 200) {\n __f__(\"log\", \"\".concat(eventType, \" - \").concat(printType, \" \\u8BB0\\u5F55\\u6210\\u529F\"), \" at pages/scbg/scbg.vue:1668\");\n } else {\n __f__(\"error\", \"\".concat(eventType, \" - \").concat(printType, \" \\u8BB0\\u5F55\\u5931\\u8D25:\"), response, \" at pages/scbg/scbg.vue:1670\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", \"璇锋眰澶辫触:\", err, \" at pages/scbg/scbg.vue:1674\");\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 */ 12)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvc2NiZy9zY2JnLnZ1ZSJdLCJuYW1lcyI6WyJ0c2MiLCJyZXF1aXJlIiwiZXNjIiwiVXNiTW9kdWxlIiwidW5pIiwicmVxdWlyZU5hdGl2ZVBsdWdpbiIsImRhdGEiLCJzaG93SGlzdG9yeVBvcHVwIiwic2VsZWN0ZWRQZXJzb24iLCJzZWxlY3RlZExpbmUiLCJzZWxlY3RlZE9yZGVyIiwicGVyc29uT3B0aW9ucyIsInBlcnNvbkxpc3QiLCJwZXJzb25JbmRleCIsInBlcnNvbkNvZGUiLCJsaW5lQ29kZSIsImxpbmVPcHRpb25zIiwibGluZUxpc3QiLCJvcmRlck9wdGlvbnMiLCJvcmRlckxpc3QiLCJoaXN0b3J5UmVjb3JkcyIsImRhaWx5TGlzdCIsInZlcnNpb24iLCJvcmRlckRldGFpbHMiLCJyZXF1aXJlbWVudERvYyIsInByb2R1Y3Rpb25PcmRlciIsIm9yZGVyUXVhbnRpdHkiLCJwcm9kdWNlZFF1YW50aXR5IiwiYnpzbCIsImdkenQiLCJpdGVtSWQiLCJpdGVtTm8iLCJpdGVtbmFtZSIsIml0ZW1tb2RlbCIsImxhc3RSZXF1ZXN0RGF0YSIsImJncyIsInJlcG9ydGVkUXVhbnRpdHkiLCJkYWlseUNhcGFjaXR5IiwiY2hlY2tlZEluc3BlY3Rpb24iLCJjaGVja2VkTWFpbnRlbmFuY2UiLCJjaGVja1hKIiwiY2hlY2tGaXJzdFBhc3MiLCJwcmludERhdGEiLCJTVFJQMSIsIlNUUlAyIiwiU1RSUDMiLCJTVFJQNCIsIlNUUlA1IiwiU1RSUDYiLCJTVFJQNyIsIlNUUlA4IiwiU1RSUDEzIiwiaGlzdG9yeUxpc3QiLCJwZXJzb25OYW1lIiwicGVyc29uSWQiLCJtYXRlcmlhbEluZm8iLCJzZW5kRGF0YSIsImlzQnV0dG9uRGlzYWJsZWQiLCJpc0J1dHRvbkRpc2FibGVkMiIsIm5ldHdvcmtTdGF0ZSIsImRldmljZVN0YXRlIiwibmV0d29ya0NoZWNrSW50ZXJ2YWwiLCJ1c2JDaGVja0ludGVydmFsIiwicmVmcmVzaFRpbWVyIiwib25SZWFkeSIsInNldFRpbWVvdXQiLCJjaGVja1VzYlN0YXR1cyIsIm1vdW50ZWQiLCJzdGFydFVzYkNoZWNrIiwic3RhcnRSYW5kb21SZWZyZXNoIiwibG9hZFBlcnNvbnMiLCJsb2FkTGluZXMiLCJpc1VzYkNvbm5lY3QiLCJwbHVzIiwicnVudGltZSIsImNoZWNrRm9yVXBkYXRlIiwibGlzdGVuTmV0d29ya1N0YXR1cyIsIm1hbnVhbENoZWNrIiwic3RhcnROZXR3b3JrQ2hlY2siLCJ1c2JDb25uZWN0IiwibWV0aG9kcyIsInN0YXJ0QXV0b1VwZGF0ZUNoZWNrIiwidXBkYXRlQ2hlY2tJbnRlcnZhbCIsInNldEludGVydmFsIiwiYmVmb3JlRGVzdHJveSIsInN0b3BBdXRvVXBkYXRlQ2hlY2siLCJ1cGRhdGVDaGVja2VkIiwicmVxdWVzdCIsInVybCIsInN1Y2Nlc3MiLCJyZXMiLCJuZXdWZXJzaW9uIiwiY3VycmVudFZlcnNpb24iLCJkb3dubG9hZE5ld0FwayIsImFwa1VybCIsImZhaWwiLCJlcnIiLCJzaG93VG9hc3QiLCJ0aXRsZSIsImljb24iLCJkdXJhdGlvbiIsImRvd25sb2FkRmlsZSIsInN0YXR1c0NvZGUiLCJpbnN0YWxsIiwidGVtcEZpbGVQYXRoIiwiZm9yY2UiLCJlIiwicmFuZG9tSW50ZXJ2YWwiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJyZWZyZXNoU3RhdHVzIiwib25OZXR3b3JrU3RhdHVzQ2hhbmdlIiwiaXNDb25uZWN0ZWQiLCJjaGVja05ldHdvcmtTdGF0dXMiLCJnZXROZXR3b3JrVHlwZSIsIm5ldHdvcmtUeXBlIiwiRXJyb3IiLCJlcnJvciIsInNlblVTQkRhdGEiLCJoZXhTdHIiLCJBcnJheSIsImZyb20iLCJpIiwibGVuZ3RoIiwic3RyIiwiTnVtYmVyIiwidG9TdHJpbmciLCJwcmludE51bSIsImhleFByaW50RGF0YSIsIm4iLCJ3cml0ZSIsIm1zZyIsInJlc3VsdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJpbml0VXNiRGV2aWNlIiwiaXNDb25uZWN0IiwiZGlzQ29ubmVjdCIsImRpc1VzYkNvbm5lY3QiLCJjcmVhdGVMYWJlbCIsImNvbW1hbmQiLCJqcFByaW50ZXIiLCJjcmVhdGVOZXciLCJzZXRTaXplIiwic2V0R2FwIiwic2V0Q2xzIiwic2V0VGV4dCIsInNldFFSIiwic2V0QmFyIiwic2V0UGFnZVByaW50IiwiZ2V0RGF0YSIsImZldGNoUGVyc29uSW5mbyIsInRyaW0iLCJlbmNvZGVVUklDb21wb25lbnQiLCJtZXRob2QiLCJoZWFkZXIiLCJwZXJzb25uZWxOYW1lIiwiZmV0Y2hMaW5lSW5mbyIsImxpbmVObyIsImxpbmVOYW1lIiwibG9hZE9yZGVycyIsImxvYWREYWlseUNhcGFjaXR5Iiwidmlld0hpc3RvcnkiLCJmZXRjaEhpc3RvcnlSZWNvcmRzIiwiY2xvc2VQb3B1cCIsIm9yZGVyTm8iLCJpdGVtQmFyY29kZSIsIm9sZGJncyIsInF1YW50aXR5IiwibWFwIiwicmVjb3JkIiwicHJpbnREYXRlIiwicHJpbnRlZEJ5IiwiZmlsdGVyIiwicGVyc29uIiwiaXQiLCJ1cGRhdGVQZXJzb25OYW1lIiwiZGV0YWlsIiwidmFsdWUiLCJsaW5lIiwidXBkYXRlTGluZSIsInNlbGVjdGVkSW5kZXgiLCJpc0FycmF5IiwiZGFpbHkiLCJpc19ESiIsImlzX1dIIiwib3JkZXIiLCJsb2FkT3JkZXJEZXRhaWxzIiwic3RhcnRQcm9kdWN0aW9uIiwiaXRlbU5PIiwic2oiLCJ4aiIsIm1hcFN0YXR1cyIsInN0YXR1cyIsIlVzZXJJZCIsIm1lc3NhZ2UiLCJmb3JtYXREYXRlIiwiZGF0ZSIsInllYXIiLCJnZXRGdWxsWWVhciIsIm1vbnRoIiwiU3RyaW5nIiwiZ2V0TW9udGgiLCJwYWRTdGFydCIsImRheSIsImdldERhdGUiLCJob3VycyIsImdldEhvdXJzIiwibWludXRlcyIsImdldE1pbnV0ZXMiLCJzZWNvbmRzIiwiZ2V0U2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsImdldE1pbGxpc2Vjb25kcyIsImZvcm1hdERhdGUyIiwic2VuZEZvckZpcnN0SW5zcGVjdGlvbiIsIm9yZGVyTnVtYmVyIiwicmVxdWVzdERhdGEiLCJSZWxlYXNlTm8iLCJwcmludEJhcmNvZGUiLCJzaG93TW9kYWwiLCJjb250ZW50Iiwic2hvd0NhbmNlbCIsIm1vZGFsVmlzaWJsZSIsImN1cnJlbnRUaW1lIiwiRGF0ZSIsImZvcm1hdHRlZFRpbWUiLCJwX3BlcnNvbiIsInVuaXF1ZVZhbHVlIiwibG9nUHJpbnRFdmVudCIsInJlc3BvbnNlIiwiZm9ybWF0dGVkVGltZTIiLCJwdXNoIiwidG9Mb2NhbGVTdHJpbmciLCJzZXRCb3giLCJwcmludFJlc3VsdCIsImJnciIsInJlcHJpbnRMYXN0Iiwic2V0RmVlZCIsIkYiLCJldmVudFR5cGUiLCJwcmludFR5cGUiLCJiYXJjb2RlVmFsdWUiLCJiYXJjb2RlIiwid29ya2VyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJQSxHQUFHLEdBQUdDLG1CQUFPLENBQUMsd0NBQWdDLENBQUM7QUFDbkQsSUFBSUMsR0FBRyxHQUFHRCxtQkFBTyxDQUFDLHdDQUFnQyxDQUFDO0FBQ25ELElBQUlFLFNBQVMsR0FBR0MsR0FBRyxDQUFDQyxtQkFB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N0IwSyxJQUFJLEVBQUUsSUFBSSxDQUFDM0ssWUFBWTtRQUM3QmEsT0FBTyxFQUFDLElBQUksQ0FBQ0EsT0FBTztNQUNsQixDQUFDOztNQUNKLGFBQVlvTSxXQUFXO01BQ3BCdE4sR0FBRyxDQUFDbUYsT0FBTyxDQUFDO1FBQ1JDLEdBQUcsRUFBRSx1REFBdUQ7UUFDNURtRSxNQUFNLEVBQUUsTUFBTTtRQUNkQyxNQUFNLEVBQUU7VUFDSixjQUFjLEVBQUU7UUFDcEIsQ0FBQztRQUNEdEosSUFBSSxFQUFFb04sV0FBVztRQUNqQmpJLE9BQU8sRUFBRSxpQkFBQzhJLFFBQVEsRUFBSztVQUNuQixJQUFJQSxRQUFRLENBQUNqSSxVQUFVLEtBQUssR0FBRyxFQUFFO1lBQzdCLHVCQUFlMkksU0FBUyxnQkFBTUMsU0FBUztVQUMzQyxDQUFDLE1BQU07WUFDSCx5QkFBaUJELFNBQVMsZ0JBQU1DLFNBQVMsaUNBQVVYLFFBQVE7VUFDL0Q7UUFDSixDQUFDO1FBQ0R4SSxJQUFJLEVBQUUsY0FBQ0MsR0FBRyxFQUFLO1VBQ1gsZUFBYyxPQUFPLEVBQUVBLEdBQUc7UUFDOUI7TUFDSixDQUFDLENBQUM7SUFDTjtFQUNDO0FBQ0QsQ0FBQztBQUFBLDJCIiwiZmlsZSI6IjExLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXHQvLyBpbXBvcnQgSnNCYXJjb2RlIGZyb20gJ2pzYmFyY29kZSc7IC8vIOW8leWFpSBKc0JhcmNvZGUg5bqTXG5cdC8vIGltcG9ydCBwcmludFRlbXBsYXRlIGZyb20gJy4uLy4uL3ByaW50LmpzJzsgLy8g5a+85YWl6Lev5b6E5ZCR5LiK5Lik57qnXG5cdC8vIGltcG9ydCB1dGlsIGZyb20gJ0AvY29tcG9uZW50cy9ray1wcmludGVyL3V0aWxzL3V0aWwuanMnO1xuXHQvLyBpbXBvcnQgKiBhcyBibGVzZGsgZnJvbSAnQC9jb21wb25lbnRzL2trLXByaW50ZXIvdXRpbHMvYmx1ZXRvb2x0aC5qcyc7XG5cdC8vIGltcG9ydCBra1ByaW50ZXIgZnJvbSAnQC9jb21wb25lbnRzL2trLXByaW50ZXIvaW5kZXgudnVlJztcblx0Ly9pbXBvcnQgQ3VzdG9tVG9hc3QgZnJvbSAnLi4vLi4vQ3VzdG9tVG9hc3QvQ3VzdG9tVG9hc3QudnVlJztcblxuXHRsZXQgdHNjID0gcmVxdWlyZSgnLi4vLi4vY29tcG9uZW50cy9ncHJpbnQvdHNjLmpzJylcblx0bGV0IGVzYyA9IHJlcXVpcmUoJy4uLy4uL2NvbXBvbmVudHMvZ3ByaW50L2VzYy5qcycpXG5cdGxldCBVc2JNb2R1bGUgPSB1bmkucmVxdWlyZU5hdGl2ZVBsdWdpbihcImdwLXVzYlwiKVxuXG5cdGV4cG9ydCBkZWZhdWx0IHtcblx0XHRkYXRhKCkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0c2hvd0hpc3RvcnlQb3B1cDogZmFsc2UsIC8vIOaOp+WItuW8ueWHuuahhuaYvuekulxuXHRcdFx0XHRzZWxlY3RlZFBlcnNvbjogJycsXG5cdFx0XHRcdHNlbGVjdGVkTGluZTogJycsXG5cdFx0XHRcdHNlbGVjdGVkT3JkZXI6ICcnLFxuXHRcdFx0XHRwZXJzb25PcHRpb25zOiBbXSxcblx0XHRcdFx0cGVyc29uTGlzdDogW10sIC8vIOWtmOWCqOS7juWQjuerr+iOt+WPlueahOS6uuWRmOaVsOaNrlxuXHRcdFx0XHRwZXJzb25JbmRleDogLTEsXG5cdFx0XHRcdHBlcnNvbkNvZGU6ICcnLCAvL+S6uuWRmOe8lueggVxuXHRcdFx0XHRsaW5lQ29kZTogJycsIC8v5Lqn57q/57yW56CBXG5cdFx0XHRcdGxpbmVPcHRpb25zOiBbXSwgLy8g5a2Y5YKo5Lqn57q/5pWw5o2uXG5cdFx0XHRcdGxpbmVMaXN0OiBbXSwgLy8g5a2Y5YKo5LuO5ZCO56uv6I635Y+W55qE5Lqn57q/5pWw5o2uXG5cdFx0XHRcdG9yZGVyT3B0aW9uczogW10sIC8vIOWtmOWCqOW3peWNleaVsOaNrlxuXHRcdFx0XHRvcmRlckxpc3Q6IFtdLCAvLyDlrZjlgqjku47lkI7nq6/ojrflj5bnmoTlt6XljZXmlbDmja5cblx0XHRcdFx0aGlzdG9yeVJlY29yZHM6IFtdLCAvLyDnlKjkuo7lvLnnqpfkuK3mmL7npLrnmoTljoblj7LmiZPljbDorrDlvZVcblx0XHRcdFx0ZGFpbHlMaXN0OiBbXSxcblx0XHRcdFx0dmVyc2lvbjogJzEuMC4wJywgLy8g6buY6K6k5YC877yM5aaC5p6c5peg5rOV6I635Y+W5YiZ5pi+56S65q2k5YC8XG5cdFx0XHRcdG9yZGVyRGV0YWlsczoge1xuXHRcdFx0XHRcdHJlcXVpcmVtZW50RG9jOiAnJywgLy8g6ZyA5rGC5Y2V5o2uXG5cdFx0XHRcdFx0cHJvZHVjdGlvbk9yZGVyOiAnJywgLy8g55Sf5Lqn6K6i5Y2VXG5cdFx0XHRcdFx0b3JkZXJRdWFudGl0eTogJycsIC8vIOiuouWNleaVsOmHj1xuXHRcdFx0XHRcdHByb2R1Y2VkUXVhbnRpdHk6ICcnLCAvLyDlt7LnlJ/kuqfmlbBcblx0XHRcdFx0XHRienNsOiAnJywgLy8g5o6o6I2Q5YyF6KOF5pWwXG5cdFx0XHRcdFx0Z2R6dDonJyxcblx0XHRcdFx0XHRpdGVtSWQ6ICcnLCAvLyDnianmlplJRFxuXHRcdFx0XHRcdGl0ZW1ObzogJycsIC8vIOeJqeaWmee8lueggVxuXHRcdFx0XHRcdGl0ZW1uYW1lOiAnJywgLy8g54mp5paZ5ZCN56ewXG5cdFx0XHRcdFx0aXRlbW1vZGVsOiAnJyAvLyDop4TmoLzlnovlj7dcblx0XHRcdFx0fSxcblx0XHRcdFx0bGFzdFJlcXVlc3REYXRhOiBudWxsLCAvLyDnlKjkuo7kv53lrZjmnIDlkI7kuIDmrKHmiZPljbDnmoQgcmVxdWVzdERhdGFcblx0XHRcdFx0YmdzOiBudWxsLFxuXHRcdFx0XHRyZXBvcnRlZFF1YW50aXR5OiAnJyxcblx0XHRcdFx0ZGFpbHlDYXBhY2l0eTogJzAnLCAvLyDmr4/ml6Xkuqfog71cblx0XHRcdFx0Y2hlY2tlZEluc3BlY3Rpb246IG51bGwsIC8vIOm7mOiupOS4uuacqueCueajgFxuXHRcdFx0XHRjaGVja2VkTWFpbnRlbmFuY2U6IG51bGwsIC8vIOm7mOiupOS4uuacque7tOaKpFxuXHRcdFx0XHRjaGVja1hKOiBudWxsLFxuXHRcdFx0XHRjaGVja0ZpcnN0UGFzczogbnVsbCxcblxuXHRcdFx0XHRwcmludERhdGE6IHtcblx0XHRcdFx0XHRTVFJQMTogXCIwMDFcIixcblx0XHRcdFx0XHRTVFJQMjogXCLkvpvlupTllYZBXCIsXG5cdFx0XHRcdFx0U1RSUDM6IFwi54mp5paZ57yW56CBMTIzNDVcIixcblx0XHRcdFx0XHRTVFJQNDogXCLnianmlpnlkI3np7BBQkNcIixcblx0XHRcdFx0XHRTVFJQNTogXCIxMDBcIixcblx0XHRcdFx0XHRTVFJQNjogXCIyMDI0LTA5LTExXCIsXG5cdFx0XHRcdFx0U1RSUDc6IFwi6KeE5qC85Z6L5Y+35o+P6L+wXCIsXG5cdFx0XHRcdFx0U1RSUDg6IFwi5p2h56CB5YaF5a65XCIsXG5cdFx0XHRcdFx0U1RSUDEzOiBcIumcgOaxguWNleaNrjEyM1wiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGhpc3RvcnlMaXN0OiBbXSwgLy8g5a2Y5YKo5Y6G5Y+y5omT5Y2w6K6w5b2VXG5cdFx0XHRcdHBlcnNvbk5hbWU6ICcnLCAvLyDnlKjkuo7mmL7npLrpgInkuK3nmoTkurrlkZjlkI3np7Bcblx0XHRcdFx0cGVyc29uSWQ6IDAsXG5cdFx0XHRcdG1hdGVyaWFsSW5mbzoge30sIC8vIOWtmOWCqOeJqeaWmeS/oeaBr1xuXHRcdFx0XHRzZW5kRGF0YTogJycsXG5cdFx0XHRcdGlzQnV0dG9uRGlzYWJsZWQ6IGZhbHNlLCAvLyDmjqfliLbmjInpkq7nirbmgIFcblx0XHRcdFx0aXNCdXR0b25EaXNhYmxlZDI6IGZhbHNlLCAvLyDmjqfliLbmjInpkq7nirbmgIFcblx0XHRcdFx0bmV0d29ya1N0YXRlOiBcIuajgOa1i+S4rS4uLlwiLFxuXHRcdFx0XHRkZXZpY2VTdGF0ZTogXCLmo4DmtYvkuK0uLi5cIixcblx0XHRcdFx0bmV0d29ya0NoZWNrSW50ZXJ2YWw6IG51bGwsXG5cdFx0XHRcdHVzYkNoZWNrSW50ZXJ2YWw6IG51bGwsXG5cdFx0XHRcdHJlZnJlc2hUaW1lcjogbnVsbCwgLy8g5a2Y5YKo5a6a5pe25ZmoSURcblx0XHRcdFx0bmV0d29ya1N0YXRlOiBcIuajgOa1i+S4rS4uLlwiLFxuXHRcdFx0XHRkZXZpY2VTdGF0ZTogXCLmo4DmtYvkuK0uLi5cIixcblx0XHRcdFx0bmV0d29ya01vZGFsVmlzaWJsZTogZmFsc2UsIC8vIOaOp+WItue9kee7nOW8ueeql+aYr+WQpuW3suaYvuekulxuXHRcdFx0XHR1c2JNb2RhbFZpc2libGU6IGZhbHNlICwvLyDmjqfliLYgVVNCIOW8ueeql+aYr+WQpuW3suaYvuekulxuXHRcdFx0XHQgdXBkYXRlQ2hlY2tlZDogZmFsc2UsXG5cdFx0XHR9O1xuXHRcdH0sXG5cdFx0Ly8gY29tcG9uZW50czp7XG5cdFx0Ly8gXHRra1ByaW50ZXJcblx0XHQvLyB9LFxuXHRcdG9uUmVhZHkoKSB7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0dGhpcy5jaGVja1VzYlN0YXR1cygpOyAvLyDlu7bov5/mo4DmtYsgVVNCIOeKtuaAge+8jOmBv+WFjeWIneWni+WMluacquWujOaIkFxuXHRcdFx0fSwgMTAwMCk7XG5cdFx0fSxcblxuXHRcdG1vdW50ZWQoKSB7XG5cdFx0XHR0aGlzLnN0YXJ0VXNiQ2hlY2soKTsgLy8g5a6a5pe25qOA5p+lIFVTQiDov57mjqXnirbmgIFcblx0XHRcdHRoaXMuc3RhcnRSYW5kb21SZWZyZXNoKCk7IC8vIOi/m+WFpemhtemdouW8gOWni+maj+acuuWIt+aWsFxuXHRcdFx0dGhpcy5sb2FkUGVyc29ucygpOyAvLyDlnKjnu4Tku7bmjILovb3ml7bliqDovb3kurrlkZjkv6Hmga9cblx0XHRcdHRoaXMubG9hZExpbmVzKCk7IC8vIOWcqOe7hOS7tuaMgui9veaXtuWKoOi9veS6p+e6v+S/oeaBryAgXHRcdFxuXHRcdFx0Y29uc29sZS5sb2coXCLpobXpnaLliqDovb3vvIzlvIDlp4vmo4DmtYsgVVNCIOWSjOe9kee7nC4uLlwiKTtcblx0XHRcdGNvbnNvbGUubG9nKFwiVXNiTW9kdWxlOlwiLCBVc2JNb2R1bGUpOyAvLyDmiZPljbAgVXNiTW9kdWxlIOaYr+WQpuWPr+eUqFxuXHRcdFx0Y29uc29sZS5sb2coXCJVc2JNb2R1bGUuaXNVc2JDb25uZWN0OlwiLCBVc2JNb2R1bGU/LmlzVXNiQ29ubmVjdCk7IC8vIOaJk+WNsOaWueazleaYr+WQpuWtmOWcqFxuIGlmICh0eXBlb2YgcGx1cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0aGlzLnZlcnNpb24gPSBwbHVzLnJ1bnRpbWUudmVyc2lvbjtcbiAgfVxuXG5cdFx0XHR0aGlzLmNoZWNrRm9yVXBkYXRlKCk7IC8vIOWQr+WKqOaXtuajgOafpeeJiOacrOabtOaWsFxuXHRcdFx0Ly90aGlzLnN0YXJ0QXV0b1VwZGF0ZUNoZWNrKCk7IC8vIOW8gOWni+WumuaXtuajgOafpeeJiOacrOabtOaWsFxuXHRcdFx0dGhpcy5saXN0ZW5OZXR3b3JrU3RhdHVzKCk7IC8vIOWunuaXtuebkeWQrOe9kee7nOWPmOWMllxuXG5cdFx0XHR0aGlzLm1hbnVhbENoZWNrKCk7IC8vIOi/m+WFpemhtemdouWFiOajgOa1i+S4gOasoVxuXHRcdFx0dGhpcy5zdGFydE5ldHdvcmtDaGVjaygpOyAvLyDlrprml7bmo4Dmn6XnvZHnu5znirbmgIEgXG5cblx0XHRcdHRoaXMudXNiQ29ubmVjdCgpO1xuXG5cblx0XHR9LFxuXHRcdG1ldGhvZHM6IHtcblx0XHRcdC8vIOW8gOWQr+iHquWKqOabtOaWsOajgOa1i1xuXHRcdFx0c3RhcnRBdXRvVXBkYXRlQ2hlY2soKSB7XG5cdFx0XHRcdHRoaXMudXBkYXRlQ2hlY2tJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmNoZWNrRm9yVXBkYXRlKCk7IC8vIOavj+malOS4gOauteaXtumXtOajgOafpeabtOaWsFxuXHRcdFx0XHR9LCAxICogNjAgKiAxMDAwKTsgLy8gMTAg5YiG6ZKf6Ieq5Yqo5qOA5rWL5LiA5qyhXG5cdFx0XHR9LFxuXHRcdFx0YmVmb3JlRGVzdHJveSgpIHtcblx0XHRcdFx0dGhpcy5zdG9wQXV0b1VwZGF0ZUNoZWNrKCk7IC8vIOmhtemdoumUgOavgeaXtuWBnOatouWumuaXtuWZqO+8jOmYsuatouWGheWtmOazhOa8j1xuXHRcdFx0fSxcblx0XHRcdGNoZWNrRm9yVXBkYXRlKCkge1xuXHRcdFx0XHQgIGlmICh0aGlzLnVwZGF0ZUNoZWNrZWQpIHJldHVybjsgXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IFwiaHR0cDovLzE5Mi4xNjguMC4xMDc6MTAwODYvdXBkYXRlLmpzb25cIiwgLy8g5L2g55qE5pyN5Yqh5ZmoIEpTT04g5paH5Lu25Zyw5Z2AXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IG5ld1ZlcnNpb24gPSByZXMuZGF0YS52ZXJzaW9uO1xuXHRcdFx0XHRcdFx0bGV0IGN1cnJlbnRWZXJzaW9uID0gcGx1cy5ydW50aW1lLnZlcnNpb247IC8vIOiOt+WPluW9k+WJjSBBUEsg54mI5pys5Y+3XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuW9k+WJjeeJiOacrDpcIiwgY3VycmVudFZlcnNpb24sIFwi5pyA5paw54mI5pysOlwiLCBuZXdWZXJzaW9uKTtcblxuXHRcdFx0XHRcdFx0aWYgKG5ld1ZlcnNpb24gPiBjdXJyZW50VmVyc2lvbikge1xuXHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0Ly8gXHR0aXRsZTogXCLlj5HnjrDmlrDniYjmnKxcIixcblx0XHRcdFx0XHRcdFx0Ly8gXHRjb250ZW50OiBcIuaYr+WQpuS4i+i9veacgOaWsOeJiOacrD9cIixcblx0XHRcdFx0XHRcdFx0Ly8gXHRzdWNjZXNzOiAobW9kYWxSZXMpID0+IHtcblx0XHRcdFx0XHRcdFx0Ly8gXHRcdGlmIChtb2RhbFJlcy5jb25maXJtKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFx0XHRcdHRoaXMuZG93bmxvYWROZXdBcGsocmVzLmRhdGEuYXBrVXJsKTtcblx0XHRcdFx0XHRcdFx0Ly8gXHRcdH1cblx0XHRcdFx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdFx0XHRcdC8vIH0pO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRvd25sb2FkTmV3QXBrKHJlcy5kYXRhLmFwa1VybCk7XG5cdFx0XHRcdFx0XHRcdCB0aGlzLnVwZGF0ZUNoZWNrZWQgPSB0cnVlOyAvLyDmoIforrDmm7TmlrDlt7Lmo4Dmn6Xov4dcblx0XHRcdFx0XHRcdFx0Ly8gICAgICAvLyDlpoLmnpzmnInmlrDniYjmnKzvvIzlvIDlp4vkuIvovb1cblx0XHRcdFx0XHRcdCAgLy9kb3dubG9hZChyZXMuZGF0YS5hcGtVcmwpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIuabtOaWsOajgOafpeWksei0pTpcIiwgZXJyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcbiBcblxuXHRcdFx0ZG93bmxvYWROZXdBcGsoYXBrVXJsKSB7XG5cdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuW8gOWni+S4i+i9veabtOaWsC4uLlwiLFxuXHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHVuaS5kb3dubG9hZEZpbGUoe1xuXHRcdFx0XHRcdHVybDogYXBrVXJsLFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdHBsdXMucnVudGltZS5pbnN0YWxsKHJlcy50ZW1wRmlsZVBhdGgsIHtcblx0XHRcdFx0XHRcdFx0XHRmb3JjZTogdHJ1ZVxuXHRcdFx0XHRcdFx0XHR9LCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuWuieijheaIkOWKn++8jOmHjeWQr+W6lOeUqFwiKTtcblx0XHRcdFx0XHRcdFx0XHQvL3BsdXMucnVudGltZS5yZXN0YXJ0KCk7XG5cdFx0XHRcdFx0XHRcdFx0ICAgLy9wbHVzLnJ1bnRpbWUucXVpdCgpO1xuXHRcdFx0XHRcdFx0XHRcdC8vIHVuaS5uYXZpZ2F0ZUJhY2soKVxuXHRcdFx0XHRcdFx0XHR9LCBmdW5jdGlvbihlKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIuWuieijheWksei0pTpcIiwgZSk7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIuS4i+i9veWksei0pTpcIiwgZXJyKTtcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLkuIvovb3lpLHotKXvvIzor7fmo4Dmn6XnvZHnu5xcIixcblx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdC8vIOWQr+WKqOmaj+acuuWIt+aWsFxuXHRcdFx0c3RhcnRSYW5kb21SZWZyZXNoKCkge1xuXHRcdFx0XHRjb25zdCByYW5kb21JbnRlcnZhbCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICgzMDAwMCAtIDEwMDAwICsgMSkpICsgMTAwMDA7IC8vIDEwfjMw56eS6ZqP5py65pe26Ze0XG5cdFx0XHRcdGNvbnNvbGUubG9nKGDkuIvmrKHliLfmlrDlsIblnKggJHtyYW5kb21JbnRlcnZhbCAvIDEwMDB9IOenkuWQjuaJp+ihjGApO1xuXG5cdFx0XHRcdHRoaXMucmVmcmVzaFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5yZWZyZXNoU3RhdHVzKCk7IC8vIOaJp+ihjOWIt+aWsFxuXHRcdFx0XHRcdHRoaXMuc3RhcnRSYW5kb21SZWZyZXNoKCk7IC8vIOmAkuW9kuiwg+eUqO+8jOehruS/neaMgee7reWIt+aWsFxuXHRcdFx0XHR9LCByYW5kb21JbnRlcnZhbCk7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gMS4g5a6e5pe255uR5ZCs572R57uc5Y+Y5YyWXG5cdFx0XHRsaXN0ZW5OZXR3b3JrU3RhdHVzKCkge1xuXHRcdFx0XHR1bmkub25OZXR3b3JrU3RhdHVzQ2hhbmdlKChyZXMpID0+IHtcblx0XHRcdFx0XHR0aGlzLm5ldHdvcmtTdGF0ZSA9IHJlcy5pc0Nvbm5lY3RlZCA/IFwi572R57uc6L+e5o6l5q2j5bi4XCIgOiBcIuaXoOe9kee7nOi/nuaOpVwiO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFwi572R57uc54q25oCB5Y+Y5pu0OlwiLCB0aGlzLm5ldHdvcmtTdGF0ZSk7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogYOe9kee7nOeKtuaAgTogJHt0aGlzLm5ldHdvcmtTdGF0ZX1gLFxuXHRcdFx0XHRcdFx0ZHVyYXRpb246IDE1MDBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyAyLiDmr48gNSDnp5Lmo4Dmn6XnvZHnu5znirbmgIFcblx0XHRcdGNoZWNrTmV0d29ya1N0YXR1cygpIHtcblx0XHRcdFx0dW5pLmdldE5ldHdvcmtUeXBlKHtcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLm5ldHdvcmtTdGF0ZSA9IHJlcy5uZXR3b3JrVHlwZSAhPT0gXCJub25lXCIgPyBcIue9kee7nOi/nuaOpeato+W4uFwiIDogXCLml6DnvZHnu5zov57mjqVcIjtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKFwi572R57uc5qOA5rWL57uT5p6cOlwiLCB0aGlzLm5ldHdvcmtTdGF0ZSk7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5uZXR3b3JrU3RhdGUgPT0gXCLml6DnvZHnu5zov57mjqVcIikge1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogYCAke3RoaXMubmV0d29ya1N0YXRlfWAsXG5cdFx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDE1MDAsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdC8vIHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHQvLyAgICAgICAgIHRpdGxlOiBgICR7dGhpcy5uZXR3b3JrU3RhdGV9YCxcblx0XHRcdFx0XHRcdFx0Ly8gICAgICAgICBjb250ZW50OiBcIuivt+ajgOafpee9kee7nCDov57mjqXov57mjqVcIixcblx0XHRcdFx0XHRcdFx0Ly8gICAgICAgICBzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Ly8gXHRzdWNjZXNzOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIFx0ICAgICAgICB0aGlzLm1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHRcdC8vICAgICB9KTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXG5cdFx0XHRzdGFydE5ldHdvcmtDaGVjaygpIHtcblx0XHRcdFx0dGhpcy5uZXR3b3JrQ2hlY2tJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmNoZWNrTmV0d29ya1N0YXR1cygpO1xuXHRcdFx0XHR9LCA1MDAwKTtcblx0XHRcdH0sXG5cblx0XHRcdC8vIDMuIOavjyA1IOenkuajgOafpSBVU0Ig6L+e5o6l54q25oCBXG5cdFx0XHRjaGVja1VzYlN0YXR1cygpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRpZiAoIVVzYk1vZHVsZSB8fCAhVXNiTW9kdWxlLmlzVXNiQ29ubmVjdCkge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiVXNiTW9kdWxlIOacquWumuS5ieaIluaWueazleS4jeWtmOWcqFwiKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRsZXQgcmVzID0gVXNiTW9kdWxlLmlzVXNiQ29ubmVjdCgpO1xuXHRcdFx0XHRcdHRoaXMuZGV2aWNlU3RhdGUgPSByZXMgPyBcIuaJk+WNsOacuiDov57mjqXmraPluLhcIiA6IFwi5omT5Y2w5py6IOi/nuaOpeWksei0pVwiO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFwi5omT5Y2w5py6IOajgOa1i+e7k+aenDpcIiwgdGhpcy5kZXZpY2VTdGF0ZSk7XG5cdFx0XHRcdFx0aWYgKHRoaXMuZGV2aWNlU3RhdGUgPT0gXCLmiZPljbDmnLog6L+e5o6l5aSx6LSlXCIpIHtcblxuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBgICR7dGhpcy5kZXZpY2VTdGF0ZX1gLFxuXHRcdFx0XHRcdFx0XHRkdXJhdGlvbjogMTUwMCxcblx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0dGhpcy51c2JDb25uZWN0KCk7XG5cdFx0XHRcdFx0XHQvLyB1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdC8vICAgICAgICAgdGl0bGU6IGAgJHt0aGlzLmRldmljZVN0YXRlfWAsXG5cdFx0XHRcdFx0XHQvLyAgICAgICAgIGNvbnRlbnQ6IFwi6K+35qOA5p+lVVNCIOi/nuaOpei/nuaOpVwiLFxuXHRcdFx0XHRcdFx0Ly8gICAgICAgICBzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdC8vIFx0IHN1Y2Nlc3M6ICgpID0+IHtcblx0XHRcdFx0XHRcdC8vIFx0ICAgICAgICAgdGhpcy5tb2RhbFZpc2libGUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdC8vIFx0IFx0XHRcdHRoaXMudXNiQ29ubmVjdCgpO1xuXHRcdFx0XHRcdFx0Ly8gXHQgICAgICAgIH1cblx0XHRcdFx0XHRcdC8vICAgICB9KTtcblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIuaJk+WNsOacuiDmo4DmtYvplJnor686XCIsIGVycm9yKTtcblx0XHRcdFx0XHR0aGlzLmRldmljZVN0YXRlID0gXCLmiZPljbDmnLog5qOA5rWL5aSx6LSlXCI7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLmiZPljbDmnLog5qOA5rWL5aSx6LSl77yM6K+35qOA5p+l5o+S5Lu2XCIsXG5cdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMCxcblx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Ly8gdW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0Ly8gICAgICAgICB0aXRsZTogYCAke3RoaXMuZGV2aWNlU3RhdGV9YCxcblx0XHRcdFx0XHQvLyAgICAgICAgIGNvbnRlbnQ6IFwi6K+35qOA5p+lVVNCIOi/nuaOpei/nuaOpVwiLFxuXHRcdFx0XHRcdC8vICAgICAgICAgc2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Ly8gXHQgc3VjY2VzczogKCkgPT4ge1xuXHRcdFx0XHRcdC8vIFx0ICAgICAgICAgdGhpcy5tb2RhbFZpc2libGUgPSBmYWxzZTtcblx0XHRcdFx0XHQvLyBcdFx0XHQgICAgdGhpcy51c2JDb25uZWN0KCk7XG5cdFx0XHRcdFx0Ly8gXHQgICAgICAgIH1cblx0XHRcdFx0XHQvLyAgICAgfSk7XG5cdFx0XHRcdFx0dGhpcy51c2JDb25uZWN0KCk7XG5cblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0c3RhcnRVc2JDaGVjaygpIHtcblx0XHRcdFx0dGhpcy51c2JDaGVja0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuY2hlY2tVc2JTdGF0dXMoKTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuWumuaXtuWQr+WKqOaIkOWKn1wiKVxuXHRcdFx0XHR9LCA1MDAwKTtcblx0XHRcdH0sXG5cblx0XHRcdC8vIDQuIOaJi+WKqOinpuWPkeajgOa1i1xuXHRcdFx0bWFudWFsQ2hlY2soKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwi5omL5Yqo5qOA5rWL5omn6KGMLi4uXCIpO1xuXHRcdFx0XHR0aGlzLmNoZWNrTmV0d29ya1N0YXR1cygpO1xuXHRcdFx0XHR0aGlzLmNoZWNrVXNiU3RhdHVzKCk7XG5cdFx0XHR9LFxuXG5cblxuXG5cdFx0XHRzZW5VU0JEYXRhKCkge1xuXHRcdFx0XHRpZiAodGhpcy5zZW5kRGF0YSA9PSBudWxsKSB7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLor7flhYjnlJ/miJDmjIfku6RcIixcblx0XHRcdFx0XHRcdGR1cmF0aW9uOiAxNTAwXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgaGV4U3RyID0gJydcblx0XHRcdFx0dmFyIGRhdGEgPSBBcnJheS5mcm9tKHRoaXMuc2VuZERhdGEpXG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBzdHIgPSBOdW1iZXIoZGF0YVtpXSkudG9TdHJpbmcoMTYpXG5cdFx0XHRcdFx0c3RyID0gc3RyLmxlbmd0aCA9PSAxID8gXCIwXCIgKyBzdHIgOiBzdHJcblx0XHRcdFx0XHRoZXhTdHIgKz0gc3RyXG5cdFx0XHRcdH1cblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhoZXhTdHIpXG5cdFx0XHRcdHZhciBwcmludE51bSA9IDEgLy8g5omT5Y2w5qyh5pWwXG5cdFx0XHRcdHZhciBoZXhQcmludERhdGEgPSAnJ1xuXHRcdFx0XHRmb3IgKHZhciBuID0gMDsgbiA8IHByaW50TnVtOyBuKyspIHtcblx0XHRcdFx0XHRoZXhQcmludERhdGEgKz0gaGV4U3RyXG5cdFx0XHRcdH1cblx0XHRcdFx0bGV0IHJlcyA9IFVzYk1vZHVsZS53cml0ZShoZXhQcmludERhdGEpXG5cdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdHRpdGxlOiByZXMubXNnLFxuXHRcdFx0XHRcdGR1cmF0aW9uOiAxNTAwXG5cdFx0XHRcdH0pXG5cdFx0XHRcdHRoaXMucmVzdWx0ID0gJ+WPkemAgemVv+W6pu+8micgKyBoZXhQcmludERhdGEubGVuZ3RoICsgXCLvvJvov5Tlm57nu5PmnpzvvJpcIiArIEpTT04uc3RyaW5naWZ5KHJlcylcblx0XHRcdH0sXG5cdFx0XHR1c2JDb25uZWN0KCkge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhcIjExMVwiLCBVc2JNb2R1bGUpXG5cdFx0XHRcdGxldCByZXMgPSBVc2JNb2R1bGUuaW5pdFVzYkRldmljZSgpO1xuXHRcdFx0XHRpZiAocmVzKSB7XG5cdFx0XHRcdFx0dGhpcy5kZXZpY2VTdGF0ZSA9IFwi5omT5Y2w5py6IOi/nuaOpeato+W4uFwiXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5kZXZpY2VTdGF0ZSA9IFwi5omT5Y2w5py6IOi/nuaOpeWksei0pVwiXG5cdFx0XHRcdH1cblx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuZGV2aWNlU3RhdGUsXG5cdFx0XHRcdFx0ZHVyYXRpb246IDE1MDBcblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHRpc0Nvbm5lY3QoKSB7XG5cdFx0XHRcdGxldCByZXMgPSBVc2JNb2R1bGUuaXNVc2JDb25uZWN0KCk7XG5cdFx0XHRcdGlmIChyZXMpIHtcblx0XHRcdFx0XHR0aGlzLmRldmljZVN0YXRlID0gXCLpk77mjqXnirbmgIHmraPluLhcIlxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuZGV2aWNlU3RhdGUgPSBcIumTvuaOpeeKtuaAgeWksei0pVwiXG5cdFx0XHRcdH1cblx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuZGV2aWNlU3RhdGUsXG5cdFx0XHRcdFx0ZHVyYXRpb246IDE1MDBcblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHRkaXNDb25uZWN0KCkge1xuXHRcdFx0XHRsZXQgcmVzID0gVXNiTW9kdWxlLmRpc1VzYkNvbm5lY3QoKTtcblx0XHRcdFx0aWYgKHJlcykge1xuXHRcdFx0XHRcdHRoaXMuZGV2aWNlU3RhdGUgPSBcIlwiXG5cdFx0XHRcdH1cblx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5pat5byA6L+e5o6l5oiQ5YqfXCIsXG5cdFx0XHRcdFx0ZHVyYXRpb246IDE1MDBcblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cblx0XHRcdGNyZWF0ZUxhYmVsKCkge1xuXHRcdFx0XHR2YXIgY29tbWFuZCA9IHRzYy5qcFByaW50ZXIuY3JlYXRlTmV3KClcblx0XHRcdFx0Y29tbWFuZC5zZXRTaXplKDQwLCAzMClcblx0XHRcdFx0Y29tbWFuZC5zZXRHYXAoMilcblx0XHRcdFx0Y29tbWFuZC5zZXRDbHMoKVxuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoNTAsIDEwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuaJk+WNsOa1i+ivlVwiKSAvLyDmlofmnKxcblx0XHRcdFx0Y29tbWFuZC5zZXRRUig1MCwgNTAsIFwiTFwiLCA1LCBcIkFcIiwgXCJ3d3cucG9zY29tLmNuXCIpIC8vIOS6jOe7tOeggVxuXHRcdFx0XHRjb21tYW5kLnNldEJhcig1MCwgMTgwLCBcIjEyOFwiLCA2NCwgMSwgMiwgNCwgXCIyMDA5MDIxMjU0MTBcIikgLy8g5p2h56CBXG5cdFx0XHRcdGNvbW1hbmQuc2V0UGFnZVByaW50KClcblx0XHRcdFx0dGhpcy5zZW5kRGF0YSA9IGNvbW1hbmQuZ2V0RGF0YSgpO1xuXHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHR0aXRsZTogJ+agh+etvuaMh+S7pOeUn+aIkOaIkOWKnycsXG5cdFx0XHRcdFx0ZHVyYXRpb246IDE1MDBcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gb25QcmludChvcHQpe1xuXHRcdFx0Ly8gXHRsZXQgc3RyQ21kID1ibGVzZGsuQ3JlYXRDUENMUGFnZSg1NjAsNTAwLDEsMCk7ICBcblx0XHRcdC8vIFx0c3RyQ21kICs9IGJsZXNkay5hZGRDUENMTGluZSgwLDIxMCw1NjAsMjEwLDMpO1xuXHRcdFx0Ly8gXHRzdHJDbWQgKz0gYmxlc2RrLmFkZENQQ0xUZXh0KDEwLDAsJzQnLCczJywwLCc4LjE0Jyk7XG5cdFx0XHQvLyBcdHN0ckNtZCArPSBibGVzZGsuYWRkQ1BDTEJhckNvZGUoMjcwLDAsJzEyOCcsODAsMCwxLDEsJzAwMDUxJyk7XG5cdFx0XHQvLyBcdHN0ckNtZCArPSBibGVzZGsuYWRkQ1BDTFRleHQoMjkwLDgwLCc3JywnMicsMCwnMDAwNTEnKTtcblx0XHRcdC8vIFx0c3RyQ21kICs9IGJsZXNkay5hZGRDUENMVGV4dCg0MCwxMTAsJzMnLCcwJywwLCdDSElDS0VOIEZFRVQgKEJPTkVMRVNTKS1Db3B5LUNvcHknKTtcblx0XHRcdC8vIFx0c3RyQ21kICs9IGJsZXNkay5hZGRDUENMU0VUTUFHKDIsMik7XG5cdFx0XHQvLyBcdHN0ckNtZCArPSBibGVzZGsuYWRkQ1BDTFRleHQoNDAsMTUwLCc1NScsJzAnLDAsJ+aXoOmqqOm4oeeIqiDkuIDnm5LvvIjnuqYxLjXno4XvvIknKTtcblx0XHRcdC8vIFx0c3RyQ21kICs9IGJsZXNkay5hZGRDUENMU0VUTUFHKDAsMCk7XG5cdFx0XHQvLyBcdHN0ckNtZCArPSBibGVzZGsuYWRkQ1BDTFRleHQoMzUwLDE4MCwnNycsJzInLDAsJzIwMTktMDgtMTInKTtcblxuXHRcdFx0Ly8gXHRzdHJDbWQgKz0gYmxlc2RrLmFkZENQQ0xMb2NhdGlvbigyKTtcblx0XHRcdC8vIFx0c3RyQ21kICs9IGJsZXNkay5hZGRDUENMUVJDb2RlKDAsMjIwLCdNJywgMiwgNiwgJ3FyIGNvZGUgdGVzdCcpO1xuXHRcdFx0Ly8gXHRzdHJDbWQgKz0gYmxlc2RrLmFkZENQQ0xQcmludCgpO1xuXHRcdFx0Ly8gXHR0aGlzLmJ1ZmZlckRhdGEgPSBzdHJDbWQ7XG5cdFx0XHQvLyB9LCAgXG5cdFx0XHQvLyDliqDovb3kurrlkZjkv6Hmga9cblx0XHRcdGZldGNoUGVyc29uSW5mbygpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ0ZldGNoaW5nIHBlcnNvbiBpbmZvIGZvcjonLCB0aGlzLnBlcnNvbkNvZGUpOyAvLyDmo4Dmn6Xkuovku7bmmK/lkKbop6blj5FcblxuXHRcdFx0XHRpZiAodGhpcy5wZXJzb25Db2RlLnRyaW0oKSkge1xuXHRcdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHRcdHVybDogYGh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9wZXJzb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMucGVyc29uQ29kZSl9YCwgLy8g5L+u5pS55ZCO55qE6K+35rGC6Lev5b6EXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzLmRhdGEucGVyc29ubmVsTmFtZSk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFBlcnNvbiA9IHJlcy5kYXRhLnBlcnNvbm5lbE5hbWU7IC8vIOiuvue9ruS6uuWRmOS/oeaBr1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdQZXJzb24gaW5mbyBsb2FkZWQ6JywgdGhpcy5zZWxlY3RlZFBlcnNvbik7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIHBlcnNvbiBpbmZvOicsIHJlcyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiByZXMsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxuXHRcdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cblx0XHRcdC8vIOWKoOi9veS6p+e6v+S/oeaBr1xuXHRcdFx0ZmV0Y2hMaW5lSW5mbygpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ0ZldGNoaW5nIGxpbmUgaW5mbyBmb3I6JywgdGhpcy5saW5lQ29kZSk7IC8vIOajgOafpeS6i+S7tuaYr+WQpuinpuWPkVxuXG5cdFx0XHRcdGlmICh0aGlzLmxpbmVDb2RlLnRyaW0oKSkge1xuXHRcdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHRcdHVybDogYGh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9saW5lcy8ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLmxpbmVDb2RlLnRyaW0oKSl9YCwgLy8g5L+u5pS55ZCO55qE6K+35rGC6Lev5b6EXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0xpbmUgaW5mbyBsb2FkZWQ6JywgcmVzLmRhdGEubGluZU5vKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkTGluZSA9IHJlcy5kYXRhLmxpbmVOYW1lOyAvLyDorr7nva7kuqfnur/kv6Hmga9cblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnTGluZSBpbmZvIGxvYWRlZDonLCB0aGlzLnNlbGVjdGVkTGluZSk7XG5cdFx0XHRcdFx0XHRcdFx0Ly8g6YCJ5oup5a6M5Lqn57q/5ZCO5Yqg6L295a+55bqU55qE5bel5Y2V5L+h5oGvXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkT3JkZXJzKHRoaXMubGluZUNvZGUpO1xuXHRcdFx0XHRcdFx0XHRcdC8vIOmAieaLqeWujOS6p+e6v+WQjuWKoOi9veWvueW6lOeahOavj+aXpeS6p+iDveS/oeaBr1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMubG9hZERhaWx5Q2FwYWNpdHkodGhpcy5saW5lQ29kZSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIGxpbmUgaW5mbzonLCByZXMpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogcmVzLFxuXHRcdFx0XHRcdFx0XHRcdGljb246ICdub25lJyxcblx0XHRcdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0dmlld0hpc3RvcnkoKSB7XG5cdFx0XHRcdHRoaXMuZmV0Y2hIaXN0b3J5UmVjb3Jkcyh0aGlzLnNlbGVjdGVkT3JkZXIpO1xuXHRcdFx0XHR0aGlzLnNob3dIaXN0b3J5UG9wdXAgPSB0cnVlO1xuXG5cdFx0XHR9LFxuXHRcdFx0Ly8g5YWz6Zet5by556qXXG5cdFx0XHRjbG9zZVBvcHVwKCkge1xuXHRcdFx0XHR0aGlzLnNob3dIaXN0b3J5UG9wdXAgPSBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHQvLyDojrflj5bljoblj7LmiZPljbDorrDlvZVcblx0XHRcdGZldGNoSGlzdG9yeVJlY29yZHMob3JkZXJObykge1xuXHRcdFx0XHR1bmkucmVxdWVzdCh7XG5cdFx0XHRcdFx0dXJsOiBgaHR0cDovLzE5Mi4xNjguMC4xMDc6NDQzODAvYXBpL3ByaW50L3ByaW50SGlzdG9yeT9vcmRlck5vPSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9yZGVyTm8pfWAsXG5cdFx0XHRcdFx0bWV0aG9kOiAnR0VUJyxcblx0XHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdC8vIOato+ehruino+aekOWQjuerr+i/lOWbnueahOaVsOaNrlxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnMTIzJywgcmVzLmRhdGEuaGlzdG9yeVJlY29yZHMpO1xuXHRcdFx0XHRcdFx0XHQvL+iOt+WPluacgOaWsOadoeeggVxuXHRcdFx0XHRcdFx0XHR0aGlzLmxhc3RSZXF1ZXN0RGF0YSA9IHJlcy5kYXRhLmhpc3RvcnlSZWNvcmRzWzBdLml0ZW1CYXJjb2RlO1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9sZGJncyA9IHJlcy5kYXRhLmhpc3RvcnlSZWNvcmRzWzBdLnF1YW50aXR5O1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLmxhc3RSZXF1ZXN0RGF0YSk7XG5cdFx0XHRcdFx0XHRcdC8vIOWwhuWQjuerr+aVsOaNruaYoOWwhOWIsOWJjeerr+S9v+eUqOeahOagvOW8j1xuXHRcdFx0XHRcdFx0XHR0aGlzLmhpc3RvcnlMaXN0ID0gKHJlcy5kYXRhLmhpc3RvcnlSZWNvcmRzIHx8IFtdKS5tYXAocmVjb3JkID0+ICh7XG5cdFx0XHRcdFx0XHRcdFx0aXRlbUJhcmNvZGU6IHJlY29yZC5pdGVtQmFyY29kZSB8fCAn5pyq55+l5p2h56CBJywgLy8g56Gu5L+d6Kej5p6Q5a2X5q61XG5cdFx0XHRcdFx0XHRcdFx0cXVhbnRpdHk6IHJlY29yZC5xdWFudGl0eSB8fCAn5pyq55+l5pWw6YePJywgLy8g5omT5Y2w5pWw6YeP5a2X5q61XG5cdFx0XHRcdFx0XHRcdFx0cHJpbnREYXRlOiByZWNvcmQucHJpbnREYXRlIHx8ICfmnKrnn6Xml7bpl7QnLCAvLyDmiZPljbDml7bpl7Rcblx0XHRcdFx0XHRcdFx0XHRwcmludGVkQnk6IHJlY29yZC5wcmludGVkQnkgfHwgJycgLy8g5oql5bel5Lq6XG5cdFx0XHRcdFx0XHRcdH0pKTtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0hpc3RvcnkgcmVjb3JkcyBsb2FkZWQ6JywgdGhpcy5oaXN0b3J5TGlzdCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggaGlzdG9yeSByZWNvcmRzOicsIHJlcyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBoaXN0b3J5IHJlY29yZHM6JywgZXJyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdC8vIOWKoOi9veS6uuWRmOS/oeaBr1xuXHRcdFx0bG9hZFBlcnNvbnMoKSB7XG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IFwiaHR0cDovLzE5Mi4xNjguMC4xMDc6NDQzODAvYXBpL3BlcnNvbnNcIiwgLy8g5pu/5o2i5Li65L2g55qEIEFTUC5ORVQgQ29yZSBBUEkg5Zyw5Z2AXG5cdFx0XHRcdFx0bWV0aG9kOiAnR0VUJyxcblx0XHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdC8vIOi/h+a7pOaOieacieepuuWAvOaIluaXoOaViOaVsOaNrueahOmhuVxuXHRcdFx0XHRcdFx0XHQvLyAgdGhpcy5wZXJzb25PcHRpb25zID0gcmVzLmRhdGEuZmlsdGVyKHBlcnNvbiA9PiBwZXJzb24ucGVyc29uTmFtZSAmJiBwZXJzb24ucGVyc29uTmFtZS50cmltKCkpO1xuXG5cblx0XHRcdFx0XHRcdFx0dGhpcy5wZXJzb25MaXN0ID0gcmVzLmRhdGEuZmlsdGVyKHBlcnNvbiA9PlxuXHRcdFx0XHRcdFx0XHRcdHBlcnNvbi5wZXJzb25OYW1lICYmIHBlcnNvbi5wZXJzb25OYW1lLnRyaW0oKS5sZW5ndGggPiAwXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGVyc29uT3B0aW9ucyA9IHRoaXMucGVyc29uTGlzdC5tYXAoaXQgPT4gaXQucGVyc29uTmFtZSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGVyc29uSW5kZXggPSAtMTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBwZXJzb25zOicsIHJlcyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBwZXJzb25zOicsIGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQvLyDmm7TmlrDpgInkuK3nmoTkurrlkZjlkI3np7Bcblx0XHRcdHVwZGF0ZVBlcnNvbk5hbWUoZSkge1xuXHRcdFx0XHR0aGlzLnBlcnNvbkluZGV4ID0gZS5kZXRhaWwudmFsdWU7XG5cblx0XHRcdFx0aWYgKHRoaXMucGVyc29uSW5kZXggPT0gLTEpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkUGVyc29uID0gdGhpcy5wZXJzb25MaXN0W3RoaXMucGVyc29uSW5kZXhdLnBlcnNvbk5hbWU7XG5cdFx0XHRcdHRoaXMucGVyc29uSWQgPSB0aGlzLnBlcnNvbkxpc3RbdGhpcy5wZXJzb25JbmRleF0ucGVyc29uSWQ7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMucGVyc29uSWQgKyBcIiA6XCIgKyB0aGlzLnNlbGVjdGVkUGVyc29uKTtcblx0XHRcdH0sXG5cdFx0XHQvL+WKoOi9veS6p+e6v+S/oeaBr1xuXHRcdFx0bG9hZExpbmVzKCkge1xuXHRcdFx0XHR1bmkucmVxdWVzdCh7XG5cdFx0XHRcdFx0dXJsOiBcImh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9saW5lc1wiLCAvLyDmm7/mjaLkuLrkvaDnmoQgQVBJIOWcsOWdgFxuXHRcdFx0XHRcdG1ldGhvZDogJ0dFVCcsXG5cdFx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0XHQnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmxpbmVMaXN0ID0gcmVzLmRhdGEuZmlsdGVyKGxpbmUgPT5cblx0XHRcdFx0XHRcdFx0XHRsaW5lLmxpbmVOYW1lICYmIGxpbmUubGluZU5hbWUudHJpbSgpLmxlbmd0aCA+IDBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0dGhpcy5saW5lT3B0aW9ucyA9IHRoaXMubGluZUxpc3QubWFwKGl0ID0+IGl0LmxpbmVOYW1lKTtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0xpbmUgb3B0aW9ucyBsb2FkZWQ6JywgdGhpcy5saW5lT3B0aW9ucyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggbGluZXM6JywgcmVzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGxpbmVzOicsIGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQvLyDmm7TmlrDpgInkuK3nmoTkuqfnur9cblx0XHRcdHVwZGF0ZUxpbmUoZSkge1xuXHRcdFx0XHRjb25zdCBzZWxlY3RlZEluZGV4ID0gZS5kZXRhaWwudmFsdWU7IC8v5pWw57uE5LiL5qCHXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRMaW5lID0gdGhpcy5saW5lT3B0aW9uc1tzZWxlY3RlZEluZGV4XTtcblx0XHRcdFx0dGhpcy5saW5lQ29kZSA9IHRoaXMubGluZUxpc3Rbc2VsZWN0ZWRJbmRleF0ubGluZU5vOyAvLyDkv53lrZjpgInkuK3nmoTkuqfnur/nvJblj7dcblx0XHRcdFx0Y29uc29sZS5sb2coJ1NlbGVjdGVkIGxpbmU6JywgdGhpcy5zZWxlY3RlZExpbmUpO1xuXHRcdFx0XHRjb25zb2xlLmxvZygnU2VsZWN0ZWQgbGluZU5vOicsIHRoaXMubGluZU5vKTtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE9yZGVyID0gbnVsbDtcblx0XHRcdFx0Ly8g6YCJ5oup5a6M5Lqn57q/5ZCO5Yqg6L295a+55bqU55qE5bel5Y2V5L+h5oGvXG5cdFx0XHRcdHRoaXMubG9hZE9yZGVycyh0aGlzLmxpbmVDb2RlKTtcblx0XHRcdFx0Ly8g6YCJ5oup5a6M5Lqn57q/5ZCO5Yqg6L295a+55bqU55qE5q+P5pel5Lqn6IO95L+h5oGvXG5cdFx0XHRcdHRoaXMubG9hZERhaWx5Q2FwYWNpdHkodGhpcy5saW5lQ29kZSk7XG5cdFx0XHR9LFxuXHRcdFx0Ly8g5Yqg6L295q+P5pel5Lqn6IO95L+h5oGvXG5cdFx0XHRsb2FkRGFpbHlDYXBhY2l0eShsaW5lTm8pIHtcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdHVybDogYGh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9jYXBhY2l0eT9saW5lTm89JHtlbmNvZGVVUklDb21wb25lbnQobGluZU5vKX1gLCAvLyDlgYforr7kvaDmnInkuIDkuKrojrflj5bmr4/ml6Xkuqfog73nmoRBUElcblx0XHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRcdGhlYWRlcjoge1xuXHRcdFx0XHRcdFx0J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDAgJiYgQXJyYXkuaXNBcnJheShyZXMuZGF0YSkgJiYgcmVzLmRhdGEubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0XHQvLyDlj5blh7rov5Tlm57mlbDnu4TkuK3nmoTnrKzkuIDkuKrlr7nosaHnmoQgZGFpbHkg5YC8XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcy5kYXRhKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5kYWlseUNhcGFjaXR5ID0gcmVzLmRhdGFbMF0uZGFpbHk7IC8vIOebtOaOpeS/neWtmOavj+aXpeS6p+iDvVxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrZWRJbnNwZWN0aW9uID0gcmVzLmRhdGFbMF0uaXNfREogPT0gMTtcblx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja2VkTWFpbnRlbmFuY2UgPSByZXMuZGF0YVswXS5pc19XSCA9PSAxO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrWEogPSBudWxsO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrRmlyc3RQYXNzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0RhaWx5IGNhcGFjaXR5IGxvYWRlZDonLCB0aGlzLmRhaWx5Q2FwYWNpdHkpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5kYWlseUNhcGFjaXR5ID0gJ+aaguaXoOaVsOaNric7IC8vIOaIluiAheiuvue9ruS4uuWFtuS7lum7mOiupOWAvFxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrZWRJbnNwZWN0aW9uID0gbnVsbDsgLy8g6YeN572u54K55qOA54q25oCBXG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tlZE1haW50ZW5hbmNlID0gbnVsbDsgLy8g6YeN572u5L+d5YW754q25oCBXG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tYSiA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tGaXJzdFBhc3MgPSBudWxsO1xuXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBkYWlseSBjYXBhY2l0eSBvciBubyBkYXRhOicsIHJlcyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGRhaWx5IGNhcGFjaXR5OicsIGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQvLyDliqDovb3lt6XljZXkv6Hmga9cblx0XHRcdGxvYWRPcmRlcnMobGluZU5vKSB7XG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IGBodHRwOi8vMTkyLjE2OC4wLjEwNzo0NDM4MC9hcGkvb3JkZXJzP2xpbmVObz0ke2VuY29kZVVSSUNvbXBvbmVudChsaW5lTm8pfWAsIC8vIOS9v+eUqOWtmOWCqOeahGxpbmVOb1xuXHRcdFx0XHRcdG1ldGhvZDogJ0dFVCcsXG5cdFx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0XHQnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9yZGVyTGlzdCA9IHJlcy5kYXRhLmZpbHRlcihvcmRlciA9PlxuXHRcdFx0XHRcdFx0XHRcdG9yZGVyLm9yZGVyTm8gJiYgb3JkZXIub3JkZXJOby50cmltKCkubGVuZ3RoID4gMFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9yZGVyT3B0aW9ucyA9IHRoaXMub3JkZXJMaXN0Lm1hcChpdCA9PiBpdC5vcmRlck5vKTtcblxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnT3JkZXIgb3B0aW9ucyBsb2FkZWQ6JywgdGhpcy5vcmRlck9wdGlvbnMpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIG9yZGVyczonLCByZXMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgb3JkZXJzOicsIGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQvLyDmm7TmlrDpgInkuK3nmoTlt6XljZVcblx0XHRcdGxvYWRPcmRlckRldGFpbHMoZSkge1xuXHRcdFx0XHRjb25zdCBzZWxlY3RlZEluZGV4ID0gZS5kZXRhaWwudmFsdWU7IC8vIOiOt+WPlumAieaLqeeahOe0ouW8lVxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkT3JkZXIgPSB0aGlzLm9yZGVyT3B0aW9uc1tzZWxlY3RlZEluZGV4XTsgLy8g6I635Y+W6YCJ5Lit55qE5bel5Y2V57yW5Y+3XG5cdFx0XHRcdHRoaXMub3JkZXJObyA9IHRoaXMub3JkZXJMaXN0W3NlbGVjdGVkSW5kZXhdLm9yZGVyTm87IC8vIOS/neWtmOmAieS4reeahOW3peWNlee8luWPt1xuXHRcdFx0XHRjb25zb2xlLmxvZygndGlhb21hJywgdGhpcy5zZWxlY3RlZE9yZGVyKTtcblx0XHRcdFx0Y29uc29sZS5sb2coJ1NlbGVjdGVkIG9yZGVyTm86JywgdGhpcy5vcmRlck5vKTtcblx0XHRcdFx0dGhpcy5vcmRlckRldGFpbHMgPSB7XG5cdFx0XHRcdFx0cmVxdWlyZW1lbnREb2M6ICcnLCAvLyDpnIDmsYLljZXmja5cblx0XHRcdFx0XHRwcm9kdWN0aW9uT3JkZXI6ICcnLCAvLyDnlJ/kuqforqLljZVcblx0XHRcdFx0XHRvcmRlclF1YW50aXR5OiAnJywgLy8g6K6i5Y2V5pWw6YePXG5cdFx0XHRcdFx0YnpzbDogJycsIC8vIOaOqOiNkOWMheijheaVsFxuXHRcdFx0XHRcdGdkenQ6JycsXG5cdFx0XHRcdFx0cHJvZHVjZWRRdWFudGl0eTogJycsIC8vIOW3sueUn+S6p+aVsFxuXHRcdFx0XHRcdGl0ZW1JZDogJycsIC8vIOeJqeaWmUlEXG5cdFx0XHRcdFx0aXRlbU5vOiAnJywgLy8g54mp5paZ57yW56CBXG5cdFx0XHRcdFx0aXRlbW5hbWU6ICcnLCAvLyDnianmlpnlkI3np7Bcblx0XHRcdFx0XHRpdGVtbW9kZWw6ICcnLCAvLyDop4TmoLzlnovlj7dcblxuXG5cdFx0XHRcdH07XG5cdFx0XHRcdC8vMjAyNTAyMTMg5L+u5pS55Y6G5Y+y5omT5Y2w6K6w5b2V5Li6bnVsbCBcblx0XHRcdFx0bGFzdFJlcXVlc3REYXRhOiBudWxsO1xuXHRcdFx0XHRjb25zb2xlLmxvZygnbGFzdFJlcXVlc3REYXRhOicsIHRoaXMubGFzdFJlcXVlc3REYXRhKTtcblx0XHRcdFx0Ly8g6LCD55So5byA5bel5bel5Y2V5pa55rOVXG5cdFx0XHRcdHRoaXMuc3RhcnRQcm9kdWN0aW9uKCk7XG5cdFx0XHRcdC8vIOiwg+eUqCBBUEkg6I635Y+W5bel5Y2V6K+m5oOFXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IGBodHRwOi8vMTkyLjE2OC4wLjEwNzo0NDM4MC9hcGkvb3JkZXJEZXRhaWxzP29yZGVyTm89JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5vcmRlck5vKX1gLCAvLyDkvb/nlKjlrZjlgqjnmoRvcmRlck5vXG5cdFx0XHRcdFx0bWV0aG9kOiAnR0VUJyxcblx0XHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnb25nZGFueGlueCcsIHJlcy5kYXRhKTtcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMub3JkZXJEZXRhaWxzID0ge1xuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVtZW50RG9jOiByZXMuZGF0YS5yZXF1aXJlbWVudERvYywgLy8g6ZyA5rGC5Y2V5o2uXG5cdFx0XHRcdFx0XHRcdFx0cHJvZHVjdGlvbk9yZGVyOiByZXMuZGF0YS5wcm9kdWN0aW9uT3JkZXIsIC8vIOeUn+S6p+iuouWNlVxuXHRcdFx0XHRcdFx0XHRcdG9yZGVyUXVhbnRpdHk6IHJlcy5kYXRhLm9yZGVyUXVhbnRpdHksIC8vIOiuouWNleaVsOmHj1xuXHRcdFx0XHRcdFx0XHRcdGJ6c2w6IHJlcy5kYXRhLmJ6c2wsIC8vIOaOqOiNkOWMheijheaVsFxuXHRcdFx0XHRcdFx0XHRcdGdkenQ6IHJlcy5kYXRhLmdkenQsIC8vIOW3peWNleeKtuaAgVxuXHRcdFx0XHRcdFx0XHRcdHByb2R1Y2VkUXVhbnRpdHk6IHJlcy5kYXRhLnByb2R1Y2VkUXVhbnRpdHksIC8vIOW3sueUn+S6p+aVsFxuXHRcdFx0XHRcdFx0XHRcdGl0ZW1JZDogcmVzLmRhdGEuaXRlbUlkLCAvLyDnianmlplJRFxuXHRcdFx0XHRcdFx0XHRcdGl0ZW1ObzogcmVzLmRhdGEuaXRlbU5PLCAvLyDnianmlpnnvJbnoIFcblx0XHRcdFx0XHRcdFx0XHRpdGVtbmFtZTogcmVzLmRhdGEuaXRlbW5hbWUsIC8vIOeJqeaWmeWQjeensFxuXHRcdFx0XHRcdFx0XHRcdGl0ZW1tb2RlbDogcmVzLmRhdGEuaXRlbW1vZGVsLCAvLyDop4TmoLzlnovlj7dcblxuXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdC8vIOagueaNriBzaiDlkowgeGog55qE5YC85p2l6K6+572u6aaW5qOA5ZKM5beh5qOA54q25oCBXG5cdFx0XHRcdFx0XHRcdC8vIOagueaNriBzaiDlkowgeGog55qE5YC85p2l6K6+572u6aaW5qOA5ZKM5beh5qOA54q25oCBXG5cdFx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YS5zaiA9PT0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tGaXJzdFBhc3MgPSB0cnVlOyAvLyDpppbmo4DlkIjmoLxcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChyZXMuZGF0YS5zaiA9PT0gMikge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tGaXJzdFBhc3MgPSBmYWxzZTsgLy8g6aaW5qOA5LiN5ZCI5qC8XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja0ZpcnN0UGFzcyA9IG51bGw7IC8vIOmmluajgOacquWBmlxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhLnhqID09PSAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja1hKID0gdHJ1ZTsgLy8g5beh5qOA5ZCI5qC8XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAocmVzLmRhdGEueGogPT09IDIpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrWEogPSBmYWxzZTsgLy8g5beh5qOA5LiN5ZCI5qC8XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja1hKID0gbnVsbDsgLy8g5beh5qOA5pyq5YGaXG5cdFx0XHRcdFx0XHRcdH1cblxuXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdPcmRlciBkZXRhaWxzIGxvYWRlZDonLCB0aGlzLm9yZGVyRGV0YWlscyk7XG5cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBvcmRlciBkZXRhaWxzOicsIHJlcyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBvcmRlciBkZXRhaWxzOicsIGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8g6I635Y+W5Y6G5Y+y5omT5Y2w6K6w5b2VXG5cdFx0XHRcdGNvbnNvbGUubG9nKCcxMjM1NScsIHRoaXMub3JkZXJObyk7XG5cdFx0XHRcdHRoaXMuaGlzdG9yeUxpc3QgPSBbXTtcblx0XHRcdFx0dGhpcy5mZXRjaEhpc3RvcnlSZWNvcmRzKHRoaXMub3JkZXJObyk7XG5cblxuXHRcdFx0fSxcblx0XHRcdC8v5Yi35pawXG5cdFx0XHRyZWZyZXNoU3RhdHVzKCkge1xuXHRcdFx0XHRpZiAoIXRoaXMubGluZUNvZGUpIHtcblx0XHRcdFx0XHRjb25zb2xlLndhcm4oXCLmnKrpgInmi6nkuqfnur/vvJrorr7lpIfngrnmo4Dlkozkv53lhbvnirbmgIHorr7nva7kuLrmnKrlgZpcIik7XG5cdFx0XHRcdFx0dGhpcy5jaGVja2VkSW5zcGVjdGlvbiA9IDA7XG5cdFx0XHRcdFx0dGhpcy5jaGVja2VkTWFpbnRlbmFuY2UgPSAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCF0aGlzLnNlbGVjdGVkT3JkZXIpIHtcblx0XHRcdFx0XHRjb25zb2xlLndhcm4oXCLmnKrpgInmi6nlt6XljZXvvJrpppbmo4Dlkozlt6Hmo4DnirbmgIHorr7nva7kuLrmnKrlgZpcIik7XG5cdFx0XHRcdFx0dGhpcy5jaGVja0ZpcnN0UGFzcyA9IG51bGw7XG5cdFx0XHRcdFx0dGhpcy5jaGVja1hKID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLmxpbmVDb2RlKTtcblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy5zZWxlY3RlZE9yZGVyKTtcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdHVybDogYGh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9yZWZyZXNoYCxcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcblx0XHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGRhdGE6IHtcblx0XHRcdFx0XHRcdGxpbmVObzogdGhpcy5saW5lQ29kZSxcblx0XHRcdFx0XHRcdG9yZGVyTm86IHRoaXMuc2VsZWN0ZWRPcmRlciB8fCBcIk4vQVwiIC8vIOacqumAieaLqeW3peWNleaXtuS9v+eUqOWNoOS9jeesplxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDAgJiYgcmVzLmRhdGEpIHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coXCLliLfmlrDmiJDlip/vvJpcIiwgcmVzLmRhdGEpO1xuXG5cdFx0XHRcdFx0XHRcdC8vIOino+aekOWQjuerr+i/lOWbnueahOaVsOWtl+eKtuaAgVxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrRmlyc3RQYXNzID0gdGhpcy5tYXBTdGF0dXMocmVzLmRhdGEuY2hlY2tGaXJzdFBhc3MpOyAvLyDmmKDlsITpppbmo4DnirbmgIFcblx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja1hKID0gdGhpcy5tYXBTdGF0dXMocmVzLmRhdGEuY2hlY2tYSik7IC8vIOaYoOWwhOW3oeajgOeKtuaAgVxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrZWRJbnNwZWN0aW9uID0gcmVzLmRhdGEuY2hlY2tlZEluc3BlY3Rpb24gPT09IDE7IC8vIOeCueajgO+8mjE9dHJ1ZSwgMj1mYWxzZVxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrZWRNYWludGVuYW5jZSA9IHJlcy5kYXRhLmNoZWNrZWRNYWludGVuYW5jZSA9PT0gMTsgLy8g5L+d5YW777yaMT10cnVlLCAyPWZhbHNlXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKFwi5Yi35paw5oiQ5Yqf77ya6aaW5qOAXCIsIHRoaXMuY2hlY2tGaXJzdFBhc3MpO1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuWIt+aWsOaIkOWKn++8muW3oeajgFwiLCB0aGlzLmNoZWNrWEopO1xuXG5cblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICfliLfmlrDmiJDlip8nLFxuXHRcdFx0XHRcdFx0XHRcdGljb246ICdzdWNjZXNzJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCLliLfmlrDlpLHotKXvvJpcIiwgcmVzKTtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICfliLfmlrDlpLHotKXvvIzmlbDmja7lvILluLgnLFxuXHRcdFx0XHRcdFx0XHRcdGljb246ICdub25lJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCLliLfmlrDmjqXlj6Por7fmsYLlpLHotKXvvJpcIiwgZXJyKTtcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogJ+WIt+aWsOWksei0pe+8jOe9kee7nOW8guW4uCcsXG5cdFx0XHRcdFx0XHRcdGljb246ICdub25lJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFxuXHRcdFx0Ly8g6LCD55SoIEFQSSDojrflj5blt6XljZXor6bmg4Vcblx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0dXJsOiBgaHR0cDovLzE5Mi4xNjguMC4xMDc6NDQzODAvYXBpL29yZGVyRGV0YWlscz9vcmRlck5vPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMub3JkZXJObyl9YCwgLy8g5L2/55So5a2Y5YKo55qEb3JkZXJOb1xuXHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHQnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ29uZ2RhbnhpbngnLCByZXMuZGF0YSk7XG5cdFx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdHRoaXMub3JkZXJEZXRhaWxzID0ge1xuXHRcdFx0XHRcdFx0XHRyZXF1aXJlbWVudERvYzogcmVzLmRhdGEucmVxdWlyZW1lbnREb2MsIC8vIOmcgOaxguWNleaNrlxuXHRcdFx0XHRcdFx0XHRwcm9kdWN0aW9uT3JkZXI6IHJlcy5kYXRhLnByb2R1Y3Rpb25PcmRlciwgLy8g55Sf5Lqn6K6i5Y2VXG5cdFx0XHRcdFx0XHRcdG9yZGVyUXVhbnRpdHk6IHJlcy5kYXRhLm9yZGVyUXVhbnRpdHksIC8vIOiuouWNleaVsOmHj1xuXHRcdFx0XHRcdFx0XHRienNsOiByZXMuZGF0YS5ienNsLCAvLyDmjqjojZDljIXoo4XmlbBcblx0XHRcdFx0XHRcdFx0Z2R6dDogcmVzLmRhdGEuZ2R6dCwgLy8g5bel5Y2V54q25oCBXG5cdFx0XHRcdFx0XHRcdHByb2R1Y2VkUXVhbnRpdHk6IHJlcy5kYXRhLnByb2R1Y2VkUXVhbnRpdHksIC8vIOW3sueUn+S6p+aVsFxuXHRcdFx0XHRcdFx0XHRpdGVtSWQ6IHJlcy5kYXRhLml0ZW1JZCwgLy8g54mp5paZSURcblx0XHRcdFx0XHRcdFx0aXRlbU5vOiByZXMuZGF0YS5pdGVtTk8sIC8vIOeJqeaWmee8lueggVxuXHRcdFx0XHRcdFx0XHRpdGVtbmFtZTogcmVzLmRhdGEuaXRlbW5hbWUsIC8vIOeJqeaWmeWQjeensFxuXHRcdFx0XHRcdFx0XHRpdGVtbW9kZWw6IHJlcy5kYXRhLml0ZW1tb2RlbCwgLy8g6KeE5qC85Z6L5Y+3XG5cdFx0XHRcblx0XHRcdFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdC8vIOagueaNriBzaiDlkowgeGog55qE5YC85p2l6K6+572u6aaW5qOA5ZKM5beh5qOA54q25oCBXG5cdFx0XHRcdFx0XHQvLyDmoLnmja4gc2og5ZKMIHhqIOeahOWAvOadpeiuvue9rummluajgOWSjOW3oeajgOeKtuaAgVxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhLnNqID09PSAxKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tGaXJzdFBhc3MgPSB0cnVlOyAvLyDpppbmo4DlkIjmoLxcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAocmVzLmRhdGEuc2ogPT09IDIpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja0ZpcnN0UGFzcyA9IGZhbHNlOyAvLyDpppbmo4DkuI3lkIjmoLxcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tGaXJzdFBhc3MgPSBudWxsOyAvLyDpppbmo4DmnKrlgZpcblx0XHRcdFx0XHRcdH1cblx0XHRcdFxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhLnhqID09PSAxKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tYSiA9IHRydWU7IC8vIOW3oeajgOWQiOagvFxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChyZXMuZGF0YS54aiA9PT0gMikge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrWEogPSBmYWxzZTsgLy8g5beh5qOA5LiN5ZCI5qC8XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrWEogPSBudWxsOyAvLyDlt6Hmo4DmnKrlgZpcblx0XHRcdFx0XHRcdH1cblx0XHRcdFxuXHRcdFx0XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnT3JkZXIgZGV0YWlscyBsb2FkZWQ6JywgdGhpcy5vcmRlckRldGFpbHMpO1xuXHRcdFx0XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBvcmRlciBkZXRhaWxzOicsIHJlcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgb3JkZXIgZGV0YWlsczonLCBlcnIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG1hcFN0YXR1cyhzdGF0dXMpIHtcblx0XHRcdFx0aWYgKHN0YXR1cyA9PT0gMykge1xuXHRcdFx0XHRcdHJldHVybiBudWxsOyAvLyDmnKrlgZpcblx0XHRcdFx0fSBlbHNlIGlmIChzdGF0dXMgPT09IDEpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTsgLy8g5ZCI5qC8XG5cdFx0XHRcdH0gZWxzZSBpZiAoc3RhdHVzID09PSAyKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyDkuI3lkIjmoLxcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbnVsbDsgLy8g6buY6K6k5pyq5YGaXG5cdFx0XHR9LFxuXG5cdFx0XHQvL+W8gOW3peW3peWNlVxuXHRcdFx0c3RhcnRQcm9kdWN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIXRoaXMuc2VsZWN0ZWRPcmRlcikge1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6ICfor7flhYjpgInmi6nlt6XljZUnLFxuXHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdHVybDogJ2h0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9JbnNwZWN0aW9uL3N0YXJ0UHJvZHVjdGlvbicsXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXG5cdFx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0XHQnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRkYXRhOiB7XG5cdFx0XHRcdFx0XHRvcmRlck5vOiB0aGlzLnNlbGVjdGVkT3JkZXIsIC8vIOS8oOWFpeW3peWNleWPt1xuXHRcdFx0XHRcdFx0VXNlcklkOiB0aGlzLnNlbGVjdGVkUGVyc29uLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHJlcy5kYXRhLm1lc3NhZ2UsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogJ3N1Y2Nlc3MnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHJlcy5kYXRhLm1lc3NhZ2UgfHwgJ+W8gOW3peWksei0pScsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcign5byA5bel6K+35rGC5aSx6LSlOicsIGVycik7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6ICflvIDlt6Xor7fmsYLlpLHotKUnLFxuXHRcdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyDmoLzlvI/ljJbml6XmnJ/lh73mlbBcblx0XHRcdGZvcm1hdERhdGUoZGF0ZSkge1xuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuXHRcdFx0XHRjb25zdCBtb250aCA9IFN0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xuXHRcdFx0XHRjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG5cdFx0XHRcdGNvbnN0IGhvdXJzID0gU3RyaW5nKGRhdGUuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKTtcblx0XHRcdFx0Y29uc3QgbWludXRlcyA9IFN0cmluZyhkYXRlLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKTtcblx0XHRcdFx0Y29uc3Qgc2Vjb25kcyA9IFN0cmluZyhkYXRlLmdldFNlY29uZHMoKSkucGFkU3RhcnQoMiwgJzAnKTtcblx0XHRcdFx0Y29uc3QgbWlsbGlzZWNvbmRzID0gU3RyaW5nKGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpLnBhZFN0YXJ0KDMsICcwJyk7IC8vIOavq+enklxuXHRcdFx0XHRyZXR1cm4gYCR7eWVhcn0ke21vbnRofSR7ZGF5fSR7aG91cnN9JHttaW51dGVzfSR7c2Vjb25kc30ke21pbGxpc2Vjb25kc31gO1xuXHRcdFx0fSxcblx0XHRcdGZvcm1hdERhdGUyKGRhdGUpIHtcblx0XHRcdFx0Y29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblx0XHRcdFx0Y29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcblx0XHRcdFx0Y29uc3QgZGF5ID0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xuXHRcdFx0XHRjb25zdCBob3VycyA9IFN0cmluZyhkYXRlLmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG5cdFx0XHRcdGNvbnN0IG1pbnV0ZXMgPSBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG5cdFx0XHRcdGNvbnN0IHNlY29uZHMgPSBTdHJpbmcoZGF0ZS5nZXRTZWNvbmRzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG5cdFx0XHRcdGNvbnN0IG1pbGxpc2Vjb25kcyA9IFN0cmluZyhkYXRlLmdldE1pbGxpc2Vjb25kcygpKS5wYWRTdGFydCgzLCAnMCcpOyAvLyDmr6vnp5JcblxuXHRcdFx0XHQvL3JldHVybiBgJHt5ZWFyfS8ke21vbnRofS8ke2RheX0gJHtob3Vyc306JHttaW51dGVzfToke3NlY29uZHN9YDsgLy8g5L2/55So57uf5LiA55qE5qC85byP77yaWVlZWS9NTS9ERCBISDptbTpzc1xuXHRcdFx0XHRyZXR1cm4gYCR7eWVhcn0ke21vbnRofSR7ZGF5fSR7aG91cnN9JHttaW51dGVzfSR7c2Vjb25kc30ke21pbGxpc2Vjb25kc31gO1xuXG5cdFx0XHR9LFxuXHRcdFx0Ly8g6aaW5qOA6YCB5qOA5Yqf6IO9XG5cdFx0XHRzZW5kRm9yRmlyc3RJbnNwZWN0aW9uKCkge1xuXHRcdFx0XHRjb25zdCBvcmRlck51bWJlciA9IHRoaXMuc2VsZWN0ZWRPcmRlcjsgLy8g5LuO57uE5Lu254q25oCB5Lit6I635Y+W5bel5Y2V5Y+3XG5cdFx0XHRcdGNvbnNvbGUubG9nKCdTZW5kaW5nIGZvciBmaXJzdCBpbnNwZWN0aW9uIHdpdGggb3JkZXIgbnVtYmVyOicsIG9yZGVyTnVtYmVyKTtcblx0XHRcdFx0Y29uc29sZS5sb2coJ1NlbmRpbmcgZm9yIGZpcnN0IGluc3BlY3Rpb24gd2l0aCBwZXJzb25Db2RlOicsIHRoaXMucGVyc29uQ29kZSk7XG5cblx0XHRcdFx0aWYgKG9yZGVyTnVtYmVyLnRyaW0oKSkge1xuXHRcdFx0XHRcdGNvbnN0IHJlcXVlc3REYXRhID0ge1xuXHRcdFx0XHRcdFx0UmVsZWFzZU5vOiBvcmRlck51bWJlciwgLy8g5L2/55So5Lyg5YWl55qE5bel5Y2V5Y+3XG5cdFx0XHRcdFx0XHRVc2VySWQ6IHRoaXMucGVyc29uQ29kZSwgLy8g56Gu5L+d6L+Z6YeM5pyJ5a+55bqU55qE55So5oi3SURcblxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0Y29uc29sZS5sb2cocmVxdWVzdERhdGEpO1xuXG5cdFx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdFx0dXJsOiAnaHR0cDovLzE5Mi4xNjguMC4xMDc6NDQzODAvYXBpL0luc3BlY3Rpb24vZmlyc3RpbnNwZWN0aW9uJywgLy8g56Gu5L+d6K+35rGC6Lev5b6E5q2j56GuXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcblx0XHRcdFx0XHRcdGhlYWRlcjoge1xuXHRcdFx0XHRcdFx0XHQnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZGF0YTogcmVxdWVzdERhdGEsIC8vIOWPkemAgeivt+axguaVsOaNrlxuXHRcdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdGaXJzdCBpbnNwZWN0aW9uIHN1Ym1pdHRlZCBzdWNjZXNzZnVsbHk6JywgcmVzLmRhdGEpO1xuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICfpppbmo4DpgIHmo4DmiJDlip8nLFxuXHRcdFx0XHRcdFx0XHRcdFx0aWNvbjogJ3N1Y2Nlc3MnLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDIwMDBcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc2VuZCBmb3IgZmlyc3QgaW5zcGVjdGlvbjonLCByZXMpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ3Jlcy5kYXRhLm1lc3NhZ2U6JywgcmVzLmRhdGEubWVzc2FnZSk7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogcmVzLmRhdGEubWVzc2FnZSxcblx0XHRcdFx0XHRcdFx0XHRcdGljb246ICdub25lJyxcblx0XHRcdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1JlcXVlc3QgZmFpbGVkOicsIGVycik7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAn572R57uc6ZSZ6K+vJyxcblx0XHRcdFx0XHRcdFx0XHRpY29uOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDIwMDBcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+W3peWNleWPt+S4jeiDveS4uuepuicsXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cblx0XHRcdC8vIOaPkOS6pOaKpeW3peS/oeaBr+eahOaWueazlVxuXHRcdFx0cHJpbnRCYXJjb2RlKCkge1xuXHRcdFx0XHQvLyAqKuWFiOajgOafpSBVU0Ig6L+e5o6l54q25oCBKipcblx0XHRcdFx0aWYgKCFVc2JNb2R1bGUgfHwgIVVzYk1vZHVsZS5pc1VzYkNvbm5lY3QgfHwgIVVzYk1vZHVsZS5pc1VzYkNvbm5lY3QoKSkge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IGAgJHt0aGlzLm5ldHdvcmtTdGF0ZX1gLFxuXHRcdFx0XHRcdFx0Y29udGVudDogXCLor7fmo4Dmn6XmiZPljbDmnLrov57mjqVcIixcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0c3VjY2VzczogKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLm1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuOyAvLyAqKlVTQiDov57mjqXlpLHotKXvvIznm7TmjqXov5Tlm57vvIzpmLLmraLmiafooYzmiZPljbAqKlxuXHRcdFx0XHR9XG5cdFx0XHRcdFxuXHRcdFx0XHR1bmkucmVxdWVzdCh7XG5cdFx0XHRcdFx0dXJsOiBgaHR0cDovLzE5Mi4xNjguMC4xMDc6NDQzODAvYXBpL3BlcnNvbnMvJHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5wZXJzb25Db2RlKX1gLCAvLyDkv67mlLnlkI7nmoTor7fmsYLot6/lvoRcblx0XHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRcdGhlYWRlcjoge1xuXHRcdFx0XHRcdFx0J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzLmRhdGEucGVyc29ubmVsTmFtZSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRQZXJzb24gPSByZXMuZGF0YS5wZXJzb25uZWxOYW1lOyAvLyDorr7nva7kurrlkZjkv6Hmga9cblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ1BlcnNvbiBpbmZvIGxvYWRlZDonLCB0aGlzLnNlbGVjdGVkUGVyc29uKTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBwZXJzb24gaW5mbzonLCByZXMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiByZXMsXG5cdFx0XHRcdFx0XHRcdGljb246ICdub25lJyxcblx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDIwMDBcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cblx0XHRcdFx0Ly8g56aB55So5oyJ6ZKuNeenklxuXHRcdFx0XHR0aGlzLmlzQnV0dG9uRGlzYWJsZWQgPSB0cnVlO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmlzQnV0dG9uRGlzYWJsZWQgPSBmYWxzZTtcblx0XHRcdFx0fSwgNTAwMCk7XG5cdFx0XHRcdC8vIOagoemqjOaKpeW3peaVsFxuXHRcdFx0XHRpZiAodGhpcy5yZXBvcnRlZFF1YW50aXR5IDw9IDAgfHxcblx0XHRcdFx0XHROdW1iZXIodGhpcy5yZXBvcnRlZFF1YW50aXR5KSArIE51bWJlcih0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWNlZFF1YW50aXR5KSA+IE51bWJlcih0aGlzXG5cdFx0XHRcdFx0XHQub3JkZXJEZXRhaWxzLm9yZGVyUXVhbnRpdHkpKSB7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+aKpeW3peaVsOaXoOaViOaIlui2heWHuuiuouWNleaVsOmHj++8jOivt+ajgOafpeOAgicsXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdC8vIOaYvuekuuiHquWumuS5ieeahOe6ouiJsuiDjOaZr+OAgeeZveiJsuWtl+S9k+eahOaPkOekuuahhlxuXHRcdFx0XHRcdC8vICAgdGhpcy4kcmVmcy5jdXN0b21Ub2FzdC5zaG93VG9hc3QoJ+aKpeW3peaVsOaXoOaViOaIlui2heWHuuiuouWNleaVsOmHj++8jOivt+ajgOafpeOAgicpO1xuXG5cblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0XHQgICBcblx0XHRcdFx0Ly8g5qC85byP5YyW5b2T5YmN5pe26Ze05Li6XCLlubTmnIjml6Xml7bliIbnp5JcIuagvOW8j1xuXHRcdFx0XHRjb25zdCBjdXJyZW50VGltZSA9IG5ldyBEYXRlKCk7XG5cdFx0XHRcdGNvbnN0IGZvcm1hdHRlZFRpbWUgPSB0aGlzLmZvcm1hdERhdGUoY3VycmVudFRpbWUpO1xuXHRcdFx0XHQvLyDmnoTpgKDor7fmsYLmlbDmja5cblx0XHRcdFx0Y29uc3QgcmVxdWVzdERhdGEgPSB7XG5cdFx0XHRcdFx0b3JkZXJObzogdGhpcy5zZWxlY3RlZE9yZGVyLFxuXHRcdFx0XHRcdHBfcGVyc29uOiB0aGlzLnBlcnNvbkNvZGUsXG5cdFx0XHRcdFx0Ly9yZXBvcnRlZFF1YW50aXR5OiB0aGlzLnJlcG9ydGVkUXVhbnRpdHksXG5cdFx0XHRcdFx0aXRlbUlkOiB0aGlzLm9yZGVyRGV0YWlscy5pdGVtSWQsXG5cdFx0XHRcdFx0dW5pcXVlVmFsdWU6IGAke3RoaXMub3JkZXJEZXRhaWxzLml0ZW1Ob30tJHtmb3JtYXR0ZWRUaW1lfWAsIC8vIOS9v+eUqOagvOW8j+WMluWQjueahOaXtumXtFxuXHRcdFx0XHRcdC8vaXRlbUNvZGU6IHRoaXMub3JkZXJEZXRhaWxzLml0ZW1ObywgLy8g5YGH6K6+54mp5paZ57yW56CB5Li6aXRlbUlkXG5cdFx0XHRcdFx0Ly9pdGVtU3BlYzogJ+inhOagvOWei+WPtycsIC8vIOi/memHjOWPr+aUueaIkOWunumZheaVsOaNrlxuXHRcdFx0XHRcdHF1YW50aXR5OiBOdW1iZXIodGhpcy5yZXBvcnRlZFF1YW50aXR5KSAvLyDnoa7kv53mmK/mlbTmlbBcblxuXHRcdFx0XHR9OyBcblx0XHRcdFx0dGhpcy5sb2dQcmludEV2ZW50KFwi5omT5Y2w5YmNXCIsIFwi5omT5Y2w5p2h56CB5YmNXCIscmVxdWVzdERhdGEudW5pcXVlVmFsdWUpO1xuXHRcdFx0XHQvLyDlsIYgcmVxdWVzdERhdGEg5L+d5a2Y5YiwIGxhc3RSZXF1ZXN0RGF0YSDkuK1cblx0XHRcdFx0dGhpcy5sYXN0UmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YTtcblx0XHRcdFx0Y29uc29sZS5sb2cocmVxdWVzdERhdGEpO1xuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLnNlbGVjdGVkUGVyc29uKTtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHQvLyDosIPnlKjlkI7nq68gQVBJXG5cdFx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdFx0dXJsOiBcImh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9wcmludFwiLFxuXHRcdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXG5cdFx0XHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHRcdFx0J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuXHRcdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRcdGRhdGE6IHJlcXVlc3REYXRhLFxuXHRcdFx0XHRcdFx0c3VjY2VzczogKHJlc3BvbnNlKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAn5pWw5o2u5o+Q5Lqk5oiQ5YqfJyxcblx0XHRcdFx0XHRcdFx0XHRcdGljb246ICdzdWNjZXNzJyxcblx0XHRcdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc3QgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGZvcm1hdHRlZFRpbWUyID0gdGhpcy5mb3JtYXREYXRlMihjdXJyZW50VGltZSk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5sYXN0UmVxdWVzdERhdGEgPSByZXF1ZXN0RGF0YS51bmlxdWVWYWx1ZTtcblx0XHRcdFx0XHRcdFx0XHQvLyDlsIbmiZPljbDnmoTmnaHnoIHorrDlvZXmt7vliqDliLDljoblj7LorrDlvZXkuK1cblx0XHRcdFx0XHRcdFx0XHR0aGlzLmhpc3RvcnlMaXN0LnB1c2goe1xuXHRcdFx0XHRcdFx0XHRcdFx0aXRlbUJhcmNvZGU6IHJlcXVlc3REYXRhLnVuaXF1ZVZhbHVlLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJpbnREYXRlOiBmb3JtYXR0ZWRUaW1lMi50b0xvY2FsZVN0cmluZygpLFxuXHRcdFx0XHRcdFx0XHRcdFx0cHJpbnRlZEJ5OiB0aGlzLnNlbGVjdGVkUGVyc29uXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdFx0Ly/mmL7npLrnlJ/kuqfmlbDmt7vliqBcblx0XHRcdFx0XHRcdFx0XHR0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWNlZFF1YW50aXR5ID0gTnVtYmVyKHRoaXMub3JkZXJEZXRhaWxzXG5cdFx0XHRcdFx0XHRcdFx0XHQucHJvZHVjZWRRdWFudGl0eSkgKyBOdW1iZXIodGhpcy5yZXBvcnRlZFF1YW50aXR5KTtcblx0XHRcdFx0XHRcdFx0XHQvL+aYvuekuuaKpeW3peaVsOa3u+WKoFxuXHRcdFx0XHRcdFx0XHRcdHRoaXMuZGFpbHlDYXBhY2l0eSA9IE51bWJlcih0aGlzLmRhaWx5Q2FwYWNpdHkpICsgTnVtYmVyKHRoaXNcblx0XHRcdFx0XHRcdFx0XHRcdC5yZXBvcnRlZFF1YW50aXR5KTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvZ1ByaW50RXZlbnQoXCLmiZPljbDliY1cIiwgXCLmiqXlt6XmiJDlip9cIiwgcmVxdWVzdERhdGEudW5pcXVlVmFsdWUpO1xuXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzcG9uc2UuZGF0YS5tZXNzYWdlKTtcblx0XHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiByZXNwb25zZS5kYXRhLm1lc3NhZ2UsXG5cdFx0XHRcdFx0XHRcdFx0XHRpY29uOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMFxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJQcmludCBmYWlsZWQ6XCIsIHJlc3BvbnNlKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmxvZ1ByaW50RXZlbnQoXCLmiZPljbDliY1cIiwgXCLlvILluLjkuJTov5Tlm55cIiwgcmVxdWVzdERhdGEudW5pcXVlVmFsdWUpO1xuXHRcdFx0XHRcdFx0XHRcdC8v5omT5Y2w5p2h56CBXG5cdFx0XHRcdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0IC8vICoq5YWI6K6w5b2VIFwi5omT5Y2w5YmNXCIg5LqL5Lu2Kipcblx0XHQgICAgICAgICAgICAgICAgICAgIHRoaXMubG9nUHJpbnRFdmVudChcIuaJk+WNsOWJjVwiLCBcIuaJk+WNsFwiLCByZXF1ZXN0RGF0YS51bmlxdWVWYWx1ZSk7XG5cdFx0XHRcdFx0XHRcdC8v5omT5Y2w5p2h56CBXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCd0aWFvbWEnLCByZXF1ZXN0RGF0YS51bmlxdWVWYWx1ZSk7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnZCcsIHRoaXMub3JkZXJEZXRhaWxzLnByb2R1Y3Rpb25PcmRlcik7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCd0aWFvbWEnLCB0aGlzLnNlbGVjdGVkT3JkZXIpO1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ3lzJywgdGhpcy5vcmRlckRldGFpbHMucmVxdWlyZW1lbnREb2MpO1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnd2xibScsIHRoaXMub3JkZXJEZXRhaWxzLml0ZW1Obyk7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCd3bG1jJywgdGhpcy5vcmRlckRldGFpbHMuaXRlbW5hbWUpO1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2d4aCcsIHRoaXMub3JkZXJEZXRhaWxzLml0ZW1tb2RlbCk7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdzbCcsIHRoaXMucmVwb3J0ZWRRdWFudGl0eSk7XG5cblx0XHRcdFx0XHRcdFx0Ly8g5omT5Y2w5YaF5a655qC35byP6K6+572uXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGNvbW1hbmQgPSB0c2MuanBQcmludGVyLmNyZWF0ZU5ldygpO1xuXG5cdFx0XHRcdFx0XHRcdC8vIOiuvue9ruWuveW6piAxMDBtbSDlkozpq5jluqYgODBtbe+8iOaNoueul+WQjuWkp+e6piA3OTl4NjM5IOWDj+e0oO+8iVxuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFNpemUoMTAwLCA4MCk7XG5cblx0XHRcdFx0XHRcdFx0Ly9jb21tYW5kLnNldEJhY2tGZWVkKDIuNSk7XG5cblx0XHRcdFx0XHRcdFx0Ly8g5aSW5qGG57q/5p2hXG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0Q2xzKCk7XG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0Qm94KDEwLCAxMCwgNzg5LCA2MjkpOyAvLyDlpJbmoYbvvIzot53nprvpobXpnaLovrnnvJggMTBweFxuXG5cdFx0XHRcdFx0XHRcdC8vIOesrOS4gOmDqOWIhu+8muadoeeggeOAgeW3peWNleWPt+OAgeS+m+W6lOWVhuS/oeaBryArIOWkp+S6jOe7tOeggVxuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldEJhcigyMCwgNDAsIFwiMTI4XCIsIDEwMCwgMSwgMCwgMiwgcmVxdWVzdERhdGEudW5pcXVlVmFsdWUpOyAvLyDmnaHnoIFcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwLCA0MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLnianmlpnmnaHnoIE6IFwiKTtcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDE1MCwgNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHJlcXVlc3REYXRhLnVuaXF1ZVZhbHVlKTtcblxuXHRcdFx0XHRcdFx0XHQvLyDlt6XljZXlj7dcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwLCAxMDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIFwi5bel5Y2V5Y+3OiBcIik7XG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgxNTAsIDEwMCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgdGhpcy5zZWxlY3RlZE9yZGVyKTtcblxuXHRcdFx0XHRcdFx0XHQvLyDkvpvlupTllYbkv6Hmga9cblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwLCAxNjAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIFwi6ZyA5rGC5Y2V5o2u5Y+3OiBcIik7XG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgxNTAsIDE2MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgdGhpcy5vcmRlckRldGFpbHMucmVxdWlyZW1lbnREb2MpO1xuXG5cdFx0XHRcdFx0XHRcdC8vIOWPs+S+p+Wkp+S6jOe7tOeggVxuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFFSKDU1MCwgMTAwLCBcIkxcIiwgNiwgXCJBXCIsIHJlcXVlc3REYXRhLnVuaXF1ZVZhbHVlKTsgLy8g5aSn5LqM57u056CBXG5cblx0XHRcdFx0XHRcdFx0Ly8g56ys5LqM6YOo5YiG77ya54mp5paZ57yW56CBXG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMCwgMjIwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIueJqeaWmee8lueggTogXCIpO1xuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFRleHQoMTUwLCAyMjAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMub3JkZXJEZXRhaWxzLml0ZW1Obyk7XG5cblxuXHRcdFx0XHRcdFx0XHQvLyDnrKzkuInpg6jliIbvvJrnianmlpnlkI3np7Bcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwLCAyODAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIFwi54mp5paZ5ZCN56ewOiBcIik7XG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgxNTAsIDI4MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgdGhpcy5vcmRlckRldGFpbHMuaXRlbW5hbWUpO1xuXG5cdFx0XHRcdFx0XHRcdC8vIOesrOWbm+mDqOWIhu+8muaVsOmHj+S4jumcgOaxguWNleaNruWPt1xuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjAsIDM0MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLmlbDph486IFwiKTtcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDEyMCwgMzQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCB0aGlzLnJlcG9ydGVkUXVhbnRpdHkpO1xuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjAwLCAzNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIFwi5oql5bel5Lq6OiBcIik7XG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyOTAsIDM0MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgdGhpcy5zZWxlY3RlZFBlcnNvbik7XG5cblxuXG5cdFx0XHRcdFx0XHRcdC8vIGNvbW1hbmQuc2V0VGV4dCgyOTAsIDM0MCwgXCJGT05UIDNcIiwgMSwgMSwgdGhpcy5zZWxlY3RlZFBlcnNvbik7XG5cdFx0XHRcdFx0XHRcdC8vIGNvbW1hbmQuc2V0VGV4dCgyOTAsIDM0MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgZW5jb2RlVVJJKHRoaXMuc2VsZWN0ZWRQZXJzb24pKTtcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDQwMCwgMzQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuaJk+WNsOaXtumXtDogXCIpO1xuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFRleHQoNTMwLCAzNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMuZm9ybWF0RGF0ZTIobmV3IERhdGUoKSkpO1xuXHRcdFx0XHRcdFx0XHQvLyDnrKzkupTpg6jliIbvvJrlt6bkvqfkuoznu7TnoIEgKyDop4TmoLzlnovlj7dcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRRUigyMCwgNDAwLCBcIkxcIiwgNSwgXCJBXCIsIHJlcXVlc3REYXRhLnVuaXF1ZVZhbHVlKTsgLy8g5bem5L6n5LqM57u056CBXG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMDAsIDQwMCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLop4TmoLzlnovlj7c6IFwiKTtcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwMCwgNDQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCB0aGlzLm9yZGVyRGV0YWlscy5pdGVtbW9kZWwpO1xuXG5cblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwMCwgNTM1LCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuaFiOa6quW4guWkj+iSmeeUteWZqOaciemZkOWFrOWPuOS4qOazqOWhkei9pumXtFwiKTtcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwMSwgNTM2LCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuaFiOa6quW4guWkj+iSmeeUteWZqOaciemZkOWFrOWPuOS4qOazqOWhkei9pumXtFwiKTtcblx0XHRcdFx0XHRcdFx0Ly8g5omT5Y2w5oyH5LukXG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0UGFnZVByaW50KCk7XG5cblx0XHRcdFx0XHRcdFx0Ly8gY29tbWFuZC5zZXRGZWVkKDMwKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZW5kRGF0YSA9IGNvbW1hbmQuZ2V0RGF0YSgpO1xuXG5cdFx0XHRcdFx0Ly8gMS4g5omn6KGM5Y+R6YCBXG5cdFx0XHRcdFx0bGV0IHByaW50UmVzdWx0ID0gdGhpcy5zZW5VU0JEYXRhKCk7XG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0Ly8gMi4g5Yik5pat5Y+R6YCB5piv5ZCm5oiQ5YqfXG5cdFx0XHRcdFx0aWYgKHByaW50UmVzdWx0LnN1Y2Nlc3MpIHtcblx0XHRcdFx0XHQgIC8vIOKchSDlj5HpgIHmiJDlip/vvIzorrDlvZXmiZPljbDml6Xlv5dcblx0XHRcdFx0XHQgIHRoaXMubG9nUHJpbnRFdmVudChcIuaJk+WNsOWQjlwiLCBcIuaJk+WNsFwiLCByZXF1ZXN0RGF0YS51bmlxdWVWYWx1ZSk7XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHQgIC8vIOKdjCDlj5HpgIHlpLHotKXvvIzmj5DnpLrnlKjmiLfvvIzkuI3orrDlvZXml6Xlv5dcblx0XHRcdFx0XHQgIHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdCAgICB0aXRsZTogXCLmiZPljbDlpLHotKXvvIzmnKrorrDlvZXml6Xlv5dcIixcblx0XHRcdFx0XHQgICAgZHVyYXRpb246IDIwMDBcblx0XHRcdFx0XHQgIH0pO1xuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5vbGRiZ3MgPSAgdGhpcy5yZXBvcnRlZFF1YW50aXR5O1xuXHRcdFx0XHRcdFx0XHRcdFx0dGhpcy5iZ3I9XG5cdFx0XHRcdFx0XHRcdC8v5LuO5paw5Yi35paw5bel5Y2V5L+h5oGvXG5cdFx0XHRcdFx0XHRcdGxvYWRPcmRlckRldGFpbHMoKTtcblx0XHRcdFx0XHRcdFx0Ly/ku47mlrDliLfmlrDljoblj7LorrDlvZVcblx0XHRcdFx0XHRcblx0XHRcdFx0XHRcdFx0dGhpcy5mZXRjaEhpc3RvcnlSZWNvcmRzKHRoaXMub3JkZXJObyk7XG5cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCJFcnJvciBkdXJpbmcgcHJpbnQgcmVxdWVzdDpcIiwgZXJyKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblxuXG5cdFx0XHRcdH0gY2F0Y2ggKGVycikge1xuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGR1cmluZyBwcmludCByZXF1ZXN0OicsIGVycik7XG5cdFx0XHRcdH1cblx0XHRcdH0sXG5cdFx0XHQvLyAgc3BsaXRUZXh0QnlXaWR0aCh0ZXh0LCBtYXhDaGFyc1BlckxpbmUpIHtcblx0XHRcdC8vICAgY29uc3QgbGluZXMgPSBbXTtcblx0XHRcdC8vICAgd2hpbGUgKHRleHQubGVuZ3RoID4gbWF4Q2hhcnNQZXJMaW5lKSB7XG5cdFx0XHQvLyAgICAgbGluZXMucHVzaCh0ZXh0LnNsaWNlKDAsIG1heENoYXJzUGVyTGluZSkpOyAvLyDmiKrlj5bmnIDlpKfplb/luqZcblx0XHRcdC8vICAgICB0ZXh0ID0gdGV4dC5zbGljZShtYXhDaGFyc1BlckxpbmUpOyAvLyDliankuIvnmoTnu6fnu63miKrlj5Zcblx0XHRcdC8vICAgfVxuXHRcdFx0Ly8gICBsaW5lcy5wdXNoKHRleHQpOyAvLyDmnIDlkI7kuIDooYxcblx0XHRcdC8vICAgcmV0dXJuIGxpbmVzO1xuXHRcdFx0Ly8gfSxcblx0XHRcdFxuXHRcdFx0Ly8g6KGl5omT5LiK5LiA5byg6K6w5b2VXG5cdFx0XHRyZXByaW50TGFzdCgpIHtcblx0XHRcdFx0XG5cdFx0XHRcdC8vIOemgeeUqOaMiemSrjXnp5Jcblx0XHRcdFx0dGhpcy5pc0J1dHRvbkRpc2FibGVkMiA9IHRydWU7XG5cdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuaXNCdXR0b25EaXNhYmxlZDIgPSBmYWxzZTtcblx0XHRcdFx0fSwgNTAwMCk7XG5cdFx0XHRcdC8vICoq5YWI5qOA5p+lIFVTQiDov57mjqXnirbmgIEqKlxuXHRcdFx0XHRpZiAoIVVzYk1vZHVsZSB8fCAhVXNiTW9kdWxlLmlzVXNiQ29ubmVjdCB8fCAhVXNiTW9kdWxlLmlzVXNiQ29ubmVjdCgpKSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogYCAke3RoaXMubmV0d29ya1N0YXRlfWAsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBcIuivt+ajgOafpeaJk+WNsOacuui/nuaOpVwiLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRzdWNjZXNzOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMubW9kYWxWaXNpYmxlID0gZmFsc2U7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Ly9yZXR1cm47IC8vICoqVVNCIOi/nuaOpeWksei0pe+8jOebtOaOpei/lOWbnu+8jOmYsuatouaJp+ihjOaJk+WNsCoqXG5cdFx0XHRcdH1cblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdHVybDogYGh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9wZXJzb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMucGVyc29uQ29kZSl9YCwgLy8g5L+u5pS55ZCO55qE6K+35rGC6Lev5b6EXG5cdFx0XHRcdFx0bWV0aG9kOiAnR0VUJyxcblx0XHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcy5kYXRhLnBlcnNvbm5lbE5hbWUpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkUGVyc29uID0gcmVzLmRhdGEucGVyc29ubmVsTmFtZTsgLy8g6K6+572u5Lq65ZGY5L+h5oGvXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdQZXJzb24gaW5mbyBsb2FkZWQ6JywgdGhpcy5zZWxlY3RlZFBlcnNvbik7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggcGVyc29uIGluZm86JywgcmVzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogcmVzLFxuXHRcdFx0XHRcdFx0XHRpY29uOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0dGhpcy5zZWxlY3RlZFBlcnNvbiA9IHRoaXMubGFzdFJlcXVlc3REYXRhLnByaW50ZWRCeTtcblx0XHRcdFx0Ly8g6KGl5omT5LiK5LiA5byg6K6w5b2VXG5cdFx0XHRcdHRoaXMuZmV0Y2hIaXN0b3J5UmVjb3Jkcyh0aGlzLm9yZGVyTm8pO1xuXHRcdFx0XHRpZiAoIXRoaXMubGFzdFJlcXVlc3REYXRhKSB7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+ayoeacieWPr+ihpeaJk+eahOiusOW9lScsXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0fVxuXHRcdFx0XHRcdC8vMjAyNTA1MDcg5paw5Yqg6LWL5YC85Y6G5Y+y5p2h56CB5oql5bel5Lq6XG5cdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFBlcnNvbiA9IHRoaXMubGFzdFJlcXVlc3REYXRhLnByaW50ZWRCeTtcblx0XHRcdFx0Y29uc29sZS5sb2coXCLogIHmnaHnoIFcIiwgdGhpcy5vbGRiZ3MpO1xuXHRcdFx0XHQvLyDph43mlrDmiZPljbDkuIrkuIDlvKDorrDlvZVcblx0XHRcdFx0Ly8gYXN5bmMgcmVwcmludExhc3QoKSB7XG5cdFx0XHRcdC8vICAgICAvLyDmuIXnqbrkuIrmrKHnmoTmlbDmja7vvIznoa7kv53ojrflj5bliLDmnIDmlrDmlbDmja5cblx0XHRcdFx0Ly8gICAgIHRoaXMubGFzdFJlcXVlc3REYXRhID0gbnVsbDtcblx0XHRcdFx0Ly8gICAgIHRoaXMuYmdzID0gbnVsbDtcblxuXHRcdFx0XHQvLyAgICAgLy8g562J5b6FIGZldGNoSGlzdG9yeVJlY29yZHMg6K+35rGC5a6M5oiQXG5cdFx0XHRcdC8vICAgICBhd2FpdCB0aGlzLmZldGNoSGlzdG9yeVJlY29yZHModGhpcy5vcmRlck5vKTtcblx0XHRcdFx0Ly8gY29uc29sZS5sb2coXCLliLfmlrBcIiwgdGhpcy5sYXN0UmVxdWVzdERhdGEpO1xuXHRcdFx0XHQvLyAgICAgLy8g5qOA5p+l5piv5ZCm5pyJ5Y6G5Y+y6K6w5b2V77yM5aaC5p6c5rKh5pyJ5YiZ5o+Q56S6XG5cdFx0XHRcdC8vICAgICBpZiAoIXRoaXMubGFzdFJlcXVlc3REYXRhIHx8IHRoaXMuYmdzID09IG51bGwpIHtcblx0XHRcdFx0Ly8gICAgICAgICB1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0Ly8gICAgICAgICAgICAgdGl0bGU6ICfmsqHmnInlj6/ooaXmiZPnmoTorrDlvZUnLFxuXHRcdFx0XHQvLyAgICAgICAgICAgICBpY29uOiAnbm9uZScsXG5cdFx0XHRcdC8vICAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdC8vICAgICAgICAgfSk7XG5cdFx0XHRcdC8vICAgICAgICAgcmV0dXJuOyAgLy8g6YCA5Ye677yM6YG/5YWN57un57ut5omn6KGM5omT5Y2wXG5cdFx0XHRcdC8vICAgICB9XG5cdFx0XHQgIC8vICoq6K6w5b2VIFwi6KGl5omT5YmNXCIg5LqL5Lu2Kipcblx0XHRcdCAgICB0aGlzLmxvZ1ByaW50RXZlbnQoXCLmiZPljbDliY1cIiwgXCLooaXmiZNcIiwgdGhpcy5sYXN0UmVxdWVzdERhdGEpO1xuXHRcdFx0XHQvLyDmiZPljbDlhoXlrrnmoLflvI/orr7nva5cblx0XHRcdFx0Y29uc3QgY29tbWFuZCA9IHRzYy5qcFByaW50ZXIuY3JlYXRlTmV3KCk7XG5cblx0XHRcdFx0Ly8g6K6+572u5a695bqmIDEwMG1tIOWSjOmrmOW6piA4MG1t77yI5o2i566X5ZCO5aSn57qmIDc5OXg2Mzkg5YOP57Sg77yJXG5cdFx0XHRcdGNvbW1hbmQuc2V0U2l6ZSgxMDAsIDgwKTtcblx0XHRcdFx0Ly9jb21tYW5kLnNldEJhY2tGZWVkKDIuNSk7XG5cdFx0XHRcdC8vIOWkluahhue6v+adoVxuXHRcdFx0XHRjb21tYW5kLnNldENscygpO1xuXHRcdFx0XHRjb21tYW5kLnNldEJveCgxMCwgMTAsIDc4OSwgNjI5KTsgLy8g5aSW5qGG77yM6Led56a76aG16Z2i6L6557yYIDEwcHhcblxuXHRcdFx0XHQvLyDnrKzkuIDpg6jliIbvvJrmnaHnoIHjgIHlt6XljZXlj7fjgIHkvpvlupTllYbkv6Hmga8gKyDlpKfkuoznu7TnoIFcblx0XHRcdFx0Y29tbWFuZC5zZXRCYXIoMjAsIDQwLCBcIjEyOFwiLCAxMDAsIDEsIDAsIDIsIHRoaXMubGFzdFJlcXVlc3REYXRhKTsgLy8g5p2h56CBXG5cdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMCwgNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIFwi54mp5paZ5p2h56CBOiBcIik7XG5cdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgxNTAsIDQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCB0aGlzLmxhc3RSZXF1ZXN0RGF0YSk7XG5cblx0XHRcdFx0Ly8g5bel5Y2V5Y+3XG5cdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMCwgMTAwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuW3peWNleWPtzogXCIpO1xuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMTUwLCAxMDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMuc2VsZWN0ZWRPcmRlcik7XG5cblx0XHRcdFx0Ly8g5L6b5bqU5ZWG5L+h5oGvXG5cdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMCwgMTYwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIumcgOaxguWNleaNruWPtzogXCIpO1xuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMTUwLCAxNjAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMub3JkZXJEZXRhaWxzLnJlcXVpcmVtZW50RG9jKTtcblxuXHRcdFx0XHQvLyDlj7PkvqflpKfkuoznu7TnoIFcblx0XHRcdFx0Y29tbWFuZC5zZXRRUig1NTAsIDEwMCwgXCJMXCIsIDYsIFwiQVwiLCB0aGlzLmxhc3RSZXF1ZXN0RGF0YSk7IC8vIOWkp+S6jOe7tOeggVxuXG5cdFx0XHRcdC8vIOesrOS6jOmDqOWIhu+8mueJqeaWmee8lueggVxuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjAsIDIyMCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLnianmlpnnvJbnoIE6IFwiKTtcblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDE1MCwgMjIwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCB0aGlzLm9yZGVyRGV0YWlscy5pdGVtTm8pO1xuXG5cblx0XHRcdFx0Ly8g56ys5LiJ6YOo5YiG77ya54mp5paZ5ZCN56ewXG5cdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMCwgMjgwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIueJqeaWmeWQjeensDogXCIpO1xuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMTUwLCAyODAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMub3JkZXJEZXRhaWxzLml0ZW1uYW1lKTtcblxuXHRcdFx0XHQvLyDnrKzlm5vpg6jliIbvvJrmlbDph4/kuI7pnIDmsYLljZXmja7lj7dcblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwLCAzNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIFwi5pWw6YePOiBcIik7XG5cdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgxMjAsIDM0MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgdGhpcy5vbGRiZ3MpO1xuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjAwLCAzNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIFwi5omT5Y2w5Lq6OiBcIik7XG5cblxuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjkwLCAzNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMuc2VsZWN0ZWRQZXJzb24pO1xuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoNDAwLCAzNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIFwi5omT5Y2w5pe26Ze0OiBcIik7XG5cdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCg1MzAsIDM0MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgdGhpcy5mb3JtYXREYXRlMihuZXcgRGF0ZSgpKSk7XG5cdFx0XHRcdC8vIOesrOS6lOmDqOWIhu+8muW3puS+p+S6jOe7tOeggSArIOinhOagvOWei+WPt1xuXHRcdFx0XHRjb21tYW5kLnNldFFSKDIwLCA0MDAsIFwiTFwiLCA1LCBcIkFcIiwgdGhpcy5sYXN0UmVxdWVzdERhdGEpOyAvLyDlt6bkvqfkuoznu7TnoIFcblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwMCwgNDAwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuinhOagvOWei+WPtzogXCIpO1xuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjAwLCA0NDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMub3JkZXJEZXRhaWxzLml0ZW1tb2RlbCk7XG5cblx0XHRcdFx0Ly8gY29tbWFuZC5zZXRUZXh0KDM1MCwgNTEwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuazqOWhkei9pumXtFwiKTtcblx0XHRcdFx0Ly8gY29tbWFuZC5zZXRUZXh0KDM1MSwgNTExLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuazqOWhkei9pumXtFwiKTtcblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwMCwgNTM1LCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuaFiOa6quW4guWkj+iSmeeUteWZqOaciemZkOWFrOWPuOS4qOazqOWhkei9pumXtFwiKTtcblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwMSwgNTM2LCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuaFiOa6quW4guWkj+iSmeeUteWZqOaciemZkOWFrOWPuOS4qOazqOWhkei9pumXtFwiKTtcblxuXHRcdFx0XHQvLyDmiZPljbDmjIfku6Rcblx0XHRcdFx0Y29tbWFuZC5zZXRQYWdlUHJpbnQoKTtcblx0XHRcdFx0Y29tbWFuZC5zZXRGZWVkKDMpO1xuXHRcdFx0XHR0aGlzLnNlbmREYXRhID0gY29tbWFuZC5nZXREYXRhKCk7XG5cdFx0XHQvLyAxLiDmiafooYzlj5HpgIFcblx0XHRcdGxldCBwcmludFJlc3VsdCA9IHRoaXMuc2VuVVNCRGF0YSgpO1xuXHRcdFx0XG5cdFx0XHQvLyAyLiDliKTmlq3lj5HpgIHmmK/lkKbmiJDlip9cblx0XHRcdGlmIChwcmludFJlc3VsdC5zdWNjZXNzKSB7XG5cdFx0XHQvLyDlj5HpgIHmiJDlip/vvIzorrDlvZXmiZPljbDml6Xlv5dcblx0XHRcdCAgdGhpcy5sb2dQcmludEV2ZW50KFwi5omT5Y2w5ZCOXCIsIFwi6KGl5omTXCIsIHRoaXMubGFzdFJlcXVlc3REYXRhKTtcblx0XHRcdH0gZWxzZSB7XG5cdFx0XHQvLyDlj5HpgIHlpLHotKXvvIzmj5DnpLrnlKjmiLfvvIzkuI3orrDlvZXml6Xlv5dcblx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHR0aXRsZTogXCLmiZPljbDlpLHotKXvvIzmnKrorrDlvZXml6Xlv5dcIixcblx0XHRcdFx0ZHVyYXRpb246IDIwMDBcblx0XHRcdH0pO1xuXHRcdFx0fVxuRlxuXHRcdFx0XHQvLyDlj5HpgIHmlbDmja5cblx0XHRcdFx0dGhpcy5zZW5VU0JEYXRhKCk7XG5cdFx0ICAgIC8vICoq6K6w5b2VIFwi6KGl5omT5ZCOXCIg5LqL5Lu2Kipcblx0XHQgIFxuXHRcdFx0fVxuXHRcdCxcblx0bG9nUHJpbnRFdmVudChldmVudFR5cGUsIHByaW50VHlwZSwgYmFyY29kZVZhbHVlKSB7XG5cdFx0ICBcblx0XHRcdCBcblx0ICAgIGNvbnN0IHJlcXVlc3REYXRhID0ge1xuXHQgICAgICAgIGJhcmNvZGU6IGJhcmNvZGVWYWx1ZSwgIC8vIOadoeeggVxuXHQgICAgICAgIHdvcmtlcjogdGhpcy5wZXJzb25Db2RlLCAgLy8g5oql5bel5Lq6XG5cdCAgICAgICAgZXZlbnRUeXBlOiBldmVudFR5cGUsIC8vIFwi5omT5Y2w5YmNXCIg5oiWIFwi5omT5Y2w5ZCOXCJcblx0ICAgICAgICBwcmludFR5cGU6IHByaW50VHlwZSwgIC8vIFwi5omT5Y2wXCIg5oiWIFwi6KGl5omTXCJcblx0ICAgICAgICBvcmRlck5vOiB0aGlzLnNlbGVjdGVkT3JkZXIsIC8vIOW3peWNleWPt1xuXHQgICAgICAgIGxpbmU6IHRoaXMuc2VsZWN0ZWRMaW5lICxcblx0XHRcdHZlcnNpb246dGhpcy52ZXJzaW9uLy8g57q/5L2TXG5cdCAgICB9O1xuXHRcdGNvbnNvbGUubG9nKHJlcXVlc3REYXRhKTtcblx0ICAgIHVuaS5yZXF1ZXN0KHtcblx0ICAgICAgICB1cmw6IFwiaHR0cDovLzE5Mi4xNjguMC4xMDc6NDQzODAvYXBpL0xvZ1ByaW50RXZlbnQvbG9nRXZlbnRcIixcblx0ICAgICAgICBtZXRob2Q6ICdQT1NUJyxcblx0ICAgICAgICBoZWFkZXI6IHtcblx0ICAgICAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuXHQgICAgICAgIH0sXG5cdCAgICAgICAgZGF0YTogcmVxdWVzdERhdGEsXG5cdCAgICAgICAgc3VjY2VzczogKHJlc3BvbnNlKSA9PiB7XG5cdCAgICAgICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXNDb2RlID09PSAyMDApIHtcblx0ICAgICAgICAgICAgICAgIGNvbnNvbGUubG9nKGAke2V2ZW50VHlwZX0gLSAke3ByaW50VHlwZX0g6K6w5b2V5oiQ5YqfYCk7XG5cdCAgICAgICAgICAgIH0gZWxzZSB7XG5cdCAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKGAke2V2ZW50VHlwZX0gLSAke3ByaW50VHlwZX0g6K6w5b2V5aSx6LSlOmAsIHJlc3BvbnNlKTtcblx0ICAgICAgICAgICAgfVxuXHQgICAgICAgIH0sXG5cdCAgICAgICAgZmFpbDogKGVycikgPT4ge1xuXHQgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwi6K+35rGC5aSx6LSlOlwiLCBlcnIpO1xuXHQgICAgICAgIH1cblx0ICAgIH0pO1xuXHR9XG5cdFx0fVxuXHR9O1xuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///11\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 _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 2));\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n//\n\n// import JsBarcode from 'jsbarcode'; // 寮曞叆 JsBarcode 搴揬n// import printTemplate from '../../print.js'; // 瀵煎叆璺緞鍚戜笂涓ょ骇\n// import util from '@/components/kk-printer/utils/util.js';\n// import * as blesdk from '@/components/kk-printer/utils/bluetoolth.js';\n// import kkPrinter from '@/components/kk-printer/index.vue';\n//import CustomToast from '../../CustomToast/CustomToast.vue';\n\nvar tsc = __webpack_require__(/*! ../../components/gprint/tsc.js */ 13);\nvar esc = __webpack_require__(/*! ../../components/gprint/esc.js */ 16);\nvar UsbModule = uni.requireNativePlugin(\"gp-usb\");\nvar _default = {\n data: function data() {\n var _ref;\n return _ref = {\n showHistoryPopup: false,\n // 鎺у埗寮瑰嚭妗嗘樉绀篭n selectedPerson: '',\n selectedLine: '',\n selectedOrder: '',\n personOptions: [],\n personList: [],\n // 瀛樺偍浠庡悗绔幏鍙栫殑浜哄憳鏁版嵁\n personIndex: -1,\n personCode: '',\n //浜哄憳缂栫爜\n lineCode: '',\n //浜х嚎缂栫爜\n lineOptions: [],\n // 瀛樺偍浜х嚎鏁版嵁\n lineList: [],\n // 瀛樺偍浠庡悗绔幏鍙栫殑浜х嚎鏁版嵁\n orderOptions: [],\n // 瀛樺偍宸ュ崟鏁版嵁\n orderList: [],\n // 瀛樺偍浠庡悗绔幏鍙栫殑宸ュ崟鏁版嵁\n historyRecords: [],\n // 鐢ㄤ簬寮圭獥涓樉绀虹殑鍘嗗彶鎵撳嵃璁板綍\n dailyList: [],\n version: '1.0.0',\n // 榛樿鍊硷紝濡傛灉鏃犳硶鑾峰彇鍒欐樉绀烘鍊糪n orderDetails: {\n requirementDoc: '',\n // 闇�姹傚崟鎹甛n productionOrder: '',\n // 鐢熶骇璁㈠崟\n orderQuantity: '',\n // 璁㈠崟鏁伴噺\n producedQuantity: '',\n // 宸茬敓浜ф暟\n bzsl: '',\n // 鎺ㄨ崘鍖呰鏁癨n gdzt: '',\n itemId: '',\n // 鐗╂枡ID\n itemNo: '',\n // 鐗╂枡缂栫爜\n itemname: '',\n // 鐗╂枡鍚嶇О\n itemmodel: '' // 瑙勬牸鍨嬪彿\n },\n\n lastRequestData: null,\n // 鐢ㄤ簬淇濆瓨鏈�鍚庝竴娆℃墦鍗扮殑 requestData\n bgs: null,\n reportedQuantity: '',\n dailyCapacity: '0',\n // 姣忔棩浜ц兘\n checkedInspection: null,\n // 榛樿涓烘湭鐐规\n checkedMaintenance: null,\n // 榛樿涓烘湭缁存姢\n checkXJ: null,\n checkFirstPass: null,\n printData: {\n STRP1: \"001\",\n STRP2: \"渚涘簲鍟咥\",\n STRP3: \"鐗╂枡缂栫爜12345\",\n STRP4: \"鐗╂枡鍚嶇ОABC\",\n STRP5: \"100\",\n STRP6: \"2024-09-11\",\n STRP7: \"瑙勬牸鍨嬪彿鎻忚堪\",\n STRP8: \"鏉$爜鍐呭\",\n STRP13: \"闇�姹傚崟鎹�123\"\n },\n historyList: [],\n // 瀛樺偍鍘嗗彶鎵撳嵃璁板綍\n personName: '',\n // 鐢ㄤ簬鏄剧ず閫変腑鐨勪汉鍛樺悕绉癨n personId: 0,\n materialInfo: {},\n // 瀛樺偍鐗╂枡淇℃伅\n sendData: '',\n isButtonDisabled: false,\n // 鎺у埗鎸夐挳鐘舵�乗n isButtonDisabled2: false,\n // 鎺у埗鎸夐挳鐘舵�乗n networkState: \"妫�娴嬩腑...\",\n deviceState: \"妫�娴嬩腑...\",\n networkCheckInterval: null,\n usbCheckInterval: null,\n refreshTimer: null\n }, (0, _defineProperty2.default)(_ref, \"networkState\", \"妫�娴嬩腑...\"), (0, _defineProperty2.default)(_ref, \"deviceState\", \"妫�娴嬩腑...\"), (0, _defineProperty2.default)(_ref, \"networkModalVisible\", false), (0, _defineProperty2.default)(_ref, \"usbModalVisible\", false), (0, _defineProperty2.default)(_ref, \"updateChecked\", false), _ref;\n },\n // components:{\n // \tkkPrinter\n // },\n onReady: function onReady() {\n var _this = this;\n setTimeout(function () {\n _this.checkUsbStatus(); // 寤惰繜妫�娴� USB 鐘舵�侊紝閬垮厤鍒濆鍖栨湭瀹屾垚\n }, 1000);\n },\n mounted: function mounted() {\n this.startUsbCheck(); // 瀹氭椂妫�鏌� USB 杩炴帴鐘舵�乗n this.startRandomRefresh(); // 杩涘叆椤甸潰寮�濮嬮殢鏈哄埛鏂癨n this.loadPersons(); // 鍦ㄧ粍浠舵寕杞芥椂鍔犺浇浜哄憳淇℃伅\n this.loadLines(); // 鍦ㄧ粍浠舵寕杞芥椂鍔犺浇浜х嚎淇℃伅 \t\t\n __f__(\"log\", \"椤甸潰鍔犺浇锛屽紑濮嬫娴� USB 鍜岀綉缁�...\", \" at pages/scbg/scbg.vue:350\");\n __f__(\"log\", \"UsbModule:\", UsbModule, \" at pages/scbg/scbg.vue:351\"); // 鎵撳嵃 UsbModule 鏄惁鍙敤\n __f__(\"log\", \"UsbModule.isUsbConnect:\", UsbModule === null || UsbModule === void 0 ? void 0 : UsbModule.isUsbConnect, \" at pages/scbg/scbg.vue:352\"); // 鎵撳嵃鏂规硶鏄惁瀛樺湪\n if (typeof plus !== 'undefined') {\n this.version = plus.runtime.version;\n }\n this.checkForUpdate(); // 鍚姩鏃舵鏌ョ増鏈洿鏂癨n //this.startAutoUpdateCheck(); // 寮�濮嬪畾鏃舵鏌ョ増鏈洿鏂癨n this.listenNetworkStatus(); // 瀹炴椂鐩戝惉缃戠粶鍙樺寲\n\n this.manualCheck(); // 杩涘叆椤甸潰鍏堟娴嬩竴娆n this.startNetworkCheck(); // 瀹氭椂妫�鏌ョ綉缁滅姸鎬� \n\n this.usbConnect();\n },\n methods: {\n // 寮�鍚嚜鍔ㄦ洿鏂版娴媆n startAutoUpdateCheck: function startAutoUpdateCheck() {\n var _this2 = this;\n this.updateCheckInterval = setInterval(function () {\n _this2.checkForUpdate(); // 姣忛殧涓�娈垫椂闂存鏌ユ洿鏂癨n }, 1 * 60 * 1000); // 10 鍒嗛挓鑷姩妫�娴嬩竴娆n },\n beforeDestroy: function beforeDestroy() {\n this.stopAutoUpdateCheck(); // 椤甸潰閿�姣佹椂鍋滄瀹氭椂鍣紝闃叉鍐呭瓨娉勬紡\n },\n checkForUpdate: function checkForUpdate() {\n var _this3 = this;\n if (this.updateChecked) return;\n uni.request({\n url: \"http://192.168.0.107:10086/update.json\",\n // 浣犵殑鏈嶅姟鍣� JSON 鏂囦欢鍦板潃\n success: function success(res) {\n var newVersion = res.data.version;\n var currentVersion = plus.runtime.version; // 鑾峰彇褰撳墠 APK 鐗堟湰鍙穃n __f__(\"log\", \"褰撳墠鐗堟湰:\", currentVersion, \"鏈�鏂扮増鏈�:\", newVersion, \" at pages/scbg/scbg.vue:385\");\n if (newVersion > currentVersion) {\n // uni.showModal({\n // \ttitle: \"鍙戠幇鏂扮増鏈琝",\n // \tcontent: \"鏄惁涓嬭浇鏈�鏂扮増鏈�?\",\n // \tsuccess: (modalRes) => {\n // \t\tif (modalRes.confirm) {\n // \t\t\tthis.downloadNewApk(res.data.apkUrl);\n // \t\t}\n // \t}\n // });\n _this3.downloadNewApk(res.data.apkUrl);\n _this3.updateChecked = true; // 鏍囪鏇存柊宸叉鏌ヨ繃\n // // 濡傛灉鏈夋柊鐗堟湰锛屽紑濮嬩笅杞絓n //download(res.data.apkUrl);\n }\n },\n\n fail: function fail(err) {\n __f__(\"error\", \"鏇存柊妫�鏌ュけ璐�:\", err, \" at pages/scbg/scbg.vue:404\");\n }\n });\n },\n downloadNewApk: function downloadNewApk(apkUrl) {\n uni.showToast({\n title: \"寮�濮嬩笅杞芥洿鏂�...\",\n icon: \"none\",\n duration: 2000\n });\n uni.downloadFile({\n url: apkUrl,\n success: function success(res) {\n if (res.statusCode === 200) {\n plus.runtime.install(res.tempFilePath, {\n force: true\n }, function () {\n __f__(\"log\", \"瀹夎鎴愬姛锛岄噸鍚簲鐢╘", \" at pages/scbg/scbg.vue:424\");\n //plus.runtime.restart();\n //plus.runtime.quit();\n // uni.navigateBack()\n }, function (e) {\n __f__(\"error\", \"瀹夎澶辫触:\", e, \" at pages/scbg/scbg.vue:429\");\n });\n }\n },\n fail: function fail(err) {\n __f__(\"error\", \"涓嬭浇澶辫触:\", err, \" at pages/scbg/scbg.vue:434\");\n uni.showToast({\n title: \"涓嬭浇澶辫触锛岃妫�鏌ョ綉缁淺",\n icon: \"none\",\n duration: 2000\n });\n }\n });\n },\n // 鍚姩闅忔満鍒锋柊\n startRandomRefresh: function startRandomRefresh() {\n var _this4 = this;\n var randomInterval = Math.floor(Math.random() * (30000 - 10000 + 1)) + 10000; // 10~30绉掗殢鏈烘椂闂碶n __f__(\"log\", \"\\u4E0B\\u6B21\\u5237\\u65B0\\u5C06\\u5728 \".concat(randomInterval / 1000, \" \\u79D2\\u540E\\u6267\\u884C\"), \" at pages/scbg/scbg.vue:446\");\n this.refreshTimer = setTimeout(function () {\n _this4.refreshStatus(); // 鎵ц鍒锋柊\n _this4.startRandomRefresh(); // 閫掑綊璋冪敤锛岀‘淇濇寔缁埛鏂癨n }, randomInterval);\n },\n // 1. 瀹炴椂鐩戝惉缃戠粶鍙樺寲\n listenNetworkStatus: function listenNetworkStatus() {\n var _this5 = this;\n uni.onNetworkStatusChange(function (res) {\n _this5.networkState = res.isConnected ? \"缃戠粶杩炴帴姝e父\" : \"鏃犵綉缁滆繛鎺";\n __f__(\"log\", \"缃戠粶鐘舵�佸彉鏇�:\", _this5.networkState, \" at pages/scbg/scbg.vue:457\");\n uni.showToast({\n title: \"\\u7F51\\u7EDC\\u72B6\\u6001: \".concat(_this5.networkState),\n duration: 1500\n });\n });\n },\n // 2. 姣� 5 绉掓鏌ョ綉缁滅姸鎬乗n checkNetworkStatus: function checkNetworkStatus() {\n var _this6 = this;\n uni.getNetworkType({\n success: function success(res) {\n _this6.networkState = res.networkType !== \"none\" ? \"缃戠粶杩炴帴姝e父\" : \"鏃犵綉缁滆繛鎺";\n __f__(\"log\", \"缃戠粶妫�娴嬬粨鏋�:\", _this6.networkState, \" at pages/scbg/scbg.vue:470\");\n if (_this6.networkState == \"鏃犵綉缁滆繛鎺") {\n uni.showToast({\n title: \" \".concat(_this6.networkState),\n duration: 1500,\n icon: \"none\"\n });\n // uni.showModal({\n // title: ` ${this.networkState}`,\n // content: \"璇锋鏌ョ綉缁� 杩炴帴杩炴帴\",\n // showCancel: false,\n // \tsuccess: () => {\n // \t this.modalVisible = false;\n\n // \t\t\t\t\t\t\t\t\t\t }\n // });\n }\n }\n });\n },\n startNetworkCheck: function startNetworkCheck() {\n var _this7 = this;\n this.networkCheckInterval = setInterval(function () {\n _this7.checkNetworkStatus();\n }, 5000);\n },\n // 3. 姣� 5 绉掓鏌� USB 杩炴帴鐘舵�乗n checkUsbStatus: function checkUsbStatus() {\n try {\n if (!UsbModule || !UsbModule.isUsbConnect) {\n throw new Error(\"UsbModule 鏈畾涔夋垨鏂规硶涓嶅瓨鍦╘");\n }\n var _res = UsbModule.isUsbConnect();\n this.deviceState = _res ? \"鎵撳嵃鏈� 杩炴帴姝e父\" : \"鎵撳嵃鏈� 杩炴帴澶辫触\";\n __f__(\"log\", \"鎵撳嵃鏈� 妫�娴嬬粨鏋�:\", this.deviceState, \" at pages/scbg/scbg.vue:507\");\n if (this.deviceState == \"鎵撳嵃鏈� 杩炴帴澶辫触\") {\n uni.showToast({\n title: \" \".concat(this.deviceState),\n duration: 1500,\n icon: \"none\"\n });\n this.usbConnect();\n // uni.showModal({\n // title: ` ${this.deviceState}`,\n // content: \"璇锋鏌SB 杩炴帴杩炴帴\",\n // showCancel: false,\n // \t success: () => {\n // \t this.modalVisible = false;\n // \t \t\t\tthis.usbConnect();\n // \t }\n // });\n }\n } catch (error) {\n __f__(\"error\", \"鎵撳嵃鏈� 妫�娴嬮敊璇�:\", error, \" at pages/scbg/scbg.vue:530\");\n this.deviceState = \"鎵撳嵃鏈� 妫�娴嬪け璐";\n uni.showToast({\n title: \"鎵撳嵃鏈� 妫�娴嬪け璐ワ紝璇锋鏌ユ彃浠禱",\n duration: 2000,\n icon: \"none\"\n });\n // uni.showModal({\n // title: ` ${this.deviceState}`,\n // content: \"璇锋鏌SB 杩炴帴杩炴帴\",\n // showCancel: false,\n // \t success: () => {\n // \t this.modalVisible = false;\n // \t\t\t this.usbConnect();\n // \t }\n // });\n this.usbConnect();\n }\n },\n startUsbCheck: function startUsbCheck() {\n var _this8 = this;\n this.usbCheckInterval = setInterval(function () {\n _this8.checkUsbStatus();\n __f__(\"log\", \"瀹氭椂鍚姩鎴愬姛\", \" at pages/scbg/scbg.vue:554\");\n }, 5000);\n },\n // 4. 鎵嬪姩瑙﹀彂妫�娴媆n manualCheck: function manualCheck() {\n __f__(\"log\", \"鎵嬪姩妫�娴嬫墽琛�...\", \" at pages/scbg/scbg.vue:560\");\n this.checkNetworkStatus();\n this.checkUsbStatus();\n },\n senUSBData: function senUSBData() {\n if (this.sendData == null) {\n uni.showToast({\n title: \"璇峰厛鐢熸垚鎸囦护\",\n duration: 1500\n });\n return;\n }\n var hexStr = '';\n var data = Array.from(this.sendData);\n for (var i = 0; i < data.length; i++) {\n var str = Number(data[i]).toString(16);\n str = str.length == 1 ? \"0\" + str : str;\n hexStr += str;\n }\n //console.log(hexStr)\n var printNum = 1; // 鎵撳嵃娆℃暟\n var hexPrintData = '';\n for (var n = 0; n < printNum; n++) {\n hexPrintData += hexStr;\n }\n var res = UsbModule.write(hexPrintData);\n uni.showToast({\n title: res.msg,\n duration: 1500\n });\n this.result = '鍙戦�侀暱搴︼細' + hexPrintData.length + \"锛涜繑鍥炵粨鏋滐細\" + JSON.stringify(res);\n },\n usbConnect: function usbConnect() {\n __f__(\"log\", \"111\", UsbModule, \" at pages/scbg/scbg.vue:597\");\n var res = UsbModule.initUsbDevice();\n if (res) {\n this.deviceState = \"鎵撳嵃鏈� 杩炴帴姝e父\";\n } else {\n this.deviceState = \"鎵撳嵃鏈� 杩炴帴澶辫触\";\n }\n uni.showToast({\n title: this.deviceState,\n duration: 1500\n });\n },\n isConnect: function isConnect() {\n var res = UsbModule.isUsbConnect();\n if (res) {\n this.deviceState = \"閾炬帴鐘舵�佹甯竆";\n } else {\n this.deviceState = \"閾炬帴鐘舵�佸け璐";\n }\n uni.showToast({\n title: this.deviceState,\n duration: 1500\n });\n },\n disConnect: function disConnect() {\n var res = UsbModule.disUsbConnect();\n if (res) {\n this.deviceState = \"\";\n }\n uni.showToast({\n title: \"鏂紑杩炴帴鎴愬姛\",\n duration: 1500\n });\n },\n createLabel: function createLabel() {\n var command = tsc.jpPrinter.createNew();\n command.setSize(40, 30);\n command.setGap(2);\n command.setCls();\n command.setText(50, 10, \"TSS24.BF2\", 1, 1, \"鎵撳嵃娴嬭瘯\"); // 鏂囨湰\n command.setQR(50, 50, \"L\", 5, \"A\", \"www.poscom.cn\"); // 浜岀淮鐮乗n command.setBar(50, 180, \"128\", 64, 1, 2, 4, \"200902125410\"); // 鏉$爜\n command.setPagePrint();\n this.sendData = command.getData();\n uni.showToast({\n title: '鏍囩鎸囦护鐢熸垚鎴愬姛',\n duration: 1500\n });\n },\n // onPrint(opt){\n // \tlet strCmd =blesdk.CreatCPCLPage(560,500,1,0); \n // \tstrCmd += blesdk.addCPCLLine(0,210,560,210,3);\n // \tstrCmd += blesdk.addCPCLText(10,0,'4','3',0,'8.14');\n // \tstrCmd += blesdk.addCPCLBarCode(270,0,'128',80,0,1,1,'00051');\n // \tstrCmd += blesdk.addCPCLText(290,80,'7','2',0,'00051');\n // \tstrCmd += blesdk.addCPCLText(40,110,'3','0',0,'CHICKEN FEET (BONELESS)-Copy-Copy');\n // \tstrCmd += blesdk.addCPCLSETMAG(2,2);\n // \tstrCmd += blesdk.addCPCLText(40,150,'55','0',0,'鏃犻楦$埅 涓�鐩掞紙绾�1.5纾咃級');\n // \tstrCmd += blesdk.addCPCLSETMAG(0,0);\n // \tstrCmd += blesdk.addCPCLText(350,180,'7','2',0,'2019-08-12');\n // \tstrCmd += blesdk.addCPCLLocation(2);\n // \tstrCmd += blesdk.addCPCLQRCode(0,220,'M', 2, 6, 'qr code test');\n // \tstrCmd += blesdk.addCPCLPrint();\n // \tthis.bufferData = strCmd;\n // }, \n // 鍔犺浇浜哄憳淇℃伅\n fetchPersonInfo: function fetchPersonInfo() {\n var _this9 = this;\n __f__(\"log\", 'Fetching person info for:', this.personCode, \" at pages/scbg/scbg.vue:666\"); // 妫�鏌ヤ簨浠舵槸鍚﹁Е鍙慭n\n if (this.personCode.trim()) {\n uni.request({\n url: \"http://192.168.0.107:44380/api/persons/\".concat(encodeURIComponent(this.personCode)),\n // 淇敼鍚庣殑璇锋眰璺緞\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n __f__(\"log\", res.data.personnelName, \" at pages/scbg/scbg.vue:677\");\n _this9.selectedPerson = res.data.personnelName; // 璁剧疆浜哄憳淇℃伅\n __f__(\"log\", 'Person info loaded:', _this9.selectedPerson, \" at pages/scbg/scbg.vue:679\");\n } else {\n __f__(\"error\", 'Failed to fetch person info:', res, \" at pages/scbg/scbg.vue:681\");\n }\n },\n fail: function fail(err) {\n uni.showToast({\n title: res,\n icon: 'none',\n duration: 2000\n });\n }\n });\n }\n },\n // 鍔犺浇浜х嚎淇℃伅\n fetchLineInfo: function fetchLineInfo() {\n var _this10 = this;\n __f__(\"log\", 'Fetching line info for:', this.lineCode, \" at pages/scbg/scbg.vue:698\"); // 妫�鏌ヤ簨浠舵槸鍚﹁Е鍙慭n\n if (this.lineCode.trim()) {\n uni.request({\n url: \"http://192.168.0.107:44380/api/lines/\".concat(encodeURIComponent(this.lineCode.trim())),\n // 淇敼鍚庣殑璇锋眰璺緞\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n __f__(\"log\", 'Line info loaded:', res.data.lineNo, \" at pages/scbg/scbg.vue:709\");\n _this10.selectedLine = res.data.lineName; // 璁剧疆浜х嚎淇℃伅\n __f__(\"log\", 'Line info loaded:', _this10.selectedLine, \" at pages/scbg/scbg.vue:711\");\n // 閫夋嫨瀹屼骇绾垮悗鍔犺浇瀵瑰簲鐨勫伐鍗曚俊鎭痋n _this10.loadOrders(_this10.lineCode);\n // 閫夋嫨瀹屼骇绾垮悗鍔犺浇瀵瑰簲鐨勬瘡鏃ヤ骇鑳戒俊鎭痋n _this10.loadDailyCapacity(_this10.lineCode);\n } else {\n __f__(\"error\", 'Failed to fetch line info:', res, \" at pages/scbg/scbg.vue:717\");\n }\n },\n fail: function fail(err) {\n uni.showToast({\n title: res,\n icon: 'none',\n duration: 2000\n });\n }\n });\n }\n },\n viewHistory: function viewHistory() {\n this.fetchHistoryRecords(this.selectedOrder);\n this.showHistoryPopup = true;\n },\n // 鍏抽棴寮圭獥\n closePopup: function closePopup() {\n this.showHistoryPopup = false;\n },\n // 鑾峰彇鍘嗗彶鎵撳嵃璁板綍\n fetchHistoryRecords: function fetchHistoryRecords(orderNo) {\n var _this11 = this;\n uni.request({\n url: \"http://192.168.0.107:44380/api/print/printHistory?orderNo=\".concat(encodeURIComponent(orderNo)),\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n // 姝g‘瑙f瀽鍚庣杩斿洖鐨勬暟鎹甛n __f__(\"log\", '123', res.data.historyRecords, \" at pages/scbg/scbg.vue:751\");\n //鑾峰彇鏈�鏂版潯鐮乗n _this11.lastRequestData = res.data.historyRecords[0].itemBarcode;\n _this11.oldbgs = res.data.historyRecords[0].quantity;\n __f__(\"log\", _this11.lastRequestData, \" at pages/scbg/scbg.vue:755\");\n // 灏嗗悗绔暟鎹槧灏勫埌鍓嶇浣跨敤鐨勬牸寮廫n _this11.historyList = (res.data.historyRecords || []).map(function (record) {\n return {\n itemBarcode: record.itemBarcode || '鏈煡鏉$爜',\n // 纭繚瑙f瀽瀛楁\n quantity: record.quantity || '鏈煡鏁伴噺',\n // 鎵撳嵃鏁伴噺瀛楁\n printDate: record.printDate || '鏈煡鏃堕棿',\n // 鎵撳嵃鏃堕棿\n printedBy: record.printedBy || '' // 鎶ュ伐浜篭n };\n });\n\n __f__(\"log\", 'History records loaded:', _this11.historyList, \" at pages/scbg/scbg.vue:763\");\n } else {\n __f__(\"error\", 'Failed to fetch history records:', res, \" at pages/scbg/scbg.vue:765\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching history records:', err, \" at pages/scbg/scbg.vue:769\");\n }\n });\n },\n // 鍔犺浇浜哄憳淇℃伅\n loadPersons: function loadPersons() {\n var _this12 = this;\n uni.request({\n url: \"http://192.168.0.107:44380/api/persons\",\n // 鏇挎崲涓轰綘鐨� ASP.NET Core API 鍦板潃\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n // 杩囨护鎺夋湁绌哄�兼垨鏃犳晥鏁版嵁鐨勯」\n // this.personOptions = res.data.filter(person => person.personName && person.personName.trim());\n\n _this12.personList = res.data.filter(function (person) {\n return person.personName && person.personName.trim().length > 0;\n });\n _this12.personOptions = _this12.personList.map(function (it) {\n return it.personName;\n });\n _this12.personIndex = -1;\n } else {\n __f__(\"error\", 'Failed to fetch persons:', res, \" at pages/scbg/scbg.vue:793\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching persons:', err, \" at pages/scbg/scbg.vue:797\");\n }\n });\n },\n // 鏇存柊閫変腑鐨勪汉鍛樺悕绉癨n updatePersonName: function updatePersonName(e) {\n this.personIndex = e.detail.value;\n if (this.personIndex == -1) {\n return;\n }\n this.selectedPerson = this.personList[this.personIndex].personName;\n this.personId = this.personList[this.personIndex].personId;\n __f__(\"log\", this.personId + \" :\" + this.selectedPerson, \" at pages/scbg/scbg.vue:811\");\n },\n //鍔犺浇浜х嚎淇℃伅\n loadLines: function loadLines() {\n var _this13 = this;\n uni.request({\n url: \"http://192.168.0.107:44380/api/lines\",\n // 鏇挎崲涓轰綘鐨� API 鍦板潃\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n _this13.lineList = res.data.filter(function (line) {\n return line.lineName && line.lineName.trim().length > 0;\n });\n _this13.lineOptions = _this13.lineList.map(function (it) {\n return it.lineName;\n });\n __f__(\"log\", 'Line options loaded:', _this13.lineOptions, \" at pages/scbg/scbg.vue:827\");\n } else {\n __f__(\"error\", 'Failed to fetch lines:', res, \" at pages/scbg/scbg.vue:829\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching lines:', err, \" at pages/scbg/scbg.vue:833\");\n }\n });\n },\n // 鏇存柊閫変腑鐨勪骇绾縗n updateLine: function updateLine(e) {\n var selectedIndex = e.detail.value; //鏁扮粍涓嬫爣\n this.selectedLine = this.lineOptions[selectedIndex];\n this.lineCode = this.lineList[selectedIndex].lineNo; // 淇濆瓨閫変腑鐨勪骇绾跨紪鍙穃n __f__(\"log\", 'Selected line:', this.selectedLine, \" at pages/scbg/scbg.vue:842\");\n __f__(\"log\", 'Selected lineNo:', this.lineNo, \" at pages/scbg/scbg.vue:843\");\n this.selectedOrder = null;\n // 閫夋嫨瀹屼骇绾垮悗鍔犺浇瀵瑰簲鐨勫伐鍗曚俊鎭痋n this.loadOrders(this.lineCode);\n // 閫夋嫨瀹屼骇绾垮悗鍔犺浇瀵瑰簲鐨勬瘡鏃ヤ骇鑳戒俊鎭痋n this.loadDailyCapacity(this.lineCode);\n },\n // 鍔犺浇姣忔棩浜ц兘淇℃伅\n loadDailyCapacity: function loadDailyCapacity(lineNo) {\n var _this14 = this;\n uni.request({\n url: \"http://192.168.0.107:44380/api/capacity?lineNo=\".concat(encodeURIComponent(lineNo)),\n // 鍋囪浣犳湁涓�涓幏鍙栨瘡鏃ヤ骇鑳界殑API\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200 && Array.isArray(res.data) && res.data.length > 0) {\n // 鍙栧嚭杩斿洖鏁扮粍涓殑绗竴涓璞$殑 daily 鍊糪n __f__(\"log\", res.data, \" at pages/scbg/scbg.vue:861\");\n _this14.dailyCapacity = res.data[0].daily; // 鐩存帴淇濆瓨姣忔棩浜ц兘\n _this14.checkedInspection = res.data[0].is_DJ == 1;\n _this14.checkedMaintenance = res.data[0].is_WH == 1;\n _this14.checkXJ = null;\n _this14.checkFirstPass = null;\n __f__(\"log\", 'Daily capacity loaded:', _this14.dailyCapacity, \" at pages/scbg/scbg.vue:867\");\n } else {\n _this14.dailyCapacity = '鏆傛棤鏁版嵁'; // 鎴栬�呰缃负鍏朵粬榛樿鍊糪n _this14.checkedInspection = null; // 閲嶇疆鐐规鐘舵�乗n _this14.checkedMaintenance = null; // 閲嶇疆淇濆吇鐘舵�乗n _this14.checkXJ = null;\n _this14.checkFirstPass = null;\n __f__(\"error\", 'Failed to fetch daily capacity or no data:', res, \" at pages/scbg/scbg.vue:875\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching daily capacity:', err, \" at pages/scbg/scbg.vue:880\");\n }\n });\n },\n // 鍔犺浇宸ュ崟淇℃伅\n loadOrders: function loadOrders(lineNo) {\n var _this15 = this;\n uni.request({\n url: \"http://192.168.0.107:44380/api/orders?lineNo=\".concat(encodeURIComponent(lineNo)),\n // 浣跨敤瀛樺偍鐨刲ineNo\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n _this15.orderList = res.data.filter(function (order) {\n return order.orderNo && order.orderNo.trim().length > 0;\n });\n _this15.orderOptions = _this15.orderList.map(function (it) {\n return it.orderNo;\n });\n __f__(\"log\", 'Order options loaded:', _this15.orderOptions, \" at pages/scbg/scbg.vue:899\");\n } else {\n __f__(\"error\", 'Failed to fetch orders:', res, \" at pages/scbg/scbg.vue:901\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching orders:', err, \" at pages/scbg/scbg.vue:905\");\n }\n });\n },\n // 鏇存柊閫変腑鐨勫伐鍗昞n loadOrderDetails: function loadOrderDetails(e) {\n var _this16 = this;\n var selectedIndex = e.detail.value; // 鑾峰彇閫夋嫨鐨勭储寮昞n this.selectedOrder = this.orderOptions[selectedIndex]; // 鑾峰彇閫変腑鐨勫伐鍗曠紪鍙穃n this.orderNo = this.orderList[selectedIndex].orderNo; // 淇濆瓨閫変腑鐨勫伐鍗曠紪鍙穃n __f__(\"log\", 'tiaoma', this.selectedOrder, \" at pages/scbg/scbg.vue:914\");\n __f__(\"log\", 'Selected orderNo:', this.orderNo, \" at pages/scbg/scbg.vue:915\");\n this.orderDetails = {\n requirementDoc: '',\n // 闇�姹傚崟鎹甛n productionOrder: '',\n // 鐢熶骇璁㈠崟\n orderQuantity: '',\n // 璁㈠崟鏁伴噺\n bzsl: '',\n // 鎺ㄨ崘鍖呰鏁癨n gdzt: '',\n producedQuantity: '',\n // 宸茬敓浜ф暟\n itemId: '',\n // 鐗╂枡ID\n itemNo: '',\n // 鐗╂枡缂栫爜\n itemname: '',\n // 鐗╂枡鍚嶇О\n itemmodel: '' // 瑙勬牸鍨嬪彿\n };\n //20250213 淇敼鍘嗗彶鎵撳嵃璁板綍涓簄ull \n lastRequestData: null;\n __f__(\"log\", 'lastRequestData:', this.lastRequestData, \" at pages/scbg/scbg.vue:932\");\n // 璋冪敤寮�宸ュ伐鍗曟柟娉昞n this.startProduction();\n // 璋冪敤 API 鑾峰彇宸ュ崟璇︽儏\n uni.request({\n url: \"http://192.168.0.107:44380/api/orderDetails?orderNo=\".concat(encodeURIComponent(this.orderNo)),\n // 浣跨敤瀛樺偍鐨刼rderNo\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n __f__(\"log\", 'gongdanxinx', res.data, \" at pages/scbg/scbg.vue:943\");\n if (res.statusCode === 200) {\n _this16.orderDetails = {\n requirementDoc: res.data.requirementDoc,\n // 闇�姹傚崟鎹甛n productionOrder: res.data.productionOrder,\n // 鐢熶骇璁㈠崟\n orderQuantity: res.data.orderQuantity,\n // 璁㈠崟鏁伴噺\n bzsl: res.data.bzsl,\n // 鎺ㄨ崘鍖呰鏁癨n gdzt: res.data.gdzt,\n // 宸ュ崟鐘舵�乗n producedQuantity: res.data.producedQuantity,\n // 宸茬敓浜ф暟\n itemId: res.data.itemId,\n // 鐗╂枡ID\n itemNo: res.data.itemNO,\n // 鐗╂枡缂栫爜\n itemname: res.data.itemname,\n // 鐗╂枡鍚嶇О\n itemmodel: res.data.itemmodel // 瑙勬牸鍨嬪彿\n };\n // 鏍规嵁 sj 鍜� xj 鐨勫�兼潵璁剧疆棣栨鍜屽贰妫�鐘舵�乗n // 鏍规嵁 sj 鍜� xj 鐨勫�兼潵璁剧疆棣栨鍜屽贰妫�鐘舵�乗n if (res.data.sj === 1) {\n _this16.checkFirstPass = true; // 棣栨鍚堟牸\n } else if (res.data.sj === 2) {\n _this16.checkFirstPass = false; // 棣栨涓嶅悎鏍糪n } else {\n _this16.checkFirstPass = null; // 棣栨鏈仛\n }\n\n if (res.data.xj === 1) {\n _this16.checkXJ = true; // 宸℃鍚堟牸\n } else if (res.data.xj === 2) {\n _this16.checkXJ = false; // 宸℃涓嶅悎鏍糪n } else {\n _this16.checkXJ = null; // 宸℃鏈仛\n }\n\n __f__(\"log\", 'Order details loaded:', _this16.orderDetails, \" at pages/scbg/scbg.vue:978\");\n } else {\n __f__(\"error\", 'Failed to fetch order details:', res, \" at pages/scbg/scbg.vue:981\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching order details:', err, \" at pages/scbg/scbg.vue:985\");\n }\n });\n // 鑾峰彇鍘嗗彶鎵撳嵃璁板綍\n __f__(\"log\", '12355', this.orderNo, \" at pages/scbg/scbg.vue:989\");\n this.historyList = [];\n this.fetchHistoryRecords(this.orderNo);\n },\n //鍒锋柊\n refreshStatus: function refreshStatus() {\n var _this17 = this;\n if (!this.lineCode) {\n __f__(\"warn\", \"鏈�夋嫨浜х嚎锛氳澶囩偣妫�鍜屼繚鍏荤姸鎬佽缃负鏈仛\", \" at pages/scbg/scbg.vue:998\");\n this.checkedInspection = 0;\n this.checkedMaintenance = 0;\n }\n if (!this.selectedOrder) {\n __f__(\"warn\", \"鏈�夋嫨宸ュ崟锛氶妫�鍜屽贰妫�鐘舵�佽缃负鏈仛\", \" at pages/scbg/scbg.vue:1004\");\n this.checkFirstPass = null;\n this.checkXJ = null;\n }\n __f__(\"log\", this.lineCode, \" at pages/scbg/scbg.vue:1008\");\n __f__(\"log\", this.selectedOrder, \" at pages/scbg/scbg.vue:1009\");\n uni.request({\n url: \"http://192.168.0.107:44380/api/refresh\",\n method: 'POST',\n header: {\n 'Content-Type': 'application/json'\n },\n data: {\n lineNo: this.lineCode,\n orderNo: this.selectedOrder || \"N/A\" // 鏈�夋嫨宸ュ崟鏃朵娇鐢ㄥ崰浣嶇\n },\n\n success: function success(res) {\n if (res.statusCode === 200 && res.data) {\n __f__(\"log\", \"鍒锋柊鎴愬姛锛歕", res.data, \" at pages/scbg/scbg.vue:1022\");\n\n // 瑙f瀽鍚庣杩斿洖鐨勬暟瀛楃姸鎬乗n _this17.checkFirstPass = _this17.mapStatus(res.data.checkFirstPass); // 鏄犲皠棣栨鐘舵�乗n _this17.checkXJ = _this17.mapStatus(res.data.checkXJ); // 鏄犲皠宸℃鐘舵�乗n _this17.checkedInspection = res.data.checkedInspection === 1; // 鐐规锛�1=true, 2=false\n _this17.checkedMaintenance = res.data.checkedMaintenance === 1; // 淇濆吇锛�1=true, 2=false\n __f__(\"log\", \"鍒锋柊鎴愬姛锛氶妫�\", _this17.checkFirstPass, \" at pages/scbg/scbg.vue:1029\");\n __f__(\"log\", \"鍒锋柊鎴愬姛锛氬贰妫�\", _this17.checkXJ, \" at pages/scbg/scbg.vue:1030\");\n uni.showToast({\n title: '鍒锋柊鎴愬姛',\n icon: 'success'\n });\n } else {\n __f__(\"error\", \"鍒锋柊澶辫触锛歕", res, \" at pages/scbg/scbg.vue:1038\");\n uni.showToast({\n title: '鍒锋柊澶辫触锛屾暟鎹紓甯�',\n icon: 'none'\n });\n }\n },\n fail: function fail(err) {\n __f__(\"error\", \"鍒锋柊鎺ュ彛璇锋眰澶辫触锛歕", err, \" at pages/scbg/scbg.vue:1046\");\n uni.showToast({\n title: '鍒锋柊澶辫触锛岀綉缁滃紓甯�',\n icon: 'none'\n });\n }\n });\n\n // 璋冪敤 API 鑾峰彇宸ュ崟璇︽儏\n uni.request({\n url: \"http://192.168.0.107:44380/api/orderDetails?orderNo=\".concat(encodeURIComponent(this.orderNo)),\n // 浣跨敤瀛樺偍鐨刼rderNo\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n __f__(\"log\", 'gongdanxinx', res.data, \" at pages/scbg/scbg.vue:1062\");\n if (res.statusCode === 200) {\n _this17.orderDetails = {\n requirementDoc: res.data.requirementDoc,\n // 闇�姹傚崟鎹甛n productionOrder: res.data.productionOrder,\n // 鐢熶骇璁㈠崟\n orderQuantity: res.data.orderQuantity,\n // 璁㈠崟鏁伴噺\n bzsl: res.data.bzsl,\n // 鎺ㄨ崘鍖呰鏁癨n gdzt: res.data.gdzt,\n // 宸ュ崟鐘舵�乗n producedQuantity: res.data.producedQuantity,\n // 宸茬敓浜ф暟\n itemId: res.data.itemId,\n // 鐗╂枡ID\n itemNo: res.data.itemNO,\n // 鐗╂枡缂栫爜\n itemname: res.data.itemname,\n // 鐗╂枡鍚嶇О\n itemmodel: res.data.itemmodel // 瑙勬牸鍨嬪彿\n };\n // 鏍规嵁 sj 鍜� xj 鐨勫�兼潵璁剧疆棣栨鍜屽贰妫�鐘舵�乗n // 鏍规嵁 sj 鍜� xj 鐨勫�兼潵璁剧疆棣栨鍜屽贰妫�鐘舵�乗n if (res.data.sj === 1) {\n _this17.checkFirstPass = true; // 棣栨鍚堟牸\n } else if (res.data.sj === 2) {\n _this17.checkFirstPass = false; // 棣栨涓嶅悎鏍糪n } else {\n _this17.checkFirstPass = null; // 棣栨鏈仛\n }\n\n if (res.data.xj === 1) {\n _this17.checkXJ = true; // 宸℃鍚堟牸\n } else if (res.data.xj === 2) {\n _this17.checkXJ = false; // 宸℃涓嶅悎鏍糪n } else {\n _this17.checkXJ = null; // 宸℃鏈仛\n }\n\n __f__(\"log\", 'Order details loaded:', _this17.orderDetails, \" at pages/scbg/scbg.vue:1097\");\n } else {\n __f__(\"error\", 'Failed to fetch order details:', res, \" at pages/scbg/scbg.vue:1100\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Error fetching order details:', err, \" at pages/scbg/scbg.vue:1104\");\n }\n });\n },\n mapStatus: function mapStatus(status) {\n if (status === 3) {\n return null; // 鏈仛\n } else if (status === 1) {\n return true; // 鍚堟牸\n } else if (status === 2) {\n return false; // 涓嶅悎鏍糪n }\n\n return null; // 榛樿鏈仛\n },\n //寮�宸ュ伐鍗昞n startProduction: function startProduction() {\n if (!this.selectedOrder) {\n uni.showToast({\n title: '璇峰厛閫夋嫨宸ュ崟',\n icon: 'none'\n });\n return;\n }\n uni.request({\n url: 'http://192.168.0.107:44380/api/Inspection/startProduction',\n method: 'POST',\n header: {\n 'Content-Type': 'application/json'\n },\n data: {\n orderNo: this.selectedOrder,\n // 浼犲叆宸ュ崟鍙穃n UserId: this.selectedPerson\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n uni.showToast({\n title: res.data.message,\n icon: 'success'\n });\n } else {\n uni.showToast({\n title: res.data.message || '寮�宸ュけ璐�',\n icon: 'none'\n });\n }\n },\n fail: function fail(err) {\n __f__(\"error\", '寮�宸ヨ姹傚け璐�:', err, \" at pages/scbg/scbg.vue:1154\");\n uni.showToast({\n title: '寮�宸ヨ姹傚け璐�',\n icon: 'none'\n });\n }\n });\n },\n // 鏍煎紡鍖栨棩鏈熷嚱鏁癨n formatDate: function formatDate(date) {\n var year = date.getFullYear();\n var month = String(date.getMonth() + 1).padStart(2, '0');\n var day = String(date.getDate()).padStart(2, '0');\n var hours = String(date.getHours()).padStart(2, '0');\n var minutes = String(date.getMinutes()).padStart(2, '0');\n var seconds = String(date.getSeconds()).padStart(2, '0');\n var milliseconds = String(date.getMilliseconds()).padStart(3, '0'); // 姣\n return \"\".concat(year).concat(month).concat(day).concat(hours).concat(minutes).concat(seconds).concat(milliseconds);\n },\n formatDate2: function formatDate2(date) {\n var year = date.getFullYear();\n var month = String(date.getMonth() + 1).padStart(2, '0');\n var day = String(date.getDate()).padStart(2, '0');\n var hours = String(date.getHours()).padStart(2, '0');\n var minutes = String(date.getMinutes()).padStart(2, '0');\n var seconds = String(date.getSeconds()).padStart(2, '0');\n var milliseconds = String(date.getMilliseconds()).padStart(3, '0'); // 姣\n\n //return `${year}/${month}/${day} ${hours}:${minutes}:${seconds}`; // 浣跨敤缁熶竴鐨勬牸寮忥細YYYY/MM/DD HH:mm:ss\n return \"\".concat(year).concat(month).concat(day).concat(hours).concat(minutes).concat(seconds).concat(milliseconds);\n },\n // 棣栨閫佹鍔熻兘\n sendForFirstInspection: function sendForFirstInspection() {\n var orderNumber = this.selectedOrder; // 浠庣粍浠剁姸鎬佷腑鑾峰彇宸ュ崟鍙穃n __f__(\"log\", 'Sending for first inspection with order number:', orderNumber, \" at pages/scbg/scbg.vue:1190\");\n __f__(\"log\", 'Sending for first inspection with personCode:', this.personCode, \" at pages/scbg/scbg.vue:1191\");\n if (orderNumber.trim()) {\n var requestData = {\n ReleaseNo: orderNumber,\n // 浣跨敤浼犲叆鐨勫伐鍗曞彿\n UserId: this.personCode // 纭繚杩欓噷鏈夊搴旂殑鐢ㄦ埛ID\n };\n\n __f__(\"log\", requestData, \" at pages/scbg/scbg.vue:1199\");\n uni.request({\n url: 'http://192.168.0.107:44380/api/Inspection/firstinspection',\n // 纭繚璇锋眰璺緞姝g‘\n method: 'POST',\n header: {\n 'Content-Type': 'application/json'\n },\n data: requestData,\n // 鍙戦�佽姹傛暟鎹甛n success: function success(res) {\n if (res.statusCode === 200) {\n __f__(\"log\", 'First inspection submitted successfully:', res.data, \" at pages/scbg/scbg.vue:1210\");\n uni.showToast({\n title: '棣栨閫佹鎴愬姛',\n icon: 'success',\n duration: 2000\n });\n } else {\n __f__(\"error\", 'Failed to send for first inspection:', res, \" at pages/scbg/scbg.vue:1217\");\n __f__(\"error\", 'res.data.message:', res.data.message, \" at pages/scbg/scbg.vue:1218\");\n uni.showToast({\n title: res.data.message,\n icon: 'none',\n duration: 2000\n });\n }\n },\n fail: function fail(err) {\n __f__(\"error\", 'Request failed:', err, \" at pages/scbg/scbg.vue:1227\");\n uni.showToast({\n title: '缃戠粶閿欒',\n icon: 'none',\n duration: 2000\n });\n }\n });\n } else {\n uni.showToast({\n title: '宸ュ崟鍙蜂笉鑳戒负绌�',\n icon: 'none',\n duration: 2000\n });\n }\n },\n // 鎻愪氦鎶ュ伐淇℃伅鐨勬柟娉昞n printBarcode: function printBarcode() {\n var _this18 = this;\n // **鍏堟鏌� USB 杩炴帴鐘舵��**\n /*\tif (!UsbModule || !UsbModule.isUsbConnect || !UsbModule.isUsbConnect()) {\n \t\tuni.showModal({\n \t\t\ttitle: ` ${this.networkState}`,\n \t\t\tcontent: \"璇锋鏌ユ墦鍗版満杩炴帴\",\n \t\t\tshowCancel: false,\n \t\t\tsuccess: () => {\n \t\t\t\tthis.modalVisible = false;\n \t\t\t\t}\n \t\t});\n \t\treturn; // **USB 杩炴帴澶辫触锛岀洿鎺ヨ繑鍥烇紝闃叉鎵ц鎵撳嵃**\n \t}*/\n\n uni.request({\n url: \"http://192.168.0.107:44380/api/persons/\".concat(encodeURIComponent(this.personCode)),\n // 淇敼鍚庣殑璇锋眰璺緞\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n __f__(\"log\", res.data.personnelName, \" at pages/scbg/scbg.vue:1269\");\n _this18.selectedPerson = res.data.personnelName; // 璁剧疆浜哄憳淇℃伅\n __f__(\"log\", 'Person info loaded:', _this18.selectedPerson, \" at pages/scbg/scbg.vue:1271\");\n } else {\n __f__(\"error\", 'Failed to fetch person info:', res, \" at pages/scbg/scbg.vue:1273\");\n }\n },\n fail: function fail(err) {\n uni.showToast({\n title: res,\n icon: 'none',\n duration: 2000\n });\n }\n });\n\n // 绂佺敤鎸夐挳5绉抃n this.isButtonDisabled = true;\n setTimeout(function () {\n _this18.isButtonDisabled = false;\n }, 5000);\n // 鏍¢獙鎶ュ伐鏁癨n if (this.reportedQuantity <= 0 || Number(this.reportedQuantity) + Number(this.orderDetails.producedQuantity) > Number(this.orderDetails.orderQuantity)) {\n uni.showToast({\n title: '鎶ュ伐鏁版棤鏁堟垨瓒呭嚭璁㈠崟鏁伴噺锛岃妫�鏌ャ��',\n icon: 'none',\n duration: 2000\n });\n // 鏄剧ず鑷畾涔夌殑绾㈣壊鑳屾櫙銆佺櫧鑹插瓧浣撶殑鎻愮ず妗哱n // this.$refs.customToast.showToast('鎶ュ伐鏁版棤鏁堟垨瓒呭嚭璁㈠崟鏁伴噺锛岃妫�鏌ャ��');\n\n return;\n }\n\n // 鏍煎紡鍖栧綋鍓嶆椂闂翠负\"骞存湀鏃ユ椂鍒嗙\"鏍煎紡\n var currentTime = new Date();\n var formattedTime = this.formatDate(currentTime);\n // 鏋勯�犺姹傛暟鎹甛n var requestData = {\n orderNo: this.selectedOrder,\n p_person: this.personCode,\n //reportedQuantity: this.reportedQuantity,\n itemId: this.orderDetails.itemId,\n uniqueValue: \"\".concat(this.orderDetails.itemNo, \"-\").concat(formattedTime),\n // 浣跨敤鏍煎紡鍖栧悗鐨勬椂闂碶n //itemCode: this.orderDetails.itemNo, // 鍋囪鐗╂枡缂栫爜涓篿temId\n //itemSpec: '瑙勬牸鍨嬪彿', // 杩欓噷鍙敼鎴愬疄闄呮暟鎹甛n quantity: Number(this.reportedQuantity) // 纭繚鏄暣鏁癨n };\n\n this.logPrintEvent(\"鎵撳嵃鍓峔", \"鎵撳嵃鏉$爜鍓峔", requestData.uniqueValue);\n // 灏� requestData 淇濆瓨鍒� lastRequestData 涓璡n this.lastRequestData = requestData;\n __f__(\"log\", requestData, \" at pages/scbg/scbg.vue:1324\");\n __f__(\"log\", this.selectedPerson, \" at pages/scbg/scbg.vue:1325\");\n try {\n // 璋冪敤鍚庣 API\n uni.request({\n url: \"http://192.168.0.107:44380/api/print\",\n method: 'POST',\n header: {\n 'Content-Type': 'application/json'\n },\n data: requestData,\n success: function success(response) {\n if (response.statusCode === 200) {\n uni.showToast({\n title: '鏁版嵁鎻愪氦鎴愬姛',\n icon: 'success',\n duration: 2000\n });\n var _currentTime = new Date();\n var formattedTime2 = _this18.formatDate2(_currentTime);\n _this18.lastRequestData = requestData.uniqueValue;\n // 灏嗘墦鍗扮殑鏉$爜璁板綍娣诲姞鍒板巻鍙茶褰曚腑\n _this18.historyList.push({\n itemBarcode: requestData.uniqueValue,\n printDate: formattedTime2.toLocaleString(),\n printedBy: _this18.selectedPerson\n });\n //鏄剧ず鐢熶骇鏁版坊鍔燶n _this18.orderDetails.producedQuantity = Number(_this18.orderDetails.producedQuantity) + Number(_this18.reportedQuantity);\n //鏄剧ず鎶ュ伐鏁版坊鍔燶n _this18.dailyCapacity = Number(_this18.dailyCapacity) + Number(_this18.reportedQuantity);\n _this18.logPrintEvent(\"鎵撳嵃鍓峔", \"鎶ュ伐鎴愬姛\", requestData.uniqueValue);\n } else {\n __f__(\"log\", response.data.message, \" at pages/scbg/scbg.vue:1360\");\n uni.showToast({\n title: response.data.message,\n icon: 'none',\n duration: 2000\n });\n __f__(\"error\", \"Print failed:\", response, \" at pages/scbg/scbg.vue:1366\");\n _this18.logPrintEvent(\"鎵撳嵃鍓峔", \"寮傚父涓旇繑鍥瀄", requestData.uniqueValue);\n //鎵撳嵃鏉$爜\n return;\n }\n // **鍏堣褰� \"鎵撳嵃鍓峔" 浜嬩欢**\n _this18.logPrintEvent(\"鎵撳嵃鍓峔", \"鎵撳嵃\", requestData.uniqueValue);\n //鎵撳嵃鏉$爜\n __f__(\"log\", 'tiaoma', requestData.uniqueValue, \" at pages/scbg/scbg.vue:1374\");\n __f__(\"log\", 'gd', _this18.orderDetails.productionOrder, \" at pages/scbg/scbg.vue:1375\");\n __f__(\"log\", 'tiaoma', _this18.selectedOrder, \" at pages/scbg/scbg.vue:1376\");\n __f__(\"log\", 'gys', _this18.orderDetails.requirementDoc, \" at pages/scbg/scbg.vue:1377\");\n __f__(\"log\", 'wlbm', _this18.orderDetails.itemNo, \" at pages/scbg/scbg.vue:1378\");\n __f__(\"log\", 'wlmc', _this18.orderDetails.itemname, \" at pages/scbg/scbg.vue:1379\");\n __f__(\"log\", 'ggxh', _this18.orderDetails.itemmodel, \" at pages/scbg/scbg.vue:1380\");\n __f__(\"log\", 'sl', _this18.reportedQuantity, \" at pages/scbg/scbg.vue:1381\");\n\n // 鎵撳嵃鍐呭鏍峰紡璁剧疆\n var command = tsc.jpPrinter.createNew();\n\n // 璁剧疆瀹藉害 100mm 鍜岄珮搴� 80mm锛堟崲绠楀悗澶х害 799x639 鍍忕礌锛塡n command.setSize(100, 80);\n\n //command.setBackFeed(2.5);\n\n // 澶栨绾挎潯\n command.setCls();\n command.setBox(10, 10, 789, 629); // 澶栨锛岃窛绂婚〉闈㈣竟缂� 10px\n\n // 绗竴閮ㄥ垎锛氭潯鐮併�佸伐鍗曞彿銆佷緵搴斿晢淇℃伅 + 澶т簩缁寸爜\n command.setBar(20, 40, \"128\", 100, 1, 0, 2, requestData.uniqueValue); // 鏉$爜\n command.setText(20, 40, \"TSS24.BF2\", 1, 1, \"鐗╂枡鏉$爜: \");\n command.setText(150, 40, \"TSS24.BF2\", 1, 1, requestData.uniqueValue);\n\n // 宸ュ崟鍙穃n command.setText(20, 100, \"TSS24.BF2\", 1, 1, \"宸ュ崟鍙�: \");\n command.setText(150, 100, \"TSS24.BF2\", 1, 1, _this18.selectedOrder);\n\n // 渚涘簲鍟嗕俊鎭痋n command.setText(20, 160, \"TSS24.BF2\", 1, 1, \"闇�姹傚崟鎹彿: \");\n command.setText(150, 160, \"TSS24.BF2\", 1, 1, _this18.orderDetails.requirementDoc);\n\n // 鍙充晶澶т簩缁寸爜\n command.setQR(550, 100, \"L\", 6, \"A\", requestData.uniqueValue); // 澶т簩缁寸爜\n\n // 绗簩閮ㄥ垎锛氱墿鏂欑紪鐮乗n command.setText(20, 220, \"TSS24.BF2\", 1, 1, \"鐗╂枡缂栫爜: \");\n command.setText(150, 220, \"TSS24.BF2\", 1, 1, _this18.orderDetails.itemNo);\n\n // 绗笁閮ㄥ垎锛氱墿鏂欏悕绉癨n command.setText(20, 280, \"TSS24.BF2\", 1, 1, \"鐗╂枡鍚嶇О: \");\n command.setText(150, 280, \"TSS24.BF2\", 1, 1, _this18.orderDetails.itemname);\n\n // 绗洓閮ㄥ垎锛氭暟閲忎笌闇�姹傚崟鎹彿\n command.setText(20, 340, \"TSS24.BF2\", 1, 1, \"鏁伴噺: \");\n command.setText(120, 340, \"TSS24.BF2\", 1, 1, _this18.reportedQuantity);\n command.setText(200, 340, \"TSS24.BF2\", 1, 1, \"鎶ュ伐浜�: \");\n command.setText(290, 340, \"TSS24.BF2\", 1, 1, _this18.selectedPerson);\n\n // command.setText(290, 340, \"FONT 3\", 1, 1, this.selectedPerson);\n // command.setText(290, 340, \"TSS24.BF2\", 1, 1, encodeURI(this.selectedPerson));\n command.setText(400, 340, \"TSS24.BF2\", 1, 1, \"鎵撳嵃鏃堕棿: \");\n command.setText(530, 340, \"TSS24.BF2\", 1, 1, _this18.formatDate2(new Date()));\n // 绗簲閮ㄥ垎锛氬乏渚т簩缁寸爜 + 瑙勬牸鍨嬪彿\n command.setQR(20, 400, \"L\", 5, \"A\", requestData.uniqueValue); // 宸︿晶浜岀淮鐮乗n command.setText(200, 400, \"TSS24.BF2\", 1, 1, \"瑙勬牸鍨嬪彿: \");\n command.setText(200, 440, \"TSS24.BF2\", 1, 1, _this18.orderDetails.itemmodel);\n command.setText(200, 535, \"TSS24.BF2\", 1, 1, \"鎱堟邯甯傚钂欑數鍣ㄦ湁闄愬叕鍙镐辅娉ㄥ杞﹂棿\");\n command.setText(201, 536, \"TSS24.BF2\", 1, 1, \"鎱堟邯甯傚钂欑數鍣ㄦ湁闄愬叕鍙镐辅娉ㄥ杞﹂棿\");\n // 鎵撳嵃鎸囦护\n command.setPagePrint();\n\n // command.setFeed(30);\n _this18.sendData = command.getData();\n\n // 1. 鎵ц鍙戦�乗n var printResult = _this18.senUSBData();\n\n // 2. 鍒ゆ柇鍙戦�佹槸鍚︽垚鍔焅n if (printResult.success) {\n // 鉁� 鍙戦�佹垚鍔燂紝璁板綍鎵撳嵃鏃ュ織\n _this18.logPrintEvent(\"鎵撳嵃鍚嶾", \"鎵撳嵃\", requestData.uniqueValue);\n } else {\n // 鉂� 鍙戦�佸け璐ワ紝鎻愮ず鐢ㄦ埛锛屼笉璁板綍鏃ュ織\n uni.showToast({\n title: \"鎵撳嵃澶辫触锛屾湭璁板綍鏃ュ織\",\n duration: 2000\n });\n }\n _this18.oldbgs = _this18.reportedQuantity;\n _this18.bgr =\n //浠庢柊鍒锋柊宸ュ崟淇℃伅\n loadOrderDetails();\n //浠庢柊鍒锋柊鍘嗗彶璁板綍\n\n _this18.fetchHistoryRecords(_this18.orderNo);\n },\n fail: function fail(err) {\n __f__(\"error\", \"Error during print request:\", err, \" at pages/scbg/scbg.vue:1471\");\n }\n });\n } catch (err) {\n __f__(\"error\", 'Error during print request:', err, \" at pages/scbg/scbg.vue:1477\");\n }\n },\n // splitTextByWidth(text, maxCharsPerLine) {\n // const lines = [];\n // while (text.length > maxCharsPerLine) {\n // lines.push(text.slice(0, maxCharsPerLine)); // 鎴彇鏈�澶ч暱搴n // text = text.slice(maxCharsPerLine); // 鍓╀笅鐨勭户缁埅鍙朶n // }\n // lines.push(text); // 鏈�鍚庝竴琛孿n // return lines;\n // },\n // 琛ユ墦涓婁竴寮犺褰昞n reprintLast: function reprintLast() {\n var _this19 = this;\n // 绂佺敤鎸夐挳5绉抃n this.isButtonDisabled2 = true;\n setTimeout(function () {\n _this19.isButtonDisabled2 = false;\n }, 5000);\n // **鍏堟鏌� USB 杩炴帴鐘舵��**\n if (!UsbModule || !UsbModule.isUsbConnect || !UsbModule.isUsbConnect()) {\n uni.showModal({\n title: \" \".concat(this.networkState),\n content: \"璇锋鏌ユ墦鍗版満杩炴帴\",\n showCancel: false,\n success: function success() {\n _this19.modalVisible = false;\n }\n });\n //return; // **USB 杩炴帴澶辫触锛岀洿鎺ヨ繑鍥烇紝闃叉鎵ц鎵撳嵃**\n }\n\n uni.request({\n url: \"http://192.168.0.107:44380/api/persons/\".concat(encodeURIComponent(this.personCode)),\n // 淇敼鍚庣殑璇锋眰璺緞\n method: 'GET',\n header: {\n 'Content-Type': 'application/json'\n },\n success: function success(res) {\n if (res.statusCode === 200) {\n __f__(\"log\", res.data.personnelName, \" at pages/scbg/scbg.vue:1518\");\n _this19.selectedPerson = res.data.personnelName; // 璁剧疆浜哄憳淇℃伅\n __f__(\"log\", 'Person info loaded:', _this19.selectedPerson, \" at pages/scbg/scbg.vue:1520\");\n } else {\n __f__(\"error\", 'Failed to fetch person info:', res, \" at pages/scbg/scbg.vue:1522\");\n }\n },\n fail: function fail(err) {\n uni.showToast({\n title: res,\n icon: 'none',\n duration: 2000\n });\n }\n });\n this.selectedPerson = this.lastRequestData.printedBy;\n // 琛ユ墦涓婁竴寮犺褰昞n this.fetchHistoryRecords(this.orderNo);\n if (!this.lastRequestData) {\n uni.showToast({\n title: '娌℃湁鍙ˉ鎵撶殑璁板綍',\n icon: 'none',\n duration: 2000\n });\n return;\n }\n //20250507 鏂板姞璧嬪�煎巻鍙叉潯鐮佹姤宸ヤ汉\n this.selectedPerson = this.lastRequestData.printedBy;\n __f__(\"log\", \"鑰佹潯鐮乗", this.oldbgs, \" at pages/scbg/scbg.vue:1546\");\n // 閲嶆柊鎵撳嵃涓婁竴寮犺褰昞n // async reprintLast() {\n // // 娓呯┖涓婃鐨勬暟鎹紝纭繚鑾峰彇鍒版渶鏂版暟鎹甛n // this.lastRequestData = null;\n // this.bgs = null;\n\n // // 绛夊緟 fetchHistoryRecords 璇锋眰瀹屾垚\n // await this.fetchHistoryRecords(this.orderNo);\n // console.log(\"鍒锋柊\", this.lastRequestData);\n // // 妫�鏌ユ槸鍚︽湁鍘嗗彶璁板綍锛屽鏋滄病鏈夊垯鎻愮ず\n // if (!this.lastRequestData || this.bgs == null) {\n // uni.showToast({\n // title: '娌℃湁鍙ˉ鎵撶殑璁板綍',\n // icon: 'none',\n // duration: 2000\n // });\n // return; // 閫�鍑猴紝閬垮厤缁х画鎵ц鎵撳嵃\n // }\n // **璁板綍 \"琛ユ墦鍓峔" 浜嬩欢**\n this.logPrintEvent(\"鎵撳嵃鍓峔", \"琛ユ墦\", this.lastRequestData);\n // 鎵撳嵃鍐呭鏍峰紡璁剧疆\n var command = tsc.jpPrinter.createNew();\n\n // 璁剧疆瀹藉害 100mm 鍜岄珮搴� 80mm锛堟崲绠楀悗澶х害 799x639 鍍忕礌锛塡n command.setSize(100, 80);\n //command.setBackFeed(2.5);\n // 澶栨绾挎潯\n command.setCls();\n command.setBox(10, 10, 789, 629); // 澶栨锛岃窛绂婚〉闈㈣竟缂� 10px\n\n // 绗竴閮ㄥ垎锛氭潯鐮併�佸伐鍗曞彿銆佷緵搴斿晢淇℃伅 + 澶т簩缁寸爜\n command.setBar(20, 40, \"128\", 100, 1, 0, 2, this.lastRequestData); // 鏉$爜\n command.setText(20, 40, \"TSS24.BF2\", 1, 1, \"鐗╂枡鏉$爜: \");\n command.setText(150, 40, \"TSS24.BF2\", 1, 1, this.lastRequestData);\n\n // 宸ュ崟鍙穃n command.setText(20, 100, \"TSS24.BF2\", 1, 1, \"宸ュ崟鍙�: \");\n command.setText(150, 100, \"TSS24.BF2\", 1, 1, this.selectedOrder);\n\n // 渚涘簲鍟嗕俊鎭痋n command.setText(20, 160, \"TSS24.BF2\", 1, 1, \"闇�姹傚崟鎹彿: \");\n command.setText(150, 160, \"TSS24.BF2\", 1, 1, this.orderDetails.requirementDoc);\n\n // 鍙充晶澶т簩缁寸爜\n command.setQR(550, 100, \"L\", 6, \"A\", this.lastRequestData); // 澶т簩缁寸爜\n\n // 绗簩閮ㄥ垎锛氱墿鏂欑紪鐮乗n command.setText(20, 220, \"TSS24.BF2\", 1, 1, \"鐗╂枡缂栫爜: \");\n command.setText(150, 220, \"TSS24.BF2\", 1, 1, this.orderDetails.itemNo);\n\n // 绗笁閮ㄥ垎锛氱墿鏂欏悕绉癨n command.setText(20, 280, \"TSS24.BF2\", 1, 1, \"鐗╂枡鍚嶇О: \");\n command.setText(150, 280, \"TSS24.BF2\", 1, 1, this.orderDetails.itemname);\n\n // 绗洓閮ㄥ垎锛氭暟閲忎笌闇�姹傚崟鎹彿\n command.setText(20, 340, \"TSS24.BF2\", 1, 1, \"鏁伴噺: \");\n command.setText(120, 340, \"TSS24.BF2\", 1, 1, this.oldbgs);\n command.setText(200, 340, \"TSS24.BF2\", 1, 1, \"鎵撳嵃浜�: \");\n command.setText(290, 340, \"TSS24.BF2\", 1, 1, this.selectedPerson);\n command.setText(400, 340, \"TSS24.BF2\", 1, 1, \"鎵撳嵃鏃堕棿: \");\n command.setText(530, 340, \"TSS24.BF2\", 1, 1, this.formatDate2(new Date()));\n // 绗簲閮ㄥ垎锛氬乏渚т簩缁寸爜 + 瑙勬牸鍨嬪彿\n command.setQR(20, 400, \"L\", 5, \"A\", this.lastRequestData); // 宸︿晶浜岀淮鐮乗n command.setText(200, 400, \"TSS24.BF2\", 1, 1, \"瑙勬牸鍨嬪彿: \");\n command.setText(200, 440, \"TSS24.BF2\", 1, 1, this.orderDetails.itemmodel);\n\n // command.setText(350, 510, \"TSS24.BF2\", 1, 1, \"娉ㄥ杞﹂棿\");\n // command.setText(351, 511, \"TSS24.BF2\", 1, 1, \"娉ㄥ杞﹂棿\");\n command.setText(200, 535, \"TSS24.BF2\", 1, 1, \"鎱堟邯甯傚钂欑數鍣ㄦ湁闄愬叕鍙镐辅娉ㄥ杞﹂棿\");\n command.setText(201, 536, \"TSS24.BF2\", 1, 1, \"鎱堟邯甯傚钂欑數鍣ㄦ湁闄愬叕鍙镐辅娉ㄥ杞﹂棿\");\n\n // 鎵撳嵃鎸囦护\n command.setPagePrint();\n command.setFeed(3);\n this.sendData = command.getData();\n // 1. 鎵ц鍙戦�乗n var printResult = this.senUSBData();\n\n // 2. 鍒ゆ柇鍙戦�佹槸鍚︽垚鍔焅n if (printResult.success) {\n // 鍙戦�佹垚鍔燂紝璁板綍鎵撳嵃鏃ュ織\n this.logPrintEvent(\"鎵撳嵃鍚嶾", \"琛ユ墦\", this.lastRequestData);\n } else {\n // 鍙戦�佸け璐ワ紝鎻愮ず鐢ㄦ埛锛屼笉璁板綍鏃ュ織\n uni.showToast({\n title: \"鎵撳嵃澶辫触锛屾湭璁板綍鏃ュ織\",\n duration: 2000\n });\n }\n F;\n // 鍙戦�佹暟鎹甛n this.senUSBData();\n // **璁板綍 \"琛ユ墦鍚嶾" 浜嬩欢**\n },\n logPrintEvent: function logPrintEvent(eventType, printType, barcodeValue) {\n var requestData = {\n barcode: barcodeValue,\n // 鏉$爜\n worker: this.personCode,\n // 鎶ュ伐浜篭n eventType: eventType,\n // \"鎵撳嵃鍓峔" 鎴� \"鎵撳嵃鍚嶾"\n printType: printType,\n // \"鎵撳嵃\" 鎴� \"琛ユ墦\"\n orderNo: this.selectedOrder,\n // 宸ュ崟鍙穃n line: this.selectedLine,\n version: this.version // 绾夸綋\n };\n\n __f__(\"log\", requestData, \" at pages/scbg/scbg.vue:1658\");\n uni.request({\n url: \"http://192.168.0.107:44380/api/LogPrintEvent/logEvent\",\n method: 'POST',\n header: {\n 'Content-Type': 'application/json'\n },\n data: requestData,\n success: function success(response) {\n if (response.statusCode === 200) {\n __f__(\"log\", \"\".concat(eventType, \" - \").concat(printType, \" \\u8BB0\\u5F55\\u6210\\u529F\"), \" at pages/scbg/scbg.vue:1668\");\n } else {\n __f__(\"error\", \"\".concat(eventType, \" - \").concat(printType, \" \\u8BB0\\u5F55\\u5931\\u8D25:\"), response, \" at pages/scbg/scbg.vue:1670\");\n }\n },\n fail: function fail(err) {\n __f__(\"error\", \"璇锋眰澶辫触:\", err, \" at pages/scbg/scbg.vue:1674\");\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 */ 12)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvc2NiZy9zY2JnLnZ1ZSJdLCJuYW1lcyI6WyJ0c2MiLCJyZXF1aXJlIiwiZXNjIiwiVXNiTW9kdWxlIiwidW5pIiwicmVxdWlyZU5hdGl2ZVBsdWdpbiIsImRhdGEiLCJzaG93SGlzdG9yeVBvcHVwIiwic2VsZWN0ZWRQZXJzb24iLCJzZWxlY3RlZExpbmUiLCJzZWxlY3RlZE9yZGVyIiwicGVyc29uT3B0aW9ucyIsInBlcnNvbkxpc3QiLCJwZXJzb25JbmRleCIsInBlcnNvbkNvZGUiLCJsaW5lQ29kZSIsImxpbmVPcHRpb25zIiwibGluZUxpc3QiLCJvcmRlck9wdGlvbnMiLCJvcmRlckxpc3QiLCJoaXN0b3J5UmVjb3JkcyIsImRhaWx5TGlzdCIsInZlcnNpb24iLCJvcmRlckRldGFpbHMiLCJyZXF1aXJlbWVudERvYyIsInByb2R1Y3Rpb25PcmRlciIsIm9yZGVyUXVhbnRpdHkiLCJwcm9kdWNlZFF1YW50aXR5IiwiYnpzbCIsImdkenQiLCJpdGVtSWQiLCJpdGVtTm8iLCJpdGVtbmFtZSIsIml0ZW1tb2RlbCIsImxhc3RSZXF1ZXN0RGF0YSIsImJncyIsInJlcG9ydGVkUXVhbnRpdHkiLCJkYWlseUNhcGFjaXR5IiwiY2hlY2tlZEluc3BlY3Rpb24iLCJjaGVja2VkTWFpbnRlbmFuY2UiLCJjaGVja1hKIiwiY2hlY2tGaXJzdFBhc3MiLCJwcmludERhdGEiLCJTVFJQMSIsIlNUUlAyIiwiU1RSUDMiLCJTVFJQNCIsIlNUUlA1IiwiU1RSUDYiLCJTVFJQNyIsIlNUUlA4IiwiU1RSUDEzIiwiaGlzdG9yeUxpc3QiLCJwZXJzb25OYW1lIiwicGVyc29uSWQiLCJtYXRlcmlhbEluZm8iLCJzZW5kRGF0YSIsImlzQnV0dG9uRGlzYWJsZWQiLCJpc0J1dHRvbkRpc2FibGVkMiIsIm5ldHdvcmtTdGF0ZSIsImRldmljZVN0YXRlIiwibmV0d29ya0NoZWNrSW50ZXJ2YWwiLCJ1c2JDaGVja0ludGVydmFsIiwicmVmcmVzaFRpbWVyIiwib25SZWFkeSIsInNldFRpbWVvdXQiLCJjaGVja1VzYlN0YXR1cyIsIm1vdW50ZWQiLCJzdGFydFVzYkNoZWNrIiwic3RhcnRSYW5kb21SZWZyZXNoIiwibG9hZFBlcnNvbnMiLCJsb2FkTGluZXMiLCJpc1VzYkNvbm5lY3QiLCJwbHVzIiwicnVudGltZSIsImNoZWNrRm9yVXBkYXRlIiwibGlzdGVuTmV0d29ya1N0YXR1cyIsIm1hbnVhbENoZWNrIiwic3RhcnROZXR3b3JrQ2hlY2siLCJ1c2JDb25uZWN0IiwibWV0aG9kcyIsInN0YXJ0QXV0b1VwZGF0ZUNoZWNrIiwidXBkYXRlQ2hlY2tJbnRlcnZhbCIsInNldEludGVydmFsIiwiYmVmb3JlRGVzdHJveSIsInN0b3BBdXRvVXBkYXRlQ2hlY2siLCJ1cGRhdGVDaGVja2VkIiwicmVxdWVzdCIsInVybCIsInN1Y2Nlc3MiLCJyZXMiLCJuZXdWZXJzaW9uIiwiY3VycmVudFZlcnNpb24iLCJkb3dubG9hZE5ld0FwayIsImFwa1VybCIsImZhaWwiLCJlcnIiLCJzaG93VG9hc3QiLCJ0aXRsZSIsImljb24iLCJkdXJhdGlvbiIsImRvd25sb2FkRmlsZSIsInN0YXR1c0NvZGUiLCJpbnN0YWxsIiwidGVtcEZpbGVQYXRoIiwiZm9yY2UiLCJlIiwicmFuZG9tSW50ZXJ2YWwiLCJNYXRoIiwiZmxvb3IiLCJyYW5kb20iLCJyZWZyZXNoU3RhdHVzIiwib25OZXR3b3JrU3RhdHVzQ2hhbmdlIiwiaXNDb25uZWN0ZWQiLCJjaGVja05ldHdvcmtTdGF0dXMiLCJnZXROZXR3b3JrVHlwZSIsIm5ldHdvcmtUeXBlIiwiRXJyb3IiLCJlcnJvciIsInNlblVTQkRhdGEiLCJoZXhTdHIiLCJBcnJheSIsImZyb20iLCJpIiwibGVuZ3RoIiwic3RyIiwiTnVtYmVyIiwidG9TdHJpbmciLCJwcmludE51bSIsImhleFByaW50RGF0YSIsIm4iLCJ3cml0ZSIsIm1zZyIsInJlc3VsdCIsIkpTT04iLCJzdHJpbmdpZnkiLCJpbml0VXNiRGV2aWNlIiwiaXNDb25uZWN0IiwiZGlzQ29ubmVjdCIsImRpc1VzYkNvbm5lY3QiLCJjcmVhdGVMYWJlbCIsImNvbW1hbmQiLCJqcFByaW50ZXIiLCJjcmVhdGVOZXciLCJzZXRTaXplIiwic2V0R2FwIiwic2V0Q2xzIiwic2V0VGV4dCIsInNldFFSIiwic2V0QmFyIiwic2V0UGFnZVByaW50IiwiZ2V0RGF0YSIsImZldGNoUGVyc29uSW5mbyIsInRyaW0iLCJlbmNvZGVVUklDb21wb25lbnQiLCJtZXRob2QiLCJoZWFkZXIiLCJwZXJzb25uZWxOYW1lIiwiZmV0Y2hMaW5lSW5mbyIsImxpbmVObyIsImxpbmVOYW1lIiwibG9hZE9yZGVycyIsImxvYWREYWlseUNhcGFjaXR5Iiwidmlld0hpc3RvcnkiLCJmZXRjaEhpc3RvcnlSZWNvcmRzIiwiY2xvc2VQb3B1cCIsIm9yZGVyTm8iLCJpdGVtQmFyY29kZSIsIm9sZGJncyIsInF1YW50aXR5IiwibWFwIiwicmVjb3JkIiwicHJpbnREYXRlIiwicHJpbnRlZEJ5IiwiZmlsdGVyIiwicGVyc29uIiwiaXQiLCJ1cGRhdGVQZXJzb25OYW1lIiwiZGV0YWlsIiwidmFsdWUiLCJsaW5lIiwidXBkYXRlTGluZSIsInNlbGVjdGVkSW5kZXgiLCJpc0FycmF5IiwiZGFpbHkiLCJpc19ESiIsImlzX1dIIiwib3JkZXIiLCJsb2FkT3JkZXJEZXRhaWxzIiwic3RhcnRQcm9kdWN0aW9uIiwiaXRlbU5PIiwic2oiLCJ4aiIsIm1hcFN0YXR1cyIsInN0YXR1cyIsIlVzZXJJZCIsIm1lc3NhZ2UiLCJmb3JtYXREYXRlIiwiZGF0ZSIsInllYXIiLCJnZXRGdWxsWWVhciIsIm1vbnRoIiwiU3RyaW5nIiwiZ2V0TW9udGgiLCJwYWRTdGFydCIsImRheSIsImdldERhdGUiLCJob3VycyIsImdldEhvdXJzIiwibWludXRlcyIsImdldE1pbnV0ZXMiLCJzZWNvbmRzIiwiZ2V0U2Vjb25kcyIsIm1pbGxpc2Vjb25kcyIsImdldE1pbGxpc2Vjb25kcyIsImZvcm1hdERhdGUyIiwic2VuZEZvckZpcnN0SW5zcGVjdGlvbiIsIm9yZGVyTnVtYmVyIiwicmVxdWVzdERhdGEiLCJSZWxlYXNlTm8iLCJwcmludEJhcmNvZGUiLCJjdXJyZW50VGltZSIsIkRhdGUiLCJmb3JtYXR0ZWRUaW1lIiwicF9wZXJzb24iLCJ1bmlxdWVWYWx1ZSIsImxvZ1ByaW50RXZlbnQiLCJyZXNwb25zZSIsImZvcm1hdHRlZFRpbWUyIiwicHVzaCIsInRvTG9jYWxlU3RyaW5nIiwic2V0Qm94IiwicHJpbnRSZXN1bHQiLCJiZ3IiLCJyZXByaW50TGFzdCIsInNob3dNb2RhbCIsImNvbnRlbnQiLCJzaG93Q2FuY2VsIiwibW9kYWxWaXNpYmxlIiwic2V0RmVlZCIsIkYiLCJldmVudFR5cGUiLCJwcmludFR5cGUiLCJiYXJjb2RlVmFsdWUiLCJiYXJjb2RlIiwid29ya2VyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7OztBQUFBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7QUFFQSxJQUFJQSxHQUFHLEdBQUdDLG1CQUFPLENBQUMsd0NBQWdDLENBQUM7QUFDbkQsSUFBSUMsR0FBRyxHQUFHRCxtQkFBTyxDQUFDLHdDQUFnQyxDQUFDO0FBQ25ELElBQUlFLFNBQVMsR0FBR0MsR0FBRyxDQUFDQyxtQkFB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QU8sRUFBRSxpQkFBQzBJLFFBQVEsRUFBSztVQUNuQixJQUFJQSxRQUFRLENBQUM3SCxVQUFVLEtBQUssR0FBRyxFQUFFO1lBQzdCLHVCQUFlMkksU0FBUyxnQkFBTUMsU0FBUztVQUMzQyxDQUFDLE1BQU07WUFDSCx5QkFBaUJELFNBQVMsZ0JBQU1DLFNBQVMsaUNBQVVmLFFBQVE7VUFDL0Q7UUFDSixDQUFDO1FBQ0RwSSxJQUFJLEVBQUUsY0FBQ0MsR0FBRyxFQUFLO1VBQ1gsZUFBYyxPQUFPLEVBQUVBLEdBQUc7UUFDOUI7TUFDSixDQUFDLENBQUM7SUFDTjtFQUNDO0FBQ0QsQ0FBQztBQUFBLDJCIiwiZmlsZSI6IjExLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cbi8vXG4vL1xuLy9cblxuXHQvLyBpbXBvcnQgSnNCYXJjb2RlIGZyb20gJ2pzYmFyY29kZSc7IC8vIOW8leWFpSBKc0JhcmNvZGUg5bqTXG5cdC8vIGltcG9ydCBwcmludFRlbXBsYXRlIGZyb20gJy4uLy4uL3ByaW50LmpzJzsgLy8g5a+85YWl6Lev5b6E5ZCR5LiK5Lik57qnXG5cdC8vIGltcG9ydCB1dGlsIGZyb20gJ0AvY29tcG9uZW50cy9ray1wcmludGVyL3V0aWxzL3V0aWwuanMnO1xuXHQvLyBpbXBvcnQgKiBhcyBibGVzZGsgZnJvbSAnQC9jb21wb25lbnRzL2trLXByaW50ZXIvdXRpbHMvYmx1ZXRvb2x0aC5qcyc7XG5cdC8vIGltcG9ydCBra1ByaW50ZXIgZnJvbSAnQC9jb21wb25lbnRzL2trLXByaW50ZXIvaW5kZXgudnVlJztcblx0Ly9pbXBvcnQgQ3VzdG9tVG9hc3QgZnJvbSAnLi4vLi4vQ3VzdG9tVG9hc3QvQ3VzdG9tVG9hc3QudnVlJztcblxuXHRsZXQgdHNjID0gcmVxdWlyZSgnLi4vLi4vY29tcG9uZW50cy9ncHJpbnQvdHNjLmpzJylcblx0bGV0IGVzYyA9IHJlcXVpcmUoJy4uLy4uL2NvbXBvbmVudHMvZ3ByaW50L2VzYy5qcycpXG5cdGxldCBVc2JNb2R1bGUgPSB1bmkucmVxdWlyZU5hdGl2ZVBsdWdpbihcImdwLXVzYlwiKVxuXG5cdGV4cG9ydCBkZWZhdWx0IHtcblx0XHRkYXRhKCkge1xuXHRcdFx0cmV0dXJuIHtcblx0XHRcdFx0c2hvd0hpc3RvcnlQb3B1cDogZmFsc2UsIC8vIOaOp+WItuW8ueWHuuahhuaYvuekulxuXHRcdFx0XHRzZWxlY3RlZFBlcnNvbjogJycsXG5cdFx0XHRcdHNlbGVjdGVkTGluZTogJycsXG5cdFx0XHRcdHNlbGVjdGVkT3JkZXI6ICcnLFxuXHRcdFx0XHRwZXJzb25PcHRpb25zOiBbXSxcblx0XHRcdFx0cGVyc29uTGlzdDogW10sIC8vIOWtmOWCqOS7juWQjuerr+iOt+WPlueahOS6uuWRmOaVsOaNrlxuXHRcdFx0XHRwZXJzb25JbmRleDogLTEsXG5cdFx0XHRcdHBlcnNvbkNvZGU6ICcnLCAvL+S6uuWRmOe8lueggVxuXHRcdFx0XHRsaW5lQ29kZTogJycsIC8v5Lqn57q/57yW56CBXG5cdFx0XHRcdGxpbmVPcHRpb25zOiBbXSwgLy8g5a2Y5YKo5Lqn57q/5pWw5o2uXG5cdFx0XHRcdGxpbmVMaXN0OiBbXSwgLy8g5a2Y5YKo5LuO5ZCO56uv6I635Y+W55qE5Lqn57q/5pWw5o2uXG5cdFx0XHRcdG9yZGVyT3B0aW9uczogW10sIC8vIOWtmOWCqOW3peWNleaVsOaNrlxuXHRcdFx0XHRvcmRlckxpc3Q6IFtdLCAvLyDlrZjlgqjku47lkI7nq6/ojrflj5bnmoTlt6XljZXmlbDmja5cblx0XHRcdFx0aGlzdG9yeVJlY29yZHM6IFtdLCAvLyDnlKjkuo7lvLnnqpfkuK3mmL7npLrnmoTljoblj7LmiZPljbDorrDlvZVcblx0XHRcdFx0ZGFpbHlMaXN0OiBbXSxcblx0XHRcdFx0dmVyc2lvbjogJzEuMC4wJywgLy8g6buY6K6k5YC877yM5aaC5p6c5peg5rOV6I635Y+W5YiZ5pi+56S65q2k5YC8XG5cdFx0XHRcdG9yZGVyRGV0YWlsczoge1xuXHRcdFx0XHRcdHJlcXVpcmVtZW50RG9jOiAnJywgLy8g6ZyA5rGC5Y2V5o2uXG5cdFx0XHRcdFx0cHJvZHVjdGlvbk9yZGVyOiAnJywgLy8g55Sf5Lqn6K6i5Y2VXG5cdFx0XHRcdFx0b3JkZXJRdWFudGl0eTogJycsIC8vIOiuouWNleaVsOmHj1xuXHRcdFx0XHRcdHByb2R1Y2VkUXVhbnRpdHk6ICcnLCAvLyDlt7LnlJ/kuqfmlbBcblx0XHRcdFx0XHRienNsOiAnJywgLy8g5o6o6I2Q5YyF6KOF5pWwXG5cdFx0XHRcdFx0Z2R6dDonJyxcblx0XHRcdFx0XHRpdGVtSWQ6ICcnLCAvLyDnianmlplJRFxuXHRcdFx0XHRcdGl0ZW1ObzogJycsIC8vIOeJqeaWmee8lueggVxuXHRcdFx0XHRcdGl0ZW1uYW1lOiAnJywgLy8g54mp5paZ5ZCN56ewXG5cdFx0XHRcdFx0aXRlbW1vZGVsOiAnJyAvLyDop4TmoLzlnovlj7dcblx0XHRcdFx0fSxcblx0XHRcdFx0bGFzdFJlcXVlc3REYXRhOiBudWxsLCAvLyDnlKjkuo7kv53lrZjmnIDlkI7kuIDmrKHmiZPljbDnmoQgcmVxdWVzdERhdGFcblx0XHRcdFx0YmdzOiBudWxsLFxuXHRcdFx0XHRyZXBvcnRlZFF1YW50aXR5OiAnJyxcblx0XHRcdFx0ZGFpbHlDYXBhY2l0eTogJzAnLCAvLyDmr4/ml6Xkuqfog71cblx0XHRcdFx0Y2hlY2tlZEluc3BlY3Rpb246IG51bGwsIC8vIOm7mOiupOS4uuacqueCueajgFxuXHRcdFx0XHRjaGVja2VkTWFpbnRlbmFuY2U6IG51bGwsIC8vIOm7mOiupOS4uuacque7tOaKpFxuXHRcdFx0XHRjaGVja1hKOiBudWxsLFxuXHRcdFx0XHRjaGVja0ZpcnN0UGFzczogbnVsbCxcblxuXHRcdFx0XHRwcmludERhdGE6IHtcblx0XHRcdFx0XHRTVFJQMTogXCIwMDFcIixcblx0XHRcdFx0XHRTVFJQMjogXCLkvpvlupTllYZBXCIsXG5cdFx0XHRcdFx0U1RSUDM6IFwi54mp5paZ57yW56CBMTIzNDVcIixcblx0XHRcdFx0XHRTVFJQNDogXCLnianmlpnlkI3np7BBQkNcIixcblx0XHRcdFx0XHRTVFJQNTogXCIxMDBcIixcblx0XHRcdFx0XHRTVFJQNjogXCIyMDI0LTA5LTExXCIsXG5cdFx0XHRcdFx0U1RSUDc6IFwi6KeE5qC85Z6L5Y+35o+P6L+wXCIsXG5cdFx0XHRcdFx0U1RSUDg6IFwi5p2h56CB5YaF5a65XCIsXG5cdFx0XHRcdFx0U1RSUDEzOiBcIumcgOaxguWNleaNrjEyM1wiXG5cdFx0XHRcdH0sXG5cdFx0XHRcdGhpc3RvcnlMaXN0OiBbXSwgLy8g5a2Y5YKo5Y6G5Y+y5omT5Y2w6K6w5b2VXG5cdFx0XHRcdHBlcnNvbk5hbWU6ICcnLCAvLyDnlKjkuo7mmL7npLrpgInkuK3nmoTkurrlkZjlkI3np7Bcblx0XHRcdFx0cGVyc29uSWQ6IDAsXG5cdFx0XHRcdG1hdGVyaWFsSW5mbzoge30sIC8vIOWtmOWCqOeJqeaWmeS/oeaBr1xuXHRcdFx0XHRzZW5kRGF0YTogJycsXG5cdFx0XHRcdGlzQnV0dG9uRGlzYWJsZWQ6IGZhbHNlLCAvLyDmjqfliLbmjInpkq7nirbmgIFcblx0XHRcdFx0aXNCdXR0b25EaXNhYmxlZDI6IGZhbHNlLCAvLyDmjqfliLbmjInpkq7nirbmgIFcblx0XHRcdFx0bmV0d29ya1N0YXRlOiBcIuajgOa1i+S4rS4uLlwiLFxuXHRcdFx0XHRkZXZpY2VTdGF0ZTogXCLmo4DmtYvkuK0uLi5cIixcblx0XHRcdFx0bmV0d29ya0NoZWNrSW50ZXJ2YWw6IG51bGwsXG5cdFx0XHRcdHVzYkNoZWNrSW50ZXJ2YWw6IG51bGwsXG5cdFx0XHRcdHJlZnJlc2hUaW1lcjogbnVsbCwgLy8g5a2Y5YKo5a6a5pe25ZmoSURcblx0XHRcdFx0bmV0d29ya1N0YXRlOiBcIuajgOa1i+S4rS4uLlwiLFxuXHRcdFx0XHRkZXZpY2VTdGF0ZTogXCLmo4DmtYvkuK0uLi5cIixcblx0XHRcdFx0bmV0d29ya01vZGFsVmlzaWJsZTogZmFsc2UsIC8vIOaOp+WItue9kee7nOW8ueeql+aYr+WQpuW3suaYvuekulxuXHRcdFx0XHR1c2JNb2RhbFZpc2libGU6IGZhbHNlICwvLyDmjqfliLYgVVNCIOW8ueeql+aYr+WQpuW3suaYvuekulxuXHRcdFx0XHQgdXBkYXRlQ2hlY2tlZDogZmFsc2UsXG5cdFx0XHR9O1xuXHRcdH0sXG5cdFx0Ly8gY29tcG9uZW50czp7XG5cdFx0Ly8gXHRra1ByaW50ZXJcblx0XHQvLyB9LFxuXHRcdG9uUmVhZHkoKSB7XG5cdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0dGhpcy5jaGVja1VzYlN0YXR1cygpOyAvLyDlu7bov5/mo4DmtYsgVVNCIOeKtuaAge+8jOmBv+WFjeWIneWni+WMluacquWujOaIkFxuXHRcdFx0fSwgMTAwMCk7XG5cdFx0fSxcblxuXHRcdG1vdW50ZWQoKSB7XG5cdFx0XHR0aGlzLnN0YXJ0VXNiQ2hlY2soKTsgLy8g5a6a5pe25qOA5p+lIFVTQiDov57mjqXnirbmgIFcblx0XHRcdHRoaXMuc3RhcnRSYW5kb21SZWZyZXNoKCk7IC8vIOi/m+WFpemhtemdouW8gOWni+maj+acuuWIt+aWsFxuXHRcdFx0dGhpcy5sb2FkUGVyc29ucygpOyAvLyDlnKjnu4Tku7bmjILovb3ml7bliqDovb3kurrlkZjkv6Hmga9cblx0XHRcdHRoaXMubG9hZExpbmVzKCk7IC8vIOWcqOe7hOS7tuaMgui9veaXtuWKoOi9veS6p+e6v+S/oeaBryAgXHRcdFxuXHRcdFx0Y29uc29sZS5sb2coXCLpobXpnaLliqDovb3vvIzlvIDlp4vmo4DmtYsgVVNCIOWSjOe9kee7nC4uLlwiKTtcblx0XHRcdGNvbnNvbGUubG9nKFwiVXNiTW9kdWxlOlwiLCBVc2JNb2R1bGUpOyAvLyDmiZPljbAgVXNiTW9kdWxlIOaYr+WQpuWPr+eUqFxuXHRcdFx0Y29uc29sZS5sb2coXCJVc2JNb2R1bGUuaXNVc2JDb25uZWN0OlwiLCBVc2JNb2R1bGU/LmlzVXNiQ29ubmVjdCk7IC8vIOaJk+WNsOaWueazleaYr+WQpuWtmOWcqFxuIGlmICh0eXBlb2YgcGx1cyAhPT0gJ3VuZGVmaW5lZCcpIHtcbiAgICB0aGlzLnZlcnNpb24gPSBwbHVzLnJ1bnRpbWUudmVyc2lvbjtcbiAgfVxuXG5cdFx0XHR0aGlzLmNoZWNrRm9yVXBkYXRlKCk7IC8vIOWQr+WKqOaXtuajgOafpeeJiOacrOabtOaWsFxuXHRcdFx0Ly90aGlzLnN0YXJ0QXV0b1VwZGF0ZUNoZWNrKCk7IC8vIOW8gOWni+WumuaXtuajgOafpeeJiOacrOabtOaWsFxuXHRcdFx0dGhpcy5saXN0ZW5OZXR3b3JrU3RhdHVzKCk7IC8vIOWunuaXtuebkeWQrOe9kee7nOWPmOWMllxuXG5cdFx0XHR0aGlzLm1hbnVhbENoZWNrKCk7IC8vIOi/m+WFpemhtemdouWFiOajgOa1i+S4gOasoVxuXHRcdFx0dGhpcy5zdGFydE5ldHdvcmtDaGVjaygpOyAvLyDlrprml7bmo4Dmn6XnvZHnu5znirbmgIEgXG5cblx0XHRcdHRoaXMudXNiQ29ubmVjdCgpO1xuXG5cblx0XHR9LFxuXHRcdG1ldGhvZHM6IHtcblx0XHRcdC8vIOW8gOWQr+iHquWKqOabtOaWsOajgOa1i1xuXHRcdFx0c3RhcnRBdXRvVXBkYXRlQ2hlY2soKSB7XG5cdFx0XHRcdHRoaXMudXBkYXRlQ2hlY2tJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmNoZWNrRm9yVXBkYXRlKCk7IC8vIOavj+malOS4gOauteaXtumXtOajgOafpeabtOaWsFxuXHRcdFx0XHR9LCAxICogNjAgKiAxMDAwKTsgLy8gMTAg5YiG6ZKf6Ieq5Yqo5qOA5rWL5LiA5qyhXG5cdFx0XHR9LFxuXHRcdFx0YmVmb3JlRGVzdHJveSgpIHtcblx0XHRcdFx0dGhpcy5zdG9wQXV0b1VwZGF0ZUNoZWNrKCk7IC8vIOmhtemdoumUgOavgeaXtuWBnOatouWumuaXtuWZqO+8jOmYsuatouWGheWtmOazhOa8j1xuXHRcdFx0fSxcblx0XHRcdGNoZWNrRm9yVXBkYXRlKCkge1xuXHRcdFx0XHQgIGlmICh0aGlzLnVwZGF0ZUNoZWNrZWQpIHJldHVybjsgXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IFwiaHR0cDovLzE5Mi4xNjguMC4xMDc6MTAwODYvdXBkYXRlLmpzb25cIiwgLy8g5L2g55qE5pyN5Yqh5ZmoIEpTT04g5paH5Lu25Zyw5Z2AXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0bGV0IG5ld1ZlcnNpb24gPSByZXMuZGF0YS52ZXJzaW9uO1xuXHRcdFx0XHRcdFx0bGV0IGN1cnJlbnRWZXJzaW9uID0gcGx1cy5ydW50aW1lLnZlcnNpb247IC8vIOiOt+WPluW9k+WJjSBBUEsg54mI5pys5Y+3XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuW9k+WJjeeJiOacrDpcIiwgY3VycmVudFZlcnNpb24sIFwi5pyA5paw54mI5pysOlwiLCBuZXdWZXJzaW9uKTtcblxuXHRcdFx0XHRcdFx0aWYgKG5ld1ZlcnNpb24gPiBjdXJyZW50VmVyc2lvbikge1xuXHRcdFx0XHRcdFx0XHQvLyB1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdFx0Ly8gXHR0aXRsZTogXCLlj5HnjrDmlrDniYjmnKxcIixcblx0XHRcdFx0XHRcdFx0Ly8gXHRjb250ZW50OiBcIuaYr+WQpuS4i+i9veacgOaWsOeJiOacrD9cIixcblx0XHRcdFx0XHRcdFx0Ly8gXHRzdWNjZXNzOiAobW9kYWxSZXMpID0+IHtcblx0XHRcdFx0XHRcdFx0Ly8gXHRcdGlmIChtb2RhbFJlcy5jb25maXJtKSB7XG5cdFx0XHRcdFx0XHRcdC8vIFx0XHRcdHRoaXMuZG93bmxvYWROZXdBcGsocmVzLmRhdGEuYXBrVXJsKTtcblx0XHRcdFx0XHRcdFx0Ly8gXHRcdH1cblx0XHRcdFx0XHRcdFx0Ly8gXHR9XG5cdFx0XHRcdFx0XHRcdC8vIH0pO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmRvd25sb2FkTmV3QXBrKHJlcy5kYXRhLmFwa1VybCk7XG5cdFx0XHRcdFx0XHRcdCB0aGlzLnVwZGF0ZUNoZWNrZWQgPSB0cnVlOyAvLyDmoIforrDmm7TmlrDlt7Lmo4Dmn6Xov4dcblx0XHRcdFx0XHRcdFx0Ly8gICAgICAvLyDlpoLmnpzmnInmlrDniYjmnKzvvIzlvIDlp4vkuIvovb1cblx0XHRcdFx0XHRcdCAgLy9kb3dubG9hZChyZXMuZGF0YS5hcGtVcmwpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIuabtOaWsOajgOafpeWksei0pTpcIiwgZXJyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcbiBcblxuXHRcdFx0ZG93bmxvYWROZXdBcGsoYXBrVXJsKSB7XG5cdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdHRpdGxlOiBcIuW8gOWni+S4i+i9veabtOaWsC4uLlwiLFxuXHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxuXHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdHVuaS5kb3dubG9hZEZpbGUoe1xuXHRcdFx0XHRcdHVybDogYXBrVXJsLFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdHBsdXMucnVudGltZS5pbnN0YWxsKHJlcy50ZW1wRmlsZVBhdGgsIHtcblx0XHRcdFx0XHRcdFx0XHRmb3JjZTogdHJ1ZVxuXHRcdFx0XHRcdFx0XHR9LCBmdW5jdGlvbigpIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuWuieijheaIkOWKn++8jOmHjeWQr+W6lOeUqFwiKTtcblx0XHRcdFx0XHRcdFx0XHQvL3BsdXMucnVudGltZS5yZXN0YXJ0KCk7XG5cdFx0XHRcdFx0XHRcdFx0ICAgLy9wbHVzLnJ1bnRpbWUucXVpdCgpO1xuXHRcdFx0XHRcdFx0XHRcdC8vIHVuaS5uYXZpZ2F0ZUJhY2soKVxuXHRcdFx0XHRcdFx0XHR9LCBmdW5jdGlvbihlKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIuWuieijheWksei0pTpcIiwgZSk7XG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIuS4i+i9veWksei0pTpcIiwgZXJyKTtcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLkuIvovb3lpLHotKXvvIzor7fmo4Dmn6XnvZHnu5xcIixcblx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXG5cdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdC8vIOWQr+WKqOmaj+acuuWIt+aWsFxuXHRcdFx0c3RhcnRSYW5kb21SZWZyZXNoKCkge1xuXHRcdFx0XHRjb25zdCByYW5kb21JbnRlcnZhbCA9IE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqICgzMDAwMCAtIDEwMDAwICsgMSkpICsgMTAwMDA7IC8vIDEwfjMw56eS6ZqP5py65pe26Ze0XG5cdFx0XHRcdGNvbnNvbGUubG9nKGDkuIvmrKHliLfmlrDlsIblnKggJHtyYW5kb21JbnRlcnZhbCAvIDEwMDB9IOenkuWQjuaJp+ihjGApO1xuXG5cdFx0XHRcdHRoaXMucmVmcmVzaFRpbWVyID0gc2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5yZWZyZXNoU3RhdHVzKCk7IC8vIOaJp+ihjOWIt+aWsFxuXHRcdFx0XHRcdHRoaXMuc3RhcnRSYW5kb21SZWZyZXNoKCk7IC8vIOmAkuW9kuiwg+eUqO+8jOehruS/neaMgee7reWIt+aWsFxuXHRcdFx0XHR9LCByYW5kb21JbnRlcnZhbCk7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gMS4g5a6e5pe255uR5ZCs572R57uc5Y+Y5YyWXG5cdFx0XHRsaXN0ZW5OZXR3b3JrU3RhdHVzKCkge1xuXHRcdFx0XHR1bmkub25OZXR3b3JrU3RhdHVzQ2hhbmdlKChyZXMpID0+IHtcblx0XHRcdFx0XHR0aGlzLm5ldHdvcmtTdGF0ZSA9IHJlcy5pc0Nvbm5lY3RlZCA/IFwi572R57uc6L+e5o6l5q2j5bi4XCIgOiBcIuaXoOe9kee7nOi/nuaOpVwiO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFwi572R57uc54q25oCB5Y+Y5pu0OlwiLCB0aGlzLm5ldHdvcmtTdGF0ZSk7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogYOe9kee7nOeKtuaAgTogJHt0aGlzLm5ldHdvcmtTdGF0ZX1gLFxuXHRcdFx0XHRcdFx0ZHVyYXRpb246IDE1MDBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyAyLiDmr48gNSDnp5Lmo4Dmn6XnvZHnu5znirbmgIFcblx0XHRcdGNoZWNrTmV0d29ya1N0YXR1cygpIHtcblx0XHRcdFx0dW5pLmdldE5ldHdvcmtUeXBlKHtcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHR0aGlzLm5ldHdvcmtTdGF0ZSA9IHJlcy5uZXR3b3JrVHlwZSAhPT0gXCJub25lXCIgPyBcIue9kee7nOi/nuaOpeato+W4uFwiIDogXCLml6DnvZHnu5zov57mjqVcIjtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKFwi572R57uc5qOA5rWL57uT5p6cOlwiLCB0aGlzLm5ldHdvcmtTdGF0ZSk7XG5cdFx0XHRcdFx0XHRpZiAodGhpcy5uZXR3b3JrU3RhdGUgPT0gXCLml6DnvZHnu5zov57mjqVcIikge1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogYCAke3RoaXMubmV0d29ya1N0YXRlfWAsXG5cdFx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDE1MDAsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCJcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdC8vIHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0XHQvLyAgICAgICAgIHRpdGxlOiBgICR7dGhpcy5uZXR3b3JrU3RhdGV9YCxcblx0XHRcdFx0XHRcdFx0Ly8gICAgICAgICBjb250ZW50OiBcIuivt+ajgOafpee9kee7nCDov57mjqXov57mjqVcIixcblx0XHRcdFx0XHRcdFx0Ly8gICAgICAgICBzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdFx0Ly8gXHRzdWNjZXNzOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdC8vIFx0ICAgICAgICB0aGlzLm1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuXG5cdFx0XHRcdFx0XHRcdC8vIFx0XHRcdFx0XHRcdFx0XHRcdFx0ICAgICAgICB9XG5cdFx0XHRcdFx0XHRcdC8vICAgICB9KTtcblx0XHRcdFx0XHRcdH1cblxuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXG5cdFx0XHRzdGFydE5ldHdvcmtDaGVjaygpIHtcblx0XHRcdFx0dGhpcy5uZXR3b3JrQ2hlY2tJbnRlcnZhbCA9IHNldEludGVydmFsKCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmNoZWNrTmV0d29ya1N0YXR1cygpO1xuXHRcdFx0XHR9LCA1MDAwKTtcblx0XHRcdH0sXG5cblx0XHRcdC8vIDMuIOavjyA1IOenkuajgOafpSBVU0Ig6L+e5o6l54q25oCBXG5cdFx0XHRjaGVja1VzYlN0YXR1cygpIHtcblx0XHRcdFx0dHJ5IHtcblx0XHRcdFx0XHRpZiAoIVVzYk1vZHVsZSB8fCAhVXNiTW9kdWxlLmlzVXNiQ29ubmVjdCkge1xuXHRcdFx0XHRcdFx0dGhyb3cgbmV3IEVycm9yKFwiVXNiTW9kdWxlIOacquWumuS5ieaIluaWueazleS4jeWtmOWcqFwiKTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRsZXQgcmVzID0gVXNiTW9kdWxlLmlzVXNiQ29ubmVjdCgpO1xuXHRcdFx0XHRcdHRoaXMuZGV2aWNlU3RhdGUgPSByZXMgPyBcIuaJk+WNsOacuiDov57mjqXmraPluLhcIiA6IFwi5omT5Y2w5py6IOi/nuaOpeWksei0pVwiO1xuXHRcdFx0XHRcdGNvbnNvbGUubG9nKFwi5omT5Y2w5py6IOajgOa1i+e7k+aenDpcIiwgdGhpcy5kZXZpY2VTdGF0ZSk7XG5cdFx0XHRcdFx0aWYgKHRoaXMuZGV2aWNlU3RhdGUgPT0gXCLmiZPljbDmnLog6L+e5o6l5aSx6LSlXCIpIHtcblxuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBgICR7dGhpcy5kZXZpY2VTdGF0ZX1gLFxuXHRcdFx0XHRcdFx0XHRkdXJhdGlvbjogMTUwMCxcblx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCJcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0dGhpcy51c2JDb25uZWN0KCk7XG5cdFx0XHRcdFx0XHQvLyB1bmkuc2hvd01vZGFsKHtcblx0XHRcdFx0XHRcdC8vICAgICAgICAgdGl0bGU6IGAgJHt0aGlzLmRldmljZVN0YXRlfWAsXG5cdFx0XHRcdFx0XHQvLyAgICAgICAgIGNvbnRlbnQ6IFwi6K+35qOA5p+lVVNCIOi/nuaOpei/nuaOpVwiLFxuXHRcdFx0XHRcdFx0Ly8gICAgICAgICBzaG93Q2FuY2VsOiBmYWxzZSxcblx0XHRcdFx0XHRcdC8vIFx0IHN1Y2Nlc3M6ICgpID0+IHtcblx0XHRcdFx0XHRcdC8vIFx0ICAgICAgICAgdGhpcy5tb2RhbFZpc2libGUgPSBmYWxzZTtcblx0XHRcdFx0XHRcdC8vIFx0IFx0XHRcdHRoaXMudXNiQ29ubmVjdCgpO1xuXHRcdFx0XHRcdFx0Ly8gXHQgICAgICAgIH1cblx0XHRcdFx0XHRcdC8vICAgICB9KTtcblxuXHRcdFx0XHRcdH1cblxuXHRcdFx0XHR9IGNhdGNoIChlcnJvcikge1xuXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIuaJk+WNsOacuiDmo4DmtYvplJnor686XCIsIGVycm9yKTtcblx0XHRcdFx0XHR0aGlzLmRldmljZVN0YXRlID0gXCLmiZPljbDmnLog5qOA5rWL5aSx6LSlXCI7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLmiZPljbDmnLog5qOA5rWL5aSx6LSl77yM6K+35qOA5p+l5o+S5Lu2XCIsXG5cdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMCxcblx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0Ly8gdW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0Ly8gICAgICAgICB0aXRsZTogYCAke3RoaXMuZGV2aWNlU3RhdGV9YCxcblx0XHRcdFx0XHQvLyAgICAgICAgIGNvbnRlbnQ6IFwi6K+35qOA5p+lVVNCIOi/nuaOpei/nuaOpVwiLFxuXHRcdFx0XHRcdC8vICAgICAgICAgc2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0Ly8gXHQgc3VjY2VzczogKCkgPT4ge1xuXHRcdFx0XHRcdC8vIFx0ICAgICAgICAgdGhpcy5tb2RhbFZpc2libGUgPSBmYWxzZTtcblx0XHRcdFx0XHQvLyBcdFx0XHQgICAgdGhpcy51c2JDb25uZWN0KCk7XG5cdFx0XHRcdFx0Ly8gXHQgICAgICAgIH1cblx0XHRcdFx0XHQvLyAgICAgfSk7XG5cdFx0XHRcdFx0dGhpcy51c2JDb25uZWN0KCk7XG5cblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0c3RhcnRVc2JDaGVjaygpIHtcblx0XHRcdFx0dGhpcy51c2JDaGVja0ludGVydmFsID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuXHRcdFx0XHRcdHRoaXMuY2hlY2tVc2JTdGF0dXMoKTtcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuWumuaXtuWQr+WKqOaIkOWKn1wiKVxuXHRcdFx0XHR9LCA1MDAwKTtcblx0XHRcdH0sXG5cblx0XHRcdC8vIDQuIOaJi+WKqOinpuWPkeajgOa1i1xuXHRcdFx0bWFudWFsQ2hlY2soKSB7XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwi5omL5Yqo5qOA5rWL5omn6KGMLi4uXCIpO1xuXHRcdFx0XHR0aGlzLmNoZWNrTmV0d29ya1N0YXR1cygpO1xuXHRcdFx0XHR0aGlzLmNoZWNrVXNiU3RhdHVzKCk7XG5cdFx0XHR9LFxuXG5cblxuXG5cdFx0XHRzZW5VU0JEYXRhKCkge1xuXHRcdFx0XHRpZiAodGhpcy5zZW5kRGF0YSA9PSBudWxsKSB7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogXCLor7flhYjnlJ/miJDmjIfku6RcIixcblx0XHRcdFx0XHRcdGR1cmF0aW9uOiAxNTAwXG5cdFx0XHRcdFx0fSlcblx0XHRcdFx0XHRyZXR1cm5cblx0XHRcdFx0fVxuXHRcdFx0XHR2YXIgaGV4U3RyID0gJydcblx0XHRcdFx0dmFyIGRhdGEgPSBBcnJheS5mcm9tKHRoaXMuc2VuZERhdGEpXG5cdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgZGF0YS5sZW5ndGg7IGkrKykge1xuXHRcdFx0XHRcdHZhciBzdHIgPSBOdW1iZXIoZGF0YVtpXSkudG9TdHJpbmcoMTYpXG5cdFx0XHRcdFx0c3RyID0gc3RyLmxlbmd0aCA9PSAxID8gXCIwXCIgKyBzdHIgOiBzdHJcblx0XHRcdFx0XHRoZXhTdHIgKz0gc3RyXG5cdFx0XHRcdH1cblx0XHRcdFx0Ly9jb25zb2xlLmxvZyhoZXhTdHIpXG5cdFx0XHRcdHZhciBwcmludE51bSA9IDEgLy8g5omT5Y2w5qyh5pWwXG5cdFx0XHRcdHZhciBoZXhQcmludERhdGEgPSAnJ1xuXHRcdFx0XHRmb3IgKHZhciBuID0gMDsgbiA8IHByaW50TnVtOyBuKyspIHtcblx0XHRcdFx0XHRoZXhQcmludERhdGEgKz0gaGV4U3RyXG5cdFx0XHRcdH1cblx0XHRcdFx0bGV0IHJlcyA9IFVzYk1vZHVsZS53cml0ZShoZXhQcmludERhdGEpXG5cdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdHRpdGxlOiByZXMubXNnLFxuXHRcdFx0XHRcdGR1cmF0aW9uOiAxNTAwXG5cdFx0XHRcdH0pXG5cdFx0XHRcdHRoaXMucmVzdWx0ID0gJ+WPkemAgemVv+W6pu+8micgKyBoZXhQcmludERhdGEubGVuZ3RoICsgXCLvvJvov5Tlm57nu5PmnpzvvJpcIiArIEpTT04uc3RyaW5naWZ5KHJlcylcblx0XHRcdH0sXG5cdFx0XHR1c2JDb25uZWN0KCkge1xuXHRcdFx0XHRjb25zb2xlLmxvZyhcIjExMVwiLCBVc2JNb2R1bGUpXG5cdFx0XHRcdGxldCByZXMgPSBVc2JNb2R1bGUuaW5pdFVzYkRldmljZSgpO1xuXHRcdFx0XHRpZiAocmVzKSB7XG5cdFx0XHRcdFx0dGhpcy5kZXZpY2VTdGF0ZSA9IFwi5omT5Y2w5py6IOi/nuaOpeato+W4uFwiXG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dGhpcy5kZXZpY2VTdGF0ZSA9IFwi5omT5Y2w5py6IOi/nuaOpeWksei0pVwiXG5cdFx0XHRcdH1cblx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuZGV2aWNlU3RhdGUsXG5cdFx0XHRcdFx0ZHVyYXRpb246IDE1MDBcblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHRpc0Nvbm5lY3QoKSB7XG5cdFx0XHRcdGxldCByZXMgPSBVc2JNb2R1bGUuaXNVc2JDb25uZWN0KCk7XG5cdFx0XHRcdGlmIChyZXMpIHtcblx0XHRcdFx0XHR0aGlzLmRldmljZVN0YXRlID0gXCLpk77mjqXnirbmgIHmraPluLhcIlxuXHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdHRoaXMuZGV2aWNlU3RhdGUgPSBcIumTvuaOpeeKtuaAgeWksei0pVwiXG5cdFx0XHRcdH1cblx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0dGl0bGU6IHRoaXMuZGV2aWNlU3RhdGUsXG5cdFx0XHRcdFx0ZHVyYXRpb246IDE1MDBcblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cdFx0XHRkaXNDb25uZWN0KCkge1xuXHRcdFx0XHRsZXQgcmVzID0gVXNiTW9kdWxlLmRpc1VzYkNvbm5lY3QoKTtcblx0XHRcdFx0aWYgKHJlcykge1xuXHRcdFx0XHRcdHRoaXMuZGV2aWNlU3RhdGUgPSBcIlwiXG5cdFx0XHRcdH1cblx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0dGl0bGU6IFwi5pat5byA6L+e5o6l5oiQ5YqfXCIsXG5cdFx0XHRcdFx0ZHVyYXRpb246IDE1MDBcblx0XHRcdFx0fSlcblx0XHRcdH0sXG5cblx0XHRcdGNyZWF0ZUxhYmVsKCkge1xuXHRcdFx0XHR2YXIgY29tbWFuZCA9IHRzYy5qcFByaW50ZXIuY3JlYXRlTmV3KClcblx0XHRcdFx0Y29tbWFuZC5zZXRTaXplKDQwLCAzMClcblx0XHRcdFx0Y29tbWFuZC5zZXRHYXAoMilcblx0XHRcdFx0Y29tbWFuZC5zZXRDbHMoKVxuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoNTAsIDEwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuaJk+WNsOa1i+ivlVwiKSAvLyDmlofmnKxcblx0XHRcdFx0Y29tbWFuZC5zZXRRUig1MCwgNTAsIFwiTFwiLCA1LCBcIkFcIiwgXCJ3d3cucG9zY29tLmNuXCIpIC8vIOS6jOe7tOeggVxuXHRcdFx0XHRjb21tYW5kLnNldEJhcig1MCwgMTgwLCBcIjEyOFwiLCA2NCwgMSwgMiwgNCwgXCIyMDA5MDIxMjU0MTBcIikgLy8g5p2h56CBXG5cdFx0XHRcdGNvbW1hbmQuc2V0UGFnZVByaW50KClcblx0XHRcdFx0dGhpcy5zZW5kRGF0YSA9IGNvbW1hbmQuZ2V0RGF0YSgpO1xuXHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHR0aXRsZTogJ+agh+etvuaMh+S7pOeUn+aIkOaIkOWKnycsXG5cdFx0XHRcdFx0ZHVyYXRpb246IDE1MDBcblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXHRcdFx0Ly8gb25QcmludChvcHQpe1xuXHRcdFx0Ly8gXHRsZXQgc3RyQ21kID1ibGVzZGsuQ3JlYXRDUENMUGFnZSg1NjAsNTAwLDEsMCk7ICBcblx0XHRcdC8vIFx0c3RyQ21kICs9IGJsZXNkay5hZGRDUENMTGluZSgwLDIxMCw1NjAsMjEwLDMpO1xuXHRcdFx0Ly8gXHRzdHJDbWQgKz0gYmxlc2RrLmFkZENQQ0xUZXh0KDEwLDAsJzQnLCczJywwLCc4LjE0Jyk7XG5cdFx0XHQvLyBcdHN0ckNtZCArPSBibGVzZGsuYWRkQ1BDTEJhckNvZGUoMjcwLDAsJzEyOCcsODAsMCwxLDEsJzAwMDUxJyk7XG5cdFx0XHQvLyBcdHN0ckNtZCArPSBibGVzZGsuYWRkQ1BDTFRleHQoMjkwLDgwLCc3JywnMicsMCwnMDAwNTEnKTtcblx0XHRcdC8vIFx0c3RyQ21kICs9IGJsZXNkay5hZGRDUENMVGV4dCg0MCwxMTAsJzMnLCcwJywwLCdDSElDS0VOIEZFRVQgKEJPTkVMRVNTKS1Db3B5LUNvcHknKTtcblx0XHRcdC8vIFx0c3RyQ21kICs9IGJsZXNkay5hZGRDUENMU0VUTUFHKDIsMik7XG5cdFx0XHQvLyBcdHN0ckNtZCArPSBibGVzZGsuYWRkQ1BDTFRleHQoNDAsMTUwLCc1NScsJzAnLDAsJ+aXoOmqqOm4oeeIqiDkuIDnm5LvvIjnuqYxLjXno4XvvIknKTtcblx0XHRcdC8vIFx0c3RyQ21kICs9IGJsZXNkay5hZGRDUENMU0VUTUFHKDAsMCk7XG5cdFx0XHQvLyBcdHN0ckNtZCArPSBibGVzZGsuYWRkQ1BDTFRleHQoMzUwLDE4MCwnNycsJzInLDAsJzIwMTktMDgtMTInKTtcblxuXHRcdFx0Ly8gXHRzdHJDbWQgKz0gYmxlc2RrLmFkZENQQ0xMb2NhdGlvbigyKTtcblx0XHRcdC8vIFx0c3RyQ21kICs9IGJsZXNkay5hZGRDUENMUVJDb2RlKDAsMjIwLCdNJywgMiwgNiwgJ3FyIGNvZGUgdGVzdCcpO1xuXHRcdFx0Ly8gXHRzdHJDbWQgKz0gYmxlc2RrLmFkZENQQ0xQcmludCgpO1xuXHRcdFx0Ly8gXHR0aGlzLmJ1ZmZlckRhdGEgPSBzdHJDbWQ7XG5cdFx0XHQvLyB9LCAgXG5cdFx0XHQvLyDliqDovb3kurrlkZjkv6Hmga9cblx0XHRcdGZldGNoUGVyc29uSW5mbygpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ0ZldGNoaW5nIHBlcnNvbiBpbmZvIGZvcjonLCB0aGlzLnBlcnNvbkNvZGUpOyAvLyDmo4Dmn6Xkuovku7bmmK/lkKbop6blj5FcblxuXHRcdFx0XHRpZiAodGhpcy5wZXJzb25Db2RlLnRyaW0oKSkge1xuXHRcdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHRcdHVybDogYGh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9wZXJzb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMucGVyc29uQ29kZSl9YCwgLy8g5L+u5pS55ZCO55qE6K+35rGC6Lev5b6EXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2cocmVzLmRhdGEucGVyc29ubmVsTmFtZSk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFBlcnNvbiA9IHJlcy5kYXRhLnBlcnNvbm5lbE5hbWU7IC8vIOiuvue9ruS6uuWRmOS/oeaBr1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdQZXJzb24gaW5mbyBsb2FkZWQ6JywgdGhpcy5zZWxlY3RlZFBlcnNvbik7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIHBlcnNvbiBpbmZvOicsIHJlcyk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiByZXMsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxuXHRcdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cblx0XHRcdC8vIOWKoOi9veS6p+e6v+S/oeaBr1xuXHRcdFx0ZmV0Y2hMaW5lSW5mbygpIHtcblx0XHRcdFx0Y29uc29sZS5sb2coJ0ZldGNoaW5nIGxpbmUgaW5mbyBmb3I6JywgdGhpcy5saW5lQ29kZSk7IC8vIOajgOafpeS6i+S7tuaYr+WQpuinpuWPkVxuXG5cdFx0XHRcdGlmICh0aGlzLmxpbmVDb2RlLnRyaW0oKSkge1xuXHRcdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHRcdHVybDogYGh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9saW5lcy8ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLmxpbmVDb2RlLnRyaW0oKSl9YCwgLy8g5L+u5pS55ZCO55qE6K+35rGC6Lev5b6EXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0xpbmUgaW5mbyBsb2FkZWQ6JywgcmVzLmRhdGEubGluZU5vKTtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkTGluZSA9IHJlcy5kYXRhLmxpbmVOYW1lOyAvLyDorr7nva7kuqfnur/kv6Hmga9cblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnTGluZSBpbmZvIGxvYWRlZDonLCB0aGlzLnNlbGVjdGVkTGluZSk7XG5cdFx0XHRcdFx0XHRcdFx0Ly8g6YCJ5oup5a6M5Lqn57q/5ZCO5Yqg6L295a+55bqU55qE5bel5Y2V5L+h5oGvXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2FkT3JkZXJzKHRoaXMubGluZUNvZGUpO1xuXHRcdFx0XHRcdFx0XHRcdC8vIOmAieaLqeWujOS6p+e6v+WQjuWKoOi9veWvueW6lOeahOavj+aXpeS6p+iDveS/oeaBr1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMubG9hZERhaWx5Q2FwYWNpdHkodGhpcy5saW5lQ29kZSk7XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIGxpbmUgaW5mbzonLCByZXMpO1xuXHRcdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0XHR0aXRsZTogcmVzLFxuXHRcdFx0XHRcdFx0XHRcdGljb246ICdub25lJyxcblx0XHRcdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMFxuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0fVxuXHRcdFx0fSxcblxuXHRcdFx0dmlld0hpc3RvcnkoKSB7XG5cdFx0XHRcdHRoaXMuZmV0Y2hIaXN0b3J5UmVjb3Jkcyh0aGlzLnNlbGVjdGVkT3JkZXIpO1xuXHRcdFx0XHR0aGlzLnNob3dIaXN0b3J5UG9wdXAgPSB0cnVlO1xuXG5cdFx0XHR9LFxuXHRcdFx0Ly8g5YWz6Zet5by556qXXG5cdFx0XHRjbG9zZVBvcHVwKCkge1xuXHRcdFx0XHR0aGlzLnNob3dIaXN0b3J5UG9wdXAgPSBmYWxzZTtcblx0XHRcdH0sXG5cdFx0XHQvLyDojrflj5bljoblj7LmiZPljbDorrDlvZVcblx0XHRcdGZldGNoSGlzdG9yeVJlY29yZHMob3JkZXJObykge1xuXHRcdFx0XHR1bmkucmVxdWVzdCh7XG5cdFx0XHRcdFx0dXJsOiBgaHR0cDovLzE5Mi4xNjguMC4xMDc6NDQzODAvYXBpL3ByaW50L3ByaW50SGlzdG9yeT9vcmRlck5vPSR7ZW5jb2RlVVJJQ29tcG9uZW50KG9yZGVyTm8pfWAsXG5cdFx0XHRcdFx0bWV0aG9kOiAnR0VUJyxcblx0XHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdC8vIOato+ehruino+aekOWQjuerr+i/lOWbnueahOaVsOaNrlxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnMTIzJywgcmVzLmRhdGEuaGlzdG9yeVJlY29yZHMpO1xuXHRcdFx0XHRcdFx0XHQvL+iOt+WPluacgOaWsOadoeeggVxuXHRcdFx0XHRcdFx0XHR0aGlzLmxhc3RSZXF1ZXN0RGF0YSA9IHJlcy5kYXRhLmhpc3RvcnlSZWNvcmRzWzBdLml0ZW1CYXJjb2RlO1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9sZGJncyA9IHJlcy5kYXRhLmhpc3RvcnlSZWNvcmRzWzBdLnF1YW50aXR5O1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLmxhc3RSZXF1ZXN0RGF0YSk7XG5cdFx0XHRcdFx0XHRcdC8vIOWwhuWQjuerr+aVsOaNruaYoOWwhOWIsOWJjeerr+S9v+eUqOeahOagvOW8j1xuXHRcdFx0XHRcdFx0XHR0aGlzLmhpc3RvcnlMaXN0ID0gKHJlcy5kYXRhLmhpc3RvcnlSZWNvcmRzIHx8IFtdKS5tYXAocmVjb3JkID0+ICh7XG5cdFx0XHRcdFx0XHRcdFx0aXRlbUJhcmNvZGU6IHJlY29yZC5pdGVtQmFyY29kZSB8fCAn5pyq55+l5p2h56CBJywgLy8g56Gu5L+d6Kej5p6Q5a2X5q61XG5cdFx0XHRcdFx0XHRcdFx0cXVhbnRpdHk6IHJlY29yZC5xdWFudGl0eSB8fCAn5pyq55+l5pWw6YePJywgLy8g5omT5Y2w5pWw6YeP5a2X5q61XG5cdFx0XHRcdFx0XHRcdFx0cHJpbnREYXRlOiByZWNvcmQucHJpbnREYXRlIHx8ICfmnKrnn6Xml7bpl7QnLCAvLyDmiZPljbDml7bpl7Rcblx0XHRcdFx0XHRcdFx0XHRwcmludGVkQnk6IHJlY29yZC5wcmludGVkQnkgfHwgJycgLy8g5oql5bel5Lq6XG5cdFx0XHRcdFx0XHRcdH0pKTtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0hpc3RvcnkgcmVjb3JkcyBsb2FkZWQ6JywgdGhpcy5oaXN0b3J5TGlzdCk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggaGlzdG9yeSByZWNvcmRzOicsIHJlcyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBoaXN0b3J5IHJlY29yZHM6JywgZXJyKTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXHRcdFx0fSxcblx0XHRcdC8vIOWKoOi9veS6uuWRmOS/oeaBr1xuXHRcdFx0bG9hZFBlcnNvbnMoKSB7XG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IFwiaHR0cDovLzE5Mi4xNjguMC4xMDc6NDQzODAvYXBpL3BlcnNvbnNcIiwgLy8g5pu/5o2i5Li65L2g55qEIEFTUC5ORVQgQ29yZSBBUEkg5Zyw5Z2AXG5cdFx0XHRcdFx0bWV0aG9kOiAnR0VUJyxcblx0XHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdC8vIOi/h+a7pOaOieacieepuuWAvOaIluaXoOaViOaVsOaNrueahOmhuVxuXHRcdFx0XHRcdFx0XHQvLyAgdGhpcy5wZXJzb25PcHRpb25zID0gcmVzLmRhdGEuZmlsdGVyKHBlcnNvbiA9PiBwZXJzb24ucGVyc29uTmFtZSAmJiBwZXJzb24ucGVyc29uTmFtZS50cmltKCkpO1xuXG5cblx0XHRcdFx0XHRcdFx0dGhpcy5wZXJzb25MaXN0ID0gcmVzLmRhdGEuZmlsdGVyKHBlcnNvbiA9PlxuXHRcdFx0XHRcdFx0XHRcdHBlcnNvbi5wZXJzb25OYW1lICYmIHBlcnNvbi5wZXJzb25OYW1lLnRyaW0oKS5sZW5ndGggPiAwXG5cdFx0XHRcdFx0XHRcdCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGVyc29uT3B0aW9ucyA9IHRoaXMucGVyc29uTGlzdC5tYXAoaXQgPT4gaXQucGVyc29uTmFtZSk7XG5cdFx0XHRcdFx0XHRcdHRoaXMucGVyc29uSW5kZXggPSAtMTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBwZXJzb25zOicsIHJlcyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBwZXJzb25zOicsIGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQvLyDmm7TmlrDpgInkuK3nmoTkurrlkZjlkI3np7Bcblx0XHRcdHVwZGF0ZVBlcnNvbk5hbWUoZSkge1xuXHRcdFx0XHR0aGlzLnBlcnNvbkluZGV4ID0gZS5kZXRhaWwudmFsdWU7XG5cblx0XHRcdFx0aWYgKHRoaXMucGVyc29uSW5kZXggPT0gLTEpIHtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkUGVyc29uID0gdGhpcy5wZXJzb25MaXN0W3RoaXMucGVyc29uSW5kZXhdLnBlcnNvbk5hbWU7XG5cdFx0XHRcdHRoaXMucGVyc29uSWQgPSB0aGlzLnBlcnNvbkxpc3RbdGhpcy5wZXJzb25JbmRleF0ucGVyc29uSWQ7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHRoaXMucGVyc29uSWQgKyBcIiA6XCIgKyB0aGlzLnNlbGVjdGVkUGVyc29uKTtcblx0XHRcdH0sXG5cdFx0XHQvL+WKoOi9veS6p+e6v+S/oeaBr1xuXHRcdFx0bG9hZExpbmVzKCkge1xuXHRcdFx0XHR1bmkucmVxdWVzdCh7XG5cdFx0XHRcdFx0dXJsOiBcImh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9saW5lc1wiLCAvLyDmm7/mjaLkuLrkvaDnmoQgQVBJIOWcsOWdgFxuXHRcdFx0XHRcdG1ldGhvZDogJ0dFVCcsXG5cdFx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0XHQnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmxpbmVMaXN0ID0gcmVzLmRhdGEuZmlsdGVyKGxpbmUgPT5cblx0XHRcdFx0XHRcdFx0XHRsaW5lLmxpbmVOYW1lICYmIGxpbmUubGluZU5hbWUudHJpbSgpLmxlbmd0aCA+IDBcblx0XHRcdFx0XHRcdFx0KTtcblx0XHRcdFx0XHRcdFx0dGhpcy5saW5lT3B0aW9ucyA9IHRoaXMubGluZUxpc3QubWFwKGl0ID0+IGl0LmxpbmVOYW1lKTtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0xpbmUgb3B0aW9ucyBsb2FkZWQ6JywgdGhpcy5saW5lT3B0aW9ucyk7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggbGluZXM6JywgcmVzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGxpbmVzOicsIGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQvLyDmm7TmlrDpgInkuK3nmoTkuqfnur9cblx0XHRcdHVwZGF0ZUxpbmUoZSkge1xuXHRcdFx0XHRjb25zdCBzZWxlY3RlZEluZGV4ID0gZS5kZXRhaWwudmFsdWU7IC8v5pWw57uE5LiL5qCHXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRMaW5lID0gdGhpcy5saW5lT3B0aW9uc1tzZWxlY3RlZEluZGV4XTtcblx0XHRcdFx0dGhpcy5saW5lQ29kZSA9IHRoaXMubGluZUxpc3Rbc2VsZWN0ZWRJbmRleF0ubGluZU5vOyAvLyDkv53lrZjpgInkuK3nmoTkuqfnur/nvJblj7dcblx0XHRcdFx0Y29uc29sZS5sb2coJ1NlbGVjdGVkIGxpbmU6JywgdGhpcy5zZWxlY3RlZExpbmUpO1xuXHRcdFx0XHRjb25zb2xlLmxvZygnU2VsZWN0ZWQgbGluZU5vOicsIHRoaXMubGluZU5vKTtcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE9yZGVyID0gbnVsbDtcblx0XHRcdFx0Ly8g6YCJ5oup5a6M5Lqn57q/5ZCO5Yqg6L295a+55bqU55qE5bel5Y2V5L+h5oGvXG5cdFx0XHRcdHRoaXMubG9hZE9yZGVycyh0aGlzLmxpbmVDb2RlKTtcblx0XHRcdFx0Ly8g6YCJ5oup5a6M5Lqn57q/5ZCO5Yqg6L295a+55bqU55qE5q+P5pel5Lqn6IO95L+h5oGvXG5cdFx0XHRcdHRoaXMubG9hZERhaWx5Q2FwYWNpdHkodGhpcy5saW5lQ29kZSk7XG5cdFx0XHR9LFxuXHRcdFx0Ly8g5Yqg6L295q+P5pel5Lqn6IO95L+h5oGvXG5cdFx0XHRsb2FkRGFpbHlDYXBhY2l0eShsaW5lTm8pIHtcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdHVybDogYGh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9jYXBhY2l0eT9saW5lTm89JHtlbmNvZGVVUklDb21wb25lbnQobGluZU5vKX1gLCAvLyDlgYforr7kvaDmnInkuIDkuKrojrflj5bmr4/ml6Xkuqfog73nmoRBUElcblx0XHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRcdGhlYWRlcjoge1xuXHRcdFx0XHRcdFx0J0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJ1xuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDAgJiYgQXJyYXkuaXNBcnJheShyZXMuZGF0YSkgJiYgcmVzLmRhdGEubGVuZ3RoID4gMCkge1xuXHRcdFx0XHRcdFx0XHQvLyDlj5blh7rov5Tlm57mlbDnu4TkuK3nmoTnrKzkuIDkuKrlr7nosaHnmoQgZGFpbHkg5YC8XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcy5kYXRhKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5kYWlseUNhcGFjaXR5ID0gcmVzLmRhdGFbMF0uZGFpbHk7IC8vIOebtOaOpeS/neWtmOavj+aXpeS6p+iDvVxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrZWRJbnNwZWN0aW9uID0gcmVzLmRhdGFbMF0uaXNfREogPT0gMTtcblx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja2VkTWFpbnRlbmFuY2UgPSByZXMuZGF0YVswXS5pc19XSCA9PSAxO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrWEogPSBudWxsO1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrRmlyc3RQYXNzID0gbnVsbDtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ0RhaWx5IGNhcGFjaXR5IGxvYWRlZDonLCB0aGlzLmRhaWx5Q2FwYWNpdHkpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5kYWlseUNhcGFjaXR5ID0gJ+aaguaXoOaVsOaNric7IC8vIOaIluiAheiuvue9ruS4uuWFtuS7lum7mOiupOWAvFxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrZWRJbnNwZWN0aW9uID0gbnVsbDsgLy8g6YeN572u54K55qOA54q25oCBXG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tlZE1haW50ZW5hbmNlID0gbnVsbDsgLy8g6YeN572u5L+d5YW754q25oCBXG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tYSiA9IG51bGw7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tGaXJzdFBhc3MgPSBudWxsO1xuXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBkYWlseSBjYXBhY2l0eSBvciBubyBkYXRhOicsIHJlcyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIGRhaWx5IGNhcGFjaXR5OicsIGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQvLyDliqDovb3lt6XljZXkv6Hmga9cblx0XHRcdGxvYWRPcmRlcnMobGluZU5vKSB7XG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IGBodHRwOi8vMTkyLjE2OC4wLjEwNzo0NDM4MC9hcGkvb3JkZXJzP2xpbmVObz0ke2VuY29kZVVSSUNvbXBvbmVudChsaW5lTm8pfWAsIC8vIOS9v+eUqOWtmOWCqOeahGxpbmVOb1xuXHRcdFx0XHRcdG1ldGhvZDogJ0dFVCcsXG5cdFx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0XHQnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9yZGVyTGlzdCA9IHJlcy5kYXRhLmZpbHRlcihvcmRlciA9PlxuXHRcdFx0XHRcdFx0XHRcdG9yZGVyLm9yZGVyTm8gJiYgb3JkZXIub3JkZXJOby50cmltKCkubGVuZ3RoID4gMFxuXHRcdFx0XHRcdFx0XHQpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLm9yZGVyT3B0aW9ucyA9IHRoaXMub3JkZXJMaXN0Lm1hcChpdCA9PiBpdC5vcmRlck5vKTtcblxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnT3JkZXIgb3B0aW9ucyBsb2FkZWQ6JywgdGhpcy5vcmRlck9wdGlvbnMpO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIG9yZGVyczonLCByZXMpO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgb3JkZXJzOicsIGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdH0sXG5cdFx0XHQvLyDmm7TmlrDpgInkuK3nmoTlt6XljZVcblx0XHRcdGxvYWRPcmRlckRldGFpbHMoZSkge1xuXHRcdFx0XHRjb25zdCBzZWxlY3RlZEluZGV4ID0gZS5kZXRhaWwudmFsdWU7IC8vIOiOt+WPlumAieaLqeeahOe0ouW8lVxuXHRcdFx0XHR0aGlzLnNlbGVjdGVkT3JkZXIgPSB0aGlzLm9yZGVyT3B0aW9uc1tzZWxlY3RlZEluZGV4XTsgLy8g6I635Y+W6YCJ5Lit55qE5bel5Y2V57yW5Y+3XG5cdFx0XHRcdHRoaXMub3JkZXJObyA9IHRoaXMub3JkZXJMaXN0W3NlbGVjdGVkSW5kZXhdLm9yZGVyTm87IC8vIOS/neWtmOmAieS4reeahOW3peWNlee8luWPt1xuXHRcdFx0XHRjb25zb2xlLmxvZygndGlhb21hJywgdGhpcy5zZWxlY3RlZE9yZGVyKTtcblx0XHRcdFx0Y29uc29sZS5sb2coJ1NlbGVjdGVkIG9yZGVyTm86JywgdGhpcy5vcmRlck5vKTtcblx0XHRcdFx0dGhpcy5vcmRlckRldGFpbHMgPSB7XG5cdFx0XHRcdFx0cmVxdWlyZW1lbnREb2M6ICcnLCAvLyDpnIDmsYLljZXmja5cblx0XHRcdFx0XHRwcm9kdWN0aW9uT3JkZXI6ICcnLCAvLyDnlJ/kuqforqLljZVcblx0XHRcdFx0XHRvcmRlclF1YW50aXR5OiAnJywgLy8g6K6i5Y2V5pWw6YePXG5cdFx0XHRcdFx0YnpzbDogJycsIC8vIOaOqOiNkOWMheijheaVsFxuXHRcdFx0XHRcdGdkenQ6JycsXG5cdFx0XHRcdFx0cHJvZHVjZWRRdWFudGl0eTogJycsIC8vIOW3sueUn+S6p+aVsFxuXHRcdFx0XHRcdGl0ZW1JZDogJycsIC8vIOeJqeaWmUlEXG5cdFx0XHRcdFx0aXRlbU5vOiAnJywgLy8g54mp5paZ57yW56CBXG5cdFx0XHRcdFx0aXRlbW5hbWU6ICcnLCAvLyDnianmlpnlkI3np7Bcblx0XHRcdFx0XHRpdGVtbW9kZWw6ICcnLCAvLyDop4TmoLzlnovlj7dcblxuXG5cdFx0XHRcdH07XG5cdFx0XHRcdC8vMjAyNTAyMTMg5L+u5pS55Y6G5Y+y5omT5Y2w6K6w5b2V5Li6bnVsbCBcblx0XHRcdFx0bGFzdFJlcXVlc3REYXRhOiBudWxsO1xuXHRcdFx0XHRjb25zb2xlLmxvZygnbGFzdFJlcXVlc3REYXRhOicsIHRoaXMubGFzdFJlcXVlc3REYXRhKTtcblx0XHRcdFx0Ly8g6LCD55So5byA5bel5bel5Y2V5pa55rOVXG5cdFx0XHRcdHRoaXMuc3RhcnRQcm9kdWN0aW9uKCk7XG5cdFx0XHRcdC8vIOiwg+eUqCBBUEkg6I635Y+W5bel5Y2V6K+m5oOFXG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IGBodHRwOi8vMTkyLjE2OC4wLjEwNzo0NDM4MC9hcGkvb3JkZXJEZXRhaWxzP29yZGVyTm89JHtlbmNvZGVVUklDb21wb25lbnQodGhpcy5vcmRlck5vKX1gLCAvLyDkvb/nlKjlrZjlgqjnmoRvcmRlck5vXG5cdFx0XHRcdFx0bWV0aG9kOiAnR0VUJyxcblx0XHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdnb25nZGFueGlueCcsIHJlcy5kYXRhKTtcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMub3JkZXJEZXRhaWxzID0ge1xuXHRcdFx0XHRcdFx0XHRcdHJlcXVpcmVtZW50RG9jOiByZXMuZGF0YS5yZXF1aXJlbWVudERvYywgLy8g6ZyA5rGC5Y2V5o2uXG5cdFx0XHRcdFx0XHRcdFx0cHJvZHVjdGlvbk9yZGVyOiByZXMuZGF0YS5wcm9kdWN0aW9uT3JkZXIsIC8vIOeUn+S6p+iuouWNlVxuXHRcdFx0XHRcdFx0XHRcdG9yZGVyUXVhbnRpdHk6IHJlcy5kYXRhLm9yZGVyUXVhbnRpdHksIC8vIOiuouWNleaVsOmHj1xuXHRcdFx0XHRcdFx0XHRcdGJ6c2w6IHJlcy5kYXRhLmJ6c2wsIC8vIOaOqOiNkOWMheijheaVsFxuXHRcdFx0XHRcdFx0XHRcdGdkenQ6IHJlcy5kYXRhLmdkenQsIC8vIOW3peWNleeKtuaAgVxuXHRcdFx0XHRcdFx0XHRcdHByb2R1Y2VkUXVhbnRpdHk6IHJlcy5kYXRhLnByb2R1Y2VkUXVhbnRpdHksIC8vIOW3sueUn+S6p+aVsFxuXHRcdFx0XHRcdFx0XHRcdGl0ZW1JZDogcmVzLmRhdGEuaXRlbUlkLCAvLyDnianmlplJRFxuXHRcdFx0XHRcdFx0XHRcdGl0ZW1ObzogcmVzLmRhdGEuaXRlbU5PLCAvLyDnianmlpnnvJbnoIFcblx0XHRcdFx0XHRcdFx0XHRpdGVtbmFtZTogcmVzLmRhdGEuaXRlbW5hbWUsIC8vIOeJqeaWmeWQjeensFxuXHRcdFx0XHRcdFx0XHRcdGl0ZW1tb2RlbDogcmVzLmRhdGEuaXRlbW1vZGVsLCAvLyDop4TmoLzlnovlj7dcblxuXG5cdFx0XHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0XHRcdC8vIOagueaNriBzaiDlkowgeGog55qE5YC85p2l6K6+572u6aaW5qOA5ZKM5beh5qOA54q25oCBXG5cdFx0XHRcdFx0XHRcdC8vIOagueaNriBzaiDlkowgeGog55qE5YC85p2l6K6+572u6aaW5qOA5ZKM5beh5qOA54q25oCBXG5cdFx0XHRcdFx0XHRcdGlmIChyZXMuZGF0YS5zaiA9PT0gMSkge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tGaXJzdFBhc3MgPSB0cnVlOyAvLyDpppbmo4DlkIjmoLxcblx0XHRcdFx0XHRcdFx0fSBlbHNlIGlmIChyZXMuZGF0YS5zaiA9PT0gMikge1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tGaXJzdFBhc3MgPSBmYWxzZTsgLy8g6aaW5qOA5LiN5ZCI5qC8XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja0ZpcnN0UGFzcyA9IG51bGw7IC8vIOmmluajgOacquWBmlxuXHRcdFx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhLnhqID09PSAxKSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja1hKID0gdHJ1ZTsgLy8g5beh5qOA5ZCI5qC8XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSBpZiAocmVzLmRhdGEueGogPT09IDIpIHtcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrWEogPSBmYWxzZTsgLy8g5beh5qOA5LiN5ZCI5qC8XG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja1hKID0gbnVsbDsgLy8g5beh5qOA5pyq5YGaXG5cdFx0XHRcdFx0XHRcdH1cblxuXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdPcmRlciBkZXRhaWxzIGxvYWRlZDonLCB0aGlzLm9yZGVyRGV0YWlscyk7XG5cblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBvcmRlciBkZXRhaWxzOicsIHJlcyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBmZXRjaGluZyBvcmRlciBkZXRhaWxzOicsIGVycik7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFx0Ly8g6I635Y+W5Y6G5Y+y5omT5Y2w6K6w5b2VXG5cdFx0XHRcdGNvbnNvbGUubG9nKCcxMjM1NScsIHRoaXMub3JkZXJObyk7XG5cdFx0XHRcdHRoaXMuaGlzdG9yeUxpc3QgPSBbXTtcblx0XHRcdFx0dGhpcy5mZXRjaEhpc3RvcnlSZWNvcmRzKHRoaXMub3JkZXJObyk7XG5cblxuXHRcdFx0fSxcblx0XHRcdC8v5Yi35pawXG5cdFx0XHRyZWZyZXNoU3RhdHVzKCkge1xuXHRcdFx0XHRpZiAoIXRoaXMubGluZUNvZGUpIHtcblx0XHRcdFx0XHRjb25zb2xlLndhcm4oXCLmnKrpgInmi6nkuqfnur/vvJrorr7lpIfngrnmo4Dlkozkv53lhbvnirbmgIHorr7nva7kuLrmnKrlgZpcIik7XG5cdFx0XHRcdFx0dGhpcy5jaGVja2VkSW5zcGVjdGlvbiA9IDA7XG5cdFx0XHRcdFx0dGhpcy5jaGVja2VkTWFpbnRlbmFuY2UgPSAwO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0aWYgKCF0aGlzLnNlbGVjdGVkT3JkZXIpIHtcblx0XHRcdFx0XHRjb25zb2xlLndhcm4oXCLmnKrpgInmi6nlt6XljZXvvJrpppbmo4Dlkozlt6Hmo4DnirbmgIHorr7nva7kuLrmnKrlgZpcIik7XG5cdFx0XHRcdFx0dGhpcy5jaGVja0ZpcnN0UGFzcyA9IG51bGw7XG5cdFx0XHRcdFx0dGhpcy5jaGVja1hKID0gbnVsbDtcblx0XHRcdFx0fVxuXHRcdFx0XHRjb25zb2xlLmxvZyh0aGlzLmxpbmVDb2RlKTtcblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy5zZWxlY3RlZE9yZGVyKTtcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdHVybDogYGh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9yZWZyZXNoYCxcblx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcblx0XHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGRhdGE6IHtcblx0XHRcdFx0XHRcdGxpbmVObzogdGhpcy5saW5lQ29kZSxcblx0XHRcdFx0XHRcdG9yZGVyTm86IHRoaXMuc2VsZWN0ZWRPcmRlciB8fCBcIk4vQVwiIC8vIOacqumAieaLqeW3peWNleaXtuS9v+eUqOWNoOS9jeesplxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDAgJiYgcmVzLmRhdGEpIHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coXCLliLfmlrDmiJDlip/vvJpcIiwgcmVzLmRhdGEpO1xuXG5cdFx0XHRcdFx0XHRcdC8vIOino+aekOWQjuerr+i/lOWbnueahOaVsOWtl+eKtuaAgVxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrRmlyc3RQYXNzID0gdGhpcy5tYXBTdGF0dXMocmVzLmRhdGEuY2hlY2tGaXJzdFBhc3MpOyAvLyDmmKDlsITpppbmo4DnirbmgIFcblx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja1hKID0gdGhpcy5tYXBTdGF0dXMocmVzLmRhdGEuY2hlY2tYSik7IC8vIOaYoOWwhOW3oeajgOeKtuaAgVxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrZWRJbnNwZWN0aW9uID0gcmVzLmRhdGEuY2hlY2tlZEluc3BlY3Rpb24gPT09IDE7IC8vIOeCueajgO+8mjE9dHJ1ZSwgMj1mYWxzZVxuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrZWRNYWludGVuYW5jZSA9IHJlcy5kYXRhLmNoZWNrZWRNYWludGVuYW5jZSA9PT0gMTsgLy8g5L+d5YW777yaMT10cnVlLCAyPWZhbHNlXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKFwi5Yi35paw5oiQ5Yqf77ya6aaW5qOAXCIsIHRoaXMuY2hlY2tGaXJzdFBhc3MpO1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhcIuWIt+aWsOaIkOWKn++8muW3oeajgFwiLCB0aGlzLmNoZWNrWEopO1xuXG5cblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICfliLfmlrDmiJDlip8nLFxuXHRcdFx0XHRcdFx0XHRcdGljb246ICdzdWNjZXNzJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCLliLfmlrDlpLHotKXvvJpcIiwgcmVzKTtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICfliLfmlrDlpLHotKXvvIzmlbDmja7lvILluLgnLFxuXHRcdFx0XHRcdFx0XHRcdGljb246ICdub25lJ1xuXHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCLliLfmlrDmjqXlj6Por7fmsYLlpLHotKXvvJpcIiwgZXJyKTtcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogJ+WIt+aWsOWksei0pe+8jOe9kee7nOW8guW4uCcsXG5cdFx0XHRcdFx0XHRcdGljb246ICdub25lJ1xuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdFxuXHRcdFx0Ly8g6LCD55SoIEFQSSDojrflj5blt6XljZXor6bmg4Vcblx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0dXJsOiBgaHR0cDovLzE5Mi4xNjguMC4xMDc6NDQzODAvYXBpL29yZGVyRGV0YWlscz9vcmRlck5vPSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMub3JkZXJObyl9YCwgLy8g5L2/55So5a2Y5YKo55qEb3JkZXJOb1xuXHRcdFx0XHRtZXRob2Q6ICdHRVQnLFxuXHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHQnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG5cdFx0XHRcdH0sXG5cdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ29uZ2RhbnhpbngnLCByZXMuZGF0YSk7XG5cdFx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdHRoaXMub3JkZXJEZXRhaWxzID0ge1xuXHRcdFx0XHRcdFx0XHRyZXF1aXJlbWVudERvYzogcmVzLmRhdGEucmVxdWlyZW1lbnREb2MsIC8vIOmcgOaxguWNleaNrlxuXHRcdFx0XHRcdFx0XHRwcm9kdWN0aW9uT3JkZXI6IHJlcy5kYXRhLnByb2R1Y3Rpb25PcmRlciwgLy8g55Sf5Lqn6K6i5Y2VXG5cdFx0XHRcdFx0XHRcdG9yZGVyUXVhbnRpdHk6IHJlcy5kYXRhLm9yZGVyUXVhbnRpdHksIC8vIOiuouWNleaVsOmHj1xuXHRcdFx0XHRcdFx0XHRienNsOiByZXMuZGF0YS5ienNsLCAvLyDmjqjojZDljIXoo4XmlbBcblx0XHRcdFx0XHRcdFx0Z2R6dDogcmVzLmRhdGEuZ2R6dCwgLy8g5bel5Y2V54q25oCBXG5cdFx0XHRcdFx0XHRcdHByb2R1Y2VkUXVhbnRpdHk6IHJlcy5kYXRhLnByb2R1Y2VkUXVhbnRpdHksIC8vIOW3sueUn+S6p+aVsFxuXHRcdFx0XHRcdFx0XHRpdGVtSWQ6IHJlcy5kYXRhLml0ZW1JZCwgLy8g54mp5paZSURcblx0XHRcdFx0XHRcdFx0aXRlbU5vOiByZXMuZGF0YS5pdGVtTk8sIC8vIOeJqeaWmee8lueggVxuXHRcdFx0XHRcdFx0XHRpdGVtbmFtZTogcmVzLmRhdGEuaXRlbW5hbWUsIC8vIOeJqeaWmeWQjeensFxuXHRcdFx0XHRcdFx0XHRpdGVtbW9kZWw6IHJlcy5kYXRhLml0ZW1tb2RlbCwgLy8g6KeE5qC85Z6L5Y+3XG5cdFx0XHRcblx0XHRcdFxuXHRcdFx0XHRcdFx0fTtcblx0XHRcdFx0XHRcdC8vIOagueaNriBzaiDlkowgeGog55qE5YC85p2l6K6+572u6aaW5qOA5ZKM5beh5qOA54q25oCBXG5cdFx0XHRcdFx0XHQvLyDmoLnmja4gc2og5ZKMIHhqIOeahOWAvOadpeiuvue9rummluajgOWSjOW3oeajgOeKtuaAgVxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhLnNqID09PSAxKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tGaXJzdFBhc3MgPSB0cnVlOyAvLyDpppbmo4DlkIjmoLxcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAocmVzLmRhdGEuc2ogPT09IDIpIHtcblx0XHRcdFx0XHRcdFx0dGhpcy5jaGVja0ZpcnN0UGFzcyA9IGZhbHNlOyAvLyDpppbmo4DkuI3lkIjmoLxcblx0XHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tGaXJzdFBhc3MgPSBudWxsOyAvLyDpppbmo4DmnKrlgZpcblx0XHRcdFx0XHRcdH1cblx0XHRcdFxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhLnhqID09PSAxKSB7XG5cdFx0XHRcdFx0XHRcdHRoaXMuY2hlY2tYSiA9IHRydWU7IC8vIOW3oeajgOWQiOagvFxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChyZXMuZGF0YS54aiA9PT0gMikge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrWEogPSBmYWxzZTsgLy8g5beh5qOA5LiN5ZCI5qC8XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHR0aGlzLmNoZWNrWEogPSBudWxsOyAvLyDlt6Hmo4DmnKrlgZpcblx0XHRcdFx0XHRcdH1cblx0XHRcdFxuXHRcdFx0XG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnT3JkZXIgZGV0YWlscyBsb2FkZWQ6JywgdGhpcy5vcmRlckRldGFpbHMpO1xuXHRcdFx0XG5cdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ0ZhaWxlZCB0byBmZXRjaCBvcmRlciBkZXRhaWxzOicsIHJlcyk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9LFxuXHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgb3JkZXIgZGV0YWlsczonLCBlcnIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9KTtcblx0XHRcdFxuXHRcdFx0fSxcblx0XHRcdG1hcFN0YXR1cyhzdGF0dXMpIHtcblx0XHRcdFx0aWYgKHN0YXR1cyA9PT0gMykge1xuXHRcdFx0XHRcdHJldHVybiBudWxsOyAvLyDmnKrlgZpcblx0XHRcdFx0fSBlbHNlIGlmIChzdGF0dXMgPT09IDEpIHtcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTsgLy8g5ZCI5qC8XG5cdFx0XHRcdH0gZWxzZSBpZiAoc3RhdHVzID09PSAyKSB7XG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlOyAvLyDkuI3lkIjmoLxcblx0XHRcdFx0fVxuXHRcdFx0XHRyZXR1cm4gbnVsbDsgLy8g6buY6K6k5pyq5YGaXG5cdFx0XHR9LFxuXG5cdFx0XHQvL+W8gOW3peW3peWNlVxuXHRcdFx0c3RhcnRQcm9kdWN0aW9uKCkge1xuXHRcdFx0XHRpZiAoIXRoaXMuc2VsZWN0ZWRPcmRlcikge1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6ICfor7flhYjpgInmi6nlt6XljZUnLFxuXHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnXG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdHVybDogJ2h0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9JbnNwZWN0aW9uL3N0YXJ0UHJvZHVjdGlvbicsXG5cdFx0XHRcdFx0bWV0aG9kOiAnUE9TVCcsXG5cdFx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0XHQnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRkYXRhOiB7XG5cdFx0XHRcdFx0XHRvcmRlck5vOiB0aGlzLnNlbGVjdGVkT3JkZXIsIC8vIOS8oOWFpeW3peWNleWPt1xuXHRcdFx0XHRcdFx0VXNlcklkOiB0aGlzLnNlbGVjdGVkUGVyc29uLFxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHJlcy5kYXRhLm1lc3NhZ2UsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogJ3N1Y2Nlc3MnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0dGl0bGU6IHJlcy5kYXRhLm1lc3NhZ2UgfHwgJ+W8gOW3peWksei0pScsXG5cdFx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnXG5cdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcign5byA5bel6K+35rGC5aSx6LSlOicsIGVycik7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6ICflvIDlt6Xor7fmsYLlpLHotKUnLFxuXHRcdFx0XHRcdFx0XHRpY29uOiAnbm9uZSdcblx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdH1cblx0XHRcdFx0fSk7XG5cdFx0XHR9LFxuXG5cdFx0XHQvLyDmoLzlvI/ljJbml6XmnJ/lh73mlbBcblx0XHRcdGZvcm1hdERhdGUoZGF0ZSkge1xuXHRcdFx0XHRjb25zdCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpO1xuXHRcdFx0XHRjb25zdCBtb250aCA9IFN0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpO1xuXHRcdFx0XHRjb25zdCBkYXkgPSBTdHJpbmcoZGF0ZS5nZXREYXRlKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG5cdFx0XHRcdGNvbnN0IGhvdXJzID0gU3RyaW5nKGRhdGUuZ2V0SG91cnMoKSkucGFkU3RhcnQoMiwgJzAnKTtcblx0XHRcdFx0Y29uc3QgbWludXRlcyA9IFN0cmluZyhkYXRlLmdldE1pbnV0ZXMoKSkucGFkU3RhcnQoMiwgJzAnKTtcblx0XHRcdFx0Y29uc3Qgc2Vjb25kcyA9IFN0cmluZyhkYXRlLmdldFNlY29uZHMoKSkucGFkU3RhcnQoMiwgJzAnKTtcblx0XHRcdFx0Y29uc3QgbWlsbGlzZWNvbmRzID0gU3RyaW5nKGRhdGUuZ2V0TWlsbGlzZWNvbmRzKCkpLnBhZFN0YXJ0KDMsICcwJyk7IC8vIOavq+enklxuXHRcdFx0XHRyZXR1cm4gYCR7eWVhcn0ke21vbnRofSR7ZGF5fSR7aG91cnN9JHttaW51dGVzfSR7c2Vjb25kc30ke21pbGxpc2Vjb25kc31gO1xuXHRcdFx0fSxcblx0XHRcdGZvcm1hdERhdGUyKGRhdGUpIHtcblx0XHRcdFx0Y29uc3QgeWVhciA9IGRhdGUuZ2V0RnVsbFllYXIoKTtcblx0XHRcdFx0Y29uc3QgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTtcblx0XHRcdFx0Y29uc3QgZGF5ID0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpO1xuXHRcdFx0XHRjb25zdCBob3VycyA9IFN0cmluZyhkYXRlLmdldEhvdXJzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG5cdFx0XHRcdGNvbnN0IG1pbnV0ZXMgPSBTdHJpbmcoZGF0ZS5nZXRNaW51dGVzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG5cdFx0XHRcdGNvbnN0IHNlY29uZHMgPSBTdHJpbmcoZGF0ZS5nZXRTZWNvbmRzKCkpLnBhZFN0YXJ0KDIsICcwJyk7XG5cdFx0XHRcdGNvbnN0IG1pbGxpc2Vjb25kcyA9IFN0cmluZyhkYXRlLmdldE1pbGxpc2Vjb25kcygpKS5wYWRTdGFydCgzLCAnMCcpOyAvLyDmr6vnp5JcblxuXHRcdFx0XHQvL3JldHVybiBgJHt5ZWFyfS8ke21vbnRofS8ke2RheX0gJHtob3Vyc306JHttaW51dGVzfToke3NlY29uZHN9YDsgLy8g5L2/55So57uf5LiA55qE5qC85byP77yaWVlZWS9NTS9ERCBISDptbTpzc1xuXHRcdFx0XHRyZXR1cm4gYCR7eWVhcn0ke21vbnRofSR7ZGF5fSR7aG91cnN9JHttaW51dGVzfSR7c2Vjb25kc30ke21pbGxpc2Vjb25kc31gO1xuXG5cdFx0XHR9LFxuXHRcdFx0Ly8g6aaW5qOA6YCB5qOA5Yqf6IO9XG5cdFx0XHRzZW5kRm9yRmlyc3RJbnNwZWN0aW9uKCkge1xuXHRcdFx0XHRjb25zdCBvcmRlck51bWJlciA9IHRoaXMuc2VsZWN0ZWRPcmRlcjsgLy8g5LuO57uE5Lu254q25oCB5Lit6I635Y+W5bel5Y2V5Y+3XG5cdFx0XHRcdGNvbnNvbGUubG9nKCdTZW5kaW5nIGZvciBmaXJzdCBpbnNwZWN0aW9uIHdpdGggb3JkZXIgbnVtYmVyOicsIG9yZGVyTnVtYmVyKTtcblx0XHRcdFx0Y29uc29sZS5sb2coJ1NlbmRpbmcgZm9yIGZpcnN0IGluc3BlY3Rpb24gd2l0aCBwZXJzb25Db2RlOicsIHRoaXMucGVyc29uQ29kZSk7XG5cblx0XHRcdFx0aWYgKG9yZGVyTnVtYmVyLnRyaW0oKSkge1xuXHRcdFx0XHRcdGNvbnN0IHJlcXVlc3REYXRhID0ge1xuXHRcdFx0XHRcdFx0UmVsZWFzZU5vOiBvcmRlck51bWJlciwgLy8g5L2/55So5Lyg5YWl55qE5bel5Y2V5Y+3XG5cdFx0XHRcdFx0XHRVc2VySWQ6IHRoaXMucGVyc29uQ29kZSwgLy8g56Gu5L+d6L+Z6YeM5pyJ5a+55bqU55qE55So5oi3SURcblxuXHRcdFx0XHRcdH07XG5cdFx0XHRcdFx0Y29uc29sZS5sb2cocmVxdWVzdERhdGEpO1xuXG5cdFx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdFx0dXJsOiAnaHR0cDovLzE5Mi4xNjguMC4xMDc6NDQzODAvYXBpL0luc3BlY3Rpb24vZmlyc3RpbnNwZWN0aW9uJywgLy8g56Gu5L+d6K+35rGC6Lev5b6E5q2j56GuXG5cdFx0XHRcdFx0XHRtZXRob2Q6ICdQT1NUJyxcblx0XHRcdFx0XHRcdGhlYWRlcjoge1xuXHRcdFx0XHRcdFx0XHQnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZGF0YTogcmVxdWVzdERhdGEsIC8vIOWPkemAgeivt+axguaVsOaNrlxuXHRcdFx0XHRcdFx0c3VjY2VzczogKHJlcykgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdGaXJzdCBpbnNwZWN0aW9uIHN1Ym1pdHRlZCBzdWNjZXNzZnVsbHk6JywgcmVzLmRhdGEpO1xuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdFx0dGl0bGU6ICfpppbmo4DpgIHmo4DmiJDlip8nLFxuXHRcdFx0XHRcdFx0XHRcdFx0aWNvbjogJ3N1Y2Nlc3MnLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDIwMDBcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gc2VuZCBmb3IgZmlyc3QgaW5zcGVjdGlvbjonLCByZXMpO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ3Jlcy5kYXRhLm1lc3NhZ2U6JywgcmVzLmRhdGEubWVzc2FnZSk7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogcmVzLmRhdGEubWVzc2FnZSxcblx0XHRcdFx0XHRcdFx0XHRcdGljb246ICdub25lJyxcblx0XHRcdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ1JlcXVlc3QgZmFpbGVkOicsIGVycik7XG5cdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAn572R57uc6ZSZ6K+vJyxcblx0XHRcdFx0XHRcdFx0XHRpY29uOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDIwMDBcblx0XHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogJ+W3peWNleWPt+S4jeiDveS4uuepuicsXG5cdFx0XHRcdFx0XHRpY29uOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMFxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXG5cblx0XHRcdC8vIOaPkOS6pOaKpeW3peS/oeaBr+eahOaWueazlVxuXHRcdFx0cHJpbnRCYXJjb2RlKCkge1xuXHRcdFx0XHQvLyAqKuWFiOajgOafpSBVU0Ig6L+e5o6l54q25oCBKipcblx0XHRcdC8qXHRpZiAoIVVzYk1vZHVsZSB8fCAhVXNiTW9kdWxlLmlzVXNiQ29ubmVjdCB8fCAhVXNiTW9kdWxlLmlzVXNiQ29ubmVjdCgpKSB7XG5cdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XG5cdFx0XHRcdFx0XHR0aXRsZTogYCAke3RoaXMubmV0d29ya1N0YXRlfWAsXG5cdFx0XHRcdFx0XHRjb250ZW50OiBcIuivt+ajgOafpeaJk+WNsOacuui/nuaOpVwiLFxuXHRcdFx0XHRcdFx0c2hvd0NhbmNlbDogZmFsc2UsXG5cdFx0XHRcdFx0XHRzdWNjZXNzOiAoKSA9PiB7XG5cdFx0XHRcdFx0XHRcdHRoaXMubW9kYWxWaXNpYmxlID0gZmFsc2U7XG5cblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXR1cm47IC8vICoqVVNCIOi/nuaOpeWksei0pe+8jOebtOaOpei/lOWbnu+8jOmYsuatouaJp+ihjOaJk+WNsCoqXG5cdFx0XHRcdH0qL1xuXHRcdFx0XHRcblx0XHRcdFx0dW5pLnJlcXVlc3Qoe1xuXHRcdFx0XHRcdHVybDogYGh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9wZXJzb25zLyR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMucGVyc29uQ29kZSl9YCwgLy8g5L+u5pS55ZCO55qE6K+35rGC6Lev5b6EXG5cdFx0XHRcdFx0bWV0aG9kOiAnR0VUJyxcblx0XHRcdFx0XHRoZWFkZXI6IHtcblx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlcy5kYXRhLnBlcnNvbm5lbE5hbWUpO1xuXHRcdFx0XHRcdFx0XHR0aGlzLnNlbGVjdGVkUGVyc29uID0gcmVzLmRhdGEucGVyc29ubmVsTmFtZTsgLy8g6K6+572u5Lq65ZGY5L+h5oGvXG5cdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCdQZXJzb24gaW5mbyBsb2FkZWQ6JywgdGhpcy5zZWxlY3RlZFBlcnNvbik7XG5cdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gZmV0Y2ggcGVyc29uIGluZm86JywgcmVzKTtcblx0XHRcdFx0XHRcdH1cblx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0XHR0aXRsZTogcmVzLFxuXHRcdFx0XHRcdFx0XHRpY29uOiAnbm9uZScsXG5cdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHR9XG5cdFx0XHRcdH0pO1xuXG5cdFx0XHRcdC8vIOemgeeUqOaMiemSrjXnp5Jcblx0XHRcdFx0dGhpcy5pc0J1dHRvbkRpc2FibGVkID0gdHJ1ZTtcblx0XHRcdFx0c2V0VGltZW91dCgoKSA9PiB7XG5cdFx0XHRcdFx0dGhpcy5pc0J1dHRvbkRpc2FibGVkID0gZmFsc2U7XG5cdFx0XHRcdH0sIDUwMDApO1xuXHRcdFx0XHQvLyDmoKHpqozmiqXlt6XmlbBcblx0XHRcdFx0aWYgKHRoaXMucmVwb3J0ZWRRdWFudGl0eSA8PSAwIHx8XG5cdFx0XHRcdFx0TnVtYmVyKHRoaXMucmVwb3J0ZWRRdWFudGl0eSkgKyBOdW1iZXIodGhpcy5vcmRlckRldGFpbHMucHJvZHVjZWRRdWFudGl0eSkgPiBOdW1iZXIodGhpc1xuXHRcdFx0XHRcdFx0Lm9yZGVyRGV0YWlscy5vcmRlclF1YW50aXR5KSkge1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6ICfmiqXlt6XmlbDml6DmlYjmiJbotoXlh7rorqLljZXmlbDph4/vvIzor7fmo4Dmn6XjgIInLFxuXHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxuXHRcdFx0XHRcdFx0ZHVyYXRpb246IDIwMDBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHQvLyDmmL7npLroh6rlrprkuYnnmoTnuqLoibLog4zmma/jgIHnmb3oibLlrZfkvZPnmoTmj5DnpLrmoYZcblx0XHRcdFx0XHQvLyAgIHRoaXMuJHJlZnMuY3VzdG9tVG9hc3Quc2hvd1RvYXN0KCfmiqXlt6XmlbDml6DmlYjmiJbotoXlh7rorqLljZXmlbDph4/vvIzor7fmo4Dmn6XjgIInKTtcblxuXG5cdFx0XHRcdFx0cmV0dXJuO1xuXHRcdFx0XHR9XG5cdFx0XHRcdFx0ICAgXG5cdFx0XHRcdC8vIOagvOW8j+WMluW9k+WJjeaXtumXtOS4ulwi5bm05pyI5pel5pe25YiG56eSXCLmoLzlvI9cblx0XHRcdFx0Y29uc3QgY3VycmVudFRpbWUgPSBuZXcgRGF0ZSgpO1xuXHRcdFx0XHRjb25zdCBmb3JtYXR0ZWRUaW1lID0gdGhpcy5mb3JtYXREYXRlKGN1cnJlbnRUaW1lKTtcblx0XHRcdFx0Ly8g5p6E6YCg6K+35rGC5pWw5o2uXG5cdFx0XHRcdGNvbnN0IHJlcXVlc3REYXRhID0ge1xuXHRcdFx0XHRcdG9yZGVyTm86IHRoaXMuc2VsZWN0ZWRPcmRlcixcblx0XHRcdFx0XHRwX3BlcnNvbjogdGhpcy5wZXJzb25Db2RlLFxuXHRcdFx0XHRcdC8vcmVwb3J0ZWRRdWFudGl0eTogdGhpcy5yZXBvcnRlZFF1YW50aXR5LFxuXHRcdFx0XHRcdGl0ZW1JZDogdGhpcy5vcmRlckRldGFpbHMuaXRlbUlkLFxuXHRcdFx0XHRcdHVuaXF1ZVZhbHVlOiBgJHt0aGlzLm9yZGVyRGV0YWlscy5pdGVtTm99LSR7Zm9ybWF0dGVkVGltZX1gLCAvLyDkvb/nlKjmoLzlvI/ljJblkI7nmoTml7bpl7Rcblx0XHRcdFx0XHQvL2l0ZW1Db2RlOiB0aGlzLm9yZGVyRGV0YWlscy5pdGVtTm8sIC8vIOWBh+iuvueJqeaWmee8lueggeS4uml0ZW1JZFxuXHRcdFx0XHRcdC8vaXRlbVNwZWM6ICfop4TmoLzlnovlj7cnLCAvLyDov5nph4zlj6/mlLnmiJDlrp7pmYXmlbDmja5cblx0XHRcdFx0XHRxdWFudGl0eTogTnVtYmVyKHRoaXMucmVwb3J0ZWRRdWFudGl0eSkgLy8g56Gu5L+d5piv5pW05pWwXG5cblx0XHRcdFx0fTsgXG5cdFx0XHRcdHRoaXMubG9nUHJpbnRFdmVudChcIuaJk+WNsOWJjVwiLCBcIuaJk+WNsOadoeeggeWJjVwiLHJlcXVlc3REYXRhLnVuaXF1ZVZhbHVlKTtcblx0XHRcdFx0Ly8g5bCGIHJlcXVlc3REYXRhIOS/neWtmOWIsCBsYXN0UmVxdWVzdERhdGEg5LitXG5cdFx0XHRcdHRoaXMubGFzdFJlcXVlc3REYXRhID0gcmVxdWVzdERhdGE7XG5cdFx0XHRcdGNvbnNvbGUubG9nKHJlcXVlc3REYXRhKTtcblx0XHRcdFx0Y29uc29sZS5sb2codGhpcy5zZWxlY3RlZFBlcnNvbik7XG5cdFx0XHRcdHRyeSB7XG5cdFx0XHRcdFx0Ly8g6LCD55So5ZCO56uvIEFQSVxuXHRcdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHRcdHVybDogXCJodHRwOi8vMTkyLjE2OC4wLjEwNzo0NDM4MC9hcGkvcHJpbnRcIixcblx0XHRcdFx0XHRcdG1ldGhvZDogJ1BPU1QnLFxuXHRcdFx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0XHRcdCdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0XHRcdFx0XHRcdH0sXG5cdFx0XHRcdFx0XHRkYXRhOiByZXF1ZXN0RGF0YSxcblx0XHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXNwb25zZSkgPT4ge1xuXHRcdFx0XHRcdFx0XHRpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ+aVsOaNruaPkOS6pOaIkOWKnycsXG5cdFx0XHRcdFx0XHRcdFx0XHRpY29uOiAnc3VjY2VzcycsXG5cdFx0XHRcdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMFxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRUaW1lID0gbmV3IERhdGUoKTtcblx0XHRcdFx0XHRcdFx0XHRjb25zdCBmb3JtYXR0ZWRUaW1lMiA9IHRoaXMuZm9ybWF0RGF0ZTIoY3VycmVudFRpbWUpO1xuXHRcdFx0XHRcdFx0XHRcdHRoaXMubGFzdFJlcXVlc3REYXRhID0gcmVxdWVzdERhdGEudW5pcXVlVmFsdWU7XG5cdFx0XHRcdFx0XHRcdFx0Ly8g5bCG5omT5Y2w55qE5p2h56CB6K6w5b2V5re75Yqg5Yiw5Y6G5Y+y6K6w5b2V5LitXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5oaXN0b3J5TGlzdC5wdXNoKHtcblx0XHRcdFx0XHRcdFx0XHRcdGl0ZW1CYXJjb2RlOiByZXF1ZXN0RGF0YS51bmlxdWVWYWx1ZSxcblx0XHRcdFx0XHRcdFx0XHRcdHByaW50RGF0ZTogZm9ybWF0dGVkVGltZTIudG9Mb2NhbGVTdHJpbmcoKSxcblx0XHRcdFx0XHRcdFx0XHRcdHByaW50ZWRCeTogdGhpcy5zZWxlY3RlZFBlcnNvblxuXHRcdFx0XHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdFx0XHRcdC8v5pi+56S655Sf5Lqn5pWw5re75YqgXG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5vcmRlckRldGFpbHMucHJvZHVjZWRRdWFudGl0eSA9IE51bWJlcih0aGlzLm9yZGVyRGV0YWlsc1xuXHRcdFx0XHRcdFx0XHRcdFx0LnByb2R1Y2VkUXVhbnRpdHkpICsgTnVtYmVyKHRoaXMucmVwb3J0ZWRRdWFudGl0eSk7XG5cdFx0XHRcdFx0XHRcdFx0Ly/mmL7npLrmiqXlt6XmlbDmt7vliqBcblx0XHRcdFx0XHRcdFx0XHR0aGlzLmRhaWx5Q2FwYWNpdHkgPSBOdW1iZXIodGhpcy5kYWlseUNhcGFjaXR5KSArIE51bWJlcih0aGlzXG5cdFx0XHRcdFx0XHRcdFx0XHQucmVwb3J0ZWRRdWFudGl0eSk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2dQcmludEV2ZW50KFwi5omT5Y2w5YmNXCIsIFwi5oql5bel5oiQ5YqfXCIsIHJlcXVlc3REYXRhLnVuaXF1ZVZhbHVlKTtcblxuXHRcdFx0XHRcdFx0XHR9IGVsc2Uge1xuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKHJlc3BvbnNlLmRhdGEubWVzc2FnZSk7XG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogcmVzcG9uc2UuZGF0YS5tZXNzYWdlLFxuXHRcdFx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxuXHRcdFx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDIwMDBcblx0XHRcdFx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFwiUHJpbnQgZmFpbGVkOlwiLCByZXNwb25zZSk7XG5cdFx0XHRcdFx0XHRcdFx0dGhpcy5sb2dQcmludEV2ZW50KFwi5omT5Y2w5YmNXCIsIFwi5byC5bi45LiU6L+U5ZueXCIsIHJlcXVlc3REYXRhLnVuaXF1ZVZhbHVlKTtcblx0XHRcdFx0XHRcdFx0XHQvL+aJk+WNsOadoeeggVxuXHRcdFx0XHRcdFx0XHRcdHJldHVybjtcblx0XHRcdFx0XHRcdFx0fVxuXHRcdCAvLyAqKuWFiOiusOW9lSBcIuaJk+WNsOWJjVwiIOS6i+S7tioqXG5cdFx0ICAgICAgICAgICAgICAgICAgICB0aGlzLmxvZ1ByaW50RXZlbnQoXCLmiZPljbDliY1cIiwgXCLmiZPljbBcIiwgcmVxdWVzdERhdGEudW5pcXVlVmFsdWUpO1xuXHRcdFx0XHRcdFx0XHQvL+aJk+WNsOadoeeggVxuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygndGlhb21hJywgcmVxdWVzdERhdGEudW5pcXVlVmFsdWUpO1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnZ2QnLCB0aGlzLm9yZGVyRGV0YWlscy5wcm9kdWN0aW9uT3JkZXIpO1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygndGlhb21hJywgdGhpcy5zZWxlY3RlZE9yZGVyKTtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2d5cycsIHRoaXMub3JkZXJEZXRhaWxzLnJlcXVpcmVtZW50RG9jKTtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ3dsYm0nLCB0aGlzLm9yZGVyRGV0YWlscy5pdGVtTm8pO1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnd2xtYycsIHRoaXMub3JkZXJEZXRhaWxzLml0ZW1uYW1lKTtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coJ2dneGgnLCB0aGlzLm9yZGVyRGV0YWlscy5pdGVtbW9kZWwpO1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnc2wnLCB0aGlzLnJlcG9ydGVkUXVhbnRpdHkpO1xuXG5cdFx0XHRcdFx0XHRcdC8vIOaJk+WNsOWGheWuueagt+W8j+iuvue9rlxuXHRcdFx0XHRcdFx0XHRjb25zdCBjb21tYW5kID0gdHNjLmpwUHJpbnRlci5jcmVhdGVOZXcoKTtcblxuXHRcdFx0XHRcdFx0XHQvLyDorr7nva7lrr3luqYgMTAwbW0g5ZKM6auY5bqmIDgwbW3vvIjmjaLnrpflkI7lpKfnuqYgNzk5eDYzOSDlg4/ntKDvvIlcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRTaXplKDEwMCwgODApO1xuXG5cdFx0XHRcdFx0XHRcdC8vY29tbWFuZC5zZXRCYWNrRmVlZCgyLjUpO1xuXG5cdFx0XHRcdFx0XHRcdC8vIOWkluahhue6v+adoVxuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldENscygpO1xuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldEJveCgxMCwgMTAsIDc4OSwgNjI5KTsgLy8g5aSW5qGG77yM6Led56a76aG16Z2i6L6557yYIDEwcHhcblxuXHRcdFx0XHRcdFx0XHQvLyDnrKzkuIDpg6jliIbvvJrmnaHnoIHjgIHlt6XljZXlj7fjgIHkvpvlupTllYbkv6Hmga8gKyDlpKfkuoznu7TnoIFcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRCYXIoMjAsIDQwLCBcIjEyOFwiLCAxMDAsIDEsIDAsIDIsIHJlcXVlc3REYXRhLnVuaXF1ZVZhbHVlKTsgLy8g5p2h56CBXG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMCwgNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIFwi54mp5paZ5p2h56CBOiBcIik7XG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgxNTAsIDQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCByZXF1ZXN0RGF0YS51bmlxdWVWYWx1ZSk7XG5cblx0XHRcdFx0XHRcdFx0Ly8g5bel5Y2V5Y+3XG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMCwgMTAwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuW3peWNleWPtzogXCIpO1xuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFRleHQoMTUwLCAxMDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMuc2VsZWN0ZWRPcmRlcik7XG5cblx0XHRcdFx0XHRcdFx0Ly8g5L6b5bqU5ZWG5L+h5oGvXG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMCwgMTYwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIumcgOaxguWNleaNruWPtzogXCIpO1xuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFRleHQoMTUwLCAxNjAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMub3JkZXJEZXRhaWxzLnJlcXVpcmVtZW50RG9jKTtcblxuXHRcdFx0XHRcdFx0XHQvLyDlj7PkvqflpKfkuoznu7TnoIFcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRRUig1NTAsIDEwMCwgXCJMXCIsIDYsIFwiQVwiLCByZXF1ZXN0RGF0YS51bmlxdWVWYWx1ZSk7IC8vIOWkp+S6jOe7tOeggVxuXG5cdFx0XHRcdFx0XHRcdC8vIOesrOS6jOmDqOWIhu+8mueJqeaWmee8lueggVxuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjAsIDIyMCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLnianmlpnnvJbnoIE6IFwiKTtcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDE1MCwgMjIwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCB0aGlzLm9yZGVyRGV0YWlscy5pdGVtTm8pO1xuXG5cblx0XHRcdFx0XHRcdFx0Ly8g56ys5LiJ6YOo5YiG77ya54mp5paZ5ZCN56ewXG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMCwgMjgwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIueJqeaWmeWQjeensDogXCIpO1xuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFRleHQoMTUwLCAyODAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMub3JkZXJEZXRhaWxzLml0ZW1uYW1lKTtcblxuXHRcdFx0XHRcdFx0XHQvLyDnrKzlm5vpg6jliIbvvJrmlbDph4/kuI7pnIDmsYLljZXmja7lj7dcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwLCAzNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIFwi5pWw6YePOiBcIik7XG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgxMjAsIDM0MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgdGhpcy5yZXBvcnRlZFF1YW50aXR5KTtcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwMCwgMzQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuaKpeW3peS6ujogXCIpO1xuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjkwLCAzNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMuc2VsZWN0ZWRQZXJzb24pO1xuXG5cblxuXHRcdFx0XHRcdFx0XHQvLyBjb21tYW5kLnNldFRleHQoMjkwLCAzNDAsIFwiRk9OVCAzXCIsIDEsIDEsIHRoaXMuc2VsZWN0ZWRQZXJzb24pO1xuXHRcdFx0XHRcdFx0XHQvLyBjb21tYW5kLnNldFRleHQoMjkwLCAzNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIGVuY29kZVVSSSh0aGlzLnNlbGVjdGVkUGVyc29uKSk7XG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCg0MDAsIDM0MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLmiZPljbDml7bpl7Q6IFwiKTtcblx0XHRcdFx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDUzMCwgMzQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCB0aGlzLmZvcm1hdERhdGUyKG5ldyBEYXRlKCkpKTtcblx0XHRcdFx0XHRcdFx0Ly8g56ys5LqU6YOo5YiG77ya5bem5L6n5LqM57u056CBICsg6KeE5qC85Z6L5Y+3XG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0UVIoMjAsIDQwMCwgXCJMXCIsIDUsIFwiQVwiLCByZXF1ZXN0RGF0YS51bmlxdWVWYWx1ZSk7IC8vIOW3puS+p+S6jOe7tOeggVxuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjAwLCA0MDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIFwi6KeE5qC85Z6L5Y+3OiBcIik7XG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMDAsIDQ0MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgdGhpcy5vcmRlckRldGFpbHMuaXRlbW1vZGVsKTtcblxuXG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMDAsIDUzNSwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLmhYjmuqrluILlpI/okpnnlLXlmajmnInpmZDlhazlj7jkuKjms6jloZHovabpl7RcIik7XG5cdFx0XHRcdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMDEsIDUzNiwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLmhYjmuqrluILlpI/okpnnlLXlmajmnInpmZDlhazlj7jkuKjms6jloZHovabpl7RcIik7XG5cdFx0XHRcdFx0XHRcdC8vIOaJk+WNsOaMh+S7pFxuXHRcdFx0XHRcdFx0XHRjb21tYW5kLnNldFBhZ2VQcmludCgpO1xuXG5cdFx0XHRcdFx0XHRcdC8vIGNvbW1hbmQuc2V0RmVlZCgzMCk7XG5cdFx0XHRcdFx0XHRcdHRoaXMuc2VuZERhdGEgPSBjb21tYW5kLmdldERhdGEoKTtcblxuXHRcdFx0XHRcdC8vIDEuIOaJp+ihjOWPkemAgVxuXHRcdFx0XHRcdGxldCBwcmludFJlc3VsdCA9IHRoaXMuc2VuVVNCRGF0YSgpO1xuXHRcdFx0XHRcdFxuXHRcdFx0XHRcdC8vIDIuIOWIpOaWreWPkemAgeaYr+WQpuaIkOWKn1xuXHRcdFx0XHRcdGlmIChwcmludFJlc3VsdC5zdWNjZXNzKSB7XG5cdFx0XHRcdFx0ICAvLyDinIUg5Y+R6YCB5oiQ5Yqf77yM6K6w5b2V5omT5Y2w5pel5b+XXG5cdFx0XHRcdFx0ICB0aGlzLmxvZ1ByaW50RXZlbnQoXCLmiZPljbDlkI5cIiwgXCLmiZPljbBcIiwgcmVxdWVzdERhdGEudW5pcXVlVmFsdWUpO1xuXHRcdFx0XHRcdH0gZWxzZSB7XG5cdFx0XHRcdFx0ICAvLyDinYwg5Y+R6YCB5aSx6LSl77yM5o+Q56S655So5oi377yM5LiN6K6w5b2V5pel5b+XXG5cdFx0XHRcdFx0ICB1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHQgICAgdGl0bGU6IFwi5omT5Y2w5aSx6LSl77yM5pyq6K6w5b2V5pel5b+XXCIsXG5cdFx0XHRcdFx0ICAgIGR1cmF0aW9uOiAyMDAwXG5cdFx0XHRcdFx0ICB9KTtcblx0XHRcdFx0XHR9XG5cblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMub2xkYmdzID0gIHRoaXMucmVwb3J0ZWRRdWFudGl0eTtcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuYmdyPVxuXHRcdFx0XHRcdFx0XHQvL+S7juaWsOWIt+aWsOW3peWNleS/oeaBr1xuXHRcdFx0XHRcdFx0XHRsb2FkT3JkZXJEZXRhaWxzKCk7XG5cdFx0XHRcdFx0XHRcdC8v5LuO5paw5Yi35paw5Y6G5Y+y6K6w5b2VXG5cdFx0XHRcdFx0XG5cdFx0XHRcdFx0XHRcdHRoaXMuZmV0Y2hIaXN0b3J5UmVjb3Jkcyh0aGlzLm9yZGVyTm8pO1xuXG5cdFx0XHRcdFx0XHR9LFxuXHRcdFx0XHRcdFx0ZmFpbDogKGVycikgPT4ge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFwiRXJyb3IgZHVyaW5nIHByaW50IHJlcXVlc3Q6XCIsIGVycik7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSk7XG5cblxuXHRcdFx0XHR9IGNhdGNoIChlcnIpIHtcblx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCdFcnJvciBkdXJpbmcgcHJpbnQgcmVxdWVzdDonLCBlcnIpO1xuXHRcdFx0XHR9XG5cdFx0XHR9LFxuXHRcdFx0Ly8gIHNwbGl0VGV4dEJ5V2lkdGgodGV4dCwgbWF4Q2hhcnNQZXJMaW5lKSB7XG5cdFx0XHQvLyAgIGNvbnN0IGxpbmVzID0gW107XG5cdFx0XHQvLyAgIHdoaWxlICh0ZXh0Lmxlbmd0aCA+IG1heENoYXJzUGVyTGluZSkge1xuXHRcdFx0Ly8gICAgIGxpbmVzLnB1c2godGV4dC5zbGljZSgwLCBtYXhDaGFyc1BlckxpbmUpKTsgLy8g5oiq5Y+W5pyA5aSn6ZW/5bqmXG5cdFx0XHQvLyAgICAgdGV4dCA9IHRleHQuc2xpY2UobWF4Q2hhcnNQZXJMaW5lKTsgLy8g5Ymp5LiL55qE57un57ut5oiq5Y+WXG5cdFx0XHQvLyAgIH1cblx0XHRcdC8vICAgbGluZXMucHVzaCh0ZXh0KTsgLy8g5pyA5ZCO5LiA6KGMXG5cdFx0XHQvLyAgIHJldHVybiBsaW5lcztcblx0XHRcdC8vIH0sXG5cdFx0XHRcblx0XHRcdC8vIOihpeaJk+S4iuS4gOW8oOiusOW9lVxuXHRcdFx0cmVwcmludExhc3QoKSB7XG5cdFx0XHRcdFxuXHRcdFx0XHQvLyDnpoHnlKjmjInpkq4156eSXG5cdFx0XHRcdHRoaXMuaXNCdXR0b25EaXNhYmxlZDIgPSB0cnVlO1xuXHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcblx0XHRcdFx0XHR0aGlzLmlzQnV0dG9uRGlzYWJsZWQyID0gZmFsc2U7XG5cdFx0XHRcdH0sIDUwMDApO1xuXHRcdFx0XHQvLyAqKuWFiOajgOafpSBVU0Ig6L+e5o6l54q25oCBKipcblx0XHRcdFx0aWYgKCFVc2JNb2R1bGUgfHwgIVVzYk1vZHVsZS5pc1VzYkNvbm5lY3QgfHwgIVVzYk1vZHVsZS5pc1VzYkNvbm5lY3QoKSkge1xuXHRcdFx0XHRcdHVuaS5zaG93TW9kYWwoe1xuXHRcdFx0XHRcdFx0dGl0bGU6IGAgJHt0aGlzLm5ldHdvcmtTdGF0ZX1gLFxuXHRcdFx0XHRcdFx0Y29udGVudDogXCLor7fmo4Dmn6XmiZPljbDmnLrov57mjqVcIixcblx0XHRcdFx0XHRcdHNob3dDYW5jZWw6IGZhbHNlLFxuXHRcdFx0XHRcdFx0c3VjY2VzczogKCkgPT4ge1xuXHRcdFx0XHRcdFx0XHR0aGlzLm1vZGFsVmlzaWJsZSA9IGZhbHNlO1xuXHRcdFx0XHRcdFx0fVxuXHRcdFx0XHRcdH0pO1xuXHRcdFx0XHRcdC8vcmV0dXJuOyAvLyAqKlVTQiDov57mjqXlpLHotKXvvIznm7TmjqXov5Tlm57vvIzpmLLmraLmiafooYzmiZPljbAqKlxuXHRcdFx0XHR9XG5cdFx0XHRcdHVuaS5yZXF1ZXN0KHtcblx0XHRcdFx0XHR1cmw6IGBodHRwOi8vMTkyLjE2OC4wLjEwNzo0NDM4MC9hcGkvcGVyc29ucy8ke2VuY29kZVVSSUNvbXBvbmVudCh0aGlzLnBlcnNvbkNvZGUpfWAsIC8vIOS/ruaUueWQjueahOivt+axgui3r+W+hFxuXHRcdFx0XHRcdG1ldGhvZDogJ0dFVCcsXG5cdFx0XHRcdFx0aGVhZGVyOiB7XG5cdFx0XHRcdFx0XHQnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nXG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XG5cdFx0XHRcdFx0XHRpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZyhyZXMuZGF0YS5wZXJzb25uZWxOYW1lKTtcblx0XHRcdFx0XHRcdFx0dGhpcy5zZWxlY3RlZFBlcnNvbiA9IHJlcy5kYXRhLnBlcnNvbm5lbE5hbWU7IC8vIOiuvue9ruS6uuWRmOS/oeaBr1xuXHRcdFx0XHRcdFx0XHRjb25zb2xlLmxvZygnUGVyc29uIGluZm8gbG9hZGVkOicsIHRoaXMuc2VsZWN0ZWRQZXJzb24pO1xuXHRcdFx0XHRcdFx0fSBlbHNlIHtcblx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcignRmFpbGVkIHRvIGZldGNoIHBlcnNvbiBpbmZvOicsIHJlcyk7XG5cdFx0XHRcdFx0XHR9XG5cdFx0XHRcdFx0fSxcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0XHRcdFx0dGl0bGU6IHJlcyxcblx0XHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxuXHRcdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMFxuXHRcdFx0XHRcdFx0fSk7XG5cdFx0XHRcdFx0fVxuXHRcdFx0XHR9KTtcblx0XHRcdHRoaXMuc2VsZWN0ZWRQZXJzb24gPSB0aGlzLmxhc3RSZXF1ZXN0RGF0YS5wcmludGVkQnk7XG5cdFx0XHRcdC8vIOihpeaJk+S4iuS4gOW8oOiusOW9lVxuXHRcdFx0XHR0aGlzLmZldGNoSGlzdG9yeVJlY29yZHModGhpcy5vcmRlck5vKTtcblx0XHRcdFx0aWYgKCF0aGlzLmxhc3RSZXF1ZXN0RGF0YSkge1xuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xuXHRcdFx0XHRcdFx0dGl0bGU6ICfmsqHmnInlj6/ooaXmiZPnmoTorrDlvZUnLFxuXHRcdFx0XHRcdFx0aWNvbjogJ25vbmUnLFxuXHRcdFx0XHRcdFx0ZHVyYXRpb246IDIwMDBcblx0XHRcdFx0XHR9KTtcblx0XHRcdFx0XHRyZXR1cm47XG5cdFx0XHRcdH1cblx0XHRcdFx0XHQvLzIwMjUwNTA3IOaWsOWKoOi1i+WAvOWOhuWPsuadoeeggeaKpeW3peS6ulxuXHRcdFx0XHRcdHRoaXMuc2VsZWN0ZWRQZXJzb24gPSB0aGlzLmxhc3RSZXF1ZXN0RGF0YS5wcmludGVkQnk7XG5cdFx0XHRcdGNvbnNvbGUubG9nKFwi6ICB5p2h56CBXCIsIHRoaXMub2xkYmdzKTtcblx0XHRcdFx0Ly8g6YeN5paw5omT5Y2w5LiK5LiA5byg6K6w5b2VXG5cdFx0XHRcdC8vIGFzeW5jIHJlcHJpbnRMYXN0KCkge1xuXHRcdFx0XHQvLyAgICAgLy8g5riF56m65LiK5qyh55qE5pWw5o2u77yM56Gu5L+d6I635Y+W5Yiw5pyA5paw5pWw5o2uXG5cdFx0XHRcdC8vICAgICB0aGlzLmxhc3RSZXF1ZXN0RGF0YSA9IG51bGw7XG5cdFx0XHRcdC8vICAgICB0aGlzLmJncyA9IG51bGw7XG5cblx0XHRcdFx0Ly8gICAgIC8vIOetieW+hSBmZXRjaEhpc3RvcnlSZWNvcmRzIOivt+axguWujOaIkFxuXHRcdFx0XHQvLyAgICAgYXdhaXQgdGhpcy5mZXRjaEhpc3RvcnlSZWNvcmRzKHRoaXMub3JkZXJObyk7XG5cdFx0XHRcdC8vIGNvbnNvbGUubG9nKFwi5Yi35pawXCIsIHRoaXMubGFzdFJlcXVlc3REYXRhKTtcblx0XHRcdFx0Ly8gICAgIC8vIOajgOafpeaYr+WQpuacieWOhuWPsuiusOW9le+8jOWmguaenOayoeacieWImeaPkOekulxuXHRcdFx0XHQvLyAgICAgaWYgKCF0aGlzLmxhc3RSZXF1ZXN0RGF0YSB8fCB0aGlzLmJncyA9PSBudWxsKSB7XG5cdFx0XHRcdC8vICAgICAgICAgdW5pLnNob3dUb2FzdCh7XG5cdFx0XHRcdC8vICAgICAgICAgICAgIHRpdGxlOiAn5rKh5pyJ5Y+v6KGl5omT55qE6K6w5b2VJyxcblx0XHRcdFx0Ly8gICAgICAgICAgICAgaWNvbjogJ25vbmUnLFxuXHRcdFx0XHQvLyAgICAgICAgICAgICBkdXJhdGlvbjogMjAwMFxuXHRcdFx0XHQvLyAgICAgICAgIH0pO1xuXHRcdFx0XHQvLyAgICAgICAgIHJldHVybjsgIC8vIOmAgOWHuu+8jOmBv+WFjee7p+e7reaJp+ihjOaJk+WNsFxuXHRcdFx0XHQvLyAgICAgfVxuXHRcdFx0ICAvLyAqKuiusOW9lSBcIuihpeaJk+WJjVwiIOS6i+S7tioqXG5cdFx0XHQgICAgdGhpcy5sb2dQcmludEV2ZW50KFwi5omT5Y2w5YmNXCIsIFwi6KGl5omTXCIsIHRoaXMubGFzdFJlcXVlc3REYXRhKTtcblx0XHRcdFx0Ly8g5omT5Y2w5YaF5a655qC35byP6K6+572uXG5cdFx0XHRcdGNvbnN0IGNvbW1hbmQgPSB0c2MuanBQcmludGVyLmNyZWF0ZU5ldygpO1xuXG5cdFx0XHRcdC8vIOiuvue9ruWuveW6piAxMDBtbSDlkozpq5jluqYgODBtbe+8iOaNoueul+WQjuWkp+e6piA3OTl4NjM5IOWDj+e0oO+8iVxuXHRcdFx0XHRjb21tYW5kLnNldFNpemUoMTAwLCA4MCk7XG5cdFx0XHRcdC8vY29tbWFuZC5zZXRCYWNrRmVlZCgyLjUpO1xuXHRcdFx0XHQvLyDlpJbmoYbnur/mnaFcblx0XHRcdFx0Y29tbWFuZC5zZXRDbHMoKTtcblx0XHRcdFx0Y29tbWFuZC5zZXRCb3goMTAsIDEwLCA3ODksIDYyOSk7IC8vIOWkluahhu+8jOi3neemu+mhtemdoui+uee8mCAxMHB4XG5cblx0XHRcdFx0Ly8g56ys5LiA6YOo5YiG77ya5p2h56CB44CB5bel5Y2V5Y+344CB5L6b5bqU5ZWG5L+h5oGvICsg5aSn5LqM57u056CBXG5cdFx0XHRcdGNvbW1hbmQuc2V0QmFyKDIwLCA0MCwgXCIxMjhcIiwgMTAwLCAxLCAwLCAyLCB0aGlzLmxhc3RSZXF1ZXN0RGF0YSk7IC8vIOadoeeggVxuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjAsIDQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIueJqeaWmeadoeeggTogXCIpO1xuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMTUwLCA0MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgdGhpcy5sYXN0UmVxdWVzdERhdGEpO1xuXG5cdFx0XHRcdC8vIOW3peWNleWPt1xuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjAsIDEwMCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLlt6XljZXlj7c6IFwiKTtcblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDE1MCwgMTAwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCB0aGlzLnNlbGVjdGVkT3JkZXIpO1xuXG5cdFx0XHRcdC8vIOS+m+W6lOWVhuS/oeaBr1xuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjAsIDE2MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLpnIDmsYLljZXmja7lj7c6IFwiKTtcblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDE1MCwgMTYwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCB0aGlzLm9yZGVyRGV0YWlscy5yZXF1aXJlbWVudERvYyk7XG5cblx0XHRcdFx0Ly8g5Y+z5L6n5aSn5LqM57u056CBXG5cdFx0XHRcdGNvbW1hbmQuc2V0UVIoNTUwLCAxMDAsIFwiTFwiLCA2LCBcIkFcIiwgdGhpcy5sYXN0UmVxdWVzdERhdGEpOyAvLyDlpKfkuoznu7TnoIFcblxuXHRcdFx0XHQvLyDnrKzkuozpg6jliIbvvJrnianmlpnnvJbnoIFcblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwLCAyMjAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIFwi54mp5paZ57yW56CBOiBcIik7XG5cdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgxNTAsIDIyMCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgdGhpcy5vcmRlckRldGFpbHMuaXRlbU5vKTtcblxuXG5cdFx0XHRcdC8vIOesrOS4iemDqOWIhu+8mueJqeaWmeWQjeensFxuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMjAsIDI4MCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLnianmlpnlkI3np7A6IFwiKTtcblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDE1MCwgMjgwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCB0aGlzLm9yZGVyRGV0YWlscy5pdGVtbmFtZSk7XG5cblx0XHRcdFx0Ly8g56ys5Zub6YOo5YiG77ya5pWw6YeP5LiO6ZyA5rGC5Y2V5o2u5Y+3XG5cdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMCwgMzQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuaVsOmHjzogXCIpO1xuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoMTIwLCAzNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMub2xkYmdzKTtcblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwMCwgMzQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuaJk+WNsOS6ujogXCIpO1xuXG5cblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDI5MCwgMzQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCB0aGlzLnNlbGVjdGVkUGVyc29uKTtcblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDQwMCwgMzQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCBcIuaJk+WNsOaXtumXtDogXCIpO1xuXHRcdFx0XHRjb21tYW5kLnNldFRleHQoNTMwLCAzNDAsIFwiVFNTMjQuQkYyXCIsIDEsIDEsIHRoaXMuZm9ybWF0RGF0ZTIobmV3IERhdGUoKSkpO1xuXHRcdFx0XHQvLyDnrKzkupTpg6jliIbvvJrlt6bkvqfkuoznu7TnoIEgKyDop4TmoLzlnovlj7dcblx0XHRcdFx0Y29tbWFuZC5zZXRRUigyMCwgNDAwLCBcIkxcIiwgNSwgXCJBXCIsIHRoaXMubGFzdFJlcXVlc3REYXRhKTsgLy8g5bem5L6n5LqM57u056CBXG5cdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMDAsIDQwMCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLop4TmoLzlnovlj7c6IFwiKTtcblx0XHRcdFx0Y29tbWFuZC5zZXRUZXh0KDIwMCwgNDQwLCBcIlRTUzI0LkJGMlwiLCAxLCAxLCB0aGlzLm9yZGVyRGV0YWlscy5pdGVtbW9kZWwpO1xuXG5cdFx0XHRcdC8vIGNvbW1hbmQuc2V0VGV4dCgzNTAsIDUxMCwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLms6jloZHovabpl7RcIik7XG5cdFx0XHRcdC8vIGNvbW1hbmQuc2V0VGV4dCgzNTEsIDUxMSwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLms6jloZHovabpl7RcIik7XG5cdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMDAsIDUzNSwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLmhYjmuqrluILlpI/okpnnlLXlmajmnInpmZDlhazlj7jkuKjms6jloZHovabpl7RcIik7XG5cdFx0XHRcdGNvbW1hbmQuc2V0VGV4dCgyMDEsIDUzNiwgXCJUU1MyNC5CRjJcIiwgMSwgMSwgXCLmhYjmuqrluILlpI/okpnnlLXlmajmnInpmZDlhazlj7jkuKjms6jloZHovabpl7RcIik7XG5cblx0XHRcdFx0Ly8g5omT5Y2w5oyH5LukXG5cdFx0XHRcdGNvbW1hbmQuc2V0UGFnZVByaW50KCk7XG5cdFx0XHRcdGNvbW1hbmQuc2V0RmVlZCgzKTtcblx0XHRcdFx0dGhpcy5zZW5kRGF0YSA9IGNvbW1hbmQuZ2V0RGF0YSgpO1xuXHRcdFx0Ly8gMS4g5omn6KGM5Y+R6YCBXG5cdFx0XHRsZXQgcHJpbnRSZXN1bHQgPSB0aGlzLnNlblVTQkRhdGEoKTtcblx0XHRcdFxuXHRcdFx0Ly8gMi4g5Yik5pat5Y+R6YCB5piv5ZCm5oiQ5YqfXG5cdFx0XHRpZiAocHJpbnRSZXN1bHQuc3VjY2Vzcykge1xuXHRcdFx0Ly8g5Y+R6YCB5oiQ5Yqf77yM6K6w5b2V5omT5Y2w5pel5b+XXG5cdFx0XHQgIHRoaXMubG9nUHJpbnRFdmVudChcIuaJk+WNsOWQjlwiLCBcIuihpeaJk1wiLCB0aGlzLmxhc3RSZXF1ZXN0RGF0YSk7XG5cdFx0XHR9IGVsc2Uge1xuXHRcdFx0Ly8g5Y+R6YCB5aSx6LSl77yM5o+Q56S655So5oi377yM5LiN6K6w5b2V5pel5b+XXG5cdFx0XHR1bmkuc2hvd1RvYXN0KHtcblx0XHRcdFx0dGl0bGU6IFwi5omT5Y2w5aSx6LSl77yM5pyq6K6w5b2V5pel5b+XXCIsXG5cdFx0XHRcdGR1cmF0aW9uOiAyMDAwXG5cdFx0XHR9KTtcblx0XHRcdH1cbkZcblx0XHRcdFx0Ly8g5Y+R6YCB5pWw5o2uXG5cdFx0XHRcdHRoaXMuc2VuVVNCRGF0YSgpO1xuXHRcdCAgICAvLyAqKuiusOW9lSBcIuihpeaJk+WQjlwiIOS6i+S7tioqXG5cdFx0ICBcblx0XHRcdH1cblx0XHQsXG5cdGxvZ1ByaW50RXZlbnQoZXZlbnRUeXBlLCBwcmludFR5cGUsIGJhcmNvZGVWYWx1ZSkge1xuXHRcdCAgXG5cdFx0XHQgXG5cdCAgICBjb25zdCByZXF1ZXN0RGF0YSA9IHtcblx0ICAgICAgICBiYXJjb2RlOiBiYXJjb2RlVmFsdWUsICAvLyDmnaHnoIFcblx0ICAgICAgICB3b3JrZXI6IHRoaXMucGVyc29uQ29kZSwgIC8vIOaKpeW3peS6ulxuXHQgICAgICAgIGV2ZW50VHlwZTogZXZlbnRUeXBlLCAvLyBcIuaJk+WNsOWJjVwiIOaIliBcIuaJk+WNsOWQjlwiXG5cdCAgICAgICAgcHJpbnRUeXBlOiBwcmludFR5cGUsICAvLyBcIuaJk+WNsFwiIOaIliBcIuihpeaJk1wiXG5cdCAgICAgICAgb3JkZXJObzogdGhpcy5zZWxlY3RlZE9yZGVyLCAvLyDlt6XljZXlj7dcblx0ICAgICAgICBsaW5lOiB0aGlzLnNlbGVjdGVkTGluZSAsXG5cdFx0XHR2ZXJzaW9uOnRoaXMudmVyc2lvbi8vIOe6v+S9k1xuXHQgICAgfTtcblx0XHRjb25zb2xlLmxvZyhyZXF1ZXN0RGF0YSk7XG5cdCAgICB1bmkucmVxdWVzdCh7XG5cdCAgICAgICAgdXJsOiBcImh0dHA6Ly8xOTIuMTY4LjAuMTA3OjQ0MzgwL2FwaS9Mb2dQcmludEV2ZW50L2xvZ0V2ZW50XCIsXG5cdCAgICAgICAgbWV0aG9kOiAnUE9TVCcsXG5cdCAgICAgICAgaGVhZGVyOiB7XG5cdCAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbidcblx0ICAgICAgICB9LFxuXHQgICAgICAgIGRhdGE6IHJlcXVlc3REYXRhLFxuXHQgICAgICAgIHN1Y2Nlc3M6IChyZXNwb25zZSkgPT4ge1xuXHQgICAgICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XG5cdCAgICAgICAgICAgICAgICBjb25zb2xlLmxvZyhgJHtldmVudFR5cGV9IC0gJHtwcmludFR5cGV9IOiusOW9leaIkOWKn2ApO1xuXHQgICAgICAgICAgICB9IGVsc2Uge1xuXHQgICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihgJHtldmVudFR5cGV9IC0gJHtwcmludFR5cGV9IOiusOW9leWksei0pTpgLCByZXNwb25zZSk7XG5cdCAgICAgICAgICAgIH1cblx0ICAgICAgICB9LFxuXHQgICAgICAgIGZhaWw6IChlcnIpID0+IHtcblx0ICAgICAgICAgICAgY29uc29sZS5lcnJvcihcIuivt+axguWksei0pTpcIiwgZXJyKTtcblx0ICAgICAgICB9XG5cdCAgICB9KTtcblx0fVxuXHRcdH1cblx0fTtcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///11\n");
/***/ }),
/* 12 */
--
Gitblit v1.9.3