"use strict"; var __assign = (this && this.__assign) || function () { __assign = Object.assign || function(t) { for (var s, i = 1, n = arguments.length; i < n; i++) { s = arguments[i]; for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p]; } return t; }; return __assign.apply(this, arguments); }; var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; var __generator = (this && this.__generator) || function (thisArg, body) { var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g; return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g; function verb(n) { return function (v) { return step([n, v]); }; } function step(op) { if (f) throw new TypeError("Generator is already executing."); while (_) try { 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; if (y = 0, t) op = [op[0] & 2, t.value]; switch (op[0]) { case 0: case 1: t = op; break; case 4: _.label++; return { value: op[1], done: false }; case 5: _.label++; y = op[1]; op = [0]; continue; case 7: op = _.ops.pop(); _.trys.pop(); continue; default: if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; } if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; } if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; } if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; } if (t[2]) _.ops.pop(); _.trys.pop(); continue; } op = body.call(thisArg, _); } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; } if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true }; } }; Object.defineProperty(exports, "__esModule", { value: true }); var myValidator_1 = require("../../utils/myValidator"); var validatorInstance; Page({ data: { autosize: { maxHeight: 120, minHeight: 50 }, validatorInstance: {}, freeId: 0, formId: 710804, formData: {}, doccode: '', fromPage: '', delivery: {} }, onLoad: function (options) { var doccode = options.doccode || ''; var fromPage = options.fromPage || ''; this.setData({ fileUploadUrl: "/shopping/panicBuying.do?m=uploadAttachment&formid=" + this.data.formId, doccode: doccode, fromPage: fromPage }); if (doccode) { this.getSaveData(); } }, getSaveData: function () { return __awaiter(this, void 0, void 0, function () { var doccode, _a, error, result, data, formData; return __generator(this, function (_b) { switch (_b.label) { case 0: doccode = this.data.doccode; return [4, wx.$utils.to(wx.$http.request({ url: "/shopping/panicBuying.do?m=getPanicBuyingDetail", data: { doccode: doccode, isEdit: true, RefOpenId: wx.globalData.OpenId } }))]; case 1: _a = _b.sent(), error = _a[0], result = _a[1]; if (error) { console.log(error); return [2]; } console.log(result); data = result.list[0]; formData = { promotionsTitle: data.title, originalPrice: data.originalPrice, flashSalePrice: data.salesPrice, flashSaleTotal: data.numberOfTeam, promotionDescription: data.description, startTime: data.effectiveStartDate, endTime: data.effectiveEndDate, coverImageList: (data.coverImageUrl && this.getCoverImageList(data)) || [], imagesList: data.imagesUrl, coverImage: data.coverImage, images: data.images, freeId: data.freeId, }; this.setData(__assign({}, formData, { sellerList: result.sellerList, status: data.panicBuyingStatus, delivery: { freeId: data.freeId, freeName: data.freeName, isRequiredAddress: data.isRequiredAddress, transCosts: data.transCosts, } })); console.log('配送数据。。。', this.data.delivery); return [2]; } }); }); }, getCoverImageList: function (data) { var _a = data.coverImage.split(";"), unid = _a[0], seq = _a[1]; return [{ url: data.coverImageUrl || '', unid: unid, seq: seq }]; }, onReady: function () { this.initValidator(); }, selectedStartTime: function (event) { console.log('开始', event); this.setData({ startTime: event.detail.startTime, }); }, selectedEndTime: function (event) { console.log('结束', event); this.setData({ endTime: event.detail.endTime, }); }, getDeliveryMethod: function (event) { console.log(event.detail); this.setData({ freeId: event.detail.freeId, }); console.log('this.data.freeId;', this.data.freeId); }, checkPromotionsTitle: function (e) { var value = e.detail.value; console.log(e); validatorInstance.checkField('promotionsTitle', value); this.setData({ promotionsTitle: value.trim() }); }, checkOriginalPrice: function (e) { var value = e.detail.value; console.log(e); validatorInstance.checkField('originalPrice', value); this.setData({ originalPrice: value.trim() }); }, checkFlashSalePrice: function (e) { var value = e.detail.value; console.log(e); validatorInstance.checkField('flashSalePrice', value); this.setData({ flashSalePrice: value.trim() }); }, checkFlashSaleTotal: function (e) { var value = e.detail.value; console.log(e); validatorInstance.checkField('flashSaleTotal', value); this.setData({ flashSaleTotal: value.trim() }); }, checkPromotionDescription: function (e) { var value = e.detail.value; console.log(e); validatorInstance.checkField('promotionDescription', value); this.setData({ promotionDescription: value.trim() }); }, postFormData: function (data) { return __awaiter(this, void 0, void 0, function () { var _a, error, res; return __generator(this, function (_b) { switch (_b.label) { case 0: return [4, wx.$utils.to(wx.$http.request({ url: '/shopping/panicBuying.do?m=saveDocCode', data: data, method: 'POST' }))]; case 1: _a = _b.sent(), error = _a[0], res = _a[1]; if (error) { console.log(error); return [2, false]; } console.log(res); wx.showToast({ title: '成功', duration: 2000 }); return [2, true]; } }); }); }, onSubmit: function () { return __awaiter(this, void 0, void 0, function () { var timeQuantum, sellerEdit, fileUploader, fileUploaderMultiple, deliveryMethod, checkTransCosts, transCosts, checkStartTime, checkEndTime, checkCoverImage, checkImages, checkAllData, sellerList, checkDefaultSeller, checkArr, data, coverImage, images, formData; return __generator(this, function (_a) { switch (_a.label) { case 0: timeQuantum = this.selectComponent('#time-quantum'); sellerEdit = this.selectComponent('#seller-edit'); fileUploader = this.selectComponent('#file-uploader'); fileUploaderMultiple = this.selectComponent('#file-uploader-multiple'); deliveryMethod = this.selectComponent('#delivery-method'); checkTransCosts = true; transCosts = 0; if (deliveryMethod.data.isRequiredAddress) { checkTransCosts = deliveryMethod.checkFields(); transCosts = Number(deliveryMethod.data.transCosts); } console.log('sellerEdit'); console.log(timeQuantum); checkStartTime = timeQuantum.checkTime("startTime", "请选择计划开始时间"); checkEndTime = timeQuantum.checkTime("endTime", "请选择计划结束时间"); checkCoverImage = fileUploader.checkImages("coverImage", "请上传一张封面图"); checkImages = fileUploaderMultiple.checkImages("images", "请至少上传一张图片"); checkAllData = validatorInstance.checkAllData(); sellerList = sellerEdit.getSellerList(); if (sellerList.length < 1) { wx.showToast({ title: '请选择营销人员', icon: 'none', duration: 2000 }); return [2]; } checkDefaultSeller = sellerEdit.checkDefaultSeller(); if (!checkDefaultSeller) { wx.showToast({ title: '请选择默认营销人员', icon: 'none', duration: 2000 }); return [2]; } console.log('checkDefaultSeller', checkDefaultSeller); checkArr = [checkTransCosts, checkStartTime, checkEndTime, checkCoverImage, checkImages, checkAllData]; data = {}; if (!checkArr.every(function (item) { return item; })) return [3, 2]; console.log('....提交成功'); coverImage = fileUploader.getCoverImageUnid(); images = fileUploaderMultiple.getImagesUnid(); console.log(coverImage, images); formData = this.data; data = { docCode: formData.doccode, formId: formData.formId, docStatus: 100, coverImage: coverImage, images: images, transCosts: transCosts, effectiveStartDate: formData.startTime, effectiveEndDate: formData.endTime, freeId: formData.freeId, title: formData.promotionsTitle, originalPrice: Number(formData.originalPrice), salesPrice: Number(formData.flashSalePrice), numberOfTeam: Number(formData.flashSaleTotal), description: formData.promotionDescription, sellerList: sellerList, }; console.log('待发布数据', data); return [4, this.postFormData(data)]; case 1: if (!(_a.sent())) return [2]; if (this.data.fromPage == 'edit') { wx.navigateBack(); } else { wx.redirectTo({ url: '../promotionsManageList/promotionsManageList?tab=3' }); } return [3, 3]; case 2: wx.showToast({ title: '页面还有错误未处理', icon: 'none', duration: 2000 }); console.log('还有错误未处理'); _a.label = 3; case 3: return [2]; } }); }); }, onSave: function () { var sellerEdit = this.selectComponent('#seller-edit'); var sellerList = sellerEdit.getSellerList(); var fileUploader = this.selectComponent('#file-uploader'); var fileUploaderMultiple = this.selectComponent('#file-uploader-multiple'); console.log('....提交成功'); var coverImage = fileUploader.getCoverImageUnid(); var images = fileUploaderMultiple.getImagesUnid(); var deliveryMethod = this.selectComponent('#delivery-method'); var transCosts = 0; if (deliveryMethod.data.isRequiredAddress) { transCosts = Number(deliveryMethod.data.transCosts); } console.log(coverImage, images); var formData = this.data; var data = { docCode: formData.doccode, formId: formData.formId, docStatus: 0, coverImage: coverImage, images: images, transCosts: transCosts, effectiveStartDate: formData.startTime, effectiveEndDate: formData.endTime, freeId: formData.freeId, title: formData.promotionsTitle, originalPrice: Number(formData.originalPrice) || 0, salesPrice: Number(formData.flashSalePrice) || 0, numberOfTeam: Number(formData.flashSaleTotal) || 0, description: formData.promotionDescription, sellerList: sellerList, }; console.log('待保存数据', data); this.postFormData(data); }, initValidator: function () { validatorInstance = new myValidator_1.default({ rules: { promotionsTitle: { required: true, maxlength: 15 }, originalPrice: { required: true, number: true }, flashSalePrice: { required: true, number: true }, flashSaleTotal: { required: true, number: true }, promotionDescription: { required: true }, }, messages: { promotionsTitle: { required: '请输入活动标题', maxlength: '长度不能大于15' }, originalPrice: { required: '请输入产品标价', number: '价格必须为数字' }, flashSalePrice: { required: '请输入拼团价', number: '价格必须为数字' }, flashSaleTotal: { required: '请输入成团人数', number: '人数必须为数字' }, promotionDescription: { required: '请输入活动描述' }, }, multiCheck: true }, this); console.log('hhhh,', validatorInstance); }, }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JvdXBCdXlpbmdDcmVhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJncm91cEJ1eWluZ0NyZWF0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFDQSx1REFBa0Q7QUFFbEQsSUFBSSxpQkFBNkIsQ0FBQztBQUVsQyxJQUFJLENBQUM7SUFDSCxJQUFJLEVBQUU7UUFDSixRQUFRLEVBQUMsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7UUFDMUMsaUJBQWlCLEVBQUMsRUFBRTtRQUNwQixNQUFNLEVBQUMsQ0FBQztRQUNSLE1BQU0sRUFBQyxNQUFNO1FBQ2IsUUFBUSxFQUFFLEVBQUU7UUFDWixPQUFPLEVBQUMsRUFBRTtRQUNWLFFBQVEsRUFBQyxFQUFFO1FBQ1gsUUFBUSxFQUFDLEVBQUU7S0FDWjtJQUNELE1BQU0sWUFBQyxPQUFPO1FBRVosSUFBSSxPQUFPLEdBQUUsT0FBTyxDQUFDLE9BQU8sSUFBRSxFQUFFLENBQUM7UUFDakMsSUFBSSxRQUFRLEdBQUUsT0FBTyxDQUFDLFFBQVEsSUFBRSxFQUFFLENBQUM7UUFDbkMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNYLGFBQWEsRUFBRSx3REFBc0QsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFRO1lBQ3ZGLE9BQU8sU0FBQTtZQUNQLFFBQVEsVUFBQTtTQUNULENBQUMsQ0FBQTtRQUNGLElBQUksT0FBTyxFQUFFO1lBQ1gsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1NBQ3BCO0lBQ0gsQ0FBQztJQUNLLFdBQVc7Ozs7Ozt3QkFDWCxPQUFPLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUM7d0JBQ1YsV0FBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDdEMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0NBQ2YsR0FBRyxFQUFDLGlEQUFp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QjtnQkFDRCxjQUFjLEVBQUU7b0JBQ2QsUUFBUSxFQUFFLFNBQVM7b0JBQ25CLE1BQU0sRUFBRSxTQUFTO2lCQUNsQjtnQkFDRCxvQkFBb0IsRUFBRTtvQkFDcEIsUUFBUSxFQUFFLFNBQVM7aUJBQ3BCO2FBQ0Y7WUFDRCxVQUFVLEVBQUMsSUFBSTtTQUNoQixFQUFDLElBQUksQ0FBQyxDQUFBO1FBSVAsT0FBTyxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUMsaUJBQWlCLENBQUMsQ0FBQztJQUN6QyxDQUFDO0NBQ0YsQ0FBQyxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiLy8gaW1wb3J0ICogYXMgZGF5anMgZnJvbSBcImRheWpzXCI7XHJcbmltcG9ydCBNeVZhbGlkYXRvciBmcm9tIFwiLi4vLi4vdXRpbHMvbXlWYWxpZGF0b3JcIjtcclxuXHJcbmxldCB2YWxpZGF0b3JJbnN0YW5jZTpNeVZhbGlkYXRvcjtcclxuLy8gY29uc3QgYXBwID0gZ2V0QXBwPElBcHBPcHRpb24+KCk7XHJcblBhZ2Uoe1xyXG4gIGRhdGE6IHtcclxuICAgIGF1dG9zaXplOnsgbWF4SGVpZ2h0OiAxMjAsIG1pbkhlaWdodDogNTAgfSxcclxuICAgIHZhbGlkYXRvckluc3RhbmNlOnt9LFxyXG4gICAgZnJlZUlkOjAsXHJcbiAgICBmb3JtSWQ6NzEwODA0LCAvL+WKn+iDveWPt++8muenkuadgCA3MTA4MDIg77yMIOaKpeWQjemCgOe6piA3MTA4MDMg77yM5Zui6LStIDcxMDgwNFxyXG4gICAgZm9ybURhdGE6IHt9LFxyXG4gICAgZG9jY29kZTonJyxcclxuICAgIGZyb21QYWdlOicnLFxyXG4gICAgZGVsaXZlcnk6e31cclxuICB9LFxyXG4gIG9uTG9hZChvcHRpb25zKSB7XHJcbiAgICAvLyBjb25zb2xlLmxvZyhhcHApO1xyXG4gICAgbGV0IGRvY2NvZGUgPW9wdGlvbnMuZG9jY29kZXx8Jyc7XHJcbiAgICBsZXQgZnJvbVBhZ2UgPW9wdGlvbnMuZnJvbVBhZ2V8fCcnO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZmlsZVVwbG9hZFVybDogYC9zaG9wcGluZy9wYW5pY0J1eWluZy5kbz9tPXVwbG9hZEF0dGFjaG1lbnQmZm9ybWlkPSR7dGhpcy5kYXRhLmZvcm1JZH1gLFxyXG4gICAgICBkb2Njb2RlLFxyXG4gICAgICBmcm9tUGFnZVxyXG4gICAgfSlcclxuICAgIGlmIChkb2Njb2RlKSB7XHJcbiAgICAgIHRoaXMuZ2V0U2F2ZURhdGEoKTtcclxuICAgIH1cclxuICB9LFxyXG4gIGFzeW5jIGdldFNhdmVEYXRhKCkge1xyXG4gICAgbGV0IGRvY2NvZGUgPSB0aGlzLmRhdGEuZG9jY29kZTtcclxuICAgIGxldCBbZXJyb3IsIHJlc3VsdF0gPSBhd2FpdCB3eC4kdXRpbHMudG8oXHJcbiAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgIHVybDpgL3Nob3BwaW5nL3BhbmljQnV5aW5nLmRvP209Z2V0UGFuaWNCdXlpbmdEZXRhaWxgLFxyXG4gICAgICAgIGRhdGE6e1xyXG4gICAgICAgICAgZG9jY29kZSxcclxuICAgICAgICAgIGlzRWRpdDp0cnVlLFxyXG4gICAgICAgICAgUmVmT3BlbklkOnd4Lmdsb2JhbERhdGEuT3BlbklkXHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKVxyXG4gICAgaWYgKGVycm9yKXtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgbGV0IGRhdGEgPSByZXN1bHQubGlzdFswXTtcclxuICAgIGxldCBmb3JtRGF0YSA9IHtcclxuICAgICAgcHJvbW90aW9uc1RpdGxlOiBkYXRhLnRpdGxlLFxyXG4gICAgICBvcmlnaW5hbFByaWNlOiBkYXRhLm9yaWdpbmFsUHJpY2UsXHJcbiAgICAgIGZsYXNoU2FsZVByaWNlOiBkYXRhLnNhbGVzUHJpY2UsXHJcbiAgICAgIGZsYXNoU2FsZVRvdGFsOiBkYXRhLm51bWJlck9mVGVhbSxcclxuICAgICAgcHJvbW90aW9uRGVzY3JpcHRpb246IGRhdGEuZGVzY3JpcHRpb24sXHJcbiAgICAgIHN0YXJ0VGltZTogZGF0YS5lZmZlY3RpdmVTdGFydERhdGUsXHJcbiAgICAgIGVuZFRpbWU6IGRhdGEuZWZmZWN0aXZlRW5kRGF0ZSxcclxuICAgICAgY292ZXJJbWFnZUxpc3Q6IChkYXRhLmNvdmVySW1hZ2VVcmwmJnRoaXMuZ2V0Q292ZXJJbWFnZUxpc3QoZGF0YSkpfHxbXSxcclxuICAgICAgLy8gaW1hZ2VzTGlzdDogKGRhdGEuaW1hZ2VzVXJsLmxlbmd0aD4wJiZ0aGlzLmdldEltYWdlc0xpc3QoZGF0YSkpfHxbXSxcclxuICAgICAgaW1hZ2VzTGlzdDogZGF0YS5pbWFnZXNVcmwsXHJcbiAgICAgIGNvdmVySW1hZ2U6IGRhdGEuY292ZXJJbWFnZSxcclxuICAgICAgaW1hZ2VzOiBkYXRhLmltYWdlcyxcclxuICAgICAgZnJlZUlkOmRhdGEuZnJlZUlkLFxyXG4gICAgfTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIC4uLmZvcm1EYXRhLFxyXG4gICAgICAvLyBbYGVmZmVjdGl2ZVN0YXJ0RGF0ZWBdOiBkYXRhLmVmZmVjdGl2ZVN0YXJ0RGF0ZSxcclxuICAgICAgLy8gW2BlZmZlY3RpdmVFbmREYXRlYF06IGRhdGEuZWZmZWN0aXZlRW5kRGF0ZSxcclxuICAgICAgLy8gW2BmcmVlSWRgXTogZGF0YS5mcmVlSWQsXHJcbiAgICAgIC8vIFtgdGl0bGVgXTogZGF0YS50aXRsZSxcclxuICAgICAgLy8gW2BvcmlnaW5hbFByaWNlYF06IGRhdGEub3JpZ2luYWxQcmljZSxcclxuICAgICAgLy8gW2BzYWxlc1ByaWNlYF06IGRhdGEuc2FsZXNQcmljZSxcclxuICAgICAgLy8gW2BxdWFudGl0eWBdOiBkYXRhLnF1YW50aXR5LFxyXG4gICAgICAvLyBbYHJlc3RyaWN0QnV5aW5nUXVhbnRpdHlgXTogZGF0YS5yZXN0cmljdEJ1eWluZ1F1YW50aXR5LFxyXG4gICAgICAvLyBbYGRlc2NyaXB0aW9uYF06IGRhdGEuZGVzY3JpcHRpb24sXHJcbiAgICAgIHNlbGxlckxpc3Q6cmVzdWx0LnNlbGxlckxpc3QsXHJcbiAgICAgIHN0YXR1czpkYXRhLnBhbmljQnV5aW5nU3RhdHVzLFxyXG4gICAgICBkZWxpdmVyeTp7XHJcbiAgICAgICAgZnJlZUlkOmRhdGEuZnJlZUlkLFxyXG4gICAgICAgIGZyZWVOYW1lOmRhdGEuZnJlZU5hbWUsXHJcbiAgICAgICAgaXNSZXF1aXJlZEFkZHJlc3M6ZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyxcclxuICAgICAgICB0cmFuc0Nvc3RzOmRhdGEudHJhbnNDb3N0cyxcclxuICAgICAgfVxyXG4gICAgfSk7XHJcbiAgICBjb25zb2xlLmxvZygn6YWN6YCB5pWw5o2u44CC44CC44CCJyx0aGlzLmRhdGEuZGVsaXZlcnkpO1xyXG4gIH0sXHJcblxyXG4gIGdldENvdmVySW1hZ2VMaXN0KGRhdGE6YW55KXtcclxuICAgIGxldCBbdW5pZCxzZXFdID0gZGF0YS5jb3ZlckltYWdlLnNwbGl0KFwiO1wiKTtcclxuICAgIHJldHVybiBbe1xyXG4gICAgICB1cmw6IGRhdGEuY292ZXJJbWFnZVVybHx8JycsXHJcbiAgICAgIHVuaWQsXHJcbiAgICAgIHNlcVxyXG4gICAgfV1cclxuICB9LFxyXG4gIC8vIGdldEltYWdlc0xpc3QoZGF0YTphbnkpe1xyXG4gIC8vICAgbGV0IFt1bmlkLHNlcV0gPSBkYXRhLmltYWdlcy5zcGxpdChcIjtcIik7XHJcbiAgLy8gICByZXR1cm4gZGF0YS5pbWFnZXNVcmwubWFwKChpdGVtOnN0cmluZyk9PntcclxuICAvLyAgICAgcmV0dXJuIHtcclxuICAvLyAgICAgICB1cmw6IGl0ZW0sXHJcbiAgLy8gICAgICAgdW5pZCxcclxuICAvLyAgICAgICBzZXFcclxuICAvLyAgICAgfVxyXG4gIC8vICAgfSlcclxuICAvLyB9LFxyXG5cclxuICBvblJlYWR5KCkge1xyXG4gICAgdGhpcy5pbml0VmFsaWRhdG9yKClcclxuICB9LFxyXG4gIHNlbGVjdGVkU3RhcnRUaW1lKGV2ZW50OmFueSkge1xyXG4gICAgY29uc29sZS5sb2coJ+W8gOWniycsZXZlbnQpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgc3RhcnRUaW1lOiBldmVudC5kZXRhaWwuc3RhcnRUaW1lLFxyXG4gICAgfSlcclxuICB9LFxyXG4gIHNlbGVjdGVkRW5kVGltZShldmVudDphbnkpe1xyXG4gICAgY29uc29sZS5sb2coJ+e7k+adnycsZXZlbnQpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZW5kVGltZTogZXZlbnQuZGV0YWlsLmVuZFRpbWUsXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgZ2V0RGVsaXZlcnlNZXRob2QoZXZlbnQ6YW55KXtcclxuICAgIGNvbnNvbGUubG9nKGV2ZW50LmRldGFpbCk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAvLyBkZWxpdmVyeU1ldGhvZDogZXZlbnQuZGV0YWlsLmRlbGl2ZXJ5TWV0aG9kLFxyXG4gICAgICBmcmVlSWQ6IGV2ZW50LmRldGFpbC5mcmVlSWQsXHJcbiAgICB9KVxyXG4gICAgY29uc29sZS5sb2coJ3RoaXMuZGF0YS5mcmVlSWQ7Jyx0aGlzLmRhdGEuZnJlZUlkKTtcclxuICB9LFxyXG5cclxuICBjaGVja1Byb21vdGlvbnNUaXRsZShlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgncHJvbW90aW9uc1RpdGxlJyx2YWx1ZSk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBwcm9tb3Rpb25zVGl0bGU6dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgY2hlY2tPcmlnaW5hbFByaWNlKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdvcmlnaW5hbFByaWNlJyx2YWx1ZSk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBvcmlnaW5hbFByaWNlOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG4gIGNoZWNrRmxhc2hTYWxlUHJpY2UoZTphbnkpe1xyXG4gICAgbGV0IHsgdmFsdWUgfSA9IGUuZGV0YWlsXHJcbiAgICBjb25zb2xlLmxvZyhlKTtcclxuICAgIHZhbGlkYXRvckluc3RhbmNlLmNoZWNrRmllbGQoJ2ZsYXNoU2FsZVByaWNlJyx2YWx1ZSk7XHJcbiAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICBmbGFzaFNhbGVQcmljZTp2YWx1ZS50cmltKClcclxuICAgIH0pXHJcbiAgfSxcclxuICBjaGVja0ZsYXNoU2FsZVRvdGFsKGU6YW55KXtcclxuICAgIGxldCB7IHZhbHVlIH0gPSBlLmRldGFpbFxyXG4gICAgY29uc29sZS5sb2coZSk7XHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZS5jaGVja0ZpZWxkKCdmbGFzaFNhbGVUb3RhbCcsdmFsdWUpO1xyXG4gICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgZmxhc2hTYWxlVG90YWw6dmFsdWUudHJpbSgpXHJcbiAgICB9KVxyXG4gIH0sXHJcbiAgY2hlY2tQcm9tb3Rpb25EZXNjcmlwdGlvbihlOmFueSl7XHJcbiAgICBsZXQgeyB2YWx1ZSB9ID0gZS5kZXRhaWxcclxuICAgIGNvbnNvbGUubG9nKGUpO1xyXG4gICAgdmFsaWRhdG9ySW5zdGFuY2UuY2hlY2tGaWVsZCgncHJvbW90aW9uRGVzY3JpcHRpb24nLHZhbHVlKTtcclxuICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgIHByb21vdGlvbkRlc2NyaXB0aW9uOnZhbHVlLnRyaW0oKVxyXG4gICAgfSlcclxuICB9LFxyXG5cclxuICBhc3luYyBwb3N0Rm9ybURhdGEoZGF0YTpvYmplY3Qpe1xyXG4gICAgbGV0IFtlcnJvciwgcmVzXSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgd3guJGh0dHAucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOicvc2hvcHBpbmcvcGFuaWNCdXlpbmcuZG8/bT1zYXZlRG9jQ29kZScsXHJcbiAgICAgICAgZGF0YSxcclxuICAgICAgICBtZXRob2Q6J1BPU1QnXHJcbiAgICAgIH0pXHJcbiAgICApXHJcbiAgICBpZiAoZXJyb3IpIHtcclxuICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhyZXMpO1xyXG4gICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgdGl0bGU6ICfmiJDlip8nLFxyXG4gICAgICBkdXJhdGlvbjogMjAwMFxyXG4gICAgfSlcclxuICAgIHJldHVybiB0cnVlO1xyXG4gIH0sXHJcbiAgYXN5bmMgb25TdWJtaXQoKSB7XHJcbiAgICBsZXQgdGltZVF1YW50dW0gPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3RpbWUtcXVhbnR1bScpO1xyXG4gICAgbGV0IHNlbGxlckVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3NlbGxlci1lZGl0Jyk7XHJcbiAgICBsZXQgZmlsZVVwbG9hZGVyID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyJyk7XHJcbiAgICBsZXQgZmlsZVVwbG9hZGVyTXVsdGlwbGUgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2ZpbGUtdXBsb2FkZXItbXVsdGlwbGUnKTtcclxuXHJcbiAgICBsZXQgZGVsaXZlcnlNZXRob2QgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2RlbGl2ZXJ5LW1ldGhvZCcpO1xyXG4gICAgbGV0IGNoZWNrVHJhbnNDb3N0cyA9IHRydWU7XHJcbiAgICBsZXQgdHJhbnNDb3N0cyA9IDA7XHJcbiAgICBpZiAoZGVsaXZlcnlNZXRob2QuZGF0YS5pc1JlcXVpcmVkQWRkcmVzcyl7XHJcbiAgICAgIGNoZWNrVHJhbnNDb3N0cyA9IGRlbGl2ZXJ5TWV0aG9kLmNoZWNrRmllbGRzKCk7XHJcbiAgICAgIHRyYW5zQ29zdHMgPSBOdW1iZXIoZGVsaXZlcnlNZXRob2QuZGF0YS50cmFuc0Nvc3RzKTtcclxuICAgIH1cclxuXHJcblxyXG4gICAgY29uc29sZS5sb2coJ3NlbGxlckVkaXQnLCk7XHJcbiAgICBjb25zb2xlLmxvZyh0aW1lUXVhbnR1bSk7XHJcblxyXG4gICAgbGV0IGNoZWNrU3RhcnRUaW1lID0gdGltZVF1YW50dW0uY2hlY2tUaW1lKFwic3RhcnRUaW1lXCIsIFwi6K+36YCJ5oup6K6h5YiS5byA5aeL5pe26Ze0XCIpO1xyXG4gICAgbGV0IGNoZWNrRW5kVGltZSA9IHRpbWVRdWFudHVtLmNoZWNrVGltZShcImVuZFRpbWVcIiwgXCLor7fpgInmi6norqHliJLnu5PmnZ/ml7bpl7RcIik7XHJcbiAgICBsZXQgY2hlY2tDb3ZlckltYWdlID0gZmlsZVVwbG9hZGVyLmNoZWNrSW1hZ2VzKFwiY292ZXJJbWFnZVwiLCBcIuivt+S4iuS8oOS4gOW8oOWwgemdouWbvlwiKTtcclxuICAgIGxldCBjaGVja0ltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmNoZWNrSW1hZ2VzKFwiaW1hZ2VzXCIsIFwi6K+36Iez5bCR5LiK5Lyg5LiA5byg5Zu+54mHXCIpO1xyXG4gICAgbGV0IGNoZWNrQWxsRGF0YSA9IHZhbGlkYXRvckluc3RhbmNlLmNoZWNrQWxsRGF0YSgpO1xyXG4gICAgLy8gaWYgKHRoaXMuZGF0YS5nb29kc0ltZ0xpc3QubGVuZ3RoIDwgMSkge1xyXG4gICAgLy8gICBjb25zb2xlLmxvZygn6K+35LiK5Lyg5Lqn5ZOB5Zu+54mHJyk7XHJcbiAgICAvLyB9XHJcbiAgICBsZXQgc2VsbGVyTGlzdCA9IHNlbGxlckVkaXQuZ2V0U2VsbGVyTGlzdCgpO1xyXG4gICAgaWYgKHNlbGxlckxpc3QubGVuZ3RoPDEpIHtcclxuICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ+ivt+mAieaLqeiQpemUgOS6uuWRmCcsXHJcbiAgICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVyblxyXG4gICAgfVxyXG4gICAgbGV0IGNoZWNrRGVmYXVsdFNlbGxlciA9IHNlbGxlckVkaXQuY2hlY2tEZWZhdWx0U2VsbGVyKCk7XHJcbiAgICBpZiAoIWNoZWNrRGVmYXVsdFNlbGxlcikge1xyXG4gICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn6K+36YCJ5oup6buY6K6k6JCl6ZSA5Lq65ZGYJyxcclxuICAgICAgICBpY29uOiAnbm9uZScsXHJcbiAgICAgICAgZHVyYXRpb246IDIwMDBcclxuICAgICAgfSlcclxuICAgICAgcmV0dXJuXHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZygnY2hlY2tEZWZhdWx0U2VsbGVyJyxjaGVja0RlZmF1bHRTZWxsZXIpO1xyXG5cclxuICAgIGxldCBjaGVja0FyciA9IFtjaGVja1RyYW5zQ29zdHMsY2hlY2tTdGFydFRpbWUsY2hlY2tFbmRUaW1lLGNoZWNrQ292ZXJJbWFnZSxjaGVja0ltYWdlcyxjaGVja0FsbERhdGFdO1xyXG4gICAgbGV0IGRhdGEgPSB7fTtcclxuICAgIGlmIChjaGVja0Fyci5ldmVyeSgoaXRlbSk9PntcclxuICAgICAgcmV0dXJuIGl0ZW1cclxuICAgIH0pKXtcclxuICAgICAgY29uc29sZS5sb2coJy4uLi7mj5DkuqTmiJDlip8nKTtcclxuICAgICAgbGV0IGNvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuZ2V0Q292ZXJJbWFnZVVuaWQoKTtcclxuICAgICAgbGV0IGltYWdlcyA9IGZpbGVVcGxvYWRlck11bHRpcGxlLmdldEltYWdlc1VuaWQoKTtcclxuICAgICAgY29uc29sZS5sb2coY292ZXJJbWFnZSxpbWFnZXMpO1xyXG4gICAgICBsZXQgZm9ybURhdGE6IGFueSA9IHRoaXMuZGF0YTtcclxuICAgICAgZGF0YSA9IHtcclxuICAgICAgICBkb2NDb2RlOiBmb3JtRGF0YS5kb2Njb2RlLCAvL+a0u+WKqOWNleWPt++8jOaWsOW7uua0u+WKqOaXtuS4uuepuuWAvO+8jOe8lui+keaXtumcgOimgWRvY2NvZGXlgLxcclxuICAgICAgICBmb3JtSWQ6IGZvcm1EYXRhLmZvcm1JZCwgLy/lip/og73lj7fvvJrnp5LmnYAgNzEwODAyIO+8jCDmiqXlkI3pgoDnuqYgNzEwODAzIO+8jOWboui0rSA3MTA4MDRcclxuICAgICAgICBkb2NTdGF0dXM6MTAwLCAvL+WNleaNrueKtuaAgTogMCDkv53lrZjvvIjotbfojYnvvIkg77yMMTAwIOWPkeW4g1xyXG4gICAgICAgIGNvdmVySW1hZ2UsXHJcbiAgICAgICAgaW1hZ2VzLFxyXG4gICAgICAgIHRyYW5zQ29zdHMsIC8v6YCB6LSn5LiK6Zeo5pe2IOmFjemAgei0uVxyXG4gICAgICAgIC8vIC4uLnRoaXMuZGF0YS5mb3JtRGF0YSxcclxuXHJcbiAgICAgICAgZWZmZWN0aXZlU3RhcnREYXRlOiBmb3JtRGF0YS5zdGFydFRpbWUsXHJcbiAgICAgICAgZWZmZWN0aXZlRW5kRGF0ZTogZm9ybURhdGEuZW5kVGltZSxcclxuICAgICAgICBmcmVlSWQ6IGZvcm1EYXRhLmZyZWVJZCxcclxuICAgICAgICB0aXRsZTogZm9ybURhdGEucHJvbW90aW9uc1RpdGxlLFxyXG4gICAgICAgIG9yaWdpbmFsUHJpY2U6IE51bWJlcihmb3JtRGF0YS5vcmlnaW5hbFByaWNlKSxcclxuICAgICAgICBzYWxlc1ByaWNlOiBOdW1iZXIoZm9ybURhdGEuZmxhc2hTYWxlUHJpY2UpLFxyXG4gICAgICAgIG51bWJlck9mVGVhbTogTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVRvdGFsKSxcclxuICAgICAgICBkZXNjcmlwdGlvbjogZm9ybURhdGEucHJvbW90aW9uRGVzY3JpcHRpb24sXHJcblxyXG4gICAgICAgIHNlbGxlckxpc3QsXHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2coJ+W+heWPkeW4g+aVsOaNricsZGF0YSk7XHJcbiAgICAgIGlmICghYXdhaXQgdGhpcy5wb3N0Rm9ybURhdGEoZGF0YSkpIHJldHVybjtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5mcm9tUGFnZT09J2VkaXQnKXtcclxuICAgICAgICB3eC5uYXZpZ2F0ZUJhY2soKTtcclxuICAgICAgfSBlbHNle1xyXG4gICAgICAgIHd4LnJlZGlyZWN0VG8oe1xyXG4gICAgICAgICAgdXJsOicuLi9wcm9tb3Rpb25zTWFuYWdlTGlzdC9wcm9tb3Rpb25zTWFuYWdlTGlzdD90YWI9MydcclxuICAgICAgICB9KVxyXG4gICAgICB9XHJcblxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogJ+mhtemdoui/mOaciemUmeivr+acquWkhOeQhicsXHJcbiAgICAgICAgaWNvbjogJ25vbmUnLFxyXG4gICAgICAgIGR1cmF0aW9uOiAyMDAwXHJcbiAgICAgIH0pXHJcbiAgICAgIGNvbnNvbGUubG9nKCfov5jmnInplJnor6/mnKrlpITnkIYnKTtcclxuICAgIH1cclxuXHJcblxyXG4gIH0sXHJcblxyXG4gIG9uU2F2ZSgpe1xyXG4gICAgbGV0IHNlbGxlckVkaXQgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI3NlbGxlci1lZGl0Jyk7XHJcbiAgICBsZXQgc2VsbGVyTGlzdCA9IHNlbGxlckVkaXQuZ2V0U2VsbGVyTGlzdCgpO1xyXG4gICAgbGV0IGZpbGVVcGxvYWRlciA9IHRoaXMuc2VsZWN0Q29tcG9uZW50KCcjZmlsZS11cGxvYWRlcicpO1xyXG4gICAgbGV0IGZpbGVVcGxvYWRlck11bHRpcGxlID0gdGhpcy5zZWxlY3RDb21wb25lbnQoJyNmaWxlLXVwbG9hZGVyLW11bHRpcGxlJyk7XHJcbiAgICBjb25zb2xlLmxvZygnLi4uLuaPkOS6pOaIkOWKnycpO1xyXG4gICAgbGV0IGNvdmVySW1hZ2UgPSBmaWxlVXBsb2FkZXIuZ2V0Q292ZXJJbWFnZVVuaWQoKTtcclxuICAgIGxldCBpbWFnZXMgPSBmaWxlVXBsb2FkZXJNdWx0aXBsZS5nZXRJbWFnZXNVbmlkKCk7XHJcbiAgICBsZXQgZGVsaXZlcnlNZXRob2QgPSB0aGlzLnNlbGVjdENvbXBvbmVudCgnI2RlbGl2ZXJ5LW1ldGhvZCcpO1xyXG4gICAgbGV0IHRyYW5zQ29zdHMgPSAwO1xyXG4gICAgaWYgKGRlbGl2ZXJ5TWV0aG9kLmRhdGEuaXNSZXF1aXJlZEFkZHJlc3Mpe1xyXG4gICAgICB0cmFuc0Nvc3RzID0gTnVtYmVyKGRlbGl2ZXJ5TWV0aG9kLmRhdGEudHJhbnNDb3N0cyk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmxvZyhjb3ZlckltYWdlLGltYWdlcyk7XHJcbiAgICBsZXQgZm9ybURhdGE6IGFueSA9IHRoaXMuZGF0YTtcclxuICAgIGxldCBkYXRhID0ge1xyXG4gICAgICBkb2NDb2RlOiBmb3JtRGF0YS5kb2Njb2RlLCAvL+a0u+WKqOWNleWPt++8jOaWsOW7uua0u+WKqOaXtuS4uuepuuWAvO+8jOe8lui+keaXtumcgOimgWRvY2NvZGXlgLxcclxuICAgICAgZm9ybUlkOiBmb3JtRGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICAgIGRvY1N0YXR1czogMCwgLy/ljZXmja7nirbmgIE6IDAg5L+d5a2Y77yI6LW36I2J77yJIO+8jDEwMCDlj5HluINcclxuICAgICAgY292ZXJJbWFnZSxcclxuICAgICAgaW1hZ2VzLFxyXG4gICAgICB0cmFuc0Nvc3RzLCAvL+mAgei0p+S4iumXqOaXtiDphY3pgIHotLlcclxuICAgICAgLy8gLi4udGhpcy5kYXRhLmZvcm1EYXRhLFxyXG5cclxuICAgICAgZWZmZWN0aXZlU3RhcnREYXRlOiBmb3JtRGF0YS5zdGFydFRpbWUsXHJcbiAgICAgIGVmZmVjdGl2ZUVuZERhdGU6IGZvcm1EYXRhLmVuZFRpbWUsXHJcbiAgICAgIGZyZWVJZDogZm9ybURhdGEuZnJlZUlkLFxyXG4gICAgICB0aXRsZTogZm9ybURhdGEucHJvbW90aW9uc1RpdGxlLFxyXG4gICAgICBvcmlnaW5hbFByaWNlOiBOdW1iZXIoZm9ybURhdGEub3JpZ2luYWxQcmljZSl8fDAsXHJcbiAgICAgIHNhbGVzUHJpY2U6IE51bWJlcihmb3JtRGF0YS5mbGFzaFNhbGVQcmljZSl8fDAsXHJcbiAgICAgIG51bWJlck9mVGVhbTogTnVtYmVyKGZvcm1EYXRhLmZsYXNoU2FsZVRvdGFsKXx8MCxcclxuICAgICAgZGVzY3JpcHRpb246IGZvcm1EYXRhLnByb21vdGlvbkRlc2NyaXB0aW9uLFxyXG5cclxuICAgICAgc2VsbGVyTGlzdCxcclxuICAgIH1cclxuICAgIC8vIGxldCBkYXRhID0ge1xyXG4gICAgLy8gICBkb2NDb2RlOnRoaXMuZGF0YS5kb2Njb2RlLCAvL+a0u+WKqOWNleWPt++8jOaWsOW7uua0u+WKqOaXtuS4uuepuuWAvO+8jOe8lui+keaXtumcgOimgWRvY2NvZGXlgLxcclxuICAgIC8vICAgZm9ybUlkOnRoaXMuZGF0YS5mb3JtSWQsIC8v5Yqf6IO95Y+377ya56eS5p2AIDcxMDgwMiDvvIwg5oql5ZCN6YKA57qmIDcxMDgwMyDvvIzlm6LotK0gNzEwODA0XHJcbiAgICAvLyAgIGRvY1N0YXR1czowLCAvL+WNleaNrueKtuaAgTogMCDkv53lrZjvvIjotbfojYnvvIkg77yMMTAwIOWPkeW4g1xyXG4gICAgLy8gICBjb3ZlckltYWdlLFxyXG4gICAgLy8gICBpbWFnZXMsXHJcbiAgICAvLyAgIHRyYW5zQ29zdHMsIC8v6YCB6LSn5LiK6Zeo5pe2IOmFjemAgei0uVxyXG4gICAgLy8gICAuLi50aGlzLmRhdGEuZm9ybURhdGEsXHJcbiAgICAvLyAgIHNlbGxlckxpc3QsXHJcbiAgICAvLyB9XHJcbiAgICBjb25zb2xlLmxvZygn5b6F5L+d5a2Y5pWw5o2uJyxkYXRhKTtcclxuICAgIHRoaXMucG9zdEZvcm1EYXRhKGRhdGEpO1xyXG4gIH0sXHJcbiAgLy8gb25JbnB1dFN0YXJ0RGF0ZSgpIHt9LFxyXG4gIC8vIG9uSW5wdXRFbmREYXRlKCkge30sXHJcbiAgaW5pdFZhbGlkYXRvcigpe1xyXG4gICAgLy8g5a6e5L6L5YyWXHJcbiAgICB2YWxpZGF0b3JJbnN0YW5jZSA9IG5ldyBNeVZhbGlkYXRvcih7XHJcbiAgICAgIHJ1bGVzOiB7XHJcbiAgICAgICAgcHJvbW90aW9uc1RpdGxlOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG1heGxlbmd0aDogMTVcclxuICAgICAgICB9LFxyXG4gICAgICAgIG9yaWdpbmFsUHJpY2U6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlLFxyXG4gICAgICAgICAgbnVtYmVyOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgICBmbGFzaFNhbGVQcmljZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6IHRydWUsXHJcbiAgICAgICAgICBudW1iZXI6IHRydWVcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZsYXNoU2FsZVRvdGFsOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogdHJ1ZSxcclxuICAgICAgICAgIG51bWJlcjogdHJ1ZVxyXG4gICAgICAgIH0sXHJcbiAgICAgICAgcHJvbW90aW9uRGVzY3JpcHRpb246IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiB0cnVlXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgbWVzc2FnZXM6IHtcclxuICAgICAgICBwcm9tb3Rpb25zVGl0bGU6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5rS75Yqo5qCH6aKYJyxcclxuICAgICAgICAgIG1heGxlbmd0aDogJ+mVv+W6puS4jeiDveWkp+S6jjE1J1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgb3JpZ2luYWxQcmljZToge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXkuqflk4HmoIfku7cnLFxyXG4gICAgICAgICAgbnVtYmVyOiAn5Lu35qC85b+F6aG75Li65pWw5a2XJ1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmxhc2hTYWxlUHJpY2U6IHtcclxuICAgICAgICAgIHJlcXVpcmVkOiAn6K+36L6T5YWl5ou85Zui5Lu3JyxcclxuICAgICAgICAgIG51bWJlcjogJ+S7t+agvOW/hemhu+S4uuaVsOWtlydcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZsYXNoU2FsZVRvdGFsOiB7XHJcbiAgICAgICAgICByZXF1aXJlZDogJ+ivt+i+k+WFpeaIkOWbouS6uuaVsCcsXHJcbiAgICAgICAgICBudW1iZXI6ICfkurrmlbDlv4XpobvkuLrmlbDlrZcnXHJcbiAgICAgICAgfSxcclxuICAgICAgICBwcm9tb3Rpb25EZXNjcmlwdGlvbjoge1xyXG4gICAgICAgICAgcmVxdWlyZWQ6ICfor7fovpPlhaXmtLvliqjmj4/ov7AnXHJcbiAgICAgICAgfSxcclxuICAgICAgfSxcclxuICAgICAgbXVsdGlDaGVjazp0cnVlXHJcbiAgICB9LHRoaXMpXHJcbiAgICAvLyB0aGlzLnNldERhdGEoe1xyXG4gICAgLy8gICB2YWxpZGF0b3JJbnN0YW5jZVxyXG4gICAgLy8gfSlcclxuICAgIGNvbnNvbGUubG9nKCdoaGhoLCcsdmFsaWRhdG9ySW5zdGFuY2UpO1xyXG4gIH0sXHJcbn0pXHJcbmV4cG9ydCB7fVxyXG4iXX0=