detail.js 36 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335
  1. "use strict";
  2. var __assign = (this && this.__assign) || function () {
  3. __assign = Object.assign || function(t) {
  4. for (var s, i = 1, n = arguments.length; i < n; i++) {
  5. s = arguments[i];
  6. for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
  7. t[p] = s[p];
  8. }
  9. return t;
  10. };
  11. return __assign.apply(this, arguments);
  12. };
  13. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  14. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  15. return new (P || (P = Promise))(function (resolve, reject) {
  16. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  17. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  18. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  19. step((generator = generator.apply(thisArg, _arguments || [])).next());
  20. });
  21. };
  22. var __generator = (this && this.__generator) || function (thisArg, body) {
  23. var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
  24. return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
  25. function verb(n) { return function (v) { return step([n, v]); }; }
  26. function step(op) {
  27. if (f) throw new TypeError("Generator is already executing.");
  28. while (_) try {
  29. if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
  30. if (y = 0, t) op = [op[0] & 2, t.value];
  31. switch (op[0]) {
  32. case 0: case 1: t = op; break;
  33. case 4: _.label++; return { value: op[1], done: false };
  34. case 5: _.label++; y = op[1]; op = [0]; continue;
  35. case 7: op = _.ops.pop(); _.trys.pop(); continue;
  36. default:
  37. if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
  38. if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
  39. if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
  40. if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
  41. if (t[2]) _.ops.pop();
  42. _.trys.pop(); continue;
  43. }
  44. op = body.call(thisArg, _);
  45. } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
  46. if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
  47. }
  48. };
  49. Object.defineProperty(exports, "__esModule", { value: true });
  50. var app = getApp();
  51. var util_1 = require("../../utils/util");
  52. var hwRequirement_impl_1 = require("../../service/impl/hwRequirement.impl");
  53. var hwOrder_impl_1 = require("../../service/impl/hwOrder.impl");
  54. var util_2 = require("../../utils/util");
  55. Page({
  56. data: {
  57. cover: true,
  58. hasInfo: false,
  59. info_name: '',
  60. idcardNumber: '',
  61. bright_points: '',
  62. message: {
  63. '0': '确认订单',
  64. '1': '订单关闭',
  65. '2': '已确认',
  66. '3': '订单中止',
  67. '4': '订单完成'
  68. },
  69. status: 0,
  70. show: true,
  71. name_error: '',
  72. id_error: '',
  73. id: 0,
  74. hwOrderAPI: {
  75. workContractType: -1,
  76. workContract: '',
  77. id: 0,
  78. status: -1
  79. },
  80. name: '',
  81. enrollId: 0,
  82. options: {
  83. id: 0,
  84. status: ''
  85. }
  86. },
  87. apply: function () {
  88. var _this = this;
  89. var userInfo = wx.getStorageSync('userInfo');
  90. if (userInfo.isDemonstrate) {
  91. wx.showModal({
  92. title: '报名成功',
  93. content: '请耐心等待企业确认',
  94. showCancel: false,
  95. confirmText: '知道了',
  96. success: function () {
  97. var hwOrderAPI = _this.data.hwOrderAPI;
  98. hwOrderAPI.status = 5;
  99. _this.setData({
  100. status: 2,
  101. hwOrderAPI: hwOrderAPI
  102. });
  103. util_1.putStorageSync("orderDetail_" + _this.data.id, _this.data.id, hwOrderAPI.status);
  104. }
  105. });
  106. }
  107. },
  108. saveIdCardNumber: function (e) {
  109. var idcardNumber = e.detail.value;
  110. if (idcardNumber) {
  111. if (idcardNumber.length !== 15 && idcardNumber.length !== 18) {
  112. this.setData({
  113. id_error: '身份证号码格式错误'
  114. });
  115. }
  116. else {
  117. this.setData({
  118. idcardNumber: idcardNumber,
  119. id_error: ''
  120. });
  121. }
  122. }
  123. else {
  124. this.setData({
  125. id_error: '请填写身份证号码'
  126. });
  127. }
  128. },
  129. saveName: function (e) {
  130. var info_name = e.detail.value;
  131. if (info_name) {
  132. this.setData({
  133. info_name: info_name,
  134. name_error: ''
  135. });
  136. }
  137. else {
  138. this.setData({
  139. name_error: '请填写姓名'
  140. });
  141. }
  142. },
  143. input: function (e) {
  144. this.setData({
  145. bright_points: e.detail.value
  146. });
  147. },
  148. openMap: function (e) {
  149. var name = e.currentTarget.dataset.name;
  150. var address = e.currentTarget.dataset.address;
  151. console.log(name, address);
  152. },
  153. buttonCheck: function () {
  154. var workContract = this.data.hwOrderAPI.workContract;
  155. if (workContract) {
  156. wx.showLoading({
  157. mask: true,
  158. title: '正在打开文件...',
  159. });
  160. wx.downloadFile({
  161. url: this.data.hwOrderAPI.workContract,
  162. success: function (res) {
  163. wx.openDocument({
  164. filePath: res.tempFilePath,
  165. success: function () {
  166. wx.hideLoading();
  167. },
  168. fail: function () {
  169. wx.showToast({
  170. icon: 'none',
  171. title: '打开失败',
  172. });
  173. }
  174. });
  175. }
  176. });
  177. }
  178. else {
  179. }
  180. },
  181. buttonSubmit: function () {
  182. var _this = this;
  183. var workContractType = this.data.hwOrderAPI.workContractType;
  184. if (workContractType === 1) {
  185. hwOrder_impl_1.confirmECOrdersImpl({
  186. orderId: this.data.hwOrderAPI.id
  187. }).then(function (res) {
  188. if (res.errCode === 0) {
  189. wx.reLaunch({
  190. url: "/pages/web-view/web-view?url=" + encodeURIComponent(res.data.url),
  191. success: function () {
  192. app.globalData.webview = "/pages/my-order/my-order";
  193. }
  194. });
  195. }
  196. });
  197. }
  198. if (workContractType === 0) {
  199. hwOrder_impl_1.confirmOrderImpl({
  200. orderId: this.data.hwOrderAPI.id
  201. }).then(function (res) {
  202. if (res.errCode === 0) {
  203. wx.showToast({
  204. title: '订单已确认',
  205. success: function () {
  206. var hwOrderAPI = _this.data.hwOrderAPI;
  207. hwOrderAPI.status = 2;
  208. _this.setData({
  209. hwOrderAPI: hwOrderAPI
  210. });
  211. }
  212. });
  213. }
  214. });
  215. }
  216. },
  217. showCover: function () {
  218. return __awaiter(this, void 0, void 0, function () {
  219. var userInfo;
  220. return __generator(this, function (_a) {
  221. switch (_a.label) {
  222. case 0: return [4, util_2.getHwUserInfo()];
  223. case 1:
  224. userInfo = _a.sent();
  225. if (userInfo.idcardNumber && userInfo.name) {
  226. this.setData({
  227. cover: false,
  228. hasInfo: true
  229. });
  230. }
  231. else {
  232. this.setData({
  233. cover: false,
  234. hasInfo: false
  235. });
  236. }
  237. return [2];
  238. }
  239. });
  240. });
  241. },
  242. cover: function () {
  243. var cover = !this.data.cover;
  244. this.setData({
  245. cover: cover
  246. });
  247. },
  248. cancelEnrollment: function () {
  249. var id = this.data.enrollId;
  250. hwRequirement_impl_1.cancelEnrollmentImpl({
  251. enroll_id: id
  252. }).then(function () {
  253. wx.showToast({
  254. icon: 'none',
  255. title: '取消成功',
  256. success: function () {
  257. setTimeout(function () {
  258. wx.navigateBack({
  259. delta: 1
  260. });
  261. }, 1200);
  262. }
  263. });
  264. });
  265. },
  266. buttonRight: function () {
  267. },
  268. onLoad: function (options) {
  269. this.setData({
  270. options: options
  271. });
  272. },
  273. onReady: function () {
  274. },
  275. onShow: function () {
  276. return __awaiter(this, void 0, void 0, function () {
  277. var options;
  278. var _this = this;
  279. return __generator(this, function (_a) {
  280. options = this.data.options;
  281. if (options.id && options.status) {
  282. if (options.status === '2') {
  283. hwOrder_impl_1.getOrderDetailImpl({
  284. orderId: options.id
  285. }).then(function (res) {
  286. if (res.errCode === 0) {
  287. var id = util_1.getStorageSync("orderDetail_" + _this.data.id);
  288. if (id) {
  289. res.data.hwOrderAPI.status = 2;
  290. }
  291. _this.setData(__assign(__assign({}, res.data.hwRequirementAPI), { hwOrderAPI: res.data.hwOrderAPI }));
  292. }
  293. });
  294. }
  295. if (options.status === '1') {
  296. hwRequirement_impl_1.getRequirementDetailImpl({
  297. user_id: wx.getStorageSync('userId'),
  298. user_token: wx.getStorageSync('userToken'),
  299. hwRequirementId: options.id
  300. }).then(function (res) {
  301. if (res.errCode === 0) {
  302. _this.setData(__assign(__assign({}, res.data.hwRequirementAPI), { displayCancel: res.data.displayCancel || null, needEnrollment: res.data.needEnrollment || null, enrollId: res.data.enrollId || null }));
  303. }
  304. });
  305. }
  306. }
  307. if (options.status) {
  308. this.setData({
  309. status: Number(options.status),
  310. show: false
  311. });
  312. }
  313. this.setData({
  314. user_id: wx.getStorageSync('userId'),
  315. });
  316. return [2];
  317. });
  318. });
  319. },
  320. onHide: function () {
  321. },
  322. onUnload: function () {
  323. },
  324. onPullDownRefresh: function () {
  325. },
  326. onReachBottom: function () {
  327. },
  328. onShareAppMessage: function () {
  329. return {
  330. title: this.data.name,
  331. path: "/pages/detail/detail?id=" + this.data.id + "&&status=" + this.data.status
  332. };
  333. }
  334. });
  335. //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGV0YWlsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiZGV0YWlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSxJQUFNLEdBQUcsR0FBRyxNQUFNLEVBQUUsQ0FBQztBQUNyQix5Q0FBaUU7QUFvQmpFLDRFQUFzRztBQUV0RyxnRUFBMkc7QUFDM0cseUNBQWdEO0FBQ2hELElBQUksQ0FBQztJQUtILElBQUksRUFBRTtRQUNKLEtBQUssRUFBRSxJQUFJO1FBQ1gsT0FBTyxFQUFFLEtBQUs7UUFDZCxTQUFTLEVBQUUsRUFBRTtRQUNiLFlBQVksRUFBRSxFQUFFO1FBQ2hCLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLE9BQU8sRUFBRTtZQUNQLEdBQUcsRUFBRSxNQUFNO1lBQ1gsR0FBRyxFQUFFLE1BQU07WUFDWCxHQUFHLEVBQUUsS0FBSztZQUNWLEdBQUcsRUFBRSxNQUFNO1lBQ1gsR0FBRyxFQUFFLE1BQU07U0FDWjtRQUNELE1BQU0sRUFBRSxDQUFDO1FBQ1QsSUFBSSxFQUFFLElBQUk7UUFDVixVQUFVLEVBQUUsRUFBRTtRQUNkLFFBQVEsRUFBRSxFQUFFO1FBQ1osRUFBRSxFQUFFLENBQUM7UUFDTCxVQUFVLEVBQUU7WUFDVixnQkFBZ0IsRUFBRSxDQUFDLENBQUM7WUFDcEIsWUFBWSxFQUFFLEVBQUU7WUFDaEIsRUFBRSxFQUFFLENBQUM7WUFDTCxNQUFNLEVBQUUsQ0FBQyxDQUFDO1NBQ1g7UUFDRCxJQUFJLEVBQUUsRUFBRTtRQUNSLFFBQVEsRUFBRSxDQUFDO1FBQ1gsT0FBTyxFQUFFO1lBQ1AsRUFBRSxFQUFFLENBQUM7WUFDTCxNQUFNLEVBQUUsRUFBRTtTQUNYO0tBRUY7SUFPRCxLQUFLO1FBQUwsaUJBNkVDO1FBbkJDLElBQU0sUUFBUSxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUE7UUFFOUMsSUFBSSxRQUFRLENB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RUFBRTtRQUNqQixPQUFPO1lBQ0wsS0FBSyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSTtZQUNyQixJQUFJLEVBQUUsNkJBQTJCLElBQUksQ0FBQyxJQUFJLENBQUMsRUFBRSxpQkFBWSxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQVE7U0FDNUUsQ0FBQTtJQUNILENBQUM7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBwYWdlcy9kZXRhaWwvZGV0YWlsLmpzXG5jb25zdCBhcHAgPSBnZXRBcHAoKTtcbmltcG9ydCB7IHB1dFN0b3JhZ2VTeW5jLCBnZXRTdG9yYWdlU3luYyB9IGZyb20gJy4uLy4uL3V0aWxzL3V0aWwnXG4vLyB0eXBlIGVycm9yTWVzc2FnZVR5cGUgPSB7XG4vLyAgIGluZm9fbmFtZTogU3RyaW5nLFxuLy8gICBpZGNhcmROdW1iZXI6IFN0cmluZyxcbi8vIH1cbi8vIC8vIOacquWhq+WGmeaPkOekuuWtl+auteWPiuS/oeaBr1xuLy8gY29uc3QgZXJyb3JNZXNzYWdlOiBlcnJvck1lc3NhZ2VUeXBlID0ge1xuLy8gICBpbmZvX25hbWU6ICfor7floavlhpnlp5PlkI0nLFxuLy8gICBpZGNhcmROdW1iZXI6ICfor7floavlhpnouqvku73or4Hlj7fnoIEnLFxuLy8gfVxuXG4vLyB0eXBlIGVycm9yS2V5VHlwZSA9IHtcbi8vICAgaW5mb19uYW1lOiBTdHJpbmcsXG4vLyAgIGlkY2FyZE51bWJlcjogU3RyaW5nLFxuLy8gfVxuLy8gLy8g5pyq5aGr5YaZa2V55YC8XG4vLyBjb25zdCBlcnJvcktleTogZXJyb3JLZXlUeXBlID0ge1xuLy8gICBpbmZvX25hbWU6ICduYW1lX2Vycm9yJyxcbi8vICAgaWRjYXJkTnVtYmVyOiAnaWRfZXJyb3InLFxuLy8gfVxuaW1wb3J0IHsgY2FuY2VsRW5yb2xsbWVudEltcGwsIGdldFJlcXVpcmVtZW50RGV0YWlsSW1wbCB9IGZyb20gJy4uLy4uL3NlcnZpY2UvaW1wbC9od1JlcXVpcmVtZW50LmltcGwnXG4vLyBpbXBvcnQgeyBjYW5jZWxFbnJvbGxtZW50SW1wbCwgZW5yb2xsbWVudFJlcXVpcmVJbXBsLCBnZXRSZXF1aXJlbWVudERldGFpbEltcGwgfSBmcm9tICcuLi8uLi9zZXJ2aWNlL2ltcGwvaHdSZXF1aXJlbWVudC5pbXBsJ1xuaW1wb3J0IHsgY29uZmlybUVDT3JkZXJzSW1wbCwgY29uZmlybU9yZGVySW1wbCwgZ2V0T3JkZXJEZXRhaWxJbXBsIH0gZnJvbSAnLi4vLi4vc2VydmljZS9pbXBsL2h3T3JkZXIuaW1wbCdcbmltcG9ydCB7IGdldEh3VXNlckluZm8gfSBmcm9tICcuLi8uLi91dGlscy91dGlsJ1xuUGFnZSh7XG5cbiAgLyoqXG4gICAqIOmhtemdoueahOWIneWni+aVsOaNrlxuICAgKi9cbiAgZGF0YToge1xuICAgIGNvdmVyOiB0cnVlLCAvLyDokpnlsYJcbiAgICBoYXNJbmZvOiBmYWxzZSwgLy/mmK/lkKbmi6XmnInkuKrkurrkv6Hmga9cbiAgICBpbmZvX25hbWU6ICcnLFxuICAgIGlkY2FyZE51bWJlcjogJycsXG4gICAgYnJpZ2h0X3BvaW50czogJycsIC8vIOS6rueCuVxuICAgIG1lc3NhZ2U6IHsgLy/orqLljZXnirbmgIHmmKDlsIRcbiAgICAgICcwJzogJ+ehruiupOiuouWNlScsXG4gICAgICAnMSc6ICforqLljZXlhbPpl60nLFxuICAgICAgJzInOiAn5bey56Gu6K6kJyxcbiAgICAgICczJzogJ+iuouWNleS4reatoicsXG4gICAgICAnNCc6ICforqLljZXlrozmiJAnXG4gICAgfSxcbiAgICBzdGF0dXM6IDAsIC8v5oyJ6ZKu54q25oCBIDEg6ZyA5rGCIDIg5bey5oql5ZCNIDMg6K6i5Y2VXG4gICAgc2hvdzogdHJ1ZSwgLy8g5piv5ZCm5bGV56S6XG4gICAgbmFtZV9lcnJvcjogJycsIC8vIOWnk+WQjemUmeivr+S/oeaBr1xuICAgIGlkX2Vycm9yOiAnJywgLy8gIOi6q+S7veivgemUmeivr+S/oeaBr1xuICAgIGlkOiAwLFxuICAgIGh3T3JkZXJBUEk6IHtcbiAgICAgIHdvcmtDb250cmFjdFR5cGU6IC0xLFxuICAgICAgd29ya0NvbnRyYWN0OiAnJyxcbiAgICAgIGlkOiAwLFxuICAgICAgc3RhdHVzOiAtMVxuICAgIH0sXG4gICAgbmFtZTogJycsXG4gICAgZW5yb2xsSWQ6IDAsXG4gICAgb3B0aW9uczoge1xuICAgICAgaWQ6IDAsXG4gICAgICBzdGF0dXM6ICcnXG4gICAgfVxuICAgIC8vIGJ0bl9tZXNzYWdlOiAnJ1xuICB9LFxuICAvKipcbiAgICog6ZyA5rGC5oql5ZCNXG4gICAqIEByZXF1aXJlbWVudF9pZCB7c3RyaW5nfSDpnIDmsYJJRFxuICAgKiBAYnJpZ2h0X3BvaW50cyB7c3RyaW5nfSAg5Lqu54K5XG4gICAqIEBlbnJvbGxfZnJvbSAge251bWJlcn0g5oql5ZCN5p2l5rqQ77yIMDrlsI/nqIvluo8gIDE6QVBQICAyOuWQjuWPsO+8iVxuICAgKi9cbiAgYXBwbHkoKSB7XG4gICAgLy8gaWYgKCF0aGlzLmRhdGEuaGFzSW5mbykge1xuICAgIC8vICAgZm9yIChjb25zdCBrZXkgaW4gZXJyb3JNZXNzYWdlKSB7XG4gICAgLy8gICAgIGlmICh0aGlzLmRhdGEuaGFzT3duUHJvcGVydHkoa2V5KSAmJiAhdGhpcy5kYXRhW2tleV0pIHtcbiAgICAvLyAgICAgICB3eC5zaG93VG9hc3Qoe1xuICAgIC8vICAgICAgICAgaWNvbjogJ25vbmUnLFxuICAgIC8vICAgICAgICAgdGl0bGU6IGVycm9yTWVzc2FnZVtrZXldLFxuICAgIC8vICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xuICAgIC8vICAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgIC8vICAgICAgICAgICAgIFtlcnJvcktleVtrZXldXTogZXJyb3JNZXNzYWdlW2tleV1cbiAgICAvLyAgICAgICAgICAgfSlcbiAgICAvLyAgICAgICAgIH1cbiAgICAvLyAgICAgICB9KVxuICAgIC8vICAgICAgIHJldHVyblxuICAgIC8vICAgICB9XG4gICAgLy8gICB9XG4gICAgLy8gICBpZiAodGhpcy5kYXRhLmlkY2FyZE51bWJlci5sZW5ndGggIT09IDE1ICYmIHRoaXMuZGF0YS5pZGNhcmROdW1iZXIubGVuZ3RoICE9PSAxOCkge1xuICAgIC8vICAgICB3eC5zaG93VG9hc3Qoe1xuICAgIC8vICAgICAgIGljb246ICdub25lJyxcbiAgICAvLyAgICAgICB0aXRsZTogJ+i6q+S7veivgeWPt+eggeagvOW8j+mUmeivrycsXG4gICAgLy8gICAgICAgc3VjY2VzczogKCkgPT4ge1xuICAgIC8vICAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAvLyAgICAgICAgICAgaWRfZXJyb3I6ICfouqvku73or4Hlj7fnoIHmoLzlvI/plJnor68nXG4gICAgLy8gICAgICAgICB9KVxuICAgIC8vICAgICAgIH1cbiAgICAvLyAgICAgfSlcbiAgICAvLyAgIH1cbiAgICAvLyB9XG4gICAgLy8g5oql5ZCN6ZyA5rGCXG4gICAgLy8gZW5yb2xsbWVudFJlcXVpcmVJbXBsKHtcbiAgICAvLyAgIHJlcXVpcmVtZW50X2lkOiB0aGlzLmRhdGEuaWQsXG4gICAgLy8gICBuYW1lOiB0aGlzLmRhdGEuaW5mb19uYW1lLFxuICAgIC8vICAgaWRjYXJkTnVtYmVyOiB0aGlzLmRhdGEuaWRjYXJkTnVtYmVyLFxuICAgIC8vICAgYnJpZ2h0X3BvaW50czogdGhpcy5kYXRhLmJyaWdodF9wb2ludHMsXG4gICAgLy8gICBlbnJvbGxfZnJvbTogMFxuICAgIC8vIH0pLnRoZW4oKCkgPT4ge1xuICAgIC8vICAgd3guc2hvd1RvYXN0KHtcbiAgICAvLyAgICAgdGl0bGU6ICfmiqXlkI3miJDlip8nLFxuICAgIC8vICAgICBzdWNjZXNzOiAoKSA9PiB7XG4gICAgLy8gICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAvLyAgICAgICAgIGNvdmVyOiB0cnVlLFxuICAgIC8vICAgICAgIH0sICgpID0+IHtcbiAgICAvLyAgICAgICAgIHd4Lm5hdmlnYXRlQmFjayh7XG4gICAgLy8gICAgICAgICAgIGRlbHRhOiAxLFxuICAgIC8vICAgICAgICAgfSlcbiAgICAvLyAgICAgICB9KVxuICAgIC8vICAgICB9XG4gICAgLy8gICB9KVxuICAgIC8vIH0pLmNhdGNoKHJlcyA9PiB7XG4gICAgLy8gICBpZiAocmVzLmVyckNvZGUpIHtcbiAgICAvLyAgICAgd3guc2hvd01vZGFsKHtcbiAgICAvLyAgICAgICB0aXRsZTogJ+aKpeWQjeWksei0pScsXG4gICAgLy8gICAgICAgY29udGVudDogcmVzLmVyck1zZyxcbiAgICAvLyAgICAgICBzaG93Q2FuY2VsOiBmYWxzZSxcbiAgICAvLyAgICAgICBjb25maXJtQ29sb3I6ICcjMzEzNjRDJ1xuICAgIC8vICAgICB9KVxuICAgIC8vICAgfVxuICAgIC8vIH0pXG4gICAgY29uc3QgdXNlckluZm8gPSB3eC5nZXRTdG9yYWdlU3luYygndXNlckluZm8nKVxuXG4gICAgaWYgKHVzZXJJbmZvLmlzRGVtb25zdHJhdGUpIHtcbiAgICAgIHd4LnNob3dNb2RhbCh7XG4gICAgICAgIHRpdGxlOiAn5oql5ZCN5oiQ5YqfJyxcbiAgICAgICAgY29udGVudDogJ+ivt+iAkOW/g+etieW+heS8geS4muehruiupCcsXG4gICAgICAgIHNob3dDYW5jZWw6IGZhbHNlLFxuICAgICAgICBjb25maXJtVGV4dDogJ+efpemBk+S6hicsXG4gICAgICAgIHN1Y2Nlc3M6ICgpID0+IHtcbiAgICAgICAgICBjb25zdCBod09yZGVyQVBJID0gdGhpcy5kYXRhLmh3T3JkZXJBUElcbiAgICAgICAgICBod09yZGVyQVBJLnN0YXR1cyA9IDVcbiAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgc3RhdHVzOiAyLFxuICAgICAgICAgICAgaHdPcmRlckFQSVxuICAgICAgICAgIH0pXG4gICAgICAgICAgcHV0U3RvcmFnZVN5bmMoYG9yZGVyRGV0YWlsXyR7dGhpcy5kYXRhLmlkfWAsIHRoaXMuZGF0YS5pZCwgaHdPcmRlckFQSS5zdGF0dXMpXG4gICAgICAgIH1cbiAgICAgIH0pXG4gICAgfVxuICB9LFxuXG4gIC8qKlxuICAgKiDkuq7ngrnovpPlhaVcbiAgICogQGlkY2FyZE51bWJlciB7c3RyaW5nfSDouqvku73or4FcbiAgICovXG4gIHNhdmVJZENhcmROdW1iZXIoZTogYW55KSB7XG4gICAgY29uc3QgaWRjYXJkTnVtYmVyID0gZS5kZXRhaWwudmFsdWVcbiAgICBpZiAoaWRjYXJkTnVtYmVyKSB7XG4gICAgICBpZiAoaWRjYXJkTnVtYmVyLmxlbmd0aCAhPT0gMTUgJiYgaWRjYXJkTnVtYmVyLmxlbmd0aCAhPT0gMTgpIHtcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICBpZF9lcnJvcjogJ+i6q+S7veivgeWPt+eggeagvOW8j+mUmeivrydcbiAgICAgICAgfSlcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgaWRjYXJkTnVtYmVyLFxuICAgICAgICAgIGlkX2Vycm9yOiAnJ1xuICAgICAgICB9KVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBpZF9lcnJvcjogJ+ivt+Whq+WGmei6q+S7veivgeWPt+eggSdcbiAgICAgIH0pXG4gICAgfVxuICB9LFxuICAvKipcbiAgICog5Lqu54K56L6T5YWlXG4gICAqIEBuYW1lIHtzdHJpbmd9IOWnk+WQjVxuICAgKi9cbiAgc2F2ZU5hbWUoZTogYW55KSB7XG4gICAgY29uc3QgaW5mb19uYW1lID0gZS5kZXRhaWwudmFsdWVcbiAgICBpZiAoaW5mb19uYW1lKSB7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBpbmZvX25hbWUsXG4gICAgICAgIG5hbWVfZXJyb3I6ICcnXG4gICAgICB9KVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBuYW1lX2Vycm9yOiAn6K+35aGr5YaZ5aeT5ZCNJ1xuICAgICAgfSlcbiAgICB9XG4gIH0sXG4gIC8qKlxuICAgKiDkuq7ngrnovpPlhaVcbiAgICogQGJyaWdodF9wb2ludHMge3N0cmluZ30g5Lqu54K5XG4gICAqL1xuICBpbnB1dChlOiBhbnkpIHtcbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgYnJpZ2h0X3BvaW50czogZS5kZXRhaWwudmFsdWVcbiAgICB9KVxuICB9LFxuICAvKipcbiAgICog5omT5byA5Zyw5Zu+XG4gICAqL1xuICBvcGVuTWFwKGU6IGFueSkge1xuICAgIGNvbnN0IG5hbWUgPSBlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5uYW1lO1xuICAgIGNvbnN0IGFkZHJlc3MgPSBlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5hZGRyZXNzO1xuICAgIGNvbnNvbGUubG9nKG5hbWUsIGFkZHJlc3MpO1xuXG4gICAgLy8gd3gub3BlbkxvY2F0aW9uKHtcbiAgICAvLyAgIGxhdGl0dWRlOiAzMS41NDQzMjUsXG4gICAgLy8gICBsb25naXR1ZGU6IDEyMC4zNTY1OTUsXG4gICAgLy8gICBuYW1lLFxuICAgIC8vICAgYWRkcmVzc1xuICAgIC8vIH0pXG4gIH0sXG4gIC8qKlxuICAgKiDmn6XnnIvlkIjlkIxcbiAgICogQGZpbGVQYXRoIHtzdHJpbmd9IOWQiOWQjOWcsOWdgFxuICAgKi9cbiAgYnV0dG9uQ2hlY2soKSB7XG4gICAgLy8g6I635Y+W57q/5LiK5ZCI5ZCMICDlpoLmnpzlrZjlnKjmiZPlvIDlkIjlkIwgICDkuI3lrZjlnKjov5vooYzmj5DnpLrvvIjmmoLml6DvvIlcbiAgICBjb25zdCB3b3JrQ29udHJhY3QgPSB0aGlzLmRhdGEuaHdPcmRlckFQSS53b3JrQ29udHJhY3Q7XG4gICAgaWYgKHdvcmtDb250cmFjdCkge1xuICAgICAgd3guc2hvd0xvYWRpbmcoe1xuICAgICAgICBtYXNrOiB0cnVlLFxuICAgICAgICB0aXRsZTogJ+ato+WcqOaJk+W8gOaWh+S7ti4uLicsXG4gICAgICB9KVxuICAgICAgd3guZG93bmxvYWRGaWxlKHtcbiAgICAgICAgdXJsOiB0aGlzLmRhdGEuaHdPcmRlckFQSS53b3JrQ29udHJhY3QsXG4gICAgICAgIHN1Y2Nlc3M6IChyZXMpID0+IHtcbiAgICAgICAgICB3eC5vcGVuRG9jdW1lbnQoe1xuICAgICAgICAgICAgZmlsZVBhdGg6IHJlcy50ZW1wRmlsZVBhdGgsXG4gICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XG4gICAgICAgICAgICAgIHd4LmhpZGVMb2FkaW5nKClcbiAgICAgICAgICAgIH0sXG4gICAgICAgICAgICBmYWlsKCkge1xuICAgICAgICAgICAgICB3eC5zaG93VG9hc3Qoe1xuICAgICAgICAgICAgICAgIGljb246ICdub25lJyxcbiAgICAgICAgICAgICAgICB0aXRsZTogJ+aJk+W8gOWksei0pScsXG4gICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gd3guc2hvd1RvYXN0KHtcbiAgICAgIC8vICAgaWNvbjonbm9uZScsXG4gICAgICAvLyAgIHRpdGxlOiAnJyxcbiAgICAgIC8vIH0pXG4gICAgfVxuICB9LFxuICAvKipcbiAgICog56Gu6K6k6K6i5Y2VXG4gICAqIEBvcmRlcklkIHtzdHJpbmd9IOiuouWNlUlEXG4gICAqIOWJjeWPsOaKpeWQjemcgOaxguWQjiAg5ZCO5Y+w55Sf5oiQ6K6i5Y2VICAg6ZyA5YmN5Y+w5omL5Yqo56Gu5a6a6K6i5Y2VIOagueaNruiuouWNleWQiOWQjOS4jeWQjOiwg+eUqOS4jeWQjOaOpeWPo1xuICAgKi9cbiAgYnV0dG9uU3VibWl0KCkge1xuICAgIGNvbnN0IHdvcmtDb250cmFjdFR5cGUgPSB0aGlzLmRhdGEuaHdPcmRlckFQSS53b3JrQ29udHJhY3RUeXBlO1xuICAgIC8vIOeUteWtkOWQiOWQjOehruiupOiuouWNlVxuICAgIGlmICh3b3JrQ29udHJhY3RUeXBlID09PSAxKSB7XG4gICAgICBjb25maXJtRUNPcmRlcnNJbXBsKHtcbiAgICAgICAgb3JkZXJJZDogdGhpcy5kYXRhLmh3T3JkZXJBUEkuaWRcbiAgICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgICAgaWYgKHJlcy5lcnJDb2RlID09PSAwKSB7XG4gICAgICAgICAgLy8g6Lez6L2sd2Vidmlld+mhtemdolxuICAgICAgICAgIHd4LnJlTGF1bmNoKHtcbiAgICAgICAgICAgIHVybDogYC9wYWdlcy93ZWItdmlldy93ZWItdmlldz91cmw9JHtlbmNvZGVVUklDb21wb25lbnQocmVzLmRhdGEudXJsKX1gLFxuICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xuICAgICAgICAgICAgICAvLyDnvJPlrZjlvZPliY3pobXpnaLlnLDlnYAgICDmlrnkvr/ot7Plm55cbiAgICAgICAgICAgICAgYXBwLmdsb2JhbERhdGEud2VidmlldyA9IGAvcGFnZXMvbXktb3JkZXIvbXktb3JkZXJgO1xuICAgICAgICAgICAgICAvLyB3eC5zZXRTdG9yYWdlU3luYygnd2ViX3ZpZXcnLCBgL3BhZ2VzL215LW9yZGVyL215LW9yZGVyYClcbiAgICAgICAgICAgICAgLy8gd3guc2V0U3RvcmFnZVN5bmMoJ3dlYl92aWV3JywgYC8ke3RoaXMucm91dGV9P2lkPSR7dGhpcy5kYXRhLmh3T3JkZXJBUEkuaWR9JiZzdGF0dXM9JHt0aGlzLmRhdGEuc3RhdHVzfWApXG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gICAgLy8g6Z2e55S15a2Q5ZCI5ZCMXG4gICAgaWYgKHdvcmtDb250cmFjdFR5cGUgPT09IDApIHtcbiAgICAgIGNvbmZpcm1PcmRlckltcGwoe1xuICAgICAgICBvcmRlcklkOiB0aGlzLmRhdGEuaHdPcmRlckFQSS5pZFxuICAgICAgfSkudGhlbihyZXMgPT4ge1xuICAgICAgICBpZiAocmVzLmVyckNvZGUgPT09IDApIHtcbiAgICAgICAgICB3eC5zaG93VG9hc3Qoe1xuICAgICAgICAgICAgdGl0bGU6ICforqLljZXlt7Lnoa7orqQnLFxuICAgICAgICAgICAgc3VjY2VzczogKCkgPT4ge1xuICAgICAgICAgICAgICAvLyDnoa7orqTmiJDlip/lkI4g5pu05pS55oyJ6ZKu54q25oCBXG4gICAgICAgICAgICAgIGNvbnN0IGh3T3JkZXJBUEkgPSB0aGlzLmRhdGEuaHdPcmRlckFQSTtcbiAgICAgICAgICAgICAgaHdPcmRlckFQSS5zdGF0dXMgPSAyO1xuICAgICAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgICAgIGh3T3JkZXJBUElcbiAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH1cbiAgfSxcbiAgLy8g5pi+56S65oql5ZCN5aGr5YaZ55qE6K6i5Y2V6L6T5YWl5qGGXG4gIGFzeW5jIHNob3dDb3ZlcigpIHtcbiAgICBjb25zdCB1c2VySW5mbzogYW55ID0gYXdhaXQgZ2V0SHdVc2VySW5mbygpXG4gICAgaWYgKHVzZXJJbmZvLmlkY2FyZE51bWJlciAmJiB1c2VySW5mby5uYW1lKSB7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBjb3ZlcjogZmFsc2UsXG4gICAgICAgIGhhc0luZm86IHRydWVcbiAgICAgIH0pXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgIGNvdmVyOiBmYWxzZSxcbiAgICAgICAgaGFzSW5mbzogZmFsc2VcbiAgICAgIH0pXG4gICAgfVxuXG4gIH0sXG4gIC8qKlxuICAgKiDmjqfliLZjb3ZlcuWxgueahOaYvuekuuS4jumakOiXj1xuICAgKi9cbiAgY292ZXIoKSB7XG4gICAgY29uc3QgY292ZXIgPSAhdGhpcy5kYXRhLmNvdmVyO1xuICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICBjb3ZlclxuICAgIH0pXG4gIH0sXG4gIC8qKlxuICAgICog5Y+W5raI5oql5ZCNXG4gICAgKiBAZW5yb2xsX2lkIHtzdHJpbmd9IOaKpeWQjWlkXG4gICAgKi9cbiAgY2FuY2VsRW5yb2xsbWVudCgpIHtcbiAgICBjb25zdCBpZCA9IHRoaXMuZGF0YS5lbnJvbGxJZFxuICAgIGNhbmNlbEVucm9sbG1lbnRJbXBsKHtcbiAgICAgIGVucm9sbF9pZDogaWRcbiAgICB9KS50aGVuKCgpID0+IHtcbiAgICAgIHd4LnNob3dUb2FzdCh7XG4gICAgICAgIGljb246ICdub25lJyxcbiAgICAgICAgdGl0bGU6ICflj5bmtojmiJDlip8nLFxuICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB3eC5uYXZpZ2F0ZUJhY2soe1xuICAgICAgICAgICAgICBkZWx0YTogMVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LCAxMjAwKVxuICAgICAgICB9XG4gICAgICB9KVxuICAgIH0pXG4gIH0sXG4gIC8qKlxuICAgKiBcbiAgICovXG4gIGJ1dHRvblJpZ2h0KCkge1xuXG4gIH0sXG4gIC8qKlxuICAgKiDnlJ/lkb3lkajmnJ/lh73mlbAtLeebkeWQrOmhtemdouWKoOi9vVxuICAgKi9cbiAgb25Mb2FkOiBmdW5jdGlvbiAob3B0aW9uczogYW55KSB7XG4gICAgdGhpcy5zZXREYXRhKHtcbiAgICAgIG9wdGlvbnNcbiAgICB9KVxuXG4gIH0sXG5cbiAgLyoqXG4gICAqIOeUn+WRveWRqOacn+WHveaVsC0t55uR5ZCs6aG16Z2i5Yid5qyh5riy5p+T5a6M5oiQXG4gICAqL1xuICBvblJlYWR5OiBmdW5jdGlvbiAoKSB7XG5cbiAgfSxcblxuICAvKipcbiAgICog55Sf5ZG95ZGo5pyf5Ye95pWwLS3nm5HlkKzpobXpnaLmmL7npLpcbiAgICovXG4gIG9uU2hvdzogYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IG9wdGlvbnMgPSB0aGlzLmRhdGEub3B0aW9uc1xuICAgIGlmIChvcHRpb25zLmlkICYmIG9wdGlvbnMuc3RhdHVzKSB7XG4gICAgICAvLyAg5aaC5p6cIOeKtuaAgeS4ujMgIOivt+axguiuouWNleivpuaDhSBJROS4uuiuouWNlWlkXG4gICAgICBpZiAob3B0aW9ucy5zdGF0dXMgPT09ICcyJykge1xuICAgICAgICBnZXRPcmRlckRldGFpbEltcGwoe1xuICAgICAgICAgIG9yZGVySWQ6IG9wdGlvbnMuaWRcbiAgICAgICAgfSkudGhlbihyZXMgPT4ge1xuICAgICAgICAgIGlmIChyZXMuZXJyQ29kZSA9PT0gMCkge1xuICAgICAgICAgICAgY29uc3QgaWQgPSBnZXRTdG9yYWdlU3luYyhgb3JkZXJEZXRhaWxfJHt0aGlzLmRhdGEuaWR9YClcbiAgICAgICAgICAgIGlmIChpZCkge1xuICAgICAgICAgICAgICByZXMuZGF0YS5od09yZGVyQVBJLnN0YXR1cyA9IDJcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICAgIC4uLnJlcy5kYXRhLmh3UmVxdWlyZW1lbnRBUEksXG4gICAgICAgICAgICAgIGh3T3JkZXJBUEk6IHJlcy5kYXRhLmh3T3JkZXJBUEksXG4gICAgICAgICAgICAgIC8vIGJ0bl9tZXNzYWdlOiByZXMuZGF0YS5od09yZGVyQVBJLnN0YXR1cyA9PT0gMiAmJiByZXMuZGF0YS5od09yZGVyQVBJLnNlcnZpY2VTdGFnZSA/IGDnrKwke3Jlcy5kYXRhLmh3T3JkZXJBUEkuc2VydmljZVN0YWdlfeacn+acjeWKoeS4rWAgOiB0aGlzLmRhdGEubWVzc2FnZVtyZXMuZGF0YS5od09yZGVyQVBJLnN0YXR1c11cbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgfVxuICAgICAgICB9KVxuICAgICAgfVxuXG4gICAgICAvLyDlpoLmnpznirbmgIHkuLoxIOivt+axgumcgOaxguivpuaDhSBJROS4uumcgOaxgmlkXG4gICAgICBpZiAob3B0aW9ucy5zdGF0dXMgPT09ICcxJykge1xuICAgICAgICBnZXRSZXF1aXJlbWVudERldGFpbEltcGwoe1xuICAgICAgICAgIHVzZXJfaWQ6IHd4LmdldFN0b3JhZ2VTeW5jKCd1c2VySWQnKSxcbiAgICAgICAgICB1c2VyX3Rva2VuOiB3eC5nZXRTdG9yYWdlU3luYygndXNlclRva2VuJyksXG4gICAgICAgICAgaHdSZXF1aXJlbWVudElkOiBvcHRpb25zLmlkXG4gICAgICAgIH0pLnRoZW4ocmVzID0+IHtcbiAgICAgICAgICBpZiAocmVzLmVyckNvZGUgPT09IDApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICAgIC4uLnJlcy5kYXRhLmh3UmVxdWlyZW1lbnRBUEksXG4gICAgICAgICAgICAgIGRpc3BsYXlDYW5jZWw6IHJlcy5kYXRhLmRpc3BsYXlDYW5jZWwgfHwgbnVsbCxcbiAgICAgICAgICAgICAgbmVlZEVucm9sbG1lbnQ6IHJlcy5kYXRhLm5lZWRFbnJvbGxtZW50IHx8IG51bGwsXG4gICAgICAgICAgICAgIGVucm9sbElkOiByZXMuZGF0YS5lbnJvbGxJZCB8fCBudWxsXG4gICAgICAgICAgICB9KVxuICAgICAgICAgIH1cbiAgICAgICAgfSlcbiAgICAgIH1cbiAgICB9XG4gICAgLy8g5L+d5a2Y54q25oCBXG4gICAgaWYgKG9wdGlvbnMuc3RhdHVzKSB7XG4gICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICBzdGF0dXM6IE51bWJlcihvcHRpb25zLnN0YXR1cyksXG4gICAgICAgIHNob3c6IGZhbHNlXG4gICAgICB9KVxuICAgIH1cbiAgICB0aGlzLnNldERhdGEoe1xuICAgICAgdXNlcl9pZDogd3guZ2V0U3RvcmFnZVN5bmMoJ3VzZXJJZCcpLFxuICAgIH0pXG5cbiAgfSxcblxuICAvKipcbiAgICog55Sf5ZG95ZGo5pyf5Ye95pWwLS3nm5HlkKzpobXpnaLpmpDol49cbiAgICovXG4gIG9uSGlkZTogZnVuY3Rpb24gKCkge1xuXG4gIH0sXG5cbiAgLyoqXG4gICAqIOeUn+WRveWRqOacn+WHveaVsC0t55uR5ZCs6aG16Z2i5Y246L29XG4gICAqL1xuICBvblVubG9hZDogZnVuY3Rpb24gKCkge1xuXG4gIH0sXG5cbiAgLyoqXG4gICAqIOmhtemdouebuOWFs+S6i+S7tuWkhOeQhuWHveaVsC0t55uR5ZCs55So5oi35LiL5ouJ5Yqo5L2cXG4gICAqL1xuICBvblB1bGxEb3duUmVmcmVzaDogZnVuY3Rpb24gKCkge1xuXG4gIH0sXG5cbiAgLyoqXG4gICAqIOmhtemdouS4iuaLieinpuW6leS6i+S7tueahOWkhOeQhuWHveaVsFxuICAgKi9cbiAgb25SZWFjaEJvdHRvbTogZnVuY3Rpb24gKCkge1xuXG4gIH0sXG5cbiAgLyoqXG4gICAqIOeUqOaIt+eCueWHu+WPs+S4iuinkuWIhuS6q1xuICAgKi9cbiAgb25TaGFyZUFwcE1lc3NhZ2U6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4ge1xuICAgICAgdGl0bGU6IHRoaXMuZGF0YS5uYW1lLFxuICAgICAgcGF0aDogYC9wYWdlcy9kZXRhaWwvZGV0YWlsP2lkPSR7dGhpcy5kYXRhLmlkfSYmc3RhdHVzPSR7dGhpcy5kYXRhLnN0YXR1c31gXG4gICAgfVxuICB9XG59KSJdfQ==