快乐的昕的电脑
7 小时以前 a8e998ae4591fb97b0fc7a605226424316ae5742
unpackage/dist/dev/app-plus/app-service.js
@@ -3593,7 +3593,7 @@
/***/ (function(module, exports, __webpack_require__) {
"use strict";
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 3));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 9));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 6));\nvar _WorkOrderStatus = _interopRequireDefault(__webpack_require__(/*! ../components/WorkOrderStatus.vue */ 53));\nvar _uniTable = _interopRequireDefault(__webpack_require__(/*! ../uni_modules/uni-table/components/uni-table/uni-table.vue */ 26));\nvar _mold = _interopRequireDefault(__webpack_require__(/*! ../components/mold.vue */ 58));\nvar _machine = _interopRequireDefault(__webpack_require__(/*! ../components/machine.vue */ 63));\nvar _WorkOrderPrint = _interopRequireDefault(__webpack_require__(/*! ../components/WorkOrderPrint.vue */ 68));\nvar _WorkOrder = _interopRequireDefault(__webpack_require__(/*! ../components/WorkOrder.vue */ 74));\nvar _Technology = _interopRequireDefault(__webpack_require__(/*! ../components/Technology.vue */ 79));\nvar _PDFShow = _interopRequireDefault(__webpack_require__(/*! ../components/PDFShow.vue */ 84));\nvar _PrintInit = _interopRequireDefault(__webpack_require__(/*! ../components/PrintInit.vue */ 89));\nvar _PrintTest = _interopRequireDefault(__webpack_require__(/*! ../components/PrintTest.vue */ 94));\nvar _EquipmentInspection = _interopRequireDefault(__webpack_require__(/*! ../components/EquipmentInspection.vue */ 99));\nvar _moldRecord = _interopRequireDefault(__webpack_require__(/*! ../pages/moldRecord.vue */ 115));\nvar _methods;\nvar _default = {\n  components: {\n    Technology: _Technology.default,\n    WorkOrder: _WorkOrder.default,\n    WorkOrderPrint: _WorkOrderPrint.default,\n    Machine: _machine.default,\n    Mold: _mold.default,\n    UniTable: _uniTable.default,\n    WorkOrderStatus: _WorkOrderStatus.default,\n    PDFShow: _PDFShow.default,\n    PrintInit: _PrintInit.default,\n    PrintTest: _PrintTest.default,\n    EquipmentInspection: _EquipmentInspection.default,\n    MoldRecord: _moldRecord.default\n  },\n  data: function data() {\n    var _ref;\n    return _ref = {\n      orderStatus: '',\n      // 默认全部\n      currentTab: 7,\n      productCode: '',\n      // 产品编码\n      productSpec: '',\n      // 产品规格\n\n      machineList: [],\n      machine: [],\n      engineeringNoList: [],\n      engineeringNoMapList: [],\n      engineeringNo: '',\n      machineNo: '',\n      machineName: '',\n      tableData: [],\n      isShowTableData: []\n    }, (0, _defineProperty2.default)(_ref, \"orderStatus\", '开工'), (0, _defineProperty2.default)(_ref, \"selectedOrder\", ''), (0, _defineProperty2.default)(_ref, \"orderId\", 0), (0, _defineProperty2.default)(_ref, \"selectedIndexs\", []), (0, _defineProperty2.default)(_ref, \"isShow\", false), (0, _defineProperty2.default)(_ref, \"autoRedirectTimer\", null), (0, _defineProperty2.default)(_ref, \"autoRedirectTime\", 5 * 60 * 1000), (0, _defineProperty2.default)(_ref, \"autoRefreshTimer\", null), (0, _defineProperty2.default)(_ref, \"autoRefreshInterval\", 60 * 1000), _ref;\n  },\n  created: function created() {\n    //调试使用的代码\n    // this.machineNo = uni.getStorageSync('machineNo');\n    // this.machineName = uni.getStorageSync('machineName');\n    //\n    // if (this.machineNo) {\n    //   this.getWomdaaIsShow();\n    // }\n\n    uni.clearStorageSync();\n    this.checkForUpdate();\n\n    //工控机使用的代码\n    this.getPrintInfo();\n  },\n  onLoad: function onLoad(options) {\n    this.getMachineList();\n  },\n  onShow: function onShow() {\n    this.refresh();\n    this.resetAutoRedirectTimer();\n    // 如果在工单选择页面,启动定时刷新\n    if (this.currentTab === 7) {\n      this.startAutoRefresh();\n    }\n  },\n  onHide: function onHide() {\n    // 页面隐藏时清除定时器\n    this.stopAutoRefresh();\n  },\n  methods: (_methods = {\n    onRowClick: function onRowClick(index) {\n      this.selectedIndexs = [index]; // 单选\n      // 手动触发 selectionChange 以同步复选框\n      this.selectionChange({\n        detail: {\n          index: index\n        }\n      });\n      // 重置自动跳转计时器\n      this.resetAutoRedirectTimer();\n    },\n    // 重置自动跳转计时器\n    resetAutoRedirectTimer: function resetAutoRedirectTimer() {\n      var _this = this;\n      // 清除现有的定时器\n      if (this.autoRedirectTimer) {\n        clearTimeout(this.autoRedirectTimer);\n        this.autoRedirectTimer = null;\n      }\n\n      // 除了主页(0)、工单选择页(7)、生产报工页(4)之外的页面才设置自动跳转\n      if (this.currentTab !== 0 && this.currentTab !== 7 && this.currentTab !== 4) {\n        this.autoRedirectTimer = setTimeout(function () {\n          // 跳转回主页\n          _this.currentTab = 0;\n          // 显示提示信息\n          uni.showToast({\n            title: '页面超时,自动返回主页',\n            icon: 'none',\n            duration: 2000\n          });\n        }, this.autoRedirectTime);\n      }\n    },\n    checkForUpdate: function checkForUpdate() {\n      var _this2 = this;\n      this.$post({\n        url: \"/DevMachine/getAppUpgradeInfo\",\n        data: {}\n      }).then(function (res) {\n        var newVersion = res.data.version;\n        var currentVersion = uni.getSystemInfoSync(); // 获取当前 APK 版本号\n\n        if (newVersion > currentVersion.appVersion) {\n          uni.showModal({\n            title: \"发现新版本\",\n            content: \"是否下载最新版本?\",\n            success: function success(modalRes) {\n              if (modalRes.confirm) {\n                _this2.downloadNewApk(res.data.apkUrl);\n              }\n            }\n          });\n          //this.downloadNewApk(res.data.apkUrl);\n          _this2.updateChecked = true; // 标记更新已检查过\n          //      // 如果有新版本,开始下载\n          //download(res.data.apkUrl);\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/index.vue:446\");\n              //plus.runtime.restart();\n              //plus.runtime.quit();\n              // uni.navigateBack()\n            }, function (e) {\n              __f__(\"error\", \"安装失败:\", e, \" at pages/index.vue:451\");\n            });\n          }\n        },\n        fail: function fail(err) {\n          __f__(\"error\", \"下载失败:\", err, \" at pages/index.vue:456\");\n          uni.showToast({\n            title: \"下载失败,请检查网络\",\n            icon: \"none\",\n            duration: 2000\n          });\n        }\n      });\n    },\n    refresh: function refresh() {\n      this.getMachineList();\n      this.getPrintInfo(); // getPrintInfo 完成后会自动调用 getWomdaaIsShow()\n      // 如果当前在工单选择页面,默认加载工单列表\n      if (this.currentTab === 7) {\n        // 根据当前绑定工单的状态决定默认筛选条件\n        var defaultStatus = '待开工、未开工、暂停';\n        if (this.isShowTableData.length > 0) {\n          var currentOrderStatus = this.isShowTableData[0].daa018;\n          if (currentOrderStatus === '开工') {\n            defaultStatus = '开工';\n          } else if (currentOrderStatus === '完工') {\n            defaultStatus = '完工';\n          }\n        }\n        this.engineeringNo = defaultStatus;\n        this.engineeringNoMapList = ['待开工、未开工、暂停', '开工', '完工'];\n        this.getWomdaaByStatus();\n      }\n    },\n    getPrintInfo: function getPrintInfo() {\n      var _this3 = this;\n      var mac = \"\";\n      mac = \"74:24:ca:4f:b7:4d\";\n      this.$post({\n        url: \"/DevMachine/GetDevMachineByPdaMac\",\n        data: {\n          pdaMac: mac\n        }\n      }).then(function (res) {\n        var devMachine = res.data.tbBillList;\n        _this3.machineNo = devMachine.machineNo;\n        _this3.machineName = \"调试模式:\" + _this3.machineNo + \"号齿轮机\";\n        uni.setStorageSync('machineNo', _this3.machineNo);\n        uni.setStorageSync('printMac', devMachine.printMac);\n        __f__(\"log\", devMachine.printMac, \" at pages/index.vue:507\");\n        _this3.getWomdaaIsShow();\n      });\n      return;\n\n      //  \t\t\tif (plus.os.name == \"Android\") {\n      //  \t\t\t\t//获取手机MAC地址\n      //  \t\t\t\tvar Context = plus.android.importClass(\"android.content.Context\");\n      //  \t\t\t\tvar WifiManager = plus.android.importClass(\"android.net.wifi.WifiManager\");\n      //  \t\t\t\tvar wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);\n      //  \t\t\t\tvar WifiInfo = plus.android.importClass(\"android.net.wifi.WifiInfo\");\n      //  \t\t\t\tvar wifiInfo = wifiManager.getConnectionInfo();\n      //  \t\t\t\tmac = wifiInfo.getMacAddress();\n\n      //  \t\t\t\t//如果mac为“02:00:00:00:00:00”,则可能是安卓6.0以上版本,则使用另一种方法获取mac地址\n      //  \t\t\t\tif (mac == \"02:00:00:00:00:00\") {\n      //  \t\t\t\t\tmac = this.getMacNew();\n      //  \t\t\t\t}\n      //  \t\t\t\t//如果mac使用新方法依然是“02:00:00:00:00:00”则不进行保存\n      //  \t\t\t\tif (mac == \"02:00:00:00:00:00\") {\n      //  \t\t\t\t\treturn;\n      //  \t\t\t\t}\n      //  \t\t\t\tuni.setStorageSync('pdaMac', mac);\n\n      //  \t\t\t\tthis.$post({\n      //  \t\t\t\t\turl: \"/DevMachine/GetDevMachineByPdaMac\",\n      //  \t\t\t\t\tdata: {\n      //  \t\t\t\t\t\tpdaMac: mac,\n      //  \t\t\t\t\t}\n      //  \t\t\t\t}).then(res => {\n      //  \t\t\t\t\tlet devMachine = res.data.tbBillList;\n      //  \t\t\t\t\tthis.machineNo = devMachine.machineNo;\n      //  \t\t\t\t\tthis.machineName = \"当前机台:\" + this.machineNo + \"号齿轮机\";\n\n      //  \t\t\t\t\tuni.setStorageSync('machineNo', this.machineNo);\n      //  \t\t\t\t\tuni.setStorageSync('printMac', devMachine.printMac);\n\n      //  \t\t\t\t\tthis.getWomdaaIsShow();\n\n      //  \t\t\t\t});\n      //  \t\t\t}\n    },\n    save: function save() {\n      var _this4 = this;\n      var data = this.selectedItems();\n      if (data.length === 0) {\n        this.$showMessage(\"请选择一个工单\");\n        return;\n      }\n      if (data.length > 1) {\n        this.$showMessage(\"一次只能选取一个工单\");\n        return;\n      }\n\n      //let firstValue = data[0][\"moldId\"]; // 获取第一个对象的指定属性值\n\n      //// 使用 every 方法检查所有对象的该属性值是否一致\n      //let flag = data.every(item => item[\"moldId\"] === firstValue);\n      //if (!flag) {\n      //\tthis.$showMessage(\"选取的\" + data.length + \"个工单中的模具编号不一致\");\n      //\treturn;\n      //}\n\n      var orderSelect = [];\n      data.forEach(function (s) {\n        var entity = {\n          orderId: s.id,\n          orderNo: s.daa001\n        };\n        orderSelect.push(entity);\n      });\n      var editDate = this.formatDate(new Date());\n      this.$post({\n        url: \"/MesOrderSelect/Add\",\n        data: {\n          machineNo: this.machineNo,\n          editDate: editDate,\n          item: orderSelect\n        }\n      }).then(function (res) {\n        if (res.data.tbBillList) {\n          _this4.getWomdaaIsShow();\n          uni.showToast({\n            title: '保存工单成功',\n            //title: '将注塑机开合模数清0',\n            //将值设置为 success 或者直接不用写icon这个参数\n            icon: 'success',\n            //显示持续时间为 5秒\n            duration: 5000\n          });\n        }\n        _this4.isShow = false;\n      });\n    },\n    getMacNew: function getMacNew() {\n      var str = \"\";\n      try {\n        if (plus.os.name == \"Android\") {\n          var NetworkInterface = plus.android.importClass(\"java.net.NetworkInterface\");\n          var networkInterface = NetworkInterface.getByName(\"wlan0\");\n          var bytes = networkInterface.getHardwareAddress();\n\n          //将byte[] 转换成 String\n          for (var i = 0; i < bytes.length; i++) {\n            var tmp = \"\";\n            var num = bytes[i];\n            if (num < 0) {\n              tmp = (255 + num + 1).toString(16);\n            } else {\n              tmp = num.toString(16);\n            }\n            if (tmp.length == 1) {\n              tmp = \"0\" + tmp;\n            }\n            str += i == 0 ? tmp : \":\" + tmp;\n          }\n        }\n      } catch (err) {\n        str = \"02:00:00:00:00:00\";\n      }\n      return str;\n    },\n    cancel: function cancel() {\n      var _this5 = this;\n      if (!this.machineNo) {\n        return;\n      }\n\n      // 直接用 flag 判断\n      if (this.hasBindedCutterFlag) {\n        uni.showToast({\n          title: '当前工单已绑定刀具,不能清空重选',\n          icon: 'error',\n          duration: 2000\n        });\n        return;\n      }\n      var editDate = this.formatDate(new Date());\n      this.selectedIndexs = [];\n      this.$post({\n        url: \"/MesOrderSelect/Remove\",\n        data: {\n          machineNo: this.machineNo,\n          editDate: editDate\n        }\n      }).then(function (res) {\n        if (res.data.tbBillList > 0) {\n          _this5.isShowTableData = [];\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      return \"\".concat(year, \"-\").concat(month, \"-\").concat(day); // 返回格式化后的字符串\n    },\n    selectionChange: function selectionChange(e) {\n      // 单选直接赋值\n      this.selectedIndexs = [e.detail.index];\n    },\n    selectedItems: function selectedItems() {\n      var _this6 = this;\n      return this.selectedIndexs.map(function (i) {\n        return _this6.tableData[i];\n      });\n    },\n    changeTab: function changeTab(index) {\n      this.currentTab = index;\n      // 当切换到工单选择页面(index === 7)时自动刷新\n      if (index === 7) {\n        this.refresh();\n        // 启动定时刷新\n        this.startAutoRefresh();\n      } else {\n        // 离开工单选择页面时停止定时刷新\n        this.stopAutoRefresh();\n      }\n      // 重置自动跳转计时器\n      this.resetAutoRedirectTimer();\n      __f__(\"log\", index, \" at pages/index.vue:698\");\n    },\n    onMachineChange: function onMachineChange(event) {\n      this.machineName = event;\n      this.machineNo = this.machine[this.machineList.indexOf(event)].machineNo;\n      uni.clearStorageSync();\n      uni.setStorageSync('machineNo', this.machineNo);\n      uni.setStorageSync('machineName', this.machineName);\n      this.getWomdaaIsShow();\n    },\n    onEngineeringNoChange: function onEngineeringNoChange(event) {\n      var orde = this.engineeringNoList[this.engineeringNoMapList.indexOf(event)];\n      this.engineeringNo = orde.moldId;\n      this.getWomdaa();\n    },\n    getMachineList: function getMachineList() {\n      var _this7 = this;\n      this.$post({\n        url: \"/MesMachine/GetInjectionMachine\"\n      }).then(function (res) {\n        _this7.machine = res.data.tbBillList;\n        _this7.machineList = _this7.machine.map(function (s) {\n          return s.machineName;\n        });\n      });\n    },\n    //获取表格的数据源\n    getWomdaaIsShow: function getWomdaaIsShow() {\n      var _this8 = this;\n      this.$post({\n        url: \"/Womdaa/GetWomdaasByShow\",\n        data: {\n          machineNo: this.machineNo\n        }\n      }).then(function (res) {\n        _this8.isShowTableData = res.data.tbBillList;\n\n        // 只判断第一条(只允许一条工单)\n        var order = _this8.isShowTableData[0];\n        var hasBindedCutter = false;\n        if (order) {\n          hasBindedCutter = order.outToolId && order.outToolId.toString().trim() !== '' || order.outToolCode && order.outToolCode.trim() !== '' || order.outToolName && order.outToolName.trim() !== '';\n        }\n        // 存储到 data 变量\n        _this8.hasBindedCutterFlag = hasBindedCutter;\n        if (_this8.isShowTableData.length == 1) {\n          uni.setStorageSync('daa001', _this8.isShowTableData[0].daa001);\n          uni.setStorageSync('id', _this8.isShowTableData[0].id);\n        }\n      });\n    },\n    isShowTab: function isShowTab() {\n      if (this.isShowTableData.length > 0) {\n        uni.showToast({\n          title: '已有正在操作的工单,不能再次选择',\n          icon: 'error',\n          duration: 2000\n        });\n        return;\n      }\n      this.isShow = true;\n      // 默认选中“待开工”\n      this.engineeringNo = '待开工、未开工、暂停';\n      this.tableData = [];\n      // 下拉框只显示合并后的状态和其它状态\n      this.engineeringNoMapList = ['待开工、未开工、暂停', '开工', '完工'];\n      // 默认显示“待开工”工单\n      this.getWomdaaByStatus();\n    }\n  }, (0, _defineProperty2.default)(_methods, \"onEngineeringNoChange\", function onEngineeringNoChange(status) {\n    this.engineeringNo = status;\n    this.getWomdaaByStatus();\n  }), (0, _defineProperty2.default)(_methods, \"getWomdaa\", function getWomdaa() {\n    var _this9 = this;\n    var editDate = this.formatDate(new Date());\n    this.$post({\n      url: \"/Womdaa/GetWomdaasByMachine\",\n      data: {\n        machineNo: this.machineNo,\n        editDate: editDate\n      }\n    }).then(function (res) {\n      _this9.tableData = res.data.tbBillList;\n    });\n  }), (0, _defineProperty2.default)(_methods, \"getWomdaaByStatus\", function getWomdaaByStatus() {\n    var _this10 = this;\n    var editDate = this.formatDate(new Date());\n    var statusArr = [];\n    if (this.engineeringNo === '待开工、未开工、暂停') {\n      statusArr = ['待开工', '未开工', '暂停'];\n    } else {\n      statusArr = [this.engineeringNo];\n    }\n    this.$post({\n      url: \"/Womdaa/GetWomdaasByEngineeringNo\",\n      data: {\n        machineNo: this.machineNo,\n        orderStatus: statusArr,\n        editDate: editDate\n      }\n    }).then(function (res) {\n      _this10.tableData = res.data.tbBillList;\n    });\n  }), (0, _defineProperty2.default)(_methods, \"toDetail\", function toDetail(item) {\n    this.orderId = item.id;\n    this.selectedOrder = item.daa001;\n    this.productCode = item.daa002; // 产品编码\n    this.productSpec = item.daa004; // 产品规格\n    this.currentTab = 0;\n  }), (0, _defineProperty2.default)(_methods, \"getStartBtnClass\", function getStartBtnClass(item) {\n    var isSelected = this.isShowTableData.length > 0 && this.isShowTableData[0].daa001 === item.daa001;\n    if (isSelected) {\n      return 'start-btn start-btn-selected'; // 当前选中的工单,绿色\n    }\n\n    return 'start-btn';\n  }), (0, _defineProperty2.default)(_methods, \"isStartBtnDisabled\", function isStartBtnDisabled(item) {\n    // 如果已经有选中的工单,且当前项不是选中的工单,则禁用\n    if (this.isShowTableData.length > 0 && this.isShowTableData[0].daa001 !== item.daa001) {\n      return true;\n    }\n    return false;\n  }), (0, _defineProperty2.default)(_methods, \"isPauseBtnDisabled\", function isPauseBtnDisabled(item) {\n    // 如果已经有选中的工单,且当前项不是选中的工单,则禁用\n    if (this.isShowTableData.length > 0 && this.isShowTableData[0].daa001 !== item.daa001) {\n      return true;\n    }\n    // 如果还没有选中任何工单,也禁用暂停按钮\n    if (this.isShowTableData.length === 0) {\n      return true;\n    }\n    return false;\n  }), (0, _defineProperty2.default)(_methods, \"getStartBtnText\", function getStartBtnText(item) {\n    var isSelected = this.isShowTableData.length > 0 && this.isShowTableData[0].daa001 === item.daa001;\n    if (isSelected) {\n      return '转跳报工界面';\n    }\n    return '开工';\n  }), (0, _defineProperty2.default)(_methods, \"handleStartWork\", function handleStartWork(item) {\n    var _this11 = this;\n    return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n      var isSelected, _orderSelect, _editDate;\n      return _regenerator.default.wrap(function _callee2$(_context2) {\n        while (1) {\n          switch (_context2.prev = _context2.next) {\n            case 0:\n              // 判断当前工单是否已选中\n              isSelected = _this11.isShowTableData.length > 0 && _this11.isShowTableData[0].daa001 === item.daa001;\n              if (isSelected) {\n                // 如果已选中,则先跳转到主界面,然后跳转到报工界面\n                _this11.toDetail(item);\n                // 延迟跳转到报工界面\n                setTimeout(function () {\n                  _this11.currentTab = 4;\n                }, 100);\n              } else {\n                // 如果未选中,则执行开工逻辑\n                _orderSelect = [{\n                  orderId: item.id,\n                  orderNo: item.daa001\n                }];\n                _editDate = _this11.formatDate(new Date());\n                _this11.$post({\n                  url: \"/MesOrderSelect/Add\",\n                  data: {\n                    machineNo: _this11.machineNo,\n                    editDate: _editDate,\n                    item: _orderSelect\n                  }\n                }).then( /*#__PURE__*/function () {\n                  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(res) {\n                    var bindSuccess;\n                    return _regenerator.default.wrap(function _callee$(_context) {\n                      while (1) {\n                        switch (_context.prev = _context.next) {\n                          case 0:\n                            if (!res.data.tbBillList) {\n                              _context.next = 6;\n                              break;\n                            }\n                            _this11.getWomdaaIsShow();\n\n                            // 调用后端方法绑定数采标志\n                            _context.next = 4;\n                            return _this11.bindDataCollectionFlag(item.daa001);\n                          case 4:\n                            bindSuccess = _context.sent;\n                            // 绑定成功后再提示开工成功\n                            if (bindSuccess) {\n                              uni.showToast({\n                                title: '开工成功',\n                                icon: 'success',\n                                duration: 2000\n                              });\n                            }\n                          case 6:\n                          case \"end\":\n                            return _context.stop();\n                        }\n                      }\n                    }, _callee);\n                  }));\n                  return function (_x) {\n                    return _ref2.apply(this, arguments);\n                  };\n                }());\n              }\n            case 2:\n            case \"end\":\n              return _context2.stop();\n          }\n        }\n      }, _callee2);\n    }))();\n  }), (0, _defineProperty2.default)(_methods, \"bindDataCollectionFlag\", function bindDataCollectionFlag(orderNo) {\n    var _this12 = this;\n    return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n      var res;\n      return _regenerator.default.wrap(function _callee3$(_context3) {\n        while (1) {\n          switch (_context3.prev = _context3.next) {\n            case 0:\n              _context3.prev = 0;\n              _context3.next = 3;\n              return _this12.$post({\n                url: '/MesOrderSelect/AddBySc',\n                data: {\n                  machineNo: _this12.machineNo,\n                  editDate: editDate,\n                  item: orderSelect\n                }\n              });\n            case 3:\n              res = _context3.sent;\n              if (!(res && res.status === 0)) {\n                _context3.next = 10;\n                break;\n              }\n              __f__(\"log\", '数采标志绑定成功', \" at pages/index.vue:930\");\n              _this12.$showMessage('数采标志绑定成功');\n              return _context3.abrupt(\"return\", true);\n            case 10:\n              __f__(\"error\", '数采标志绑定失败:', res.message || '未知错误', \" at pages/index.vue:934\");\n              _this12.$showMessage('数采标志绑定失败');\n              return _context3.abrupt(\"return\", false);\n            case 13:\n              _context3.next = 20;\n              break;\n            case 15:\n              _context3.prev = 15;\n              _context3.t0 = _context3[\"catch\"](0);\n              __f__(\"error\", '绑定数采标志错误:', _context3.t0, \" at pages/index.vue:939\");\n              _this12.$showMessage('绑定数采标志失败');\n              return _context3.abrupt(\"return\", false);\n            case 20:\n            case \"end\":\n              return _context3.stop();\n          }\n        }\n      }, _callee3, null, [[0, 15]]);\n    }))();\n  }), (0, _defineProperty2.default)(_methods, \"handlePauseWork\", function handlePauseWork(item) {\n    var _this13 = this;\n    return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n      var editDate;\n      return _regenerator.default.wrap(function _callee4$(_context4) {\n        while (1) {\n          switch (_context4.prev = _context4.next) {\n            case 0:\n              if (_this13.machineNo) {\n                _context4.next = 2;\n                break;\n              }\n              return _context4.abrupt(\"return\");\n            case 2:\n              if (!_this13.hasBindedCutterFlag) {\n                _context4.next = 5;\n                break;\n              }\n              uni.showToast({\n                title: '当前工单已绑定刀具,不能暂停',\n                icon: 'error',\n                duration: 2000\n              });\n              return _context4.abrupt(\"return\");\n            case 5:\n              editDate = _this13.formatDate(new Date());\n              _this13.selectedIndexs = [];\n              _this13.$post({\n                url: \"/MesOrderSelect/Remove\",\n                data: {\n                  machineNo: _this13.machineNo,\n                  editDate: editDate\n                }\n              }).then(function (res) {\n                if (res.data.tbBillList > 0) {\n                  _this13.isShowTableData = [];\n                  uni.showToast({\n                    title: '工单已暂停',\n                    icon: 'success',\n                    duration: 2000\n                  });\n\n                  // 暂停成功后,刷新当前页面\n                  setTimeout(function () {\n                    _this13.refresh();\n                  }, 500);\n                }\n              });\n            case 8:\n            case \"end\":\n              return _context4.stop();\n          }\n        }\n      }, _callee4);\n    }))();\n  }), (0, _defineProperty2.default)(_methods, \"startAutoRefresh\", function startAutoRefresh() {\n    var _this14 = this;\n    // 先清除现有定时器\n    this.stopAutoRefresh();\n    // 只在工单选择页面启动定时刷新\n    if (this.currentTab === 7) {\n      this.autoRefreshTimer = setInterval(function () {\n        if (_this14.currentTab === 7) {\n          _this14.refresh();\n        }\n      }, this.autoRefreshInterval);\n    }\n  }), (0, _defineProperty2.default)(_methods, \"stopAutoRefresh\", function stopAutoRefresh() {\n    if (this.autoRefreshTimer) {\n      clearInterval(this.autoRefreshTimer);\n      this.autoRefreshTimer = null;\n    }\n  }), _methods),\n  computed: {}\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJUZWNobm9sb2d5IiwiV29ya09yZGVyIiwiV29ya09yZGVyUHJpbnQiLCJNYWNoaW5lIiwiTW9sZCIsIlVuaVRhYmxlIiwiV29ya09yZGVyU3RhdHVzIiwiUERGU2hvdyIsIlByaW50SW5pdCIsIlByaW50VGVzdCIsIkVxdWlwbWVudEluc3BlY3Rpb24iLCJNb2xkUmVjb3JkIiwiZGF0YSIsIm9yZGVyU3RhdHVzIiwiY3VycmVudFRhYiIsInByb2R1Y3RDb2RlIiwicHJvZHVjdFNwZWMiLCJtYWNoaW5lTGlzdCIsIm1hY2hpbmUiLCJlbmdpbmVlcmluZ05vTGlzdCIsImVuZ2luZWVyaW5nTm9NYXBMaXN0IiwiZW5naW5lZXJpbmdObyIsIm1hY2hpbmVObyIsIm1hY2hpbmVOYW1lIiwidGFibGVEYXRhIiwiaXNTaG93VGFibGVEYXRhIiwiY3JlYXRlZCIsInVuaSIsIm9uTG9hZCIsIm9uU2hvdyIsIm9uSGlkZSIsIm1ldGhvZHMiLCJvblJvd0NsaWNrIiwiZGV0YWlsIiwiaW5kZXgiLCJyZXNldEF1dG9SZWRpcmVjdFRpbWVyIiwiY2xlYXJUaW1lb3V0IiwidGl0bGUiLCJpY29uIiwiZHVyYXRpb24iLCJjaGVja0ZvclVwZGF0ZSIsInVybCIsImNvbnRlbnQiLCJzdWNjZXNzIiwiZG93bmxvYWROZXdBcGsiLCJwbHVzIiwiZm9yY2UiLCJmYWlsIiwicmVmcmVzaCIsImRlZmF1bHRTdGF0dXMiLCJnZXRQcmludEluZm8iLCJtYWMiLCJwZGFNYWMiLCJzYXZlIiwib3JkZXJJZCIsIm9yZGVyTm8iLCJvcmRlclNlbGVjdCIsImVkaXREYXRlIiwiaXRlbSIsImdldE1hY05ldyIsInRtcCIsInN0ciIsImNhbmNlbCIsImZvcm1hdERhdGUiLCJzZWxlY3Rpb25DaGFuZ2UiLCJzZWxlY3RlZEl0ZW1zIiwiY2hhbmdlVGFiIiwib25NYWNoaW5lQ2hhbmdlIiwib25FbmdpbmVlcmluZ05vQ2hhbmdlIiwiZ2V0TWFjaGluZUxpc3QiLCJnZXRXb21kYWFJc1Nob3ciLCJoYXNCaW5kZWRDdXR0ZXIiLCJvcmRlciIsImlzU2hvd1RhYiIsInN0YXR1cyIsInN0YXR1c0FyciIsImlzU2VsZWN0ZWQiLCJzZXRUaW1lb3V0IiwicmVzIiwiYmluZFN1Y2Nlc3MiLCJjbGVhckludGVydmFsIiwiY29tcHV0ZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFnUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQSxlQUVBO0VBQ0FBO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0VBQ0E7RUFDQUM7SUFBQTtJQUNBO01BQ0FDO01BQUE7TUFDQUM7TUFFQUM7TUFBQTtNQUNBQztNQUFBOztNQUVBQztNQUVBQztNQUVBQztNQUNBQztNQUNBQztNQUVBQztNQUNBQztNQUVBQztNQUNBQztJQUFBLHNEQUVBLDREQUNBLG9EQUNBLDBEQUVBLG1EQUVBLGlFQUdBLCtEQUNBLHdFQUdBLGtFQUNBO0VBRUE7RUFDQUM7SUFFQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7SUFFQUM7SUFFQTs7SUFFQTtJQUNBO0VBRUE7RUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7TUFDQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQUM7TUFDQTtNQUNBO01BQ0E7UUFBQUM7VUFBQUM7UUFBQTtNQUFBO01BQ0E7TUFDQTtJQUNBO0lBRUE7SUFDQUM7TUFBQTtNQUNBO01BQ0E7UUFDQUM7UUFDQTtNQUNBOztNQUVBO01BQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBVDtZQUNBVTtZQUNBQztZQUNBQztVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtRQUNBQztRQUNBN0I7TUFDQTtRQUVBO1FBQ0E7O1FBRUE7VUFDQWU7WUFDQVU7WUFDQUs7WUFDQUM7Y0FDQTtnQkFDQTtjQUNBO1lBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1FBQ0E7TUFDQTtJQUVBO0lBRUFDO01BQ0FqQjtRQUNBVTtRQUNBQztRQUNBQztNQUNBO01BRUFaO1FBQ0FjO1FBQ0FFO1VBQ0E7WUFDQUU7Y0FDQUM7WUFDQTtjQUNBO2NBQ0E7Y0FDQTtjQUNBO1lBQ0E7Y0FDQTtZQUNBO1VBQ0E7UUFDQTtRQUNBQztVQUNBO1VBQ0FwQjtZQUNBVTtZQUNBQztZQUNBQztVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFTO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQTtRQUNBO1FBQ0E7VUFDQTtVQUNBO1lBQ0FDO1VBQ0E7WUFDQUE7VUFDQTtRQUNBO1FBQ0E7UUFDQSw2QkFDQSxjQUNBLE1BQ0EsS0FDQTtRQUNBO01BQ0E7SUFDQTtJQUNBQztNQUFBO01BQ0E7TUFFQUM7TUFDQTtRQUNBVjtRQUNBN0I7VUFDQXdDO1FBQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUVBekI7UUFDQUE7UUFFQTtRQUVBO01BQ0E7TUFDQTs7TUFHQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBOztNQUVBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTs7TUFFQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7O01BRUE7TUFDQTs7TUFHQTs7TUFFQTtNQUNBO0lBQ0E7SUFDQTBCO01BQUE7TUFDQTtNQUVBO1FBQ0E7UUFDQTtNQUNBO01BRUE7UUFDQTtRQUNBO01BQ0E7O01BRUE7O01BRUE7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBOztNQUVBO01BRUF6QztRQUNBO1VBQ0EwQztVQUNBQztRQUNBO1FBQ0FDO01BQ0E7TUFFQTtNQUVBO1FBQ0FmO1FBQ0E3QjtVQUNBVTtVQUNBbUM7VUFDQUM7UUFDQTtNQUNBO1FBQ0E7VUFDQTtVQUNBL0I7WUFDQVU7WUFDQTtZQUNBO1lBQ0FDO1lBQ0E7WUFDQUM7VUFDQTtRQUNBO1FBQ0E7TUFDQTtJQUVBO0lBQ0FvQjtNQUNBO01BQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0FDO1lBQ0E7Y0FDQUE7WUFDQTtZQUNBO2NBQ0FBO1lBQ0E7WUFDQUM7VUFDQTtRQUNBO01BQ0E7UUFDQUE7TUFDQTtNQUNBO0lBQ0E7SUFFQUM7TUFBQTtNQUNBO1FBQ0E7TUFDQTs7TUFFQTtNQUNBO1FBQ0FuQztVQUNBVTtVQUNBQztVQUNBQztRQUNBO1FBQ0E7TUFDQTtNQUVBO01BQ0E7TUFFQTtRQUNBRTtRQUNBN0I7VUFDQVU7VUFDQW1DO1FBQ0E7TUFDQTtRQUNBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQU07TUFDQTtNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBRUFDO01BQUE7TUFDQTtRQUFBO01BQUE7SUFDQTtJQUdBQztNQUNBO01BQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFFQTtNQUVBO01BRUF4QztNQUVBQTtNQUNBQTtNQUVBO0lBQ0E7SUFDQXlDO01BRUE7TUFFQTtNQUVBO0lBRUE7SUFDQUM7TUFBQTtNQUNBO1FBQ0E1QjtNQUNBO1FBQ0E7UUFDQTtVQUFBO1FBQUE7TUFDQTtJQUNBO0lBQ0E7SUFDQTZCO01BQUE7TUFDQTtRQUNBN0I7UUFDQTdCO1VBQ0FVO1FBQ0E7TUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1VBQ0FpRCxrQkFDQUMsK0RBQ0FBLHdEQUNBQTtRQUNBO1FBQ0E7UUFDQTtRQUVBO1VBQ0E3QztVQUNBQTtRQUNBO01BQ0E7SUFDQTtJQUVBOEM7TUFDQTtRQUNBOUM7VUFDQVU7VUFDQUM7VUFDQUM7UUFDQTtRQUNBO01BQ0E7TUFFQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0EsNkJBQ0EsY0FDQSxNQUNBLEtBQ0E7TUFDQTtNQUNBO0lBQ0E7RUFBQSxtR0FFQW1DO0lBQ0E7SUFDQTtFQUNBLDhFQUNBO0lBQUE7SUFFQTtJQUVBO01BQ0FqQztNQUNBN0I7UUFDQVU7UUFDQW1DO01BQ0E7SUFDQTtNQUNBO0lBQ0E7RUFDQSw4RkFFQTtJQUFBO0lBQ0E7SUFDQTtJQUNBO01BQ0FrQjtJQUNBO01BQ0FBO0lBQ0E7SUFDQTtNQUNBbEM7TUFDQTdCO1FBQ0FVO1FBQ0FUO1FBQ0E0QztNQUNBO0lBQ0E7TUFDQTtJQUNBO0VBQ0EsMEVBQ0FDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFQUNBLDBGQUdBQTtJQUNBO0lBQ0E7TUFDQTtJQUNBOztJQUNBO0VBQ0EsOEZBR0FBO0lBQ0E7SUFDQTtNQUNBO0lBQ0E7SUFDQTtFQUNBLDhGQUdBQTtJQUNBO0lBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQTtNQUNBO0lBQ0E7SUFDQTtFQUNBLHdGQUdBQTtJQUNBO0lBQ0E7TUFDQTtJQUNBO0lBQ0E7RUFDQSx3RkFHQUE7SUFBQTtJQUFBO01BQUE7TUFBQTtRQUFBO1VBQUE7WUFBQTtjQUNBO2NBQ0FrQjtjQUVBO2dCQUNBO2dCQUNBO2dCQUNBO2dCQUNBQztrQkFDQTtnQkFDQTtjQUNBO2dCQUNBO2dCQUNBckI7a0JBQ0FGO2tCQUNBQztnQkFDQTtnQkFFQUU7Z0JBRUE7a0JBQ0FoQjtrQkFDQTdCO29CQUNBVTtvQkFDQW1DO29CQUNBQztrQkFDQTtnQkFDQTtrQkFBQTtvQkFBQTtvQkFBQTtzQkFBQTt3QkFBQTswQkFBQTs0QkFBQSxLQUNBb0I7OEJBQUE7OEJBQUE7NEJBQUE7NEJBQ0E7OzRCQUVBOzRCQUFBOzRCQUFBLE9BQ0E7MEJBQUE7NEJBQUFDOzRCQUVBOzRCQUNBOzhCQUNBcEQ7Z0NBQ0FVO2dDQUNBQztnQ0FDQUM7OEJBQ0E7NEJBQ0E7MEJBQUE7MEJBQUE7NEJBQUE7d0JBQUE7c0JBQUE7b0JBQUE7a0JBQUEsQ0FFQTtrQkFBQTtvQkFBQTtrQkFBQTtnQkFBQTtjQUNBO1lBQUE7WUFBQTtjQUFBO1VBQUE7UUFBQTtNQUFBO0lBQUE7RUFDQSxzR0FHQWdCO0lBQUE7SUFBQTtNQUFBO01BQUE7UUFBQTtVQUFBO1lBQUE7Y0FBQTtjQUFBO2NBQUEsT0FFQTtnQkFDQWQ7Z0JBQ0E3QjtrQkFDQVU7a0JBQ0FtQztrQkFDQUM7Z0JBQ0E7Y0FDQTtZQUFBO2NBUEFvQjtjQUFBLE1BU0FBO2dCQUFBO2dCQUFBO2NBQUE7Y0FDQTtjQUNBO2NBQUEsa0NBQ0E7WUFBQTtjQUVBO2NBQ0E7Y0FBQSxrQ0FDQTtZQUFBO2NBQUE7Y0FBQTtZQUFBO2NBQUE7Y0FBQTtjQUdBO2NBQ0E7Y0FBQSxrQ0FDQTtZQUFBO1lBQUE7Y0FBQTtVQUFBO1FBQUE7TUFBQTtJQUFBO0VBRUEsd0ZBR0FwQjtJQUFBO0lBQUE7TUFBQTtNQUFBO1FBQUE7VUFBQTtZQUFBO2NBQUEsSUFDQTtnQkFBQTtnQkFBQTtjQUFBO2NBQUE7WUFBQTtjQUFBLEtBS0E7Z0JBQUE7Z0JBQUE7Y0FBQTtjQUNBL0I7Z0JBQ0FVO2dCQUNBQztnQkFDQUM7Y0FDQTtjQUFBO1lBQUE7Y0FJQWtCO2NBQ0E7Y0FFQTtnQkFDQWhCO2dCQUNBN0I7a0JBQ0FVO2tCQUNBbUM7Z0JBQ0E7Y0FDQTtnQkFDQTtrQkFDQTtrQkFDQTlCO29CQUNBVTtvQkFDQUM7b0JBQ0FDO2tCQUNBOztrQkFFQTtrQkFDQXNDO29CQUNBO2tCQUNBO2dCQUNBO2NBQ0E7WUFBQTtZQUFBO2NBQUE7VUFBQTtRQUFBO01BQUE7SUFBQTtFQUNBLDRGQUdBO0lBQUE7SUFDQTtJQUNBO0lBQ0E7SUFDQTtNQUNBO1FBQ0E7VUFDQTtRQUNBO01BQ0E7SUFDQTtFQUNBLDBGQUdBO0lBQ0E7TUFDQUc7TUFDQTtJQUNBO0VBQ0EsYUFDQTtFQUNBQztBQUNBO0FBQUEsMkIiLCJmaWxlIjoiNTIuanMiLCJzb3VyY2VzQ29udGVudCI6WyI8dGVtcGxhdGU+XHJcblxyXG5cdDx2aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJ0YWItYmFyXCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidGFiLWl0ZW1cIiA6Y2xhc3M9XCJ7IGFjdGl2ZTogY3VycmVudFRhYiA9PT0gNyB9XCIgQGNsaWNrPVwiY2hhbmdlVGFiKDcpXCI+XHJcblx0XHRcdFx05bel5Y2V6YCJ5oupXHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ0YWItaXRlbVwiIDpjbGFzcz1cInsgYWN0aXZlOiBjdXJyZW50VGFiID09PSAwIH1cIiBAY2xpY2s9XCJjaGFuZ2VUYWIoMClcIj5cclxuXHRcdFx0XHTkuLvnlYzpnaJcclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInRhYi1pdGVtXCIgOmNsYXNzPVwieyBhY3RpdmU6IGN1cnJlbnRUYWIgPT09IDIgfVwiIEBjbGljaz1cImNoYW5nZVRhYigyKVwiPlxyXG5cdFx0XHRcdOS4iuWIgOS4i+WIgFxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidGFiLWl0ZW1cIiA6Y2xhc3M9XCJ7IGFjdGl2ZTogY3VycmVudFRhYiA9PT0gMyB9XCIgQGNsaWNrPVwiY2hhbmdlVGFiKDMpXCI+XHJcblx0XHRcdFx06LCD5py66YCB5qOAXHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ0YWItaXRlbVwiIDpjbGFzcz1cInsgYWN0aXZlOiBjdXJyZW50VGFiID09PSAxMCB9XCIgQGNsaWNrPVwiY2hhbmdlVGFiKDEwKVwiPlxyXG5cdFx0XHRcdOS4iuS4i+WIgC/pppbmo4DljZXorrDlvZVcclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInRhYi1pdGVtXCIgOmNsYXNzPVwieyBhY3RpdmU6IGN1cnJlbnRUYWIgPT09IDQgfVwiIEBjbGljaz1cImNoYW5nZVRhYig0KVwiPlxyXG5cdFx0XHRcdOeUn+S6p+aKpeW3pVxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidGFiLWl0ZW1cIiA6Y2xhc3M9XCJ7IGFjdGl2ZTogY3VycmVudFRhYiA9PT0gMSB9XCIgQGNsaWNrPVwiY2hhbmdlVGFiKDEpXCI+XHJcblx0XHRcdFx05byA5bel5a6M5belXHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ0YWItaXRlbVwiIDpjbGFzcz1cInsgYWN0aXZlOiBjdXJyZW50VGFiID09PSA1IH1cIiBAY2xpY2s9XCJjaGFuZ2VUYWIoNSlcIj5cclxuXHRcdFx0XHRlLVNPUFxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidGFiLWl0ZW1cIiA6Y2xhc3M9XCJ7IGFjdGl2ZTogY3VycmVudFRhYiA9PT0gNiB9XCIgQGNsaWNrPVwiY2hhbmdlVGFiKDYpXCI+XHJcblx0XHRcdFx05bel6Im65Y+C5pWwXHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ0YWItaXRlbVwiIDpjbGFzcz1cInsgYWN0aXZlOiBjdXJyZW50VGFiID09PSA5IH1cIiBAY2xpY2s9XCJjaGFuZ2VUYWIoOSlcIj5cclxuXHRcdFx0XHTorr7lpIfngrnmo4BcclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8IS0tIDx2aWV3IGNsYXNzPVwidGFiLWl0ZW1cIiA6Y2xhc3M9XCJ7IGFjdGl2ZTogY3VycmVudFRhYiA9PT0gOCB9XCIgQGNsaWNrPVwiY2hhbmdlVGFiKDgpXCI+XHJcblx0XHRcdOaJk+WNsOacuuiuvue9rlxyXG5cdFx0PC92aWV3PiAtLT5cclxuXHJcblx0XHQ8L3ZpZXc+XHJcblx0XHQ8dmlldyBjbGFzcz1cImZvbnRcIj48L3ZpZXc+XHJcblx0XHQ8c2Nyb2xsLXZpZXcgY2xhc3M9XCJjb250ZW50XCI+XHJcblx0XHRcdDx2aWV3IHYtaWY9XCJjdXJyZW50VGFiID09PSA3XCIgY2xhc3M9XCJ0YWItY29udGVudFwiPlxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiY29udGVudFwiPlxyXG5cdFx0XHRcdFx0PCEtLTx2aWV3PlxyXG5cdFx0XHRcdFx0XHQ8aDQ+5LiA5Y+w5py65Y+w5Y+q6IO96YCJ5oup5LiA5p2h5bel5Y2V77yI5aSa6YCJ6buY6K6k5Li65pyA5ZCO5LiA5p2h77yJPC9oND5cclxuXHRcdFx0XHRcdDwvdmlldz4tLT5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwic2VjdGlvbiB0b3Atc2VjdGlvblwiPlxyXG5cdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tcm93IGFsaWduLXJvd1wiPlxyXG5cdFx0XHRcdFx0XHRcdDxpbnB1dCB2LW1vZGVsPVwibWFjaGluZU5hbWVcIlxyXG5cdFx0XHRcdFx0XHRcdFx0ICAgZGlzYWJsZWQ9XCJ0cnVlXCJcclxuXHRcdFx0XHRcdFx0XHRcdCAgIHR5cGU9XCJ0ZXh0XCJcclxuXHRcdFx0XHRcdFx0XHRcdCAgIGNsYXNzPVwibWFjaGluZS1uYW1lLWJveFwiIC8+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLWdyb3VwXCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8bGFiZWwgc3R5bGU9XCJmbG9hdDogbGVmdDttYXJnaW4tdG9wOiAxOHB4O2ZvbnQtc2l6ZTogMjJweDtcIj7ngrnlh7vmjInpkq7nrZvpgInlt6XljZXnirbmgIE6PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0XHRcdDxzdXBlcndlaS1jb21ib3ggOmNhbmRpZGF0ZXM9XCJlbmdpbmVlcmluZ05vTWFwTGlzdFwiIHBsYWNlaG9sZGVyPVwi6K+36YCJ5oupXCIgdi1tb2RlbD1cImVuZ2luZWVyaW5nTm9cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHQgQHNlbGVjdD1cIm9uRW5naW5lZXJpbmdOb0NoYW5nZVwiIGNsYXNzPVwicGlja2VyXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0IHN0eWxlPVwicGFkZGluZzogN3B4IDQ2cHg7d2lkdGg6IDY1MHB4O21hcmdpbi1yaWdodDogMjBweDtcIj48L3N1cGVyd2VpLWNvbWJveD5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ0b3AtcmlnaHRcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDxidXR0b24gY2xhc3M9XCJyZWZyZXNoLWJ0blwiIEBjbGljaz1cInJlZnJlc2hcIj7liLfmlrA8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHJcblx0XHRcdFx0XHQ8IS0tIOW3peWNlemAieaLqeihqOagvCAtLT5cclxuXHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwic2VjdGlvbiBjYXJkXCI+XHJcblx0XHRcdFx0XHRcdDx1bmktdGFibGUgYm9yZGVyIHN0cmlwZSBlbXB0eVRleHQ9XCLmmoLml6Dmm7TlpJrmlbDmja5cIj5cclxuXHRcdFx0XHRcdFx0XHQ8dW5pLXRyPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAyMjBweDtcIj7mk43kvZw8L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCI+5bel5bqPPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRoIGFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ0aFwiIHN0eWxlPVwid2lkdGg6IDIwMHB4O1wiPuW3peWNleWPtzwvdW5pLXRoPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj7kuqflk4HnvJbnoIE8L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMjQwcHg7XCI+5Lqn5ZOB5ZCN56ewPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRoIGFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ0aFwiIHN0eWxlPVwid2lkdGg6IDIwMHB4O1wiPuinhOagvDwvdW5pLXRoPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj7lt7LnlJ/kuqfmlbDph488L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTUwcHg7XCI+5pyq55Sf5Lqn5pWw6YePPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRoIGFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ0aFwiIHN0eWxlPVwid2lkdGg6IDE1MHB4O1wiPua0vuW3peaVsOmHjzwvdW5pLXRoPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj7lt6XljZXmlbDph488L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogOTBweDtcIj7lt6XljZXnirbmgIE8L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogOTBweDtcIj7miqXlt6Xkuro8L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHQ8L3VuaS10cj5cclxuXHRcdFx0XHRcdFx0XHQ8dW5pLXRyIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiB0YWJsZURhdGFcIiA6a2V5PVwiaW5kZXhcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJvcGVyYXRpb24tYnRuc1wiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxidXR0b24gXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6Y2xhc3M9XCJnZXRTdGFydEJ0bkNsYXNzKGl0ZW0pXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJpc1N0YXJ0QnRuRGlzYWJsZWQoaXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGNsaWNrPVwiaGFuZGxlU3RhcnRXb3JrKGl0ZW0pXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHR7eyBnZXRTdGFydEJ0blRleHQoaXRlbSkgfX1cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0Y2xhc3M9XCJwYXVzZS1idG5cIiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDpkaXNhYmxlZD1cImlzUGF1c2VCdG5EaXNhYmxlZChpdGVtKVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRAY2xpY2s9XCJoYW5kbGVQYXVzZVdvcmsoaXRlbSlcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdOaaguWBnFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10ZD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1pbnB1dFwiIGRpc2FibGVkPVwidHJ1ZVwiIHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cIml0ZW0ucHJvY05hbWVcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWlucHV0XCI+e3sgaXRlbS5kYWEwMDEgfX08L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10ZCBhbGlnbj1cImNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1pbnB1dFwiPnt7IGl0ZW0uZGFhMDAyIH19PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10ZD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZvcm0taW5wdXRcIj57eyBpdGVtLmRhYTAwMyB9fTwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWlucHV0XCI+e3sgaXRlbS5kYWEwMDQgfX08L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10ZCBhbGlnbj1cImNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWlucHV0XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiaXRlbS5kYWEwMTFcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cImZvcm0taW5wdXRcIiBkaXNhYmxlZD1cInRydWVcIiB0eXBlPVwidGV4dFwiIDp2YWx1ZT1cIihpdGVtLmRhYTAwOCB8fCAwKSAtIChpdGVtLmRhYTAxMSB8fCAwKVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10ZD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1pbnB1dFwiIGRpc2FibGVkPVwidHJ1ZVwiIHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cIml0ZW0uZGFhMDA4XCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10ZCBhbGlnbj1cImNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWlucHV0XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiaXRlbS5kYWEwMDhcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cImZvcm0taW5wdXRcIiBkaXNhYmxlZD1cInRydWVcIiB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJpdGVtLmRhYTAxOFwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10ZD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1pbnB1dFwiIGRpc2FibGVkPVwidHJ1ZVwiIHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cIml0ZW0uc3RhZmZOYW1lXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdDwvdW5pLXRyPlxyXG5cdFx0XHRcdFx0XHQ8L3VuaS10YWJsZT5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgdi1pZj1cImN1cnJlbnRUYWIgPT09IDBcIiBjbGFzcz1cInRhYi1jb250ZW50XCI+XHJcblx0XHRcdFx0PFdvcmtPcmRlciA6b3JkZXJJZD1cIm9yZGVySWRcIiA6b3JkZXJObz1cInNlbGVjdGVkT3JkZXJcIiA6bWFjaGluZU5vPVwibWFjaGluZU5vXCJcclxuXHRcdFx0XHRcdFx0ICAgOmRldmljZU51bWJlcj1cIm1hY2hpbmVOYW1lXCIgLz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyB2LWlmPVwiY3VycmVudFRhYiA9PT0gMVwiIGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cclxuXHRcdFx0XHQ8IS0tICAgICAgICAmbHQ7ISZuZGFzaDsg6LCD55SoIFdvcmtPcmRlclN0YXR1cyDnu4Tku7YgJm5kYXNoOyZndDstLT5cclxuXHRcdFx0XHQ8V29ya09yZGVyU3RhdHVzIDpvcmRlcklkPVwib3JkZXJJZFwiIDpvcmRlck5vPVwic2VsZWN0ZWRPcmRlclwiIDptYWNoaW5lTm89XCJtYWNoaW5lTm9cIiAvPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IHYtaWY9XCJjdXJyZW50VGFiID09PSAyXCIgY2xhc3M9XCJ0YWItY29udGVudFwiPlxyXG5cdFx0XHRcdDwhLS0gICAgICAgICZsdDshJm5kYXNoOyDosIPnlKggbW9sZCDnu4Tku7YgJm5kYXNoOyZndDstLT5cclxuXHRcdFx0XHQ8bW9sZCA6b3JkZXJJZD1cIm9yZGVySWRcIiA6b3JkZXJObz1cInNlbGVjdGVkT3JkZXJcIiA6bWFjaGluZU5vPVwibWFjaGluZU5vXCIgLz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyB2LWlmPVwiY3VycmVudFRhYiA9PT0gM1wiIGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cclxuXHRcdFx0XHQ8IS0tICAgICAgICAmbHQ7ISZuZGFzaDsg6LCD55SoIG1vbGQg57uE5Lu2ICZuZGFzaDsmZ3Q7LS0+XHJcblx0XHRcdFx0PG1hY2hpbmUgOm9yZGVySWQ9XCJvcmRlcklkXCIgOm9yZGVyTm89XCJzZWxlY3RlZE9yZGVyXCIgOm1hY2hpbmVObz1cIm1hY2hpbmVOb1wiIC8+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgdi1pZj1cImN1cnJlbnRUYWIgPT09IDEwXCIgY2xhc3M9XCJ0YWItY29udGVudFwiPlxyXG5cdFx0XHRcdDwhLS0g6LCD55SoIG1vbGRSZWNvcmQg57uE5Lu2IC0tPlxyXG5cdFx0XHRcdDxNb2xkUmVjb3JkIDpvcmRlcklkPVwib3JkZXJJZFwiIDpvcmRlck5vPVwic2VsZWN0ZWRPcmRlclwiIDptYWNoaW5lTm89XCJtYWNoaW5lTm9cIiAvPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IHYtaWY9XCJjdXJyZW50VGFiID09PSA0XCIgY2xhc3M9XCJ0YWItY29udGVudFwiPlxyXG5cdFx0XHRcdDwhLS0gIOiwg+eUqCBtb2xkIOe7hOS7tiAtLT5cclxuXHRcdFx0XHQ8V29ya09yZGVyUHJpbnQgOm9yZGVySWQ9XCJvcmRlcklkXCIgOm9yZGVyTm89XCJzZWxlY3RlZE9yZGVyXCIgOm1hY2hpbmVObz1cIm1hY2hpbmVOb1wiIC8+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgdi1pZj1cImN1cnJlbnRUYWIgPT09IDhcIiBjbGFzcz1cInRhYi1jb250ZW50XCI+XHJcblx0XHRcdFx0PCEtLSDosIPnlKggbW9sZCDnu4Tku7YgLS0+XHJcblx0XHRcdFx0PFByaW50SW5pdCA6b3JkZXJJZD1cIm9yZGVySWRcIiA6b3JkZXJObz1cInNlbGVjdGVkT3JkZXJcIiA6bWFjaGluZU5vPVwibWFjaGluZU5vXCIgLz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyB2LWlmPVwiY3VycmVudFRhYiA9PT0gNVwiIGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cclxuXHRcdFx0XHQ8UERGU2hvdyA6b3JkZXJJZD1cIm9yZGVySWRcIiA6b3JkZXJObz1cInNlbGVjdGVkT3JkZXJcIiA6bWFjaGluZU5vPVwibWFjaGluZU5vXCIgLz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyB2LWlmPVwiY3VycmVudFRhYiA9PT0gNlwiIGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cclxuXHRcdFx0XHQ8VGVjaG5vbG9neSA6b3JkZXJJZD1cIm9yZGVySWRcIiA6b3JkZXJObz1cInNlbGVjdGVkT3JkZXJcIiA6bWFjaGluZU5vPVwibWFjaGluZU5vXCIgLz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyB2LWlmPVwiY3VycmVudFRhYiA9PT0gOVwiIGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cclxuXHRcdFx0XHQ8IS0tIOiuvuWkh+eCueajgOinhuWbviAtLT5cclxuXHRcdFx0XHQ8RXF1aXBtZW50SW5zcGVjdGlvbiA6bWFjaGluZU5vPVwibWFjaGluZU5vXCIgLz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC9zY3JvbGwtdmlldz5cclxuXHJcblxyXG5cdFx0PCEtLSDlvLnnqpfkuIvmi4nmoYblj6rmmL7npLrlt6XljZXnirbmgIEgLS0+XHJcblx0XHQ8dmlldyB2LWlmPVwiaXNTaG93XCIgY2xhc3M9XCJvdmVybGF5XCI+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwicG9wdXBcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImZvcm0tcm93XCI+XHJcblx0XHRcdFx0XHQ8dmlldyBzdHlsZT1cImRpc3BsYXk6IGZsZXg7IGFsaWduLWl0ZW1zOiBjZW50ZXI7XCI+XHJcblx0XHRcdFx0XHRcdDxsYWJlbCBzdHlsZT1cImZsb2F0OiBsZWZ0O21hcmdpbi10b3A6IDE4cHg7Zm9udC1zaXplOiAyMnB4O1wiPueCueWHu+aMiemSruetm+mAieW3peWNleeKtuaAgTo8L2xhYmVsPlxyXG5cdFx0XHRcdFx0XHQ8c3VwZXJ3ZWktY29tYm94IDpjYW5kaWRhdGVzPVwiZW5naW5lZXJpbmdOb01hcExpc3RcIiBwbGFjZWhvbGRlcj1cIuivt+mAieaLqVwiIHYtbW9kZWw9XCJlbmdpbmVlcmluZ05vXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgQHNlbGVjdD1cIm9uRW5naW5lZXJpbmdOb0NoYW5nZVwiIGNsYXNzPVwicGlja2VyXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQgc3R5bGU9XCJwYWRkaW5nOiA3cHggNDZweDt3aWR0aDogNjUwcHg7XCI+PC9zdXBlcndlaS1jb21ib3g+XHJcblx0XHRcdFx0XHRcdDxzcGFuIHN0eWxlPVwibWFyZ2luLWxlZnQ6IDIwcHg7IGNvbG9yOiAjZmY2NjAwOyBmb250LXNpemU6IDE4cHg7XCI+5aSa6YCJ5pe25Y+q5L+d55WZ5pyA5ZCO5LiA5p2h5bel5Y2VPC9zcGFuPlxyXG5cdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHJcblx0XHRcdFx0PGRpdiBzdHlsZT1cImhlaWdodDogNDUwcHg7IG92ZXJmbG93OiBhdXRvO1wiPiA8IS0tIOiwg+aVtOmrmOW6puS4ujM4MHB477yM5Li65bqV6YOo5oyJ6ZKu55WZ5Ye65pu05aSa56m66Ze0IC0tPlxyXG5cdFx0XHRcdFx0PHRhYmxlPlxyXG5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJzZWN0aW9uIGNhcmRcIj5cclxuXHRcdFx0XHRcdFx0XHQ8dW5pLXRhYmxlIHJlZj1cInRhYmxlXCIgdHlwZT1cInNlbGVjdGlvblwiIGJvcmRlciBzdHJpcGUgZW1wdHlUZXh0PVwi5pqC5peg5pu05aSa5pWw5o2uXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0ICAgY2xhc3M9XCJsYXJnZS1zZWxlY3Rpb24tdGFibGVcIiBAc2VsZWN0aW9uLWNoYW5nZT1cInNlbGVjdGlvbkNoYW5nZVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10cj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxMDBweDtcIj7lt6Xluo88L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAyMDBweDtcIj7lt6XljZXlj7c8L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj7kuqflk4HnvJbnoIE8L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAyNDBweDtcIj7kuqflk4HlkI3np7A8L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAyMDBweDtcIj7op4TmoLw8L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj7lt7LnlJ/kuqfmlbDph488L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj7mnKrnlJ/kuqfmlbDph488L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj7mtL7lt6XmlbDph488L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj7lt6XljZXmlbDph488L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiA5MHB4O1wiPuW3peWNleeKtuaAgTwvdW5pLXRoPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRoIGFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ0aFwiIHN0eWxlPVwid2lkdGg6IDkwcHg7XCI+5oql5bel5Lq6PC91bmktdGg+XHJcbjwhLS0gXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxMjZweDtcIj7pgInmi6k8L3VuaS10aD4gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10cj5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdHIgdi1mb3I9XCIoaXRlbSwgaW5kZXgpIGluIHRhYmxlRGF0YVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OmtleT1cImluZGV4XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ6Y2xhc3M9XCJ7J3Jvdy1zZWxlY3RlZCc6IHNlbGVjdGVkSW5kZXhzLmluY2x1ZGVzKGluZGV4KX1cIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdEBjbGljaz1cIm9uUm93Q2xpY2soaW5kZXgpXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRzdHlsZT1cImN1cnNvcjogcG9pbnRlcjtcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10ZCBhbGlnbj1cImNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cImZvcm0taW5wdXRcIiBkaXNhYmxlZD1cInRydWVcIiB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJpdGVtLnByb2NOYW1lXCIgLz48IS0t5bel5bqPLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZvcm0taW5wdXRcIj57eyBpdGVtLmRhYTAwMSB9fTwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10ZD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10ZCBhbGlnbj1cImNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWlucHV0XCI+e3sgaXRlbS5kYWEwMDIgfX08L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1pbnB1dFwiPnt7IGl0ZW0uZGFhMDAzIH19PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZvcm0taW5wdXRcIj57eyBpdGVtLmRhYTAwNCB9fTwvZGl2PjwhLS3op4TmoLwtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWlucHV0XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiaXRlbS5kYWEwMTFcIiAvPjwhLS3lt7LnlJ/kuqfmlbDph48tLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWlucHV0XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgdHlwZT1cInRleHRcIiA6dmFsdWU9XCIoaXRlbS5kYWEwMDggfHwgMCkgLSAoaXRlbS5kYWEwMTEgfHwgMClcIiAvPjwhLS3mnKrnlJ/kuqfmlbDph48tLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWlucHV0XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiaXRlbS5kYWEwMDhcIiAvPjwhLS3mtL7lt6XmlbDph48tLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdCAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW5wdXQgY2xhc3M9XCJmb3JtLWlucHV0XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiaXRlbS5kYWEwMDhcIiAvPjwhLS3lt6XljZXmlbDph48tLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWlucHV0XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiaXRlbS5kYWEwMThcIiAvPjwhLS3lt6XljZXnirbmgIEtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWlucHV0XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiaXRlbS5zdGFmZk5hbWVcIiAvPjwhLS3miqXlt6XkurotLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGQ+XHJcbjwhLS0gXHRcdFx0XHRcdFx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInVuaS1ncm91cFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PGJ1dHRvbiBjbGFzcz1cInNlbGVjdC1idG5cIiB0eXBlPVwiZGVmYXVsdFwiIEBjbGljaz1cInRvRGV0YWlsKGl0ZW0pXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdOi9rOWIsOS4u+eVjOmdolxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PiAtLT5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10cj5cclxuXHRcdFx0XHRcdFx0XHQ8L3VuaS10YWJsZT5cclxuXHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cclxuXHRcdFx0XHRcdDwvdGFibGU+XHJcblx0XHRcdFx0PC9kaXY+XHJcblxyXG5cdFx0XHRcdDx2aWV3IGNsYXNzPVwiYm90dG9tLXNlY3Rpb25cIj5cclxuXHRcdFx0XHRcdDxidXR0b24gY2xhc3M9XCJzYXZlLWJ0blwiIEBjbGljaz1cInNhdmVcIj7kv53lrZjpgInmi6k8L2J1dHRvbj5cclxuXHRcdFx0XHRcdDxidXR0b24gY2xhc3M9XCJjYW5jZWwtYnRuXCIgQGNsaWNrPVwiaXNTaG93ID0gIWlzU2hvd1wiPuWPlua2iDwvYnV0dG9uPlxyXG5cdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0PC92aWV3PlxyXG5cdDwvdmlldz5cclxuPC90ZW1wbGF0ZT5cclxuXHJcbjxzY3JpcHQ+XHJcbmltcG9ydCBXb3JrT3JkZXJTdGF0dXMgZnJvbSAnLi4vY29tcG9uZW50cy9Xb3JrT3JkZXJTdGF0dXMudnVlJzsgLy8g56Gu5L+d6Lev5b6E5q2j56GuXHJcbmltcG9ydCBVbmlUYWJsZSBmcm9tIFwiLi4vdW5pX21vZHVsZXMvdW5pLXRhYmxlL2NvbXBvbmVudHMvdW5pLXRhYmxlL3VuaS10YWJsZS52dWVcIjtcclxuaW1wb3J0IE1vbGQgZnJvbSBcIi4uL2NvbXBvbmVudHMvbW9sZC52dWVcIjtcclxuaW1wb3J0IE1hY2hpbmUgZnJvbSBcIi4uL2NvbXBvbmVudHMvbWFjaGluZS52dWVcIjtcclxuaW1wb3J0IFdvcmtPcmRlclByaW50IGZyb20gXCIuLi9jb21wb25lbnRzL1dvcmtPcmRlclByaW50LnZ1ZVwiO1xyXG5pbXBvcnQgV29ya09yZGVyIGZyb20gXCIuLi9jb21wb25lbnRzL1dvcmtPcmRlci52dWVcIjtcclxuaW1wb3J0IFRlY2hub2xvZ3kgZnJvbSBcIi4uL2NvbXBvbmVudHMvVGVjaG5vbG9neS52dWVcIjtcclxuaW1wb3J0IFBERlNob3cgZnJvbSBcIi4uL2NvbXBvbmVudHMvUERGU2hvdy52dWVcIjtcclxuaW1wb3J0IFByaW50SW5pdCBmcm9tIFwiLi4vY29tcG9uZW50cy9QcmludEluaXQudnVlXCI7XHJcbmltcG9ydCBQcmludFRlc3QgZnJvbSBcIi4uL2NvbXBvbmVudHMvUHJpbnRUZXN0LnZ1ZVwiO1xyXG5pbXBvcnQgRXF1aXBtZW50SW5zcGVjdGlvbiBmcm9tIFwiLi4vY29tcG9uZW50cy9FcXVpcG1lbnRJbnNwZWN0aW9uLnZ1ZVwiO1xyXG5pbXBvcnQgTW9sZFJlY29yZCBmcm9tIFwiLi4vcGFnZXMvbW9sZFJlY29yZC52dWVcIjtcclxuXHJcblx0ZXhwb3J0IGRlZmF1bHQge1xyXG5cdFx0Y29tcG9uZW50czoge1xyXG5cdFx0XHRUZWNobm9sb2d5LFxyXG5cdFx0XHRXb3JrT3JkZXIsXHJcblx0XHRcdFdvcmtPcmRlclByaW50LFxyXG5cdFx0XHRNYWNoaW5lLFxyXG5cdFx0XHRNb2xkLFxyXG5cdFx0XHRVbmlUYWJsZSxcclxuXHRcdFx0V29ya09yZGVyU3RhdHVzLFxyXG5cdFx0XHRQREZTaG93LFxyXG5cdFx0XHRQcmludEluaXQsXHJcblx0XHRcdFByaW50VGVzdCxcclxuXHRcdFx0RXF1aXBtZW50SW5zcGVjdGlvbixcclxuXHRcdFx0TW9sZFJlY29yZFxyXG5cdFx0fSxcclxuXHRcdGRhdGEoKSB7XHJcblx0XHRcdHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICBvcmRlclN0YXR1czogJycsIC8vIOm7mOiupOWFqOmDqFxyXG5cdFx0XHRcdGN1cnJlbnRUYWI6IDcsXHJcblxyXG4gICAgICAgICAgICAgICAgcHJvZHVjdENvZGU6ICcnLCAvLyDkuqflk4HnvJbnoIFcclxuICAgICAgICAgICAgICAgIHByb2R1Y3RTcGVjOiAnJywgLy8g5Lqn5ZOB6KeE5qC8XHJcblxyXG5cdFx0XHRcdG1hY2hpbmVMaXN0OiBbXSxcclxuXHJcblx0XHRcdFx0bWFjaGluZTogW10sXHJcblxyXG5cdFx0XHRcdGVuZ2luZWVyaW5nTm9MaXN0OiBbXSxcclxuXHRcdFx0XHRlbmdpbmVlcmluZ05vTWFwTGlzdDogW10sXHJcblx0XHRcdFx0ZW5naW5lZXJpbmdObzogJycsXHJcblxyXG5cdFx0XHRcdG1hY2hpbmVObzogJycsXHJcblx0XHRcdFx0bWFjaGluZU5hbWU6ICcnLFxyXG5cclxuXHRcdFx0XHR0YWJsZURhdGE6IFtdLFxyXG5cdFx0XHRcdGlzU2hvd1RhYmxlRGF0YTogW10sXHJcblxyXG5cdFx0XHRcdG9yZGVyU3RhdHVzOiAn5byA5belJyxcclxuXHRcdFx0XHRzZWxlY3RlZE9yZGVyOiAnJyxcclxuXHRcdFx0XHRvcmRlcklkOiAwLFxyXG5cclxuXHRcdFx0XHRzZWxlY3RlZEluZGV4czogW10sXHJcblxyXG5cdFx0XHRcdGlzU2hvdzogZmFsc2UsXHJcblx0XHRcdFx0XHJcblx0XHRcdFx0Ly8g6Ieq5Yqo6Lez6L2s55u45YWzXHJcblx0XHRcdFx0YXV0b1JlZGlyZWN0VGltZXI6IG51bGwsXHJcblx0XHRcdFx0YXV0b1JlZGlyZWN0VGltZTogNSAqIDYwICogMTAwMCwgLy8gNeWIhumSn1xyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdC8vIOW3peWNlemAieaLqemhtemdouWumuaXtuWIt+aWsFxyXG5cdFx0XHRcdGF1dG9SZWZyZXNoVGltZXI6IG51bGwsXHJcblx0XHRcdFx0YXV0b1JlZnJlc2hJbnRlcnZhbDogNjAgKiAxMDAwLCAvLyAx5YiG6ZKfXHJcblx0XHRcdH07XHJcblx0XHR9LFxyXG5cdFx0Y3JlYXRlZCgpIHtcclxuXHJcblx0XHRcdC8v6LCD6K+V5L2/55So55qE5Luj56CBXHJcblx0XHRcdC8vIHRoaXMubWFjaGluZU5vID0gdW5pLmdldFN0b3JhZ2VTeW5jKCdtYWNoaW5lTm8nKTtcclxuXHRcdFx0Ly8gdGhpcy5tYWNoaW5lTmFtZSA9IHVuaS5nZXRTdG9yYWdlU3luYygnbWFjaGluZU5hbWUnKTtcclxuXHRcdFx0Ly9cclxuXHRcdFx0Ly8gaWYgKHRoaXMubWFjaGluZU5vKSB7XHJcblx0XHRcdC8vICAgdGhpcy5nZXRXb21kYWFJc1Nob3coKTtcclxuXHRcdFx0Ly8gfVxyXG5cclxuXHRcdFx0dW5pLmNsZWFyU3RvcmFnZVN5bmMoKTtcclxuXHRcdFx0XHJcblx0XHRcdHRoaXMuY2hlY2tGb3JVcGRhdGUoKTtcclxuXHRcdFx0XHJcblx0XHRcdC8v5bel5o6n5py65L2/55So55qE5Luj56CBXHJcblx0XHRcdHRoaXMuZ2V0UHJpbnRJbmZvKCk7XHJcblx0XHRcdFxyXG5cdFx0fSxcclxuXHRcdG9uTG9hZChvcHRpb25zKSB7XHJcblx0XHRcdHRoaXMuZ2V0TWFjaGluZUxpc3QoKTtcclxuXHRcdH0sXHJcblx0XHRvblNob3coKSB7XHJcblx0XHRcdHRoaXMucmVmcmVzaCgpO1xyXG5cdFx0XHR0aGlzLnJlc2V0QXV0b1JlZGlyZWN0VGltZXIoKTtcclxuXHRcdFx0Ly8g5aaC5p6c5Zyo5bel5Y2V6YCJ5oup6aG16Z2i77yM5ZCv5Yqo5a6a5pe25Yi35pawXHJcblx0XHRcdGlmICh0aGlzLmN1cnJlbnRUYWIgPT09IDcpIHtcclxuXHRcdFx0XHR0aGlzLnN0YXJ0QXV0b1JlZnJlc2goKTtcclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdG9uSGlkZSgpIHtcclxuXHRcdFx0Ly8g6aG16Z2i6ZqQ6JeP5pe25riF6Zmk5a6a5pe25ZmoXHJcblx0XHRcdHRoaXMuc3RvcEF1dG9SZWZyZXNoKCk7XHJcblx0XHR9LFxyXG5cdFx0bWV0aG9kczoge1xyXG4gICAgICAgICAgICBvblJvd0NsaWNrKGluZGV4KSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhzID0gW2luZGV4XTsgLy8g5Y2V6YCJXHJcbiAgICAgICAgICAgICAgICAvLyDmiYvliqjop6blj5Egc2VsZWN0aW9uQ2hhbmdlIOS7peWQjOatpeWkjemAieahhlxyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UoeyBkZXRhaWw6IHsgaW5kZXggfSB9KTtcclxuICAgICAgICAgICAgICAgIC8vIOmHjee9ruiHquWKqOi3s+i9rOiuoeaXtuWZqFxyXG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldEF1dG9SZWRpcmVjdFRpbWVyKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIFxyXG4gICAgICAgICAgICAvLyDph43nva7oh6rliqjot7PovazorqHml7blmahcclxuICAgICAgICAgICAgcmVzZXRBdXRvUmVkaXJlY3RUaW1lcigpIHtcclxuICAgICAgICAgICAgICAgIC8vIOa4hemZpOeOsOacieeahOWumuaXtuWZqFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuYXV0b1JlZGlyZWN0VGltZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5hdXRvUmVkaXJlY3RUaW1lcik7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvUmVkaXJlY3RUaW1lciA9IG51bGw7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIC8vIOmZpOS6huS4u+mhtSgwKeOAgeW3peWNlemAieaLqemhtSg3KeOAgeeUn+S6p+aKpeW3pemhtSg0KeS5i+WklueahOmhtemdouaJjeiuvue9ruiHquWKqOi3s+i9rFxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY3VycmVudFRhYiAhPT0gMCAmJiB0aGlzLmN1cnJlbnRUYWIgIT09IDcgJiYgdGhpcy5jdXJyZW50VGFiICE9PSA0KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5hdXRvUmVkaXJlY3RUaW1lciA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAvLyDot7Povazlm57kuLvpobVcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5jdXJyZW50VGFiID0gMDtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g5pi+56S65o+Q56S65L+h5oGvXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaS5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfpobXpnaLotoXml7bvvIzoh6rliqjov5Tlm57kuLvpobUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSwgdGhpcy5hdXRvUmVkaXJlY3RUaW1lKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuXHRcdFx0Y2hlY2tGb3JVcGRhdGUoKSB7XHJcblx0XHRcdFx0dGhpcy4kcG9zdCh7XHJcblx0XHRcdFx0XHR1cmw6IFwiL0Rldk1hY2hpbmUvZ2V0QXBwVXBncmFkZUluZm9cIixcclxuXHRcdFx0XHRcdGRhdGE6IHt9XHJcblx0XHRcdFx0fSkudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRsZXQgbmV3VmVyc2lvbiA9IHJlcy5kYXRhLnZlcnNpb247XHJcblx0XHRcdFx0XHRsZXQgY3VycmVudFZlcnNpb24gPSB1bmkuZ2V0U3lzdGVtSW5mb1N5bmMoKTsgLy8g6I635Y+W5b2T5YmNIEFQSyDniYjmnKzlj7dcclxuXHRcdFx0XHRcdCBcclxuXHRcdFx0XHRcdGlmIChuZXdWZXJzaW9uID4gY3VycmVudFZlcnNpb24uYXBwVmVyc2lvbikge1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd01vZGFsKHtcclxuXHRcdFx0XHRcdFx0XHR0aXRsZTogXCLlj5HnjrDmlrDniYjmnKxcIixcclxuXHRcdFx0XHRcdFx0XHRjb250ZW50OiBcIuaYr+WQpuS4i+i9veacgOaWsOeJiOacrD9cIixcclxuXHRcdFx0XHRcdFx0XHRzdWNjZXNzOiAobW9kYWxSZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0XHRcdGlmIChtb2RhbFJlcy5jb25maXJtKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRoaXMuZG93bmxvYWROZXdBcGsocmVzLmRhdGEuYXBrVXJsKTtcclxuXHRcdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHQvL3RoaXMuZG93bmxvYWROZXdBcGsocmVzLmRhdGEuYXBrVXJsKTtcclxuXHRcdFx0XHRcdFx0dGhpcy51cGRhdGVDaGVja2VkID0gdHJ1ZTsgLy8g5qCH6K6w5pu05paw5bey5qOA5p+l6L+HXHJcblx0XHRcdFx0XHRcdC8vICAgICAgLy8g5aaC5p6c5pyJ5paw54mI5pys77yM5byA5aeL5LiL6L29XHJcblx0XHRcdFx0XHRcdC8vZG93bmxvYWQocmVzLmRhdGEuYXBrVXJsKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KVxyXG5cdFx0XHRcdFxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcclxuXHRcdFx0ZG93bmxvYWROZXdBcGsoYXBrVXJsKSB7XHJcblx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHR0aXRsZTogXCLlvIDlp4vkuIvovb3mm7TmlrAuLi5cIixcclxuXHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxyXG5cdFx0XHRcdFx0ZHVyYXRpb246IDIwMDBcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHJcblx0XHRcdFx0dW5pLmRvd25sb2FkRmlsZSh7XHJcblx0XHRcdFx0XHR1cmw6IGFwa1VybCxcclxuXHRcdFx0XHRcdHN1Y2Nlc3M6IChyZXMpID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuXHRcdFx0XHRcdFx0XHRwbHVzLnJ1bnRpbWUuaW5zdGFsbChyZXMudGVtcEZpbGVQYXRoLCB7XHJcblx0XHRcdFx0XHRcdFx0XHRmb3JjZTogdHJ1ZVxyXG5cdFx0XHRcdFx0XHRcdH0sIGZ1bmN0aW9uKCkge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5sb2coXCLlronoo4XmiJDlip/vvIzph43lkK/lupTnlKhcIik7XHJcblx0XHRcdFx0XHRcdFx0XHQvL3BsdXMucnVudGltZS5yZXN0YXJ0KCk7XHJcblx0XHRcdFx0XHRcdFx0XHQvL3BsdXMucnVudGltZS5xdWl0KCk7XHJcblx0XHRcdFx0XHRcdFx0XHQvLyB1bmkubmF2aWdhdGVCYWNrKClcclxuXHRcdFx0XHRcdFx0XHR9LCBmdW5jdGlvbihlKSB7XHJcblx0XHRcdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKFwi5a6J6KOF5aSx6LSlOlwiLCBlKTtcclxuXHRcdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSxcclxuXHRcdFx0XHRcdGZhaWw6IChlcnIpID0+IHtcclxuXHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIuS4i+i9veWksei0pTpcIiwgZXJyKTtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5LiL6L295aSx6LSl77yM6K+35qOA5p+l572R57ucXCIsXHJcblx0XHRcdFx0XHRcdFx0aWNvbjogXCJub25lXCIsXHJcblx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDIwMDBcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdH0sXHJcblx0XHRcdFxyXG5cdFx0XHRyZWZyZXNoKCkge1xyXG5cdFx0XHRcdHRoaXMuZ2V0TWFjaGluZUxpc3QoKTtcclxuXHRcdFx0XHR0aGlzLmdldFByaW50SW5mbygpOyAvLyBnZXRQcmludEluZm8g5a6M5oiQ5ZCO5Lya6Ieq5Yqo6LCD55SoIGdldFdvbWRhYUlzU2hvdygpXHJcblx0XHRcdFx0Ly8g5aaC5p6c5b2T5YmN5Zyo5bel5Y2V6YCJ5oup6aG16Z2i77yM6buY6K6k5Yqg6L295bel5Y2V5YiX6KGoXHJcblx0XHRcdFx0aWYgKHRoaXMuY3VycmVudFRhYiA9PT0gNykge1xyXG5cdFx0XHRcdFx0Ly8g5qC55o2u5b2T5YmN57uR5a6a5bel5Y2V55qE54q25oCB5Yaz5a6a6buY6K6k562b6YCJ5p2h5Lu2XHJcblx0XHRcdFx0XHRsZXQgZGVmYXVsdFN0YXR1cyA9ICflvoXlvIDlt6XjgIHmnKrlvIDlt6XjgIHmmoLlgZwnO1xyXG5cdFx0XHRcdFx0aWYgKHRoaXMuaXNTaG93VGFibGVEYXRhLmxlbmd0aCA+IDApIHtcclxuXHRcdFx0XHRcdFx0Y29uc3QgY3VycmVudE9yZGVyU3RhdHVzID0gdGhpcy5pc1Nob3dUYWJsZURhdGFbMF0uZGFhMDE4O1xyXG5cdFx0XHRcdFx0XHRpZiAoY3VycmVudE9yZGVyU3RhdHVzID09PSAn5byA5belJykge1xyXG5cdFx0XHRcdFx0XHRcdGRlZmF1bHRTdGF0dXMgPSAn5byA5belJztcclxuXHRcdFx0XHRcdFx0fSBlbHNlIGlmIChjdXJyZW50T3JkZXJTdGF0dXMgPT09ICflrozlt6UnKSB7XHJcblx0XHRcdFx0XHRcdFx0ZGVmYXVsdFN0YXR1cyA9ICflrozlt6UnO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLmVuZ2luZWVyaW5nTm8gPSBkZWZhdWx0U3RhdHVzO1xyXG5cdFx0XHRcdFx0dGhpcy5lbmdpbmVlcmluZ05vTWFwTGlzdCA9IFtcclxuXHRcdFx0XHRcdFx0J+W+heW8gOW3peOAgeacquW8gOW3peOAgeaaguWBnCcsXHJcblx0XHRcdFx0XHRcdCflvIDlt6UnLFxyXG5cdFx0XHRcdFx0XHQn5a6M5belJ1xyXG5cdFx0XHRcdFx0XTtcclxuXHRcdFx0XHRcdHRoaXMuZ2V0V29tZGFhQnlTdGF0dXMoKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdGdldFByaW50SW5mbygpIHtcclxuXHRcdFx0XHR2YXIgbWFjID0gXCJcIjtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRtYWMgPSBcIjc0OjI0OmNhOjRmOmI3OjRkXCI7XHJcblx0XHRcdFx0dGhpcy4kcG9zdCh7XHJcblx0XHRcdFx0XHR1cmw6IFwiL0Rldk1hY2hpbmUvR2V0RGV2TWFjaGluZUJ5UGRhTWFjXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0XHRcdHBkYU1hYzogbWFjLFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLnRoZW4ocmVzID0+IHtcclxuXHRcdFx0XHRcdGxldCBkZXZNYWNoaW5lID0gcmVzLmRhdGEudGJCaWxsTGlzdDtcclxuXHRcdFx0XHRcdHRoaXMubWFjaGluZU5vID0gZGV2TWFjaGluZS5tYWNoaW5lTm87XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5tYWNoaW5lTmFtZSA9IFwi6LCD6K+V5qih5byP77yaXCIgKyB0aGlzLm1hY2hpbmVObyArIFwi5Y+36b2/6L2u5py6XCJcclxuXHJcblx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ21hY2hpbmVObycsIHRoaXMubWFjaGluZU5vKTtcclxuXHRcdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygncHJpbnRNYWMnLCBkZXZNYWNoaW5lLnByaW50TWFjKTtcclxuXHJcblx0XHRcdFx0XHRjb25zb2xlLmxvZyhkZXZNYWNoaW5lLnByaW50TWFjKTtcclxuXHJcblx0XHRcdFx0XHR0aGlzLmdldFdvbWRhYUlzU2hvdygpO1xyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRcclxuXHQvLyAgXHRcdFx0aWYgKHBsdXMub3MubmFtZSA9PSBcIkFuZHJvaWRcIikge1xyXG5cdC8vICBcdFx0XHRcdC8v6I635Y+W5omL5py6TUFD5Zyw5Z2AXHJcblx0Ly8gIFx0XHRcdFx0dmFyIENvbnRleHQgPSBwbHVzLmFuZHJvaWQuaW1wb3J0Q2xhc3MoXCJhbmRyb2lkLmNvbnRlbnQuQ29udGV4dFwiKTtcclxuXHQvLyAgXHRcdFx0XHR2YXIgV2lmaU1hbmFnZXIgPSBwbHVzLmFuZHJvaWQuaW1wb3J0Q2xhc3MoXCJhbmRyb2lkLm5ldC53aWZpLldpZmlNYW5hZ2VyXCIpO1xyXG5cdC8vICBcdFx0XHRcdHZhciB3aWZpTWFuYWdlciA9IHBsdXMuYW5kcm9pZC5ydW50aW1lTWFpbkFjdGl2aXR5KCkuZ2V0U3lzdGVtU2VydmljZShDb250ZXh0LldJRklfU0VSVklDRSk7XHJcblx0Ly8gIFx0XHRcdFx0dmFyIFdpZmlJbmZvID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKFwiYW5kcm9pZC5uZXQud2lmaS5XaWZpSW5mb1wiKTtcclxuXHQvLyAgXHRcdFx0XHR2YXIgd2lmaUluZm8gPSB3aWZpTWFuYWdlci5nZXRDb25uZWN0aW9uSW5mbygpO1xyXG5cdC8vICBcdFx0XHRcdG1hYyA9IHdpZmlJbmZvLmdldE1hY0FkZHJlc3MoKTtcclxuXHRcdFx0XHRcdFxyXG5cdC8vICBcdFx0XHRcdC8v5aaC5p6cbWFj5Li64oCcMDI6MDA6MDA6MDA6MDA6MDDigJ3vvIzliJnlj6/og73mmK/lronljZM2LjDku6XkuIrniYjmnKzvvIzliJnkvb/nlKjlj6bkuIDnp43mlrnms5Xojrflj5ZtYWPlnLDlnYBcclxuXHQvLyAgXHRcdFx0XHRpZiAobWFjID09IFwiMDI6MDA6MDA6MDA6MDA6MDBcIikge1xyXG5cdC8vICBcdFx0XHRcdFx0bWFjID0gdGhpcy5nZXRNYWNOZXcoKTtcclxuXHQvLyAgXHRcdFx0XHR9XHJcblx0Ly8gIFx0XHRcdFx0Ly/lpoLmnpxtYWPkvb/nlKjmlrDmlrnms5Xkvp3nhLbmmK/igJwwMjowMDowMDowMDowMDowMOKAneWImeS4jei/m+ihjOS/neWtmFxyXG5cdC8vICBcdFx0XHRcdGlmIChtYWMgPT0gXCIwMjowMDowMDowMDowMDowMFwiKSB7XHJcblx0Ly8gIFx0XHRcdFx0XHRyZXR1cm47XHJcblx0Ly8gIFx0XHRcdFx0fVxyXG5cdC8vICBcdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygncGRhTWFjJywgbWFjKTtcclxuXHJcblx0Ly8gIFx0XHRcdFx0dGhpcy4kcG9zdCh7XHJcblx0Ly8gIFx0XHRcdFx0XHR1cmw6IFwiL0Rldk1hY2hpbmUvR2V0RGV2TWFjaGluZUJ5UGRhTWFjXCIsXHJcblx0Ly8gIFx0XHRcdFx0XHRkYXRhOiB7XHJcblx0Ly8gIFx0XHRcdFx0XHRcdHBkYU1hYzogbWFjLFxyXG5cdC8vICBcdFx0XHRcdFx0fVxyXG5cdC8vICBcdFx0XHRcdH0pLnRoZW4ocmVzID0+IHtcclxuXHQvLyAgXHRcdFx0XHRcdGxldCBkZXZNYWNoaW5lID0gcmVzLmRhdGEudGJCaWxsTGlzdDtcclxuXHQvLyAgXHRcdFx0XHRcdHRoaXMubWFjaGluZU5vID0gZGV2TWFjaGluZS5tYWNoaW5lTm87XHJcblx0Ly8gIFx0XHRcdFx0XHR0aGlzLm1hY2hpbmVOYW1lID0gXCLlvZPliY3mnLrlj7DvvJpcIiArIHRoaXMubWFjaGluZU5vICsgXCLlj7fpvb/ova7mnLpcIjtcclxuXHJcblx0Ly8gIFx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ21hY2hpbmVObycsIHRoaXMubWFjaGluZU5vKTtcclxuXHQvLyAgXHRcdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygncHJpbnRNYWMnLCBkZXZNYWNoaW5lLnByaW50TWFjKTtcclxuIFxyXG5cclxuXHQvLyAgXHRcdFx0XHRcdHRoaXMuZ2V0V29tZGFhSXNTaG93KCk7XHJcblxyXG5cdC8vICBcdFx0XHRcdH0pO1xyXG5cdC8vICBcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdHNhdmUoKSB7XHJcblx0XHRcdFx0bGV0IGRhdGEgPSB0aGlzLnNlbGVjdGVkSXRlbXMoKTtcclxuXHJcblx0XHRcdFx0aWYgKGRhdGEubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoXCLor7fpgInmi6nkuIDkuKrlt6XljZVcIik7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChkYXRhLmxlbmd0aCA+IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLiRzaG93TWVzc2FnZShcIuS4gOasoeWPquiDvemAieWPluS4gOS4quW3peWNlVwiKTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblxyXG5cdFx0XHRcdC8vbGV0IGZpcnN0VmFsdWUgPSBkYXRhWzBdW1wibW9sZElkXCJdOyAvLyDojrflj5bnrKzkuIDkuKrlr7nosaHnmoTmjIflrprlsZ7mgKflgLxcclxuXHJcblx0XHRcdFx0Ly8vLyDkvb/nlKggZXZlcnkg5pa55rOV5qOA5p+l5omA5pyJ5a+56LGh55qE6K+l5bGe5oCn5YC85piv5ZCm5LiA6Ie0XHJcblx0XHRcdFx0Ly9sZXQgZmxhZyA9IGRhdGEuZXZlcnkoaXRlbSA9PiBpdGVtW1wibW9sZElkXCJdID09PSBmaXJzdFZhbHVlKTtcclxuXHRcdFx0XHQvL2lmICghZmxhZykge1xyXG5cdFx0XHRcdC8vXHR0aGlzLiRzaG93TWVzc2FnZShcIumAieWPlueahFwiICsgZGF0YS5sZW5ndGggKyBcIuS4quW3peWNleS4reeahOaooeWFt+e8luWPt+S4jeS4gOiHtFwiKTtcclxuXHRcdFx0XHQvL1x0cmV0dXJuO1xyXG5cdFx0XHRcdC8vfVxyXG5cclxuXHRcdFx0XHRsZXQgb3JkZXJTZWxlY3QgPSBbXTtcclxuXHJcblx0XHRcdFx0ZGF0YS5mb3JFYWNoKHMgPT4ge1xyXG5cdFx0XHRcdFx0bGV0IGVudGl0eSA9IHtcclxuXHRcdFx0XHRcdFx0b3JkZXJJZDogcy5pZCxcclxuXHRcdFx0XHRcdFx0b3JkZXJObzogcy5kYWEwMDEsXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRvcmRlclNlbGVjdC5wdXNoKGVudGl0eSk7XHJcblx0XHRcdFx0fSk7XHJcblxyXG5cdFx0XHRcdGxldCBlZGl0RGF0ZSA9IHRoaXMuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKTtcclxuXHJcblx0XHRcdFx0dGhpcy4kcG9zdCh7XHJcblx0XHRcdFx0XHR1cmw6IFwiL01lc09yZGVyU2VsZWN0L0FkZFwiLFxyXG5cdFx0XHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdFx0XHRtYWNoaW5lTm86IHRoaXMubWFjaGluZU5vLFxyXG5cdFx0XHRcdFx0XHRlZGl0RGF0ZTogZWRpdERhdGUsXHJcblx0XHRcdFx0XHRcdGl0ZW06IG9yZGVyU2VsZWN0XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSkudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHJlcy5kYXRhLnRiQmlsbExpc3QpIHtcclxuXHRcdFx0XHRcdFx0dGhpcy5nZXRXb21kYWFJc1Nob3coKTtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+S/neWtmOW3peWNleaIkOWKnycsXHJcblx0XHRcdFx0XHRcdFx0Ly90aXRsZTogJ+WwhuazqOWhkeacuuW8gOWQiOaooeaVsOa4hTAnLFxyXG5cdFx0XHRcdFx0XHRcdC8v5bCG5YC86K6+572u5Li6IHN1Y2Nlc3Mg5oiW6ICF55u05o6l5LiN55So5YaZaWNvbui/meS4quWPguaVsFxyXG5cdFx0XHRcdFx0XHRcdGljb246ICdzdWNjZXNzJyxcclxuXHRcdFx0XHRcdFx0XHQvL+aYvuekuuaMgee7reaXtumXtOS4uiA156eSXHJcblx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDUwMDBcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR0aGlzLmlzU2hvdyA9IGZhbHNlO1xyXG5cdFx0XHRcdH0pXHJcblxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRNYWNOZXcoKSB7XHJcblx0XHRcdFx0dmFyIHN0ciA9IFwiXCI7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdGlmIChwbHVzLm9zLm5hbWUgPT0gXCJBbmRyb2lkXCIpIHtcclxuXHRcdFx0XHRcdFx0dmFyIE5ldHdvcmtJbnRlcmZhY2UgPSBwbHVzLmFuZHJvaWQuaW1wb3J0Q2xhc3MoXCJqYXZhLm5ldC5OZXR3b3JrSW50ZXJmYWNlXCIpO1xyXG5cdFx0XHRcdFx0XHR2YXIgbmV0d29ya0ludGVyZmFjZSA9IE5ldHdvcmtJbnRlcmZhY2UuZ2V0QnlOYW1lKFwid2xhbjBcIik7XHJcblx0XHRcdFx0XHRcdHZhciBieXRlcyA9IG5ldHdvcmtJbnRlcmZhY2UuZ2V0SGFyZHdhcmVBZGRyZXNzKCk7XHJcblx0XHRcdFxyXG5cdFx0XHRcdFx0XHQvL+WwhmJ5dGVbXSDovazmjaLmiJAgU3RyaW5nXHJcblx0XHRcdFx0XHRcdGZvciAodmFyIGkgPSAwOyBpIDwgYnl0ZXMubGVuZ3RoOyBpKyspIHtcclxuXHRcdFx0XHRcdFx0XHR2YXIgdG1wID0gXCJcIjtcclxuXHRcdFx0XHRcdFx0XHR2YXIgbnVtID0gYnl0ZXNbaV07XHJcblx0XHRcdFx0XHRcdFx0aWYgKG51bSA8IDApIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRtcCA9ICgyNTUgKyBudW0gKyAxKS50b1N0cmluZygxNik7XHJcblx0XHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRtcCA9IG51bS50b1N0cmluZygxNik7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdGlmICh0bXAubGVuZ3RoID09IDEpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHRtcCA9IFwiMFwiICsgdG1wO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRzdHIgKz0gKGkgPT0gMCkgPyAodG1wKSA6IChcIjpcIiArIHRtcCk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGNhdGNoIChlcnIpIHtcclxuXHRcdFx0XHRcdHN0ciA9IFwiMDI6MDA6MDA6MDA6MDA6MDBcIjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIHN0cjtcclxuXHRcdFx0fSxcclxuXHJcbiAgICAgICAgICAgIGNhbmNlbCgpIHtcclxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5tYWNoaW5lTm8pIHtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgLy8g55u05o6l55SoIGZsYWcg5Yik5patXHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oYXNCaW5kZWRDdXR0ZXJGbGFnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdW5pLnNob3dUb2FzdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn5b2T5YmN5bel5Y2V5bey57uR5a6a5YiA5YW377yM5LiN6IO95riF56m66YeN6YCJJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWNvbjogJ2Vycm9yJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgICAgbGV0IGVkaXREYXRlID0gdGhpcy5mb3JtYXREYXRlKG5ldyBEYXRlKCkpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4cyA9IFtdO1xyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogXCIvTWVzT3JkZXJTZWxlY3QvUmVtb3ZlXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lTm86IHRoaXMubWFjaGluZU5vLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0RGF0ZTogZWRpdERhdGVcclxuICAgICAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgfSkudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuZGF0YS50YkJpbGxMaXN0ID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmlzU2hvd1RhYmxlRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuXHRcdFx0Zm9ybWF0RGF0ZShkYXRlKSB7XHJcblx0XHRcdFx0bGV0IHllYXIgPSBkYXRlLmdldEZ1bGxZZWFyKCk7IC8vIOiOt+WPluW5tOS7vVxyXG5cdFx0XHRcdGxldCBtb250aCA9IFN0cmluZyhkYXRlLmdldE1vbnRoKCkgKyAxKS5wYWRTdGFydCgyLCAnMCcpOyAvLyDojrflj5bmnIjku73lubbooaXpm7ZcclxuXHRcdFx0XHRsZXQgZGF5ID0gU3RyaW5nKGRhdGUuZ2V0RGF0ZSgpKS5wYWRTdGFydCgyLCAnMCcpOyAvLyDojrflj5bml6XmnJ/lubbooaXpm7ZcclxuXHRcdFx0XHRyZXR1cm4gYCR7eWVhcn0tJHttb250aH0tJHtkYXl9YDsgLy8g6L+U5Zue5qC85byP5YyW5ZCO55qE5a2X56ym5LiyXHJcblx0XHRcdH0sXHJcblx0XHRcdHNlbGVjdGlvbkNoYW5nZShlKSB7XHJcbiAgICAgICAgICAgICAgICAvLyDljZXpgInnm7TmjqXotYvlgLxcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleHMgPSBbZS5kZXRhaWwuaW5kZXhdO1xyXG5cdFx0XHR9LFxyXG5cclxuXHRcdFx0c2VsZWN0ZWRJdGVtcygpIHtcclxuXHRcdFx0XHRyZXR1cm4gdGhpcy5zZWxlY3RlZEluZGV4cy5tYXAoaSA9PiB0aGlzLnRhYmxlRGF0YVtpXSlcclxuXHRcdFx0fSxcclxuXHJcblxyXG5cdFx0XHRjaGFuZ2VUYWIoaW5kZXgpIHtcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRUYWIgPSBpbmRleDtcclxuXHRcdFx0XHQvLyDlvZPliIfmjaLliLDlt6XljZXpgInmi6npobXpnaIoaW5kZXggPT09IDcp5pe26Ieq5Yqo5Yi35pawXHJcblx0XHRcdFx0aWYgKGluZGV4ID09PSA3KSB7XHJcblx0XHRcdFx0XHR0aGlzLnJlZnJlc2goKTtcclxuXHRcdFx0XHRcdC8vIOWQr+WKqOWumuaXtuWIt+aWsFxyXG5cdFx0XHRcdFx0dGhpcy5zdGFydEF1dG9SZWZyZXNoKCk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIOemu+W8gOW3peWNlemAieaLqemhtemdouaXtuWBnOatouWumuaXtuWIt+aWsFxyXG5cdFx0XHRcdFx0dGhpcy5zdG9wQXV0b1JlZnJlc2goKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8g6YeN572u6Ieq5Yqo6Lez6L2s6K6h5pe25ZmoXHJcblx0XHRcdFx0dGhpcy5yZXNldEF1dG9SZWRpcmVjdFRpbWVyKCk7XHJcblx0XHRcdFx0Y29uc29sZS5sb2coaW5kZXgpO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRvbk1hY2hpbmVDaGFuZ2UoZXZlbnQpIHtcclxuXHJcblx0XHRcdFx0dGhpcy5tYWNoaW5lTmFtZSA9IGV2ZW50O1xyXG5cclxuXHRcdFx0XHR0aGlzLm1hY2hpbmVObyA9IHRoaXMubWFjaGluZVt0aGlzLm1hY2hpbmVMaXN0LmluZGV4T2YoZXZlbnQpXS5tYWNoaW5lTm87XHJcblxyXG5cdFx0XHRcdHVuaS5jbGVhclN0b3JhZ2VTeW5jKCk7XHJcblxyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnbWFjaGluZU5vJywgdGhpcy5tYWNoaW5lTm8pO1xyXG5cdFx0XHRcdHVuaS5zZXRTdG9yYWdlU3luYygnbWFjaGluZU5hbWUnLCB0aGlzLm1hY2hpbmVOYW1lKTtcclxuXHJcblx0XHRcdFx0dGhpcy5nZXRXb21kYWFJc1Nob3coKTtcclxuXHRcdFx0fSxcclxuXHRcdFx0b25FbmdpbmVlcmluZ05vQ2hhbmdlKGV2ZW50KSB7XHJcblxyXG5cdFx0XHRcdGxldCBvcmRlID0gdGhpcy5lbmdpbmVlcmluZ05vTGlzdFt0aGlzLmVuZ2luZWVyaW5nTm9NYXBMaXN0LmluZGV4T2YoZXZlbnQpXTtcclxuXHJcblx0XHRcdFx0dGhpcy5lbmdpbmVlcmluZ05vID0gb3JkZS5tb2xkSWQ7XHJcblxyXG5cdFx0XHRcdHRoaXMuZ2V0V29tZGFhKCk7XHJcblxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRNYWNoaW5lTGlzdCgpIHtcclxuXHRcdFx0XHR0aGlzLiRwb3N0KHtcclxuXHRcdFx0XHRcdHVybDogXCIvTWVzTWFjaGluZS9HZXRJbmplY3Rpb25NYWNoaW5lXCIsXHJcblx0XHRcdFx0fSkudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy5tYWNoaW5lID0gcmVzLmRhdGEudGJCaWxsTGlzdDtcclxuXHRcdFx0XHRcdHRoaXMubWFjaGluZUxpc3QgPSB0aGlzLm1hY2hpbmUubWFwKHMgPT4gcy5tYWNoaW5lTmFtZSk7XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0fSxcclxuICAgICAgICAgICAgLy/ojrflj5booajmoLznmoTmlbDmja7mupBcclxuICAgICAgICAgICAgZ2V0V29tZGFhSXNTaG93KCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy4kcG9zdCh7XHJcbiAgICAgICAgICAgICAgICAgICAgdXJsOiBcIi9Xb21kYWEvR2V0V29tZGFhc0J5U2hvd1wiLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZU5vOiB0aGlzLm1hY2hpbmVObyxcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dUYWJsZURhdGEgPSByZXMuZGF0YS50YkJpbGxMaXN0O1xyXG5cclxuICAgICAgICAgICAgICAgICAgICAvLyDlj6rliKTmlq3nrKzkuIDmnaHvvIjlj6rlhYHorrjkuIDmnaHlt6XljZXvvIlcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBvcmRlciA9IHRoaXMuaXNTaG93VGFibGVEYXRhWzBdO1xyXG4gICAgICAgICAgICAgICAgICAgIGxldCBoYXNCaW5kZWRDdXR0ZXIgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgICAgICBpZiAob3JkZXIpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaGFzQmluZGVkQ3V0dGVyID1cclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcmRlci5vdXRUb29sSWQgJiYgb3JkZXIub3V0VG9vbElkLnRvU3RyaW5nKCkudHJpbSgpICE9PSAnJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcmRlci5vdXRUb29sQ29kZSAmJiBvcmRlci5vdXRUb29sQ29kZS50cmltKCkgIT09ICcnKSB8fFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG9yZGVyLm91dFRvb2xOYW1lICYmIG9yZGVyLm91dFRvb2xOYW1lLnRyaW0oKSAhPT0gJycpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICAvLyDlrZjlgqjliLAgZGF0YSDlj5jph49cclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmhhc0JpbmRlZEN1dHRlckZsYWcgPSBoYXNCaW5kZWRDdXR0ZXI7XHJcblxyXG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzU2hvd1RhYmxlRGF0YS5sZW5ndGggPT0gMSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmkuc2V0U3RvcmFnZVN5bmMoJ2RhYTAwMScsIHRoaXMuaXNTaG93VGFibGVEYXRhWzBdLmRhYTAwMSk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVuaS5zZXRTdG9yYWdlU3luYygnaWQnLCB0aGlzLmlzU2hvd1RhYmxlRGF0YVswXS5pZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sXHJcblxyXG4gICAgICAgICAgICBpc1Nob3dUYWIoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1Nob3dUYWJsZURhdGEubGVuZ3RoID4gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHVuaS5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+W3suacieato+WcqOaTjeS9nOeahOW3peWNle+8jOS4jeiDveWGjeasoemAieaLqScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIHRoaXMuaXNTaG93ID0gdHJ1ZTtcclxuICAgICAgICAgICAgICAgIC8vIOm7mOiupOmAieS4reKAnOW+heW8gOW3peKAnVxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmVlcmluZ05vID0gJ+W+heW8gOW3peOAgeacquW8gOW3peOAgeaaguWBnCc7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IFtdO1xyXG4gICAgICAgICAgICAgICAgLy8g5LiL5ouJ5qGG5Y+q5pi+56S65ZCI5bm25ZCO55qE54q25oCB5ZKM5YW25a6D54q25oCBXHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZWVyaW5nTm9NYXBMaXN0ID0gW1xyXG4gICAgICAgICAgICAgICAgICAgICflvoXlvIDlt6XjgIHmnKrlvIDlt6XjgIHmmoLlgZwnLFxyXG4gICAgICAgICAgICAgICAgICAgICflvIDlt6UnLFxyXG4gICAgICAgICAgICAgICAgICAgICflrozlt6UnXHJcbiAgICAgICAgICAgICAgICBdO1xyXG4gICAgICAgICAgICAgICAgLy8g6buY6K6k5pi+56S64oCc5b6F5byA5bel4oCd5bel5Y2VXHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldFdvbWRhYUJ5U3RhdHVzKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIOS4i+aLieahhumAieS4reWQju+8jOaMieeKtuaAgeetm+mAieW3peWNlVxyXG4gICAgICAgICAgICBvbkVuZ2luZWVyaW5nTm9DaGFuZ2Uoc3RhdHVzKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmVuZ2luZWVyaW5nTm8gPSBzdGF0dXM7XHJcbiAgICAgICAgICAgICAgICB0aGlzLmdldFdvbWRhYUJ5U3RhdHVzKCk7XHJcbiAgICAgICAgICAgIH0sXHJcblx0XHRcdGdldFdvbWRhYSgpIHtcclxuXHJcblx0XHRcdFx0bGV0IGVkaXREYXRlID0gdGhpcy5mb3JtYXREYXRlKG5ldyBEYXRlKCkpO1xyXG5cclxuXHRcdFx0XHR0aGlzLiRwb3N0KHtcclxuXHRcdFx0XHRcdHVybDogXCIvV29tZGFhL0dldFdvbWRhYXNCeU1hY2hpbmVcIixcclxuXHRcdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdFx0bWFjaGluZU5vOiB0aGlzLm1hY2hpbmVObyxcclxuXHRcdFx0XHRcdFx0ZWRpdERhdGU6IGVkaXREYXRlXHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSkudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdFx0dGhpcy50YWJsZURhdGEgPSByZXMuZGF0YS50YkJpbGxMaXN0O1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcbiAgICAgICAgICAgIC8vIOaMieW3peWNleeKtuaAgeetm+mAieW3peWNlVxyXG4gICAgICAgICAgICBnZXRXb21kYWFCeVN0YXR1cygpIHtcclxuICAgICAgICAgICAgICAgIGxldCBlZGl0RGF0ZSA9IHRoaXMuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKTtcclxuICAgICAgICAgICAgICAgIGxldCBzdGF0dXNBcnIgPSBbXTtcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmVuZ2luZWVyaW5nTm8gPT09ICflvoXlvIDlt6XjgIHmnKrlvIDlt6XjgIHmmoLlgZwnKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzQXJyID0gWyflvoXlvIDlt6UnLCAn5pyq5byA5belJywgJ+aaguWBnCddO1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNBcnIgPSBbdGhpcy5lbmdpbmVlcmluZ05vXTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogXCIvV29tZGFhL0dldFdvbWRhYXNCeUVuZ2luZWVyaW5nTm9cIixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9yZGVyU3RhdHVzOiBzdGF0dXNBcnIsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVkaXREYXRlOiBlZGl0RGF0ZVxyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHJlcy5kYXRhLnRiQmlsbExpc3Q7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuXHRcdFx0dG9EZXRhaWwoaXRlbSkge1xyXG5cdFx0XHRcdHRoaXMub3JkZXJJZCA9IGl0ZW0uaWQ7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZE9yZGVyID0gaXRlbS5kYWEwMDE7XHJcbiAgICAgICAgICAgICAgICB0aGlzLnByb2R1Y3RDb2RlID0gaXRlbS5kYWEwMDI7IC8vIOS6p+WTgee8lueggVxyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0U3BlYyA9IGl0ZW0uZGFhMDA0OyAvLyDkuqflk4Hop4TmoLxcclxuXHRcdFx0XHR0aGlzLmN1cnJlbnRUYWIgPSAwO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcclxuXHRcdFx0Ly8g6I635Y+W5byA5bel5oyJ6ZKu55qEY2xhc3NcclxuXHRcdFx0Z2V0U3RhcnRCdG5DbGFzcyhpdGVtKSB7XHJcblx0XHRcdFx0Y29uc3QgaXNTZWxlY3RlZCA9IHRoaXMuaXNTaG93VGFibGVEYXRhLmxlbmd0aCA+IDAgJiYgdGhpcy5pc1Nob3dUYWJsZURhdGFbMF0uZGFhMDAxID09PSBpdGVtLmRhYTAwMTtcclxuXHRcdFx0XHRpZiAoaXNTZWxlY3RlZCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuICdzdGFydC1idG4gc3RhcnQtYnRuLXNlbGVjdGVkJzsgLy8g5b2T5YmN6YCJ5Lit55qE5bel5Y2V77yM57u/6ImyXHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiAnc3RhcnQtYnRuJztcclxuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdC8vIOWIpOaWreW8gOW3peaMiemSruaYr+WQpuemgeeUqFxyXG5cdFx0XHRpc1N0YXJ0QnRuRGlzYWJsZWQoaXRlbSkge1xyXG5cdFx0XHRcdC8vIOWmguaenOW3sue7j+aciemAieS4reeahOW3peWNle+8jOS4lOW9k+WJjemhueS4jeaYr+mAieS4reeahOW3peWNle+8jOWImeemgeeUqFxyXG5cdFx0XHRcdGlmICh0aGlzLmlzU2hvd1RhYmxlRGF0YS5sZW5ndGggPiAwICYmIHRoaXMuaXNTaG93VGFibGVEYXRhWzBdLmRhYTAwMSAhPT0gaXRlbS5kYWEwMDEpIHtcclxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH0sXHJcblx0XHRcdFxyXG5cdFx0XHQvLyDliKTmlq3mmoLlgZzmjInpkq7mmK/lkKbnpoHnlKhcclxuXHRcdFx0aXNQYXVzZUJ0bkRpc2FibGVkKGl0ZW0pIHtcclxuXHRcdFx0XHQvLyDlpoLmnpzlt7Lnu4/mnInpgInkuK3nmoTlt6XljZXvvIzkuJTlvZPliY3pobnkuI3mmK/pgInkuK3nmoTlt6XljZXvvIzliJnnpoHnlKhcclxuXHRcdFx0XHRpZiAodGhpcy5pc1Nob3dUYWJsZURhdGEubGVuZ3RoID4gMCAmJiB0aGlzLmlzU2hvd1RhYmxlRGF0YVswXS5kYWEwMDEgIT09IGl0ZW0uZGFhMDAxKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0Ly8g5aaC5p6c6L+Y5rKh5pyJ6YCJ5Lit5Lu75L2V5bel5Y2V77yM5Lmf56aB55So5pqC5YGc5oyJ6ZKuXHJcblx0XHRcdFx0aWYgKHRoaXMuaXNTaG93VGFibGVEYXRhLmxlbmd0aCA9PT0gMCkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdC8vIOiOt+WPluW8gOW3peaMiemSruaWh+acrFxyXG5cdFx0XHRnZXRTdGFydEJ0blRleHQoaXRlbSkge1xyXG5cdFx0XHRcdGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLmlzU2hvd1RhYmxlRGF0YS5sZW5ndGggPiAwICYmIHRoaXMuaXNTaG93VGFibGVEYXRhWzBdLmRhYTAwMSA9PT0gaXRlbS5kYWEwMDE7XHJcblx0XHRcdFx0aWYgKGlzU2VsZWN0ZWQpIHtcclxuXHRcdFx0XHRcdHJldHVybiAn6L2s6Lez5oql5bel55WM6Z2iJztcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuICflvIDlt6UnO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcclxuXHRcdFx0Ly8g5aSE55CG5byA5belXHJcblx0XHRcdGFzeW5jIGhhbmRsZVN0YXJ0V29yayhpdGVtKSB7XHJcblx0XHRcdFx0Ly8g5Yik5pat5b2T5YmN5bel5Y2V5piv5ZCm5bey6YCJ5LitXHJcblx0XHRcdFx0Y29uc3QgaXNTZWxlY3RlZCA9IHRoaXMuaXNTaG93VGFibGVEYXRhLmxlbmd0aCA+IDAgJiYgdGhpcy5pc1Nob3dUYWJsZURhdGFbMF0uZGFhMDAxID09PSBpdGVtLmRhYTAwMTtcclxuXHRcdFx0XHRcclxuXHRcdFx0XHRpZiAoaXNTZWxlY3RlZCkge1xyXG5cdFx0XHRcdFx0Ly8g5aaC5p6c5bey6YCJ5Lit77yM5YiZ5YWI6Lez6L2s5Yiw5Li755WM6Z2i77yM54S25ZCO6Lez6L2s5Yiw5oql5bel55WM6Z2iXHJcblx0XHRcdFx0XHR0aGlzLnRvRGV0YWlsKGl0ZW0pO1xyXG5cdFx0XHRcdFx0Ly8g5bu26L+f6Lez6L2s5Yiw5oql5bel55WM6Z2iXHJcblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdFx0dGhpcy5jdXJyZW50VGFiID0gNDtcclxuXHRcdFx0XHRcdH0sIDEwMCk7XHJcblx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdC8vIOWmguaenOacqumAieS4re+8jOWImeaJp+ihjOW8gOW3pemAu+i+kVxyXG5cdFx0XHRcdFx0bGV0IG9yZGVyU2VsZWN0ID0gW3tcclxuXHRcdFx0XHRcdFx0b3JkZXJJZDogaXRlbS5pZCxcclxuXHRcdFx0XHRcdFx0b3JkZXJObzogaXRlbS5kYWEwMDFcclxuXHRcdFx0XHRcdH1dO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRsZXQgZWRpdERhdGUgPSB0aGlzLmZvcm1hdERhdGUobmV3IERhdGUoKSk7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdHRoaXMuJHBvc3Qoe1xyXG5cdFx0XHRcdFx0XHR1cmw6IFwiL01lc09yZGVyU2VsZWN0L0FkZFwiLFxyXG5cdFx0XHRcdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0XHRcdFx0bWFjaGluZU5vOiB0aGlzLm1hY2hpbmVObyxcclxuXHRcdFx0XHRcdFx0XHRlZGl0RGF0ZTogZWRpdERhdGUsXHJcblx0XHRcdFx0XHRcdFx0aXRlbTogb3JkZXJTZWxlY3RcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSkudGhlbihhc3luYyByZXMgPT4ge1xyXG5cdFx0XHRcdFx0XHRpZiAocmVzLmRhdGEudGJCaWxsTGlzdCkge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMuZ2V0V29tZGFhSXNTaG93KCk7XHJcblx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdFx0Ly8g6LCD55So5ZCO56uv5pa55rOV57uR5a6a5pWw6YeH5qCH5b+XXHJcblx0XHRcdFx0XHRcdFx0Y29uc3QgYmluZFN1Y2Nlc3MgPSBhd2FpdCB0aGlzLmJpbmREYXRhQ29sbGVjdGlvbkZsYWcoaXRlbS5kYWEwMDEpO1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdC8vIOe7keWumuaIkOWKn+WQjuWGjeaPkOekuuW8gOW3peaIkOWKn1xyXG5cdFx0XHRcdFx0XHRcdGlmIChiaW5kU3VjY2Vzcykge1xyXG5cdFx0XHRcdFx0XHRcdFx0dW5pLnNob3dUb2FzdCh7XHJcblx0XHRcdFx0XHRcdFx0XHRcdHRpdGxlOiAn5byA5bel5oiQ5YqfJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0aWNvbjogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMFxyXG5cdFx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdFxyXG5cdFx0XHQvLyDmlrDlop7vvJrnu5HlrprmlbDph4fmoIflv5fmlrnms5VcclxuXHRcdFx0YXN5bmMgYmluZERhdGFDb2xsZWN0aW9uRmxhZyhvcmRlck5vKSB7XHJcblx0XHRcdFx0dHJ5IHtcclxuXHRcdFx0XHRcdGNvbnN0IHJlcyA9IGF3YWl0IHRoaXMuJHBvc3Qoe1xyXG5cdFx0XHRcdFx0XHR1cmw6ICcvTWVzT3JkZXJTZWxlY3QvQWRkQnlTYycsXHJcblx0XHRcdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdFx0XHRtYWNoaW5lTm86IHRoaXMubWFjaGluZU5vLFxyXG5cdFx0XHRcdFx0XHRcdGVkaXREYXRlOiBlZGl0RGF0ZSxcclxuXHRcdFx0XHRcdFx0XHRpdGVtOiBvcmRlclNlbGVjdFxyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0aWYgKHJlcyAmJiByZXMuc3RhdHVzID09PSAwKSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKCfmlbDph4fmoIflv5fnu5HlrprmiJDlip8nKTtcclxuXHRcdFx0XHRcdFx0dGhpcy4kc2hvd01lc3NhZ2UoJ+aVsOmHh+agh+W/l+e7keWumuaIkOWKnycpO1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ+aVsOmHh+agh+W/l+e7keWumuWksei0pTonLCByZXMubWVzc2FnZSB8fCAn5pyq55+l6ZSZ6K+vJyk7XHJcblx0XHRcdFx0XHRcdHRoaXMuJHNob3dNZXNzYWdlKCfmlbDph4fmoIflv5fnu5HlrprlpLHotKUnKTtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0gY2F0Y2ggKGVycikge1xyXG5cdFx0XHRcdFx0Y29uc29sZS5lcnJvcign57uR5a6a5pWw6YeH5qCH5b+X6ZSZ6K+vOicsIGVycik7XHJcblx0XHRcdFx0XHR0aGlzLiRzaG93TWVzc2FnZSgn57uR5a6a5pWw6YeH5qCH5b+X5aSx6LSlJyk7XHJcblx0XHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcclxuXHRcdFx0Ly8g5aSE55CG5pqC5YGc77yI5L2/55So5riF56m66YeN6YCJ55qE6YC76L6R77yJXHJcblx0XHRcdGFzeW5jIGhhbmRsZVBhdXNlV29yayhpdGVtKSB7XHJcblx0XHRcdFx0aWYgKCF0aGlzLm1hY2hpbmVObykge1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdC8vIOebtOaOpeeUqCBmbGFnIOWIpOaWrVxyXG5cdFx0XHRcdGlmICh0aGlzLmhhc0JpbmRlZEN1dHRlckZsYWcpIHtcclxuXHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHR0aXRsZTogJ+W9k+WJjeW3peWNleW3sue7keWumuWIgOWFt++8jOS4jeiDveaaguWBnCcsXHJcblx0XHRcdFx0XHRcdGljb246ICdlcnJvcicsXHJcblx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXHJcblx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRsZXQgZWRpdERhdGUgPSB0aGlzLmZvcm1hdERhdGUobmV3IERhdGUoKSk7XHJcblx0XHRcdFx0dGhpcy5zZWxlY3RlZEluZGV4cyA9IFtdO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0dGhpcy4kcG9zdCh7XHJcblx0XHRcdFx0XHR1cmw6IFwiL01lc09yZGVyU2VsZWN0L1JlbW92ZVwiLFxyXG5cdFx0XHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdFx0XHRtYWNoaW5lTm86IHRoaXMubWFjaGluZU5vLFxyXG5cdFx0XHRcdFx0XHRlZGl0RGF0ZTogZWRpdERhdGVcclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0fSkudGhlbihyZXMgPT4ge1xyXG5cdFx0XHRcdFx0aWYgKHJlcy5kYXRhLnRiQmlsbExpc3QgPiAwKSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuaXNTaG93VGFibGVEYXRhID0gW107XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiAn5bel5Y2V5bey5pqC5YGcJyxcclxuXHRcdFx0XHRcdFx0XHRpY29uOiAnc3VjY2VzcycsXHJcblx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDIwMDBcclxuXHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0Ly8g5pqC5YGc5oiQ5Yqf5ZCO77yM5Yi35paw5b2T5YmN6aG16Z2iXHJcblx0XHRcdFx0XHRcdHNldFRpbWVvdXQoKCkgPT4ge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucmVmcmVzaCgpO1xyXG5cdFx0XHRcdFx0XHR9LCA1MDApO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcdFxyXG5cdFx0XHQvLyDlkK/liqjoh6rliqjliLfmlrBcclxuXHRcdFx0c3RhcnRBdXRvUmVmcmVzaCgpIHtcclxuXHRcdFx0XHQvLyDlhYjmuIXpmaTnjrDmnInlrprml7blmahcclxuXHRcdFx0XHR0aGlzLnN0b3BBdXRvUmVmcmVzaCgpO1xyXG5cdFx0XHRcdC8vIOWPquWcqOW3peWNlemAieaLqemhtemdouWQr+WKqOWumuaXtuWIt+aWsFxyXG5cdFx0XHRcdGlmICh0aGlzLmN1cnJlbnRUYWIgPT09IDcpIHtcclxuXHRcdFx0XHRcdHRoaXMuYXV0b1JlZnJlc2hUaW1lciA9IHNldEludGVydmFsKCgpID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuY3VycmVudFRhYiA9PT0gNykge1xyXG5cdFx0XHRcdFx0XHRcdHRoaXMucmVmcmVzaCgpO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LCB0aGlzLmF1dG9SZWZyZXNoSW50ZXJ2YWwpO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0XHRcclxuXHRcdFx0Ly8g5YGc5q2i6Ieq5Yqo5Yi35pawXHJcblx0XHRcdHN0b3BBdXRvUmVmcmVzaCgpIHtcclxuXHRcdFx0XHRpZiAodGhpcy5hdXRvUmVmcmVzaFRpbWVyKSB7XHJcblx0XHRcdFx0XHRjbGVhckludGVydmFsKHRoaXMuYXV0b1JlZnJlc2hUaW1lcik7XHJcblx0XHRcdFx0XHR0aGlzLmF1dG9SZWZyZXNoVGltZXIgPSBudWxsO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fVxyXG5cdFx0fSxcclxuXHRcdGNvbXB1dGVkOiB7fVxyXG5cdH07XHJcbjwvc2NyaXB0PlxyXG5cclxuPHN0eWxlIGxhbmc9XCJzY3NzXCI+XHJcblxyXG4gICAgOmRlZXAoLmNoZWNrYm94KSxcclxuICAgIDpkZWVwKC5jaGVja2JveF9faW5uZXIpIHtcclxuICAgICAgICB3aWR0aDogNjBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIGhlaWdodDogNjBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIG1pbi13aWR0aDogNjBweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIG1pbi1oZWlnaHQ6IDYwcHggIWltcG9ydGFudDtcclxuICAgICAgICBwYWRkaW5nOiAxNnB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLnBvcHVwIC5sYXJnZS1zZWxlY3Rpb24tdGFibGUge1xyXG4gICAgICAgIHdpZHRoOiAxMDAlICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgdGFibGUtbGF5b3V0OiBhdXRvICFpbXBvcnRhbnQ7IC8vIOiuqeihqOagvOiHquWKqOWIhumFjeWuveW6plxyXG4gICAgfVxyXG5cclxuICAgIC5yb3ctc2VsZWN0ZWQge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNlMGYzZmYgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcblx0LmZvbnQge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzY2NjY2NjtcclxuXHRcdGhlaWdodDogMzBweDtcclxuXHRcdHdpZHRoOiAxMDB2dztcclxuXHR9XHJcblxyXG5cclxuXHQvKiDkuIrpg6jljLrln5/moLflvI/vvIzlt6Y3MCUg5Y+zMzAlICovXHJcblx0LnRvcC1zZWN0aW9uIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcclxuXHRcdG1hcmdpbi1ib3R0b206IDIwcHg7XHJcblx0XHRwYWRkaW5nOiAyMHB4IDEwcHg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogcm93O1xyXG5cdFx0ZmxleC13cmFwOiB3cmFwO1xyXG5cdFx0YWxpZ24tY29udGVudDogY2VudGVyO1xyXG5cdFx0YWxpZ24taXRlbXM6IHN0cmV0Y2g7XHJcblx0XHQvKiDlop7liqDkuIrkuIvnmoRwYWRkaW5nICovXHJcblx0fVxyXG5cclxuXHQucmlnaHQtc2lkZSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZjNmM2YzO1xyXG5cdFx0cGFkZGluZzogMTZweDtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDhweDtcclxuXHRcdHdpZHRoOiAyNSU7XHJcblx0XHRmb250LXNpemU6IDE0cHg7XHJcblx0fVxyXG5cclxuXHQuZm9ybS1yb3cge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHRcdG1hcmdpbi1ib3R0b206IDEuMnZoO1xyXG5cdH1cclxuXHJcblx0LmZvcm0taXRlbSB7XHJcblx0XHR3aWR0aDogMzAlO1xyXG5cdH1cclxuXHJcblx0LmlucCB7XHJcblx0XHR3aWR0aDogOTAlO1xyXG5cdFx0cGFkZGluZzogNHB4O1xyXG5cdFx0Ym9yZGVyOiAxcHggc29saWQgI2NjYztcclxuXHRcdGJvcmRlci1yYWRpdXM6IDRweDtcclxuXHRcdG1hcmdpbi10b3A6IDRweDtcclxuXHR9XHJcblxyXG5cdC5zdGF0dXMtYmxvY2sge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcblx0XHRhbGlnbi1pdGVtczogY2VudGVyO1xyXG5cdH1cclxuXHJcblx0LnN0YXR1cy1ibG9jayBwIHtcclxuXHRcdG1hcmdpbjogOHB4IDA7XHJcblx0XHRmb250LXNpemU6IDE2cHg7XHJcblx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHR9XHJcblxyXG5cdC5sZWZ0LXNpZGUge1xyXG5cdFx0d2lkdGg6IDY1JTtcclxuXHR9XHJcblxyXG5cdC50YWJsZS1yb3cge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuXHRcdHBhZGRpbmc6IDhweDtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICMwMDAwMDA7XHJcblx0XHRmb250LXNpemU6IDIwcHg7XHJcblx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHR9XHJcblxyXG5cdC50YWJsZS1jZWxsIHtcclxuXHRcdHdpZHRoOiA1MCU7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0fVxyXG5cclxuXHQvKiDljaHniYfmoLflvI8gKi9cclxuICAgIC5jYXJkIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbiAgICAgICAgYm94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICAgICAgICBwYWRkaW5nOiAwOyAvLyDljrvpmaTlpJrkvZnlhoXovrnot51cclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjVweDtcclxuICAgICAgICB3aWR0aDogMTAwJTsgLy8g5aGr5ruh54i25a655ZmoXHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgIH1cclxuXHJcbi8qICAgIC8vLmNvbnRlbnQge1xyXG4gICAgLy8gICAgZmxleDogMTtcclxuICAgIC8vICAgIHBhZGRpbmc6IDF2aCAxdnc7IC8vIOS/neivgeaVtOS9k+acieW3puWPs+eVmeeZvVxyXG4gICAgLy8gICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICAvLyAgICBmb250LXNpemU6IDEuNXZ3O1xyXG4gICAgLy99Ki9cclxuXHJcblx0Lyog5Y2h54mH5qCH6aKY5Zyo5bem5LiK6KeSICovXHJcblx0LmNhcmQtaGVhZGVyIHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdHRvcDogLTEwcHg7XHJcblx0XHRsZWZ0OiAxNnB4O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmZmZmZjtcclxuXHRcdHBhZGRpbmc6IDJweCA4cHg7XHJcblx0XHRib3JkZXItcmFkaXVzOiA0cHg7XHJcblx0XHRmb250LXdlaWdodDogYm9sZDtcclxuXHR9XHJcblxyXG5cdC8qIOS4remDqOWMuuWfn++8jOavj+ihjDPkuKrlrZfmrrUgKi9cclxuXHQuc3RhdHVzLXJvdyxcclxuXHQuY2hlY2stcm93IHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxMHB4O1xyXG5cdH1cclxuXHJcblx0LnN0YXR1cy1yb3cgbGFiZWwsXHJcblx0LmNoZWNrLXJvdyBsYWJlbCB7XHJcblx0XHR3aWR0aDogMzAlO1xyXG5cdFx0cGFkZGluZy1yaWdodDogMTBweDtcclxuXHRcdHRleHQtYWxpZ246IHJpZ2h0O1xyXG5cdH1cclxuXHJcblx0LnN0YXR1cy1yb3cgaW5wdXQsXHJcblx0LmNoZWNrLXJvdyBpbnB1dCB7XHJcblx0XHR3aWR0aDogNjUlO1xyXG5cdH1cclxuXHJcblx0Ly/ln7rnoYDmoLflvI9cclxuXHQuY29udGFpbmVyIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdH1cclxuXHJcblx0LnRhYi1iYXIge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGp1c3RpZnktY29udGVudDogc3BhY2UtYXJvdW5kO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2Y1ZjVmNTtcclxuXHRcdHBhZGRpbmc6IDF2aDtcclxuXHRcdHBhZGRpbmctdG9wOiAzMHB4O1xyXG5cdFx0Ym9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNjY2M7XHJcblx0fVxyXG5cclxuXHQudG9wLXJpZ2h0IHtcclxuXHRcdHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuXHRcdHRvcDogLTE1cHg7XHJcblx0XHRyaWdodDogNTBweDtcclxuXHRcdHotaW5kZXg6IDEwMDA7XHJcblx0fVxyXG5cclxuXHQucmVmcmVzaC1idG4ge1xyXG5cdFx0cGFkZGluZzogMTBweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICMwMEEyRTk7XHJcblx0XHRjb2xvcjogd2hpdGU7XHJcblx0XHRib3JkZXI6IG5vbmU7XHJcblx0XHRmb250LXNpemU6IDIycHg7XHJcblx0XHRib3JkZXItcmFkaXVzOiA1cHg7XHJcblx0fVxyXG5cclxuXHQudGFiLWl0ZW0ge1xyXG5cdFx0ZmxleDogMTtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdG1hcmdpbi1yaWdodDogMC41dnc7XHJcblx0XHRwYWRkaW5nOiAxdmg7XHJcblx0XHRib3JkZXItcmFkaXVzOiAwLjV2dztcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcblx0XHRjb2xvcjogIzAwN2FmZjtcclxuXHRcdGN1cnNvcjogcG9pbnRlcjtcclxuXHRcdGZvbnQtc2l6ZTogMjJweDtcclxuXHRcdGZvbnQtd2VpZ2h0OiA1MDA7XHJcblx0XHR0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kLWNvbG9yIDAuM3MsIGNvbG9yIDAuM3M7XHJcblx0XHRib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG5cdH1cclxuXHJcblx0LnRhYi1pdGVtLmFjdGl2ZSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDA3YWZmO1xyXG5cdFx0Y29sb3I6ICNmZmY7XHJcblx0XHRmb250LXdlaWdodDogNjAwO1xyXG5cdFx0Ym94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEoMCwgMTIyLCAyNTUsIDAuMyk7XHJcblx0fVxyXG5cclxuXHQuY29udGVudCB7XHJcblx0XHRmbGV4OiAxO1xyXG5cdFx0cGFkZGluZzogMXZoIDF2dztcclxuXHRcdGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG5cdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdH1cclxuXHJcbiAgICAucGlja2VyIHtcclxuICAgICAgICBmbG9hdDogbGVmdDtcclxuICAgICAgICBtYXJnaW4tdG9wOiA3cHg7XHJcbiAgICAgICAgbWFyZ2luLWxlZnQ6IDEwcHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMzJweCAhaW1wb3J0YW50OyAvLyDlvLrliLblpKflrZfkvZPvvIzpgILphY3kvY7lr4bluqZcclxuICAgICAgICBtaW4taGVpZ2h0OiA2MHB4OyAvLyDorqnpgInmi6nmoYbpq5jluqbkuZ/lj5jlpKdcclxuICAgICAgICBsaW5lLWhlaWdodDogNjBweDtcclxuICAgICAgICBwYWRkaW5nOiA1LjVweCAxcHg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjsgLy8g6L+Z6YeM5pS55Li66JOd6ImyXHJcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgIzAwN2FmZjsgLy8g6L655qGG5Lmf5pS55Li66JOd6ImyXHJcbiAgICAgICAgY29sb3I6ICMwMDdhZmY7IC8vIOWtl+S9k+minOiJsuaUueS4uueZveiJsu+8jOS/neivgeWPr+ivu+aAp1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDZweDtcclxuICAgICAgICB0cmFuc2l0aW9uOiBiYWNrZ3JvdW5kIDAuMnM7XHJcbiAgICB9XHJcblxyXG4gICAgLnRoIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICAgICAgaGVpZ2h0OiA2dmg7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzU1NTtcclxuICAgICAgICBwYWRkaW5nOiA2cHggOHB4O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyog5Li76KGo5qC86L655qGG5qC35byPICovXHJcbiAgICB1bmktdGFibGUge1xyXG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNkMDAgIWltcG9ydGFudDtcclxuICAgICAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgYm9yZGVyLXNwYWNpbmc6IDAgIWltcG9ydGFudDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLnVuaS10aCwgLnVuaS10ZCB7XHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzU1NSAhaW1wb3J0YW50O1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZSAhaW1wb3J0YW50O1xyXG4gICAgICAgIHotaW5kZXg6IDEgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1pbnB1dCB7XHJcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDEuNDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgICAgICBtYXgtd2lkdGg6IDE4MHB4O1xyXG4gICAgICAgIG92ZXJmbG93LXdyYXA6IGJyZWFrLXdvcmQ7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDZweCA4cHg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIOiuvue9ruiDjOaZr+S4uumAj+aYjiAqL1xyXG4gICAgfVxyXG5cclxuXHQvKiDlupXpg6jkv53lrZjlkozlj5bmtojmjInpkq4gKi9cclxuICAgIC5ib3R0b20tc2VjdGlvbiB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAydmg7XHJcbiAgICAgICAgcGFkZGluZzogMnZoIDF2dztcclxuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4OyAvLyDlh4/lsI/pobbpg6jovrnot53vvIznoa7kv53mjInpkq7lnKjlvLnnqpflhoXmraPnoa7mmL7npLpcclxuICAgIH1cclxuXHJcblx0LnNhdmUtYnRuLFxyXG5cdC5jYW5jZWwtYnRuIHtcclxuXHRcdHdpZHRoOiA0OCU7XHJcblx0XHRwYWRkaW5nOiAxLjV2aDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICMwMGEyZTk7XHJcblx0XHRjb2xvcjogd2hpdGU7XHJcblx0XHRmb250LXNpemU6IDIycHg7XHJcblx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdFx0Ym9yZGVyOiBub25lO1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNHB4O1xyXG5cdFx0Ym94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuXHRcdHRyYW5zaXRpb246IGFsbCAwLjNzO1xyXG5cdH1cclxuXHRcclxuXHQuY2FuY2VsLWJ0biB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDBBMkU5O1xyXG5cdFx0Y29sb3I6IHdoaXRlO1xyXG5cdH1cclxuXHRcclxuXHQvKiDmk43kvZzmjInpkq7ljLrln58gKi9cclxuXHQub3BlcmF0aW9uLWJ0bnMge1xyXG5cdFx0ZGlzcGxheTogZmxleDtcclxuXHRcdGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHRcdGdhcDogMTBweDtcclxuXHR9XHJcblx0XHJcblx0Lyog5byA5bel5oyJ6ZKuICovXHJcblx0LnN0YXJ0LWJ0biB7XHJcblx0XHRwYWRkaW5nOiA4cHggMjBweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICMwMEEyRTk7XHJcblx0XHRjb2xvcjogd2hpdGU7XHJcblx0XHRmb250LXNpemU6IDE4cHg7XHJcblx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdFx0Ym9yZGVyOiBub25lO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNHB4O1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuM3M7XHJcblx0XHRib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAxNjIsIDIzMywgMC4yKTtcclxuXHR9XHJcblx0XHJcblx0LnN0YXJ0LWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDA5MmQ2O1xyXG5cdFx0Ym94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEoMCwgMTYyLCAyMzMsIDAuMyk7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XHJcblx0fVxyXG5cdFxyXG5cdC8qIOW8gOW3peaMiemSriAtIOmAieS4reeKtuaAge+8iOe7v+iJsu+8iSAqL1xyXG5cdC5zdGFydC1idG4tc2VsZWN0ZWQge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzUyYzQxYSAhaW1wb3J0YW50O1xyXG5cdFx0Ym94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoODIsIDE5NiwgMjYsIDAuMykgIWltcG9ydGFudDtcclxuXHR9XHJcblx0XHJcblx0LnN0YXJ0LWJ0bi1zZWxlY3RlZDpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjNDliMDE1ICFpbXBvcnRhbnQ7XHJcblx0XHRib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSg4MiwgMTk2LCAyNiwgMC40KSAhaW1wb3J0YW50O1xyXG5cdH1cclxuXHRcclxuXHQvKiDmmoLlgZzmjInpkq4gKi9cclxuXHQucGF1c2UtYnRuIHtcclxuXHRcdHBhZGRpbmc6IDhweCAyMHB4O1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2ZmNGQ0ZjtcclxuXHRcdGNvbG9yOiB3aGl0ZTtcclxuXHRcdGZvbnQtc2l6ZTogMThweDtcclxuXHRcdGZvbnQtd2VpZ2h0OiA1MDA7XHJcblx0XHRib3JkZXI6IG5vbmU7XHJcblx0XHRib3JkZXItcmFkaXVzOiA0cHg7XHJcblx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4zcztcclxuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDI1NSwgNzcsIDc5LCAwLjIpO1xyXG5cdH1cclxuXHRcclxuXHQucGF1c2UtYnRuOmhvdmVyOm5vdCg6ZGlzYWJsZWQpIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZjMzMzY7XHJcblx0XHRib3gtc2hhZG93OiAwIDRweCA4cHggcmdiYSgyNTUsIDc3LCA3OSwgMC4zKTtcclxuXHRcdHRyYW5zZm9ybTogdHJhbnNsYXRlWSgtMXB4KTtcclxuXHR9XHJcblx0XHJcblx0Lyog5oyJ6ZKu56aB55So54q25oCBICovXHJcblx0LnN0YXJ0LWJ0bjpkaXNhYmxlZCxcclxuXHQucGF1c2UtYnRuOmRpc2FibGVkIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNkOWQ5ZDkgIWltcG9ydGFudDtcclxuXHRcdGNvbG9yOiAjOTk5ICFpbXBvcnRhbnQ7XHJcblx0XHRjdXJzb3I6IG5vdC1hbGxvd2VkICFpbXBvcnRhbnQ7XHJcblx0XHRib3gtc2hhZG93OiBub25lICFpbXBvcnRhbnQ7XHJcblx0XHRvcGFjaXR5OiAwLjY7XHJcblx0fVxyXG5cclxuICAgIC5vdmVybGF5IHtcclxuICAgICAgICBwb3NpdGlvbjogZml4ZWQ7XHJcbiAgICAgICAgdG9wOiAwO1xyXG4gICAgICAgIGxlZnQ6IDA7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICAgICAgaGVpZ2h0OiAxMDAlO1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMCwgMCwgMCwgMC41KTtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogY2VudGVyO1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgei1pbmRleDogMjAwMDsgLy8g5aKe5Yqgei1pbmRleO+8jOehruS/neW8ueeql+WcqOWIt+aWsOaMiemSruS5i+S4ilxyXG4gICAgfVxyXG5cclxuICAgIC5wb3B1cCB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICAgICAgICBwYWRkaW5nOiAydmggMnZoIDh2aCAydmg7IC8vIOWinuWKoOW6lemDqOWGhei+uei3ne+8jOS4uuaMiemSrueVmeWHuuepuumXtFxyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcbiAgICAgICAgYm94LXNoYWRvdzogMCAwIDEwcHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgICAgIHdpZHRoOiA5MC4xNnZ3OyAvLyDljp/mnaXnmoQ5OHZ357yp5bCPOCUgKDk4dncgKiAwLjkyKVxyXG4gICAgICAgIGhlaWdodDogNjh2aDsgLy8g5Y6f5p2l55qEODV2aOe8qeWwjzIwJSAoODV2aCAqIDAuOClcclxuICAgICAgICBmb250LXNpemU6IDEuNnZ3O1xyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7IC8vIOehruS/neWGhei+uei3neS4jeW9seWTjeaAu+WwuuWvuFxyXG4gICAgfVxyXG5cclxuXHQucHJpbnQtYnRuIHtcclxuXHRcdGZsb2F0OiBsZWZ0O1xyXG5cdFx0bWFyZ2luLXRvcDogNHB4O1xyXG5cdFx0bWFyZ2luLWxlZnQ6IDEwcHg7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRmb250LXNpemU6IDIycHg7XHJcblx0XHRjb2xvcjogd2hpdGU7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDBBMkU5O1xyXG5cdFx0cGFkZGluZzogMHB4IDkwcHg7XHJcblx0XHRib3JkZXI6IDJweCBzb2xpZCAjMDBBMkU5O1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMC44dnc7XHJcblx0fVxyXG5cclxuICAgIC5tYWNoaW5lLW5hbWUtYm94IHtcclxuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjMDA3YWZmOyAvKiDok53oibLovrnmoYYgKi9cclxuICAgICAgICBib3JkZXItcmFkaXVzOiA4cHg7XHJcbiAgICAgICAgZm9udC1mYW1pbHk6IGZhbnRhc3k7XHJcbiAgICAgICAgZm9udC1zaXplOiAzM3B4O1xyXG4gICAgICAgIG1hcmdpbi10b3A6IDIwcHg7XHJcbiAgICAgICAgcGFkZGluZzogMTVweCAyOHB4OyAvKiDkuIrkuIsyMHB477yM5bem5Y+zNDhweO+8jOWinuWKoOWGhei+uei3nSAqL1xyXG4gICAgICAgIHdpZHRoOiAzMDBweDsgLyog5pu05a6977yM5L+d6K+B5YaF5a655a6M5pW05pi+56S6ICovXHJcbiAgICAgICAgaGVpZ2h0OiA3MHB4OyAvKiDlop7liqDpq5jluqYgKi9cclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xyXG4gICAgICAgIGJhY2tncm91bmQ6ICNmZmY7XHJcbiAgICAgICAgY29sb3I6ICMyMjI7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IGJvbGQ7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogbGVmdDtcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgIH1cclxuXHJcbi8qICAgIC8vdi1kZWVwIC5jaGVja2JveCB7XHJcbiAgICAvLyAgICBwYWRkaW5nOiAxMCAxMHB4O1xyXG4gICAgLy8gICAgd2lkdGg6IDI2cHg7XHJcbiAgICAvLyAgICBwYWRkaW5nLWxlZnQ6IDEycHg7XHJcbiAgICAvLyAgICBkaXNwbGF5OiB0YWJsZS1jZWxsO1xyXG4gICAgLy8gICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTtcclxuICAgIC8vICAgIGNvbG9yOiAjMzMzO1xyXG4gICAgLy8gICAgZm9udC13ZWlnaHQ6IDUwMDtcclxuICAgIC8vICAgIGJvcmRlci1ib3R0b206IDFweCAjZWJlZWY1IHNvbGlkO1xyXG4gICAgLy8gICAgZm9udC1zaXplOiAxNHB4O1xyXG4gICAgLy99Ki9cclxuXHJcbiAgICAucG9wdXAgLmNhcmQge1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDQwcHggIWltcG9ydGFudDsgLy8g5Y6f5p2lMjUwcHjvvIzmlLnkuLo0MHB477yM56m655m95piO5pi+5YeP5bCRXHJcbiAgICB9XHJcblxyXG5cdEBtZWRpYSBzY3JlZW4gYW5kIChtYXgtd2lkdGg6IDE5MjBweCkge1xyXG5cdFx0LnRhYi1pdGVtIHtcclxuXHRcdFx0Zm9udC1zaXplOiAyMnB4O1xyXG5cdFx0fVxyXG5cclxuXHRcdC5jb250ZW50IHtcclxuXHRcdFx0cGFkZGluZzogMXZ3O1xyXG5cdFx0XHRmb250LXNpemU6IDIycHg7XHJcblx0XHR9XHJcblxyXG5cdFx0LmZvcm0taW5wdXQge1xyXG5cdFx0XHRmb250LXNpemU6IDIycHg7XHJcblx0XHR9XHJcblx0fVxyXG5cclxuICAgIC51bmktdGQsXHJcbiAgICB0ZCB7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbCAhaW1wb3J0YW50OyAvLyDlhYHorrjoh6rliqjmjaLooYxcclxuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGwgIWltcG9ydGFudDsgLy8g5Y2V6K+NL+S4reaWh+mDveiDveaWreihjFxyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7IC8vIOihjOmrmOmAguW9k++8jOS+v+S6juWkmuihjOaYvuekulxyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsgLy8g5bGF5Lit5pi+56S677yI5aaC6ZyA5bem5a+56b2Q5Y+v5pS55Li6IGxlZnTvvIlcclxuICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOyAvLyDlnoLnm7TlsYXkuK1cclxuICAgICAgICBtYXgtd2lkdGg6IDE4MHB4OyAvLyDkv53mjIHljZXlhYPmoLzmnIDlpKflrr3luqZcclxuICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkOyAvLyDlhbzlrrnmgKfmm7Tlpb1cclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLyog6K6+572u6IOM5pmv5Li66YCP5piOICovXHJcbiAgICB9XHJcblxyXG4gICAgLy8g5by556qX5YaF6KGo5qC85qC35byP5LiO55Sf5Lqn5oql5bel6aG16Z2i5Y6G5Y+y5oql5bel6K6w5b2V6KGo5qC85LiA6Ie0XHJcbiAgICAucG9wdXAgLmxhcmdlLXNlbGVjdGlvbi10YWJsZSAudW5pLXRoLFxyXG4gICAgLnBvcHVwIC5sYXJnZS1zZWxlY3Rpb24tdGFibGUgLnVuaS10ZCB7XHJcbiAgICAgICAgcGFkZGluZzogNnB4IDhweDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgICAgICAgZm9udC1zaXplOiAyMnB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvKiDorr7nva7og4zmma/kuLrpgI/mmI4gKi9cclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjNTU1ICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC5wb3B1cCAubGFyZ2Utc2VsZWN0aW9uLXRhYmxlIC51bmktdGgge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgICAgIGNvbG9yOiBibGFjaztcclxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgIH1cclxuICAgIFxyXG4gICAgLyog5by556qX6KGo5qC85aSW5qGG57q/ICovXHJcbiAgICAucG9wdXAgLmxhcmdlLXNlbGVjdGlvbi10YWJsZSB7XHJcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgI2QwMCAhaW1wb3J0YW50O1xyXG4gICAgICAgIGJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGUgIWltcG9ydGFudDtcclxuICAgICAgICBib3JkZXItc3BhY2luZzogMCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5zZWxlY3QtYnRuIHtcclxuICAgICAgICB3aWR0aDogMTUwcHg7IC8vIOWOn+adpeeahDcwJSAoMTgwcHggKiAwLjcpXHJcbiAgICAgICAgaGVpZ2h0OiA3NXB4OyAvLyDljp/mnaXnmoQ2NSUgKDgwcHggKiAwLjY1KVxyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDsgLy8g5a2X5L2T5Lmf55Wl5aSnXHJcbiAgICAgICAgLy9mb250LXdlaWdodDogMjAwO1xyXG4gICAgICAgIGJvcmRlci1yYWRpdXM6IDEwcHg7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzAwQTJFOTtcclxuICAgICAgICBjb2xvcjogd2hpdGU7XHJcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgIzAwQTJFOTtcclxuICAgICAgICBtYXJnaW46IDAgYXV0bztcclxuICAgICAgICBkaXNwbGF5OiBibG9jaztcclxuICAgICAgICBib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgwLCAwLCAwLCAwLjEpO1xyXG4gICAgICAgIHRyYW5zaXRpb246IGFsbCAwLjNzO1xyXG4gICAgfVxyXG5cclxuICAgIC50b3Atc2VjdGlvbiB7XHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDIwcHggMTBweDtcclxuICAgIH1cclxuXHJcbiAgICAuZm9ybS1yb3cuYWxpZ24tcm93IHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICB3aWR0aDogMTAwJTtcclxuICAgIH1cclxuXHJcbiAgICAubWFjaGluZS1uYW1lLWJveCB7XHJcbiAgICAgICAgZmxleDogMSAxIDQ1JTtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDIwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tZ3JvdXAge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcclxuICAgICAgICBmbGV4OiAxIDEgNDUlO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogZmxleC1zdGFydDtcclxuICAgIH1cclxuXHJcbiAgICAub3JkZXItbGFiZWwge1xyXG4gICAgICAgIGZvbnQtZmFtaWx5OiBmYW50YXN5O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMTBweDtcclxuICAgICAgICBmbG9hdDogbm9uZTtcclxuICAgIH1cclxuXHJcbiAgICAucHJpbnQtYnRuIHtcclxuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC50b3AtcmlnaHQge1xyXG4gICAgICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTtcclxuICAgICAgICB0b3A6IC0zMHB4OyAvLyDlvoDkuIrnp7tcclxuICAgICAgICByaWdodDogMDtcclxuICAgICAgICB6LWluZGV4OiAxMDAwO1xyXG4gICAgfVxyXG5cclxuLyog5pS+5aSn6KGo5aS05ZKM6KGo5qC85YaF5a655a2X5L2TICovXHJcbiAgICAudGgsXHJcbiAgICAudW5pLXRoLFxyXG4gICAgdGgge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiA2MDA7XHJcbiAgICAgICAgbGV0dGVyLXNwYWNpbmc6IDFweDtcclxuICAgIH1cclxuXHJcbiAgICAucG9wdXAgLmxhcmdlLXNlbGVjdGlvbi10YWJsZSAudGgsXHJcbiAgICAucG9wdXAgLmxhcmdlLXNlbGVjdGlvbi10YWJsZSAudW5pLXRoLFxyXG4gICAgLnBvcHVwIC5sYXJnZS1zZWxlY3Rpb24tdGFibGUgdGgge1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIGNvbG9yOiBibGFjayAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuXHQvKiDpkojlr7kxMjgweDgwMOeahOW5s+adv+S9v+eUqOWqkuS9k+afpeivoui/m+ihjOmAgumFjSAqL1xyXG5cdEBtZWRpYSBzY3JlZW4gYW5kIChtaW4td2lkdGg6IDEyODBweCkgYW5kIChtYXgtd2lkdGg6IDE5MjBweCkge1xyXG5cdFx0LnJpZ2h0LXNpZGUge1xyXG5cdFx0XHR3aWR0aDogMzAlO1xyXG5cdFx0fVxyXG5cclxuXHRcdC5zYXZlLWJ0bixcclxuXHRcdC5jYW5jZWwtYnRuIHtcclxuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdFx0fVxyXG5cclxuXHRcdC5pbnAge1xyXG5cdFx0XHR3aWR0aDogODUlO1xyXG5cdFx0XHRmb250LXNpemU6IDE2cHg7XHJcblx0XHR9XHJcblxyXG5cdFx0LnN0YXR1cy1ibG9jayBwIHtcclxuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdFx0fVxyXG5cclxuXHRcdC51bmktdHIsXHJcblx0XHQudW5pLXRkIHtcclxuXHRcdFx0Zm9udC1zaXplOiAyMnB4O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcbjwvc3R5bGU+XHJcbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///52\n");
eval("/* WEBPACK VAR INJECTION */(function(__f__) {\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ 2);\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.default = void 0;\nvar _regenerator = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/regenerator */ 3));\nvar _asyncToGenerator2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/asyncToGenerator */ 9));\nvar _defineProperty2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/defineProperty */ 6));\nvar _WorkOrderStatus = _interopRequireDefault(__webpack_require__(/*! ../components/WorkOrderStatus.vue */ 53));\nvar _uniTable = _interopRequireDefault(__webpack_require__(/*! ../uni_modules/uni-table/components/uni-table/uni-table.vue */ 26));\nvar _mold = _interopRequireDefault(__webpack_require__(/*! ../components/mold.vue */ 58));\nvar _machine = _interopRequireDefault(__webpack_require__(/*! ../components/machine.vue */ 63));\nvar _WorkOrderPrint = _interopRequireDefault(__webpack_require__(/*! ../components/WorkOrderPrint.vue */ 68));\nvar _WorkOrder = _interopRequireDefault(__webpack_require__(/*! ../components/WorkOrder.vue */ 74));\nvar _Technology = _interopRequireDefault(__webpack_require__(/*! ../components/Technology.vue */ 79));\nvar _PDFShow = _interopRequireDefault(__webpack_require__(/*! ../components/PDFShow.vue */ 84));\nvar _PrintInit = _interopRequireDefault(__webpack_require__(/*! ../components/PrintInit.vue */ 89));\nvar _PrintTest = _interopRequireDefault(__webpack_require__(/*! ../components/PrintTest.vue */ 94));\nvar _EquipmentInspection = _interopRequireDefault(__webpack_require__(/*! ../components/EquipmentInspection.vue */ 99));\nvar _moldRecord = _interopRequireDefault(__webpack_require__(/*! ../pages/moldRecord.vue */ 115));\nvar _methods;\nvar _default = {\n  components: {\n    Technology: _Technology.default,\n    WorkOrder: _WorkOrder.default,\n    WorkOrderPrint: _WorkOrderPrint.default,\n    Machine: _machine.default,\n    Mold: _mold.default,\n    UniTable: _uniTable.default,\n    WorkOrderStatus: _WorkOrderStatus.default,\n    PDFShow: _PDFShow.default,\n    PrintInit: _PrintInit.default,\n    PrintTest: _PrintTest.default,\n    EquipmentInspection: _EquipmentInspection.default,\n    MoldRecord: _moldRecord.default\n  },\n  data: function data() {\n    var _ref;\n    return _ref = {\n      orderStatus: '',\n      // 默认全部\n      currentTab: 7,\n      productCode: '',\n      // 产品编码\n      productSpec: '',\n      // 产品规格\n\n      machineList: [],\n      machine: [],\n      engineeringNoList: [],\n      engineeringNoMapList: [],\n      engineeringNo: '',\n      machineNo: '',\n      machineName: '',\n      tableData: [],\n      isShowTableData: []\n    }, (0, _defineProperty2.default)(_ref, \"orderStatus\", '开工'), (0, _defineProperty2.default)(_ref, \"selectedOrder\", ''), (0, _defineProperty2.default)(_ref, \"orderId\", 0), (0, _defineProperty2.default)(_ref, \"selectedIndexs\", []), (0, _defineProperty2.default)(_ref, \"isShow\", false), (0, _defineProperty2.default)(_ref, \"autoRedirectTimer\", null), (0, _defineProperty2.default)(_ref, \"autoRedirectTime\", 5 * 60 * 1000), (0, _defineProperty2.default)(_ref, \"autoRefreshTimer\", null), (0, _defineProperty2.default)(_ref, \"autoRefreshInterval\", 60 * 1000), _ref;\n  },\n  created: function created() {\n    //调试使用的代码\n    // this.machineNo = uni.getStorageSync('machineNo');\n    // this.machineName = uni.getStorageSync('machineName');\n    //\n    // if (this.machineNo) {\n    //   this.getWomdaaIsShow();\n    // }\n\n    uni.clearStorageSync();\n    this.checkForUpdate();\n\n    //工控机使用的代码\n    this.getPrintInfo();\n  },\n  onLoad: function onLoad(options) {\n    this.getMachineList();\n  },\n  onShow: function onShow() {\n    this.refresh();\n    this.resetAutoRedirectTimer();\n    // 如果在工单选择页面,启动定时刷新\n    if (this.currentTab === 7) {\n      this.startAutoRefresh();\n    }\n  },\n  onHide: function onHide() {\n    // 页面隐藏时清除定时器\n    this.stopAutoRefresh();\n  },\n  methods: (_methods = {\n    onRowClick: function onRowClick(index) {\n      this.selectedIndexs = [index]; // 单选\n      // 手动触发 selectionChange 以同步复选框\n      this.selectionChange({\n        detail: {\n          index: index\n        }\n      });\n      // 重置自动跳转计时器\n      this.resetAutoRedirectTimer();\n    },\n    // 重置自动跳转计时器\n    resetAutoRedirectTimer: function resetAutoRedirectTimer() {\n      var _this = this;\n      // 清除现有的定时器\n      if (this.autoRedirectTimer) {\n        clearTimeout(this.autoRedirectTimer);\n        this.autoRedirectTimer = null;\n      }\n\n      // 除了主页(0)、工单选择页(7)、生产报工页(4)之外的页面才设置自动跳转\n      if (this.currentTab !== 0 && this.currentTab !== 7 && this.currentTab !== 4) {\n        this.autoRedirectTimer = setTimeout(function () {\n          // 跳转回主页\n          _this.currentTab = 0;\n          // 显示提示信息\n          uni.showToast({\n            title: '页面超时,自动返回主页',\n            icon: 'none',\n            duration: 2000\n          });\n        }, this.autoRedirectTime);\n      }\n    },\n    checkForUpdate: function checkForUpdate() {\n      var _this2 = this;\n      this.$post({\n        url: \"/DevMachine/getAppUpgradeInfo\",\n        data: {}\n      }).then(function (res) {\n        var newVersion = res.data.version;\n        var currentVersion = uni.getSystemInfoSync(); // 获取当前 APK 版本号\n\n        if (newVersion > currentVersion.appVersion) {\n          uni.showModal({\n            title: \"发现新版本\",\n            content: \"是否下载最新版本?\",\n            success: function success(modalRes) {\n              if (modalRes.confirm) {\n                _this2.downloadNewApk(res.data.apkUrl);\n              }\n            }\n          });\n          //this.downloadNewApk(res.data.apkUrl);\n          _this2.updateChecked = true; // 标记更新已检查过\n          //      // 如果有新版本,开始下载\n          //download(res.data.apkUrl);\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/index.vue:446\");\n              //plus.runtime.restart();\n              //plus.runtime.quit();\n              // uni.navigateBack()\n            }, function (e) {\n              __f__(\"error\", \"安装失败:\", e, \" at pages/index.vue:451\");\n            });\n          }\n        },\n        fail: function fail(err) {\n          __f__(\"error\", \"下载失败:\", err, \" at pages/index.vue:456\");\n          uni.showToast({\n            title: \"下载失败,请检查网络\",\n            icon: \"none\",\n            duration: 2000\n          });\n        }\n      });\n    },\n    refresh: function refresh() {\n      this.getMachineList();\n      this.getPrintInfo(); // getPrintInfo 完成后会自动调用 getWomdaaIsShow()\n      // 如果当前在工单选择页面,默认加载工单列表\n      if (this.currentTab === 7) {\n        // 根据当前绑定工单的状态决定默认筛选条件\n        var defaultStatus = '待开工、未开工、暂停';\n        if (this.isShowTableData.length > 0) {\n          var currentOrderStatus = this.isShowTableData[0].daa018;\n          if (currentOrderStatus === '开工') {\n            defaultStatus = '开工';\n          } else if (currentOrderStatus === '完工') {\n            defaultStatus = '完工';\n          }\n        }\n        this.engineeringNo = defaultStatus;\n        this.engineeringNoMapList = ['待开工、未开工、暂停', '开工', '完工'];\n        this.getWomdaaByStatus();\n      }\n    },\n    getPrintInfo: function getPrintInfo() {\n      var _this3 = this;\n      var mac = \"\";\n      mac = \"74:24:ca:4f:b7:4d\";\n      this.$post({\n        url: \"/DevMachine/GetDevMachineByPdaMac\",\n        data: {\n          pdaMac: mac\n        }\n      }).then(function (res) {\n        var devMachine = res.data.tbBillList;\n        _this3.machineNo = devMachine.machineNo;\n        _this3.machineName = \"调试模式:\" + _this3.machineNo + \"号齿轮机\";\n        uni.setStorageSync('machineNo', _this3.machineNo);\n        uni.setStorageSync('printMac', devMachine.printMac);\n        __f__(\"log\", devMachine.printMac, \" at pages/index.vue:507\");\n        _this3.getWomdaaIsShow();\n      });\n      return;\n\n      //  \t\t\tif (plus.os.name == \"Android\") {\n      //  \t\t\t\t//获取手机MAC地址\n      //  \t\t\t\tvar Context = plus.android.importClass(\"android.content.Context\");\n      //  \t\t\t\tvar WifiManager = plus.android.importClass(\"android.net.wifi.WifiManager\");\n      //  \t\t\t\tvar wifiManager = plus.android.runtimeMainActivity().getSystemService(Context.WIFI_SERVICE);\n      //  \t\t\t\tvar WifiInfo = plus.android.importClass(\"android.net.wifi.WifiInfo\");\n      //  \t\t\t\tvar wifiInfo = wifiManager.getConnectionInfo();\n      //  \t\t\t\tmac = wifiInfo.getMacAddress();\n\n      //  \t\t\t\t//如果mac为“02:00:00:00:00:00”,则可能是安卓6.0以上版本,则使用另一种方法获取mac地址\n      //  \t\t\t\tif (mac == \"02:00:00:00:00:00\") {\n      //  \t\t\t\t\tmac = this.getMacNew();\n      //  \t\t\t\t}\n      //  \t\t\t\t//如果mac使用新方法依然是“02:00:00:00:00:00”则不进行保存\n      //  \t\t\t\tif (mac == \"02:00:00:00:00:00\") {\n      //  \t\t\t\t\treturn;\n      //  \t\t\t\t}\n      //  \t\t\t\tuni.setStorageSync('pdaMac', mac);\n\n      //  \t\t\t\tthis.$post({\n      //  \t\t\t\t\turl: \"/DevMachine/GetDevMachineByPdaMac\",\n      //  \t\t\t\t\tdata: {\n      //  \t\t\t\t\t\tpdaMac: mac,\n      //  \t\t\t\t\t}\n      //  \t\t\t\t}).then(res => {\n      //  \t\t\t\t\tlet devMachine = res.data.tbBillList;\n      //  \t\t\t\t\tthis.machineNo = devMachine.machineNo;\n      //  \t\t\t\t\tthis.machineName = \"当前机台:\" + this.machineNo + \"号齿轮机\";\n\n      //  \t\t\t\t\tuni.setStorageSync('machineNo', this.machineNo);\n      //  \t\t\t\t\tuni.setStorageSync('printMac', devMachine.printMac);\n\n      //  \t\t\t\t\tthis.getWomdaaIsShow();\n\n      //  \t\t\t\t});\n      //  \t\t\t}\n    },\n    save: function save() {\n      var _this4 = this;\n      var data = this.selectedItems();\n      if (data.length === 0) {\n        this.$showMessage(\"请选择一个工单\");\n        return;\n      }\n      if (data.length > 1) {\n        this.$showMessage(\"一次只能选取一个工单\");\n        return;\n      }\n\n      //let firstValue = data[0][\"moldId\"]; // 获取第一个对象的指定属性值\n\n      //// 使用 every 方法检查所有对象的该属性值是否一致\n      //let flag = data.every(item => item[\"moldId\"] === firstValue);\n      //if (!flag) {\n      //\tthis.$showMessage(\"选取的\" + data.length + \"个工单中的模具编号不一致\");\n      //\treturn;\n      //}\n\n      var orderSelect = [];\n      data.forEach(function (s) {\n        var entity = {\n          orderId: s.id,\n          orderNo: s.daa001\n        };\n        orderSelect.push(entity);\n      });\n      var editDate = this.formatDate(new Date());\n      this.$post({\n        url: \"/MesOrderSelect/Add\",\n        data: {\n          machineNo: this.machineNo,\n          editDate: editDate,\n          item: orderSelect\n        }\n      }).then(function (res) {\n        if (res.data.tbBillList) {\n          _this4.getWomdaaIsShow();\n          uni.showToast({\n            title: '保存工单成功',\n            //title: '将注塑机开合模数清0',\n            //将值设置为 success 或者直接不用写icon这个参数\n            icon: 'success',\n            //显示持续时间为 5秒\n            duration: 5000\n          });\n        }\n        _this4.isShow = false;\n      });\n    },\n    getMacNew: function getMacNew() {\n      var str = \"\";\n      try {\n        if (plus.os.name == \"Android\") {\n          var NetworkInterface = plus.android.importClass(\"java.net.NetworkInterface\");\n          var networkInterface = NetworkInterface.getByName(\"wlan0\");\n          var bytes = networkInterface.getHardwareAddress();\n\n          //将byte[] 转换成 String\n          for (var i = 0; i < bytes.length; i++) {\n            var tmp = \"\";\n            var num = bytes[i];\n            if (num < 0) {\n              tmp = (255 + num + 1).toString(16);\n            } else {\n              tmp = num.toString(16);\n            }\n            if (tmp.length == 1) {\n              tmp = \"0\" + tmp;\n            }\n            str += i == 0 ? tmp : \":\" + tmp;\n          }\n        }\n      } catch (err) {\n        str = \"02:00:00:00:00:00\";\n      }\n      return str;\n    },\n    cancel: function cancel() {\n      var _this5 = this;\n      if (!this.machineNo) {\n        return;\n      }\n\n      // 直接用 flag 判断\n      if (this.hasBindedCutterFlag) {\n        uni.showToast({\n          title: '当前工单已绑定刀具,不能清空重选',\n          icon: 'error',\n          duration: 2000\n        });\n        return;\n      }\n      var editDate = this.formatDate(new Date());\n      this.selectedIndexs = [];\n      this.$post({\n        url: \"/MesOrderSelect/Remove\",\n        data: {\n          machineNo: this.machineNo,\n          editDate: editDate\n        }\n      }).then(function (res) {\n        if (res.data.tbBillList > 0) {\n          _this5.isShowTableData = [];\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      return \"\".concat(year, \"-\").concat(month, \"-\").concat(day); // 返回格式化后的字符串\n    },\n    selectionChange: function selectionChange(e) {\n      // 单选直接赋值\n      this.selectedIndexs = [e.detail.index];\n    },\n    selectedItems: function selectedItems() {\n      var _this6 = this;\n      return this.selectedIndexs.map(function (i) {\n        return _this6.tableData[i];\n      });\n    },\n    changeTab: function changeTab(index) {\n      this.currentTab = index;\n      // 当切换到工单选择页面(index === 7)时自动刷新\n      if (index === 7) {\n        this.refresh();\n        // 启动定时刷新\n        this.startAutoRefresh();\n      } else {\n        // 离开工单选择页面时停止定时刷新\n        this.stopAutoRefresh();\n      }\n      // 重置自动跳转计时器\n      this.resetAutoRedirectTimer();\n      __f__(\"log\", index, \" at pages/index.vue:698\");\n    },\n    onMachineChange: function onMachineChange(event) {\n      this.machineName = event;\n      this.machineNo = this.machine[this.machineList.indexOf(event)].machineNo;\n      uni.clearStorageSync();\n      uni.setStorageSync('machineNo', this.machineNo);\n      uni.setStorageSync('machineName', this.machineName);\n      this.getWomdaaIsShow();\n    },\n    onEngineeringNoChange: function onEngineeringNoChange(event) {\n      var orde = this.engineeringNoList[this.engineeringNoMapList.indexOf(event)];\n      this.engineeringNo = orde.moldId;\n      this.getWomdaa();\n    },\n    getMachineList: function getMachineList() {\n      var _this7 = this;\n      this.$post({\n        url: \"/MesMachine/GetInjectionMachine\"\n      }).then(function (res) {\n        _this7.machine = res.data.tbBillList;\n        _this7.machineList = _this7.machine.map(function (s) {\n          return s.machineName;\n        });\n      });\n    },\n    //获取表格的数据源\n    getWomdaaIsShow: function getWomdaaIsShow() {\n      var _this8 = this;\n      this.$post({\n        url: \"/Womdaa/GetWomdaasByShow\",\n        data: {\n          machineNo: this.machineNo\n        }\n      }).then(function (res) {\n        _this8.isShowTableData = res.data.tbBillList;\n\n        // 只判断第一条(只允许一条工单)\n        var order = _this8.isShowTableData[0];\n        var hasBindedCutter = false;\n        if (order) {\n          hasBindedCutter = order.outToolId && order.outToolId.toString().trim() !== '' || order.outToolCode && order.outToolCode.trim() !== '' || order.outToolName && order.outToolName.trim() !== '';\n        }\n        // 存储到 data 变量\n        _this8.hasBindedCutterFlag = hasBindedCutter;\n        if (_this8.isShowTableData.length == 1) {\n          uni.setStorageSync('daa001', _this8.isShowTableData[0].daa001);\n          uni.setStorageSync('id', _this8.isShowTableData[0].id);\n        }\n      });\n    },\n    isShowTab: function isShowTab() {\n      if (this.isShowTableData.length > 0) {\n        uni.showToast({\n          title: '已有正在操作的工单,不能再次选择',\n          icon: 'error',\n          duration: 2000\n        });\n        return;\n      }\n      this.isShow = true;\n      // 默认选中“待开工”\n      this.engineeringNo = '待开工、未开工、暂停';\n      this.tableData = [];\n      // 下拉框只显示合并后的状态和其它状态\n      this.engineeringNoMapList = ['待开工、未开工、暂停', '开工', '完工'];\n      // 默认显示“待开工”工单\n      this.getWomdaaByStatus();\n    }\n  }, (0, _defineProperty2.default)(_methods, \"onEngineeringNoChange\", function onEngineeringNoChange(status) {\n    this.engineeringNo = status;\n    this.getWomdaaByStatus();\n  }), (0, _defineProperty2.default)(_methods, \"getWomdaa\", function getWomdaa() {\n    var _this9 = this;\n    var editDate = this.formatDate(new Date());\n    this.$post({\n      url: \"/Womdaa/GetWomdaasByMachine\",\n      data: {\n        machineNo: this.machineNo,\n        editDate: editDate\n      }\n    }).then(function (res) {\n      _this9.tableData = res.data.tbBillList;\n    });\n  }), (0, _defineProperty2.default)(_methods, \"getWomdaaByStatus\", function getWomdaaByStatus() {\n    var _this10 = this;\n    var editDate = this.formatDate(new Date());\n    var statusArr = [];\n    if (this.engineeringNo === '待开工、未开工、暂停') {\n      statusArr = ['待开工', '未开工', '暂停'];\n    } else {\n      statusArr = [this.engineeringNo];\n    }\n    this.$post({\n      url: \"/Womdaa/GetWomdaasByEngineeringNo\",\n      data: {\n        machineNo: this.machineNo,\n        orderStatus: statusArr,\n        editDate: editDate\n      }\n    }).then(function (res) {\n      _this10.tableData = res.data.tbBillList;\n    });\n  }), (0, _defineProperty2.default)(_methods, \"toDetail\", function toDetail(item) {\n    this.orderId = item.id;\n    this.selectedOrder = item.daa001;\n    this.productCode = item.daa002; // 产品编码\n    this.productSpec = item.daa004; // 产品规格\n    this.currentTab = 0;\n  }), (0, _defineProperty2.default)(_methods, \"getStartBtnClass\", function getStartBtnClass(item) {\n    var isSelected = this.isShowTableData.length > 0 && this.isShowTableData[0].daa001 === item.daa001;\n    if (isSelected) {\n      return 'start-btn start-btn-selected'; // 当前选中的工单,绿色\n    }\n\n    return 'start-btn';\n  }), (0, _defineProperty2.default)(_methods, \"isStartBtnDisabled\", function isStartBtnDisabled(item) {\n    // 如果已经有选中的工单,且当前项不是选中的工单,则禁用\n    if (this.isShowTableData.length > 0 && this.isShowTableData[0].daa001 !== item.daa001) {\n      return true;\n    }\n    return false;\n  }), (0, _defineProperty2.default)(_methods, \"isPauseBtnDisabled\", function isPauseBtnDisabled(item) {\n    // 如果已经有选中的工单,且当前项不是选中的工单,则禁用\n    if (this.isShowTableData.length > 0 && this.isShowTableData[0].daa001 !== item.daa001) {\n      return true;\n    }\n    // 如果还没有选中任何工单,也禁用暂停按钮\n    if (this.isShowTableData.length === 0) {\n      return true;\n    }\n    return false;\n  }), (0, _defineProperty2.default)(_methods, \"getStartBtnText\", function getStartBtnText(item) {\n    var isSelected = this.isShowTableData.length > 0 && this.isShowTableData[0].daa001 === item.daa001;\n    if (isSelected) {\n      // 检查是否有调机时间\n      if (this.isShowTableData[0].maShoutTime) {\n        return '转跳报工界面';\n      } else {\n        return '转跳上下刀界面';\n      }\n    }\n    return '开工';\n  }), (0, _defineProperty2.default)(_methods, \"handleStartWork\", function handleStartWork(item) {\n    var _this11 = this;\n    return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee2() {\n      var isSelected, orderSelect, editDate;\n      return _regenerator.default.wrap(function _callee2$(_context2) {\n        while (1) {\n          switch (_context2.prev = _context2.next) {\n            case 0:\n              // 判断当前工单是否已选中\n              isSelected = _this11.isShowTableData.length > 0 && _this11.isShowTableData[0].daa001 === item.daa001;\n              if (isSelected) {\n                // 如果已选中,先跳转到主界面\n                _this11.toDetail(item);\n\n                // 延迟跳转:根据是否有调机时间决定跳转到哪个界面\n                setTimeout(function () {\n                  if (_this11.isShowTableData[0].maShoutTime) {\n                    // 有调机时间,跳转到报工界面\n                    _this11.currentTab = 4;\n                  } else {\n                    // 没有调机时间,跳转到上下刀界面\n                    _this11.currentTab = 2;\n                  }\n                }, 100);\n              } else {\n                // 如果未选中,则执行开工逻辑\n                orderSelect = [{\n                  orderId: item.id,\n                  orderNo: item.daa001\n                }];\n                editDate = _this11.formatDate(new Date());\n                _this11.$post({\n                  url: \"/MesOrderSelect/Add\",\n                  data: {\n                    machineNo: _this11.machineNo,\n                    editDate: editDate,\n                    item: orderSelect\n                  }\n                }).then( /*#__PURE__*/function () {\n                  var _ref2 = (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee(res) {\n                    var bindSuccess;\n                    return _regenerator.default.wrap(function _callee$(_context) {\n                      while (1) {\n                        switch (_context.prev = _context.next) {\n                          case 0:\n                            if (!res.data.tbBillList) {\n                              _context.next = 6;\n                              break;\n                            }\n                            _this11.getWomdaaIsShow();\n\n                            // 调用后端方法绑定数采标志\n                            _context.next = 4;\n                            return _this11.bindDataCollectionFlag(item.daa001);\n                          case 4:\n                            bindSuccess = _context.sent;\n                            // 绑定成功后再提示开工成功\n                            if (bindSuccess) {\n                              uni.showToast({\n                                title: '开工成功',\n                                icon: 'success',\n                                duration: 2000\n                              });\n                            }\n                          case 6:\n                          case \"end\":\n                            return _context.stop();\n                        }\n                      }\n                    }, _callee);\n                  }));\n                  return function (_x) {\n                    return _ref2.apply(this, arguments);\n                  };\n                }());\n              }\n            case 2:\n            case \"end\":\n              return _context2.stop();\n          }\n        }\n      }, _callee2);\n    }))();\n  }), (0, _defineProperty2.default)(_methods, \"bindDataCollectionFlag\", function bindDataCollectionFlag(orderNo) {\n    var _this12 = this;\n    return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee3() {\n      var res;\n      return _regenerator.default.wrap(function _callee3$(_context3) {\n        while (1) {\n          switch (_context3.prev = _context3.next) {\n            case 0:\n              _context3.prev = 0;\n              _context3.next = 3;\n              return _this12.$post({\n                url: '/MesOrderDataCollection/BindDataCollectionFlag',\n                data: {\n                  machineNo: _this12.machineNo,\n                  orderNo: orderNo\n                }\n              });\n            case 3:\n              res = _context3.sent;\n              if (!(res && res.status === 0)) {\n                _context3.next = 10;\n                break;\n              }\n              __f__(\"log\", '数采标志绑定成功', \" at pages/index.vue:941\");\n              _this12.$showMessage('数采标志绑定成功');\n              return _context3.abrupt(\"return\", true);\n            case 10:\n              __f__(\"error\", '数采标志绑定失败:', res.message || '未知错误', \" at pages/index.vue:945\");\n              _this12.$showMessage('数采标志绑定失败');\n              return _context3.abrupt(\"return\", false);\n            case 13:\n              _context3.next = 20;\n              break;\n            case 15:\n              _context3.prev = 15;\n              _context3.t0 = _context3[\"catch\"](0);\n              __f__(\"error\", '绑定数采标志错误:', _context3.t0, \" at pages/index.vue:950\");\n              _this12.$showMessage('绑定数采标志失败');\n              return _context3.abrupt(\"return\", false);\n            case 20:\n            case \"end\":\n              return _context3.stop();\n          }\n        }\n      }, _callee3, null, [[0, 15]]);\n    }))();\n  }), (0, _defineProperty2.default)(_methods, \"handlePauseWork\", function handlePauseWork(item) {\n    var _this13 = this;\n    return (0, _asyncToGenerator2.default)( /*#__PURE__*/_regenerator.default.mark(function _callee4() {\n      var editDate;\n      return _regenerator.default.wrap(function _callee4$(_context4) {\n        while (1) {\n          switch (_context4.prev = _context4.next) {\n            case 0:\n              if (_this13.machineNo) {\n                _context4.next = 2;\n                break;\n              }\n              return _context4.abrupt(\"return\");\n            case 2:\n              if (!_this13.hasBindedCutterFlag) {\n                _context4.next = 5;\n                break;\n              }\n              uni.showToast({\n                title: '当前工单已绑定刀具,不能暂停',\n                icon: 'error',\n                duration: 2000\n              });\n              return _context4.abrupt(\"return\");\n            case 5:\n              editDate = _this13.formatDate(new Date());\n              _this13.selectedIndexs = [];\n              _this13.$post({\n                url: \"/MesOrderSelect/Remove\",\n                data: {\n                  machineNo: _this13.machineNo,\n                  editDate: editDate\n                }\n              }).then(function (res) {\n                if (res.data.tbBillList > 0) {\n                  _this13.isShowTableData = [];\n                  uni.showToast({\n                    title: '工单已暂停',\n                    icon: 'success',\n                    duration: 2000\n                  });\n\n                  // 暂停成功后,刷新当前页面\n                  setTimeout(function () {\n                    _this13.refresh();\n                  }, 500);\n                }\n              });\n            case 8:\n            case \"end\":\n              return _context4.stop();\n          }\n        }\n      }, _callee4);\n    }))();\n  }), (0, _defineProperty2.default)(_methods, \"startAutoRefresh\", function startAutoRefresh() {\n    var _this14 = this;\n    // 先清除现有定时器\n    this.stopAutoRefresh();\n    // 只在工单选择页面启动定时刷新\n    if (this.currentTab === 7) {\n      this.autoRefreshTimer = setInterval(function () {\n        if (_this14.currentTab === 7) {\n          _this14.refresh();\n        }\n      }, this.autoRefreshInterval);\n    }\n  }), (0, _defineProperty2.default)(_methods, \"stopAutoRefresh\", function stopAutoRefresh() {\n    if (this.autoRefreshTimer) {\n      clearInterval(this.autoRefreshTimer);\n      this.autoRefreshTimer = null;\n    }\n  }), _methods),\n  computed: {}\n};\nexports.default = _default;\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./node_modules/@dcloudio/vue-cli-plugin-uni/lib/format-log.js */ 1)[\"default\"]))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInVuaS1hcHA6Ly8vcGFnZXMvaW5kZXgudnVlIl0sIm5hbWVzIjpbImNvbXBvbmVudHMiLCJUZWNobm9sb2d5IiwiV29ya09yZGVyIiwiV29ya09yZGVyUHJpbnQiLCJNYWNoaW5lIiwiTW9sZCIsIlVuaVRhYmxlIiwiV29ya09yZGVyU3RhdHVzIiwiUERGU2hvdyIsIlByaW50SW5pdCIsIlByaW50VGVzdCIsIkVxdWlwbWVudEluc3BlY3Rpb24iLCJNb2xkUmVjb3JkIiwiZGF0YSIsIm9yZGVyU3RhdHVzIiwiY3VycmVudFRhYiIsInByb2R1Y3RDb2RlIiwicHJvZHVjdFNwZWMiLCJtYWNoaW5lTGlzdCIsIm1hY2hpbmUiLCJlbmdpbmVlcmluZ05vTGlzdCIsImVuZ2luZWVyaW5nTm9NYXBMaXN0IiwiZW5naW5lZXJpbmdObyIsIm1hY2hpbmVObyIsIm1hY2hpbmVOYW1lIiwidGFibGVEYXRhIiwiaXNTaG93VGFibGVEYXRhIiwiY3JlYXRlZCIsInVuaSIsIm9uTG9hZCIsIm9uU2hvdyIsIm9uSGlkZSIsIm1ldGhvZHMiLCJvblJvd0NsaWNrIiwiZGV0YWlsIiwiaW5kZXgiLCJyZXNldEF1dG9SZWRpcmVjdFRpbWVyIiwiY2xlYXJUaW1lb3V0IiwidGl0bGUiLCJpY29uIiwiZHVyYXRpb24iLCJjaGVja0ZvclVwZGF0ZSIsInVybCIsImNvbnRlbnQiLCJzdWNjZXNzIiwiZG93bmxvYWROZXdBcGsiLCJwbHVzIiwiZm9yY2UiLCJmYWlsIiwicmVmcmVzaCIsImRlZmF1bHRTdGF0dXMiLCJnZXRQcmludEluZm8iLCJtYWMiLCJwZGFNYWMiLCJzYXZlIiwib3JkZXJJZCIsIm9yZGVyTm8iLCJvcmRlclNlbGVjdCIsImVkaXREYXRlIiwiaXRlbSIsImdldE1hY05ldyIsInRtcCIsInN0ciIsImNhbmNlbCIsImZvcm1hdERhdGUiLCJzZWxlY3Rpb25DaGFuZ2UiLCJzZWxlY3RlZEl0ZW1zIiwiY2hhbmdlVGFiIiwib25NYWNoaW5lQ2hhbmdlIiwib25FbmdpbmVlcmluZ05vQ2hhbmdlIiwiZ2V0TWFjaGluZUxpc3QiLCJnZXRXb21kYWFJc1Nob3ciLCJoYXNCaW5kZWRDdXR0ZXIiLCJvcmRlciIsImlzU2hvd1RhYiIsInN0YXR1cyIsInN0YXR1c0FyciIsImlzU2VsZWN0ZWQiLCJzZXRUaW1lb3V0IiwicmVzIiwiYmluZFN1Y2Nlc3MiLCJjbGVhckludGVydmFsIiwiY29tcHV0ZWQiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFnUkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQUE7QUFBQSxlQUVBO0VBQ0FBO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0lBQ0FDO0VBQ0E7RUFDQUM7SUFBQTtJQUNBO01BQ0FDO01BQUE7TUFDQUM7TUFFQUM7TUFBQTtNQUNBQztNQUFBOztNQUVBQztNQUVBQztNQUVBQztNQUNBQztNQUNBQztNQUVBQztNQUNBQztNQUVBQztNQUNBQztJQUFBLHNEQUVBLDREQUNBLG9EQUNBLDBEQUVBLG1EQUVBLGlFQUdBLCtEQUNBLHdFQUdBLGtFQUNBO0VBRUE7RUFDQUM7SUFFQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTs7SUFFQUM7SUFFQTs7SUFFQTtJQUNBO0VBRUE7RUFDQUM7SUFDQTtFQUNBO0VBQ0FDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7TUFDQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQTtJQUNBO0VBQ0E7RUFDQUM7SUFDQUM7TUFDQTtNQUNBO01BQ0E7UUFBQUM7VUFBQUM7UUFBQTtNQUFBO01BQ0E7TUFDQTtJQUNBO0lBRUE7SUFDQUM7TUFBQTtNQUNBO01BQ0E7UUFDQUM7UUFDQTtNQUNBOztNQUVBO01BQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBVDtZQUNBVTtZQUNBQztZQUNBQztVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQUE7TUFDQTtRQUNBQztRQUNBN0I7TUFDQTtRQUVBO1FBQ0E7O1FBRUE7VUFDQWU7WUFDQVU7WUFDQUs7WUFDQUM7Y0FDQTtnQkFDQTtjQUNBO1lBQ0E7VUFDQTtVQUNBO1VBQ0E7VUFDQTtVQUNBO1FBQ0E7TUFDQTtJQUVBO0lBRUFDO01BQ0FqQjtRQUNBVTtRQUNBQztRQUNBQztNQUNBO01BRUFaO1FBQ0FjO1FBQ0FFO1VBQ0E7WUFDQUU7Y0FDQUM7WUFDQTtjQUNBO2NBQ0E7Y0FDQTtjQUNBO1lBQ0E7Y0FDQTtZQUNBO1VBQ0E7UUFDQTtRQUNBQztVQUNBO1VBQ0FwQjtZQUNBVTtZQUNBQztZQUNBQztVQUNBO1FBQ0E7TUFDQTtJQUNBO0lBRUFTO01BQ0E7TUFDQTtNQUNBO01BQ0E7UUFDQTtRQUNBO1FBQ0E7VUFDQTtVQUNBO1lBQ0FDO1VBQ0E7WUFDQUE7VUFDQTtRQUNBO1FBQ0E7UUFDQSw2QkFDQSxjQUNBLE1BQ0EsS0FDQTtRQUNBO01BQ0E7SUFDQTtJQUNBQztNQUFBO01BQ0E7TUFFQUM7TUFDQTtRQUNBVjtRQUNBN0I7VUFDQXdDO1FBQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtRQUVBekI7UUFDQUE7UUFFQTtRQUVBO01BQ0E7TUFDQTs7TUFHQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBOztNQUVBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTs7TUFFQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0E7O01BRUE7TUFDQTs7TUFHQTs7TUFFQTtNQUNBO0lBQ0E7SUFDQTBCO01BQUE7TUFDQTtNQUVBO1FBQ0E7UUFDQTtNQUNBO01BRUE7UUFDQTtRQUNBO01BQ0E7O01BRUE7O01BRUE7TUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBOztNQUVBO01BRUF6QztRQUNBO1VBQ0EwQztVQUNBQztRQUNBO1FBQ0FDO01BQ0E7TUFFQTtNQUVBO1FBQ0FmO1FBQ0E3QjtVQUNBVTtVQUNBbUM7VUFDQUM7UUFDQTtNQUNBO1FBQ0E7VUFDQTtVQUNBL0I7WUFDQVU7WUFDQTtZQUNBO1lBQ0FDO1lBQ0E7WUFDQUM7VUFDQTtRQUNBO1FBQ0E7TUFDQTtJQUVBO0lBQ0FvQjtNQUNBO01BQ0E7UUFDQTtVQUNBO1VBQ0E7VUFDQTs7VUFFQTtVQUNBO1lBQ0E7WUFDQTtZQUNBO2NBQ0FDO1lBQ0E7Y0FDQUE7WUFDQTtZQUNBO2NBQ0FBO1lBQ0E7WUFDQUM7VUFDQTtRQUNBO01BQ0E7UUFDQUE7TUFDQTtNQUNBO0lBQ0E7SUFFQUM7TUFBQTtNQUNBO1FBQ0E7TUFDQTs7TUFFQTtNQUNBO1FBQ0FuQztVQUNBVTtVQUNBQztVQUNBQztRQUNBO1FBQ0E7TUFDQTtNQUVBO01BQ0E7TUFFQTtRQUNBRTtRQUNBN0I7VUFDQVU7VUFDQW1DO1FBQ0E7TUFDQTtRQUNBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7SUFFQU07TUFDQTtNQUNBO01BQ0E7TUFDQTtJQUNBO0lBQ0FDO01BQ0E7TUFDQTtJQUNBO0lBRUFDO01BQUE7TUFDQTtRQUFBO01BQUE7SUFDQTtJQUdBQztNQUNBO01BQ0E7TUFDQTtRQUNBO1FBQ0E7UUFDQTtNQUNBO1FBQ0E7UUFDQTtNQUNBO01BQ0E7TUFDQTtNQUNBO0lBQ0E7SUFDQUM7TUFFQTtNQUVBO01BRUF4QztNQUVBQTtNQUNBQTtNQUVBO0lBQ0E7SUFDQXlDO01BRUE7TUFFQTtNQUVBO0lBRUE7SUFDQUM7TUFBQTtNQUNBO1FBQ0E1QjtNQUNBO1FBQ0E7UUFDQTtVQUFBO1FBQUE7TUFDQTtJQUNBO0lBQ0E7SUFDQTZCO01BQUE7TUFDQTtRQUNBN0I7UUFDQTdCO1VBQ0FVO1FBQ0E7TUFDQTtRQUNBOztRQUVBO1FBQ0E7UUFDQTtRQUNBO1VBQ0FpRCxrQkFDQUMsK0RBQ0FBLHdEQUNBQTtRQUNBO1FBQ0E7UUFDQTtRQUVBO1VBQ0E3QztVQUNBQTtRQUNBO01BQ0E7SUFDQTtJQUVBOEM7TUFDQTtRQUNBOUM7VUFDQVU7VUFDQUM7VUFDQUM7UUFDQTtRQUNBO01BQ0E7TUFFQTtNQUNBO01BQ0E7TUFDQTtNQUNBO01BQ0EsNkJBQ0EsY0FDQSxNQUNBLEtBQ0E7TUFDQTtNQUNBO0lBQ0E7RUFBQSxtR0FFQW1DO0lBQ0E7SUFDQTtFQUNBLDhFQUNBO0lBQUE7SUFFQTtJQUVBO01BQ0FqQztNQUNBN0I7UUFDQVU7UUFDQW1DO01BQ0E7SUFDQTtNQUNBO0lBQ0E7RUFDQSw4RkFFQTtJQUFBO0lBQ0E7SUFDQTtJQUNBO01BQ0FrQjtJQUNBO01BQ0FBO0lBQ0E7SUFDQTtNQUNBbEM7TUFDQTdCO1FBQ0FVO1FBQ0FUO1FBQ0E0QztNQUNBO0lBQ0E7TUFDQTtJQUNBO0VBQ0EsMEVBQ0FDO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7SUFDQTtFQUNBLDBGQUdBQTtJQUNBO0lBQ0E7TUFDQTtJQUNBOztJQUNBO0VBQ0EsOEZBR0FBO0lBQ0E7SUFDQTtNQUNBO0lBQ0E7SUFDQTtFQUNBLDhGQUdBQTtJQUNBO0lBQ0E7TUFDQTtJQUNBO0lBQ0E7SUFDQTtNQUNBO0lBQ0E7SUFDQTtFQUNBLHdGQUdBQTtJQUNBO0lBQ0E7TUFDQTtNQUNBO1FBQ0E7TUFDQTtRQUNBO01BQ0E7SUFDQTtJQUNBO0VBQ0Esd0ZBR0FBO0lBQUE7SUFBQTtNQUFBO01BQUE7UUFBQTtVQUFBO1lBQUE7Y0FDQTtjQUNBa0I7Y0FFQTtnQkFDQTtnQkFDQTs7Z0JBRUE7Z0JBQ0FDO2tCQUNBO29CQUNBO29CQUNBO2tCQUNBO29CQUNBO29CQUNBO2tCQUNBO2dCQUNBO2NBQ0E7Z0JBQ0E7Z0JBQ0FyQjtrQkFDQUY7a0JBQ0FDO2dCQUNBO2dCQUVBRTtnQkFFQTtrQkFDQWhCO2tCQUNBN0I7b0JBQ0FVO29CQUNBbUM7b0JBQ0FDO2tCQUNBO2dCQUNBO2tCQUFBO29CQUFBO29CQUFBO3NCQUFBO3dCQUFBOzBCQUFBOzRCQUFBLEtBQ0FvQjs4QkFBQTs4QkFBQTs0QkFBQTs0QkFDQTs7NEJBRUE7NEJBQUE7NEJBQUEsT0FDQTswQkFBQTs0QkFBQUM7NEJBRUE7NEJBQ0E7OEJBQ0FwRDtnQ0FDQVU7Z0NBQ0FDO2dDQUNBQzs4QkFDQTs0QkFDQTswQkFBQTswQkFBQTs0QkFBQTt3QkFBQTtzQkFBQTtvQkFBQTtrQkFBQSxDQUVBO2tCQUFBO29CQUFBO2tCQUFBO2dCQUFBO2NBQ0E7WUFBQTtZQUFBO2NBQUE7VUFBQTtRQUFBO01BQUE7SUFBQTtFQUNBLHNHQUdBZ0I7SUFBQTtJQUFBO01BQUE7TUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBO2NBQUE7Y0FBQSxPQUVBO2dCQUNBZDtnQkFDQTdCO2tCQUNBVTtrQkFDQWlDO2dCQUNBO2NBQ0E7WUFBQTtjQU5BdUI7Y0FBQSxNQVFBQTtnQkFBQTtnQkFBQTtjQUFBO2NBQ0E7Y0FDQTtjQUFBLGtDQUNBO1lBQUE7Y0FFQTtjQUNBO2NBQUEsa0NBQ0E7WUFBQTtjQUFBO2NBQUE7WUFBQTtjQUFBO2NBQUE7Y0FHQTtjQUNBO2NBQUEsa0NBQ0E7WUFBQTtZQUFBO2NBQUE7VUFBQTtRQUFBO01BQUE7SUFBQTtFQUVBLHdGQUdBcEI7SUFBQTtJQUFBO01BQUE7TUFBQTtRQUFBO1VBQUE7WUFBQTtjQUFBLElBQ0E7Z0JBQUE7Z0JBQUE7Y0FBQTtjQUFBO1lBQUE7Y0FBQSxLQUtBO2dCQUFBO2dCQUFBO2NBQUE7Y0FDQS9CO2dCQUNBVTtnQkFDQUM7Z0JBQ0FDO2NBQ0E7Y0FBQTtZQUFBO2NBSUFrQjtjQUNBO2NBRUE7Z0JBQ0FoQjtnQkFDQTdCO2tCQUNBVTtrQkFDQW1DO2dCQUNBO2NBQ0E7Z0JBQ0E7a0JBQ0E7a0JBQ0E5QjtvQkFDQVU7b0JBQ0FDO29CQUNBQztrQkFDQTs7a0JBRUE7a0JBQ0FzQztvQkFDQTtrQkFDQTtnQkFDQTtjQUNBO1lBQUE7WUFBQTtjQUFBO1VBQUE7UUFBQTtNQUFBO0lBQUE7RUFDQSw0RkFHQTtJQUFBO0lBQ0E7SUFDQTtJQUNBO0lBQ0E7TUFDQTtRQUNBO1VBQ0E7UUFDQTtNQUNBO0lBQ0E7RUFDQSwwRkFHQTtJQUNBO01BQ0FHO01BQ0E7SUFDQTtFQUNBLGFBQ0E7RUFDQUM7QUFDQTtBQUFBLDJCIiwiZmlsZSI6IjUyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiPHRlbXBsYXRlPlxyXG5cclxuXHQ8dmlldz5cclxuXHRcdDx2aWV3IGNsYXNzPVwidGFiLWJhclwiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInRhYi1pdGVtXCIgOmNsYXNzPVwieyBhY3RpdmU6IGN1cnJlbnRUYWIgPT09IDcgfVwiIEBjbGljaz1cImNoYW5nZVRhYig3KVwiPlxyXG5cdFx0XHRcdOW3peWNlemAieaLqVxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidGFiLWl0ZW1cIiA6Y2xhc3M9XCJ7IGFjdGl2ZTogY3VycmVudFRhYiA9PT0gMCB9XCIgQGNsaWNrPVwiY2hhbmdlVGFiKDApXCI+XHJcblx0XHRcdFx05Li755WM6Z2iXHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ0YWItaXRlbVwiIDpjbGFzcz1cInsgYWN0aXZlOiBjdXJyZW50VGFiID09PSAyIH1cIiBAY2xpY2s9XCJjaGFuZ2VUYWIoMilcIj5cclxuXHRcdFx0XHTkuIrliIDkuIvliIBcclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInRhYi1pdGVtXCIgOmNsYXNzPVwieyBhY3RpdmU6IGN1cnJlbnRUYWIgPT09IDMgfVwiIEBjbGljaz1cImNoYW5nZVRhYigzKVwiPlxyXG5cdFx0XHRcdOiwg+acuumAgeajgFxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidGFiLWl0ZW1cIiA6Y2xhc3M9XCJ7IGFjdGl2ZTogY3VycmVudFRhYiA9PT0gMTAgfVwiIEBjbGljaz1cImNoYW5nZVRhYigxMClcIj5cclxuXHRcdFx0XHTkuIrkuIvliIAv6aaW5qOA5Y2V6K6w5b2VXHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgY2xhc3M9XCJ0YWItaXRlbVwiIDpjbGFzcz1cInsgYWN0aXZlOiBjdXJyZW50VGFiID09PSA0IH1cIiBAY2xpY2s9XCJjaGFuZ2VUYWIoNClcIj5cclxuXHRcdFx0XHTnlJ/kuqfmiqXlt6VcclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInRhYi1pdGVtXCIgOmNsYXNzPVwieyBhY3RpdmU6IGN1cnJlbnRUYWIgPT09IDEgfVwiIEBjbGljaz1cImNoYW5nZVRhYigxKVwiPlxyXG5cdFx0XHRcdOW8gOW3peWujOW3pVxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidGFiLWl0ZW1cIiA6Y2xhc3M9XCJ7IGFjdGl2ZTogY3VycmVudFRhYiA9PT0gNSB9XCIgQGNsaWNrPVwiY2hhbmdlVGFiKDUpXCI+XHJcblx0XHRcdFx0ZS1TT1BcclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInRhYi1pdGVtXCIgOmNsYXNzPVwieyBhY3RpdmU6IGN1cnJlbnRUYWIgPT09IDYgfVwiIEBjbGljaz1cImNoYW5nZVRhYig2KVwiPlxyXG5cdFx0XHRcdOW3peiJuuWPguaVsFxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IGNsYXNzPVwidGFiLWl0ZW1cIiA6Y2xhc3M9XCJ7IGFjdGl2ZTogY3VycmVudFRhYiA9PT0gOSB9XCIgQGNsaWNrPVwiY2hhbmdlVGFiKDkpXCI+XHJcblx0XHRcdFx06K6+5aSH54K55qOAXHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PCEtLSA8dmlldyBjbGFzcz1cInRhYi1pdGVtXCIgOmNsYXNzPVwieyBhY3RpdmU6IGN1cnJlbnRUYWIgPT09IDggfVwiIEBjbGljaz1cImNoYW5nZVRhYig4KVwiPlxyXG5cdFx0XHTmiZPljbDmnLrorr7nva5cclxuXHRcdDwvdmlldz4gLS0+XHJcblxyXG5cdFx0PC92aWV3PlxyXG5cdFx0PHZpZXcgY2xhc3M9XCJmb250XCI+PC92aWV3PlxyXG5cdFx0PHNjcm9sbC12aWV3IGNsYXNzPVwiY29udGVudFwiPlxyXG5cdFx0XHQ8dmlldyB2LWlmPVwiY3VycmVudFRhYiA9PT0gN1wiIGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImNvbnRlbnRcIj5cclxuXHRcdFx0XHRcdDwhLS08dmlldz5cclxuXHRcdFx0XHRcdFx0PGg0PuS4gOWPsOacuuWPsOWPquiDvemAieaLqeS4gOadoeW3peWNle+8iOWkmumAiem7mOiupOS4uuacgOWQjuS4gOadoe+8iTwvaDQ+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+LS0+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInNlY3Rpb24gdG9wLXNlY3Rpb25cIj5cclxuXHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLXJvdyBhbGlnbi1yb3dcIj5cclxuXHRcdFx0XHRcdFx0XHQ8aW5wdXQgdi1tb2RlbD1cIm1hY2hpbmVOYW1lXCJcclxuXHRcdFx0XHRcdFx0XHRcdCAgIGRpc2FibGVkPVwidHJ1ZVwiXHJcblx0XHRcdFx0XHRcdFx0XHQgICB0eXBlPVwidGV4dFwiXHJcblx0XHRcdFx0XHRcdFx0XHQgICBjbGFzcz1cIm1hY2hpbmUtbmFtZS1ib3hcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwiZm9ybS1ncm91cFwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0PGxhYmVsIHN0eWxlPVwiZmxvYXQ6IGxlZnQ7bWFyZ2luLXRvcDogMThweDtmb250LXNpemU6IDIycHg7XCI+54K55Ye75oyJ6ZKu562b6YCJ5bel5Y2V54q25oCBOjwvbGFiZWw+XHJcblx0XHRcdFx0XHRcdFx0XHQ8c3VwZXJ3ZWktY29tYm94IDpjYW5kaWRhdGVzPVwiZW5naW5lZXJpbmdOb01hcExpc3RcIiBwbGFjZWhvbGRlcj1cIuivt+mAieaLqVwiIHYtbW9kZWw9XCJlbmdpbmVlcmluZ05vXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdFx0IEBzZWxlY3Q9XCJvbkVuZ2luZWVyaW5nTm9DaGFuZ2VcIiBjbGFzcz1cInBpY2tlclwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHRcdCBzdHlsZT1cInBhZGRpbmc6IDdweCA0NnB4O3dpZHRoOiA2NTBweDttYXJnaW4tcmlnaHQ6IDIwcHg7XCI+PC9zdXBlcndlaS1jb21ib3g+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwidG9wLXJpZ2h0XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzPVwicmVmcmVzaC1idG5cIiBAY2xpY2s9XCJyZWZyZXNoXCI+5Yi35pawPC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblxyXG5cdFx0XHRcdFx0PCEtLSDlt6XljZXpgInmi6nooajmoLwgLS0+XHJcblx0XHRcdFx0XHQ8dmlldyBjbGFzcz1cInNlY3Rpb24gY2FyZFwiPlxyXG5cdFx0XHRcdFx0XHQ8dW5pLXRhYmxlIGJvcmRlciBzdHJpcGUgZW1wdHlUZXh0PVwi5pqC5peg5pu05aSa5pWw5o2uXCI+XHJcblx0XHRcdFx0XHRcdFx0PHVuaS10cj5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMjIwcHg7XCI+5pON5L2cPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRoIGFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ0aFwiIHN0eWxlPVwid2lkdGg6IDEwMHB4O1wiPuW3peW6jzwvdW5pLXRoPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAyMDBweDtcIj7lt6XljZXlj7c8L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTUwcHg7XCI+5Lqn5ZOB57yW56CBPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRoIGFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ0aFwiIHN0eWxlPVwid2lkdGg6IDI0MHB4O1wiPuS6p+WTgeWQjeensDwvdW5pLXRoPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAyMDBweDtcIj7op4TmoLw8L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTUwcHg7XCI+5bey55Sf5Lqn5pWw6YePPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRoIGFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ0aFwiIHN0eWxlPVwid2lkdGg6IDE1MHB4O1wiPuacqueUn+S6p+aVsOmHjzwvdW5pLXRoPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiAxNTBweDtcIj7mtL7lt6XmlbDph488L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTUwcHg7XCI+5bel5Y2V5pWw6YePPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRoIGFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ0aFwiIHN0eWxlPVwid2lkdGg6IDkwcHg7XCI+5bel5Y2V54q25oCBPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRoIGFsaWduPVwiY2VudGVyXCIgY2xhc3M9XCJ0aFwiIHN0eWxlPVwid2lkdGg6IDkwcHg7XCI+5oql5bel5Lq6PC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0PC91bmktdHI+XHJcblx0XHRcdFx0XHRcdFx0PHVuaS10ciB2LWZvcj1cIihpdGVtLCBpbmRleCkgaW4gdGFibGVEYXRhXCIgOmtleT1cImluZGV4XCI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwib3BlcmF0aW9uLWJ0bnNcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8YnV0dG9uIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OmNsYXNzPVwiZ2V0U3RhcnRCdG5DbGFzcyhpdGVtKVwiIFxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0OmRpc2FibGVkPVwiaXNTdGFydEJ0bkRpc2FibGVkKGl0ZW0pXCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdEBjbGljaz1cImhhbmRsZVN0YXJ0V29yayhpdGVtKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0e3sgZ2V0U3RhcnRCdG5UZXh0KGl0ZW0pIH19XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PC9idXR0b24+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGJ1dHRvbiBcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdGNsYXNzPVwicGF1c2UtYnRuXCIgXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHQ6ZGlzYWJsZWQ9XCJpc1BhdXNlQnRuRGlzYWJsZWQoaXRlbSlcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0QGNsaWNrPVwiaGFuZGxlUGF1c2VXb3JrKGl0ZW0pXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0XHTmmoLlgZxcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8L2J1dHRvbj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cImZvcm0taW5wdXRcIiBkaXNhYmxlZD1cInRydWVcIiB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJpdGVtLnByb2NOYW1lXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10ZCBhbGlnbj1cImNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1pbnB1dFwiPnt7IGl0ZW0uZGFhMDAxIH19PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10ZD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZvcm0taW5wdXRcIj57eyBpdGVtLmRhYTAwMiB9fTwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWlucHV0XCI+e3sgaXRlbS5kYWEwMDMgfX08L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10ZCBhbGlnbj1cImNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1pbnB1dFwiPnt7IGl0ZW0uZGFhMDA0IH19PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10ZD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1pbnB1dFwiIGRpc2FibGVkPVwidHJ1ZVwiIHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cIml0ZW0uZGFhMDExXCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10ZCBhbGlnbj1cImNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWlucHV0XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgdHlwZT1cInRleHRcIiA6dmFsdWU9XCIoaXRlbS5kYWEwMDggfHwgMCkgLSAoaXRlbS5kYWEwMTEgfHwgMClcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cImZvcm0taW5wdXRcIiBkaXNhYmxlZD1cInRydWVcIiB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJpdGVtLmRhYTAwOFwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10ZD5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1pbnB1dFwiIGRpc2FibGVkPVwidHJ1ZVwiIHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cIml0ZW0uZGFhMDA4XCIgLz5cclxuXHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0PHVuaS10ZCBhbGlnbj1cImNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWlucHV0XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiaXRlbS5kYWEwMThcIiAvPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDxpbnB1dCBjbGFzcz1cImZvcm0taW5wdXRcIiBkaXNhYmxlZD1cInRydWVcIiB0eXBlPVwidGV4dFwiIHYtbW9kZWw9XCJpdGVtLnN0YWZmTmFtZVwiIC8+XHJcblx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10ZD5cclxuXHRcdFx0XHRcdFx0XHQ8L3VuaS10cj5cclxuXHRcdFx0XHRcdFx0PC91bmktdGFibGU+XHJcblx0XHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IHYtaWY9XCJjdXJyZW50VGFiID09PSAwXCIgY2xhc3M9XCJ0YWItY29udGVudFwiPlxyXG5cdFx0XHRcdDxXb3JrT3JkZXIgOm9yZGVySWQ9XCJvcmRlcklkXCIgOm9yZGVyTm89XCJzZWxlY3RlZE9yZGVyXCIgOm1hY2hpbmVObz1cIm1hY2hpbmVOb1wiXHJcblx0XHRcdFx0XHRcdCAgIDpkZXZpY2VOdW1iZXI9XCJtYWNoaW5lTmFtZVwiIC8+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgdi1pZj1cImN1cnJlbnRUYWIgPT09IDFcIiBjbGFzcz1cInRhYi1jb250ZW50XCI+XHJcblx0XHRcdFx0PCEtLSAgICAgICAgJmx0OyEmbmRhc2g7IOiwg+eUqCBXb3JrT3JkZXJTdGF0dXMg57uE5Lu2ICZuZGFzaDsmZ3Q7LS0+XHJcblx0XHRcdFx0PFdvcmtPcmRlclN0YXR1cyA6b3JkZXJJZD1cIm9yZGVySWRcIiA6b3JkZXJObz1cInNlbGVjdGVkT3JkZXJcIiA6bWFjaGluZU5vPVwibWFjaGluZU5vXCIgLz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyB2LWlmPVwiY3VycmVudFRhYiA9PT0gMlwiIGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cclxuXHRcdFx0XHQ8IS0tICAgICAgICAmbHQ7ISZuZGFzaDsg6LCD55SoIG1vbGQg57uE5Lu2ICZuZGFzaDsmZ3Q7LS0+XHJcblx0XHRcdFx0PG1vbGQgOm9yZGVySWQ9XCJvcmRlcklkXCIgOm9yZGVyTm89XCJzZWxlY3RlZE9yZGVyXCIgOm1hY2hpbmVObz1cIm1hY2hpbmVOb1wiIC8+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgdi1pZj1cImN1cnJlbnRUYWIgPT09IDNcIiBjbGFzcz1cInRhYi1jb250ZW50XCI+XHJcblx0XHRcdFx0PCEtLSAgICAgICAgJmx0OyEmbmRhc2g7IOiwg+eUqCBtb2xkIOe7hOS7tiAmbmRhc2g7Jmd0Oy0tPlxyXG5cdFx0XHRcdDxtYWNoaW5lIDpvcmRlcklkPVwib3JkZXJJZFwiIDpvcmRlck5vPVwic2VsZWN0ZWRPcmRlclwiIDptYWNoaW5lTm89XCJtYWNoaW5lTm9cIiAvPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IHYtaWY9XCJjdXJyZW50VGFiID09PSAxMFwiIGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cclxuXHRcdFx0XHQ8IS0tIOiwg+eUqCBtb2xkUmVjb3JkIOe7hOS7tiAtLT5cclxuXHRcdFx0XHQ8TW9sZFJlY29yZCA6b3JkZXJJZD1cIm9yZGVySWRcIiA6b3JkZXJObz1cInNlbGVjdGVkT3JkZXJcIiA6bWFjaGluZU5vPVwibWFjaGluZU5vXCIgLz5cclxuXHRcdFx0PC92aWV3PlxyXG5cdFx0XHQ8dmlldyB2LWlmPVwiY3VycmVudFRhYiA9PT0gNFwiIGNsYXNzPVwidGFiLWNvbnRlbnRcIj5cclxuXHRcdFx0XHQ8IS0tICDosIPnlKggbW9sZCDnu4Tku7YgLS0+XHJcblx0XHRcdFx0PFdvcmtPcmRlclByaW50IDpvcmRlcklkPVwib3JkZXJJZFwiIDpvcmRlck5vPVwic2VsZWN0ZWRPcmRlclwiIDptYWNoaW5lTm89XCJtYWNoaW5lTm9cIiAvPlxyXG5cdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDx2aWV3IHYtaWY9XCJjdXJyZW50VGFiID09PSA4XCIgY2xhc3M9XCJ0YWItY29udGVudFwiPlxyXG5cdFx0XHRcdDwhLS0g6LCD55SoIG1vbGQg57uE5Lu2IC0tPlxyXG5cdFx0XHRcdDxQcmludEluaXQgOm9yZGVySWQ9XCJvcmRlcklkXCIgOm9yZGVyTm89XCJzZWxlY3RlZE9yZGVyXCIgOm1hY2hpbmVObz1cIm1hY2hpbmVOb1wiIC8+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgdi1pZj1cImN1cnJlbnRUYWIgPT09IDVcIiBjbGFzcz1cInRhYi1jb250ZW50XCI+XHJcblx0XHRcdFx0PFBERlNob3cgOm9yZGVySWQ9XCJvcmRlcklkXCIgOm9yZGVyTm89XCJzZWxlY3RlZE9yZGVyXCIgOm1hY2hpbmVObz1cIm1hY2hpbmVOb1wiIC8+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgdi1pZj1cImN1cnJlbnRUYWIgPT09IDZcIiBjbGFzcz1cInRhYi1jb250ZW50XCI+XHJcblx0XHRcdFx0PFRlY2hub2xvZ3kgOm9yZGVySWQ9XCJvcmRlcklkXCIgOm9yZGVyTm89XCJzZWxlY3RlZE9yZGVyXCIgOm1hY2hpbmVObz1cIm1hY2hpbmVOb1wiIC8+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdFx0PHZpZXcgdi1pZj1cImN1cnJlbnRUYWIgPT09IDlcIiBjbGFzcz1cInRhYi1jb250ZW50XCI+XHJcblx0XHRcdFx0PCEtLSDorr7lpIfngrnmo4Dop4blm74gLS0+XHJcblx0XHRcdFx0PEVxdWlwbWVudEluc3BlY3Rpb24gOm1hY2hpbmVObz1cIm1hY2hpbmVOb1wiIC8+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvc2Nyb2xsLXZpZXc+XHJcblxyXG5cclxuXHRcdDwhLS0g5by556qX5LiL5ouJ5qGG5Y+q5pi+56S65bel5Y2V54q25oCBIC0tPlxyXG5cdFx0PHZpZXcgdi1pZj1cImlzU2hvd1wiIGNsYXNzPVwib3ZlcmxheVwiPlxyXG5cdFx0XHQ8dmlldyBjbGFzcz1cInBvcHVwXCI+XHJcblx0XHRcdFx0PHZpZXcgY2xhc3M9XCJmb3JtLXJvd1wiPlxyXG5cdFx0XHRcdFx0PHZpZXcgc3R5bGU9XCJkaXNwbGF5OiBmbGV4OyBhbGlnbi1pdGVtczogY2VudGVyO1wiPlxyXG5cdFx0XHRcdFx0XHQ8bGFiZWwgc3R5bGU9XCJmbG9hdDogbGVmdDttYXJnaW4tdG9wOiAxOHB4O2ZvbnQtc2l6ZTogMjJweDtcIj7ngrnlh7vmjInpkq7nrZvpgInlt6XljZXnirbmgIE6PC9sYWJlbD5cclxuXHRcdFx0XHRcdFx0PHN1cGVyd2VpLWNvbWJveCA6Y2FuZGlkYXRlcz1cImVuZ2luZWVyaW5nTm9NYXBMaXN0XCIgcGxhY2Vob2xkZXI9XCLor7fpgInmi6lcIiB2LW1vZGVsPVwiZW5naW5lZXJpbmdOb1wiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IEBzZWxlY3Q9XCJvbkVuZ2luZWVyaW5nTm9DaGFuZ2VcIiBjbGFzcz1cInBpY2tlclwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0IHN0eWxlPVwicGFkZGluZzogN3B4IDQ2cHg7d2lkdGg6IDY1MHB4O1wiPjwvc3VwZXJ3ZWktY29tYm94PlxyXG5cdFx0XHRcdFx0XHQ8c3BhbiBzdHlsZT1cIm1hcmdpbi1sZWZ0OiAyMHB4OyBjb2xvcjogI2ZmNjYwMDsgZm9udC1zaXplOiAxOHB4O1wiPuWkmumAieaXtuWPquS/neeVmeacgOWQjuS4gOadoeW3peWNlTwvc3Bhbj5cclxuXHRcdFx0XHRcdDwvdmlldz5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblxyXG5cdFx0XHRcdDxkaXYgc3R5bGU9XCJoZWlnaHQ6IDQ1MHB4OyBvdmVyZmxvdzogYXV0bztcIj4gPCEtLSDosIPmlbTpq5jluqbkuLozODBweO+8jOS4uuW6lemDqOaMiemSrueVmeWHuuabtOWkmuepuumXtCAtLT5cclxuXHRcdFx0XHRcdDx0YWJsZT5cclxuXHJcblx0XHRcdFx0XHRcdDx2aWV3IGNsYXNzPVwic2VjdGlvbiBjYXJkXCI+XHJcblx0XHRcdFx0XHRcdFx0PHVuaS10YWJsZSByZWY9XCJ0YWJsZVwiIHR5cGU9XCJzZWxlY3Rpb25cIiBib3JkZXIgc3RyaXBlIGVtcHR5VGV4dD1cIuaaguaXoOabtOWkmuaVsOaNrlwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdCAgIGNsYXNzPVwibGFyZ2Utc2VsZWN0aW9uLXRhYmxlXCIgQHNlbGVjdGlvbi1jaGFuZ2U9XCJzZWxlY3Rpb25DaGFuZ2VcIj5cclxuXHRcdFx0XHRcdFx0XHRcdDx1bmktdHI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTAwcHg7XCI+5bel5bqPPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMjAwcHg7XCI+5bel5Y2V5Y+3PC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTUwcHg7XCI+5Lqn5ZOB57yW56CBPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMjQwcHg7XCI+5Lqn5ZOB5ZCN56ewPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMjAwcHg7XCI+6KeE5qC8PC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTUwcHg7XCI+5bey55Sf5Lqn5pWw6YePPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTUwcHg7XCI+5pyq55Sf5Lqn5pWw6YePPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTUwcHg7XCI+5rS+5bel5pWw6YePPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTUwcHg7XCI+5bel5Y2V5pWw6YePPC91bmktdGg+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogOTBweDtcIj7lt6XljZXnirbmgIE8L3VuaS10aD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10aCBhbGlnbj1cImNlbnRlclwiIGNsYXNzPVwidGhcIiBzdHlsZT1cIndpZHRoOiA5MHB4O1wiPuaKpeW3peS6ujwvdW5pLXRoPlxyXG48IS0tIFx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGggYWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRoXCIgc3R5bGU9XCJ3aWR0aDogMTI2cHg7XCI+6YCJ5oupPC91bmktdGg+IC0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktdHI+XHJcblx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRyIHYtZm9yPVwiKGl0ZW0sIGluZGV4KSBpbiB0YWJsZURhdGFcIlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDprZXk9XCJpbmRleFwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0OmNsYXNzPVwieydyb3ctc2VsZWN0ZWQnOiBzZWxlY3RlZEluZGV4cy5pbmNsdWRlcyhpbmRleCl9XCJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRAY2xpY2s9XCJvblJvd0NsaWNrKGluZGV4KVwiXHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0c3R5bGU9XCJjdXJzb3I6IHBvaW50ZXI7XCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8aW5wdXQgY2xhc3M9XCJmb3JtLWlucHV0XCIgZGlzYWJsZWQ9XCJ0cnVlXCIgdHlwZT1cInRleHRcIiB2LW1vZGVsPVwiaXRlbS5wcm9jTmFtZVwiIC8+PCEtLeW3peW6jy0tPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10ZD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10ZCBhbGlnbj1cImNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWlucHV0XCI+e3sgaXRlbS5kYWEwMDEgfX08L2Rpdj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PC91bmktdGQ+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDx1bmktdGQgYWxpZ249XCJjZW50ZXJcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHQ8ZGl2IGNsYXNzPVwiZm9ybS1pbnB1dFwiPnt7IGl0ZW0uZGFhMDAyIH19PC9kaXY+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGRpdiBjbGFzcz1cImZvcm0taW5wdXRcIj57eyBpdGVtLmRhYTAwMyB9fTwvZGl2PlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8L3VuaS10ZD5cclxuXHRcdFx0XHRcdFx0XHRcdFx0PHVuaS10ZCBhbGlnbj1cImNlbnRlclwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDxkaXYgY2xhc3M9XCJmb3JtLWlucHV0XCI+e3sgaXRlbS5kYWEwMDQgfX08L2Rpdj48IS0t6KeE5qC8LS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1pbnB1dFwiIGRpc2FibGVkPVwidHJ1ZVwiIHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cIml0ZW0uZGFhMDExXCIgLz48IS0t5bey55Sf5Lqn5pWw6YePLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1pbnB1dFwiIGRpc2FibGVkPVwidHJ1ZVwiIHR5cGU9XCJ0ZXh0XCIgOnZhbHVlPVwiKGl0ZW0uZGFhMDA4IHx8IDApIC0gKGl0ZW0uZGFhMDExIHx8IDApXCIgLz48IS0t5pyq55Sf5Lqn5pWw6YePLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1pbnB1dFwiIGRpc2FibGVkPVwidHJ1ZVwiIHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cIml0ZW0uZGFhMDA4XCIgLz48IS0t5rS+5bel5pWw6YePLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0IGNsYXNzPVwiZm9ybS1pbnB1dFwiIGRpc2FibGVkPVwidHJ1ZVwiIHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cIml0ZW0uZGFhMDA4XCIgLz48IS0t5bel5Y2V5pWw6YePLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1pbnB1dFwiIGRpc2FibGVkPVwidHJ1ZVwiIHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cIml0ZW0uZGFhMDE4XCIgLz48IS0t5bel5Y2V54q25oCBLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkIGFsaWduPVwiY2VudGVyXCI+XHJcblx0XHRcdFx0XHRcdFx0XHRcdFx0PGlucHV0IGNsYXNzPVwiZm9ybS1pbnB1dFwiIGRpc2FibGVkPVwidHJ1ZVwiIHR5cGU9XCJ0ZXh0XCIgdi1tb2RlbD1cIml0ZW0uc3RhZmZOYW1lXCIgLz48IS0t5oql5bel5Lq6LS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHQ8dW5pLXRkPlxyXG48IS0tIFx0XHRcdFx0XHRcdFx0XHRcdFx0PHZpZXcgY2xhc3M9XCJ1bmktZ3JvdXBcIj5cclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDxidXR0b24gY2xhc3M9XCJzZWxlY3QtYnRuXCIgdHlwZT1cImRlZmF1bHRcIiBAY2xpY2s9XCJ0b0RldGFpbChpdGVtKVwiPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHTovazliLDkuLvnlYzpnaJcclxuXHRcdFx0XHRcdFx0XHRcdFx0XHRcdDwvYnV0dG9uPlxyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdDwvdmlldz4gLS0+XHJcblx0XHRcdFx0XHRcdFx0XHRcdDwvdW5pLXRkPlxyXG5cdFx0XHRcdFx0XHRcdFx0PC91bmktdHI+XHJcblx0XHRcdFx0XHRcdFx0PC91bmktdGFibGU+XHJcblx0XHRcdFx0XHRcdDwvdmlldz5cclxuXHJcblx0XHRcdFx0XHQ8L3RhYmxlPlxyXG5cdFx0XHRcdDwvZGl2PlxyXG5cclxuXHRcdFx0XHQ8dmlldyBjbGFzcz1cImJvdHRvbS1zZWN0aW9uXCI+XHJcblx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzPVwic2F2ZS1idG5cIiBAY2xpY2s9XCJzYXZlXCI+5L+d5a2Y6YCJ5oupPC9idXR0b24+XHJcblx0XHRcdFx0XHQ8YnV0dG9uIGNsYXNzPVwiY2FuY2VsLWJ0blwiIEBjbGljaz1cImlzU2hvdyA9ICFpc1Nob3dcIj7lj5bmtog8L2J1dHRvbj5cclxuXHRcdFx0XHQ8L3ZpZXc+XHJcblx0XHRcdDwvdmlldz5cclxuXHRcdDwvdmlldz5cclxuXHQ8L3ZpZXc+XHJcbjwvdGVtcGxhdGU+XHJcblxyXG48c2NyaXB0PlxyXG5pbXBvcnQgV29ya09yZGVyU3RhdHVzIGZyb20gJy4uL2NvbXBvbmVudHMvV29ya09yZGVyU3RhdHVzLnZ1ZSc7IC8vIOehruS/nei3r+W+hOato+ehrlxyXG5pbXBvcnQgVW5pVGFibGUgZnJvbSBcIi4uL3VuaV9tb2R1bGVzL3VuaS10YWJsZS9jb21wb25lbnRzL3VuaS10YWJsZS91bmktdGFibGUudnVlXCI7XHJcbmltcG9ydCBNb2xkIGZyb20gXCIuLi9jb21wb25lbnRzL21vbGQudnVlXCI7XHJcbmltcG9ydCBNYWNoaW5lIGZyb20gXCIuLi9jb21wb25lbnRzL21hY2hpbmUudnVlXCI7XHJcbmltcG9ydCBXb3JrT3JkZXJQcmludCBmcm9tIFwiLi4vY29tcG9uZW50cy9Xb3JrT3JkZXJQcmludC52dWVcIjtcclxuaW1wb3J0IFdvcmtPcmRlciBmcm9tIFwiLi4vY29tcG9uZW50cy9Xb3JrT3JkZXIudnVlXCI7XHJcbmltcG9ydCBUZWNobm9sb2d5IGZyb20gXCIuLi9jb21wb25lbnRzL1RlY2hub2xvZ3kudnVlXCI7XHJcbmltcG9ydCBQREZTaG93IGZyb20gXCIuLi9jb21wb25lbnRzL1BERlNob3cudnVlXCI7XHJcbmltcG9ydCBQcmludEluaXQgZnJvbSBcIi4uL2NvbXBvbmVudHMvUHJpbnRJbml0LnZ1ZVwiO1xyXG5pbXBvcnQgUHJpbnRUZXN0IGZyb20gXCIuLi9jb21wb25lbnRzL1ByaW50VGVzdC52dWVcIjtcclxuaW1wb3J0IEVxdWlwbWVudEluc3BlY3Rpb24gZnJvbSBcIi4uL2NvbXBvbmVudHMvRXF1aXBtZW50SW5zcGVjdGlvbi52dWVcIjtcclxuaW1wb3J0IE1vbGRSZWNvcmQgZnJvbSBcIi4uL3BhZ2VzL21vbGRSZWNvcmQudnVlXCI7XHJcblxyXG5cdGV4cG9ydCBkZWZhdWx0IHtcclxuXHRcdGNvbXBvbmVudHM6IHtcclxuXHRcdFx0VGVjaG5vbG9neSxcclxuXHRcdFx0V29ya09yZGVyLFxyXG5cdFx0XHRXb3JrT3JkZXJQcmludCxcclxuXHRcdFx0TWFjaGluZSxcclxuXHRcdFx0TW9sZCxcclxuXHRcdFx0VW5pVGFibGUsXHJcblx0XHRcdFdvcmtPcmRlclN0YXR1cyxcclxuXHRcdFx0UERGU2hvdyxcclxuXHRcdFx0UHJpbnRJbml0LFxyXG5cdFx0XHRQcmludFRlc3QsXHJcblx0XHRcdEVxdWlwbWVudEluc3BlY3Rpb24sXHJcblx0XHRcdE1vbGRSZWNvcmRcclxuXHRcdH0sXHJcblx0XHRkYXRhKCkge1xyXG5cdFx0XHRyZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgb3JkZXJTdGF0dXM6ICcnLCAvLyDpu5jorqTlhajpg6hcclxuXHRcdFx0XHRjdXJyZW50VGFiOiA3LFxyXG5cclxuICAgICAgICAgICAgICAgIHByb2R1Y3RDb2RlOiAnJywgLy8g5Lqn5ZOB57yW56CBXHJcbiAgICAgICAgICAgICAgICBwcm9kdWN0U3BlYzogJycsIC8vIOS6p+WTgeinhOagvFxyXG5cclxuXHRcdFx0XHRtYWNoaW5lTGlzdDogW10sXHJcblxyXG5cdFx0XHRcdG1hY2hpbmU6IFtdLFxyXG5cclxuXHRcdFx0XHRlbmdpbmVlcmluZ05vTGlzdDogW10sXHJcblx0XHRcdFx0ZW5naW5lZXJpbmdOb01hcExpc3Q6IFtdLFxyXG5cdFx0XHRcdGVuZ2luZWVyaW5nTm86ICcnLFxyXG5cclxuXHRcdFx0XHRtYWNoaW5lTm86ICcnLFxyXG5cdFx0XHRcdG1hY2hpbmVOYW1lOiAnJyxcclxuXHJcblx0XHRcdFx0dGFibGVEYXRhOiBbXSxcclxuXHRcdFx0XHRpc1Nob3dUYWJsZURhdGE6IFtdLFxyXG5cclxuXHRcdFx0XHRvcmRlclN0YXR1czogJ+W8gOW3pScsXHJcblx0XHRcdFx0c2VsZWN0ZWRPcmRlcjogJycsXHJcblx0XHRcdFx0b3JkZXJJZDogMCxcclxuXHJcblx0XHRcdFx0c2VsZWN0ZWRJbmRleHM6IFtdLFxyXG5cclxuXHRcdFx0XHRpc1Nob3c6IGZhbHNlLFxyXG5cdFx0XHRcdFxyXG5cdFx0XHRcdC8vIOiHquWKqOi3s+i9rOebuOWFs1xyXG5cdFx0XHRcdGF1dG9SZWRpcmVjdFRpbWVyOiBudWxsLFxyXG5cdFx0XHRcdGF1dG9SZWRpcmVjdFRpbWU6IDUgKiA2MCAqIDEwMDAsIC8vIDXliIbpkp9cclxuXHRcdFx0XHRcclxuXHRcdFx0XHQvLyDlt6XljZXpgInmi6npobXpnaLlrprml7bliLfmlrBcclxuXHRcdFx0XHRhdXRvUmVmcmVzaFRpbWVyOiBudWxsLFxyXG5cdFx0XHRcdGF1dG9SZWZyZXNoSW50ZXJ2YWw6IDYwICogMTAwMCwgLy8gMeWIhumSn1xyXG5cdFx0XHR9O1xyXG5cdFx0fSxcclxuXHRcdGNyZWF0ZWQoKSB7XHJcblxyXG5cdFx0XHQvL+iwg+ivleS9v+eUqOeahOS7o+eggVxyXG5cdFx0XHQvLyB0aGlzLm1hY2hpbmVObyA9IHVuaS5nZXRTdG9yYWdlU3luYygnbWFjaGluZU5vJyk7XHJcblx0XHRcdC8vIHRoaXMubWFjaGluZU5hbWUgPSB1bmkuZ2V0U3RvcmFnZVN5bmMoJ21hY2hpbmVOYW1lJyk7XHJcblx0XHRcdC8vXHJcblx0XHRcdC8vIGlmICh0aGlzLm1hY2hpbmVObykge1xyXG5cdFx0XHQvLyAgIHRoaXMuZ2V0V29tZGFhSXNTaG93KCk7XHJcblx0XHRcdC8vIH1cclxuXHJcblx0XHRcdHVuaS5jbGVhclN0b3JhZ2VTeW5jKCk7XHJcblx0XHRcdFxyXG5cdFx0XHR0aGlzLmNoZWNrRm9yVXBkYXRlKCk7XHJcblx0XHRcdFxyXG5cdFx0XHQvL+W3peaOp+acuuS9v+eUqOeahOS7o+eggVxyXG5cdFx0XHR0aGlzLmdldFByaW50SW5mbygpO1xyXG5cdFx0XHRcclxuXHRcdH0sXHJcblx0XHRvbkxvYWQob3B0aW9ucykge1xyXG5cdFx0XHR0aGlzLmdldE1hY2hpbmVMaXN0KCk7XHJcblx0XHR9LFxyXG5cdFx0b25TaG93KCkge1xyXG5cdFx0XHR0aGlzLnJlZnJlc2goKTtcclxuXHRcdFx0dGhpcy5yZXNldEF1dG9SZWRpcmVjdFRpbWVyKCk7XHJcblx0XHRcdC8vIOWmguaenOWcqOW3peWNlemAieaLqemhtemdou+8jOWQr+WKqOWumuaXtuWIt+aWsFxyXG5cdFx0XHRpZiAodGhpcy5jdXJyZW50VGFiID09PSA3KSB7XHJcblx0XHRcdFx0dGhpcy5zdGFydEF1dG9SZWZyZXNoKCk7XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRvbkhpZGUoKSB7XHJcblx0XHRcdC8vIOmhtemdoumakOiXj+aXtua4hemZpOWumuaXtuWZqFxyXG5cdFx0XHR0aGlzLnN0b3BBdXRvUmVmcmVzaCgpO1xyXG5cdFx0fSxcclxuXHRcdG1ldGhvZHM6IHtcclxuICAgICAgICAgICAgb25Sb3dDbGljayhpbmRleCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RlZEluZGV4cyA9IFtpbmRleF07IC8vIOWNlemAiVxyXG4gICAgICAgICAgICAgICAgLy8g5omL5Yqo6Kem5Y+RIHNlbGVjdGlvbkNoYW5nZSDku6XlkIzmraXlpI3pgInmoYZcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlKHsgZGV0YWlsOiB7IGluZGV4IH0gfSk7XHJcbiAgICAgICAgICAgICAgICAvLyDph43nva7oh6rliqjot7PovazorqHml7blmahcclxuICAgICAgICAgICAgICAgIHRoaXMucmVzZXRBdXRvUmVkaXJlY3RUaW1lcigpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBcclxuICAgICAgICAgICAgLy8g6YeN572u6Ieq5Yqo6Lez6L2s6K6h5pe25ZmoXHJcbiAgICAgICAgICAgIHJlc2V0QXV0b1JlZGlyZWN0VGltZXIoKSB7XHJcbiAgICAgICAgICAgICAgICAvLyDmuIXpmaTnjrDmnInnmoTlrprml7blmahcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmF1dG9SZWRpcmVjdFRpbWVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuYXV0b1JlZGlyZWN0VGltZXIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b1JlZGlyZWN0VGltZXIgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAvLyDpmaTkuobkuLvpobUoMCnjgIHlt6XljZXpgInmi6npobUoNynjgIHnlJ/kuqfmiqXlt6XpobUoNCnkuYvlpJbnmoTpobXpnaLmiY3orr7nva7oh6rliqjot7PovaxcclxuICAgICAgICAgICAgICAgIGlmICh0aGlzLmN1cnJlbnRUYWIgIT09IDAgJiYgdGhpcy5jdXJyZW50VGFiICE9PSA3ICYmIHRoaXMuY3VycmVudFRhYiAhPT0gNCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuYXV0b1JlZGlyZWN0VGltZXIgPSBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgLy8g6Lez6L2s5Zue5Li76aG1XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMuY3VycmVudFRhYiA9IDA7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIC8vIOaYvuekuuaPkOekuuS/oeaBr1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmkuc2hvd1RvYXN0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpdGxlOiAn6aG16Z2i6LaF5pe277yM6Ieq5Yqo6L+U5Zue5Li76aG1JyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdub25lJyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIH0sIHRoaXMuYXV0b1JlZGlyZWN0VGltZSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcblx0XHRcdGNoZWNrRm9yVXBkYXRlKCkge1xyXG5cdFx0XHRcdHRoaXMuJHBvc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBcIi9EZXZNYWNoaW5lL2dldEFwcFVwZ3JhZGVJbmZvXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB7fVxyXG5cdFx0XHRcdH0pLnRoZW4ocmVzID0+IHtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0bGV0IG5ld1ZlcnNpb24gPSByZXMuZGF0YS52ZXJzaW9uO1xyXG5cdFx0XHRcdFx0bGV0IGN1cnJlbnRWZXJzaW9uID0gdW5pLmdldFN5c3RlbUluZm9TeW5jKCk7IC8vIOiOt+WPluW9k+WJjSBBUEsg54mI5pys5Y+3XHJcblx0XHRcdFx0XHQgXHJcblx0XHRcdFx0XHRpZiAobmV3VmVyc2lvbiA+IGN1cnJlbnRWZXJzaW9uLmFwcFZlcnNpb24pIHtcclxuXHRcdFx0XHRcdFx0dW5pLnNob3dNb2RhbCh7XHJcblx0XHRcdFx0XHRcdFx0dGl0bGU6IFwi5Y+R546w5paw54mI5pysXCIsXHJcblx0XHRcdFx0XHRcdFx0Y29udGVudDogXCLmmK/lkKbkuIvovb3mnIDmlrDniYjmnKw/XCIsXHJcblx0XHRcdFx0XHRcdFx0c3VjY2VzczogKG1vZGFsUmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdFx0XHRpZiAobW9kYWxSZXMuY29uZmlybSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aGlzLmRvd25sb2FkTmV3QXBrKHJlcy5kYXRhLmFwa1VybCk7XHJcblx0XHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHR9KTtcclxuXHRcdFx0XHRcdFx0Ly90aGlzLmRvd25sb2FkTmV3QXBrKHJlcy5kYXRhLmFwa1VybCk7XHJcblx0XHRcdFx0XHRcdHRoaXMudXBkYXRlQ2hlY2tlZCA9IHRydWU7IC8vIOagh+iusOabtOaWsOW3suajgOafpei/h1xyXG5cdFx0XHRcdFx0XHQvLyAgICAgIC8vIOWmguaenOacieaWsOeJiOacrO+8jOW8gOWni+S4i+i9vVxyXG5cdFx0XHRcdFx0XHQvL2Rvd25sb2FkKHJlcy5kYXRhLmFwa1VybCk7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSlcclxuXHRcdFx0XHRcclxuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdGRvd25sb2FkTmV3QXBrKGFwa1VybCkge1xyXG5cdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0dGl0bGU6IFwi5byA5aeL5LiL6L295pu05pawLi4uXCIsXHJcblx0XHRcdFx0XHRpY29uOiBcIm5vbmVcIixcclxuXHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXHJcblx0XHRcdFx0fSk7XHJcblx0XHRcdFxyXG5cdFx0XHRcdHVuaS5kb3dubG9hZEZpbGUoe1xyXG5cdFx0XHRcdFx0dXJsOiBhcGtVcmwsXHJcblx0XHRcdFx0XHRzdWNjZXNzOiAocmVzKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcblx0XHRcdFx0XHRcdFx0cGx1cy5ydW50aW1lLmluc3RhbGwocmVzLnRlbXBGaWxlUGF0aCwge1xyXG5cdFx0XHRcdFx0XHRcdFx0Zm9yY2U6IHRydWVcclxuXHRcdFx0XHRcdFx0XHR9LCBmdW5jdGlvbigpIHtcclxuXHRcdFx0XHRcdFx0XHRcdGNvbnNvbGUubG9nKFwi5a6J6KOF5oiQ5Yqf77yM6YeN5ZCv5bqU55SoXCIpO1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly9wbHVzLnJ1bnRpbWUucmVzdGFydCgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly9wbHVzLnJ1bnRpbWUucXVpdCgpO1xyXG5cdFx0XHRcdFx0XHRcdFx0Ly8gdW5pLm5hdmlnYXRlQmFjaygpXHJcblx0XHRcdFx0XHRcdFx0fSwgZnVuY3Rpb24oZSkge1xyXG5cdFx0XHRcdFx0XHRcdFx0Y29uc29sZS5lcnJvcihcIuWuieijheWksei0pTpcIiwgZSk7XHJcblx0XHRcdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0sXHJcblx0XHRcdFx0XHRmYWlsOiAoZXJyKSA9PiB7XHJcblx0XHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoXCLkuIvovb3lpLHotKU6XCIsIGVycik7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdHRpdGxlOiBcIuS4i+i9veWksei0pe+8jOivt+ajgOafpee9kee7nFwiLFxyXG5cdFx0XHRcdFx0XHRcdGljb246IFwibm9uZVwiLFxyXG5cdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcclxuXHRcdFx0cmVmcmVzaCgpIHtcclxuXHRcdFx0XHR0aGlzLmdldE1hY2hpbmVMaXN0KCk7XHJcblx0XHRcdFx0dGhpcy5nZXRQcmludEluZm8oKTsgLy8gZ2V0UHJpbnRJbmZvIOWujOaIkOWQjuS8muiHquWKqOiwg+eUqCBnZXRXb21kYWFJc1Nob3coKVxyXG5cdFx0XHRcdC8vIOWmguaenOW9k+WJjeWcqOW3peWNlemAieaLqemhtemdou+8jOm7mOiupOWKoOi9veW3peWNleWIl+ihqFxyXG5cdFx0XHRcdGlmICh0aGlzLmN1cnJlbnRUYWIgPT09IDcpIHtcclxuXHRcdFx0XHRcdC8vIOagueaNruW9k+WJjee7keWumuW3peWNleeahOeKtuaAgeWGs+Wumum7mOiupOetm+mAieadoeS7tlxyXG5cdFx0XHRcdFx0bGV0IGRlZmF1bHRTdGF0dXMgPSAn5b6F5byA5bel44CB5pyq5byA5bel44CB5pqC5YGcJztcclxuXHRcdFx0XHRcdGlmICh0aGlzLmlzU2hvd1RhYmxlRGF0YS5sZW5ndGggPiAwKSB7XHJcblx0XHRcdFx0XHRcdGNvbnN0IGN1cnJlbnRPcmRlclN0YXR1cyA9IHRoaXMuaXNTaG93VGFibGVEYXRhWzBdLmRhYTAxODtcclxuXHRcdFx0XHRcdFx0aWYgKGN1cnJlbnRPcmRlclN0YXR1cyA9PT0gJ+W8gOW3pScpIHtcclxuXHRcdFx0XHRcdFx0XHRkZWZhdWx0U3RhdHVzID0gJ+W8gOW3pSc7XHJcblx0XHRcdFx0XHRcdH0gZWxzZSBpZiAoY3VycmVudE9yZGVyU3RhdHVzID09PSAn5a6M5belJykge1xyXG5cdFx0XHRcdFx0XHRcdGRlZmF1bHRTdGF0dXMgPSAn5a6M5belJztcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5lbmdpbmVlcmluZ05vID0gZGVmYXVsdFN0YXR1cztcclxuXHRcdFx0XHRcdHRoaXMuZW5naW5lZXJpbmdOb01hcExpc3QgPSBbXHJcblx0XHRcdFx0XHRcdCflvoXlvIDlt6XjgIHmnKrlvIDlt6XjgIHmmoLlgZwnLFxyXG5cdFx0XHRcdFx0XHQn5byA5belJyxcclxuXHRcdFx0XHRcdFx0J+WujOW3pSdcclxuXHRcdFx0XHRcdF07XHJcblx0XHRcdFx0XHR0aGlzLmdldFdvbWRhYUJ5U3RhdHVzKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRnZXRQcmludEluZm8oKSB7XHJcblx0XHRcdFx0dmFyIG1hYyA9IFwiXCI7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0bWFjID0gXCI3NDoyNDpjYTo0ZjpiNzo0ZFwiO1xyXG5cdFx0XHRcdHRoaXMuJHBvc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBcIi9EZXZNYWNoaW5lL0dldERldk1hY2hpbmVCeVBkYU1hY1wiLFxyXG5cdFx0XHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdFx0XHRwZGFNYWM6IG1hYyxcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KS50aGVuKHJlcyA9PiB7XHJcblx0XHRcdFx0XHRsZXQgZGV2TWFjaGluZSA9IHJlcy5kYXRhLnRiQmlsbExpc3Q7XHJcblx0XHRcdFx0XHR0aGlzLm1hY2hpbmVObyA9IGRldk1hY2hpbmUubWFjaGluZU5vO1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMubWFjaGluZU5hbWUgPSBcIuiwg+ivleaooeW8j++8mlwiICsgdGhpcy5tYWNoaW5lTm8gKyBcIuWPt+m9v+i9ruaculwiXHJcblxyXG5cdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdtYWNoaW5lTm8nLCB0aGlzLm1hY2hpbmVObyk7XHJcblx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ3ByaW50TWFjJywgZGV2TWFjaGluZS5wcmludE1hYyk7XHJcblxyXG5cdFx0XHRcdFx0Y29uc29sZS5sb2coZGV2TWFjaGluZS5wcmludE1hYyk7XHJcblxyXG5cdFx0XHRcdFx0dGhpcy5nZXRXb21kYWFJc1Nob3coKTtcclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0XHJcblx0Ly8gIFx0XHRcdGlmIChwbHVzLm9zLm5hbWUgPT0gXCJBbmRyb2lkXCIpIHtcclxuXHQvLyAgXHRcdFx0XHQvL+iOt+WPluaJi+acuk1BQ+WcsOWdgFxyXG5cdC8vICBcdFx0XHRcdHZhciBDb250ZXh0ID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKFwiYW5kcm9pZC5jb250ZW50LkNvbnRleHRcIik7XHJcblx0Ly8gIFx0XHRcdFx0dmFyIFdpZmlNYW5hZ2VyID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKFwiYW5kcm9pZC5uZXQud2lmaS5XaWZpTWFuYWdlclwiKTtcclxuXHQvLyAgXHRcdFx0XHR2YXIgd2lmaU1hbmFnZXIgPSBwbHVzLmFuZHJvaWQucnVudGltZU1haW5BY3Rpdml0eSgpLmdldFN5c3RlbVNlcnZpY2UoQ29udGV4dC5XSUZJX1NFUlZJQ0UpO1xyXG5cdC8vICBcdFx0XHRcdHZhciBXaWZpSW5mbyA9IHBsdXMuYW5kcm9pZC5pbXBvcnRDbGFzcyhcImFuZHJvaWQubmV0LndpZmkuV2lmaUluZm9cIik7XHJcblx0Ly8gIFx0XHRcdFx0dmFyIHdpZmlJbmZvID0gd2lmaU1hbmFnZXIuZ2V0Q29ubmVjdGlvbkluZm8oKTtcclxuXHQvLyAgXHRcdFx0XHRtYWMgPSB3aWZpSW5mby5nZXRNYWNBZGRyZXNzKCk7XHJcblx0XHRcdFx0XHRcclxuXHQvLyAgXHRcdFx0XHQvL+WmguaenG1hY+S4uuKAnDAyOjAwOjAwOjAwOjAwOjAw4oCd77yM5YiZ5Y+v6IO95piv5a6J5Y2TNi4w5Lul5LiK54mI5pys77yM5YiZ5L2/55So5Y+m5LiA56eN5pa55rOV6I635Y+WbWFj5Zyw5Z2AXHJcblx0Ly8gIFx0XHRcdFx0aWYgKG1hYyA9PSBcIjAyOjAwOjAwOjAwOjAwOjAwXCIpIHtcclxuXHQvLyAgXHRcdFx0XHRcdG1hYyA9IHRoaXMuZ2V0TWFjTmV3KCk7XHJcblx0Ly8gIFx0XHRcdFx0fVxyXG5cdC8vICBcdFx0XHRcdC8v5aaC5p6cbWFj5L2/55So5paw5pa55rOV5L6d54S25piv4oCcMDI6MDA6MDA6MDA6MDA6MDDigJ3liJnkuI3ov5vooYzkv53lrZhcclxuXHQvLyAgXHRcdFx0XHRpZiAobWFjID09IFwiMDI6MDA6MDA6MDA6MDA6MDBcIikge1xyXG5cdC8vICBcdFx0XHRcdFx0cmV0dXJuO1xyXG5cdC8vICBcdFx0XHRcdH1cclxuXHQvLyAgXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ3BkYU1hYycsIG1hYyk7XHJcblxyXG5cdC8vICBcdFx0XHRcdHRoaXMuJHBvc3Qoe1xyXG5cdC8vICBcdFx0XHRcdFx0dXJsOiBcIi9EZXZNYWNoaW5lL0dldERldk1hY2hpbmVCeVBkYU1hY1wiLFxyXG5cdC8vICBcdFx0XHRcdFx0ZGF0YToge1xyXG5cdC8vICBcdFx0XHRcdFx0XHRwZGFNYWM6IG1hYyxcclxuXHQvLyAgXHRcdFx0XHRcdH1cclxuXHQvLyAgXHRcdFx0XHR9KS50aGVuKHJlcyA9PiB7XHJcblx0Ly8gIFx0XHRcdFx0XHRsZXQgZGV2TWFjaGluZSA9IHJlcy5kYXRhLnRiQmlsbExpc3Q7XHJcblx0Ly8gIFx0XHRcdFx0XHR0aGlzLm1hY2hpbmVObyA9IGRldk1hY2hpbmUubWFjaGluZU5vO1xyXG5cdC8vICBcdFx0XHRcdFx0dGhpcy5tYWNoaW5lTmFtZSA9IFwi5b2T5YmN5py65Y+w77yaXCIgKyB0aGlzLm1hY2hpbmVObyArIFwi5Y+36b2/6L2u5py6XCI7XHJcblxyXG5cdC8vICBcdFx0XHRcdFx0dW5pLnNldFN0b3JhZ2VTeW5jKCdtYWNoaW5lTm8nLCB0aGlzLm1hY2hpbmVObyk7XHJcblx0Ly8gIFx0XHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ3ByaW50TWFjJywgZGV2TWFjaGluZS5wcmludE1hYyk7XHJcbiBcclxuXHJcblx0Ly8gIFx0XHRcdFx0XHR0aGlzLmdldFdvbWRhYUlzU2hvdygpO1xyXG5cclxuXHQvLyAgXHRcdFx0XHR9KTtcclxuXHQvLyAgXHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzYXZlKCkge1xyXG5cdFx0XHRcdGxldCBkYXRhID0gdGhpcy5zZWxlY3RlZEl0ZW1zKCk7XHJcblxyXG5cdFx0XHRcdGlmIChkYXRhLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuJHNob3dNZXNzYWdlKFwi6K+36YCJ5oup5LiA5Liq5bel5Y2VXCIpO1xyXG5cdFx0XHRcdFx0cmV0dXJuO1xyXG5cdFx0XHRcdH1cclxuXHJcbiAgICAgICAgICAgICAgICBpZiAoZGF0YS5sZW5ndGggPiAxKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy4kc2hvd01lc3NhZ2UoXCLkuIDmrKHlj6rog73pgInlj5bkuIDkuKrlt6XljZVcIik7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cclxuXHRcdFx0XHQvL2xldCBmaXJzdFZhbHVlID0gZGF0YVswXVtcIm1vbGRJZFwiXTsgLy8g6I635Y+W56ys5LiA5Liq5a+56LGh55qE5oyH5a6a5bGe5oCn5YC8XHJcblxyXG5cdFx0XHRcdC8vLy8g5L2/55SoIGV2ZXJ5IOaWueazleajgOafpeaJgOacieWvueixoeeahOivpeWxnuaAp+WAvOaYr+WQpuS4gOiHtFxyXG5cdFx0XHRcdC8vbGV0IGZsYWcgPSBkYXRhLmV2ZXJ5KGl0ZW0gPT4gaXRlbVtcIm1vbGRJZFwiXSA9PT0gZmlyc3RWYWx1ZSk7XHJcblx0XHRcdFx0Ly9pZiAoIWZsYWcpIHtcclxuXHRcdFx0XHQvL1x0dGhpcy4kc2hvd01lc3NhZ2UoXCLpgInlj5bnmoRcIiArIGRhdGEubGVuZ3RoICsgXCLkuKrlt6XljZXkuK3nmoTmqKHlhbfnvJblj7fkuI3kuIDoh7RcIik7XHJcblx0XHRcdFx0Ly9cdHJldHVybjtcclxuXHRcdFx0XHQvL31cclxuXHJcblx0XHRcdFx0bGV0IG9yZGVyU2VsZWN0ID0gW107XHJcblxyXG5cdFx0XHRcdGRhdGEuZm9yRWFjaChzID0+IHtcclxuXHRcdFx0XHRcdGxldCBlbnRpdHkgPSB7XHJcblx0XHRcdFx0XHRcdG9yZGVySWQ6IHMuaWQsXHJcblx0XHRcdFx0XHRcdG9yZGVyTm86IHMuZGFhMDAxLFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0b3JkZXJTZWxlY3QucHVzaChlbnRpdHkpO1xyXG5cdFx0XHRcdH0pO1xyXG5cclxuXHRcdFx0XHRsZXQgZWRpdERhdGUgPSB0aGlzLmZvcm1hdERhdGUobmV3IERhdGUoKSk7XHJcblxyXG5cdFx0XHRcdHRoaXMuJHBvc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBcIi9NZXNPcmRlclNlbGVjdC9BZGRcIixcclxuXHRcdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdFx0bWFjaGluZU5vOiB0aGlzLm1hY2hpbmVObyxcclxuXHRcdFx0XHRcdFx0ZWRpdERhdGU6IGVkaXREYXRlLFxyXG5cdFx0XHRcdFx0XHRpdGVtOiBvcmRlclNlbGVjdFxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLnRoZW4ocmVzID0+IHtcclxuXHRcdFx0XHRcdGlmIChyZXMuZGF0YS50YkJpbGxMaXN0KSB7XHJcblx0XHRcdFx0XHRcdHRoaXMuZ2V0V29tZGFhSXNTaG93KCk7XHJcblx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICfkv53lrZjlt6XljZXmiJDlip8nLFxyXG5cdFx0XHRcdFx0XHRcdC8vdGl0bGU6ICflsIbms6jloZHmnLrlvIDlkIjmqKHmlbDmuIUwJyxcclxuXHRcdFx0XHRcdFx0XHQvL+WwhuWAvOiuvue9ruS4uiBzdWNjZXNzIOaIluiAheebtOaOpeS4jeeUqOWGmWljb27ov5nkuKrlj4LmlbBcclxuXHRcdFx0XHRcdFx0XHRpY29uOiAnc3VjY2VzcycsXHJcblx0XHRcdFx0XHRcdFx0Ly/mmL7npLrmjIHnu63ml7bpl7TkuLogNeenklxyXG5cdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiA1MDAwXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0dGhpcy5pc1Nob3cgPSBmYWxzZTtcclxuXHRcdFx0XHR9KVxyXG5cclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0TWFjTmV3KCkge1xyXG5cdFx0XHRcdHZhciBzdHIgPSBcIlwiO1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRpZiAocGx1cy5vcy5uYW1lID09IFwiQW5kcm9pZFwiKSB7XHJcblx0XHRcdFx0XHRcdHZhciBOZXR3b3JrSW50ZXJmYWNlID0gcGx1cy5hbmRyb2lkLmltcG9ydENsYXNzKFwiamF2YS5uZXQuTmV0d29ya0ludGVyZmFjZVwiKTtcclxuXHRcdFx0XHRcdFx0dmFyIG5ldHdvcmtJbnRlcmZhY2UgPSBOZXR3b3JrSW50ZXJmYWNlLmdldEJ5TmFtZShcIndsYW4wXCIpO1xyXG5cdFx0XHRcdFx0XHR2YXIgYnl0ZXMgPSBuZXR3b3JrSW50ZXJmYWNlLmdldEhhcmR3YXJlQWRkcmVzcygpO1xyXG5cdFx0XHRcclxuXHRcdFx0XHRcdFx0Ly/lsIZieXRlW10g6L2s5o2i5oiQIFN0cmluZ1xyXG5cdFx0XHRcdFx0XHRmb3IgKHZhciBpID0gMDsgaSA8IGJ5dGVzLmxlbmd0aDsgaSsrKSB7XHJcblx0XHRcdFx0XHRcdFx0dmFyIHRtcCA9IFwiXCI7XHJcblx0XHRcdFx0XHRcdFx0dmFyIG51bSA9IGJ5dGVzW2ldO1xyXG5cdFx0XHRcdFx0XHRcdGlmIChudW0gPCAwKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0bXAgPSAoMjU1ICsgbnVtICsgMSkudG9TdHJpbmcoMTYpO1xyXG5cdFx0XHRcdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0bXAgPSBudW0udG9TdHJpbmcoMTYpO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0XHRpZiAodG1wLmxlbmd0aCA9PSAxKSB7XHJcblx0XHRcdFx0XHRcdFx0XHR0bXAgPSBcIjBcIiArIHRtcDtcclxuXHRcdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0c3RyICs9IChpID09IDApID8gKHRtcCkgOiAoXCI6XCIgKyB0bXApO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fSBjYXRjaCAoZXJyKSB7XHJcblx0XHRcdFx0XHRzdHIgPSBcIjAyOjAwOjAwOjAwOjAwOjAwXCI7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiBzdHI7XHJcblx0XHRcdH0sXHJcblxyXG4gICAgICAgICAgICBjYW5jZWwoKSB7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubWFjaGluZU5vKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIC8vIOebtOaOpeeUqCBmbGFnIOWIpOaWrVxyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaGFzQmluZGVkQ3V0dGVyRmxhZykge1xyXG4gICAgICAgICAgICAgICAgICAgIHVuaS5zaG93VG9hc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB0aXRsZTogJ+W9k+WJjeW3peWNleW3sue7keWumuWIgOWFt++8jOS4jeiDvea4heepuumHjemAiScsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGljb246ICdlcnJvcicsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGxldCBlZGl0RGF0ZSA9IHRoaXMuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRJbmRleHMgPSBbXTtcclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLiRwb3N0KHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IFwiL01lc09yZGVyU2VsZWN0L1JlbW92ZVwiLFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZU5vOiB0aGlzLm1hY2hpbmVObyxcclxuICAgICAgICAgICAgICAgICAgICAgICAgZWRpdERhdGU6IGVkaXREYXRlXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgIH0pLnRoZW4ocmVzID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmRhdGEudGJCaWxsTGlzdCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Nob3dUYWJsZURhdGEgPSBbXTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfSxcclxuXHJcblx0XHRcdGZvcm1hdERhdGUoZGF0ZSkge1xyXG5cdFx0XHRcdGxldCB5ZWFyID0gZGF0ZS5nZXRGdWxsWWVhcigpOyAvLyDojrflj5blubTku71cclxuXHRcdFx0XHRsZXQgbW9udGggPSBTdHJpbmcoZGF0ZS5nZXRNb250aCgpICsgMSkucGFkU3RhcnQoMiwgJzAnKTsgLy8g6I635Y+W5pyI5Lu95bm26KGl6Zu2XHJcblx0XHRcdFx0bGV0IGRheSA9IFN0cmluZyhkYXRlLmdldERhdGUoKSkucGFkU3RhcnQoMiwgJzAnKTsgLy8g6I635Y+W5pel5pyf5bm26KGl6Zu2XHJcblx0XHRcdFx0cmV0dXJuIGAke3llYXJ9LSR7bW9udGh9LSR7ZGF5fWA7IC8vIOi/lOWbnuagvOW8j+WMluWQjueahOWtl+espuS4slxyXG5cdFx0XHR9LFxyXG5cdFx0XHRzZWxlY3Rpb25DaGFuZ2UoZSkge1xyXG4gICAgICAgICAgICAgICAgLy8g5Y2V6YCJ55u05o6l6LWL5YC8XHJcbiAgICAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkSW5kZXhzID0gW2UuZGV0YWlsLmluZGV4XTtcclxuXHRcdFx0fSxcclxuXHJcblx0XHRcdHNlbGVjdGVkSXRlbXMoKSB7XHJcblx0XHRcdFx0cmV0dXJuIHRoaXMuc2VsZWN0ZWRJbmRleHMubWFwKGkgPT4gdGhpcy50YWJsZURhdGFbaV0pXHJcblx0XHRcdH0sXHJcblxyXG5cclxuXHRcdFx0Y2hhbmdlVGFiKGluZGV4KSB7XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50VGFiID0gaW5kZXg7XHJcblx0XHRcdFx0Ly8g5b2T5YiH5o2i5Yiw5bel5Y2V6YCJ5oup6aG16Z2iKGluZGV4ID09PSA3KeaXtuiHquWKqOWIt+aWsFxyXG5cdFx0XHRcdGlmIChpbmRleCA9PT0gNykge1xyXG5cdFx0XHRcdFx0dGhpcy5yZWZyZXNoKCk7XHJcblx0XHRcdFx0XHQvLyDlkK/liqjlrprml7bliLfmlrBcclxuXHRcdFx0XHRcdHRoaXMuc3RhcnRBdXRvUmVmcmVzaCgpO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHQvLyDnprvlvIDlt6XljZXpgInmi6npobXpnaLml7blgZzmraLlrprml7bliLfmlrBcclxuXHRcdFx0XHRcdHRoaXMuc3RvcEF1dG9SZWZyZXNoKCk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8vIOmHjee9ruiHquWKqOi3s+i9rOiuoeaXtuWZqFxyXG5cdFx0XHRcdHRoaXMucmVzZXRBdXRvUmVkaXJlY3RUaW1lcigpO1xyXG5cdFx0XHRcdGNvbnNvbGUubG9nKGluZGV4KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0b25NYWNoaW5lQ2hhbmdlKGV2ZW50KSB7XHJcblxyXG5cdFx0XHRcdHRoaXMubWFjaGluZU5hbWUgPSBldmVudDtcclxuXHJcblx0XHRcdFx0dGhpcy5tYWNoaW5lTm8gPSB0aGlzLm1hY2hpbmVbdGhpcy5tYWNoaW5lTGlzdC5pbmRleE9mKGV2ZW50KV0ubWFjaGluZU5vO1xyXG5cclxuXHRcdFx0XHR1bmkuY2xlYXJTdG9yYWdlU3luYygpO1xyXG5cclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ21hY2hpbmVObycsIHRoaXMubWFjaGluZU5vKTtcclxuXHRcdFx0XHR1bmkuc2V0U3RvcmFnZVN5bmMoJ21hY2hpbmVOYW1lJywgdGhpcy5tYWNoaW5lTmFtZSk7XHJcblxyXG5cdFx0XHRcdHRoaXMuZ2V0V29tZGFhSXNTaG93KCk7XHJcblx0XHRcdH0sXHJcblx0XHRcdG9uRW5naW5lZXJpbmdOb0NoYW5nZShldmVudCkge1xyXG5cclxuXHRcdFx0XHRsZXQgb3JkZSA9IHRoaXMuZW5naW5lZXJpbmdOb0xpc3RbdGhpcy5lbmdpbmVlcmluZ05vTWFwTGlzdC5pbmRleE9mKGV2ZW50KV07XHJcblxyXG5cdFx0XHRcdHRoaXMuZW5naW5lZXJpbmdObyA9IG9yZGUubW9sZElkO1xyXG5cclxuXHRcdFx0XHR0aGlzLmdldFdvbWRhYSgpO1xyXG5cclxuXHRcdFx0fSxcclxuXHRcdFx0Z2V0TWFjaGluZUxpc3QoKSB7XHJcblx0XHRcdFx0dGhpcy4kcG9zdCh7XHJcblx0XHRcdFx0XHR1cmw6IFwiL01lc01hY2hpbmUvR2V0SW5qZWN0aW9uTWFjaGluZVwiLFxyXG5cdFx0XHRcdH0pLnRoZW4ocmVzID0+IHtcclxuXHRcdFx0XHRcdHRoaXMubWFjaGluZSA9IHJlcy5kYXRhLnRiQmlsbExpc3Q7XHJcblx0XHRcdFx0XHR0aGlzLm1hY2hpbmVMaXN0ID0gdGhpcy5tYWNoaW5lLm1hcChzID0+IHMubWFjaGluZU5hbWUpO1xyXG5cdFx0XHRcdH0pXHJcblx0XHRcdH0sXHJcbiAgICAgICAgICAgIC8v6I635Y+W6KGo5qC855qE5pWw5o2u5rqQXHJcbiAgICAgICAgICAgIGdldFdvbWRhYUlzU2hvdygpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuJHBvc3Qoe1xyXG4gICAgICAgICAgICAgICAgICAgIHVybDogXCIvV29tZGFhL0dldFdvbWRhYXNCeVNob3dcIixcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8sXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgfSkudGhlbihyZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNTaG93VGFibGVEYXRhID0gcmVzLmRhdGEudGJCaWxsTGlzdDtcclxuXHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5Y+q5Yik5pat56ys5LiA5p2h77yI5Y+q5YWB6K645LiA5p2h5bel5Y2V77yJXHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3Qgb3JkZXIgPSB0aGlzLmlzU2hvd1RhYmxlRGF0YVswXTtcclxuICAgICAgICAgICAgICAgICAgICBsZXQgaGFzQmluZGVkQ3V0dGVyID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKG9yZGVyKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGhhc0JpbmRlZEN1dHRlciA9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3JkZXIub3V0VG9vbElkICYmIG9yZGVyLm91dFRvb2xJZC50b1N0cmluZygpLnRyaW0oKSAhPT0gJycpIHx8XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAob3JkZXIub3V0VG9vbENvZGUgJiYgb3JkZXIub3V0VG9vbENvZGUudHJpbSgpICE9PSAnJykgfHxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChvcmRlci5vdXRUb29sTmFtZSAmJiBvcmRlci5vdXRUb29sTmFtZS50cmltKCkgIT09ICcnKTtcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgLy8g5a2Y5YKo5YiwIGRhdGEg5Y+Y6YePXHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5oYXNCaW5kZWRDdXR0ZXJGbGFnID0gaGFzQmluZGVkQ3V0dGVyO1xyXG5cclxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc1Nob3dUYWJsZURhdGEubGVuZ3RoID09IDEpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdW5pLnNldFN0b3JhZ2VTeW5jKCdkYWEwMDEnLCB0aGlzLmlzU2hvd1RhYmxlRGF0YVswXS5kYWEwMDEpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICB1bmkuc2V0U3RvcmFnZVN5bmMoJ2lkJywgdGhpcy5pc1Nob3dUYWJsZURhdGFbMF0uaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICB9LFxyXG5cclxuICAgICAgICAgICAgaXNTaG93VGFiKCkge1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNTaG93VGFibGVEYXRhLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICB1bmkuc2hvd1RvYXN0KHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgdGl0bGU6ICflt7LmnInmraPlnKjmk43kvZznmoTlt6XljZXvvIzkuI3og73lho3mrKHpgInmi6knLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBpY29uOiAnZXJyb3InLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgICAgICAgICAgICAgICAgIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgICAgICB0aGlzLmlzU2hvdyA9IHRydWU7XHJcbiAgICAgICAgICAgICAgICAvLyDpu5jorqTpgInkuK3igJzlvoXlvIDlt6XigJ1cclxuICAgICAgICAgICAgICAgIHRoaXMuZW5naW5lZXJpbmdObyA9ICflvoXlvIDlt6XjgIHmnKrlvIDlt6XjgIHmmoLlgZwnO1xyXG4gICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEgPSBbXTtcclxuICAgICAgICAgICAgICAgIC8vIOS4i+aLieahhuWPquaYvuekuuWQiOW5tuWQjueahOeKtuaAgeWSjOWFtuWug+eKtuaAgVxyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmVlcmluZ05vTWFwTGlzdCA9IFtcclxuICAgICAgICAgICAgICAgICAgICAn5b6F5byA5bel44CB5pyq5byA5bel44CB5pqC5YGcJyxcclxuICAgICAgICAgICAgICAgICAgICAn5byA5belJyxcclxuICAgICAgICAgICAgICAgICAgICAn5a6M5belJ1xyXG4gICAgICAgICAgICAgICAgXTtcclxuICAgICAgICAgICAgICAgIC8vIOm7mOiupOaYvuekuuKAnOW+heW8gOW3peKAneW3peWNlVxyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRXb21kYWFCeVN0YXR1cygpO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAvLyDkuIvmi4nmoYbpgInkuK3lkI7vvIzmjInnirbmgIHnrZvpgInlt6XljZVcclxuICAgICAgICAgICAgb25FbmdpbmVlcmluZ05vQ2hhbmdlKHN0YXR1cykge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5lbmdpbmVlcmluZ05vID0gc3RhdHVzO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5nZXRXb21kYWFCeVN0YXR1cygpO1xyXG4gICAgICAgICAgICB9LFxyXG5cdFx0XHRnZXRXb21kYWEoKSB7XHJcblxyXG5cdFx0XHRcdGxldCBlZGl0RGF0ZSA9IHRoaXMuZm9ybWF0RGF0ZShuZXcgRGF0ZSgpKTtcclxuXHJcblx0XHRcdFx0dGhpcy4kcG9zdCh7XHJcblx0XHRcdFx0XHR1cmw6IFwiL1dvbWRhYS9HZXRXb21kYWFzQnlNYWNoaW5lXCIsXHJcblx0XHRcdFx0XHRkYXRhOiB7XHJcblx0XHRcdFx0XHRcdG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8sXHJcblx0XHRcdFx0XHRcdGVkaXREYXRlOiBlZGl0RGF0ZVxyXG5cdFx0XHRcdFx0fVxyXG5cdFx0XHRcdH0pLnRoZW4ocmVzID0+IHtcclxuXHRcdFx0XHRcdHRoaXMudGFibGVEYXRhID0gcmVzLmRhdGEudGJCaWxsTGlzdDtcclxuXHRcdFx0XHR9KVxyXG5cdFx0XHR9LFxyXG4gICAgICAgICAgICAvLyDmjInlt6XljZXnirbmgIHnrZvpgInlt6XljZVcclxuICAgICAgICAgICAgZ2V0V29tZGFhQnlTdGF0dXMoKSB7XHJcbiAgICAgICAgICAgICAgICBsZXQgZWRpdERhdGUgPSB0aGlzLmZvcm1hdERhdGUobmV3IERhdGUoKSk7XHJcbiAgICAgICAgICAgICAgICBsZXQgc3RhdHVzQXJyID0gW107XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lbmdpbmVlcmluZ05vID09PSAn5b6F5byA5bel44CB5pyq5byA5bel44CB5pqC5YGcJykge1xyXG4gICAgICAgICAgICAgICAgICAgIHN0YXR1c0FyciA9IFsn5b6F5byA5belJywgJ+acquW8gOW3pScsICfmmoLlgZwnXTtcclxuICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzQXJyID0gW3RoaXMuZW5naW5lZXJpbmdOb107XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB0aGlzLiRwb3N0KHtcclxuICAgICAgICAgICAgICAgICAgICB1cmw6IFwiL1dvbWRhYS9HZXRXb21kYWFzQnlFbmdpbmVlcmluZ05vXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgZGF0YToge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBtYWNoaW5lTm86IHRoaXMubWFjaGluZU5vLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBvcmRlclN0YXR1czogc3RhdHVzQXJyLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBlZGl0RGF0ZTogZWRpdERhdGVcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICB9KS50aGVuKHJlcyA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy50YWJsZURhdGEgPSByZXMuZGF0YS50YkJpbGxMaXN0O1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH0sXHJcblx0XHRcdHRvRGV0YWlsKGl0ZW0pIHtcclxuXHRcdFx0XHR0aGlzLm9yZGVySWQgPSBpdGVtLmlkO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRPcmRlciA9IGl0ZW0uZGFhMDAxO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5wcm9kdWN0Q29kZSA9IGl0ZW0uZGFhMDAyOyAvLyDkuqflk4HnvJbnoIFcclxuICAgICAgICAgICAgICAgIHRoaXMucHJvZHVjdFNwZWMgPSBpdGVtLmRhYTAwNDsgLy8g5Lqn5ZOB6KeE5qC8XHJcblx0XHRcdFx0dGhpcy5jdXJyZW50VGFiID0gMDtcclxuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdC8vIOiOt+WPluW8gOW3peaMiemSrueahGNsYXNzXHJcblx0XHRcdGdldFN0YXJ0QnRuQ2xhc3MoaXRlbSkge1xyXG5cdFx0XHRcdGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLmlzU2hvd1RhYmxlRGF0YS5sZW5ndGggPiAwICYmIHRoaXMuaXNTaG93VGFibGVEYXRhWzBdLmRhYTAwMSA9PT0gaXRlbS5kYWEwMDE7XHJcblx0XHRcdFx0aWYgKGlzU2VsZWN0ZWQpIHtcclxuXHRcdFx0XHRcdHJldHVybiAnc3RhcnQtYnRuIHN0YXJ0LWJ0bi1zZWxlY3RlZCc7IC8vIOW9k+WJjemAieS4reeahOW3peWNle+8jOe7v+iJslxyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gJ3N0YXJ0LWJ0bic7XHJcblx0XHRcdH0sXHJcblx0XHRcdFxyXG5cdFx0XHQvLyDliKTmlq3lvIDlt6XmjInpkq7mmK/lkKbnpoHnlKhcclxuXHRcdFx0aXNTdGFydEJ0bkRpc2FibGVkKGl0ZW0pIHtcclxuXHRcdFx0XHQvLyDlpoLmnpzlt7Lnu4/mnInpgInkuK3nmoTlt6XljZXvvIzkuJTlvZPliY3pobnkuI3mmK/pgInkuK3nmoTlt6XljZXvvIzliJnnpoHnlKhcclxuXHRcdFx0XHRpZiAodGhpcy5pc1Nob3dUYWJsZURhdGEubGVuZ3RoID4gMCAmJiB0aGlzLmlzU2hvd1RhYmxlRGF0YVswXS5kYWEwMDEgIT09IGl0ZW0uZGFhMDAxKSB7XHJcblx0XHRcdFx0XHRyZXR1cm4gdHJ1ZTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHR9LFxyXG5cdFx0XHRcclxuXHRcdFx0Ly8g5Yik5pat5pqC5YGc5oyJ6ZKu5piv5ZCm56aB55SoXHJcblx0XHRcdGlzUGF1c2VCdG5EaXNhYmxlZChpdGVtKSB7XHJcblx0XHRcdFx0Ly8g5aaC5p6c5bey57uP5pyJ6YCJ5Lit55qE5bel5Y2V77yM5LiU5b2T5YmN6aG55LiN5piv6YCJ5Lit55qE5bel5Y2V77yM5YiZ56aB55SoXHJcblx0XHRcdFx0aWYgKHRoaXMuaXNTaG93VGFibGVEYXRhLmxlbmd0aCA+IDAgJiYgdGhpcy5pc1Nob3dUYWJsZURhdGFbMF0uZGFhMDAxICE9PSBpdGVtLmRhYTAwMSkge1xyXG5cdFx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdC8vIOWmguaenOi/mOayoeaciemAieS4reS7u+S9leW3peWNle+8jOS5n+emgeeUqOaaguWBnOaMiemSrlxyXG5cdFx0XHRcdGlmICh0aGlzLmlzU2hvd1RhYmxlRGF0YS5sZW5ndGggPT09IDApIHtcclxuXHRcdFx0XHRcdHJldHVybiB0cnVlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0XHRyZXR1cm4gZmFsc2U7XHJcblx0XHRcdH0sXHJcblx0XHRcdFxyXG5cdFx0XHQvLyDojrflj5blvIDlt6XmjInpkq7mlofmnKxcclxuXHRcdFx0Z2V0U3RhcnRCdG5UZXh0KGl0ZW0pIHtcclxuXHRcdFx0XHRjb25zdCBpc1NlbGVjdGVkID0gdGhpcy5pc1Nob3dUYWJsZURhdGEubGVuZ3RoID4gMCAmJiB0aGlzLmlzU2hvd1RhYmxlRGF0YVswXS5kYWEwMDEgPT09IGl0ZW0uZGFhMDAxO1xyXG5cdFx0XHRcdGlmIChpc1NlbGVjdGVkKSB7XHJcblx0XHRcdFx0XHQvLyDmo4Dmn6XmmK/lkKbmnInosIPmnLrml7bpl7RcclxuXHRcdFx0XHRcdGlmICh0aGlzLmlzU2hvd1RhYmxlRGF0YVswXS5tYVNob3V0VGltZSkge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gJ+i9rOi3s+aKpeW3peeVjOmdoic7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRyZXR1cm4gJ+i9rOi3s+S4iuS4i+WIgOeVjOmdoic7XHJcblx0XHRcdFx0XHR9XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdHJldHVybiAn5byA5belJztcclxuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdC8vIOWkhOeQhuW8gOW3pVxyXG5cdFx0XHRhc3luYyBoYW5kbGVTdGFydFdvcmsoaXRlbSkge1xyXG5cdFx0XHRcdC8vIOWIpOaWreW9k+WJjeW3peWNleaYr+WQpuW3sumAieS4rVxyXG5cdFx0XHRcdGNvbnN0IGlzU2VsZWN0ZWQgPSB0aGlzLmlzU2hvd1RhYmxlRGF0YS5sZW5ndGggPiAwICYmIHRoaXMuaXNTaG93VGFibGVEYXRhWzBdLmRhYTAwMSA9PT0gaXRlbS5kYWEwMDE7XHJcblx0XHRcdFx0XHJcblx0XHRcdFx0aWYgKGlzU2VsZWN0ZWQpIHtcclxuXHRcdFx0XHRcdC8vIOWmguaenOW3sumAieS4re+8jOWFiOi3s+i9rOWIsOS4u+eVjOmdolxyXG5cdFx0XHRcdFx0dGhpcy50b0RldGFpbChpdGVtKTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0Ly8g5bu26L+f6Lez6L2s77ya5qC55o2u5piv5ZCm5pyJ6LCD5py65pe26Ze05Yaz5a6a6Lez6L2s5Yiw5ZOq5Liq55WM6Z2iXHJcblx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKHRoaXMuaXNTaG93VGFibGVEYXRhWzBdLm1hU2hvdXRUaW1lKSB7XHJcblx0XHRcdFx0XHRcdFx0Ly8g5pyJ6LCD5py65pe26Ze077yM6Lez6L2s5Yiw5oql5bel55WM6Z2iXHJcblx0XHRcdFx0XHRcdFx0dGhpcy5jdXJyZW50VGFiID0gNDtcclxuXHRcdFx0XHRcdFx0fSBlbHNlIHtcclxuXHRcdFx0XHRcdFx0XHQvLyDmsqHmnInosIPmnLrml7bpl7TvvIzot7PovazliLDkuIrkuIvliIDnlYzpnaJcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmN1cnJlbnRUYWIgPSAyO1xyXG5cdFx0XHRcdFx0XHR9XHJcblx0XHRcdFx0XHR9LCAxMDApO1xyXG5cdFx0XHRcdH0gZWxzZSB7XHJcblx0XHRcdFx0XHQvLyDlpoLmnpzmnKrpgInkuK3vvIzliJnmiafooYzlvIDlt6XpgLvovpFcclxuXHRcdFx0XHRcdGxldCBvcmRlclNlbGVjdCA9IFt7XHJcblx0XHRcdFx0XHRcdG9yZGVySWQ6IGl0ZW0uaWQsXHJcblx0XHRcdFx0XHRcdG9yZGVyTm86IGl0ZW0uZGFhMDAxXHJcblx0XHRcdFx0XHR9XTtcclxuXHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0bGV0IGVkaXREYXRlID0gdGhpcy5mb3JtYXREYXRlKG5ldyBEYXRlKCkpO1xyXG5cdFx0XHRcdFx0XHJcblx0XHRcdFx0XHR0aGlzLiRwb3N0KHtcclxuXHRcdFx0XHRcdFx0dXJsOiBcIi9NZXNPcmRlclNlbGVjdC9BZGRcIixcclxuXHRcdFx0XHRcdFx0ZGF0YToge1xyXG5cdFx0XHRcdFx0XHRcdG1hY2hpbmVObzogdGhpcy5tYWNoaW5lTm8sXHJcblx0XHRcdFx0XHRcdFx0ZWRpdERhdGU6IGVkaXREYXRlLFxyXG5cdFx0XHRcdFx0XHRcdGl0ZW06IG9yZGVyU2VsZWN0XHJcblx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdH0pLnRoZW4oYXN5bmMgcmVzID0+IHtcclxuXHRcdFx0XHRcdFx0aWYgKHJlcy5kYXRhLnRiQmlsbExpc3QpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLmdldFdvbWRhYUlzU2hvdygpO1xyXG5cdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdFx0XHRcdC8vIOiwg+eUqOWQjuerr+aWueazlee7keWumuaVsOmHh+agh+W/l1xyXG5cdFx0XHRcdFx0XHRcdGNvbnN0IGJpbmRTdWNjZXNzID0gYXdhaXQgdGhpcy5iaW5kRGF0YUNvbGxlY3Rpb25GbGFnKGl0ZW0uZGFhMDAxKTtcclxuXHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdFx0XHQvLyDnu5HlrprmiJDlip/lkI7lho3mj5DnpLrlvIDlt6XmiJDlip9cclxuXHRcdFx0XHRcdFx0XHRpZiAoYmluZFN1Y2Nlc3MpIHtcclxuXHRcdFx0XHRcdFx0XHRcdHVuaS5zaG93VG9hc3Qoe1xyXG5cdFx0XHRcdFx0XHRcdFx0XHR0aXRsZTogJ+W8gOW3peaIkOWKnycsXHJcblx0XHRcdFx0XHRcdFx0XHRcdGljb246ICdzdWNjZXNzJyxcclxuXHRcdFx0XHRcdFx0XHRcdFx0ZHVyYXRpb246IDIwMDBcclxuXHRcdFx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdH1cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0fVxyXG5cdFx0XHR9LFxyXG5cdFx0XHRcclxuXHRcdFx0Ly8g5paw5aKe77ya57uR5a6a5pWw6YeH5qCH5b+X5pa55rOVXHJcblx0XHRcdGFzeW5jIGJpbmREYXRhQ29sbGVjdGlvbkZsYWcob3JkZXJObykge1xyXG5cdFx0XHRcdHRyeSB7XHJcblx0XHRcdFx0XHRjb25zdCByZXMgPSBhd2FpdCB0aGlzLiRwb3N0KHtcclxuXHRcdFx0XHRcdFx0dXJsOiAnL01lc09yZGVyRGF0YUNvbGxlY3Rpb24vQmluZERhdGFDb2xsZWN0aW9uRmxhZycsXHJcblx0XHRcdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdFx0XHRtYWNoaW5lTm86IHRoaXMubWFjaGluZU5vLFxyXG5cdFx0XHRcdFx0XHRcdG9yZGVyTm86IG9yZGVyTm9cclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRcclxuXHRcdFx0XHRcdGlmIChyZXMgJiYgcmVzLnN0YXR1cyA9PT0gMCkge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmxvZygn5pWw6YeH5qCH5b+X57uR5a6a5oiQ5YqfJyk7XHJcblx0XHRcdFx0XHRcdHRoaXMuJHNob3dNZXNzYWdlKCfmlbDph4fmoIflv5fnu5HlrprmiJDlip8nKTtcclxuXHRcdFx0XHRcdFx0cmV0dXJuIHRydWU7XHJcblx0XHRcdFx0XHR9IGVsc2Uge1xyXG5cdFx0XHRcdFx0XHRjb25zb2xlLmVycm9yKCfmlbDph4fmoIflv5fnu5HlrprlpLHotKU6JywgcmVzLm1lc3NhZ2UgfHwgJ+acquefpemUmeivrycpO1xyXG5cdFx0XHRcdFx0XHR0aGlzLiRzaG93TWVzc2FnZSgn5pWw6YeH5qCH5b+X57uR5a6a5aSx6LSlJyk7XHJcblx0XHRcdFx0XHRcdHJldHVybiBmYWxzZTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9IGNhdGNoIChlcnIpIHtcclxuXHRcdFx0XHRcdGNvbnNvbGUuZXJyb3IoJ+e7keWumuaVsOmHh+agh+W/l+mUmeivrzonLCBlcnIpO1xyXG5cdFx0XHRcdFx0dGhpcy4kc2hvd01lc3NhZ2UoJ+e7keWumuaVsOmHh+agh+W/l+Wksei0pScpO1xyXG5cdFx0XHRcdFx0cmV0dXJuIGZhbHNlO1xyXG5cdFx0XHRcdH1cclxuXHRcdFx0fSxcclxuXHRcdFx0XHJcblx0XHRcdC8vIOWkhOeQhuaaguWBnO+8iOS9v+eUqOa4heepuumHjemAieeahOmAu+i+ke+8iVxyXG5cdFx0XHRhc3luYyBoYW5kbGVQYXVzZVdvcmsoaXRlbSkge1xyXG5cdFx0XHRcdGlmICghdGhpcy5tYWNoaW5lTm8pIHtcclxuXHRcdFx0XHRcdHJldHVybjtcclxuXHRcdFx0XHR9XHJcblx0XHRcdFx0XHRcdFx0XHRcclxuXHRcdFx0XHQvLyDnm7TmjqXnlKggZmxhZyDliKTmlq1cclxuXHRcdFx0XHRpZiAodGhpcy5oYXNCaW5kZWRDdXR0ZXJGbGFnKSB7XHJcblx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0dGl0bGU6ICflvZPliY3lt6XljZXlt7Lnu5HlrprliIDlhbfvvIzkuI3og73mmoLlgZwnLFxyXG5cdFx0XHRcdFx0XHRpY29uOiAnZXJyb3InLFxyXG5cdFx0XHRcdFx0XHRkdXJhdGlvbjogMjAwMFxyXG5cdFx0XHRcdFx0fSk7XHJcblx0XHRcdFx0XHRyZXR1cm47XHJcblx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0bGV0IGVkaXREYXRlID0gdGhpcy5mb3JtYXREYXRlKG5ldyBEYXRlKCkpO1xyXG5cdFx0XHRcdHRoaXMuc2VsZWN0ZWRJbmRleHMgPSBbXTtcclxuXHRcdFx0XHRcdFx0XHRcdFxyXG5cdFx0XHRcdHRoaXMuJHBvc3Qoe1xyXG5cdFx0XHRcdFx0dXJsOiBcIi9NZXNPcmRlclNlbGVjdC9SZW1vdmVcIixcclxuXHRcdFx0XHRcdGRhdGE6IHtcclxuXHRcdFx0XHRcdFx0bWFjaGluZU5vOiB0aGlzLm1hY2hpbmVObyxcclxuXHRcdFx0XHRcdFx0ZWRpdERhdGU6IGVkaXREYXRlXHJcblx0XHRcdFx0XHR9LFxyXG5cdFx0XHRcdH0pLnRoZW4ocmVzID0+IHtcclxuXHRcdFx0XHRcdGlmIChyZXMuZGF0YS50YkJpbGxMaXN0ID4gMCkge1xyXG5cdFx0XHRcdFx0XHR0aGlzLmlzU2hvd1RhYmxlRGF0YSA9IFtdO1xyXG5cdFx0XHRcdFx0XHR1bmkuc2hvd1RvYXN0KHtcclxuXHRcdFx0XHRcdFx0XHR0aXRsZTogJ+W3peWNleW3suaaguWBnCcsXHJcblx0XHRcdFx0XHRcdFx0aWNvbjogJ3N1Y2Nlc3MnLFxyXG5cdFx0XHRcdFx0XHRcdGR1cmF0aW9uOiAyMDAwXHJcblx0XHRcdFx0XHRcdH0pO1xyXG5cdFx0XHRcdFx0XHRcdFx0XHRcdFx0XHJcblx0XHRcdFx0XHRcdC8vIOaaguWBnOaIkOWKn+WQju+8jOWIt+aWsOW9k+WJjemhtemdolxyXG5cdFx0XHRcdFx0XHRzZXRUaW1lb3V0KCgpID0+IHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnJlZnJlc2goKTtcclxuXHRcdFx0XHRcdFx0fSwgNTAwKTtcclxuXHRcdFx0XHRcdH1cclxuXHRcdFx0XHR9KTtcclxuXHRcdFx0fSxcclxuXHRcdFx0XHRcclxuXHRcdFx0Ly8g5ZCv5Yqo6Ieq5Yqo5Yi35pawXHJcblx0XHRcdHN0YXJ0QXV0b1JlZnJlc2goKSB7XHJcblx0XHRcdFx0Ly8g5YWI5riF6Zmk546w5pyJ5a6a5pe25ZmoXHJcblx0XHRcdFx0dGhpcy5zdG9wQXV0b1JlZnJlc2goKTtcclxuXHRcdFx0XHQvLyDlj6rlnKjlt6XljZXpgInmi6npobXpnaLlkK/liqjlrprml7bliLfmlrBcclxuXHRcdFx0XHRpZiAodGhpcy5jdXJyZW50VGFiID09PSA3KSB7XHJcblx0XHRcdFx0XHR0aGlzLmF1dG9SZWZyZXNoVGltZXIgPSBzZXRJbnRlcnZhbCgoKSA9PiB7XHJcblx0XHRcdFx0XHRcdGlmICh0aGlzLmN1cnJlbnRUYWIgPT09IDcpIHtcclxuXHRcdFx0XHRcdFx0XHR0aGlzLnJlZnJlc2goKTtcclxuXHRcdFx0XHRcdFx0fVxyXG5cdFx0XHRcdFx0fSwgdGhpcy5hdXRvUmVmcmVzaEludGVydmFsKTtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH0sXHJcblx0XHRcdFx0XHJcblx0XHRcdC8vIOWBnOatouiHquWKqOWIt+aWsFxyXG5cdFx0XHRzdG9wQXV0b1JlZnJlc2goKSB7XHJcblx0XHRcdFx0aWYgKHRoaXMuYXV0b1JlZnJlc2hUaW1lcikge1xyXG5cdFx0XHRcdFx0Y2xlYXJJbnRlcnZhbCh0aGlzLmF1dG9SZWZyZXNoVGltZXIpO1xyXG5cdFx0XHRcdFx0dGhpcy5hdXRvUmVmcmVzaFRpbWVyID0gbnVsbDtcclxuXHRcdFx0XHR9XHJcblx0XHRcdH1cclxuXHRcdH0sXHJcblx0XHRjb21wdXRlZDoge31cclxuXHR9O1xyXG48L3NjcmlwdD5cclxuXHJcbjxzdHlsZSBsYW5nPVwic2Nzc1wiPlxyXG5cclxuICAgIDpkZWVwKC5jaGVja2JveCksXHJcbiAgICA6ZGVlcCguY2hlY2tib3hfX2lubmVyKSB7XHJcbiAgICAgICAgd2lkdGg6IDYwcHggIWltcG9ydGFudDtcclxuICAgICAgICBoZWlnaHQ6IDYwcHggIWltcG9ydGFudDtcclxuICAgICAgICBtaW4td2lkdGg6IDYwcHggIWltcG9ydGFudDtcclxuICAgICAgICBtaW4taGVpZ2h0OiA2MHB4ICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgcGFkZGluZzogMTZweCAhaW1wb3J0YW50O1xyXG4gICAgICAgIG1hcmdpbi1yaWdodDogMjBweCAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG5cclxuICAgIC5wb3B1cCAubGFyZ2Utc2VsZWN0aW9uLXRhYmxlIHtcclxuICAgICAgICB3aWR0aDogMTAwJSAhaW1wb3J0YW50O1xyXG4gICAgICAgIHRhYmxlLWxheW91dDogYXV0byAhaW1wb3J0YW50OyAvLyDorqnooajmoLzoh6rliqjliIbphY3lrr3luqZcclxuICAgIH1cclxuXHJcbiAgICAucm93LXNlbGVjdGVkIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjZTBmM2ZmICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG5cdC5mb250IHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICM2NjY2NjY7XHJcblx0XHRoZWlnaHQ6IDMwcHg7XHJcblx0XHR3aWR0aDogMTAwdnc7XHJcblx0fVxyXG5cclxuXHJcblx0Lyog5LiK6YOo5Yy65Z+f5qC35byP77yM5bemNzAlIOWPszMwJSAqL1xyXG5cdC50b3Atc2VjdGlvbiB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XHJcblx0XHRtYXJnaW4tYm90dG9tOiAyMHB4O1xyXG5cdFx0cGFkZGluZzogMjBweCAxMHB4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IHJvdztcclxuXHRcdGZsZXgtd3JhcDogd3JhcDtcclxuXHRcdGFsaWduLWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdGFsaWduLWl0ZW1zOiBzdHJldGNoO1xyXG5cdFx0Lyog5aKe5Yqg5LiK5LiL55qEcGFkZGluZyAqL1xyXG5cdH1cclxuXHJcblx0LnJpZ2h0LXNpZGUge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogI2YzZjNmMztcclxuXHRcdHBhZGRpbmc6IDE2cHg7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRib3JkZXItcmFkaXVzOiA4cHg7XHJcblx0XHR3aWR0aDogMjUlO1xyXG5cdFx0Zm9udC1zaXplOiAxNHB4O1xyXG5cdH1cclxuXHJcblx0LmZvcm0tcm93IHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblx0XHRtYXJnaW4tYm90dG9tOiAxLjJ2aDtcclxuXHR9XHJcblxyXG5cdC5mb3JtLWl0ZW0ge1xyXG5cdFx0d2lkdGg6IDMwJTtcclxuXHR9XHJcblxyXG5cdC5pbnAge1xyXG5cdFx0d2lkdGg6IDkwJTtcclxuXHRcdHBhZGRpbmc6IDRweDtcclxuXHRcdGJvcmRlcjogMXB4IHNvbGlkICNjY2M7XHJcblx0XHRib3JkZXItcmFkaXVzOiA0cHg7XHJcblx0XHRtYXJnaW4tdG9wOiA0cHg7XHJcblx0fVxyXG5cclxuXHQuc3RhdHVzLWJsb2NrIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xyXG5cdFx0YWxpZ24taXRlbXM6IGNlbnRlcjtcclxuXHR9XHJcblxyXG5cdC5zdGF0dXMtYmxvY2sgcCB7XHJcblx0XHRtYXJnaW46IDhweCAwO1xyXG5cdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0fVxyXG5cclxuXHQubGVmdC1zaWRlIHtcclxuXHRcdHdpZHRoOiA2NSU7XHJcblx0fVxyXG5cclxuXHQudGFibGUtcm93IHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWJldHdlZW47XHJcblx0XHRwYWRkaW5nOiA4cHg7XHJcblx0XHRib3JkZXI6IDFweCBzb2xpZCAjMDAwMDAwO1xyXG5cdFx0Zm9udC1zaXplOiAyMHB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0fVxyXG5cclxuXHQudGFibGUtY2VsbCB7XHJcblx0XHR3aWR0aDogNTAlO1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdH1cclxuXHJcblx0Lyog5Y2h54mH5qC35byPICovXHJcbiAgICAuY2FyZCB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcbiAgICAgICAgcGFkZGluZzogMDsgLy8g5Y676Zmk5aSa5L2Z5YaF6L656LedXHJcbiAgICAgICAgcG9zaXRpb246IHJlbGF0aXZlO1xyXG4gICAgICAgIG1hcmdpbi1ib3R0b206IDI1cHg7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7IC8vIOWhq+a7oeeItuWuueWZqFxyXG4gICAgICAgIGJveC1zaXppbmc6IGJvcmRlci1ib3g7XHJcbiAgICB9XHJcblxyXG4vKiAgICAvLy5jb250ZW50IHtcclxuICAgIC8vICAgIGZsZXg6IDE7XHJcbiAgICAvLyAgICBwYWRkaW5nOiAxdmggMXZ3OyAvLyDkv53or4HmlbTkvZPmnInlt6blj7PnlZnnmb1cclxuICAgIC8vICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlO1xyXG4gICAgLy8gICAgZm9udC1zaXplOiAxLjV2dztcclxuICAgIC8vfSovXHJcblxyXG5cdC8qIOWNoeeJh+agh+mimOWcqOW3puS4iuinkiAqL1xyXG5cdC5jYXJkLWhlYWRlciB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR0b3A6IC0xMHB4O1xyXG5cdFx0bGVmdDogMTZweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZmZmZmY7XHJcblx0XHRwYWRkaW5nOiAycHggOHB4O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNHB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IGJvbGQ7XHJcblx0fVxyXG5cclxuXHQvKiDkuK3pg6jljLrln5/vvIzmr4/ooYwz5Liq5a2X5q61ICovXHJcblx0LnN0YXR1cy1yb3csXHJcblx0LmNoZWNrLXJvdyB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0anVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xyXG5cdFx0bWFyZ2luLWJvdHRvbTogMTBweDtcclxuXHR9XHJcblxyXG5cdC5zdGF0dXMtcm93IGxhYmVsLFxyXG5cdC5jaGVjay1yb3cgbGFiZWwge1xyXG5cdFx0d2lkdGg6IDMwJTtcclxuXHRcdHBhZGRpbmctcmlnaHQ6IDEwcHg7XHJcblx0XHR0ZXh0LWFsaWduOiByaWdodDtcclxuXHR9XHJcblxyXG5cdC5zdGF0dXMtcm93IGlucHV0LFxyXG5cdC5jaGVjay1yb3cgaW5wdXQge1xyXG5cdFx0d2lkdGg6IDY1JTtcclxuXHR9XHJcblxyXG5cdC8v5Z+656GA5qC35byPXHJcblx0LmNvbnRhaW5lciB7XHJcblx0XHRkaXNwbGF5OiBmbGV4O1xyXG5cdFx0ZmxleC1kaXJlY3Rpb246IGNvbHVtbjtcclxuXHR9XHJcblxyXG5cdC50YWItYmFyIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IHNwYWNlLWFyb3VuZDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmNWY1ZjU7XHJcblx0XHRwYWRkaW5nOiAxdmg7XHJcblx0XHRwYWRkaW5nLXRvcDogMzBweDtcclxuXHRcdGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjY2NjO1xyXG5cdH1cclxuXHJcblx0LnRvcC1yaWdodCB7XHJcblx0XHRwb3NpdGlvbjogYWJzb2x1dGU7XHJcblx0XHR0b3A6IC0xNXB4O1xyXG5cdFx0cmlnaHQ6IDUwcHg7XHJcblx0XHR6LWluZGV4OiAxMDAwO1xyXG5cdH1cclxuXHJcblx0LnJlZnJlc2gtYnRuIHtcclxuXHRcdHBhZGRpbmc6IDEwcHg7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDBBMkU5O1xyXG5cdFx0Y29sb3I6IHdoaXRlO1xyXG5cdFx0Ym9yZGVyOiBub25lO1xyXG5cdFx0Zm9udC1zaXplOiAyMnB4O1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNXB4O1xyXG5cdH1cclxuXHJcblx0LnRhYi1pdGVtIHtcclxuXHRcdGZsZXg6IDE7XHJcblx0XHR0ZXh0LWFsaWduOiBjZW50ZXI7XHJcblx0XHRtYXJnaW4tcmlnaHQ6IDAuNXZ3O1xyXG5cdFx0cGFkZGluZzogMXZoO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogMC41dnc7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xyXG5cdFx0Y29sb3I6ICMwMDdhZmY7XHJcblx0XHRjdXJzb3I6IHBvaW50ZXI7XHJcblx0XHRmb250LXNpemU6IDIycHg7XHJcblx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdFx0dHJhbnNpdGlvbjogYmFja2dyb3VuZC1jb2xvciAwLjNzLCBjb2xvciAwLjNzO1xyXG5cdFx0Ym94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuXHR9XHJcblxyXG5cdC50YWItaXRlbS5hY3RpdmUge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzAwN2FmZjtcclxuXHRcdGNvbG9yOiAjZmZmO1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDYwMDtcclxuXHRcdGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKDAsIDEyMiwgMjU1LCAwLjMpO1xyXG5cdH1cclxuXHJcblx0LmNvbnRlbnQge1xyXG5cdFx0ZmxleDogMTtcclxuXHRcdHBhZGRpbmc6IDF2aCAxdnc7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuXHRcdGZvbnQtc2l6ZTogMTZweDtcclxuXHR9XHJcblxyXG4gICAgLnBpY2tlciB7XHJcbiAgICAgICAgZmxvYXQ6IGxlZnQ7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogN3B4O1xyXG4gICAgICAgIG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG4gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjtcclxuICAgICAgICBmb250LXNpemU6IDMycHggIWltcG9ydGFudDsgLy8g5by65Yi25aSn5a2X5L2T77yM6YCC6YWN5L2O5a+G5bqmXHJcbiAgICAgICAgbWluLWhlaWdodDogNjBweDsgLy8g6K6p6YCJ5oup5qGG6auY5bqm5Lmf5Y+Y5aSnXHJcbiAgICAgICAgbGluZS1oZWlnaHQ6IDYwcHg7XHJcbiAgICAgICAgcGFkZGluZzogNS41cHggMXB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7IC8vIOi/memHjOaUueS4uuiTneiJslxyXG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICMwMDdhZmY7IC8vIOi+ueahhuS5n+aUueS4uuiTneiJslxyXG4gICAgICAgIGNvbG9yOiAjMDA3YWZmOyAvLyDlrZfkvZPpopzoibLmlLnkuLrnmb3oibLvvIzkv53or4Hlj6/or7vmgKdcclxuICAgICAgICBib3JkZXItcmFkaXVzOiA2cHg7XHJcbiAgICAgICAgdHJhbnNpdGlvbjogYmFja2dyb3VuZCAwLjJzO1xyXG4gICAgfVxyXG5cclxuICAgIC50aCB7XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7XHJcbiAgICAgICAgY29sb3I6IGJsYWNrO1xyXG4gICAgICAgIGhlaWdodDogNnZoO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM1NTU7XHJcbiAgICAgICAgcGFkZGluZzogNnB4IDhweDtcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7XHJcbiAgICAgICAgd2hpdGUtc3BhY2U6IG5vcm1hbDtcclxuICAgICAgICB3b3JkLWJyZWFrOiBicmVhay1hbGw7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8qIOS4u+ihqOagvOi+ueahhuagt+W8jyAqL1xyXG4gICAgdW5pLXRhYmxlIHtcclxuICAgICAgICBib3JkZXI6IDJweCBzb2xpZCAjZDAwICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgYm9yZGVyLWNvbGxhcHNlOiBzZXBhcmF0ZSAhaW1wb3J0YW50O1xyXG4gICAgICAgIGJvcmRlci1zcGFjaW5nOiAwICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC51bmktdGgsIC51bmktdGQge1xyXG4gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICM1NTUgIWltcG9ydGFudDtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmUgIWltcG9ydGFudDtcclxuICAgICAgICB6LWluZGV4OiAxICFpbXBvcnRhbnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0taW5wdXQge1xyXG4gICAgICAgIHdvcmQtYnJlYWs6IGJyZWFrLWFsbDtcclxuICAgICAgICB3aGl0ZS1zcGFjZTogbm9ybWFsO1xyXG4gICAgICAgIGxpbmUtaGVpZ2h0OiAxLjQ7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAgICAgbWF4LXdpZHRoOiAxODBweDtcclxuICAgICAgICBvdmVyZmxvdy13cmFwOiBicmVhay13b3JkO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICBwYWRkaW5nOiA2cHggOHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6IHRyYW5zcGFyZW50OyAvKiDorr7nva7og4zmma/kuLrpgI/mmI4gKi9cclxuICAgIH1cclxuXHJcblx0Lyog5bqV6YOo5L+d5a2Y5ZKM5Y+W5raI5oyJ6ZKuICovXHJcbiAgICAuYm90dG9tLXNlY3Rpb24ge1xyXG4gICAgICAgIGRpc3BsYXk6IGZsZXg7XHJcbiAgICAgICAganVzdGlmeS1jb250ZW50OiBzcGFjZS1hcm91bmQ7XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMnZoO1xyXG4gICAgICAgIHBhZGRpbmc6IDJ2aCAxdnc7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDsgLy8g5YeP5bCP6aG26YOo6L656Led77yM56Gu5L+d5oyJ6ZKu5Zyo5by556qX5YaF5q2j56Gu5pi+56S6XHJcbiAgICB9XHJcblxyXG5cdC5zYXZlLWJ0bixcclxuXHQuY2FuY2VsLWJ0biB7XHJcblx0XHR3aWR0aDogNDglO1xyXG5cdFx0cGFkZGluZzogMS41dmg7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDBhMmU5O1xyXG5cdFx0Y29sb3I6IHdoaXRlO1xyXG5cdFx0Zm9udC1zaXplOiAyMnB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDUwMDtcclxuXHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdHRleHQtYWxpZ246IGNlbnRlcjtcclxuXHRcdGN1cnNvcjogcG9pbnRlcjtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDRweDtcclxuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMSk7XHJcblx0XHR0cmFuc2l0aW9uOiBhbGwgMC4zcztcclxuXHR9XHJcblx0XHJcblx0LmNhbmNlbC1idG4ge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzAwQTJFOTtcclxuXHRcdGNvbG9yOiB3aGl0ZTtcclxuXHR9XHJcblx0XHJcblx0Lyog5pON5L2c5oyJ6ZKu5Yy65Z+fICovXHJcblx0Lm9wZXJhdGlvbi1idG5zIHtcclxuXHRcdGRpc3BsYXk6IGZsZXg7XHJcblx0XHRqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuXHRcdGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcblx0XHRnYXA6IDEwcHg7XHJcblx0fVxyXG5cdFxyXG5cdC8qIOW8gOW3peaMiemSriAqL1xyXG5cdC5zdGFydC1idG4ge1xyXG5cdFx0cGFkZGluZzogOHB4IDIwcHg7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjMDBBMkU5O1xyXG5cdFx0Y29sb3I6IHdoaXRlO1xyXG5cdFx0Zm9udC1zaXplOiAxOHB4O1xyXG5cdFx0Zm9udC13ZWlnaHQ6IDUwMDtcclxuXHRcdGJvcmRlcjogbm9uZTtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDRweDtcclxuXHRcdGN1cnNvcjogcG9pbnRlcjtcclxuXHRcdHRyYW5zaXRpb246IGFsbCAwLjNzO1xyXG5cdFx0Ym94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMTYyLCAyMzMsIDAuMik7XHJcblx0fVxyXG5cdFxyXG5cdC5zdGFydC1idG46aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzAwOTJkNjtcclxuXHRcdGJveC1zaGFkb3c6IDAgNHB4IDhweCByZ2JhKDAsIDE2MiwgMjMzLCAwLjMpO1xyXG5cdFx0dHJhbnNmb3JtOiB0cmFuc2xhdGVZKC0xcHgpO1xyXG5cdH1cclxuXHRcclxuXHQvKiDlvIDlt6XmjInpkq4gLSDpgInkuK3nirbmgIHvvIjnu7/oibLvvIkgKi9cclxuXHQuc3RhcnQtYnRuLXNlbGVjdGVkIHtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICM1MmM0MWEgIWltcG9ydGFudDtcclxuXHRcdGJveC1zaGFkb3c6IDAgMnB4IDRweCByZ2JhKDgyLCAxOTYsIDI2LCAwLjMpICFpbXBvcnRhbnQ7XHJcblx0fVxyXG5cdFxyXG5cdC5zdGFydC1idG4tc2VsZWN0ZWQ6aG92ZXI6bm90KDpkaXNhYmxlZCkge1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzQ5YjAxNSAhaW1wb3J0YW50O1xyXG5cdFx0Ym94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEoODIsIDE5NiwgMjYsIDAuNCkgIWltcG9ydGFudDtcclxuXHR9XHJcblx0XHJcblx0Lyog5pqC5YGc5oyJ6ZKuICovXHJcblx0LnBhdXNlLWJ0biB7XHJcblx0XHRwYWRkaW5nOiA4cHggMjBweDtcclxuXHRcdGJhY2tncm91bmQtY29sb3I6ICNmZjRkNGY7XHJcblx0XHRjb2xvcjogd2hpdGU7XHJcblx0XHRmb250LXNpemU6IDE4cHg7XHJcblx0XHRmb250LXdlaWdodDogNTAwO1xyXG5cdFx0Ym9yZGVyOiBub25lO1xyXG5cdFx0Ym9yZGVyLXJhZGl1czogNHB4O1xyXG5cdFx0Y3Vyc29yOiBwb2ludGVyO1xyXG5cdFx0dHJhbnNpdGlvbjogYWxsIDAuM3M7XHJcblx0XHRib3gtc2hhZG93OiAwIDJweCA0cHggcmdiYSgyNTUsIDc3LCA3OSwgMC4yKTtcclxuXHR9XHJcblx0XHJcblx0LnBhdXNlLWJ0bjpob3Zlcjpub3QoOmRpc2FibGVkKSB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZmYzMzM2O1xyXG5cdFx0Ym94LXNoYWRvdzogMCA0cHggOHB4IHJnYmEoMjU1LCA3NywgNzksIDAuMyk7XHJcblx0XHR0cmFuc2Zvcm06IHRyYW5zbGF0ZVkoLTFweCk7XHJcblx0fVxyXG5cdFxyXG5cdC8qIOaMiemSruemgeeUqOeKtuaAgSAqL1xyXG5cdC5zdGFydC1idG46ZGlzYWJsZWQsXHJcblx0LnBhdXNlLWJ0bjpkaXNhYmxlZCB7XHJcblx0XHRiYWNrZ3JvdW5kLWNvbG9yOiAjZDlkOWQ5ICFpbXBvcnRhbnQ7XHJcblx0XHRjb2xvcjogIzk5OSAhaW1wb3J0YW50O1xyXG5cdFx0Y3Vyc29yOiBub3QtYWxsb3dlZCAhaW1wb3J0YW50O1xyXG5cdFx0Ym94LXNoYWRvdzogbm9uZSAhaW1wb3J0YW50O1xyXG5cdFx0b3BhY2l0eTogMC42O1xyXG5cdH1cclxuXHJcbiAgICAub3ZlcmxheSB7XHJcbiAgICAgICAgcG9zaXRpb246IGZpeGVkO1xyXG4gICAgICAgIHRvcDogMDtcclxuICAgICAgICBsZWZ0OiAwO1xyXG4gICAgICAgIHdpZHRoOiAxMDAlO1xyXG4gICAgICAgIGhlaWdodDogMTAwJTtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDAsIDAsIDAsIDAuNSk7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIHotaW5kZXg6IDIwMDA7IC8vIOWinuWKoHotaW5kZXjvvIznoa7kv53lvLnnqpflnKjliLfmlrDmjInpkq7kuYvkuIpcclxuICAgIH1cclxuXHJcbiAgICAucG9wdXAge1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNmZmY7XHJcbiAgICAgICAgcGFkZGluZzogMnZoIDJ2aCA4dmggMnZoOyAvLyDlop7liqDlupXpg6jlhoXovrnot53vvIzkuLrmjInpkq7nlZnlh7rnqbrpl7RcclxuICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjY2NjO1xyXG4gICAgICAgIGJveC1zaGFkb3c6IDAgMCAxMHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICAgICAgICB3aWR0aDogOTAuMTZ2dzsgLy8g5Y6f5p2l55qEOTh2d+e8qeWwjzglICg5OHZ3ICogMC45MilcclxuICAgICAgICBoZWlnaHQ6IDY4dmg7IC8vIOWOn+adpeeahDg1dmjnvKnlsI8yMCUgKDg1dmggKiAwLjgpXHJcbiAgICAgICAgZm9udC1zaXplOiAxLjZ2dztcclxuICAgICAgICBib3gtc2l6aW5nOiBib3JkZXItYm94OyAvLyDnoa7kv53lhoXovrnot53kuI3lvbHlk43mgLvlsLrlr7hcclxuICAgIH1cclxuXHJcblx0LnByaW50LWJ0biB7XHJcblx0XHRmbG9hdDogbGVmdDtcclxuXHRcdG1hcmdpbi10b3A6IDRweDtcclxuXHRcdG1hcmdpbi1sZWZ0OiAxMHB4O1xyXG5cdFx0dGV4dC1hbGlnbjogY2VudGVyO1xyXG5cdFx0Zm9udC1zaXplOiAyMnB4O1xyXG5cdFx0Y29sb3I6IHdoaXRlO1xyXG5cdFx0YmFja2dyb3VuZC1jb2xvcjogIzAwQTJFOTtcclxuXHRcdHBhZGRpbmc6IDBweCA5MHB4O1xyXG5cdFx0Ym9yZGVyOiAycHggc29saWQgIzAwQTJFOTtcclxuXHRcdGN1cnNvcjogcG9pbnRlcjtcclxuXHRcdGJvcmRlci1yYWRpdXM6IDAuOHZ3O1xyXG5cdH1cclxuXHJcbiAgICAubWFjaGluZS1uYW1lLWJveCB7XHJcbiAgICAgICAgYm9yZGVyOiAycHggc29saWQgIzAwN2FmZjsgLyog6JOd6Imy6L655qGGICovXHJcbiAgICAgICAgYm9yZGVyLXJhZGl1czogOHB4O1xyXG4gICAgICAgIGZvbnQtZmFtaWx5OiBmYW50YXN5O1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMzNweDtcclxuICAgICAgICBtYXJnaW4tdG9wOiAyMHB4O1xyXG4gICAgICAgIHBhZGRpbmc6IDE1cHggMjhweDsgLyog5LiK5LiLMjBweO+8jOW3puWPszQ4cHjvvIzlop7liqDlhoXovrnot50gKi9cclxuICAgICAgICB3aWR0aDogMzAwcHg7IC8qIOabtOWuve+8jOS/neivgeWGheWuueWujOaVtOaYvuekuiAqL1xyXG4gICAgICAgIGhlaWdodDogNzBweDsgLyog5aKe5Yqg6auY5bqmICovXHJcbiAgICAgICAgYm94LXNpemluZzogYm9yZGVyLWJveDtcclxuICAgICAgICBiYWNrZ3JvdW5kOiAjZmZmO1xyXG4gICAgICAgIGNvbG9yOiAjMjIyO1xyXG4gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkO1xyXG4gICAgICAgIHRleHQtYWxpZ246IGxlZnQ7XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICB9XHJcblxyXG4vKiAgICAvL3YtZGVlcCAuY2hlY2tib3gge1xyXG4gICAgLy8gICAgcGFkZGluZzogMTAgMTBweDtcclxuICAgIC8vICAgIHdpZHRoOiAyNnB4O1xyXG4gICAgLy8gICAgcGFkZGluZy1sZWZ0OiAxMnB4O1xyXG4gICAgLy8gICAgZGlzcGxheTogdGFibGUtY2VsbDtcclxuICAgIC8vICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7XHJcbiAgICAvLyAgICBjb2xvcjogIzMzMztcclxuICAgIC8vICAgIGZvbnQtd2VpZ2h0OiA1MDA7XHJcbiAgICAvLyAgICBib3JkZXItYm90dG9tOiAxcHggI2ViZWVmNSBzb2xpZDtcclxuICAgIC8vICAgIGZvbnQtc2l6ZTogMTRweDtcclxuICAgIC8vfSovXHJcblxyXG4gICAgLnBvcHVwIC5jYXJkIHtcclxuICAgICAgICBtYXJnaW4tYm90dG9tOiA0MHB4ICFpbXBvcnRhbnQ7IC8vIOWOn+adpTI1MHB477yM5pS55Li6NDBweO+8jOepuueZveaYjuaYvuWHj+WwkVxyXG4gICAgfVxyXG5cclxuXHRAbWVkaWEgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiAxOTIwcHgpIHtcclxuXHRcdC50YWItaXRlbSB7XHJcblx0XHRcdGZvbnQtc2l6ZTogMjJweDtcclxuXHRcdH1cclxuXHJcblx0XHQuY29udGVudCB7XHJcblx0XHRcdHBhZGRpbmc6IDF2dztcclxuXHRcdFx0Zm9udC1zaXplOiAyMnB4O1xyXG5cdFx0fVxyXG5cclxuXHRcdC5mb3JtLWlucHV0IHtcclxuXHRcdFx0Zm9udC1zaXplOiAyMnB4O1xyXG5cdFx0fVxyXG5cdH1cclxuXHJcbiAgICAudW5pLXRkLFxyXG4gICAgdGQge1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWwgIWltcG9ydGFudDsgLy8g5YWB6K646Ieq5Yqo5o2i6KGMXHJcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsICFpbXBvcnRhbnQ7IC8vIOWNleivjS/kuK3mlofpg73og73mlq3ooYxcclxuICAgICAgICBsaW5lLWhlaWdodDogMS40OyAvLyDooYzpq5jpgILlvZPvvIzkvr/kuo7lpJrooYzmmL7npLpcclxuICAgICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7IC8vIOWxheS4reaYvuekuu+8iOWmgumcgOW3puWvuem9kOWPr+aUueS4uiBsZWZ077yJXHJcbiAgICAgICAgdmVydGljYWwtYWxpZ246IG1pZGRsZTsgLy8g5Z6C55u05bGF5LitXHJcbiAgICAgICAgbWF4LXdpZHRoOiAxODBweDsgLy8g5L+d5oyB5Y2V5YWD5qC85pyA5aSn5a695bqmXHJcbiAgICAgICAgb3ZlcmZsb3ctd3JhcDogYnJlYWstd29yZDsgLy8g5YW85a655oCn5pu05aW9XHJcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogdHJhbnNwYXJlbnQ7IC8qIOiuvue9ruiDjOaZr+S4uumAj+aYjiAqL1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOW8ueeql+WGheihqOagvOagt+W8j+S4jueUn+S6p+aKpeW3pemhtemdouWOhuWPsuaKpeW3peiusOW9leihqOagvOS4gOiHtFxyXG4gICAgLnBvcHVwIC5sYXJnZS1zZWxlY3Rpb24tdGFibGUgLnVuaS10aCxcclxuICAgIC5wb3B1cCAubGFyZ2Utc2VsZWN0aW9uLXRhYmxlIC51bmktdGQge1xyXG4gICAgICAgIHBhZGRpbmc6IDZweCA4cHg7XHJcbiAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyO1xyXG4gICAgICAgIHdoaXRlLXNwYWNlOiBub3JtYWw7XHJcbiAgICAgICAgd29yZC1icmVhazogYnJlYWstYWxsO1xyXG4gICAgICAgIGZvbnQtc2l6ZTogMjJweDtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB0cmFuc3BhcmVudDsgLyog6K6+572u6IOM5pmv5Li66YCP5piOICovXHJcbiAgICAgICAgYm9yZGVyOiAxcHggc29saWQgIzU1NSAhaW1wb3J0YW50O1xyXG4gICAgfVxyXG4gICAgXHJcbiAgICAucG9wdXAgLmxhcmdlLXNlbGVjdGlvbi10YWJsZSAudW5pLXRoIHtcclxuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTtcclxuICAgICAgICBjb2xvcjogYmxhY2s7XHJcbiAgICAgICAgZm9udC13ZWlnaHQ6IDYwMDtcclxuICAgICAgICBmb250LXNpemU6IDIycHg7XHJcbiAgICB9XHJcbiAgICBcclxuICAgIC8qIOW8ueeql+ihqOagvOWkluahhue6vyAqL1xyXG4gICAgLnBvcHVwIC5sYXJnZS1zZWxlY3Rpb24tdGFibGUge1xyXG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICNkMDAgIWltcG9ydGFudDtcclxuICAgICAgICBib3JkZXItY29sbGFwc2U6IHNlcGFyYXRlICFpbXBvcnRhbnQ7XHJcbiAgICAgICAgYm9yZGVyLXNwYWNpbmc6IDAgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcbiAgICAuc2VsZWN0LWJ0biB7XHJcbiAgICAgICAgd2lkdGg6IDE1MHB4OyAvLyDljp/mnaXnmoQ3MCUgKDE4MHB4ICogMC43KVxyXG4gICAgICAgIGhlaWdodDogNzVweDsgLy8g5Y6f5p2l55qENjUlICg4MHB4ICogMC42NSlcclxuICAgICAgICBmb250LXNpemU6IDIycHg7IC8vIOWtl+S9k+S5n+eVpeWkp1xyXG4gICAgICAgIC8vZm9udC13ZWlnaHQ6IDIwMDtcclxuICAgICAgICBib3JkZXItcmFkaXVzOiAxMHB4O1xyXG4gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICMwMEEyRTk7XHJcbiAgICAgICAgY29sb3I6IHdoaXRlO1xyXG4gICAgICAgIGJvcmRlcjogMnB4IHNvbGlkICMwMEEyRTk7XHJcbiAgICAgICAgbWFyZ2luOiAwIGF1dG87XHJcbiAgICAgICAgZGlzcGxheTogYmxvY2s7XHJcbiAgICAgICAgYm94LXNoYWRvdzogMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4xKTtcclxuICAgICAgICB0cmFuc2l0aW9uOiBhbGwgMC4zcztcclxuICAgIH1cclxuXHJcbiAgICAudG9wLXNlY3Rpb24ge1xyXG4gICAgICAgIHBvc2l0aW9uOiByZWxhdGl2ZTtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XHJcbiAgICAgICAgbWFyZ2luLWJvdHRvbTogMjBweDtcclxuICAgICAgICBwYWRkaW5nOiAyMHB4IDEwcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLmZvcm0tcm93LmFsaWduLXJvdyB7XHJcbiAgICAgICAgZGlzcGxheTogZmxleDtcclxuICAgICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xyXG4gICAgICAgIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcclxuICAgICAgICBwb3NpdGlvbjogcmVsYXRpdmU7XHJcbiAgICAgICAgd2lkdGg6IDEwMCU7XHJcbiAgICB9XHJcblxyXG4gICAgLm1hY2hpbmUtbmFtZS1ib3gge1xyXG4gICAgICAgIGZsZXg6IDEgMSA0NSU7XHJcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAyMHB4O1xyXG4gICAgfVxyXG5cclxuICAgIC5mb3JtLWdyb3VwIHtcclxuICAgICAgICBkaXNwbGF5OiBmbGV4O1xyXG4gICAgICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XHJcbiAgICAgICAgZmxleDogMSAxIDQ1JTtcclxuICAgICAgICBqdXN0aWZ5LWNvbnRlbnQ6IGZsZXgtc3RhcnQ7XHJcbiAgICB9XHJcblxyXG4gICAgLm9yZGVyLWxhYmVsIHtcclxuICAgICAgICBmb250LWZhbWlseTogZmFudGFzeTtcclxuICAgICAgICBmb250LXNpemU6IDIycHg7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcclxuICAgICAgICBtYXJnaW4tcmlnaHQ6IDEwcHg7XHJcbiAgICAgICAgZmxvYXQ6IG5vbmU7XHJcbiAgICB9XHJcblxyXG4gICAgLnByaW50LWJ0biB7XHJcbiAgICAgICAgbWFyZ2luLXRvcDogMjBweDtcclxuICAgIH1cclxuXHJcbiAgICAudG9wLXJpZ2h0IHtcclxuICAgICAgICBwb3NpdGlvbjogYWJzb2x1dGU7XHJcbiAgICAgICAgdG9wOiAtMzBweDsgLy8g5b6A5LiK56e7XHJcbiAgICAgICAgcmlnaHQ6IDA7XHJcbiAgICAgICAgei1pbmRleDogMTAwMDtcclxuICAgIH1cclxuXHJcbi8qIOaUvuWkp+ihqOWktOWSjOihqOagvOWGheWuueWtl+S9kyAqL1xyXG4gICAgLnRoLFxyXG4gICAgLnVuaS10aCxcclxuICAgIHRoIHtcclxuICAgICAgICBmb250LXNpemU6IDIycHggIWltcG9ydGFudDtcclxuICAgICAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcclxuICAgICAgICBmb250LXdlaWdodDogNjAwO1xyXG4gICAgICAgIGxldHRlci1zcGFjaW5nOiAxcHg7XHJcbiAgICB9XHJcblxyXG4gICAgLnBvcHVwIC5sYXJnZS1zZWxlY3Rpb24tdGFibGUgLnRoLFxyXG4gICAgLnBvcHVwIC5sYXJnZS1zZWxlY3Rpb24tdGFibGUgLnVuaS10aCxcclxuICAgIC5wb3B1cCAubGFyZ2Utc2VsZWN0aW9uLXRhYmxlIHRoIHtcclxuICAgICAgICBmb250LXNpemU6IDIycHggIWltcG9ydGFudDtcclxuICAgICAgICBjb2xvcjogYmxhY2sgIWltcG9ydGFudDtcclxuICAgIH1cclxuXHJcblx0Lyog6ZKI5a+5MTI4MHg4MDDnmoTlubPmnb/kvb/nlKjlqpLkvZPmn6Xor6Lov5vooYzpgILphY0gKi9cclxuXHRAbWVkaWEgc2NyZWVuIGFuZCAobWluLXdpZHRoOiAxMjgwcHgpIGFuZCAobWF4LXdpZHRoOiAxOTIwcHgpIHtcclxuXHRcdC5yaWdodC1zaWRlIHtcclxuXHRcdFx0d2lkdGg6IDMwJTtcclxuXHRcdH1cclxuXHJcblx0XHQuc2F2ZS1idG4sXHJcblx0XHQuY2FuY2VsLWJ0biB7XHJcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcclxuXHRcdH1cclxuXHJcblx0XHQuaW5wIHtcclxuXHRcdFx0d2lkdGg6IDg1JTtcclxuXHRcdFx0Zm9udC1zaXplOiAxNnB4O1xyXG5cdFx0fVxyXG5cclxuXHRcdC5zdGF0dXMtYmxvY2sgcCB7XHJcblx0XHRcdGZvbnQtc2l6ZTogMTZweDtcclxuXHRcdH1cclxuXHJcblx0XHQudW5pLXRyLFxyXG5cdFx0LnVuaS10ZCB7XHJcblx0XHRcdGZvbnQtc2l6ZTogMjJweDtcclxuXHRcdH1cclxuXHR9XHJcblxyXG48L3N0eWxlPlxyXG4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///52\n");
/***/ }),
/* 53 */