Sanakey
2021-04-30 8724a444c8a1d09dc8f9efd005e8443aad8df1ab
components/poster-creator/index.js
@@ -40,6 +40,18 @@
        multipleSlots: true
    },
    properties: {
        liveRoom: {
            type: Object,
            value: {},
            observer: function (newVal) {
                console.log('监听liveRoom的newVal', newVal);
                if (JSON.stringify(newVal) != '{}') {
                    this.setData({
                        isLive: true
                    });
                }
            }
        },
        detail: {
            type: Object,
            value: {},
@@ -59,7 +71,8 @@
        imgDraw: {},
        sharePath: '',
        visible: false,
        qrCodeUrl: ''
        qrCodeUrl: '',
        isLive: false
    },
    lifetimes: {
        ready: function () {
@@ -77,6 +90,39 @@
        }
    },
    methods: {
        getLiveRoomQrCode: function () {
            return __awaiter(this, void 0, void 0, function () {
                var roomid, _a, error, result;
                return __generator(this, function (_b) {
                    switch (_b.label) {
                        case 0:
                            roomid = this.data.liveRoom.RoomId;
                            console.log(roomid);
                            return [4, wx.$utils.to(wx.$http.request({
                                    url: "/shopping/live/getSharedCode.do",
                                    data: {
                                        roomid: roomid
                                    }
                                }))];
                        case 1:
                            _a = _b.sent(), error = _a[0], result = _a[1];
                            if (error) {
                                console.log(error);
                                wx.showToast({
                                    title: '获取二维码失败,请稍后再试',
                                    icon: 'none',
                                });
                                return [2, false];
                            }
                            console.log(result);
                            this.setData({
                                qrCodeUrl: result.cdnUrl
                            });
                            return [2, true];
                    }
                });
            });
        },
        getQrCode: function () {
            return __awaiter(this, void 0, void 0, function () {
                var _a, error, result;
@@ -111,140 +157,164 @@
            });
            this.triggerEvent('close');
        },
        drawPic: function () {
            if (this.data.sharePath) {
                this.setData({
                    visible: true
                });
                this.triggerEvent('initData');
                return;
            }
            var qrCodeUrl = this.data.qrCodeUrl;
            if (!this.data.qrCodeUrl) {
                wx.showToast({
                    title: '获取二维码失败,请稍后再试',
                    icon: 'none',
                });
                return;
            }
            wx.showLoading({
                title: '生成中'
            });
            var _a = this.data, detail = _a.detail, sellerList = _a.sellerList;
            console.log(detail, sellerList);
        clearPoster: function () {
            this.setData({
                imgDraw: {
                    width: '750rpx',
                    height: '1334rpx',
                    background: '#f5f5f5',
                    views: [
                        {
                            "type": "image",
                            "url": "/assets/images/poster-bg.png",
                            "css": {
                                "width": "750rpx",
                                "height": "1334rpx",
                                "top": "0px",
                                "left": "0px",
                                "rotate": "0",
                            }
                        },
                        {
                            type: 'image',
                            url: detail.coverImageUrl[0],
                            css: {
                                top: '10rpx',
                                left: '10rpx',
                                right: '10rpx',
                                width: '730rpx',
                                height: '480rpx',
                                borderRadius: '16rpx'
                            },
                        },
                        {
                            type: 'image',
                            url: sellerList[0].sellerHeadimgurl || '/assets/images/default-avatar.png',
                            css: {
                                top: '444rpx',
                                left: '328rpx',
                                width: '96rpx',
                                height: '96rpx',
                                borderWidth: '6rpx',
                                borderColor: '#FFF',
                                borderRadius: '96rpx'
                            }
                        },
                        {
                            type: 'text',
                            text: sellerList[0].sellerName || '昵称',
                            css: {
                                top: '572rpx',
                                fontSize: '28rpx',
                                left: '375rpx',
                                align: 'center',
                                color: '#3c3c3c'
                            }
                        },
                        {
                            type: 'text',
                            text: "\u9080\u8BF7\u60A8\u53C2\u4E0E\u6D3B\u52A8",
                            css: {
                                top: '616rpx',
                                left: '375rpx',
                                align: 'center',
                                fontSize: '28rpx',
                                color: '#3c3c3c'
                            }
                        },
                        {
                            type: 'text',
                            text: "" + (detail.title || '活动标题'),
                            css: {
                                top: '684rpx',
                                left: '375rpx',
                                maxLines: 1,
                                align: 'center',
                                fontWeight: 'bold',
                                fontSize: '44rpx',
                                color: '#3c3c3c'
                            }
                        },
                        {
                            type: 'text',
                            text: "\uFFE5" + (detail.salesPrice || '价格'),
                            css: {
                                top: '765rpx',
                                left: '375rpx',
                                maxLines: 1,
                                align: 'center',
                                fontWeight: 'bold',
                                fontSize: '44rpx',
                                color: '#f23232'
                            }
                        },
                        {
                            type: 'image',
                            url: qrCodeUrl,
                            css: {
                                top: '970rpx',
                                left: '390rpx',
                                width: '300rpx',
                                height: '300rpx'
                            }
                        },
                        {
                            type: 'text',
                            text: "\u957F\u6309\u4E8C\u7EF4\u7801\u8BC6\u522B\u53C2\u4E0E",
                            css: {
                                top: '1100rpx',
                                left: '55rpx',
                                fontSize: '32rpx',
                                color: '#3c3c3c'
                            }
                        },
                    ]
                }
                sharePath: ''
            });
        },
        drawPic: function () {
            return __awaiter(this, void 0, void 0, function () {
                return __generator(this, function (_a) {
                    switch (_a.label) {
                        case 0:
                            if (this.data.sharePath) {
                                this.setData({
                                    visible: true
                                });
                                this.triggerEvent('initData');
                                return [2];
                            }
                            if (!this.data.isLive) return [3, 2];
                            return [4, this.getLiveRoomQrCode()];
                        case 1:
                            if (!(_a.sent()))
                                return [2];
                            _a.label = 2;
                        case 2:
                            if (!this.data.qrCodeUrl) {
                                wx.showToast({
                                    title: '获取二维码失败,请稍后再试',
                                    icon: 'none',
                                });
                                return [2];
                            }
                            wx.showLoading({
                                title: '生成中'
                            });
                            this.setData({
                                imgDraw: this.getImgDraw()
                            });
                            return [2];
                    }
                });
            });
        },
        getImgDraw: function () {
            var _a = this.data, detail = _a.detail, liveRoom = _a.liveRoom, sellerList = _a.sellerList, qrCodeUrl = _a.qrCodeUrl;
            var isLive = this.data.isLive;
            console.log(detail, liveRoom, sellerList, qrCodeUrl, isLive);
            var imgDraw = {
                width: '750rpx',
                height: '1334rpx',
                background: '#f5f5f5',
                views: [
                    {
                        "type": "image",
                        "url": "/assets/images/poster-bg.png",
                        "css": {
                            "width": "750rpx",
                            "height": "1334rpx",
                            "top": "0px",
                            "left": "0px",
                            "rotate": "0",
                        }
                    },
                    {
                        type: 'image',
                        url: isLive ? liveRoom.ShareImgUnidUrl : detail.coverImageUrl[0],
                        css: {
                            top: '10rpx',
                            left: '10rpx',
                            right: '10rpx',
                            width: '730rpx',
                            height: '480rpx',
                            borderRadius: '16rpx'
                        },
                    },
                    {
                        type: 'image',
                        url: (isLive ? liveRoom.AnchorImgUnidUrl : sellerList[0].sellerHeadimgurl) || '/assets/images/default-avatar.png',
                        css: {
                            top: '444rpx',
                            left: '328rpx',
                            width: '96rpx',
                            height: '96rpx',
                            borderWidth: '6rpx',
                            borderColor: '#FFF',
                            borderRadius: '96rpx'
                        }
                    },
                    {
                        type: 'text',
                        text: (isLive ? liveRoom.AnchorName : sellerList[0].sellerName) || '昵称',
                        css: {
                            top: '572rpx',
                            fontSize: '28rpx',
                            left: '375rpx',
                            align: 'center',
                            color: '#3c3c3c'
                        }
                    },
                    {
                        type: 'text',
                        text: "\u9080\u8BF7\u60A8\u53C2\u4E0E" + (isLive ? '直播' : '活动'),
                        css: {
                            top: '616rpx',
                            left: '375rpx',
                            align: 'center',
                            fontSize: '28rpx',
                            color: '#3c3c3c'
                        }
                    },
                    {
                        type: 'text',
                        text: ((isLive ? liveRoom.RoomName : detail.title) || '活动标题') + " ",
                        css: {
                            top: '684rpx',
                            left: '375rpx',
                            maxLines: 1,
                            align: 'center',
                            fontWeight: 'bold',
                            fontSize: '44rpx',
                            color: '#3c3c3c'
                        }
                    },
                    {
                        type: 'text',
                        text: "" + ((isLive ? '' : '¥' + detail.salesPrice) || ''),
                        css: {
                            top: '765rpx',
                            left: '375rpx',
                            maxLines: 1,
                            align: 'center',
                            fontWeight: 'bold',
                            fontSize: '44rpx',
                            color: '#f23232'
                        }
                    },
                    {
                        type: 'image',
                        url: qrCodeUrl,
                        css: {
                            top: '970rpx',
                            left: '390rpx',
                            width: '300rpx',
                            height: '300rpx'
                        }
                    },
                    {
                        type: 'text',
                        text: "\u957F\u6309\u4E8C\u7EF4\u7801\u8BC6\u522B\u53C2\u4E0E",
                        css: {
                            top: '1100rpx',
                            left: '55rpx',
                            fontSize: '32rpx',
                            color: '#3c3c3c'
                        }
                    },
                ]
            };
            return imgDraw;
        },
        onImgErr: function () {
            wx.hideLoading();
@@ -309,4 +379,4 @@
        }
    }
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLENBQUM7SUFDUixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUMsSUFBSTtRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQU9WLE1BQU0sRUFBQztZQUNMLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLFlBQUMsTUFBTTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFDO29CQUNqQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7aUJBQ2pCO1lBQ0gsQ0FBQztTQUNGO1FBQ0QsVUFBVSxFQUFDO1lBQ1QsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsRUFBRTtTQUNWO0tBS0Y7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxFQUFFO1FBQ2IsT0FBTyxFQUFFLEtBQUs7UUFDZCxTQUFTLEVBQUMsRUFBRTtLQUNiO0lBQ0QsU0FBUyxFQUFDO1FBQ0YsS0FBSzs7Ozs7O1NBRVY7S0FDRjtJQUNELGFBQWEsRUFBRTtRQUNiLElBQUksRUFBRTtRQUdOLENBQUM7UUFDRCxJQUFJO1FBRUosQ0FBQztLQUNGO0lBQ0QsT0FBTyxFQUFFO1FBQ0QsU0FBUzs7Ozs7Z0NBQ1MsV0FBTSxFQUFFLENBQUMsTUFBTSxDQUFDLEVBQUUsQ0FDdEMsRUFBRSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUM7Z0NBQ2YsR0FBRyxFQUFDLHdDQUF3QztnQ0FDNUMsSUFBSSxFQUFDO29DQUNILFVBQVUsRUFBQyxFQUFFO29DQUNiLE9B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b25lbnQoe1xyXG4gIG9wdGlvbnM6IHtcclxuICAgIGFkZEdsb2JhbENsYXNzOnRydWUsXHJcbiAgICBtdWx0aXBsZVNsb3RzOiB0cnVlIC8vIOWcqOe7hOS7tuWumuS5ieaXtueahOmAiemhueS4reWQr+eUqOWkmnNsb3TmlK/mjIFcclxuICB9LFxyXG4gIHByb3BlcnRpZXM6IHtcclxuICAgIC8v5bGe5oCn5YC85Y+v5Lul5Zyo57uE5Lu25L2/55So5pe25oyH5a6aXHJcbiAgICAvLyBpc0NhbkRyYXc6IHtcclxuICAgIC8vICAgdHlwZTogQm9vbGVhbixcclxuICAgIC8vICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgLy9cclxuICAgIC8vIH0sXHJcbiAgICBkZXRhaWw6e1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIHZhbHVlOiB7fSxcclxuICAgICAgb2JzZXJ2ZXIobmV3VmFsKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+ebkeWQrGRldGFpbOeahG5ld1ZhbCcsbmV3VmFsKTtcclxuICAgICAgICBpZiAoSlNPTi5zdHJpbmdpZnkobmV3VmFsKSAhPSAne30nKXtcclxuICAgICAgICAgIHRoaXMuZ2V0UXJDb2RlKClcclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgIH0sXHJcbiAgICBzZWxsZXJMaXN0OntcclxuICAgICAgdHlwZTogQXJyYXksXHJcbiAgICAgIHZhbHVlOiBbXVxyXG4gICAgfSxcclxuICAgIC8vIHZpc2libGU6IHtcclxuICAgIC8vICAgdHlwZTogQm9vbGVhbixcclxuICAgIC8vICAgdmFsdWU6IGZhbHNlLFxyXG4gICAgLy8gfVxyXG4gIH0sXHJcbiAgZGF0YToge1xyXG4gICAgaW1nRHJhdzoge30sIC8v57uY5Yi25Zu+54mH55qE5aSn5a+56LGhXHJcbiAgICBzaGFyZVBhdGg6ICcnLCAvL+eUn+aIkOeahOWIhuS6q+WbvlxyXG4gICAgdmlzaWJsZTogZmFsc2UsXHJcbiAgICBxckNvZGVVcmw6JydcclxuICB9LFxyXG4gIGxpZmV0aW1lczp7XHJcbiAgICBhc3luYyByZWFkeSgpe1xyXG5cclxuICAgIH1cclxuICB9LFxyXG4gIHBhZ2VMaWZldGltZXM6IHtcclxuICAgIHNob3c6IGZ1bmN0aW9uKCkge1xyXG4gICAgICAvLyDpobXpnaLooqvlsZXnpLpcclxuXHJcbiAgICB9LFxyXG4gICAgaGlkZSgpIHtcclxuXHJcbiAgICB9XHJcbiAgfSxcclxuICBtZXRob2RzOiB7XHJcbiAgICBhc3luYyBnZXRRckNvZGUoKXtcclxuICAgICAgbGV0IFtlcnJvciwgcmVzdWx0XSA9IGF3YWl0IHd4LiR1dGlscy50byhcclxuICAgICAgICB3eC4kaHR0cC5yZXF1ZXN0KHtcclxuICAgICAgICAgIHVybDpgL3Nob3BwaW5nL3Bvc3Rlci9nZXRRckNvZGVGb3JQb3N0ZXIuZG9gLFxyXG4gICAgICAgICAgZGF0YTp7XHJcbiAgICAgICAgICAgIFFyQ29kZVR5cGU6ODAsXHJcbiAgICAgICAgICAgIGRvY2NvZGU6dGhpcy5kYXRhLmRldGFpbC5kb2Njb2RlLFxyXG4gICAgICAgICAgICBSZWZPcGVuSWQ6d3guZ2xvYmFsRGF0YS5Gcm9tT3BlbklkXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSlcclxuICAgICAgKVxyXG4gICAgICBpZiAoZXJyb3Ipe1xyXG4gICAgICAgIGNvbnNvbGUubG9nKGVycm9yKTtcclxuICAgICAgICByZXR1cm47XHJcbiAgICAgIH1cclxuICAgICAgY29uc29sZS5sb2cocmVzdWx0KTtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBxckNvZGVVcmw6cmVzdWx0LlFyQ29kZVxyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIGhhbmRsZUNsb3NlKCkge1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHZpc2libGU6IGZhbHNlXHJcbiAgICAgIH0pXHJcbiAgICAgIHRoaXMudHJpZ2dlckV2ZW50KCdjbG9zZScpXHJcbiAgICB9LFxyXG4gICAgZHJhd1BpYygpIHtcclxuICAgICAgaWYgKHRoaXMuZGF0YS5zaGFyZVBhdGgpIHsgLy/lpoLmnpzlt7Lnu4/nu5jliLbov4fkuobmnKzlnLDkv53lrZjmnInlm77niYfkuI3pnIDopoHph43mlrDnu5jliLZcclxuICAgICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgICAgdmlzaWJsZTogdHJ1ZVxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2luaXREYXRhJylcclxuICAgICAgICByZXR1cm5cclxuICAgICAgfVxyXG4gICAgICBsZXQgcXJDb2RlVXJsID0gdGhpcy5kYXRhLnFyQ29kZVVybDtcclxuICAgICAgaWYgKCF0aGlzLmRhdGEucXJDb2RlVXJsKSB7XHJcbiAgICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICAgIHRpdGxlOiAn6I635Y+W5LqM57u056CB5aSx6LSl77yM6K+356iN5ZCO5YaN6K+VJyxcclxuICAgICAgICAgIGljb246J25vbmUnLFxyXG4gICAgICAgIH0pXHJcbiAgICAgICAgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIHd4LnNob3dMb2FkaW5nKHtcclxuICAgICAgICB0aXRsZTogJ+eUn+aIkOS4rSdcclxuICAgICAgfSlcclxuICAgICAgbGV0IHtkZXRhaWwsc2VsbGVyTGlzdH0gPSB0aGlzLmRhdGE7XHJcbiAgICAgIGNvbnNvbGUubG9nKGRldGFpbCxzZWxsZXJMaXN0KTtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBpbWdEcmF3OiB7XHJcbiAgICAgICAgICB3aWR0aDogJzc1MHJweCcsXHJcbiAgICAgICAgICBoZWlnaHQ6ICcxMzM0cnB4JyxcclxuICAgICAgICAgIGJhY2tncm91bmQ6ICcjZjVmNWY1JyxcclxuICAgICAgICAgIHZpZXdzOiBbXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBcInR5cGVcIjogXCJpbWFnZVwiLFxyXG4gICAgICAgICAgICAgIFwidXJsXCI6IFwiL2Fzc2V0cy9pbWFnZXMvcG9zdGVyLWJnLnBuZ1wiLFxyXG4gICAgICAgICAgICAgIFwiY3NzXCI6IHtcclxuICAgICAgICAgICAgICAgIFwid2lkdGhcIjogXCI3NTBycHhcIixcclxuICAgICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiMTMzNHJweFwiLFxyXG4gICAgICAgICAgICAgICAgXCJ0b3BcIjogXCIwcHhcIixcclxuICAgICAgICAgICAgICAgIFwibGVmdFwiOiBcIjBweFwiLFxyXG4gICAgICAgICAgICAgICAgXCJyb3RhdGVcIjogXCIwXCIsXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ2ltYWdlJyxcclxuICAgICAgICAgICAgICB1cmw6IGRldGFpbC5jb3ZlckltYWdlVXJsWzBdLFxyXG4gICAgICAgICAgICAgIGNzczoge1xyXG4gICAgICAgICAgICAgICAgdG9wOiAnMTBycHgnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogJzEwcnB4JyxcclxuICAgICAgICAgICAgICAgIHJpZ2h0OiAnMTBycHgnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc3MzBycHgnLFxyXG4gICAgICAgICAgICAgICAgaGVpZ2h0OiAnNDgwcnB4JyxcclxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzE2cnB4J1xyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiAnaW1hZ2UnLFxyXG4gICAgICAgICAgICAgIHVybDogc2VsbGVyTGlzdFswXS5zZWxsZXJIZWFkaW1ndXJsIHx8ICcvYXNzZXRzL2ltYWdlcy9kZWZhdWx0LWF2YXRhci5wbmcnLFxyXG4gICAgICAgICAgICAgIGNzczoge1xyXG4gICAgICAgICAgICAgICAgdG9wOiAnNDQ0cnB4JyxcclxuICAgICAgICAgICAgICAgIGxlZnQ6ICczMjhycHgnLFxyXG4gICAgICAgICAgICAgICAgd2lkdGg6ICc5NnJweCcsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICc5NnJweCcsXHJcbiAgICAgICAgICAgICAgICBib3JkZXJXaWR0aDogJzZycHgnLFxyXG4gICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICcjRkZGJyxcclxuICAgICAgICAgICAgICAgIGJvcmRlclJhZGl1czogJzk2cnB4J1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgICB0ZXh0OiBzZWxsZXJMaXN0WzBdLnNlbGxlck5hbWUgfHwgJ+aYteensCcsXHJcbiAgICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgICB0b3A6ICc1NzJycHgnLFxyXG4gICAgICAgICAgICAgICAgZm9udFNpemU6ICcyOHJweCcsXHJcbiAgICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAnIzNjM2MzYydcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgdGV4dDogYOmCgOivt+aCqOWPguS4jua0u+WKqGAsXHJcbiAgICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgICB0b3A6ICc2MTZycHgnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogJzM3NXJweCcsXHJcbiAgICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogJzI4cnB4JyxcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAnIzNjM2MzYydcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgdGV4dDogYCR7ZGV0YWlsLnRpdGxlfHwn5rS75Yqo5qCH6aKYJ31gLFxyXG4gICAgICAgICAgICAgIGNzczoge1xyXG4gICAgICAgICAgICAgICAgdG9wOiAnNjg0cnB4JyxcclxuICAgICAgICAgICAgICAgIGxlZnQ6ICczNzVycHgnLFxyXG4gICAgICAgICAgICAgICAgbWF4TGluZXM6IDEsXHJcbiAgICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgICBmb250V2VpZ2h0OiAnYm9sZCcsXHJcbiAgICAgICAgICAgICAgICBmb250U2l6ZTogJzQ0cnB4JyxcclxuICAgICAgICAgICAgICAgIGNvbG9yOiAnIzNjM2MzYydcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIC8vIHtcclxuICAgICAgICAgICAgLy8gICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgIC8vICAgdGV4dDogYOa0u+WKqOS7tyDvv6VgLFxyXG4gICAgICAgICAgICAvLyAgIGNzczoge1xyXG4gICAgICAgICAgICAvLyAgICAgdG9wOiAnNzgwcnB4JyxcclxuICAgICAgICAgICAgLy8gICAgIGxlZnQ6ICcyNTBycHgnLFxyXG4gICAgICAgICAgICAvLyAgICAgbWF4TGluZXM6IDEsXHJcbiAgICAgICAgICAgIC8vICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgIC8vICAgICBmb250V2VpZ2h0OiAnYm9sZCcsXHJcbiAgICAgICAgICAgIC8vICAgICBmb250U2l6ZTogJzI4cnB4JyxcclxuICAgICAgICAgICAgLy8gICAgIGNvbG9yOiAnI2YyMzIzMidcclxuICAgICAgICAgICAgLy8gICB9XHJcbiAgICAgICAgICAgIC8vIH0sXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgICAgdGV4dDogYO+/pSR7ZGV0YWlsLnNhbGVzUHJpY2V8fCfku7fmoLwnfWAsXHJcbiAgICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgICB0b3A6ICc3NjVycHgnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogJzM3NXJweCcsXHJcbiAgICAgICAgICAgICAgICBtYXhMaW5lczogMSxcclxuICAgICAgICAgICAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcclxuICAgICAgICAgICAgICAgIGZvbnRTaXplOiAnNDRycHgnLFxyXG4gICAgICAgICAgICAgICAgY29sb3I6ICcjZjIzMjMyJ1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIHR5cGU6ICdpbWFnZScsXHJcbiAgICAgICAgICAgICAgdXJsOiBxckNvZGVVcmwsXHJcbiAgICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgICB0b3A6ICc5NzBycHgnLFxyXG4gICAgICAgICAgICAgICAgbGVmdDogJzM5MHJweCcsXHJcbiAgICAgICAgICAgICAgICB3aWR0aDogJzMwMHJweCcsXHJcbiAgICAgICAgICAgICAgICBoZWlnaHQ6ICczMDBycHgnXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICAgIHRleHQ6IGDplb/mjInkuoznu7TnoIHor4bliKvlj4LkuI5gLFxyXG4gICAgICAgICAgICAgIGNzczoge1xyXG4gICAgICAgICAgICAgICAgdG9wOiAnMTEwMHJweCcsXHJcbiAgICAgICAgICAgICAgICBsZWZ0OiAnNTVycHgnLFxyXG4gICAgICAgICAgICAgICAgZm9udFNpemU6ICczMnJweCcsXHJcbiAgICAgICAgICAgICAgICBjb2xvcjogJyMzYzNjM2MnXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgXVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBvbkltZ0VycigpIHtcclxuICAgICAgd3guaGlkZUxvYWRpbmcoKVxyXG4gICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn55Sf5oiQ5YiG5Lqr5Zu+5aSx6LSl77yM6K+35Yi35paw6aG16Z2i6YeN6K+VJ1xyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIG9uSW1nT0soZSkge1xyXG4gICAgICB3eC5oaWRlTG9hZGluZygpXHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc2hhcmVQYXRoOiBlLmRldGFpbC5wYXRoLFxyXG4gICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgIH0pXHJcbiAgICAgIC8v6YCa55+l5aSW6YOo57uY5Yi25a6M5oiQ77yM6YeN572uaXNDYW5EcmF35Li6ZmFsc2VcclxuICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2luaXREYXRhJylcclxuICAgIH0sXHJcbiAgICBwcmV2ZW50RGVmYXVsdCgpIHsgfSxcclxuICAgIC8vIOS/neWtmOWbvueJh1xyXG4gICAgaGFuZGxlU2F2ZVBob3RvKCkge1xyXG4gICAgICB3eC5zaG93TG9hZGluZyh7XHJcbiAgICAgICAgdGl0bGU6ICfmraPlnKjkv53lrZguLi4nLFxyXG4gICAgICAgIG1hc2s6IHRydWVcclxuICAgICAgfSlcclxuICAgICAgd3guc2F2ZUltYWdlVG9QaG90b3NBbGJ1bSh7XHJcbiAgICAgICAgZmlsZVBhdGg6IHRoaXMuZGF0YS5zaGFyZVBhdGgsXHJcbiAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICAgICAgdGl0bGU6ICfkv53lrZjmiJDlip8nXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2Nsb3NlJylcclxuICAgICAgICAgIH0sIDMwMClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6ICgpID0+IHtcclxuICAgICAgICAgIHd4LmdldFNldHRpbmcoe1xyXG4gICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBhdXRoU2V0dGluZyA9IHJlcy5hdXRoU2V0dGluZ1xyXG4gICAgICAgICAgICAgIGlmICghYXV0aFNldHRpbmdbJ3Njb3BlLndyaXRlUGhvdG9zQWxidW0nXSkge1xyXG4gICAgICAgICAgICAgICAgd3guc2hvd01vZGFsKHtcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmj5DnpLonLFxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50OiAn5oKo5pyq5byA5ZCv5L+d5a2Y5Zu+54mH5Yiw55u45YaM55qE5p2D6ZmQ77yM6K+354K55Ye756Gu5a6a5Y675byA5ZCv5p2D6ZmQ77yBJyxcclxuICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvbmZpcm0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHd4Lm9wZW5TZXR0aW5nKClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHd4LmhpZGVMb2FkaW5nKClcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCgnY2xvc2UnKVxyXG4gICAgICAgICAgfSwgMzAwKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn0pXHJcbiJdfQ==
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyJpbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLENBQUM7SUFDUixPQUFPLEVBQUU7UUFDUCxjQUFjLEVBQUMsSUFBSTtRQUNuQixhQUFhLEVBQUUsSUFBSTtLQUNwQjtJQUNELFVBQVUsRUFBRTtRQUVWLFFBQVEsRUFBRTtZQUNSLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLFlBQUMsTUFBTTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN4QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFDO29CQUNqQyxJQUFJLENBQUMsT0FBTyxDQUFDO3dCQUNYLE1BQU0sRUFBQyxJQUFJO3FCQUNaLENBQUMsQ0FBQTtpQkFDSDtZQUNILENBQUM7U0FDRjtRQUNELE1BQU0sRUFBQztZQUNMLElBQUksRUFBRSxNQUFNO1lBQ1osS0FBSyxFQUFFLEVBQUU7WUFDVCxRQUFRLFlBQUMsTUFBTTtnQkFDYixPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixFQUFDLE1BQU0sQ0FBQyxDQUFDO2dCQUN0QyxJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLElBQUksSUFBSSxFQUFDO29CQUNqQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUE7aUJBQ2pCO1lBQ0gsQ0FBQztTQUNGO1FBQ0QsVUFBVSxFQUFDO1lBQ1QsSUFBSSxFQUFFLEtBQUs7WUFDWCxLQUFLLEVBQUUsRUFBRTtTQUNWO0tBTUY7SUFDRCxJQUFJLEVBQUU7UUFDSixPQUFPLEVBQUUsRUFBRTtRQUNYLFNBQVMsRUFBRSxFQUFFO1FBQ2IsT0FBTyxFQUFFLEtBQUs7UUFDZCxTQUFTLEVBQUMsRUFBRTtRQUNaLE1BQU0s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QkFDZixDQUFDLENBQUE7d0JBQ0YsS0FBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDNUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUNULENBQUM7Z0JBQ0QsSUFBSSxFQUFFO29CQUNKLEVBQUUsQ0FBQyxVQUFVLENBQUM7d0JBQ1osT0FBTyxFQUFFLFVBQUEsR0FBRzs0QkFDVixJQUFJLFdBQVcsR0FBRyxHQUFHLENBQUMsV0FBVyxDQUFBOzRCQUNqQyxJQUFJLENBQUMsV0FBVyxDQUFDLHdCQUF3QixDQUFDLEVBQUU7Z0NBQzFDLEVBQUUsQ0FBQyxTQUFTLENBQUM7b0NBQ1gsS0FBSyxFQUFFLElBQUk7b0NBQ1gsT0FBTyxFQUFFLDRCQUE0QjtvQ0FDckMsT0FBTyxZQUFDLEdBQUc7d0NBQ1QsSUFBSSxHQUFHLENBQUMsT0FBTyxFQUFFOzRDQUNmLEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTt5Q0FDakI7b0NBQ0gsQ0FBQztpQ0FDRixDQUFDLENBQUE7NkJBQ0g7d0JBQ0gsQ0FBQztxQkFDRixDQUFDLENBQUE7b0JBQ0YsVUFBVSxDQUFDO3dCQUNULEVBQUUsQ0FBQyxXQUFXLEVBQUUsQ0FBQTt3QkFDaEIsS0FBSSxDQUFDLE9BQU8sQ0FBQzs0QkFDWCxPQUFPLEVBQUUsS0FBSzt5QkFDZixDQUFDLENBQUE7d0JBQ0YsS0FBSSxDQUFDLFlBQVksQ0FBQyxPQUFPLENBQUMsQ0FBQTtvQkFDNUIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO2dCQUNULENBQUM7YUFDRixDQUFDLENBQUE7UUFDSixDQUFDO0tBQ0Y7Q0FDRixDQUFDLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJDb21wb25lbnQoe1xyXG4gIG9wdGlvbnM6IHtcclxuICAgIGFkZEdsb2JhbENsYXNzOnRydWUsXHJcbiAgICBtdWx0aXBsZVNsb3RzOiB0cnVlIC8vIOWcqOe7hOS7tuWumuS5ieaXtueahOmAiemhueS4reWQr+eUqOWkmnNsb3TmlK/mjIFcclxuICB9LFxyXG4gIHByb3BlcnRpZXM6IHtcclxuICAgIC8v5bGe5oCn5YC85Y+v5Lul5Zyo57uE5Lu25L2/55So5pe25oyH5a6aXHJcbiAgICBsaXZlUm9vbToge1xyXG4gICAgICB0eXBlOiBPYmplY3QsXHJcbiAgICAgIHZhbHVlOiB7fSxcclxuICAgICAgb2JzZXJ2ZXIobmV3VmFsKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ+ebkeWQrGxpdmVSb29t55qEbmV3VmFsJyxuZXdWYWwpO1xyXG4gICAgICAgIGlmIChKU09OLnN0cmluZ2lmeShuZXdWYWwpICE9ICd7fScpe1xyXG4gICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgaXNMaXZlOnRydWVcclxuICAgICAgICAgIH0pXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgZGV0YWlsOntcclxuICAgICAgdHlwZTogT2JqZWN0LFxyXG4gICAgICB2YWx1ZToge30sXHJcbiAgICAgIG9ic2VydmVyKG5ld1ZhbCkge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKCfnm5HlkKxkZXRhaWznmoRuZXdWYWwnLG5ld1ZhbCk7XHJcbiAgICAgICAgaWYgKEpTT04uc3RyaW5naWZ5KG5ld1ZhbCkgIT0gJ3t9Jyl7XHJcbiAgICAgICAgICB0aGlzLmdldFFyQ29kZSgpXHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9LFxyXG4gICAgc2VsbGVyTGlzdDp7XHJcbiAgICAgIHR5cGU6IEFycmF5LFxyXG4gICAgICB2YWx1ZTogW11cclxuICAgIH0sXHJcblxyXG4gICAgLy8gdmlzaWJsZToge1xyXG4gICAgLy8gICB0eXBlOiBCb29sZWFuLFxyXG4gICAgLy8gICB2YWx1ZTogZmFsc2UsXHJcbiAgICAvLyB9XHJcbiAgfSxcclxuICBkYXRhOiB7XHJcbiAgICBpbWdEcmF3OiB7fSwgLy/nu5jliLblm77niYfnmoTlpKflr7nosaFcclxuICAgIHNoYXJlUGF0aDogJycsIC8v55Sf5oiQ55qE5YiG5Lqr5Zu+XHJcbiAgICB2aXNpYmxlOiBmYWxzZSxcclxuICAgIHFyQ29kZVVybDonJyxcclxuICAgIGlzTGl2ZTpmYWxzZSAvL+aYr+WQpuebtOaSrVxyXG4gIH0sXHJcbiAgbGlmZXRpbWVzOntcclxuICAgIGFzeW5jIHJlYWR5KCl7XHJcblxyXG4gICAgfVxyXG4gIH0sXHJcbiAgcGFnZUxpZmV0aW1lczoge1xyXG4gICAgc2hvdzogZnVuY3Rpb24oKSB7XHJcbiAgICAgIC8vIOmhtemdouiiq+WxleekulxyXG5cclxuICAgIH0sXHJcbiAgICBoaWRlKCkge1xyXG5cclxuICAgIH1cclxuICB9LFxyXG4gIG1ldGhvZHM6IHtcclxuICAgIGFzeW5jIGdldExpdmVSb29tUXJDb2RlKCl7XHJcbiAgICAgIGxldCByb29taWQgPSB0aGlzLmRhdGEubGl2ZVJvb20uUm9vbUlkO1xyXG4gICAgICBjb25zb2xlLmxvZyhyb29taWQpO1xyXG4gICAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgICAgdXJsOmAvc2hvcHBpbmcvbGl2ZS9nZXRTaGFyZWRDb2RlLmRvYCxcclxuICAgICAgICAgIGRhdGE6e1xyXG4gICAgICAgICAgICByb29taWRcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIGlmIChlcnJvcil7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgICB0aXRsZTogJ+iOt+WPluS6jOe7tOeggeWksei0pe+8jOivt+eojeWQjuWGjeivlScsXHJcbiAgICAgICAgICBpY29uOidub25lJyxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHFyQ29kZVVybDpyZXN1bHQuY2RuVXJsXHJcbiAgICAgIH0pXHJcbiAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIGFzeW5jIGdldFFyQ29kZSgpe1xyXG4gICAgICBsZXQgW2Vycm9yLCByZXN1bHRdID0gYXdhaXQgd3guJHV0aWxzLnRvKFxyXG4gICAgICAgIHd4LiRodHRwLnJlcXVlc3Qoe1xyXG4gICAgICAgICAgdXJsOmAvc2hvcHBpbmcvcG9zdGVyL2dldFFyQ29kZUZvclBvc3Rlci5kb2AsXHJcbiAgICAgICAgICBkYXRhOntcclxuICAgICAgICAgICAgUXJDb2RlVHlwZTo4MCxcclxuICAgICAgICAgICAgZG9jY29kZTp0aGlzLmRhdGEuZGV0YWlsLmRvY2NvZGUsXHJcbiAgICAgICAgICAgIFJlZk9wZW5JZDp3eC5nbG9iYWxEYXRhLkZyb21PcGVuSWRcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KVxyXG4gICAgICApXHJcbiAgICAgIGlmIChlcnJvcil7XHJcbiAgICAgICAgY29uc29sZS5sb2coZXJyb3IpO1xyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICBjb25zb2xlLmxvZyhyZXN1bHQpO1xyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIHFyQ29kZVVybDpyZXN1bHQuUXJDb2RlXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgaGFuZGxlQ2xvc2UoKSB7XHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgdmlzaWJsZTogZmFsc2VcclxuICAgICAgfSlcclxuICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2Nsb3NlJylcclxuICAgIH0sXHJcbiAgICBjbGVhclBvc3RlcigpIHtcclxuICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICBzaGFyZVBhdGg6JydcclxuICAgICAgfSlcclxuICAgIH0sXHJcbiAgICBhc3luYyBkcmF3UGljKCkge1xyXG4gICAgICBpZiAodGhpcy5kYXRhLnNoYXJlUGF0aCkgeyAvL+WmguaenOW3sue7j+e7mOWItui/h+S6huacrOWcsOS/neWtmOacieWbvueJh+S4jemcgOimgemHjeaWsOe7mOWItlxyXG4gICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICB2aXNpYmxlOiB0cnVlXHJcbiAgICAgICAgfSlcclxuICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCgnaW5pdERhdGEnKVxyXG4gICAgICAgIHJldHVyblxyXG4gICAgICB9XHJcbiAgICAgIGlmICh0aGlzLmRhdGEuaXNMaXZlKXtcclxuICAgICAgICBpZiAoIWF3YWl0IHRoaXMuZ2V0TGl2ZVJvb21RckNvZGUoKSkgcmV0dXJuO1xyXG4gICAgICB9XHJcbiAgICAgIGlmICghdGhpcy5kYXRhLnFyQ29kZVVybCkge1xyXG4gICAgICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgICB0aXRsZTogJ+iOt+WPluS6jOe7tOeggeWksei0pe+8jOivt+eojeWQjuWGjeivlScsXHJcbiAgICAgICAgICBpY29uOidub25lJyxcclxuICAgICAgICB9KVxyXG4gICAgICAgIHJldHVybjtcclxuICAgICAgfVxyXG4gICAgICB3eC5zaG93TG9hZGluZyh7XHJcbiAgICAgICAgdGl0bGU6ICfnlJ/miJDkuK0nXHJcbiAgICAgIH0pXHJcblxyXG4gICAgICB0aGlzLnNldERhdGEoe1xyXG4gICAgICAgIGltZ0RyYXc6IHRoaXMuZ2V0SW1nRHJhdygpXHJcbiAgICAgIH0pXHJcbiAgICB9LFxyXG4gICAgIGdldEltZ0RyYXcoKSB7XHJcbiAgICAgIGxldCB7ZGV0YWlsLGxpdmVSb29tLHNlbGxlckxpc3QscXJDb2RlVXJsfSA9IHRoaXMuZGF0YTtcclxuICAgICAgbGV0IGlzTGl2ZSA9IHRoaXMuZGF0YS5pc0xpdmU7XHJcbiAgICAgIGNvbnNvbGUubG9nKGRldGFpbCxsaXZlUm9vbSxzZWxsZXJMaXN0LHFyQ29kZVVybCxpc0xpdmUpO1xyXG4gICAgICBsZXQgaW1nRHJhdyA9IHtcclxuICAgICAgICB3aWR0aDogJzc1MHJweCcsXHJcbiAgICAgICAgaGVpZ2h0OiAnMTMzNHJweCcsXHJcbiAgICAgICAgYmFja2dyb3VuZDogJyNmNWY1ZjUnLFxyXG4gICAgICAgIHZpZXdzOiBbXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIFwidHlwZVwiOiBcImltYWdlXCIsXHJcbiAgICAgICAgICAgIFwidXJsXCI6IFwiL2Fzc2V0cy9pbWFnZXMvcG9zdGVyLWJnLnBuZ1wiLFxyXG4gICAgICAgICAgICBcImNzc1wiOiB7XHJcbiAgICAgICAgICAgICAgXCJ3aWR0aFwiOiBcIjc1MHJweFwiLFxyXG4gICAgICAgICAgICAgIFwiaGVpZ2h0XCI6IFwiMTMzNHJweFwiLFxyXG4gICAgICAgICAgICAgIFwidG9wXCI6IFwiMHB4XCIsXHJcbiAgICAgICAgICAgICAgXCJsZWZ0XCI6IFwiMHB4XCIsXHJcbiAgICAgICAgICAgICAgXCJyb3RhdGVcIjogXCIwXCIsXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICdpbWFnZScsXHJcbiAgICAgICAgICAgIHVybDogaXNMaXZlP2xpdmVSb29tLlNoYXJlSW1nVW5pZFVybDpkZXRhaWwuY292ZXJJbWFnZVVybFswXSxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnMTBycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICcxMHJweCcsXHJcbiAgICAgICAgICAgICAgcmlnaHQ6ICcxMHJweCcsXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICc3MzBycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzQ4MHJweCcsXHJcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnMTZycHgnXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiAnaW1hZ2UnLFxyXG4gICAgICAgICAgICB1cmw6IChpc0xpdmU/bGl2ZVJvb20uQW5jaG9ySW1nVW5pZFVybDpzZWxsZXJMaXN0WzBdLnNlbGxlckhlYWRpbWd1cmwpIHx8ICcvYXNzZXRzL2ltYWdlcy9kZWZhdWx0LWF2YXRhci5wbmcnLFxyXG4gICAgICAgICAgICBjc3M6IHtcclxuICAgICAgICAgICAgICB0b3A6ICc0NDRycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICczMjhycHgnLFxyXG4gICAgICAgICAgICAgIHdpZHRoOiAnOTZycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzk2cnB4JyxcclxuICAgICAgICAgICAgICBib3JkZXJXaWR0aDogJzZycHgnLFxyXG4gICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnI0ZGRicsXHJcbiAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnOTZycHgnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogKGlzTGl2ZT9saXZlUm9vbS5BbmNob3JOYW1lOiBzZWxsZXJMaXN0WzBdLnNlbGxlck5hbWUpIHx8ICfmmLXnp7AnLFxyXG4gICAgICAgICAgICBjc3M6IHtcclxuICAgICAgICAgICAgICB0b3A6ICc1NzJycHgnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnMjhycHgnLFxyXG4gICAgICAgICAgICAgIGxlZnQ6ICczNzVycHgnLFxyXG4gICAgICAgICAgICAgIGFsaWduOiAnY2VudGVyJyxcclxuICAgICAgICAgICAgICBjb2xvcjogJyMzYzNjM2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogYOmCgOivt+aCqOWPguS4jiR7KGlzTGl2ZT8n55u05pKtJzon5rS75YqoJyl9YCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNjE2cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFNpemU6ICcyOHJweCcsXHJcbiAgICAgICAgICAgICAgY29sb3I6ICcjM2MzYzNjJ1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9LFxyXG4gICAgICAgICAge1xyXG4gICAgICAgICAgICB0eXBlOiAndGV4dCcsXHJcbiAgICAgICAgICAgIHRleHQ6IGAkeyhpc0xpdmU/bGl2ZVJvb20uUm9vbU5hbWU6ZGV0YWlsLnRpdGxlKSB8fCAn5rS75Yqo5qCH6aKYJ30gYCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNjg0cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBtYXhMaW5lczogMSxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnNDRycHgnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAnIzNjM2MzYydcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIC8vIHtcclxuICAgICAgICAgIC8vICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgLy8gICB0ZXh0OiBg5rS75Yqo5Lu3IO+/pWAsXHJcbiAgICAgICAgICAvLyAgIGNzczoge1xyXG4gICAgICAgICAgLy8gICAgIHRvcDogJzc4MHJweCcsXHJcbiAgICAgICAgICAvLyAgICAgbGVmdDogJzI1MHJweCcsXHJcbiAgICAgICAgICAvLyAgICAgbWF4TGluZXM6IDEsXHJcbiAgICAgICAgICAvLyAgICAgYWxpZ246ICdjZW50ZXInLFxyXG4gICAgICAgICAgLy8gICAgIGZvbnRXZWlnaHQ6ICdib2xkJyxcclxuICAgICAgICAgIC8vICAgICBmb250U2l6ZTogJzI4cnB4JyxcclxuICAgICAgICAgIC8vICAgICBjb2xvcjogJyNmMjMyMzInXHJcbiAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgIC8vIH0sXHJcbiAgICAgICAgICB7XHJcbiAgICAgICAgICAgIHR5cGU6ICd0ZXh0JyxcclxuICAgICAgICAgICAgdGV4dDogYCR7KGlzTGl2ZT8nJzon77+lJytkZXRhaWwuc2FsZXNQcmljZSkgfHwgJyd9YCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnNzY1cnB4JyxcclxuICAgICAgICAgICAgICBsZWZ0OiAnMzc1cnB4JyxcclxuICAgICAgICAgICAgICBtYXhMaW5lczogMSxcclxuICAgICAgICAgICAgICBhbGlnbjogJ2NlbnRlcicsXHJcbiAgICAgICAgICAgICAgZm9udFdlaWdodDogJ2JvbGQnLFxyXG4gICAgICAgICAgICAgIGZvbnRTaXplOiAnNDRycHgnLFxyXG4gICAgICAgICAgICAgIGNvbG9yOiAnI2YyMzIzMidcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ2ltYWdlJyxcclxuICAgICAgICAgICAgdXJsOiBxckNvZGVVcmwsXHJcbiAgICAgICAgICAgIGNzczoge1xyXG4gICAgICAgICAgICAgIHRvcDogJzk3MHJweCcsXHJcbiAgICAgICAgICAgICAgbGVmdDogJzM5MHJweCcsXHJcbiAgICAgICAgICAgICAgd2lkdGg6ICczMDBycHgnLFxyXG4gICAgICAgICAgICAgIGhlaWdodDogJzMwMHJweCdcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSxcclxuICAgICAgICAgIHtcclxuICAgICAgICAgICAgdHlwZTogJ3RleHQnLFxyXG4gICAgICAgICAgICB0ZXh0OiBg6ZW/5oyJ5LqM57u056CB6K+G5Yir5Y+C5LiOYCxcclxuICAgICAgICAgICAgY3NzOiB7XHJcbiAgICAgICAgICAgICAgdG9wOiAnMTEwMHJweCcsXHJcbiAgICAgICAgICAgICAgbGVmdDogJzU1cnB4JyxcclxuICAgICAgICAgICAgICBmb250U2l6ZTogJzMycnB4JyxcclxuICAgICAgICAgICAgICBjb2xvcjogJyMzYzNjM2MnXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0sXHJcbiAgICAgICAgXVxyXG4gICAgICB9O1xyXG4gICAgICByZXR1cm4gaW1nRHJhdztcclxuICAgIH0sXHJcbiAgICBvbkltZ0VycigpIHtcclxuICAgICAgd3guaGlkZUxvYWRpbmcoKVxyXG4gICAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiAn55Sf5oiQ5YiG5Lqr5Zu+5aSx6LSl77yM6K+35Yi35paw6aG16Z2i6YeN6K+VJ1xyXG4gICAgICB9KVxyXG4gICAgfSxcclxuICAgIG9uSW1nT0soZSkge1xyXG4gICAgICB3eC5oaWRlTG9hZGluZygpXHJcbiAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgc2hhcmVQYXRoOiBlLmRldGFpbC5wYXRoLFxyXG4gICAgICAgIHZpc2libGU6IHRydWUsXHJcbiAgICAgIH0pXHJcbiAgICAgIC8v6YCa55+l5aSW6YOo57uY5Yi25a6M5oiQ77yM6YeN572uaXNDYW5EcmF35Li6ZmFsc2VcclxuICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2luaXREYXRhJylcclxuICAgIH0sXHJcbiAgICBwcmV2ZW50RGVmYXVsdCgpIHsgfSxcclxuICAgIC8vIOS/neWtmOWbvueJh1xyXG4gICAgaGFuZGxlU2F2ZVBob3RvKCkge1xyXG4gICAgICB3eC5zaG93TG9hZGluZyh7XHJcbiAgICAgICAgdGl0bGU6ICfmraPlnKjkv53lrZguLi4nLFxyXG4gICAgICAgIG1hc2s6IHRydWVcclxuICAgICAgfSlcclxuICAgICAgd3guc2F2ZUltYWdlVG9QaG90b3NBbGJ1bSh7XHJcbiAgICAgICAgZmlsZVBhdGg6IHRoaXMuZGF0YS5zaGFyZVBhdGgsXHJcbiAgICAgICAgc3VjY2VzczogKCkgPT4ge1xyXG4gICAgICAgICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICAgICAgdGl0bGU6ICfkv53lrZjmiJDlip8nXHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMuc2V0RGF0YSh7XHJcbiAgICAgICAgICAgICAgdmlzaWJsZTogZmFsc2VcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgdGhpcy50cmlnZ2VyRXZlbnQoJ2Nsb3NlJylcclxuICAgICAgICAgIH0sIDMwMClcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6ICgpID0+IHtcclxuICAgICAgICAgIHd4LmdldFNldHRpbmcoe1xyXG4gICAgICAgICAgICBzdWNjZXNzOiByZXMgPT4ge1xyXG4gICAgICAgICAgICAgIGxldCBhdXRoU2V0dGluZyA9IHJlcy5hdXRoU2V0dGluZ1xyXG4gICAgICAgICAgICAgIGlmICghYXV0aFNldHRpbmdbJ3Njb3BlLndyaXRlUGhvdG9zQWxidW0nXSkge1xyXG4gICAgICAgICAgICAgICAgd3guc2hvd01vZGFsKHtcclxuICAgICAgICAgICAgICAgICAgdGl0bGU6ICfmj5DnpLonLFxyXG4gICAgICAgICAgICAgICAgICBjb250ZW50OiAn5oKo5pyq5byA5ZCv5L+d5a2Y5Zu+54mH5Yiw55u45YaM55qE5p2D6ZmQ77yM6K+354K55Ye756Gu5a6a5Y675byA5ZCv5p2D6ZmQ77yBJyxcclxuICAgICAgICAgICAgICAgICAgc3VjY2VzcyhyZXMpIHtcclxuICAgICAgICAgICAgICAgICAgICBpZiAocmVzLmNvbmZpcm0pIHtcclxuICAgICAgICAgICAgICAgICAgICAgIHd4Lm9wZW5TZXR0aW5nKClcclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9KVxyXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgICAgICAgIHd4LmhpZGVMb2FkaW5nKClcclxuICAgICAgICAgICAgdGhpcy5zZXREYXRhKHtcclxuICAgICAgICAgICAgICB2aXNpYmxlOiBmYWxzZVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICB0aGlzLnRyaWdnZXJFdmVudCgnY2xvc2UnKVxyXG4gICAgICAgICAgfSwgMzAwKVxyXG4gICAgICAgIH1cclxuICAgICAgfSlcclxuICAgIH1cclxuICB9XHJcbn0pXHJcbiJdfQ==