"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var hwRequirement_1 = require("../../service/hwRequirement"); var hwUser_1 = require("../../service/hwUser"); var app = getApp(); var cover_animation = {}; Page({ data: { 'indicator_dots': false, 'autoplay': true, 'circular': true, 'interval': 3000, 'duration': 1500, 'condition_animation': {}, 'list_animation': {}, 'cover_animation': {}, 'swiper': [], 'industry': '行业', 'price': '单价', 'district': '不限区域', 'conditionList': [], 'condition': '', 'action_index': 0, 'industry_index': 0, 'industry_id': '', 'price_index': 0, 'price_id': '', 'province_id': '', 'city_id': '', 'area_id': '', 'industryList': [{ id: '', name: '不限行业' }, { id: 0, name: '教育培训' }, { id: 1, name: 'IT互联网' }, { id: 2, name: '仓储物流' }, { id: 3, name: '酒店餐饮' }, { id: 4, name: '家政保洁' }, { id: 5, name: '维修保养' }, { id: 6, name: '会务会展' }, { id: 7, name: '专业服务' }, { id: 8, name: '生产制造' }, { id: 9, name: '其他行业' }, ], 'priceList': [{ id: '', name: '不限' }, { id: 1, name: '3K以下' }, { id: 2, name: '3K-5K' }, { id: 3, name: '5K-8K' }, { id: 4, name: '8K-12K' }, { id: 5, name: '12K-20K' }, { id: 6, name: '20K-30K' }, { id: 7, name: '30K以上' }, ], 'list': [], 'pageNo': 1, 'isLast': false, 'offline': false, 'loading': true, 'list_length': false, 'show': false, 'transition': true, 'fixTop': 0, 'scrollTop': 0, swiperIndex: 0 }, swiperChange: function (e) { this.setData({ swiperIndex: e.detail.current }); }, chooseCondition: function (e) { var condition = e.currentTarget.dataset.condition === this.data.condition ? '' : e.currentTarget.dataset.condition; this.doAnimation(e.currentTarget.dataset.condition === this.data.condition); this.setData({ condition: condition, }); }, openArea: function () { this.doAnimation(true); cover_animation.left(0).step(); this.setData({ cover_animation: cover_animation.export(), condition: '', }); }, choose: function (e) { var _a; var _this = this; var index = e.currentTarget.dataset.index; var id = e.currentTarget.dataset.id; var condition = this.data.condition; var list = []; if (condition === 'industry') { list = this.data.industryList; } else { list = this.data.priceList; } this.setData((_a = {}, _a[condition] = list[index].name, _a[condition + "_index"] = index, _a[condition + "_id"] = id, _a.condition = '', _a.list = [], _a.loading = true, _a), function () { _this.getList(1); }); this.doAnimation(true); }, saveDistrict: function (e) { var _this = this; cover_animation.left(750 + 'rpx').step(); this.setData({ cover_animation: cover_animation.export(), district: e.detail.area_name, province_id: e.detail.province_id, city_id: e.detail.city_id, area_id: e.detail.area_id, list: [] }, function () { _this.getList(1); }); }, coloseDistrict: function () { cover_animation.left(750 + 'rpx').step(); this.setData({ cover_animation: cover_animation.export() }); this.doAnimation(true); }, doAnimation: function (status) { var fixTop = this.data.fixTop; var scrollTop = this.data.scrollTop; if (fixTop > scrollTop) { this.setData({ transition: status }); } }, toPerson: function () { if (wx.getStorageSync('userId') && wx.getStorageSync('userToken')) { wx.navigateTo({ url: '/pages/person/person', }); } else { wx.showModal({ title: '提示', content: '你还未登陆,是否立即登录', cancelColor: '#888A8E', confirmColor: '#31364C', success: function (res) { if (res.confirm) { wx.navigateTo({ url: '/pages/login/login', }); } } }); } }, toDetail: function (e) { var id = e.currentTarget.dataset.id; wx.navigateTo({ url: "/pages/detail/detail?id=" + id + "&&status=1", }); }, getList: function (pageNo, province_code, city_code, country_code, trade_type, priceType) { var _this = this; var _pageNo = pageNo || this.data.pageNo; var param = Object.assign({ pageNo: _pageNo, province_code: this.data.province_id, city_code: this.data.city_id, country_code: this.data.area_id, trade_type: this.data.industry_id, priceType: this.data.price_id }, { pageNo: pageNo, pageSize: 10, province_code: province_code, city_code: city_code, country_code: country_code, trade_type: trade_type, priceType: priceType, platform_id: app.globalData.platformId }); hwRequirement_1.getRequirementsApi(param).then(function (res) { var _a; if (typeof res === 'string') { if (res === 'offline' && _this.data.list.length === 0) { _this.setData({ offline: true, loading: false, list_length: false }); } } var data = res; if (data.errcode === 0) { if (pageNo === 1 && data.data.requirements.length === 0) { _this.setData({ loading: false, list_length: true, offline: false }); return; } _pageNo++; _this.setData((_a = { pageNo: _pageNo }, _a["list[" + (_pageNo - 2) + "]"] = data.data.requirements, _a.isLast = data.data.isLast, _a.offline = false, _a.list_length = false, _a.loading = false, _a)); } }).catch(function () { _this.setData({ loading: false, list_length: true, offline: false }); }); }, getBanner: function () { var _this = this; hwUser_1.bannerApi().then(function (res) { var data = res; if (data.errcode === 0) { _this.setData({ swiper: data.data.bannerList }); } }); }, reload: function () { var _this = this; this.setData({ list: [], pageNo: 1, scrollTop: 0 }, function () { _this.getBanner(); _this.getList(); }); }, checkLogin: function () { if (wx.getStorageSync('userId') && wx.getStorageSync('userToken')) { if (wx.getStorageSync('userInfo').registerFrom === 0) { wx.reLaunch({ url: '/pages/success/success', }); } else { this.reload(); this.setData({ show: false }); } } else { wx.navigateTo({ url: '/pages/login/login', }); } }, onLoad: function () { this.getBanner(); }, onReady: function () { }, onShow: function () { var _this = this; this.setData({ route: this.route }); this.checkLogin(); cover_animation = wx.createAnimation({ duration: 600, timingFunction: 'ease', }); wx.getSystemInfo({ success: function (res) { _this.setData({ per: 750 / res.windowWidth }); } }); wx.createSelectorQuery().select('.choose-area').boundingClientRect(function (rect) { _this.setData({ fixTop: rect.top, }); }).exec(); if (app.globalData.webview) { wx.navigateTo({ url: app.globalData.webview, success: function () { app.globalData.webview = null; } }); } }, onHide: function () { }, onUnload: function () { }, onPullDownRefresh: function () { var _this = this; this.setData({ list: [], pageNo: 1, scrollTop: 0 }, function () { _this.getList(); }); }, onReachBottom: function () { var isLast = this.data.isLast; if (isLast) { } else { this.getList(); } }, onShareAppMessage: function () { }, onPageScroll: function (res) { var top = res.scrollTop; this.setData({ scrollTop: top }); } }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQUVBLDZEQUFrRTtBQUNsRSwrQ0FBaUQ7QUFDakQsSUFBTSxHQUFHLEdBQUcsTUFBTSxFQUFFLENBQUE7QUFDcEIsSUFBSSxlQUFlLEdBQVEsRUFBRSxDQUFBO0FBQzdCLElBQUksQ0FBQztJQUlELElBQUksRUFBRTtRQUNGLGdCQUFnQixFQUFFLEtBQUs7UUFDdkIsVUFBVSxFQUFFLElBQUk7UUFDaEIsVUFBVSxFQUFFLElBQUk7UUFDaEIsVUFBVSxFQUFFLElBQUk7UUFDaEIsVUFBVSxFQUFFLElBQUk7UUFDaEIscUJBQXFCLEVBQUUsRUFBRTtRQUN6QixnQkFBZ0IsRUFBRSxFQUFFO1FBQ3BCLGlCQUFpQixFQUFFLEVBQUU7UUFDckIsUUFBUSxFQUFFLEVBQUU7UUFDWixVQUFVLEVBQUUsSUFBSTtRQUNoQixPQUFPLEVBQUUsSUFBSTtRQUNiLFVBQVUsRUFBRSxNQUFNO1FBQ2xCLGVBQWUsRUFBRSxFQUFFO1FBQ25CLFdBQVcsRUFBRSxFQUFFO1FBQ2YsY0FBYyxFQUFFLENBQUM7UUFDakIsZ0JBQWdCLEVBQUUsQ0FBQztRQUNuQixhQUFhLEVBQUUsRUFBRTtRQUNqQixhQUFhLEVBQUUsQ0FBQztRQUNoQixVQUFVLEVBQUUsRUFBRTtRQUNkLGFBQWEsRUFBRSxFQUFFO1FBQ2pCLFNBQVMsRUFBRSxFQUFFO1FBQ2IsU0FBUyxFQUFFLEVBQUU7UUFDYixjQUFjLEVBQUUsQ0FBQztnQkFDYixFQUFFLEVBQUUsRUFBRTtnQkFDTixJQUFJLEVBQUUsTUFBTTthQUNmO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLENBQUM7Z0JBQ0wsSUFBSSxFQUFFLE1BQU07YUFDZjtZQUNEO2dCQUNJLEVBQUUsRUFBRSxDQUFDO2dCQUNMLElBQUksRUFBRSxPQUFPO2FBQ2hCO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLENBQUM7Z0JBQ0wsSUFBSSxFQUFFLE1BQU07YUFDZjtZQUNEO2dCQUNJLEVBQUUsRUFBRSxDQUFDO2dCQUNMLElBQUksRUFBRSxNQUFNO2FBQ2Y7WUFDRDtnQkFDSSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxJQUFJLEVBQUUsTUFBTTthQUNmO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLENBQUM7Z0JBQ0wsSUFBSSxFQUFFLE1BQU07YUFDZjtZQUNEO2dCQUNJLEVBQUUsRUFBRSxDQUFDO2dCQUNMLElBQUksRUFBRSxNQUFNO2FBQ2Y7WUFDRDtnQkFDSSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxJQUFJLEVBQUUsTUFBTTthQUNmO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLENBQUM7Z0JBQ0wsSUFBSSxFQUFFLE1BQU07YUFDZjtZQUNEO2dCQUNJLEVBQUUsRUFBRSxDQUFDO2dCQUNMLElBQUksRUFBRSxNQUFNO2FBQ2Y7U0FDQTtRQUNELFdBQVcsRUFBRSxDQUFDO2dCQUNWLEVBQUUsRUFBRSxFQUFFO2dCQUNOLElBQUksRUFBRSxJQUFJO2FBQ2I7WUFDRDtnQkFDSSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxJQUFJLEVBQUUsTUFBTTthQUNmO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLENBQUM7Z0JBQ0wsSUFBSSxFQUFFLE9BQU87YUFDaEI7WUFDRDtnQkFDSSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxJQUFJLEVBQUUsT0FBTzthQUNoQjtZQUNEO2dCQUNJLEVBQUUsRUFBRSxDQUFDO2dCQUNMLElBQUksRUFBRSxRQUFRO2FBQ2pCO1lBQ0Q7Z0JBQ0ksRUFBRSxFQUFFLENBQUM7Z0JBQ0wsSUFBSSxFQUFFLFNBQVM7YUFDbEI7WUFDRDtnQkFDSSxFQUFFLEVBQUUsQ0FBQztnQkFDTCxJQUFJLEVBQUUsU0FBUzthQUNsQjtZQUNEO2dCQUNJLEVBQUUsRUFBRSxDQUFDO2dCQUNMLElBQUksRUFBRSxPQUFPO2FBQ2hCO1NBQ0E7UUFDRCxNQUFNLEVBQUUsRUFBRTtRQUNWLFFBQVEsRUFBRSxDQUFDO1FBQ1gsUUFBUSxFQUFFLEtBQUs7UUFDZixTQUFTLEVBQUUsS0FBSztRQUNoQixTQUFTLEVBQUUsSUFBSTtRQUNmLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLE1BQU0sRUFBRSxLQUFLO1FBQ2IsWUFBWSxFQUFFLElBQUk7UUFDbEIsUUFBUSxFQUFFLENBQUM7UUFDWCxXQUFXLEVBQUUsQ0FBQztRQUNkLFdBQVcsRUFBRSxDQUFDO0tBQ2pCO0lBQ0QsWUFBWSxFQUFaLFVBQWEsQ0FBTTtRQUNmLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDVCxXQUFXLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPO1NBQ2hDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFLRCxlQUFlLEVBQWYsVUFBZ0IsQ0FBTTtRQUNsQixJQUFNLFNBQVMsR0FBRyxDQUFDLENBQUMsYUFBYSxDQUFDLE9BQU8sQ0FBQyxTQUFTLEtBQUssSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQ3JILElBQUksQ0FBQyxXQUFXLENBQUMsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsU0FBUyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUE7UUFHM0UsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNULFNBQVMsV0FBQTtTQUVaLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFLRCxRQUFRO1FBQ0osSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN0QixlQUFlLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDO1FBQy9CLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDVCxlQUFlLEVBQUUsZUFBZSxDQUFDLE1BQU0sRUFBRTtZQUN6QyxTQUFTLEVBQUUsRUFBRTtTQUNoQixDQUFDLENBQUE7SUFDTixDQUFDO0lBTUQsTUFBTSxFQUFOLFVBQU8sQ0FBTTs7UUFBYixpQkF1QkM7UUF0QkcsSUFBTSxLQUFLLEdBQUcsQ0FBQyxDQUFDLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1FBQzVDLElBQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxJQUFJLFNBQVMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQztRQUNwQyxJQUFJLElBQUksR0FBVSxFQUFFLENBQUE7UUFDcEIsSUFBSSxTQUFTLEtBQUssVUFBVSxFQUFFO1lBQzFCLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQTtTQUNoQzthQUFNO1lBQ0gsSUFBSSxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFBO1NBQzdCO1FBRUQsSUFBSSxDQUFDLE9BQU87WUFDUixHQUFDLFNBQVMsSUFBRyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsSUFBSTtZQUM3QixHQUFJLFNBQVMsV0FBUSxJQUFHLEtBQUs7WUFDN0IsR0FBSSxTQUFTLFFBQUssSUFBRyxFQUFFO1lBQ3ZCLFlBQVMsR0FBRSxFQUFFO1lBQ2IsT0FBSSxHQUFFLEVBQUU7WUFDUixVQUFPLEdBQUUsSUFBSTtpQkFDZDtZQUNDLEtBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDbkIsQ0FBQyxDQUFDLENBQUE7UUFDRixJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFBO0lBRTFCLENBQUM7SUFTRCxZQUFZLEVBQVosVUFBYSxDQUFNO1FBQW5CLGlCQVlDO1FBWEcsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNULGVBQWUsRUFBRSxlQUFlLENBQUMsTUFBTSxFQUFFO1lBQ3pDLFFBQVEsRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLFNBQVM7WUFDNUIsV0FBVyxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsV0FBVztZQUNqQyxPQUFPLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxPQUFPO1lBQ3pCLE9BQU8sRUFBRSxDQUFDLENBQUMsTUFBTSxDQUFDLE9BQU87WUFDekIsSUFBSSxFQUFFLEVBQUU7U0FDWCxFQUFFO1lBQ0MsS0FBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQTtRQUNuQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFLRCxjQUFjO1FBQ1YsZUFBZSxDQUFDLElBQUksQ0FBQyxHQUFHLEdBQUcsS0FBSyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDekMsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNULGVBQWUsRUFBRSxlQUFlLENBQUMsTUFBTSxFQUFFO1NBQzVDLENBQUMsQ0FBQTtRQUNGLElBQUksQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDMUIsQ0FBQztJQUlELFdBQVcsRUFBWCxVQUFZLE1BQWU7UUFXdkIsSUFBTSxNQUFNLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7UUFDaEMsSUFBTSxTQUFTLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDdEMsSUFBSSxNQUFNLEdBQUcsU0FBUyxFQUFFO1lBQ3BCLElBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ1QsVUFBVSxFQUFFLE1BQU07YUFDckIsQ0FBQyxDQUFBO1NBQ0w7SUFDTCxDQUFDO0lBSUQsUUFBUTtRQUNKLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLENBQUMsY0FBYyxDQUFDLFdBQVcsQ0FBQyxFQUFFO1lBQy9ELEVBQUUsQ0FBQyxVQUFVLENBQUM7Z0JBQ1YsR0FBRyxFQUFFLHNCQUFzQjthQUM5QixDQUFDLENBQUE7U0FDTDthQUFNO1lBQ0gsRUFBRSxDQUFDLFNBQVMsQ0FBQztnQkFDVCxLQUFLLEVBQUUsSUFBSTtnQkFDWCxPQUFPLEVBQUUsY0FBYztnQkFDdkIsV0FBVyxFQUFFLFNBQVM7Z0JBQ3RCLFlBQVksRUFBRSxTQUFTO2dCQUN2QixPQUFPLEVBQUUsVUFBQSxHQUFHO29CQUNSLElBQUksR0FBRyxDQUFDLE9BQU8sRUFBRTt3QkFDYixFQUFFLENBQUMsVUFBVSxDQUFDOzRCQUNWLEdBQUcsRUFBRSxvQkFBb0I7eUJBQzVCLENBQUMsQ0FBQTtxQkFDTDtnQkFDTCxDQUFDO2FBQ0osQ0FBQyxDQUFBO1NBQ0w7SUFFTCxDQUFDO0lBSUQsUUFBUSxFQUFSLFVBQVMsQ0FBTTtRQUNYLElBQU0sRUFBRSxHQUFHLENBQUMsQ0FBQyxhQUFhLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUN0QyxFQUFFLENBQUMsVUFBVSxDQUFDO1lBQ1YsR0FBRyxFQUFFLDZCQUEyQixFQUFFLGVBQVk7U0FDakQsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQVlELE9BQU8sRUFBUCxVQUFRLE1BQWUsRUFBRSxhQUFzQixFQUFFLFNBQWtCLEVBQUUsWUFBcUIsRUFBRSxVQUFtQixFQUFFLFNBQWtCO1FBQW5JLGlCQTJEQztRQTFERyxJQUFJLE9BQU8sR0FBVyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUE7UUFDaEQsSUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLE1BQU0sQ0FBQztZQUN4QixNQUFNLEVBQUUsT0FBTztZQUNmLGFBQWEsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDcEMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTztZQUM1QixZQUFZLEVBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPO1lBQy9CLFVBQVUsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFdBQVc7WUFDakMsU0FBUyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUTtTQUNoQyxFQUFFO1lBQ0MsTUFBTSxRQUFBO1lBQ04sUUFBUSxFQUFFLEVBQUU7WUFDWixhQUFhLGVBQUE7WUFDYixTQUFTLFdBQUE7WUFDVCxZQUFZLGNBQUE7WUFDWixVQUFVLFlBQUE7WUFDVixTQUFTLFdBQUE7WUFDVCxXQUFXLEVBQUUsR0FBRyxDQUFDLFVBQVUsQ0FBQyxVQUFVO1NBQ3pDLENBQUMsQ0FBQTtRQUNGLGtDQUFrQixDQUFDLEtBQUssQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFBLEdBQUc7O1lBQzlCLElBQUksT0FBTyxHQUFHLEtBQUssUUFBUSxFQUFFO2dCQUV6QixJQUFJLEdBQUcsS0FBSyxTQUFTLElBQUksS0FBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRTtvQkFDbEQsS0FBSSxDQUFDLE9BQU8sQ0FBQzt3QkFDVCxPQUFPLEVBQUUsSUFBSTt3QkFDYixPQUFPLEVBQUUsS0FBSzt3QkFDZCxXQUFXLEVBQUUsS0FBSztxQkFDckIsQ0FBQyxDQUFBO2lCQUNMO2FBQ0o7WUFDRCxJQUFNLElBQUksR0FBd0IsR0FBRyxDQUFBO1lBQ3JDLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxDQUFDLEVBQUU7Z0JBQ3BCLElBQUksTUFBTSxLQUFLLENBQUMsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO29CQUVyRCxLQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNULE9BQU8sRUFBRSxLQUFLO3dCQUNkLFdBQVcsRUFBRSxJQUFJO3dCQUNqQixPQUFPLEVBQUUsS0FBSztxQkFDakIsQ0FBQyxDQUFBO29CQUNGLE9BQU07aUJBQ1Q7Z0JBRUQsT0FBTyxFQUFFLENBQUM7Z0JBQ1YsS0FBSSxDQUFDLE9BQU87d0JBQ1IsTUFBTSxFQUFFLE9BQU87O29CQUNmLEdBQUMsV0FBUSxPQUFPLEdBQUcsQ0FBQyxPQUFHLElBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxZQUFZO29CQUNoRCxTQUFNLEdBQUUsSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNO29CQUN4QixVQUFPLEdBQUUsS0FBSztvQkFDZCxjQUFXLEdBQUUsS0FBSztvQkFDbEIsVUFBTyxHQUFFLEtBQUs7d0JBQ2hCLENBQUE7YUFDTDtRQUNMLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQztZQUNMLEtBQUksQ0FBQyxPQUFPLENBQUM7Z0JBQ1QsT0FBTyxFQUFFLEtBQUs7Z0JBQ2QsV0FBVyxFQUFFLElBQUk7Z0JBQ2pCLE9BQU8sRUFBRSxLQUFLO2FBQ2pCLENBQUMsQ0FBQTtRQUNOLENBQUMsQ0FBQyxDQUFBO0lBQ04sQ0FBQztJQUlELFNBQVMsRUFBVDtRQUFBLGlCQVNDO1FBUkcsa0JBQVMsRUFBRSxDQUFDLElBQUksQ0FBQyxVQUFBLEdBQUc7WUFDaEIsSUFBTSxJQUFJLEdBQXdCLEdBQUcsQ0FBQTtZQUNyQyxJQUFJLElBQUksQ0FBQyxPQUFPLEtBQUssQ0FBQyxFQUFFO2dCQUNwQixLQUFJLENBQUMsT0FBTyxDQUFDO29CQUNULE1BQU0sRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVU7aUJBQy9CLENBQUMsQ0FBQTthQUNMO1FBQ0wsQ0FBQyxDQUFDLENBQUE7SUFDTixDQUFDO0lBQ0QsTUFBTTtRQUFOLGlCQVlDO1FBVkcsSUFBSSxDQUFDLE9BQU8sQ0FBQztZQUNULElBQUksRUFBRSxFQUFFO1lBQ1IsTUFBTSxFQUFFLENBQUM7WUFDVCxTQUFTLEVBQUUsQ0FBQztTQUNmLEVBQUU7WUFFQyxLQUFJLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDakIsS0FBSSxDQUFDLE9BQU8sRUFBRSxDQUFDO1FBQ25CLENBQUMsQ0FBQyxDQUFBO0lBRU4sQ0FBQztJQUNELFVBQVU7UUFDTixJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxXQUFXLENBQUMsRUFBRTtZQUMvRCxJQUFJLEVBQUUsQ0FBQyxjQUFjLENBQUMsVUFBVSxDQUFDLENBQUMsWUFBWSxLQUFLLENBQUMsRUFBRTtnQkFDbEQsRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFDUixHQUFHLEVBQUUsd0JBQXdCO2lCQUNoQyxDQUFDLENBQUE7YUFDTDtpQkFBTTtnQkFDSCxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7Z0JBQ2QsSUFBSSxDQUFDLE9BQU8sQ0FBQztvQkFDVCxJQUFJLEVBQUUsS0FBSztpQkFDZCxDQUFDLENBQUE7YUFDTDtTQUNKO2FBQU07WUFDSCxFQUFFLENBQUMsVUFBVSxDQUFDO2dCQUNWLEdBQUcsRUFBRSxvQkFBb0I7YUFDNUIsQ0FBQyxDQUFBO1NBQ0w7SUFDTCxDQUFDO0lBSUQsTUFBTSxFQUFFLGNBQWMsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUt6QyxPQUFPLEVBQUU7SUFFVCxDQUFDO0lBS0QsTUFBTSxFQUFFO1FBQUEsaUJBK0NQO1FBOUNHLElBQUksQ0FBQyxPQUFPLENBQUM7WUFDVCxLQUFLLEVBQUUsSUFBSSxDQUFDLEtBQUs7U0FDcEIsQ0FBQyxDQUFBO1FBQ0YsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFBO1FBZ0JqQixlQUFlLEdBQUcsRUFBRSxDQUFDLGVBQWUsQ0FBQztZQUNqQyxRQUFRLEVBQUUsR0FBRztZQUNiLGNBQWMsRUFBRSxNQUFNO1NBQ3pCLENBQUMsQ0FBQTtRQUVGLEVBQUUsQ0FBQyxhQUFhLENBQUM7WUFDYixPQUFPLEVBQUUsVUFBQSxHQUFHO2dCQUNSLEtBQUksQ0FBQyxPQUFPLENBQUM7b0JBQ1QsR0FBRyxFQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsV0FBVztpQkFDN0IsQ0FBQyxDQUFBO1lBQ04sQ0FBQztTQUNKLENBQUMsQ0FBQTtRQUVGLEVBQUUsQ0FBQyxtQkFBbUIsRUFBRSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQyxrQkFBa0IsQ0FBQyxVQUFDLElBQUk7WUFDcEUsS0FBSSxDQUFDLE9BQU8sQ0FBQztnQkFDVCxNQUFNLEVBQUUsSUFBSSxDQUFDLEdBQUc7YUFDbkIsQ0FBQyxDQUFBO1FBQ04sQ0FBQyxDQUFDLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDVixJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFO1lBQ3hCLEVBQUUsQ0FBQyxVQUFVLENBQUM7Z0JBQ1YsR0FBRyxFQUFFLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTztnQkFDM0IsT0FBTyxFQUFFO29CQUNMLEdBQUcsQ0FBQyxVQUFVLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQTtnQkFDakMsQ0FBQzthQUNKLENBQUMsQ0FBQTtTQUNMO0lBRUwsQ0FBQztJQUtELE1BQU0sRUFBRTtJQUVSLENBQUM7SUFLRCxRQUFRLEVBQUU7SUFFVixDQUFDO0lBS0QsaUJBQWlCLEVBQUU7UUFBQSxpQkFRbEI7UUFQRyxJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1QsSUFBSSxFQUFFLEVBQUU7WUFDUixNQUFNLEVBQUUsQ0FBQztZQUNULFNBQVMsRUFBRSxDQUFDO1NBQ2YsRUFBRTtZQUNDLEtBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQTtRQUNsQixDQUFDLENBQUMsQ0FBQTtJQUNOLENBQUM7SUFLRCxhQUFhLEVBQUU7UUFDWCxJQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNoQyxJQUFJLE1BQU0sRUFBRTtTQUtYO2FBQU07WUFDSCxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUE7U0FDakI7SUFDTCxDQUFDO0lBS0QsaUJBQWlCLEVBQUU7SUFFbkIsQ0FBQztJQUNELFlBQVksRUFBRSxVQUFVLEdBQUc7UUFDdkIsSUFBSSxHQUFHLEdBQUcsR0FBRyxDQUFDLFNBQVMsQ0FBQztRQUN4QixJQUFJLENBQUMsT0FBTyxDQUFDO1lBQ1QsU0FBUyxFQUFFLEdBQUc7U0FDakIsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztDQUNKLENBQUMsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbIi8vaW5kZXguanNcbi8v6I635Y+W5bqU55So5a6e5L6LXG5pbXBvcnQgeyBnZXRSZXF1aXJlbWVudHNBcGksIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvaHdSZXF1aXJlbWVudFwiO1xuaW1wb3J0IHsgYmFubmVyQXBpIH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvaHdVc2VyXCI7XG5jb25zdCBhcHAgPSBnZXRBcHAoKVxubGV0IGNvdmVyX2FuaW1hdGlvbjogYW55ID0ge31cblBhZ2Uoe1xuICAgIC8qKlxuICAgICAqIOmhtemdoueahOWIneWni+aVsOaNrlxuICAgICAqL1xuICAgIGRhdGE6IHtcbiAgICAgICAgJ2luZGljYXRvcl9kb3RzJzogZmFsc2UsIC8v6L2u5pKt5oyH56S654K5XG4gICAgICAgICdhdXRvcGxheSc6IHRydWUsIC8v6L2u5pKt6Ieq5Yqo5pKt5pS+XG4gICAgICAgICdjaXJjdWxhcic6IHRydWUsIC8v6L2u5pKt6KGU5o6l5Yqo55S7XG4gICAgICAgICdpbnRlcnZhbCc6IDMwMDAsIC8v6L2u5pKt6Ze06ZqU5pe26Ze0XG4gICAgICAgICdkdXJhdGlvbic6IDE1MDAsIC8v6L2u5pKt5Yqo55S75pe26Ze0XG4gICAgICAgICdjb25kaXRpb25fYW5pbWF0aW9uJzoge30sIC8v5LiK5pa55p2h5Lu25Yqo55S7XG4gICAgICAgICdsaXN0X2FuaW1hdGlvbic6IHt9LCAvL+S4i+aWueWIl+ihqOWKqOeUu1xuICAgICAgICAnY292ZXJfYW5pbWF0aW9uJzoge30sIC8v6YCJ5oup5Zyw5Z2A5Yqo55S7XG4gICAgICAgICdzd2lwZXInOiBbXSwgLy8g6L2u5pKt5YiX6KGoXG4gICAgICAgICdpbmR1c3RyeSc6ICfooYzkuJonLCAvL+ihjOS4mlxuICAgICAgICAncHJpY2UnOiAn5Y2V5Lu3JywgLy/ljZXku7dcbiAgICAgICAgJ2Rpc3RyaWN0JzogJ+S4jemZkOWMuuWfnycsIC8v5Yy65Z+fXG4gICAgICAgICdjb25kaXRpb25MaXN0JzogW10sIC8v546w6KGM5p2h5Lu25YiX6KGoXG4gICAgICAgICdjb25kaXRpb24nOiAnJywgLy/njrDooYzmnaHku7ZcbiAgICAgICAgJ2FjdGlvbl9pbmRleCc6IDAsIC8v546w6KGM5p2h5Lu257Si5byVXG4gICAgICAgICdpbmR1c3RyeV9pbmRleCc6IDAsIC8v6KGM5Lia57Si5byVXG4gICAgICAgICdpbmR1c3RyeV9pZCc6ICcnLCAvL+ihjOS4mmlkXG4gICAgICAgICdwcmljZV9pbmRleCc6IDAsIC8v5Y2V5Lu357Si5byVXG4gICAgICAgICdwcmljZV9pZCc6ICcnLCAvL+WNleS7t2lkXG4gICAgICAgICdwcm92aW5jZV9pZCc6ICcnLCAvL+ecgeS7vUlEXG4gICAgICAgICdjaXR5X2lkJzogJycsIC8v5Z+O5biCSURcbiAgICAgICAgJ2FyZWFfaWQnOiAnJywgLy/lnLDljLpJRFxuICAgICAgICAnaW5kdXN0cnlMaXN0JzogW3tcbiAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgIG5hbWU6ICfkuI3pmZDooYzkuJonXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAwLFxuICAgICAgICAgICAgbmFtZTogJ+aVmeiCsuWfueiurSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDEsXG4gICAgICAgICAgICBuYW1lOiAnSVTkupLogZTnvZEnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAyLFxuICAgICAgICAgICAgbmFtZTogJ+S7k+WCqOeJqea1gSdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDMsXG4gICAgICAgICAgICBuYW1lOiAn6YWS5bqX6aSQ6aWuJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogNCxcbiAgICAgICAgICAgIG5hbWU6ICflrrbmlL/kv53mtIEnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiA1LFxuICAgICAgICAgICAgbmFtZTogJ+e7tOS/ruS/neWFuydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDYsXG4gICAgICAgICAgICBuYW1lOiAn5Lya5Yqh5Lya5bGVJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogNyxcbiAgICAgICAgICAgIG5hbWU6ICfkuJPkuJrmnI3liqEnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiA4LFxuICAgICAgICAgICAgbmFtZTogJ+eUn+S6p+WItumAoCdcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDksXG4gICAgICAgICAgICBuYW1lOiAn5YW25LuW6KGM5LiaJ1xuICAgICAgICB9LFxuICAgICAgICBdLCAvL+ihjOS4muWIl+ihqFxuICAgICAgICAncHJpY2VMaXN0JzogW3tcbiAgICAgICAgICAgIGlkOiAnJyxcbiAgICAgICAgICAgIG5hbWU6ICfkuI3pmZAnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiAxLFxuICAgICAgICAgICAgbmFtZTogJzNL5Lul5LiLJ1xuICAgICAgICB9LFxuICAgICAgICB7XG4gICAgICAgICAgICBpZDogMixcbiAgICAgICAgICAgIG5hbWU6ICczSy01SydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDMsXG4gICAgICAgICAgICBuYW1lOiAnNUstOEsnXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICAgIGlkOiA0LFxuICAgICAgICAgICAgbmFtZTogJzhLLTEySydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDUsXG4gICAgICAgICAgICBuYW1lOiAnMTJLLTIwSydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDYsXG4gICAgICAgICAgICBuYW1lOiAnMjBLLTMwSydcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgICAgaWQ6IDcsXG4gICAgICAgICAgICBuYW1lOiAnMzBL5Lul5LiKJ1xuICAgICAgICB9LFxuICAgICAgICBdLCAvLyDljZXku7fliJfooahcbiAgICAgICAgJ2xpc3QnOiBbXSwgLy/pnIDmsYLliJfooahcbiAgICAgICAgJ3BhZ2VObyc6IDEsXG4gICAgICAgICdpc0xhc3QnOiBmYWxzZSxcbiAgICAgICAgJ29mZmxpbmUnOiBmYWxzZSxcbiAgICAgICAgJ2xvYWRpbmcnOiB0cnVlLFxuICAgICAgICAnbGlzdF9sZW5ndGgnOiBmYWxzZSxcbiAgICAgICAgJ3Nob3cnOiBmYWxzZSxcbiAgICAgICAgJ3RyYW5zaXRpb24nOiB0cnVlLFxuICAgICAgICAnZml4VG9wJzogMCxcbiAgICAgICAgJ3Njcm9sbFRvcCc6IDAsXG4gICAgICAgIHN3aXBlckluZGV4OiAwXG4gICAgfSxcbiAgICBzd2lwZXJDaGFuZ2UoZTogYW55KSB7XG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICBzd2lwZXJJbmRleDogZS5kZXRhaWwuY3VycmVudFxuICAgICAgICB9KVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5bGV56S65Yig6YCJ5p2h5Lu2XG4gICAgICogQGNvbmRpdGlvbiB7c3RyaW5nfSAg5p2h5Lu2ICDlvZPojrflj5bnmoTmnaHku7bkuI3nrYnkuo5kYXRh6YeM6Z2i55qE5p2h5Lu25pe2IOS4jeWBmuaUueWPmCAgIOS4jeetieaXtiDmlLnlj5jmnaHku7Yg5Lul5Y+K5a+55bqU55qE5bGV56S65p2h5Lu2XG4gICAgICovXG4gICAgY2hvb3NlQ29uZGl0aW9uKGU6IGFueSkge1xuICAgICAgICBjb25zdCBjb25kaXRpb24gPSBlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5jb25kaXRpb24gPT09IHRoaXMuZGF0YS5jb25kaXRpb24gPyAnJyA6IGUuY3VycmVudFRhcmdldC5kYXRhc2V0LmNvbmRpdGlvbjtcbiAgICAgICAgdGhpcy5kb0FuaW1hdGlvbihlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5jb25kaXRpb24gPT09IHRoaXMuZGF0YS5jb25kaXRpb24pXG4gICAgICAgIC8vIHRoaXMuZG9BbmltYXRpb24oZmFsc2UpXG4gICAgICAgIC8vIGxldCBhY3Rpb25faW5kZXggPSB0aGlzLmRhdGEuY29uZGl0aW9uID09PSB0aGlzLmRhdGEuYWN0aW9uX2luZGV4ID8gW10gOiB0aGlzLmRhdGFbYCR7Y29uZGl0aW9ufV9pbmRleGBdO1xuICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgY29uZGl0aW9uLFxuICAgICAgICAgICAgLy8gYWN0aW9uX2luZGV4XG4gICAgICAgIH0pXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlsZXlvIDljLrln5/pgInmi6lcbiAgICAgKiBcbiAgICAgKi9cbiAgICBvcGVuQXJlYSgpIHtcbiAgICAgICAgdGhpcy5kb0FuaW1hdGlvbih0cnVlKVxuICAgICAgICBjb3Zlcl9hbmltYXRpb24ubGVmdCgwKS5zdGVwKCk7XG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICBjb3Zlcl9hbmltYXRpb246IGNvdmVyX2FuaW1hdGlvbi5leHBvcnQoKSxcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJycsXG4gICAgICAgIH0pXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOeCueWHu+mAieaLqeadoeS7tlxuICAgICAqIOagueaNruS4jeWQjOeahOadoeS7tuaPkuWFpeS4jeWQjOeahOWAvFxuICAgICAqL1xuICAgIGNob29zZShlOiBhbnkpIHtcbiAgICAgICAgY29uc3QgaW5kZXggPSBlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5pbmRleDtcbiAgICAgICAgY29uc3QgaWQgPSBlLmN1cnJlbnRUYXJnZXQuZGF0YXNldC5pZDtcbiAgICAgICAgbGV0IGNvbmRpdGlvbiA9IHRoaXMuZGF0YS5jb25kaXRpb247XG4gICAgICAgIGxldCBsaXN0OiBhbnlbXSA9IFtdXG4gICAgICAgIGlmIChjb25kaXRpb24gPT09ICdpbmR1c3RyeScpIHtcbiAgICAgICAgICAgIGxpc3QgPSB0aGlzLmRhdGEuaW5kdXN0cnlMaXN0XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBsaXN0ID0gdGhpcy5kYXRhLnByaWNlTGlzdFxuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICAgIFtjb25kaXRpb25dOiBsaXN0W2luZGV4XS5uYW1lLFxuICAgICAgICAgICAgW2Ake2NvbmRpdGlvbn1faW5kZXhgXTogaW5kZXgsXG4gICAgICAgICAgICBbYCR7Y29uZGl0aW9ufV9pZGBdOiBpZCxcbiAgICAgICAgICAgIGNvbmRpdGlvbjogJycsXG4gICAgICAgICAgICBsaXN0OiBbXSxcbiAgICAgICAgICAgIGxvYWRpbmc6IHRydWVcbiAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRMaXN0KDEpXG4gICAgICAgIH0pXG4gICAgICAgIHRoaXMuZG9BbmltYXRpb24odHJ1ZSlcblxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiDkv53lrZjlnLDljLpcbiAgICAgKiBAZGlzdHJpY3Qge3N0cmluZ30g5Zyw5Yy6XG4gICAgICogQHByb3ZpbmNlX2lkIHt9IOecgeS7vUlEXG4gICAgICogQGNpdHlfaWQge30g5Z+O5biCSURcbiAgICAgKiBAYXJlYV9pZCB7fSDlnLDljLpJRFxuICAgICAqL1xuICAgIHNhdmVEaXN0cmljdChlOiBhbnkpIHtcbiAgICAgICAgY292ZXJfYW5pbWF0aW9uLmxlZnQoNzUwICsgJ3JweCcpLnN0ZXAoKTtcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICAgIGNvdmVyX2FuaW1hdGlvbjogY292ZXJfYW5pbWF0aW9uLmV4cG9ydCgpLFxuICAgICAgICAgICAgZGlzdHJpY3Q6IGUuZGV0YWlsLmFyZWFfbmFtZSxcbiAgICAgICAgICAgIHByb3ZpbmNlX2lkOiBlLmRldGFpbC5wcm92aW5jZV9pZCxcbiAgICAgICAgICAgIGNpdHlfaWQ6IGUuZGV0YWlsLmNpdHlfaWQsXG4gICAgICAgICAgICBhcmVhX2lkOiBlLmRldGFpbC5hcmVhX2lkLFxuICAgICAgICAgICAgbGlzdDogW11cbiAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgdGhpcy5nZXRMaXN0KDEpXG4gICAgICAgIH0pXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDlhbPpl63lnLDljLrpgInmi6lcbiAgICAgKiBAY292ZXJfYW5pbWF0aW9uIOWcsOWMuumAieaLqeWKqOeUu1xuICAgICAqL1xuICAgIGNvbG9zZURpc3RyaWN0KCkge1xuICAgICAgICBjb3Zlcl9hbmltYXRpb24ubGVmdCg3NTAgKyAncnB4Jykuc3RlcCgpO1xuICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgY292ZXJfYW5pbWF0aW9uOiBjb3Zlcl9hbmltYXRpb24uZXhwb3J0KClcbiAgICAgICAgfSlcbiAgICAgICAgdGhpcy5kb0FuaW1hdGlvbih0cnVlKVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog5omn6KGM5p2h5Lu25Yqo55S7XG4gICAgICovXG4gICAgZG9BbmltYXRpb24oc3RhdHVzOiBib29sZWFuKSB7XG4gICAgICAgIC8vIGNvbnN0IGNvbmRpdGlvbl9hbmltYXRpb24gPSB0aGlzLmNvbmRpdGlvbl9hbmltYXRpb247XG4gICAgICAgIC8vIGNvbnN0IGxpc3RfYW5pbWF0aW9uID0gdGhpcy5saXN0X2FuaW1hdGlvbjtcbiAgICAgICAgLy8gY29uc3QgY29uZGl0aW9uX2xlbmd0aCA9IHN0YXR1cyA/IDAgOiAtNDEyICsgJ3JweCdcbiAgICAgICAgLy8gY29uc3QgbGlzdF9sZW5ndGggPSBzdGF0dXMgPyA1NDggKyAncnB4JyA6IDIwMSArICdycHgnXG4gICAgICAgIC8vIGNvbmRpdGlvbl9hbmltYXRpb24udG9wKGNvbmRpdGlvbl9sZW5ndGgpLnN0ZXAoKTtcbiAgICAgICAgLy8gbGlzdF9hbmltYXRpb24udG9wKGxpc3RfbGVuZ3RoKS5zdGVwKCk7XG4gICAgICAgIC8vIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgIC8vICAgY29uZGl0aW9uX2FuaW1hdGlvbjogY29uZGl0aW9uX2FuaW1hdGlvbi5leHBvcnQoKSxcbiAgICAgICAgLy8gICBsaXN0X2FuaW1hdGlvbjogbGlzdF9hbmltYXRpb24uZXhwb3J0KCksXG4gICAgICAgIC8vIH0pXG4gICAgICAgIGNvbnN0IGZpeFRvcCA9IHRoaXMuZGF0YS5maXhUb3A7XG4gICAgICAgIGNvbnN0IHNjcm9sbFRvcCA9IHRoaXMuZGF0YS5zY3JvbGxUb3A7XG4gICAgICAgIGlmIChmaXhUb3AgPiBzY3JvbGxUb3ApIHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICAgICAgdHJhbnNpdGlvbjogc3RhdHVzXG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDot7PovazkuKrkurrkuK3lv4NcbiAgICAgKi9cbiAgICB0b1BlcnNvbigpIHtcbiAgICAgICAgaWYgKHd4LmdldFN0b3JhZ2VTeW5jKCd1c2VySWQnKSAmJiB3eC5nZXRTdG9yYWdlU3luYygndXNlclRva2VuJykpIHtcbiAgICAgICAgICAgIHd4Lm5hdmlnYXRlVG8oe1xuICAgICAgICAgICAgICAgIHVybDogJy9wYWdlcy9wZXJzb24vcGVyc29uJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3eC5zaG93TW9kYWwoe1xuICAgICAgICAgICAgICAgIHRpdGxlOiAn5o+Q56S6JyxcbiAgICAgICAgICAgICAgICBjb250ZW50OiAn5L2g6L+Y5pyq55m76ZmG77yM5piv5ZCm56uL5Y2z55m75b2VJyxcbiAgICAgICAgICAgICAgICBjYW5jZWxDb2xvcjogJyM4ODhBOEUnLFxuICAgICAgICAgICAgICAgIGNvbmZpcm1Db2xvcjogJyMzMTM2NEMnLFxuICAgICAgICAgICAgICAgIHN1Y2Nlc3M6IHJlcyA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChyZXMuY29uZmlybSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd3gubmF2aWdhdGVUbyh7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsOiAnL3BhZ2VzL2xvZ2luL2xvZ2luJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KVxuICAgICAgICB9XG5cbiAgICB9LFxuICAgIC8qKlxuICAgICAqIOi3s+i9rOivpuaDhemhtVxuICAgICAqL1xuICAgIHRvRGV0YWlsKGU6IGFueSkge1xuICAgICAgICBjb25zdCBpZCA9IGUuY3VycmVudFRhcmdldC5kYXRhc2V0LmlkO1xuICAgICAgICB3eC5uYXZpZ2F0ZVRvKHtcbiAgICAgICAgICAgIHVybDogYC9wYWdlcy9kZXRhaWwvZGV0YWlsP2lkPSR7aWR9JiZzdGF0dXM9MWAsXG4gICAgICAgIH0pXG4gICAgfSxcbiAgICAvKipcbiAgICAgKiDojrflj5bpnIDmsYLliJfooahcbiAgICAgKiBAcGFnZU5vIHtudW1iZXJ9IOmhteeggVxuICAgICAqIEBwYWdlU2l6ZSB7bnVtYmVyfSDmlbDmja7mnaHmlbBcbiAgICAgKiBAcHJvdmluY2VfY29kZSB7bnVtYmVyfSDnnIHku73ku6PnoIFcbiAgICAgKiBAY2l0eV9jb2RlIHtudW1iZXJ9IOWfjuW4guS7o+eggVxuICAgICAqIEBjb3VudHJ5X2NvZGUge251bWJlcn0g5Zyw5Yy65Luj56CBXG4gICAgICogQHRyYWRlX3R5cGUge251bWJlcn0g6KGM5Lia57G75Z6LXG4gICAgICogQHByaWNlVHlwZSB7bnVtYmVyfSDku7fmoLzku6Plj7coMS03KSjkuI3pmZDnmoTor53kuI3kvKDmraTlj4LmlbApXG4gICAgICogQHBsYXRmb3JtX2lkIHtudW1iZXJ9IOaOpeWNleS6uueUqOaIt+aJgOWxnuW5s+WPsGlkXG4gICAgICovXG4gICAgZ2V0TGlzdChwYWdlTm8/OiBudW1iZXIsIHByb3ZpbmNlX2NvZGU/OiBudW1iZXIsIGNpdHlfY29kZT86IG51bWJlciwgY291bnRyeV9jb2RlPzogbnVtYmVyLCB0cmFkZV90eXBlPzogbnVtYmVyLCBwcmljZVR5cGU/OiBudW1iZXIpIHtcbiAgICAgICAgbGV0IF9wYWdlTm86IG51bWJlciA9IHBhZ2VObyB8fCB0aGlzLmRhdGEucGFnZU5vXG4gICAgICAgIGNvbnN0IHBhcmFtID0gT2JqZWN0LmFzc2lnbih7XG4gICAgICAgICAgICBwYWdlTm86IF9wYWdlTm8sXG4gICAgICAgICAgICBwcm92aW5jZV9jb2RlOiB0aGlzLmRhdGEucHJvdmluY2VfaWQsXG4gICAgICAgICAgICBjaXR5X2NvZGU6IHRoaXMuZGF0YS5jaXR5X2lkLFxuICAgICAgICAgICAgY291bnRyeV9jb2RlOiB0aGlzLmRhdGEuYXJlYV9pZCxcbiAgICAgICAgICAgIHRyYWRlX3R5cGU6IHRoaXMuZGF0YS5pbmR1c3RyeV9pZCxcbiAgICAgICAgICAgIHByaWNlVHlwZTogdGhpcy5kYXRhLnByaWNlX2lkXG4gICAgICAgIH0sIHtcbiAgICAgICAgICAgIHBhZ2VObyxcbiAgICAgICAgICAgIHBhZ2VTaXplOiAxMCxcbiAgICAgICAgICAgIHByb3ZpbmNlX2NvZGUsXG4gICAgICAgICAgICBjaXR5X2NvZGUsXG4gICAgICAgICAgICBjb3VudHJ5X2NvZGUsXG4gICAgICAgICAgICB0cmFkZV90eXBlLFxuICAgICAgICAgICAgcHJpY2VUeXBlLFxuICAgICAgICAgICAgcGxhdGZvcm1faWQ6IGFwcC5nbG9iYWxEYXRhLnBsYXRmb3JtSWRcbiAgICAgICAgfSlcbiAgICAgICAgZ2V0UmVxdWlyZW1lbnRzQXBpKHBhcmFtKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICBpZiAodHlwZW9mIHJlcyA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICAgICAgICAvLyDlpoLmnpzmsqHmnInnvZHnu5wgIOWxleekuue9kee7nOaVhemanOeVjOmdolxuICAgICAgICAgICAgICAgIGlmIChyZXMgPT09ICdvZmZsaW5lJyAmJiB0aGlzLmRhdGEubGlzdC5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZmxpbmU6IHRydWUsXG4gICAgICAgICAgICAgICAgICAgICAgICBsb2FkaW5nOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIGxpc3RfbGVuZ3RoOiBmYWxzZVxuICAgICAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSA8cmVzcG9uc2VPcHRpb25zVHlwZT5yZXNcbiAgICAgICAgICAgIGlmIChkYXRhLmVycmNvZGUgPT09IDApIHtcbiAgICAgICAgICAgICAgICBpZiAocGFnZU5vID09PSAxICYmIGRhdGEuZGF0YS5yZXF1aXJlbWVudHMubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIC8vIHRoaXMuZG9BbmltYXRpb24oZmFsc2UpO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgICAgICBsaXN0X2xlbmd0aDogdHJ1ZSxcbiAgICAgICAgICAgICAgICAgICAgICAgIG9mZmxpbmU6IGZhbHNlXG4gICAgICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAgICAgICAgIHJldHVyblxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAvLyDlnKjmiJDlip/lkI7pobXmlbDliqDkuIDmlrnkvr/ml6XlkI7osIPnlKhcbiAgICAgICAgICAgICAgICBfcGFnZU5vKys7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgcGFnZU5vOiBfcGFnZU5vLFxuICAgICAgICAgICAgICAgICAgICBbYGxpc3RbJHtfcGFnZU5vIC0gMn1dYF06IGRhdGEuZGF0YS5yZXF1aXJlbWVudHMsXG4gICAgICAgICAgICAgICAgICAgIGlzTGFzdDogZGF0YS5kYXRhLmlzTGFzdCxcbiAgICAgICAgICAgICAgICAgICAgb2ZmbGluZTogZmFsc2UsXG4gICAgICAgICAgICAgICAgICAgIGxpc3RfbGVuZ3RoOiBmYWxzZSxcbiAgICAgICAgICAgICAgICAgICAgbG9hZGluZzogZmFsc2VcbiAgICAgICAgICAgICAgICB9KVxuICAgICAgICAgICAgfVxuICAgICAgICB9KS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgICAgIGxvYWRpbmc6IGZhbHNlLFxuICAgICAgICAgICAgICAgIGxpc3RfbGVuZ3RoOiB0cnVlLFxuICAgICAgICAgICAgICAgIG9mZmxpbmU6IGZhbHNlXG4gICAgICAgICAgICB9KVxuICAgICAgICB9KVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog6I635Y+W6aaW6aG1YmFubmVy5Zu+XG4gICAgICovXG4gICAgZ2V0QmFubmVyKCkge1xuICAgICAgICBiYW5uZXJBcGkoKS50aGVuKHJlcyA9PiB7XG4gICAgICAgICAgICBjb25zdCBkYXRhID0gPHJlc3BvbnNlT3B0aW9uc1R5cGU+cmVzXG4gICAgICAgICAgICBpZiAoZGF0YS5lcnJjb2RlID09PSAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICAgICAgICAgICAgc3dpcGVyOiBkYXRhLmRhdGEuYmFubmVyTGlzdFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgfSxcbiAgICByZWxvYWQoKSB7XG4gICAgICAgIC8vIOiOt+WPlumcgOaxguWIl+ihqFxuICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgbGlzdDogW10sXG4gICAgICAgICAgICBwYWdlTm86IDEsXG4gICAgICAgICAgICBzY3JvbGxUb3A6IDBcbiAgICAgICAgfSwgKCkgPT4ge1xuICAgICAgICAgICAgLy8g6I635Y+W6aaW6aG1YmFubmVy5Zu+XG4gICAgICAgICAgICB0aGlzLmdldEJhbm5lcigpO1xuICAgICAgICAgICAgdGhpcy5nZXRMaXN0KCk7XG4gICAgICAgIH0pXG4gICAgICAgIC8vIGFwcC51dGlscy5nZXRId1VzZXJJbmZvKCk7XG4gICAgfSxcbiAgICBjaGVja0xvZ2luKCkge1xuICAgICAgICBpZiAod3guZ2V0U3RvcmFnZVN5bmMoJ3VzZXJJZCcpICYmIHd4LmdldFN0b3JhZ2VTeW5jKCd1c2VyVG9rZW4nKSkge1xuICAgICAgICAgICAgaWYgKHd4LmdldFN0b3JhZ2VTeW5jKCd1c2VySW5mbycpLnJlZ2lzdGVyRnJvbSA9PT0gMCkge1xuICAgICAgICAgICAgICAgIHd4LnJlTGF1bmNoKHtcbiAgICAgICAgICAgICAgICAgICAgdXJsOiAnL3BhZ2VzL3N1Y2Nlc3Mvc3VjY2VzcycsXG4gICAgICAgICAgICAgICAgfSlcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZWxvYWQoKTtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgICAgICAgICBzaG93OiBmYWxzZVxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB3eC5uYXZpZ2F0ZVRvKHtcbiAgICAgICAgICAgICAgICB1cmw6ICcvcGFnZXMvbG9naW4vbG9naW4nLFxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuICAgIH0sXG4gICAgLyoqXG4gICAgICog55Sf5ZG95ZGo5pyf5Ye95pWwLS3nm5HlkKzpobXpnaLliqDovb1cbiAgICAgKi9cbiAgICBvbkxvYWQ6IGZ1bmN0aW9uICgpIHsgdGhpcy5nZXRCYW5uZXIoKTsgfSxcblxuICAgIC8qKlxuICAgICAqIOeUn+WRveWRqOacn+WHveaVsC0t55uR5ZCs6aG16Z2i5Yid5qyh5riy5p+T5a6M5oiQXG4gICAgICovXG4gICAgb25SZWFkeTogZnVuY3Rpb24gKCkge1xuXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOeUn+WRveWRqOacn+WHveaVsC0t55uR5ZCs6aG16Z2i5pi+56S6XG4gICAgICovXG4gICAgb25TaG93OiBmdW5jdGlvbiAoKSB7XG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICByb3V0ZTogdGhpcy5yb3V0ZVxuICAgICAgICB9KVxuICAgICAgICB0aGlzLmNoZWNrTG9naW4oKVxuICAgICAgICAvLyB0aGlzLnJlbG9hZCgpXG4gICAgICAgIC8qKlxuICAgICAgICAgKiDliJ3lp4vljJbliqjnlLtcbiAgICAgICAgICogQGNvbmRpdGlvbl9hbmltYXRpb24g5p2h5Lu25qGG5Yqo55S7XG4gICAgICAgICAqIEBsaXN0X2FuaW1hdGlvbiDpnIDmsYLliJfooajliqjnlLtcbiAgICAgICAgICogQGNvdmVyX2FuaW1hdGlvbiDlnLDlnYDpgInmi6nliqjnlLtcbiAgICAgICAgICovXG4gICAgICAgIC8vIHRoaXMuY29uZGl0aW9uX2FuaW1hdGlvbiA9IHd4LmNyZWF0ZUFuaW1hdGlvbih7XG4gICAgICAgIC8vICAgZHVyYXRpb246IDcwMCxcbiAgICAgICAgLy8gICB0aW1pbmdGdW5jdGlvbjogJ2Vhc2UnLFxuICAgICAgICAvLyB9KVxuICAgICAgICAvLyB0aGlzLmxpc3RfYW5pbWF0aW9uID0gd3guY3JlYXRlQW5pbWF0aW9uKHtcbiAgICAgICAgLy8gICBkdXJhdGlvbjogNjAwLFxuICAgICAgICAvLyAgIHRpbWluZ0Z1bmN0aW9uOiAnZWFzZScsXG4gICAgICAgIC8vIH0pXG4gICAgICAgIGNvdmVyX2FuaW1hdGlvbiA9IHd4LmNyZWF0ZUFuaW1hdGlvbih7XG4gICAgICAgICAgICBkdXJhdGlvbjogNjAwLFxuICAgICAgICAgICAgdGltaW5nRnVuY3Rpb246ICdlYXNlJyxcbiAgICAgICAgfSlcbiAgICAgICAgLy8g6I635Y+W57O757uf5L+h5oGv566X5Ye65YOP57Sg5q+UXG4gICAgICAgIHd4LmdldFN5c3RlbUluZm8oe1xuICAgICAgICAgICAgc3VjY2VzczogcmVzID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLnNldERhdGEoe1xuICAgICAgICAgICAgICAgICAgICBwZXI6IDc1MCAvIHJlcy53aW5kb3dXaWR0aFxuICAgICAgICAgICAgICAgIH0pXG4gICAgICAgICAgICB9XG4gICAgICAgIH0pXG4gICAgICAgIC8vIOiOt+WPlue7neWvueWumuS9jeeahOmrmOW6plxuICAgICAgICB3eC5jcmVhdGVTZWxlY3RvclF1ZXJ5KCkuc2VsZWN0KCcuY2hvb3NlLWFyZWEnKS5ib3VuZGluZ0NsaWVudFJlY3QoKHJlY3QpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICAgICAgZml4VG9wOiByZWN0LnRvcCxcbiAgICAgICAgICAgIH0pXG4gICAgICAgIH0pLmV4ZWMoKTtcbiAgICAgICAgaWYgKGFwcC5nbG9iYWxEYXRhLndlYnZpZXcpIHtcbiAgICAgICAgICAgIHd4Lm5hdmlnYXRlVG8oe1xuICAgICAgICAgICAgICAgIHVybDogYXBwLmdsb2JhbERhdGEud2VidmlldyxcbiAgICAgICAgICAgICAgICBzdWNjZXNzOiAoKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIGFwcC5nbG9iYWxEYXRhLndlYnZpZXcgPSBudWxsXG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSlcbiAgICAgICAgfVxuXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOeUn+WRveWRqOacn+WHveaVsC0t55uR5ZCs6aG16Z2i6ZqQ6JePXG4gICAgICovXG4gICAgb25IaWRlOiBmdW5jdGlvbiAoKSB7XG5cbiAgICB9LFxuXG4gICAgLyoqXG4gICAgICog55Sf5ZG95ZGo5pyf5Ye95pWwLS3nm5HlkKzpobXpnaLljbjovb1cbiAgICAgKi9cbiAgICBvblVubG9hZDogZnVuY3Rpb24gKCkge1xuXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOmhtemdouebuOWFs+S6i+S7tuWkhOeQhuWHveaVsC0t55uR5ZCs55So5oi35LiL5ouJ5Yqo5L2cXG4gICAgICovXG4gICAgb25QdWxsRG93blJlZnJlc2g6IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgdGhpcy5zZXREYXRhKHtcbiAgICAgICAgICAgIGxpc3Q6IFtdLFxuICAgICAgICAgICAgcGFnZU5vOiAxLFxuICAgICAgICAgICAgc2Nyb2xsVG9wOiAwXG4gICAgICAgIH0sICgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuZ2V0TGlzdCgpXG4gICAgICAgIH0pXG4gICAgfSxcblxuICAgIC8qKlxuICAgICAqIOmhtemdouS4iuaLieinpuW6leS6i+S7tueahOWkhOeQhuWHveaVsFxuICAgICAqL1xuICAgIG9uUmVhY2hCb3R0b206IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgY29uc3QgaXNMYXN0ID0gdGhpcy5kYXRhLmlzTGFzdDtcbiAgICAgICAgaWYgKGlzTGFzdCkge1xuICAgICAgICAgICAgLy8gd3guc2hvd1RvYXN0KHtcbiAgICAgICAgICAgIC8vICAgaWNvbjogJ25vbmUnLFxuICAgICAgICAgICAgLy8gICB0aXRsZTogJ+W3sue7j+aYr+acgOWQjuS4gOmhteS6hicsXG4gICAgICAgICAgICAvLyB9KVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5nZXRMaXN0KClcbiAgICAgICAgfVxuICAgIH0sXG5cbiAgICAvKipcbiAgICAgKiDnlKjmiLfngrnlh7vlj7PkuIrop5LliIbkuqtcbiAgICAgKi9cbiAgICBvblNoYXJlQXBwTWVzc2FnZTogZnVuY3Rpb24gKCkge1xuXG4gICAgfSxcbiAgICBvblBhZ2VTY3JvbGw6IGZ1bmN0aW9uIChyZXMpIHtcbiAgICAgICAgbGV0IHRvcCA9IHJlcy5zY3JvbGxUb3A7XG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XG4gICAgICAgICAgICBzY3JvbGxUb3A6IHRvcFxuICAgICAgICB9KTtcbiAgICB9XG59KSJdfQ==