@piserve-tech/form-submission 1.3.68 → 1.3.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -127,11 +127,17 @@ export class SubmitFormComponent {
|
|
|
127
127
|
this.question = mapper.mapPublicFormToModel(response);
|
|
128
128
|
this.assignQuestionProperties(this.question);
|
|
129
129
|
//set font family and font size
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
130
|
+
if (response.result.moduleConfiguration.customizeFont) {
|
|
131
|
+
this.fontFamily = response.result.moduleConfiguration.fontFamily;
|
|
132
|
+
this.fontSize = response.result.moduleConfiguration.fontSize;
|
|
133
|
+
}
|
|
134
|
+
else {
|
|
135
|
+
this.fontFamily = 'poppins';
|
|
136
|
+
this.fontSize = 18;
|
|
137
|
+
}
|
|
138
|
+
document.documentElement.style.setProperty('--library-font-family', this.fontFamily);
|
|
139
|
+
document.documentElement.style.setProperty('--library-font-size', this.fontSize + 'px');
|
|
140
|
+
const fontUrl = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(this.fontFamily)}`;
|
|
135
141
|
this.loadFont(fontUrl);
|
|
136
142
|
if (this.enableGoogleRecaptcha)
|
|
137
143
|
this.getToken();
|
|
@@ -607,4 +613,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
607
613
|
}], apiCalled: [{
|
|
608
614
|
type: Output
|
|
609
615
|
}] } });
|
|
610
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sS0FBSyxNQUFNLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7OztBQW9DeEQsTUFBTSxPQUFPLG1CQUFtQjtJQXVDOUIsWUFDVSxXQUF3QixFQUN4QixNQUFxQixFQUNyQixNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsZ0JBQWtDO1FBSmxDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEzQzVDLGFBQVEsR0FBc0IsSUFBSSxDQUFDO1FBQzFCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUN0QixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUMxQixxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFDN0IsV0FBTSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFELGNBQVMsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUV6RSxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLHNCQUFpQixHQUFZLEtB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QUcsSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLElBQUksRUFBQzs0QkFDbEMsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDOzRCQUMzQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87Z0NBQUUsT0FBTyxNQUFNLENBQUM7eUJBQ3BDO3FCQUVGO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQztRQUM1RSxDQUFDLENBQUM7UUFFRixLQUFLLElBQUksR0FBRyxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDekIsTUFBTSxNQUFNLEdBQUcsaUJBQWlCLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxFQUFFO2dCQUNuQixPQUFPLE1BQU0sQ0FBQzthQUNmO1NBQ0Y7UUFDRCxPQUFPLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsc0NBQXNDLEVBQUUsQ0FBQztJQUM1RSxDQUFDO0lBRUQsNEJBQTRCLENBQUMsS0FBVTtRQUNyQyxJQUFJLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7SUFDeEMsQ0FBQzsrR0E5bEJVLG1CQUFtQjttR0FBbkIsbUJBQW1CLDJQQ3RDaEMsbzJDQXFDQTs7NEZEQ2EsbUJBQW1CO2tCQUwvQixTQUFTOytCQUNFLGlCQUFpQjs0TUFNbEIsVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBtYXBwZXIgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFwcGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQdWJsaWNGb3JtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3B1YmxpY0Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVjYXB0Y2hhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlY2FwdGNoYS5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBBbnN3ZXIge1xyXG4gIHF1ZXN0aW9uSWQ6IHN0cmluZztcclxuICBhbnN3ZXI6IGFueTtcclxuICBhbnN3ZXJJZD86IHN0cmluZztcclxuICBkZWxldGVGaWxlcz86IHN0cmluZ1tdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgU3VibWlzc2lvbiB7XHJcbiAgc3VibWlzc2lvbklkOiBzdHJpbmc7XHJcbiAgYW5zd2VyczogQW5zd2VyW107XHJcbn1cclxuXHJcbmludGVyZmFjZSBGb3JtIHtcclxuICBmb3JtSWQ6IHN0cmluZztcclxuICBkZWxldGVkU3VibWlzc2lvbnM6IGFueVtdO1xyXG4gIHN1Ym1pc3Npb25zOiBTdWJtaXNzaW9uW107XHJcbn1cclxuXHJcbmludGVyZmFjZSBRdWVzdGlvbkFuc3dlcnNXcmFwcGVyIHtcclxuICBwYXJlbnRJZDogc3RyaW5nO1xyXG4gIGFuc3dlcnM6IEFuc3dlcltdO1xyXG4gIGZvcm1zOiBGb3JtW107XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXN1Ym1pdC1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3VibWl0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N1Ym1pdC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdWJtaXRGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHF1ZXN0aW9uOiBQdWJsaWNGb3JtIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgbW9kdWxlTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgZWRpdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHN1Ym1pc3Npb25JZDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgYWNjZXB0ZWRMYW5ndWFnZTogc3RyaW5nID0gJyc7XHJcbiAgQE91dHB1dCgpIHN1Ym1pdDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgYXBpQ2FsbGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIG5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHNhdmVBdXRvbWF0aWNhbGx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2F2ZUludGVydmFsOiBudW1iZXIgPSAwO1xyXG4gIGN1c3RvbWl6ZUZvbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmb250RmFtaWx5OiBzdHJpbmcgPSAnJztcclxuICBmb250U2l6ZTogbnVtYmVyID0gMDtcclxuICBlbmFibGVEYXRhRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmlsZUZvcm1hdHM6IHN0cmluZ1tdID0gW107XHJcbiAgZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBxdWVzdGlvbk51bWJlcmluZzogc3RyaW5nID0gJyc7XHJcbiAgZW5hYmxlR29vZ2xlUmVjYXB0Y2hhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZ29vZ2xlUmVjYXB0Y2hhS2V5OiBzdHJpbmcgPSAnJztcclxuICBnb29nbGVSZWNhcHRjaGFTZWNyZXQ6IHN0cmluZyA9ICcnO1xyXG4gIG5hdmlnYXRpb246IHN0cmluZyA9ICcnO1xyXG4gIG1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFnZXM6IGFueSA9IFtdO1xyXG4gIGN1cnJlbnRQYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgcHJldmlvdXNQYWdlOiBhbnkgPSB7fTtcclxuICBjdXJyZW50UGFnZTogYW55ID0ge307XHJcbiAgbmV4dFBhZ2U6IGFueSA9IHt9O1xyXG4gIGxhc3RUYWI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBxdWVzdGlvbkFuc3dlcnM6IFF1ZXN0aW9uQW5zd2Vyc1dyYXBwZXIgPSB7IHBhcmVudElkOiAnJywgYW5zd2VyczogW10sIGZvcm1zOiBbXSB9O1xyXG4gIGZpbGVzOiB7IHF1ZXN0aW9uSWQ6IHN0cmluZzsgZmlsZTogYW55IH1bXSA9IFtdO1xyXG4gIHBhcmVudFF1ZXN0aW9uczogYW55O1xyXG4gIHN1Ym1pc3Npb246IGFueSA9IHt9O1xyXG4gIHBhcmVudFF1ZXN0aW9uQW5zd2VyczogYW55O1xyXG4gIHBhcmVudFN1Ym1pc3Npb25JZDogc3RyaW5nID0gJyc7XHJcbiAgc3VibWlzc2lvbkluUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByZWNhcHRjaGFUb2tlbjogc3RyaW5nID0gJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVjYXB0Y2hhU2VydmljZTogUmVjYXB0Y2hhU2VydmljZVxyXG4gICkge1xyXG4gICAgY29uc3QgbmF2aWdhdGlvbiA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnN1Ym1pc3Npb24gPSBuYXZpZ2F0aW9uPy5leHRyYXMuc3RhdGU/Llsnc3VibWlzc2lvbiddXHJcbiAgICB0aGlzLnBhcmVudFN1Ym1pc3Npb25JZCA9IHRoaXMuc3VibWlzc2lvbj8uaWQ7XHJcbiAgICB0aGlzLnBhcmVudFF1ZXN0aW9uQW5zd2VycyA9IHRoaXMuc3VibWlzc2lvbj8ucXVlc3Rpb25BbnN3ZXJzXHJcbiAgICB0aGlzLnBhcmVudFF1ZXN0aW9ucyA9IG5hdmlnYXRpb24/LmV4dHJhcy5zdGF0ZT8uWydwYXJlbnRRdWVzdGlvbnMnXTtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0UGFyZW50UXVlc3Rpb25zKHRoaXMucGFyZW50UXVlc3Rpb25zKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlY2FwdGNoYVNlcnZpY2UucmVtb3ZlUmVjYXB0Y2hhU2NyaXB0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snYWNjZXB0ZWRMYW5ndWFnZSddKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuYWNjZXB0ZWRMYW5ndWFnZSA9IGNoYW5nZXNbJ2FjY2VwdGVkTGFuZ3VhZ2UnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMuZ2V0Rm9ybURhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZWRpdCAmJiB0aGlzLnN1Ym1pc3Npb25JZCkge1xyXG4gICAgICB0aGlzLmdldFN1Ym1pdHRlZEZvcm1EYXRhKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB0aGlzLmdldEZvcm1EYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhKSB7XHJcbiAgICAgIHRoaXMuZ2V0VG9rZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFRva2VuKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLnJlY2FwdGNoYVNlcnZpY2UuZ2V0UmVjYXB0Y2hhVG9rZW4oKTtcclxuICAgICAgdGhpcy5yZWNhcHRjaGFUb2tlbiA9IHRva2VuO1xyXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG5cclxuXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIGdldHRpbmcgcmVDQVBUQ0hBIHRva2VuOicsIGVycm9yLmVycm9yLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkRm9udChmb250VXJsOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XHJcbiAgICBsaW5rLnJlbCA9ICdzdHlsZXNoZWV0JztcclxuICAgIGxpbmsuaHJlZiA9IGZvbnRVcmw7XHJcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybURhdGEoKSB7XHJcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmdldFF1ZXN0aW9ucyh0aGlzLm1vZHVsZU5hbWUpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmVuYWJsZUdvb2dsZVJlY2FwdGNoYSA9IHJlc3BvbnNlLnJlc3VsdC5tb2R1bGVDb25maWd1cmF0aW9uPy5lbmFibGVHb29nbGVSZWNhcHRjaGE7XHJcbiAgICAgIHRoaXMucXVlc3Rpb24gPSBtYXBwZXIubWFwUHVibGljRm9ybVRvTW9kZWwocmVzcG9uc2UpO1xyXG4gICAgICB0aGlzLmFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyh0aGlzLnF1ZXN0aW9uKTtcclxuXHJcbiAgICAgIC8vc2V0IGZvbnQgZmFtaWx5IGFuZCBmb250IHNpemVcclxuICAgICAgY29uc3QgZm9udEZhbWlseT0gcmVzcG9uc2UucmVzdWx0Lm1vZHVsZUNvbmZpZ3VyYXRpb24uZm9udEZhbWlseSB8fCAncG9wcGlucyc7XHJcbiAgICAgIGNvbnN0IGZvbnRTaXplPSByZXNwb25zZS5yZXN1bHQubW9kdWxlQ29uZmlndXJhdGlvbi5mb250U2l6ZSB8fCAxODtcclxuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxpYnJhcnktZm9udC1mYW1pbHknLCBmb250RmFtaWx5KTtcclxuICAgICAgZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50LnN0eWxlLnNldFByb3BlcnR5KCctLWxpYnJhcnktZm9udC1zaXplJywgZm9udFNpemUrJ3B4Jyk7XHJcbiAgICAgIGNvbnN0IGZvbnRVcmwgPSBgaHR0cHM6Ly9mb250cy5nb29nbGVhcGlzLmNvbS9jc3MyP2ZhbWlseT0ke2VuY29kZVVSSUNvbXBvbmVudChmb250RmFtaWx5KX1gO1xyXG4gICAgICB0aGlzLmxvYWRGb250KGZvbnRVcmwpO1xyXG5cclxuICAgICAgaWYgKHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhKVxyXG4gICAgICAgIHRoaXMuZ2V0VG9rZW4oKTtcclxuICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgZ2V0U3VibWl0dGVkRm9ybURhdGEoKSB7XHJcbiAgICB0aGlzLmZvcm1TZXJ2aWNlXHJcbiAgICAgIC5nZXRTdWJtaXR0ZWRGb3JtKHRoaXMubW9kdWxlTmFtZSwgdGhpcy5zdWJtaXNzaW9uSWQpXHJcbiAgICAgIC5zdWJzY3JpYmUoKHJlc3BvbnNlKSA9PiB7XHJcbiAgICAgICAgdGhpcy5lbmFibGVHb29nbGVSZWNhcHRjaGEgPSByZXNwb25zZS5yZXN1bHQubW9kdWxlQ29uZmlndXJhdGlvbi5lbmFibGVHb29nbGVSZWNhcHRjaGE7XHJcbiAgICAgICAgdGhpcy5xdWVzdGlvbiA9IG1hcHBlci5tYXBQdWJsaWNGb3JtVG9Nb2RlbChyZXNwb25zZSk7XHJcbiAgICAgICAgdGhpcy5hc3NpZ25RdWVzdGlvblByb3BlcnRpZXModGhpcy5xdWVzdGlvbik7XHJcbiAgICAgICAgaWYgKHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhKSB7XHJcbiAgICAgICAgICB0aGlzLmdldFRva2VuKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICB9XHJcblxyXG4gIGFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyhxdWVzdGlvbjogUHVibGljRm9ybSkgeyAgICBcclxuICAgIHRoaXMubmFtZSA9IHF1ZXN0aW9uLm5hbWU7XHJcbiAgICB0aGlzLnBhZ2VzID0gcXVlc3Rpb24ucGFnZXM7XHJcbiAgICBpZiAodGhpcy5wYXJlbnRRdWVzdGlvbnMpIHtcclxuICAgICAgdGhpcy5wYXJlbnRRdWVzdGlvbkFuc3dlcnMgPSBxdWVzdGlvbj8ucXVlc3Rpb25BbnN3ZXJzO1xyXG4gICAgICB0aGlzLnBhcmVudFN1Ym1pc3Npb25JZCA9IHF1ZXN0aW9uPy5wYXJlbnRJZDtcclxuICAgIH1cclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzWzBdO1xyXG4gICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZXNbMV07XHJcbiAgICB0aGlzLnNhdmVBdXRvbWF0aWNhbGx5ID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24uc2F2ZUF1dG9tYXRpY2FsbHk7XHJcbiAgICB0aGlzLnNhdmVJbnRlcnZhbCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLnNhdmVJbnRlcnZhbDtcclxuICAgIHRoaXMuY3VzdG9taXplRm9udCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmN1c3RvbWl6ZUZvbnQ7XHJcbiAgICB0aGlzLmZvbnRGYW1pbHkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5mb250RmFtaWx5O1xyXG4gICAgdGhpcy5mb250U2l6ZSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRTaXplO1xyXG4gICAgdGhpcy5lbmFibGVEYXRhRXhwb3J0ID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24uZW5hYmxlRGF0YUV4cG9ydDtcclxuICAgIHRoaXMuZmlsZUZvcm1hdHMgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5maWxlRm9ybWF0cztcclxuICAgIHRoaXMuZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmcgPVxyXG4gICAgICBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5lbmFibGVRdWVzdGlvbk51bWJlcmluZztcclxuICAgIHRoaXMucXVlc3Rpb25OdW1iZXJpbmcgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5xdWVzdGlvbk51bWJlcmluZztcclxuICAgIHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhID1cclxuICAgICAgcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24uZW5hYmxlR29vZ2xlUmVjYXB0Y2hhO1xyXG4gICAgdGhpcy5nb29nbGVSZWNhcHRjaGFLZXkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5nb29nbGVSZWNhcHRjaGFLZXk7XHJcbiAgICB0aGlzLmdvb2dsZVJlY2FwdGNoYVNlY3JldCA9XHJcbiAgICAgIHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmdvb2dsZVJlY2FwdGNoYVNlY3JldDtcclxuICAgIHRoaXMubmF2aWdhdGlvbiA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLm5hdmlnYXRpb247XHJcbiAgICB0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkID1cclxuICAgICAgcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQ7XHJcbiAgICB0aGlzLmFwaUNhbGxlZC5lbWl0KHRydWUpXHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvTmV4dFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZUluZGV4IDwgdGhpcy5wYWdlcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGlmICh0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VEYXRhID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXhdO1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMoY3VycmVudFBhZ2VEYXRhKTtcclxuICAgICAgICBpZiAodmFsaWRhdGlvblJlc3BvbnNlLmlzVmFsaWQpIHtcclxuICAgICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCsrO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcclxuICAgICAgICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleCArIDFdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKHZhbGlkYXRpb25SZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCsrO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XHJcbiAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4ICsgMV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9QcmV2aW91c1BhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZUluZGV4ID4gMCkge1xyXG4gICAgICBpZiAodGhpcy5tYXJrQWxsUXVlc3Rpb25zQXNSZXF1aXJlZCkge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlRGF0YSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcclxuICAgICAgICBjb25zdCB2YWxpZGF0aW9uUmVzcG9uc2UgPVxyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVJlcXVpcmVkUXVlc3Rpb25zKGN1cnJlbnRQYWdlRGF0YSk7XHJcbiAgICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLm5leHRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleC0tO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcclxuICAgICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXggLSAxXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyh2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleC0tO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XHJcbiAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleCAtIDFdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDdXJyZW50UGFnZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsUXVlc3Rpb25zQXNSZXF1aXJlZCkge1xyXG4gICAgICBjb25zdCBjdXJyZW50UGFnZURhdGEgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVJlcXVpcmVkUXVlc3Rpb25zKGN1cnJlbnRQYWdlRGF0YSk7XHJcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzcG9uc2UuaXNWYWxpZCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcodmFsaWRhdGlvblJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXggPSBpbmRleDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdlbmVyYXRlUXVlc3Rpb25BbnN3ZXJzKCkge1xyXG4gICAgdGhpcy5maWxlcyA9IFtdO1xyXG4gICAgY29uc3QgZXh0cmFjdFF1ZXN0aW9ucyA9IChcclxuICAgICAgZm9ybUVsZW1lbnRzOiBhbnlbXSxcclxuICAgICAgcGFyZW50Rm9ybUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcclxuICAgICAgaXNJblN1YkZvcm06IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgICAgc3ViRm9ybUluZGV4OiBudW1iZXIgPSAwXHJcbiAgICApOiB7IGFuc3dlcnM6IEFuc3dlcltdOyBmb3JtczogRm9ybVtdIH0gPT4geyAgICAgIFxyXG4gICAgICBjb25zdCBxdWVzdGlvbnM6IEFuc3dlcltdID0gW107XHJcbiAgICAgIGNvbnN0IGZvcm1zOiBGb3JtW10gPSBbXTtcclxuICAgICAgXHJcbiAgICAgIGZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJykge1xyXG4gICAgICAgICAgbGV0IGJhc2VRdWVzdGlvbjogYW55O1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0ZJTEVfUElDS0VSJykge1xyXG4gICAgICAgICAgICBiYXNlUXVlc3Rpb24gPSB7XHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25JZDogZWxlbWVudC5lbGVtZW50LmlkLFxyXG4gICAgICAgICAgICAgIGFuc3dlcjogJycsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIpKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25JZCA9IGlzSW5TdWJGb3JtXHJcbiAgICAgICAgICAgICAgICA/IGAke3BhcmVudEZvcm1JZH1fJHtzdWJGb3JtSW5kZXh9XyR7ZWxlbWVudC5lbGVtZW50LmlkfWBcclxuICAgICAgICAgICAgICAgIDogZWxlbWVudC5lbGVtZW50LmlkO1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiBxdWVzdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgZmlsZTogZWxlbWVudC5lbGVtZW50LmFuc3dlcixcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYmFzZVF1ZXN0aW9uID0ge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuZWxlbWVudC5pZCxcclxuICAgICAgICAgICAgICBhbnN3ZXI6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5lZGl0KSB7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAuLi5iYXNlUXVlc3Rpb24sXHJcbiAgICAgICAgICAgICAgYW5zd2VySWQ6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXJJZCB8fCAnJyxcclxuICAgICAgICAgICAgICBkZWxldGVGaWxlczogZWxlbWVudC5lbGVtZW50LmRlbGV0ZUZpbGVzIHx8IFtdLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKGJhc2VRdWVzdGlvbik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBsb2dpYyBvZiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcclxuICAgICAgICAgICAgICBpZiAobG9naWMuc2hvd0xvZ2ljKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCByb3cgb2YgbG9naWMucm93cyl7ICAgICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3RRdWVzdGlvbnMoXHJcbiAgICAgICAgICAgICAgICAgICAgcm93LmdyaWQsXHJcbiAgICAgICAgICAgICAgICAgICAgcGFyZW50Rm9ybUlkLFxyXG4gICAgICAgICAgICAgICAgICAgIGlzSW5TdWJGb3JtLFxyXG4gICAgICAgICAgICAgICAgICAgIHN1YkZvcm1JbmRleFxyXG4gICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgICBxdWVzdGlvbnMucHVzaCguLi5yZXN1bHQuYW5zd2Vycyk7XHJcbiAgICAgICAgICAgICAgICAgIGZvcm1zLnB1c2goLi4ucmVzdWx0LmZvcm1zKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgXHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSBlbHNlIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJykge1xyXG4gICAgICAgICAgY29uc3Qgc3ViZm9ybUlkID0gZWxlbWVudC5lbGVtZW50LmlkO1xyXG4gICAgICAgICAgY29uc3Qgc3VibWlzc2lvbklkID0gZWxlbWVudC5lbGVtZW50LnN1Ym1pc3Npb25JZDtcclxuXHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LnN1YkZvcm1TdHJ1Y3R1cmUgPT09ICdzaW5nbGUnKSB7XHJcbiAgICAgICAgICAgIGxldCBzdWJmb3JtUXVlc3Rpb25zOiBhbnkgPSB7IGFuc3dlcnM6IFtdIH07XHJcbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudC5yb3dzLmZvckVhY2goKHJvdzphbnkpPT57XHJcbiAgICAgICAgICAgICAgICBzdWJmb3JtUXVlc3Rpb25zPWV4dHJhY3RRdWVzdGlvbnMoXHJcbiAgICAgICAgICAgICAgICAgIHJvdy5ncmlkLFxyXG4gICAgICAgICAgICAgICAgICBzdWJmb3JtSWQsXHJcbiAgICAgICAgICAgICAgICAgIHRydWUsXHJcbiAgICAgICAgICAgICAgICAgIGZvcm1zLmxlbmd0aFxyXG4gICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgIH0pIFxyXG5cclxuICAgICAgICAgICAgY29uc3Qgc3ViZm9ybTogRm9ybSA9IHtcclxuICAgICAgICAgICAgICBmb3JtSWQ6IHN1YmZvcm1JZCxcclxuICAgICAgICAgICAgICBkZWxldGVkU3VibWlzc2lvbnM6IFtdLFxyXG4gICAgICAgICAgICAgIHN1Ym1pc3Npb25zOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb25JZDogc3VibWlzc2lvbklkLFxyXG4gICAgICAgICAgICAgICAgICBhbnN3ZXJzOiBzdWJmb3JtUXVlc3Rpb25zLmFuc3dlcnMsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGZvcm1zLnB1c2goc3ViZm9ybSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZWxlbWVudC5zdWJGb3JtU3RydWN0dXJlID09PSAnbXVsdGlwbGUnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YmZvcm1BbnN3ZXJzOiBBbnN3ZXJbXSA9IFtdO1xyXG4gICAgICAgICAgICBsZXQgc3ViZm9ybVF1ZXN0aW9uczogYW55ID0geyBhbnN3ZXJzOiBbXSB9O1xyXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQucm93cy5mb3JFYWNoKChyb3c6YW55KT0+eyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICBzdWJmb3JtUXVlc3Rpb25zPWV4dHJhY3RRdWVzdGlvbnMoXHJcbiAgICAgICAgICAgICAgICByb3cuZ3JpZCxcclxuICAgICAgICAgICAgICAgIHN1YmZvcm1JZCxcclxuICAgICAgICAgICAgICAgIHRydWUsXHJcbiAgICAgICAgICAgICAgICBmb3Jtcy5sZW5ndGhcclxuICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nU3ViZm9ybSA9IGZvcm1zLmZpbmQoXHJcbiAgICAgICAgICAgICAgKGZvcm0pID0+IGZvcm0uZm9ybUlkID09PSBzdWJmb3JtSWRcclxuICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50Py5zdWJtaXNzaW9ucz8uZm9yRWFjaChcclxuICAgICAgICAgICAgICAoc3VibWlzc2lvbjogYW55LCBpbmRleDogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgICAgICBzdWJtaXNzaW9uLmFuc3dlcnMuZm9yRWFjaCgoYW5zd2VyOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoYW5zd2VyLmZpbGVzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHF1ZXN0aW9uSWQgPSBgJHtzdWJmb3JtSWR9XyR7aW5kZXh9XyR7YW5zd2VyLnF1ZXN0aW9uSWR9YDtcclxuICAgICAgICAgICAgICAgICAgICB0aGlzLmZpbGVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgcXVlc3Rpb25JZDogcXVlc3Rpb25JZCxcclxuICAgICAgICAgICAgICAgICAgICAgIGZpbGU6IGFuc3dlci5maWxlcyxcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgICAgICBkZWxldGUgYW5zd2VyLmZpbGVzO1xyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgIGRlbGV0ZSBhbnN3ZXIuYXR0YWNobWVudHM7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICk7XHJcblxyXG4gICAgICAgICAgICBjb25zdCBzdWJmb3JtOiBGb3JtID0ge1xyXG4gICAgICAgICAgICAgIGZvcm1JZDogc3ViZm9ybUlkLFxyXG4gICAgICAgICAgICAgIGRlbGV0ZWRTdWJtaXNzaW9uczogZWxlbWVudC5lbGVtZW50LmRlbGV0ZWRTdWJtaXNzaW9ucyxcclxuICAgICAgICAgICAgICBzdWJtaXNzaW9uczogZWxlbWVudC5lbGVtZW50LnN1Ym1pc3Npb25zLFxyXG4gICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICBmb3Jtcy5wdXNoKHN1YmZvcm0pO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICAgIHJldHVybiB7IGFuc3dlcnM6IHF1ZXN0aW9ucywgZm9ybXM6IGZvcm1zIH07XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHByb2Nlc3NQYWdlcyA9IChcclxuICAgICAgcGFnZXM6IGFueVtdXHJcbiAgICApOiB7IGFuc3dlcnM6IEFuc3dlcltdOyBmb3JtczogRm9ybVtdIH0gPT4ge1xyXG4gICAgICBjb25zdCBxdWVzdGlvbnM6IEFuc3dlcltdID0gW107XHJcbiAgICAgIGNvbnN0IGZvcm1zOiBGb3JtW10gPSBbXTtcclxuXHJcbiAgICAgIHBhZ2VzLmZvckVhY2goKHBhZ2UpID0+IHtcclxuICAgICAgICBwYWdlLnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGV4dHJhY3RRdWVzdGlvbnMocm93LmdyaWQpO1xyXG4gICAgICAgICAgcXVlc3Rpb25zLnB1c2goLi4ucmVzdWx0LmFuc3dlcnMpO1xyXG4gICAgICAgICAgZm9ybXMucHVzaCguLi5yZXN1bHQuZm9ybXMpO1xyXG4gICAgICAgIH0pO1xyXG4gICAgICB9KTtcclxuXHJcbiAgICAgIHJldHVybiB7IGFuc3dlcnM6IHF1ZXN0aW9ucywgZm9ybXM6IGZvcm1zIH07XHJcbiAgICB9O1xyXG5cclxuICAgIGNvbnN0IHJlc3VsdCA9IHByb2Nlc3NQYWdlcyh0aGlzLnBhZ2VzKTtcclxuXHJcbiAgICB0aGlzLnF1ZXN0aW9uQW5zd2VycyA9IHtcclxuICAgICAgcGFyZW50SWQ6ICcnLFxyXG4gICAgICBhbnN3ZXJzOiByZXN1bHQuYW5zd2VycyxcclxuICAgICAgZm9ybXM6IHJlc3VsdC5mb3JtcyxcclxuICAgIH07XHJcbiAgfVxyXG5cclxuICBzdWJtaXRGb3JtKCkge1xyXG4gICAgaWYgKHRoaXMuc3VibWlzc2lvbkluUHJvZ3Jlc3MpIHtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuc3VibWlzc2lvbkluUHJvZ3Jlc3MgPSB0cnVlO1xyXG4gICAgbGV0IHZhbGlkYXRpb25SZXNwb25zZSA9IHRoaXMudmFsaWRhdGVGb3JtKHRoaXMucGFnZXMpO1xyXG4gICAgdGhpcy5nZW5lcmF0ZVF1ZXN0aW9uQW5zd2VycygpO1xyXG4gICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XHJcbiAgICAgIGNvbnN0IGZvcm1EYXRhID0gbmV3IEZvcm1EYXRhKCk7XHJcbiAgICAgIHRoaXMucXVlc3Rpb25BbnN3ZXJzLnBhcmVudElkID0gdGhpcy5wYXJlbnRTdWJtaXNzaW9uSWQ7XHJcbiAgICAgIGZvcm1EYXRhLmFwcGVuZCgnanNvbicsIEpTT04uc3RyaW5naWZ5KHRoaXMucXVlc3Rpb25BbnN3ZXJzKSk7XHJcbiAgICAgIGlmICh0aGlzLmZpbGVzLmxlbmd0aCA+IDApIHtcclxuICAgICAgICB0aGlzLmZpbGVzLmZvckVhY2goKGZpbGVJdGVtKSA9PiB7XHJcbiAgICAgICAgICBmaWxlSXRlbS5maWxlLmZvckVhY2goKGZpbGU6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICBmb3JtRGF0YS5hcHBlbmQoZmlsZUl0ZW0ucXVlc3Rpb25JZCwgZmlsZS5fZmlsZSk7XHJcbiAgICAgICAgICB9KTtcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgICBjb25zdCBmb3JtU2VydmljZUNhbGwgPSB0aGlzLmVkaXQgJiYgdGhpcy5zdWJtaXNzaW9uSWRcclxuICAgICAgICA/IHRoaXMuZm9ybVNlcnZpY2UudXBkYXRlRm9ybSh0aGlzLm1vZHVsZU5hbWUsIHRoaXMuc3VibWlzc2lvbklkLCBmb3JtRGF0YSwgdGhpcy5yZWNhcHRjaGFUb2tlbilcclxuICAgICAgICA6IHRoaXMuZm9ybVNlcnZpY2Uuc3VibWl0Rm9ybSh0aGlzLm1vZHVsZU5hbWUsIGZvcm1EYXRhLCB0aGlzLnJlY2FwdGNoYVRva2VuKTtcclxuXHJcbiAgICAgIGZvcm1TZXJ2aWNlQ2FsbC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuc3VjY2Vzcyh0aGlzLmVkaXQgPyAnRm9ybSB1cGRhdGVkIHN1Y2Nlc3NmdWxseScgOiAnRm9ybSBzdWJtaXR0ZWQgc3VjY2Vzc2Z1bGx5Jyk7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pdC5lbWl0KCdzdWNjZXNzJyk7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pc3Npb25JblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBlcnJvcjogKGVycm9yKSA9PiB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci5lcnJvcihlcnJvci5lcnJvci5tZXNzYWdlKTtcclxuICAgICAgICAgIHRoaXMuc3VibWlzc2lvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgICAgICAgIGlmICh0aGlzLmVuYWJsZUdvb2dsZVJlY2FwdGNoYSkge1xyXG4gICAgICAgICAgICB0aGlzLmdldFRva2VuKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9KTtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgIHRoaXMudG9hc3RyLmVycm9yKHZhbGlkYXRpb25SZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgdGhpcy5zdWJtaXNzaW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgdmFsaWRhdGVGb3JtKGpzb25EYXRhOiBhbnkpOiB7XHJcbiAgICBpc1ZhbGlkOiBib29sZWFuO1xyXG4gICAgbWVzc2FnZTogc3RyaW5nO1xyXG4gICAgcGFnZUluZGV4OiBudW1iZXIgfCAwO1xyXG4gIH0geyAgICBcclxuICAgIGNvbnN0IHZhbGlkYXRlUXVlc3Rpb25zID0gKFxyXG4gICAgICBmb3JtRWxlbWVudHM6IGFueVtdXHJcbiAgICApOiB7IGlzVmFsaWQ6IGJvb2xlYW47IG1lc3NhZ2U6IHN0cmluZzsgcGFnZUluZGV4OiBudW1iZXIgfCAwIH0gPT4geyAgICAgIFxyXG4gICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGZvcm1FbGVtZW50cykge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicpIHtcclxuICAgICAgICAgIGNvbnN0IHJlcXVpcmVkID0gZWxlbWVudC5lbGVtZW50LnJlcXVpcmVkO1xyXG4gICAgICAgICAgY29uc3QgYW5zd2VyID0gZWxlbWVudC5lbGVtZW50LmFuc3dlcjtcclxuICAgICAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBlbGVtZW50LmVsZW1lbnQudmFsaWRhdGlvbjtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdGSUxFX1BJQ0tFUicpIHtcclxuICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudCA9IGVsZW1lbnQuZWxlbWVudC5hdHRhY2htZW50cztcclxuICAgICAgICAgICAgaWYgKHJlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCghYW5zd2VyIHx8IGFuc3dlci5sZW5ndGggPT09IDApICYmIGF0dGFjaG1lbnQubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRm9ybSBpcyBpbnZhbGlkIC0gUmVxdWlyZWQgZmlsZSBxdWVzdGlvbiAke2VsZW1lbnQuZWxlbWVudC5xdWVzdGlvbk51bWJlcn0gaGFzIG5vIGZpbGVzIHVwbG9hZGVkLmAsXHJcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICBpZiAoIWFuc3dlciB8fCBPYmplY3Qua2V5cyhhbnN3ZXIpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBGb3JtIGlzIGludmFsaWQgLSBRdWVzdGlvbiAke2VsZW1lbnQuZWxlbWVudC5xdWVzdGlvbk51bWJlcn0gaXMgcmVxdWlyZWQgYnV0IG5vIGFuc3dlciBwcm92aWRlZC5gLFxyXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbGlkYXRpb24pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRm9ybSBpcyBpbnZhbGlkIC0gUXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGlzIHJlcXVpcmVkIGJ1dCB2YWxpZGF0aW9uIGlzIGZhbHNlLmAsXHJcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFyZXF1aXJlZCAmJiBhbnN3ZXIgJiYgT2JqZWN0LmtleXMoYW5zd2VyKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgcmVxdWlyZWQgYnV0IGFuc3dlciBwcm92aWRlZCB3aXRoIHZhbGlkYXRpb24gZmFsc2UuYCxcclxuICAgICAgICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgbG9naWMgb2YgZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMobG9naWMucm93cyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScpIHtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuc3ViRm9ybVN0cnVjdHVyZSA9PT0gXCJtdWx0aXBsZVwiKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBlbGVtZW50LmVsZW1lbnQucm93czsgICAgICAgICAgICBcclxuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRRdWVzdGlvbklkcyA9IGRhdGFcclxuICAgICAgICAgICAgICAuZmxhdE1hcCgocm93OiBhbnkpID0+IHJvdy5ncmlkKSAvLyBFeHRyYWN0aW5nIGdyaWQgaXRlbXMgZnJvbSBlYWNoIG9iamVjdFxyXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZWxlbWVudC5yZXF1aXJlZDsgLy8gRW5zdXJpbmcgdGhlIGZpbHRlciBwcm9wZXJseSBjaGVja3MgJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmVsZW1lbnQuaWQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlcXVpcmVkUXVlc3Rpb25JZHMubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudD8uZWxlbWVudD8uc3VibWlzc2lvbnM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFyZVJlcXVpcmVkUXVlc3Rpb25zQW5zd2VyZWQgPSByZXF1aXJlZFF1ZXN0aW9uSWRzLmV2ZXJ5KChyZXF1aXJlZElkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdBbnN3ZXIgPSBlbGVtZW50Py5lbGVtZW50Py5zdWJtaXNzaW9uc1xyXG4gICAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKChzdWI6IGFueSkgPT4gc3ViLmFuc3dlcnMpIFxyXG4gICAgICAgICAgICAgICAgICAgIC5maW5kKChhbnN3ZXI6IGFueSkgPT4gYW5zd2VyLnF1ZXN0aW9uSWQgPT09IHJlcXVpcmVkSWQpO1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4gbWF0Y2hpbmdBbnN3ZXIgJiYgbWF0Y2hpbmdBbnN3ZXIuYW5zd2VyLnRyaW0oKSAhPT0gXCJcIjtcclxuICAgICAgICAgICAgICAgIH0pOyAgICAgICAgICAgICAgICBcclxuICAgICAgICAgICAgICAgIGlmICghYXJlUmVxdWlyZWRRdWVzdGlvbnNBbnN3ZXJlZCkge1xyXG4gICAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IFwiRm9ybSBpcyBpbnZhbGlkIC0gUXVlc3Rpb24gaXMgcmVxdWlyZWQgYnV0IG5vIGFuc3dlciBwcm92aWRlZC5cIixcclxuICAgICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXHJcbiAgICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgICB9IGVsc2V7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIG1lc3NhZ2U6IFwiXCIsIHBhZ2VJbmRleDogMCB9O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogXCJGb3JtIGlzIGludmFsaWQgLSBObyBzdWJtaXNzaW9ucyBwcm92aWRlZCBmb3IgcmVxdWlyZWQgcXVlc3Rpb25zLlwiLFxyXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgbWVzc2FnZTogXCJcIiwgcGFnZUluZGV4OiAwIH07XHJcbiAgICAgICAgICAgIH1cclxuXHJcblxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5yb3dzKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMoZWxlbWVudC5lbGVtZW50LnJvd3MpO1xyXG4gICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH1cclxuICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgbWVzc2FnZTogJycsIHBhZ2VJbmRleDogMCB9O1xyXG4gICAgfTtcclxuXHJcbiAgICBmb3IgKGxldCBwYWdlSW5kZXggPSAwOyBwYWdlSW5kZXggPCBqc29uRGF0YS5sZW5ndGg7IHBhZ2VJbmRleCsrKSB7XHJcbiAgICAgIGNvbnN0IHBhZ2UgPSBqc29uRGF0YVtwYWdlSW5kZXhdO1xyXG4gICAgICBmb3IgKGxldCByb3cgb2YgcGFnZS5yb3dzKSB7ICAgICAgICBcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBQYWdlICR7cGFnZUluZGV4ICsgMX06ICR7cmVzdWx0Lm1lc3NhZ2V9YCxcclxuICAgICAgICAgICAgcGFnZUluZGV4OiBwYWdlSW5kZXgsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXNWYWxpZDogdHJ1ZSxcclxuICAgICAgbWVzc2FnZTogJ0Zvcm0gaXMgdmFsaWQuJyxcclxuICAgICAgcGFnZUluZGV4OiAwLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMocGFnZTogYW55KTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmcgfSB7XHJcbiAgICBjb25zdCB2YWxpZGF0ZVF1ZXN0aW9ucyA9IChcclxuICAgICAgZm9ybUVsZW1lbnRzOiBhbnlbXVxyXG4gICAgKTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmcgfSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZm9ybUVsZW1lbnRzKSB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJykge1xyXG4gICAgICAgICAgY29uc3QgcmVxdWlyZWQgPSBlbGVtZW50LmVsZW1lbnQucmVxdWlyZWQ7XHJcbiAgICAgICAgICBjb25zdCBhbnN3ZXIgPSBlbGVtZW50LmVsZW1lbnQuYW5zd2VyO1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0ZJTEVfUElDS0VSJykge1xyXG4gICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICBpZiAoIWFuc3dlciB8fCBhbnN3ZXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYFJlcXVpcmVkIGZpbGUgcXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGlzIG5vdCBhbnN3ZXJlZC5gLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZCkge1xyXG4gICAgICAgICAgICAgIGlmICghYW5zd2VyIHx8IE9iamVjdC5rZXlzKGFuc3dlcikubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYFJlcXVpcmVkIHF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgYW5zd2VyZWQuYCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGxvZ2ljIG9mIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xyXG4gICAgICAgICAgICAgIGlmIChsb2dpYy5zaG93TG9naWMpIHtcclxuICAgICAgICAgICAgICAgIGZvciggbGV0IHJvdyBvZiBsb2dpYy5yb3dzKXtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQpO1xyXG4gICAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScpIHtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQucm93cykge1xyXG4gICAgICAgICAgICBmb3IobGV0IHJvdyBvZiBlbGVtZW50LmVsZW1lbnQucm93cyl7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQpO1xyXG4gICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIG1lc3NhZ2U6ICdBbGwgcmVxdWlyZWQgcXVlc3Rpb25zIGFyZSBhbnN3ZXJlZC4nIH07XHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAobGV0IHJvdyBvZiBwYWdlLnJvd3MpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQpO1xyXG4gICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgbWVzc2FnZTogJ0FsbCByZXF1aXJlZCBxdWVzdGlvbnMgYXJlIGFuc3dlcmVkLicgfTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy51cGRhdGVTdWJGb3JtKHRoaXMucGFnZXMsIGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVN1YkZvcm0gPSAocGFnZXM6IGFueVtdLCB1cGRhdGVkU3ViRm9ybTogYW55KSA9PiB7ICAgIFxyXG4gICAgcGFnZXMuZm9yRWFjaCgocGFnZSkgPT4ge1xyXG4gICAgICBwYWdlLnJvd3MuZm9yRWFjaCgocm93OiBhbnkpID0+IHtcclxuICAgICAgICByb3cuZ3JpZC5mb3JFYWNoKChlbGVtZW50OiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmIChcclxuICAgICAgICAgICAgZWxlbWVudC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScgJiZcclxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50LmlkID09PSB1cGRhdGVkU3ViRm9ybS5mb3JtSWRcclxuICAgICAgICAgICkge1xyXG4gICAgICAgICAgICAvLyBVcGRhdGUgdGhlIGV4aXN0aW5nIHN1YmZvcm0gd2l0aCB0aGUgbmV3IGRhdGFcclxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50ID0gdXBkYXRlZFN1YkZvcm07XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICBlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJlxyXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQuaWQgIT09IHVwZGF0ZWRTdWJGb3JtLmZvcm1JZFxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIC8vIEhhbmRsZSBtdWx0aXBsZSBzdWJmb3JtcyBsb2dpYyBoZXJlIGlmIG5lZWRlZFxyXG4gICAgICAgICAgfSBlbHNlIGlmIChcclxuICAgICAgICAgICAgZWxlbWVudC5lbnRpdHlUeXBlID09PSAnUVVFU1RJT04nICYmXHJcbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljc1xyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIC8vIFJlY3Vyc2l2ZWx5IHVwZGF0ZSBjaGlsZCBsb2dpY3NcclxuICAgICAgICAgICAgLy8gZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzLmZvckVhY2goKGxvZ2ljOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgLy8gICBpZiAobG9naWMuc2hvd0xvZ2ljKSB7XHJcbiAgICAgICAgICAgIC8vICAgICB0aGlzLnVwZGF0ZVN1YkZvcm0obG9naWMucm93cywgdXBkYXRlZFN1YkZvcm0pO1xyXG4gICAgICAgICAgICAvLyAgIH1cclxuICAgICAgICAgICAgLy8gfSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH0pO1xyXG4gICAgfSk7XHJcbiAgfTtcclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwib3V0ZXItY29udGFpbmVyXCI+XHJcbiAgXHJcbiAgXHJcbiAgPGRpdiBjbGFzcz1cImhlYWQgY29udGFpbmVyXCI+XHJcbiAgICA8bGliLWhlYWRlciBbbmFtZV09XCJuYW1lXCI+PC9saWItaGVhZGVyPlxyXG4gIDwvZGl2PlxyXG4gIDxkaXYgY2xhc3M9XCJib2R5IGNvbnRhaW5lclwiPlxyXG4gICAgXHJcbiAgICA8bGliLXN1Ym1pc3Npb24tY29udGFpbmVyIFtwYXJlbnRRdWVzdGlvbkFuc3dlcnNdPVwicGFyZW50UXVlc3Rpb25BbnN3ZXJzXCJcclxuICAgICpuZ0lmPVwicGFyZW50UXVlc3Rpb25BbnN3ZXJzXCI+PC9saWItc3VibWlzc2lvbi1jb250YWluZXI+XHJcbiAgICBcclxuICAgIDxsaWItbmF2aWdhdGlvbi10YWJzXHJcbiAgICAgICpuZ0lmPVwibmF2aWdhdGlvbiA9PSAnVEFCJ1wiXHJcbiAgICAgIFtwYWdlc109XCJwYWdlc1wiXHJcbiAgICAgIFtjdXJyZW50UGFnZUluZGV4XT1cImN1cnJlbnRQYWdlSW5kZXhcIlxyXG4gICAgICAocGFnZUNoYW5nZWQpPVwic2V0Q3VycmVudFBhZ2UoJGV2ZW50KVwiXHJcbiAgICAgIChzdWJtaXRFbWl0KT1cInN1Ym1pdEZvcm0oKVwiXHJcbiAgICAgIFtlZGl0XT1cImVkaXRcIlxyXG4gICAgICBbYWNjZXB0ZWRMYW5ndWFnZV0gPSBcImFjY2VwdGVkTGFuZ3VhZ2VcIlxyXG4gICAgICAoc3ViRm9ybUNoYW5nZSk9XCJ1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCRldmVudClcIlxyXG4gICAgPjwvbGliLW5hdmlnYXRpb24tdGFicz5cclxuICAgIDxsaWItbmV4dC1wcmV2LW5hdmlnYXRpb25cclxuICAgICAgKm5nSWY9XCJuYXZpZ2F0aW9uID09ICdORVhUX0FORF9QUkVWSU9VU19CVVRUT04nXCJcclxuICAgICAgW2N1cnJlbnRQYWdlSW5kZXhdPVwiY3VycmVudFBhZ2VJbmRleFwiXHJcbiAgICAgIFtwYWdlc109XCJwYWdlc1wiXHJcbiAgICAgIFtwcmV2aW91c1BhZ2VdPVwicHJldmlvdXNQYWdlXCJcclxuICAgICAgW2N1cnJlbnRQYWdlXT1cImN1cnJlbnRQYWdlXCJcclxuICAgICAgW25leHRQYWdlXT1cIm5leHRQYWdlXCJcclxuICAgICAgKG5hdmlnYXRlTmV4dCk9XCJuYXZpZ2F0ZVRvTmV4dFBhZ2UoKVwiXHJcbiAgICAgIChuYXZpZ2F0ZVByZXZpb3VzKT1cIm5hdmlnYXRlVG9QcmV2aW91c1BhZ2UoKVwiXHJcbiAgICAgIFthY2NlcHRlZExhbmd1YWdlXSA9IFwiYWNjZXB0ZWRMYW5ndWFnZVwiXHJcbiAgICAgIChzdWJtaXRFbWl0KT1cInN1Ym1pdEZvcm0oKVwiXHJcbiAgICAgIFtlZGl0XT1cImVkaXRcIlxyXG4gICAgICAoc3ViRm9ybUNoYW5nZSk9XCJ1cGRhdGVTdWJGb3JtV2l0aFN1Ym1pc3Npb25zKCRldmVudClcIlxyXG4gICAgPjwvbGliLW5leHQtcHJldi1uYXZpZ2F0aW9uPlxyXG4gIDwvZGl2PlxyXG48L2Rpdj5cclxuIl19
|
|
616
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3VibWl0LWZvcm0uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZm9ybS1zdWJtaXNzaW9uL3NyYy9mb3JtLXN1Ym1pc3Npb24vc3VibWl0LWZvcm0vc3VibWl0LWZvcm0uY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFxQixNQUFNLEVBQWlCLE1BQU0sZUFBZSxDQUFDO0FBRXpHLE9BQU8sS0FBSyxNQUFNLE1BQU0sK0JBQStCLENBQUM7Ozs7Ozs7Ozs7OztBQW9DeEQsTUFBTSxPQUFPLG1CQUFtQjtJQXVDOUIsWUFDVSxXQUF3QixFQUN4QixNQUFxQixFQUNyQixNQUFjLEVBQ2QsV0FBd0IsRUFDeEIsZ0JBQWtDO1FBSmxDLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLFdBQU0sR0FBTixNQUFNLENBQWU7UUFDckIsV0FBTSxHQUFOLE1BQU0sQ0FBUTtRQUNkLGdCQUFXLEdBQVgsV0FBVyxDQUFhO1FBQ3hCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBa0I7UUEzQzVDLGFBQVEsR0FBc0IsSUFBSSxDQUFDO1FBQzFCLGVBQVUsR0FBVyxFQUFFLENBQUM7UUFDeEIsU0FBSSxHQUFZLEtBQUssQ0FBQztRQUN0QixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUMxQixxQkFBZ0IsR0FBVyxFQUFFLENBQUM7UUFDN0IsV0FBTSxHQUF5QixJQUFJLFlBQVksRUFBVSxDQUFDO1FBQzFELGNBQVMsR0FBMEIsSUFBSSxZQUFZLEVBQVcsQ0FBQztRQUV6RSxTQUFJLEdBQVcsRUFBRSxDQUFDO1FBQ2xCLHNCQUFpQixHQUFZLEtB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cEIsS0FBSztnQkFDRyxnQkFBZ0I7c0JBQXhCLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNO2dCQUNHLFNBQVM7c0JBQWxCLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDb21wb25lbnQsIEV2ZW50RW1pdHRlciwgSW5wdXQsIE9uRGVzdHJveSwgT25Jbml0LCBPdXRwdXQsIFNpbXBsZUNoYW5nZXMgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgRm9ybVNlcnZpY2UgfSBmcm9tICcuLi8uLi9zZXJ2aWNlcy9mb3JtLnNlcnZpY2UnO1xyXG5pbXBvcnQgKiBhcyBtYXBwZXIgZnJvbSAnLi4vLi4vc2VydmljZXMvbWFwcGVyLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBQdWJsaWNGb3JtIH0gZnJvbSAnLi4vLi4vbW9kZWxzL3B1YmxpY0Zvcm0ubW9kZWwnO1xyXG5pbXBvcnQgeyBUb2FzdHJTZXJ2aWNlIH0gZnJvbSAnbmd4LXRvYXN0cic7XHJcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XHJcbmltcG9ydCB7IERhdGFTZXJ2aWNlIH0gZnJvbSAnLi4vLi4vc2VydmljZXMvZGF0YS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUmVjYXB0Y2hhU2VydmljZSB9IGZyb20gJy4uLy4uL3NlcnZpY2VzL3JlY2FwdGNoYS5zZXJ2aWNlJztcclxuXHJcbmludGVyZmFjZSBBbnN3ZXIge1xyXG4gIHF1ZXN0aW9uSWQ6IHN0cmluZztcclxuICBhbnN3ZXI6IGFueTtcclxuICBhbnN3ZXJJZD86IHN0cmluZztcclxuICBkZWxldGVGaWxlcz86IHN0cmluZ1tdO1xyXG59XHJcblxyXG5pbnRlcmZhY2UgU3VibWlzc2lvbiB7XHJcbiAgc3VibWlzc2lvbklkOiBzdHJpbmc7XHJcbiAgYW5zd2VyczogQW5zd2VyW107XHJcbn1cclxuXHJcbmludGVyZmFjZSBGb3JtIHtcclxuICBmb3JtSWQ6IHN0cmluZztcclxuICBkZWxldGVkU3VibWlzc2lvbnM6IGFueVtdO1xyXG4gIHN1Ym1pc3Npb25zOiBTdWJtaXNzaW9uW107XHJcbn1cclxuXHJcbmludGVyZmFjZSBRdWVzdGlvbkFuc3dlcnNXcmFwcGVyIHtcclxuICBwYXJlbnRJZDogc3RyaW5nO1xyXG4gIGFuc3dlcnM6IEFuc3dlcltdO1xyXG4gIGZvcm1zOiBGb3JtW107XHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAnbGliLXN1Ym1pdC1mb3JtJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vc3VibWl0LWZvcm0uY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL3N1Ym1pdC1mb3JtLmNvbXBvbmVudC5zY3NzJ10sXHJcbn0pXHJcbmV4cG9ydCBjbGFzcyBTdWJtaXRGb3JtQ29tcG9uZW50IGltcGxlbWVudHMgT25Jbml0LCBPbkRlc3Ryb3kge1xyXG4gIHF1ZXN0aW9uOiBQdWJsaWNGb3JtIHwgbnVsbCA9IG51bGw7XHJcbiAgQElucHV0KCkgbW9kdWxlTmFtZTogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgZWRpdDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHN1Ym1pc3Npb25JZDogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgYWNjZXB0ZWRMYW5ndWFnZTogc3RyaW5nID0gJyc7XHJcbiAgQE91dHB1dCgpIHN1Ym1pdDogRXZlbnRFbWl0dGVyPHN0cmluZz4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZz4oKTtcclxuICBAT3V0cHV0KCkgYXBpQ2FsbGVkOiBFdmVudEVtaXR0ZXI8Ym9vbGVhbj4gPSBuZXcgRXZlbnRFbWl0dGVyPGJvb2xlYW4+KCk7XHJcblxyXG4gIG5hbWU6IHN0cmluZyA9ICcnO1xyXG4gIHNhdmVBdXRvbWF0aWNhbGx5OiBib29sZWFuID0gZmFsc2U7XHJcbiAgc2F2ZUludGVydmFsOiBudW1iZXIgPSAwO1xyXG4gIGN1c3RvbWl6ZUZvbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBmb250RmFtaWx5OiBzdHJpbmcgPSAnJztcclxuICBmb250U2l6ZTogbnVtYmVyID0gMDtcclxuICBlbmFibGVEYXRhRXhwb3J0OiBib29sZWFuID0gZmFsc2U7XHJcbiAgZmlsZUZvcm1hdHM6IHN0cmluZ1tdID0gW107XHJcbiAgZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmc6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBxdWVzdGlvbk51bWJlcmluZzogc3RyaW5nID0gJyc7XHJcbiAgZW5hYmxlR29vZ2xlUmVjYXB0Y2hhOiBib29sZWFuID0gZmFsc2U7XHJcbiAgZ29vZ2xlUmVjYXB0Y2hhS2V5OiBzdHJpbmcgPSAnJztcclxuICBnb29nbGVSZWNhcHRjaGFTZWNyZXQ6IHN0cmluZyA9ICcnO1xyXG4gIG5hdmlnYXRpb246IHN0cmluZyA9ICcnO1xyXG4gIG1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkOiBib29sZWFuID0gZmFsc2U7XHJcbiAgcGFnZXM6IGFueSA9IFtdO1xyXG4gIGN1cnJlbnRQYWdlSW5kZXg6IG51bWJlciA9IDA7XHJcbiAgcHJldmlvdXNQYWdlOiBhbnkgPSB7fTtcclxuICBjdXJyZW50UGFnZTogYW55ID0ge307XHJcbiAgbmV4dFBhZ2U6IGFueSA9IHt9O1xyXG4gIGxhc3RUYWI6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBxdWVzdGlvbkFuc3dlcnM6IFF1ZXN0aW9uQW5zd2Vyc1dyYXBwZXIgPSB7IHBhcmVudElkOiAnJywgYW5zd2VyczogW10sIGZvcm1zOiBbXSB9O1xyXG4gIGZpbGVzOiB7IHF1ZXN0aW9uSWQ6IHN0cmluZzsgZmlsZTogYW55IH1bXSA9IFtdO1xyXG4gIHBhcmVudFF1ZXN0aW9uczogYW55O1xyXG4gIHN1Ym1pc3Npb246IGFueSA9IHt9O1xyXG4gIHBhcmVudFF1ZXN0aW9uQW5zd2VyczogYW55O1xyXG4gIHBhcmVudFN1Ym1pc3Npb25JZDogc3RyaW5nID0gJyc7XHJcbiAgc3VibWlzc2lvbkluUHJvZ3Jlc3M6IGJvb2xlYW4gPSBmYWxzZTtcclxuICByZWNhcHRjaGFUb2tlbjogc3RyaW5nID0gJyc7XHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBmb3JtU2VydmljZTogRm9ybVNlcnZpY2UsXHJcbiAgICBwcml2YXRlIHRvYXN0cjogVG9hc3RyU2VydmljZSxcclxuICAgIHByaXZhdGUgcm91dGVyOiBSb3V0ZXIsXHJcbiAgICBwcml2YXRlIGRhdGFTZXJ2aWNlOiBEYXRhU2VydmljZSxcclxuICAgIHByaXZhdGUgcmVjYXB0Y2hhU2VydmljZTogUmVjYXB0Y2hhU2VydmljZVxyXG4gICkge1xyXG4gICAgY29uc3QgbmF2aWdhdGlvbiA9IHRoaXMucm91dGVyLmdldEN1cnJlbnROYXZpZ2F0aW9uKCk7XHJcbiAgICB0aGlzLnN1Ym1pc3Npb24gPSBuYXZpZ2F0aW9uPy5leHRyYXMuc3RhdGU/Llsnc3VibWlzc2lvbiddXHJcbiAgICB0aGlzLnBhcmVudFN1Ym1pc3Npb25JZCA9IHRoaXMuc3VibWlzc2lvbj8uaWQ7XHJcbiAgICB0aGlzLnBhcmVudFF1ZXN0aW9uQW5zd2VycyA9IHRoaXMuc3VibWlzc2lvbj8ucXVlc3Rpb25BbnN3ZXJzXHJcbiAgICB0aGlzLnBhcmVudFF1ZXN0aW9ucyA9IG5hdmlnYXRpb24/LmV4dHJhcy5zdGF0ZT8uWydwYXJlbnRRdWVzdGlvbnMnXTtcclxuICAgIHRoaXMuZGF0YVNlcnZpY2Uuc2V0UGFyZW50UXVlc3Rpb25zKHRoaXMucGFyZW50UXVlc3Rpb25zKTtcclxuICB9XHJcbiAgbmdPbkRlc3Ryb3koKTogdm9pZCB7XHJcbiAgICB0aGlzLnJlY2FwdGNoYVNlcnZpY2UucmVtb3ZlUmVjYXB0Y2hhU2NyaXB0KCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snYWNjZXB0ZWRMYW5ndWFnZSddKSB7XHJcbiAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IDA7XHJcbiAgICAgIHRoaXMuYWNjZXB0ZWRMYW5ndWFnZSA9IGNoYW5nZXNbJ2FjY2VwdGVkTGFuZ3VhZ2UnXS5jdXJyZW50VmFsdWU7XHJcbiAgICAgIHRoaXMuZ2V0Rm9ybURhdGEoKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgaWYgKHRoaXMuZWRpdCAmJiB0aGlzLnN1Ym1pc3Npb25JZCkge1xyXG4gICAgICB0aGlzLmdldFN1Ym1pdHRlZEZvcm1EYXRhKCk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAvLyB0aGlzLmdldEZvcm1EYXRhKCk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhKSB7XHJcbiAgICAgIHRoaXMuZ2V0VG9rZW4oKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGFzeW5jIGdldFRva2VuKCk6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgdHJ5IHtcclxuICAgICAgY29uc3QgdG9rZW4gPSBhd2FpdCB0aGlzLnJlY2FwdGNoYVNlcnZpY2UuZ2V0UmVjYXB0Y2hhVG9rZW4oKTtcclxuICAgICAgdGhpcy5yZWNhcHRjaGFUb2tlbiA9IHRva2VuO1xyXG4gICAgfSBjYXRjaCAoZXJyb3I6IGFueSkge1xyXG5cclxuXHJcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHdoaWxlIGdldHRpbmcgcmVDQVBUQ0hBIHRva2VuOicsIGVycm9yLmVycm9yLm1lc3NhZ2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgcHJpdmF0ZSBsb2FkRm9udChmb250VXJsOiBzdHJpbmcpIHtcclxuICAgIGNvbnN0IGxpbmsgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdsaW5rJyk7XHJcbiAgICBsaW5rLnJlbCA9ICdzdHlsZXNoZWV0JztcclxuICAgIGxpbmsuaHJlZiA9IGZvbnRVcmw7XHJcbiAgICBkb2N1bWVudC5oZWFkLmFwcGVuZENoaWxkKGxpbmspO1xyXG4gIH1cclxuXHJcbiAgZ2V0Rm9ybURhdGEoKSB7XHJcbiAgICB0aGlzLmZvcm1TZXJ2aWNlLmdldFF1ZXN0aW9ucyh0aGlzLm1vZHVsZU5hbWUpLnN1YnNjcmliZSgocmVzcG9uc2U6IGFueSkgPT4ge1xyXG4gICAgICB0aGlzLmVuYWJsZUdvb2dsZVJlY2FwdGNoYSA9IHJlc3BvbnNlLnJlc3VsdC5tb2R1bGVDb25maWd1cmF0aW9uPy5lbmFibGVHb29nbGVSZWNhcHRjaGE7XHJcbiAgICAgIHRoaXMucXVlc3Rpb24gPSBtYXBwZXIubWFwUHVibGljRm9ybVRvTW9kZWwocmVzcG9uc2UpO1xyXG4gICAgICB0aGlzLmFzc2lnblF1ZXN0aW9uUHJvcGVydGllcyh0aGlzLnF1ZXN0aW9uKTtcclxuXHJcbiAgICAgIC8vc2V0IGZvbnQgZmFtaWx5IGFuZCBmb250IHNpemVcclxuICAgICAgaWYgKHJlc3BvbnNlLnJlc3VsdC5tb2R1bGVDb25maWd1cmF0aW9uLmN1c3RvbWl6ZUZvbnQpIHtcclxuICAgICAgICB0aGlzLmZvbnRGYW1pbHkgPSByZXNwb25zZS5yZXN1bHQubW9kdWxlQ29uZmlndXJhdGlvbi5mb250RmFtaWx5XHJcbiAgICAgICAgdGhpcy5mb250U2l6ZSA9IHJlc3BvbnNlLnJlc3VsdC5tb2R1bGVDb25maWd1cmF0aW9uLmZvbnRTaXplXHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5mb250RmFtaWx5ID0gJ3BvcHBpbnMnO1xyXG4gICAgICAgIHRoaXMuZm9udFNpemUgPSAxODtcclxuICAgICAgfVxyXG4gICAgICBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQuc3R5bGUuc2V0UHJvcGVydHkoJy0tbGlicmFyeS1mb250LWZhbWlseScsIHRoaXMuZm9udEZhbWlseSk7XHJcbiAgICAgIGRvY3VtZW50LmRvY3VtZW50RWxlbWVudC5zdHlsZS5zZXRQcm9wZXJ0eSgnLS1saWJyYXJ5LWZvbnQtc2l6ZScsIHRoaXMuZm9udFNpemUgKyAncHgnKTtcclxuICAgICAgY29uc3QgZm9udFVybCA9IGBodHRwczovL2ZvbnRzLmdvb2dsZWFwaXMuY29tL2NzczI/ZmFtaWx5PSR7ZW5jb2RlVVJJQ29tcG9uZW50KHRoaXMuZm9udEZhbWlseSl9YDtcclxuICAgICAgdGhpcy5sb2FkRm9udChmb250VXJsKTtcclxuXHJcbiAgICAgIGlmICh0aGlzLmVuYWJsZUdvb2dsZVJlY2FwdGNoYSlcclxuICAgICAgICB0aGlzLmdldFRva2VuKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIGdldFN1Ym1pdHRlZEZvcm1EYXRhKCkge1xyXG4gICAgdGhpcy5mb3JtU2VydmljZVxyXG4gICAgICAuZ2V0U3VibWl0dGVkRm9ybSh0aGlzLm1vZHVsZU5hbWUsIHRoaXMuc3VibWlzc2lvbklkKVxyXG4gICAgICAuc3Vic2NyaWJlKChyZXNwb25zZSkgPT4ge1xyXG4gICAgICAgIHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhID0gcmVzcG9uc2UucmVzdWx0Lm1vZHVsZUNvbmZpZ3VyYXRpb24uZW5hYmxlR29vZ2xlUmVjYXB0Y2hhO1xyXG4gICAgICAgIHRoaXMucXVlc3Rpb24gPSBtYXBwZXIubWFwUHVibGljRm9ybVRvTW9kZWwocmVzcG9uc2UpO1xyXG4gICAgICAgIHRoaXMuYXNzaWduUXVlc3Rpb25Qcm9wZXJ0aWVzKHRoaXMucXVlc3Rpb24pO1xyXG4gICAgICAgIGlmICh0aGlzLmVuYWJsZUdvb2dsZVJlY2FwdGNoYSkge1xyXG4gICAgICAgICAgdGhpcy5nZXRUb2tlbigpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICBhc3NpZ25RdWVzdGlvblByb3BlcnRpZXMocXVlc3Rpb246IFB1YmxpY0Zvcm0pIHtcclxuICAgIHRoaXMubmFtZSA9IHF1ZXN0aW9uLm5hbWU7XHJcbiAgICB0aGlzLnBhZ2VzID0gcXVlc3Rpb24ucGFnZXM7XHJcbiAgICBpZiAodGhpcy5wYXJlbnRRdWVzdGlvbnMpIHtcclxuICAgICAgdGhpcy5wYXJlbnRRdWVzdGlvbkFuc3dlcnMgPSBxdWVzdGlvbj8ucXVlc3Rpb25BbnN3ZXJzO1xyXG4gICAgICB0aGlzLnBhcmVudFN1Ym1pc3Npb25JZCA9IHF1ZXN0aW9uPy5wYXJlbnRJZDtcclxuICAgIH1cclxuICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzWzBdO1xyXG4gICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZXNbMV07XHJcbiAgICB0aGlzLnNhdmVBdXRvbWF0aWNhbGx5ID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24uc2F2ZUF1dG9tYXRpY2FsbHk7XHJcbiAgICB0aGlzLnNhdmVJbnRlcnZhbCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLnNhdmVJbnRlcnZhbDtcclxuICAgIHRoaXMuY3VzdG9taXplRm9udCA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmN1c3RvbWl6ZUZvbnQ7XHJcbiAgICB0aGlzLmZvbnRGYW1pbHkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5mb250RmFtaWx5O1xyXG4gICAgdGhpcy5mb250U2l6ZSA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmZvbnRTaXplO1xyXG4gICAgdGhpcy5lbmFibGVEYXRhRXhwb3J0ID0gcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24uZW5hYmxlRGF0YUV4cG9ydDtcclxuICAgIHRoaXMuZmlsZUZvcm1hdHMgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5maWxlRm9ybWF0cztcclxuICAgIHRoaXMuZW5hYmxlUXVlc3Rpb25OdW1iZXJpbmcgPVxyXG4gICAgICBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5lbmFibGVRdWVzdGlvbk51bWJlcmluZztcclxuICAgIHRoaXMucXVlc3Rpb25OdW1iZXJpbmcgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5xdWVzdGlvbk51bWJlcmluZztcclxuICAgIHRoaXMuZW5hYmxlR29vZ2xlUmVjYXB0Y2hhID1cclxuICAgICAgcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24uZW5hYmxlR29vZ2xlUmVjYXB0Y2hhO1xyXG4gICAgdGhpcy5nb29nbGVSZWNhcHRjaGFLZXkgPSBxdWVzdGlvbi5mb3JtQ29uZmlndXJhdGlvbi5nb29nbGVSZWNhcHRjaGFLZXk7XHJcbiAgICB0aGlzLmdvb2dsZVJlY2FwdGNoYVNlY3JldCA9XHJcbiAgICAgIHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLmdvb2dsZVJlY2FwdGNoYVNlY3JldDtcclxuICAgIHRoaXMubmF2aWdhdGlvbiA9IHF1ZXN0aW9uLmZvcm1Db25maWd1cmF0aW9uLm5hdmlnYXRpb247XHJcbiAgICB0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkID1cclxuICAgICAgcXVlc3Rpb24uZm9ybUNvbmZpZ3VyYXRpb24ubWFya0FsbFF1ZXN0aW9uc0FzUmVxdWlyZWQ7XHJcbiAgICB0aGlzLmFwaUNhbGxlZC5lbWl0KHRydWUpXHJcbiAgfVxyXG5cclxuICBuYXZpZ2F0ZVRvTmV4dFBhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZUluZGV4IDwgdGhpcy5wYWdlcy5sZW5ndGggLSAxKSB7XHJcbiAgICAgIGlmICh0aGlzLm1hcmtBbGxRdWVzdGlvbnNBc1JlcXVpcmVkKSB7XHJcbiAgICAgICAgY29uc3QgY3VycmVudFBhZ2VEYXRhID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXhdO1xyXG4gICAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9XHJcbiAgICAgICAgICB0aGlzLnZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMoY3VycmVudFBhZ2VEYXRhKTtcclxuICAgICAgICBpZiAodmFsaWRhdGlvblJlc3BvbnNlLmlzVmFsaWQpIHtcclxuICAgICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCsrO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcclxuICAgICAgICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleCArIDFdO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICB0aGlzLnRvYXN0ci53YXJuaW5nKHZhbGlkYXRpb25SZXNwb25zZS5tZXNzYWdlKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCsrO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XHJcbiAgICAgICAgdGhpcy5uZXh0UGFnZSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4ICsgMV07XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIG5hdmlnYXRlVG9QcmV2aW91c1BhZ2UoKSB7XHJcbiAgICBpZiAodGhpcy5jdXJyZW50UGFnZUluZGV4ID4gMCkge1xyXG4gICAgICBpZiAodGhpcy5tYXJrQWxsUXVlc3Rpb25zQXNSZXF1aXJlZCkge1xyXG4gICAgICAgIGNvbnN0IGN1cnJlbnRQYWdlRGF0YSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcclxuICAgICAgICBjb25zdCB2YWxpZGF0aW9uUmVzcG9uc2UgPVxyXG4gICAgICAgICAgdGhpcy52YWxpZGF0ZVJlcXVpcmVkUXVlc3Rpb25zKGN1cnJlbnRQYWdlRGF0YSk7XHJcbiAgICAgICAgaWYgKHZhbGlkYXRpb25SZXNwb25zZS5pc1ZhbGlkKSB7XHJcbiAgICAgICAgICB0aGlzLm5leHRQYWdlID0gdGhpcy5jdXJyZW50UGFnZTtcclxuICAgICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleC0tO1xyXG4gICAgICAgICAgdGhpcy5jdXJyZW50UGFnZSA9IHRoaXMucGFnZXNbdGhpcy5jdXJyZW50UGFnZUluZGV4XTtcclxuICAgICAgICAgIHRoaXMucHJldmlvdXNQYWdlID0gdGhpcy5wYWdlc1t0aGlzLmN1cnJlbnRQYWdlSW5kZXggLSAxXTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIud2FybmluZyh2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMubmV4dFBhZ2UgPSB0aGlzLmN1cnJlbnRQYWdlO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleC0tO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XHJcbiAgICAgICAgdGhpcy5wcmV2aW91c1BhZ2UgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleCAtIDFdO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBzZXRDdXJyZW50UGFnZShpbmRleDogbnVtYmVyKSB7XHJcbiAgICBpZiAodGhpcy5tYXJrQWxsUXVlc3Rpb25zQXNSZXF1aXJlZCkge1xyXG4gICAgICBjb25zdCBjdXJyZW50UGFnZURhdGEgPSB0aGlzLnBhZ2VzW3RoaXMuY3VycmVudFBhZ2VJbmRleF07XHJcbiAgICAgIGNvbnN0IHZhbGlkYXRpb25SZXNwb25zZSA9XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVJlcXVpcmVkUXVlc3Rpb25zKGN1cnJlbnRQYWdlRGF0YSk7XHJcbiAgICAgIGlmICh2YWxpZGF0aW9uUmVzcG9uc2UuaXNWYWxpZCkge1xyXG4gICAgICAgIHRoaXMuY3VycmVudFBhZ2VJbmRleCA9IGluZGV4O1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMudG9hc3RyLndhcm5pbmcodmFsaWRhdGlvblJlc3BvbnNlLm1lc3NhZ2UpO1xyXG4gICAgICB9XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlSW5kZXggPSBpbmRleDtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGdlbmVyYXRlUXVlc3Rpb25BbnN3ZXJzKCkge1xyXG4gICAgdGhpcy5maWxlcyA9IFtdO1xyXG4gICAgY29uc3QgZXh0cmFjdFF1ZXN0aW9ucyA9IChcclxuICAgICAgZm9ybUVsZW1lbnRzOiBhbnlbXSxcclxuICAgICAgcGFyZW50Rm9ybUlkOiBzdHJpbmcgfCBudWxsID0gbnVsbCxcclxuICAgICAgaXNJblN1YkZvcm06IGJvb2xlYW4gPSBmYWxzZSxcclxuICAgICAgc3ViRm9ybUluZGV4OiBudW1iZXIgPSAwXHJcbiAgICApOiB7IGFuc3dlcnM6IEFuc3dlcltdOyBmb3JtczogRm9ybVtdIH0gPT4ge1xyXG4gICAgICBjb25zdCBxdWVzdGlvbnM6IEFuc3dlcltdID0gW107XHJcbiAgICAgIGNvbnN0IGZvcm1zOiBGb3JtW10gPSBbXTtcclxuXHJcbiAgICAgIGZvcm1FbGVtZW50cy5mb3JFYWNoKChlbGVtZW50KSA9PiB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJykge1xyXG4gICAgICAgICAgbGV0IGJhc2VRdWVzdGlvbjogYW55O1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0ZJTEVfUElDS0VSJykge1xyXG4gICAgICAgICAgICBiYXNlUXVlc3Rpb24gPSB7XHJcbiAgICAgICAgICAgICAgcXVlc3Rpb25JZDogZWxlbWVudC5lbGVtZW50LmlkLFxyXG4gICAgICAgICAgICAgIGFuc3dlcjogJycsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIpKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcXVlc3Rpb25JZCA9IGlzSW5TdWJGb3JtXHJcbiAgICAgICAgICAgICAgICA/IGAke3BhcmVudEZvcm1JZH1fJHtzdWJGb3JtSW5kZXh9XyR7ZWxlbWVudC5lbGVtZW50LmlkfWBcclxuICAgICAgICAgICAgICAgIDogZWxlbWVudC5lbGVtZW50LmlkO1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsZXMucHVzaCh7XHJcbiAgICAgICAgICAgICAgICBxdWVzdGlvbklkOiBxdWVzdGlvbklkLFxyXG4gICAgICAgICAgICAgICAgZmlsZTogZWxlbWVudC5lbGVtZW50LmFuc3dlcixcclxuICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgYmFzZVF1ZXN0aW9uID0ge1xyXG4gICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IGVsZW1lbnQuZWxlbWVudC5pZCxcclxuICAgICAgICAgICAgICBhbnN3ZXI6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXIsXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAodGhpcy5lZGl0KSB7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKHtcclxuICAgICAgICAgICAgICAuLi5iYXNlUXVlc3Rpb24sXHJcbiAgICAgICAgICAgICAgYW5zd2VySWQ6IGVsZW1lbnQuZWxlbWVudC5hbnN3ZXJJZCB8fCAnJyxcclxuICAgICAgICAgICAgICBkZWxldGVGaWxlczogZWxlbWVudC5lbGVtZW50LmRlbGV0ZUZpbGVzIHx8IFtdLFxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKGJhc2VRdWVzdGlvbik7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xyXG4gICAgICAgICAgICBmb3IgKGxldCBsb2dpYyBvZiBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcclxuICAgICAgICAgICAgICBpZiAobG9naWMuc2hvd0xvZ2ljKSB7XHJcbiAgICAgICAgICAgICAgICBmb3IgKGxldCByb3cgb2YgbG9naWMucm93cykge1xyXG4gICAgICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSBleHRyYWN0UXVlc3Rpb25zKFxyXG4gICAgICAgICAgICAgICAgICAgIHJvdy5ncmlkLFxyXG4gICAgICAgICAgICAgICAgICAgIHBhcmVudEZvcm1JZCxcclxuICAgICAgICAgICAgICAgICAgICBpc0luU3ViRm9ybSxcclxuICAgICAgICAgICAgICAgICAgICBzdWJGb3JtSW5kZXhcclxuICAgICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgICAgICAgcXVlc3Rpb25zLnB1c2goLi4ucmVzdWx0LmFuc3dlcnMpO1xyXG4gICAgICAgICAgICAgICAgICBmb3Jtcy5wdXNoKC4uLnJlc3VsdC5mb3Jtcyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScpIHtcclxuICAgICAgICAgIGNvbnN0IHN1YmZvcm1JZCA9IGVsZW1lbnQuZWxlbWVudC5pZDtcclxuICAgICAgICAgIGNvbnN0IHN1Ym1pc3Npb25JZCA9IGVsZW1lbnQuZWxlbWVudC5zdWJtaXNzaW9uSWQ7XHJcblxyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5zdWJGb3JtU3RydWN0dXJlID09PSAnc2luZ2xlJykge1xyXG4gICAgICAgICAgICBsZXQgc3ViZm9ybVF1ZXN0aW9uczogYW55ID0geyBhbnN3ZXJzOiBbXSB9O1xyXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQucm93cy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHN1YmZvcm1RdWVzdGlvbnMgPSBleHRyYWN0UXVlc3Rpb25zKFxyXG4gICAgICAgICAgICAgICAgcm93LmdyaWQsXHJcbiAgICAgICAgICAgICAgICBzdWJmb3JtSWQsXHJcbiAgICAgICAgICAgICAgICB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZm9ybXMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9KVxyXG5cclxuICAgICAgICAgICAgY29uc3Qgc3ViZm9ybTogRm9ybSA9IHtcclxuICAgICAgICAgICAgICBmb3JtSWQ6IHN1YmZvcm1JZCxcclxuICAgICAgICAgICAgICBkZWxldGVkU3VibWlzc2lvbnM6IFtdLFxyXG4gICAgICAgICAgICAgIHN1Ym1pc3Npb25zOiBbXHJcbiAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgIHN1Ym1pc3Npb25JZDogc3VibWlzc2lvbklkLFxyXG4gICAgICAgICAgICAgICAgICBhbnN3ZXJzOiBzdWJmb3JtUXVlc3Rpb25zLmFuc3dlcnMsXHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIF0sXHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgIGZvcm1zLnB1c2goc3ViZm9ybSk7XHJcbiAgICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZWxlbWVudC5zdWJGb3JtU3RydWN0dXJlID09PSAnbXVsdGlwbGUnKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHN1YmZvcm1BbnN3ZXJzOiBBbnN3ZXJbXSA9IFtdO1xyXG4gICAgICAgICAgICBsZXQgc3ViZm9ybVF1ZXN0aW9uczogYW55ID0geyBhbnN3ZXJzOiBbXSB9O1xyXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQucm93cy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgIHN1YmZvcm1RdWVzdGlvbnMgPSBleHRyYWN0UXVlc3Rpb25zKFxyXG4gICAgICAgICAgICAgICAgcm93LmdyaWQsXHJcbiAgICAgICAgICAgICAgICBzdWJmb3JtSWQsXHJcbiAgICAgICAgICAgICAgICB0cnVlLFxyXG4gICAgICAgICAgICAgICAgZm9ybXMubGVuZ3RoXHJcbiAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICBjb25zdCBleGlzdGluZ1N1YmZvcm0gPSBmb3Jtcy5maW5kKFxyXG4gICAgICAgICAgICAgIChmb3JtKSA9PiBmb3JtLmZvcm1JZCA9PT0gc3ViZm9ybUlkXHJcbiAgICAgICAgICAgICk7XHJcbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudD8uc3VibWlzc2lvbnM/LmZvckVhY2goXHJcbiAgICAgICAgICAgICAgKHN1Ym1pc3Npb246IGFueSwgaW5kZXg6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICAgICAgc3VibWlzc2lvbi5hbnN3ZXJzLmZvckVhY2goKGFuc3dlcjogYW55KSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KGFuc3dlci5maWxlcykpIHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBxdWVzdGlvbklkID0gYCR7c3ViZm9ybUlkfV8ke2luZGV4fV8ke2Fuc3dlci5xdWVzdGlvbklkfWA7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5maWxlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgICAgICAgIHF1ZXN0aW9uSWQ6IHF1ZXN0aW9uSWQsXHJcbiAgICAgICAgICAgICAgICAgICAgICBmaWxlOiBhbnN3ZXIuZmlsZXMsXHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgZGVsZXRlIGFuc3dlci5maWxlcztcclxuICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICBkZWxldGUgYW5zd2VyLmF0dGFjaG1lbnRzO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICApO1xyXG5cclxuICAgICAgICAgICAgY29uc3Qgc3ViZm9ybTogRm9ybSA9IHtcclxuICAgICAgICAgICAgICBmb3JtSWQ6IHN1YmZvcm1JZCxcclxuICAgICAgICAgICAgICBkZWxldGVkU3VibWlzc2lvbnM6IGVsZW1lbnQuZWxlbWVudC5kZWxldGVkU3VibWlzc2lvbnMsXHJcbiAgICAgICAgICAgICAgc3VibWlzc2lvbnM6IGVsZW1lbnQuZWxlbWVudC5zdWJtaXNzaW9ucyxcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgZm9ybXMucHVzaChzdWJmb3JtKTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgIH0pO1xyXG4gICAgICByZXR1cm4geyBhbnN3ZXJzOiBxdWVzdGlvbnMsIGZvcm1zOiBmb3JtcyB9O1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCBwcm9jZXNzUGFnZXMgPSAoXHJcbiAgICAgIHBhZ2VzOiBhbnlbXVxyXG4gICAgKTogeyBhbnN3ZXJzOiBBbnN3ZXJbXTsgZm9ybXM6IEZvcm1bXSB9ID0+IHtcclxuICAgICAgY29uc3QgcXVlc3Rpb25zOiBBbnN3ZXJbXSA9IFtdO1xyXG4gICAgICBjb25zdCBmb3JtczogRm9ybVtdID0gW107XHJcblxyXG4gICAgICBwYWdlcy5mb3JFYWNoKChwYWdlKSA9PiB7XHJcbiAgICAgICAgcGFnZS5yb3dzLmZvckVhY2goKHJvdzogYW55KSA9PiB7XHJcbiAgICAgICAgICBjb25zdCByZXN1bHQgPSBleHRyYWN0UXVlc3Rpb25zKHJvdy5ncmlkKTtcclxuICAgICAgICAgIHF1ZXN0aW9ucy5wdXNoKC4uLnJlc3VsdC5hbnN3ZXJzKTtcclxuICAgICAgICAgIGZvcm1zLnB1c2goLi4ucmVzdWx0LmZvcm1zKTtcclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgICByZXR1cm4geyBhbnN3ZXJzOiBxdWVzdGlvbnMsIGZvcm1zOiBmb3JtcyB9O1xyXG4gICAgfTtcclxuXHJcbiAgICBjb25zdCByZXN1bHQgPSBwcm9jZXNzUGFnZXModGhpcy5wYWdlcyk7XHJcblxyXG4gICAgdGhpcy5xdWVzdGlvbkFuc3dlcnMgPSB7XHJcbiAgICAgIHBhcmVudElkOiAnJyxcclxuICAgICAgYW5zd2VyczogcmVzdWx0LmFuc3dlcnMsXHJcbiAgICAgIGZvcm1zOiByZXN1bHQuZm9ybXMsXHJcbiAgICB9O1xyXG4gIH1cclxuXHJcbiAgc3VibWl0Rm9ybSgpIHtcclxuICAgIGlmICh0aGlzLnN1Ym1pc3Npb25JblByb2dyZXNzKSB7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB0aGlzLnN1Ym1pc3Npb25JblByb2dyZXNzID0gdHJ1ZTtcclxuICAgIGxldCB2YWxpZGF0aW9uUmVzcG9uc2UgPSB0aGlzLnZhbGlkYXRlRm9ybSh0aGlzLnBhZ2VzKTtcclxuICAgIHRoaXMuZ2VuZXJhdGVRdWVzdGlvbkFuc3dlcnMoKTtcclxuICAgIGlmICh2YWxpZGF0aW9uUmVzcG9uc2UuaXNWYWxpZCkge1xyXG4gICAgICBjb25zdCBmb3JtRGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xyXG4gICAgICB0aGlzLnF1ZXN0aW9uQW5zd2Vycy5wYXJlbnRJZCA9IHRoaXMucGFyZW50U3VibWlzc2lvbklkO1xyXG4gICAgICBmb3JtRGF0YS5hcHBlbmQoJ2pzb24nLCBKU09OLnN0cmluZ2lmeSh0aGlzLnF1ZXN0aW9uQW5zd2VycykpO1xyXG4gICAgICBpZiAodGhpcy5maWxlcy5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgdGhpcy5maWxlcy5mb3JFYWNoKChmaWxlSXRlbSkgPT4ge1xyXG4gICAgICAgICAgZmlsZUl0ZW0uZmlsZS5mb3JFYWNoKChmaWxlOiBhbnkpID0+IHtcclxuICAgICAgICAgICAgZm9ybURhdGEuYXBwZW5kKGZpbGVJdGVtLnF1ZXN0aW9uSWQsIGZpbGUuX2ZpbGUpO1xyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgICAgY29uc3QgZm9ybVNlcnZpY2VDYWxsID0gdGhpcy5lZGl0ICYmIHRoaXMuc3VibWlzc2lvbklkXHJcbiAgICAgICAgPyB0aGlzLmZvcm1TZXJ2aWNlLnVwZGF0ZUZvcm0odGhpcy5tb2R1bGVOYW1lLCB0aGlzLnN1Ym1pc3Npb25JZCwgZm9ybURhdGEsIHRoaXMucmVjYXB0Y2hhVG9rZW4pXHJcbiAgICAgICAgOiB0aGlzLmZvcm1TZXJ2aWNlLnN1Ym1pdEZvcm0odGhpcy5tb2R1bGVOYW1lLCBmb3JtRGF0YSwgdGhpcy5yZWNhcHRjaGFUb2tlbik7XHJcblxyXG4gICAgICBmb3JtU2VydmljZUNhbGwuc3Vic2NyaWJlKHtcclxuICAgICAgICBuZXh0OiAocmVzcG9uc2UpID0+IHtcclxuICAgICAgICAgIHRoaXMudG9hc3RyLnN1Y2Nlc3ModGhpcy5lZGl0ID8gJ0Zvcm0gdXBkYXRlZCBzdWNjZXNzZnVsbHknIDogJ0Zvcm0gc3VibWl0dGVkIHN1Y2Nlc3NmdWxseScpO1xyXG4gICAgICAgICAgdGhpcy5zdWJtaXQuZW1pdCgnc3VjY2VzcycpO1xyXG4gICAgICAgICAgdGhpcy5zdWJtaXNzaW9uSW5Qcm9ncmVzcyA9IGZhbHNlO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZXJyb3I6IChlcnJvcikgPT4ge1xyXG4gICAgICAgICAgdGhpcy50b2FzdHIuZXJyb3IoZXJyb3IuZXJyb3IubWVzc2FnZSk7XHJcbiAgICAgICAgICB0aGlzLnN1Ym1pc3Npb25JblByb2dyZXNzID0gZmFsc2U7XHJcbiAgICAgICAgICBpZiAodGhpcy5lbmFibGVHb29nbGVSZWNhcHRjaGEpIHtcclxuICAgICAgICAgICAgdGhpcy5nZXRUb2tlbigpO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLnRvYXN0ci5lcnJvcih2YWxpZGF0aW9uUmVzcG9uc2UubWVzc2FnZSk7XHJcbiAgICAgIHRoaXMuc3VibWlzc2lvbkluUHJvZ3Jlc3MgPSBmYWxzZTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHZhbGlkYXRlRm9ybShqc29uRGF0YTogYW55KToge1xyXG4gICAgaXNWYWxpZDogYm9vbGVhbjtcclxuICAgIG1lc3NhZ2U6IHN0cmluZztcclxuICAgIHBhZ2VJbmRleDogbnVtYmVyIHwgMDtcclxuICB9IHtcclxuICAgIGNvbnN0IHZhbGlkYXRlUXVlc3Rpb25zID0gKFxyXG4gICAgICBmb3JtRWxlbWVudHM6IGFueVtdXHJcbiAgICApOiB7IGlzVmFsaWQ6IGJvb2xlYW47IG1lc3NhZ2U6IHN0cmluZzsgcGFnZUluZGV4OiBudW1iZXIgfCAwIH0gPT4ge1xyXG4gICAgICBmb3IgKGxldCBlbGVtZW50IG9mIGZvcm1FbGVtZW50cykge1xyXG4gICAgICAgIGlmIChlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicpIHtcclxuICAgICAgICAgIGNvbnN0IHJlcXVpcmVkID0gZWxlbWVudC5lbGVtZW50LnJlcXVpcmVkO1xyXG4gICAgICAgICAgY29uc3QgYW5zd2VyID0gZWxlbWVudC5lbGVtZW50LmFuc3dlcjtcclxuICAgICAgICAgIGNvbnN0IHZhbGlkYXRpb24gPSBlbGVtZW50LmVsZW1lbnQudmFsaWRhdGlvbjtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuZm9ybUVsZW1lbnQuZWxlbWVudFR5cGUgPT09ICdGSUxFX1BJQ0tFUicpIHtcclxuICAgICAgICAgICAgY29uc3QgYXR0YWNobWVudCA9IGVsZW1lbnQuZWxlbWVudC5hdHRhY2htZW50cztcclxuICAgICAgICAgICAgaWYgKHJlcXVpcmVkKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCghYW5zd2VyIHx8IGFuc3dlci5sZW5ndGggPT09IDApICYmIGF0dGFjaG1lbnQubGVuZ3RoID09IDApIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRm9ybSBpcyBpbnZhbGlkIC0gUmVxdWlyZWQgZmlsZSBxdWVzdGlvbiAke2VsZW1lbnQuZWxlbWVudC5xdWVzdGlvbk51bWJlcn0gaGFzIG5vIGZpbGVzIHVwbG9hZGVkLmAsXHJcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICBpZiAoIWFuc3dlciB8fCBPYmplY3Qua2V5cyhhbnN3ZXIpLmxlbmd0aCA9PT0gMCkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXHJcbiAgICAgICAgICAgICAgICAgIG1lc3NhZ2U6IGBGb3JtIGlzIGludmFsaWQgLSBRdWVzdGlvbiAke2VsZW1lbnQuZWxlbWVudC5xdWVzdGlvbk51bWJlcn0gaXMgcmVxdWlyZWQgYnV0IG5vIGFuc3dlciBwcm92aWRlZC5gLFxyXG4gICAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IDAsXHJcbiAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoIXZhbGlkYXRpb24pIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBgRm9ybSBpcyBpbnZhbGlkIC0gUXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGlzIHJlcXVpcmVkIGJ1dCB2YWxpZGF0aW9uIGlzIGZhbHNlLmAsXHJcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCFyZXF1aXJlZCAmJiBhbnN3ZXIgJiYgT2JqZWN0LmtleXMoYW5zd2VyKS5sZW5ndGggPiAwKSB7XHJcbiAgICAgICAgICAgICAgaWYgKCF2YWxpZGF0aW9uKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYEZvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgcmVxdWlyZWQgYnV0IGFuc3dlciBwcm92aWRlZCB3aXRoIHZhbGlkYXRpb24gZmFsc2UuYCxcclxuICAgICAgICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgbG9naWMgb2YgZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XHJcbiAgICAgICAgICAgICAgaWYgKGxvZ2ljLnNob3dMb2dpYykge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMobG9naWMucm93cyk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSByZXR1cm4gcmVzdWx0O1xyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoZWxlbWVudC5lbnRpdHlUeXBlID09PSAnU1VCRk9STScpIHtcclxuICAgICAgICAgIGlmIChlbGVtZW50LmVsZW1lbnQuc3ViRm9ybVN0cnVjdHVyZSA9PT0gXCJtdWx0aXBsZVwiKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IGRhdGEgPSBlbGVtZW50LmVsZW1lbnQucm93cztcclxuICAgICAgICAgICAgY29uc3QgcmVxdWlyZWRRdWVzdGlvbklkcyA9IGRhdGFcclxuICAgICAgICAgICAgICAuZmxhdE1hcCgocm93OiBhbnkpID0+IHJvdy5ncmlkKSAvLyBFeHRyYWN0aW5nIGdyaWQgaXRlbXMgZnJvbSBlYWNoIG9iamVjdFxyXG4gICAgICAgICAgICAgIC5maWx0ZXIoKGl0ZW06IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGl0ZW0uZWxlbWVudC5yZXF1aXJlZDsgLy8gRW5zdXJpbmcgdGhlIGZpbHRlciBwcm9wZXJseSBjaGVja3MgJ3JlcXVpcmVkJ1xyXG4gICAgICAgICAgICAgIH0pXHJcbiAgICAgICAgICAgICAgLm1hcCgoaXRlbTogYW55KSA9PiBpdGVtLmVsZW1lbnQuaWQpO1xyXG5cclxuICAgICAgICAgICAgaWYgKHJlcXVpcmVkUXVlc3Rpb25JZHMubGVuZ3RoID4gMCkge1xyXG5cclxuICAgICAgICAgICAgICBpZiAoZWxlbWVudD8uZWxlbWVudD8uc3VibWlzc2lvbnM/Lmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGFyZVJlcXVpcmVkUXVlc3Rpb25zQW5zd2VyZWQgPSByZXF1aXJlZFF1ZXN0aW9uSWRzLmV2ZXJ5KChyZXF1aXJlZElkOiBzdHJpbmcpID0+IHtcclxuICAgICAgICAgICAgICAgICAgY29uc3QgbWF0Y2hpbmdBbnN3ZXIgPSBlbGVtZW50Py5lbGVtZW50Py5zdWJtaXNzaW9uc1xyXG4gICAgICAgICAgICAgICAgICAgIC5mbGF0TWFwKChzdWI6IGFueSkgPT4gc3ViLmFuc3dlcnMpXHJcbiAgICAgICAgICAgICAgICAgICAgLmZpbmQoKGFuc3dlcjogYW55KSA9PiBhbnN3ZXIucXVlc3Rpb25JZCA9PT0gcmVxdWlyZWRJZCk7XHJcbiAgICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaGluZ0Fuc3dlciAmJiBtYXRjaGluZ0Fuc3dlci5hbnN3ZXIudHJpbSgpICE9PSBcIlwiO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIWFyZVJlcXVpcmVkUXVlc3Rpb25zQW5zd2VyZWQpIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkZvcm0gaXMgaW52YWxpZCAtIFF1ZXN0aW9uIGlzIHJlcXVpcmVkIGJ1dCBubyBhbnN3ZXIgcHJvdmlkZWQuXCIsXHJcbiAgICAgICAgICAgICAgICAgICAgcGFnZUluZGV4OiAwLFxyXG4gICAgICAgICAgICAgICAgICB9O1xyXG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgbWVzc2FnZTogXCJcIiwgcGFnZUluZGV4OiAwIH07XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHJldHVybiB7XHJcbiAgICAgICAgICAgICAgICAgIGlzVmFsaWQ6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICBtZXNzYWdlOiBcIkZvcm0gaXMgaW52YWxpZCAtIE5vIHN1Ym1pc3Npb25zIHByb3ZpZGVkIGZvciByZXF1aXJlZCBxdWVzdGlvbnMuXCIsXHJcbiAgICAgICAgICAgICAgICAgIHBhZ2VJbmRleDogMCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiBcIlwiLCBwYWdlSW5kZXg6IDAgfTtcclxuICAgICAgICAgICAgfVxyXG5cclxuXHJcbiAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LnJvd3MpIHtcclxuICAgICAgICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhlbGVtZW50LmVsZW1lbnQucm93cyk7XHJcbiAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICByZXR1cm4geyBpc1ZhbGlkOiB0cnVlLCBtZXNzYWdlOiAnJywgcGFnZUluZGV4OiAwIH07XHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAobGV0IHBhZ2VJbmRleCA9IDA7IHBhZ2VJbmRleCA8IGpzb25EYXRhLmxlbmd0aDsgcGFnZUluZGV4KyspIHtcclxuICAgICAgY29uc3QgcGFnZSA9IGpzb25EYXRhW3BhZ2VJbmRleF07XHJcbiAgICAgIGZvciAobGV0IHJvdyBvZiBwYWdlLnJvd3MpIHtcclxuICAgICAgICBjb25zdCByZXN1bHQgPSB2YWxpZGF0ZVF1ZXN0aW9ucyhyb3cuZ3JpZCk7XHJcbiAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkge1xyXG4gICAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgaXNWYWxpZDogZmFsc2UsXHJcbiAgICAgICAgICAgIG1lc3NhZ2U6IGBQYWdlICR7cGFnZUluZGV4ICsgMX06ICR7cmVzdWx0Lm1lc3NhZ2V9YCxcclxuICAgICAgICAgICAgcGFnZUluZGV4OiBwYWdlSW5kZXgsXHJcbiAgICAgICAgICB9O1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgaXNWYWxpZDogdHJ1ZSxcclxuICAgICAgbWVzc2FnZTogJ0Zvcm0gaXMgdmFsaWQuJyxcclxuICAgICAgcGFnZUluZGV4OiAwLFxyXG4gICAgfTtcclxuICB9XHJcblxyXG4gIHZhbGlkYXRlUmVxdWlyZWRRdWVzdGlvbnMocGFnZTogYW55KTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmcgfSB7XHJcbiAgICBjb25zdCB2YWxpZGF0ZVF1ZXN0aW9ucyA9IChcclxuICAgICAgZm9ybUVsZW1lbnRzOiBhbnlbXVxyXG4gICAgKTogeyBpc1ZhbGlkOiBib29sZWFuOyBtZXNzYWdlOiBzdHJpbmcgfSA9PiB7XHJcbiAgICAgIGZvciAobGV0IGVsZW1lbnQgb2YgZm9ybUVsZW1lbnRzKSB7XHJcbiAgICAgICAgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1FVRVNUSU9OJykge1xyXG4gICAgICAgICAgY29uc3QgcmVxdWlyZWQgPSBlbGVtZW50LmVsZW1lbnQucmVxdWlyZWQ7XHJcbiAgICAgICAgICBjb25zdCBhbnN3ZXIgPSBlbGVtZW50LmVsZW1lbnQuYW5zd2VyO1xyXG4gICAgICAgICAgaWYgKGVsZW1lbnQuZWxlbWVudC5mb3JtRWxlbWVudC5lbGVtZW50VHlwZSA9PT0gJ0ZJTEVfUElDS0VSJykge1xyXG4gICAgICAgICAgICBpZiAocmVxdWlyZWQpIHtcclxuICAgICAgICAgICAgICBpZiAoIWFuc3dlciB8fCBhbnN3ZXIubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYFJlcXVpcmVkIGZpbGUgcXVlc3Rpb24gJHtlbGVtZW50LmVsZW1lbnQucXVlc3Rpb25OdW1iZXJ9IGlzIG5vdCBhbnN3ZXJlZC5gLFxyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIGlmIChyZXF1aXJlZCkge1xyXG4gICAgICAgICAgICAgIGlmICghYW5zd2VyIHx8IE9iamVjdC5rZXlzKGFuc3dlcikubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICAgICAgICBpc1ZhbGlkOiBmYWxzZSxcclxuICAgICAgICAgICAgICAgICAgbWVzc2FnZTogYFJlcXVpcmVkIHF1ZXN0aW9uICR7ZWxlbWVudC5lbGVtZW50LnF1ZXN0aW9uTnVtYmVyfSBpcyBub3QgYW5zd2VyZWQuYCxcclxuICAgICAgICAgICAgICAgIH07XHJcbiAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzKSB7XHJcbiAgICAgICAgICAgIGZvciAobGV0IGxvZ2ljIG9mIGVsZW1lbnQuZWxlbWVudC5jaGlsZExvZ2ljcykge1xyXG4gICAgICAgICAgICAgIGlmIChsb2dpYy5zaG93TG9naWMpIHtcclxuICAgICAgICAgICAgICAgIGZvciAobGV0IHJvdyBvZiBsb2dpYy5yb3dzKSB7XHJcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IHZhbGlkYXRlUXVlc3Rpb25zKHJvdy5ncmlkKTtcclxuICAgICAgICAgICAgICAgICAgaWYgKCFyZXN1bHQuaXNWYWxpZCkgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIH1cclxuICAgICAgICB9IGVsc2UgaWYgKGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nKSB7XHJcbiAgICAgICAgICBpZiAoZWxlbWVudC5lbGVtZW50LnJvd3MpIHtcclxuICAgICAgICAgICAgZm9yIChsZXQgcm93IG9mIGVsZW1lbnQuZWxlbWVudC5yb3dzKSB7XHJcbiAgICAgICAgICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQpO1xyXG4gICAgICAgICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQpIHJldHVybiByZXN1bHQ7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIHJldHVybiB7IGlzVmFsaWQ6IHRydWUsIG1lc3NhZ2U6ICdBbGwgcmVxdWlyZWQgcXVlc3Rpb25zIGFyZSBhbnN3ZXJlZC4nIH07XHJcbiAgICB9O1xyXG5cclxuICAgIGZvciAobGV0IHJvdyBvZiBwYWdlLnJvd3MpIHtcclxuICAgICAgY29uc3QgcmVzdWx0ID0gdmFsaWRhdGVRdWVzdGlvbnMocm93LmdyaWQpO1xyXG4gICAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHsgaXNWYWxpZDogdHJ1ZSwgbWVzc2FnZTogJ0FsbCByZXF1aXJlZCBxdWVzdGlvbnMgYXJlIGFuc3dlcmVkLicgfTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy51cGRhdGVTdWJGb3JtKHRoaXMucGFnZXMsIGV2ZW50KTtcclxuICB9XHJcblxyXG4gIHVwZGF0ZVN1YkZvcm0gPSAocGFnZXM6IGFueVtdLCB1cGRhdGVkU3ViRm9ybTogYW55KSA9PiB7XHJcbiAgICBwYWdlcy5mb3JFYWNoKChwYWdlKSA9PiB7XHJcbiAgICAgIHBhZ2Uucm93cy5mb3JFYWNoKChyb3c6IGFueSkgPT4ge1xyXG4gICAgICAgIHJvdy5ncmlkLmZvckVhY2goKGVsZW1lbnQ6IGFueSkgPT4ge1xyXG4gICAgICAgICAgaWYgKFxyXG4gICAgICAgICAgICBlbGVtZW50LmVudGl0eVR5cGUgPT09ICdTVUJGT1JNJyAmJlxyXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQuaWQgPT09IHVwZGF0ZWRTdWJGb3JtLmZvcm1JZFxyXG4gICAgICAgICAgKSB7XHJcbiAgICAgICAgICAgIC8vIFVwZGF0ZSB0aGUgZXhpc3Rpbmcgc3ViZm9ybSB3aXRoIHRoZSBuZXcgZGF0YVxyXG4gICAgICAgICAgICBlbGVtZW50LmVsZW1lbnQgPSB1cGRhdGVkU3ViRm9ybTtcclxuICAgICAgICAgIH0gZWxzZSBpZiAoXHJcbiAgICAgICAgICAgIGVsZW1lbnQuZW50aXR5VHlwZSA9PT0gJ1NVQkZPUk0nICYmXHJcbiAgICAgICAgICAgIGVsZW1lbnQuZWxlbWVudC5pZCAhPT0gdXBkYXRlZFN1YkZvcm0uZm9ybUlkXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgLy8gSGFuZGxlIG11bHRpcGxlIHN1YmZvcm1zIGxvZ2ljIGhlcmUgaWYgbmVlZGVkXHJcbiAgICAgICAgICB9IGVsc2UgaWYgKFxyXG4gICAgICAgICAgICBlbGVtZW50LmVudGl0eVR5cGUgPT09ICdRVUVTVElPTicgJiZcclxuICAgICAgICAgICAgZWxlbWVudC5lbGVtZW50LmNoaWxkTG9naWNzXHJcbiAgICAgICAgICApIHtcclxuICAgICAgICAgICAgLy8gUmVjdXJzaXZlbHkgdXBkYXRlIGNoaWxkIGxvZ2ljc1xyXG4gICAgICAgICAgICAvLyBlbGVtZW50LmVsZW1lbnQuY2hpbGRMb2dpY3MuZm9yRWFjaCgobG9naWM6IGFueSkgPT4ge1xyXG4gICAgICAgICAgICAvLyAgIGlmIChsb2dpYy5zaG93TG9naWMpIHtcclxuICAgICAgICAgICAgLy8gICAgIHRoaXMudXBkYXRlU3ViRm9ybShsb2dpYy5yb3dzLCB1cGRhdGVkU3ViRm9ybSk7XHJcbiAgICAgICAgICAgIC8vICAgfVxyXG4gICAgICAgICAgICAvLyB9KTtcclxuICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgICAgfSk7XHJcbiAgICB9KTtcclxuICB9O1xyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJvdXRlci1jb250YWluZXJcIj5cclxuICBcclxuICBcclxuICA8ZGl2IGNsYXNzPVwiaGVhZCBjb250YWluZXJcIj5cclxuICAgIDxsaWItaGVhZGVyIFtuYW1lXT1cIm5hbWVcIj48L2xpYi1oZWFkZXI+XHJcbiAgPC9kaXY+XHJcbiAgPGRpdiBjbGFzcz1cImJvZHkgY29udGFpbmVyXCI+XHJcbiAgICBcclxuICAgIDxsaWItc3VibWlzc2lvbi1jb250YWluZXIgW3BhcmVudFF1ZXN0aW9uQW5zd2Vyc109XCJwYXJlbnRRdWVzdGlvbkFuc3dlcnNcIlxyXG4gICAgKm5nSWY9XCJwYXJlbnRRdWVzdGlvbkFuc3dlcnNcIj48L2xpYi1zdWJtaXNzaW9uLWNvbnRhaW5lcj5cclxuICAgIFxyXG4gICAgPGxpYi1uYXZpZ2F0aW9uLXRhYnNcclxuICAgICAgKm5nSWY9XCJuYXZpZ2F0aW9uID09ICdUQUInXCJcclxuICAgICAgW3BhZ2VzXT1cInBhZ2VzXCJcclxuICAgICAgW2N1cnJlbnRQYWdlSW5kZXhdPVwiY3VycmVudFBhZ2VJbmRleFwiXHJcbiAgICAgIChwYWdlQ2hhbmdlZCk9XCJzZXRDdXJyZW50UGFnZSgkZXZlbnQpXCJcclxuICAgICAgKHN1Ym1pdEVtaXQpPVwic3VibWl0Rm9ybSgpXCJcclxuICAgICAgW2VkaXRdPVwiZWRpdFwiXHJcbiAgICAgIFthY2NlcHRlZExhbmd1YWdlXSA9IFwiYWNjZXB0ZWRMYW5ndWFnZVwiXHJcbiAgICAgIChzdWJGb3JtQ2hhbmdlKT1cInVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoJGV2ZW50KVwiXHJcbiAgICA+PC9saWItbmF2aWdhdGlvbi10YWJzPlxyXG4gICAgPGxpYi1uZXh0LXByZXYtbmF2aWdhdGlvblxyXG4gICAgICAqbmdJZj1cIm5hdmlnYXRpb24gPT0gJ05FWFRfQU5EX1BSRVZJT1VTX0JVVFRPTidcIlxyXG4gICAgICBbY3VycmVudFBhZ2VJbmRleF09XCJjdXJyZW50UGFnZUluZGV4XCJcclxuICAgICAgW3BhZ2VzXT1cInBhZ2VzXCJcclxuICAgICAgW3ByZXZpb3VzUGFnZV09XCJwcmV2aW91c1BhZ2VcIlxyXG4gICAgICBbY3VycmVudFBhZ2VdPVwiY3VycmVudFBhZ2VcIlxyXG4gICAgICBbbmV4dFBhZ2VdPVwibmV4dFBhZ2VcIlxyXG4gICAgICAobmF2aWdhdGVOZXh0KT1cIm5hdmlnYXRlVG9OZXh0UGFnZSgpXCJcclxuICAgICAgKG5hdmlnYXRlUHJldmlvdXMpPVwibmF2aWdhdGVUb1ByZXZpb3VzUGFnZSgpXCJcclxuICAgICAgW2FjY2VwdGVkTGFuZ3VhZ2VdID0gXCJhY2NlcHRlZExhbmd1YWdlXCJcclxuICAgICAgKHN1Ym1pdEVtaXQpPVwic3VibWl0Rm9ybSgpXCJcclxuICAgICAgW2VkaXRdPVwiZWRpdFwiXHJcbiAgICAgIChzdWJGb3JtQ2hhbmdlKT1cInVwZGF0ZVN1YkZvcm1XaXRoU3VibWlzc2lvbnMoJGV2ZW50KVwiXHJcbiAgICA+PC9saWItbmV4dC1wcmV2LW5hdmlnYXRpb24+XHJcbiAgPC9kaXY+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -3988,11 +3988,17 @@ class SubmitFormComponent {
|
|
|
3988
3988
|
this.question = mapPublicFormToModel(response);
|
|
3989
3989
|
this.assignQuestionProperties(this.question);
|
|
3990
3990
|
//set font family and font size
|
|
3991
|
-
|
|
3992
|
-
|
|
3993
|
-
|
|
3994
|
-
|
|
3995
|
-
|
|
3991
|
+
if (response.result.moduleConfiguration.customizeFont) {
|
|
3992
|
+
this.fontFamily = response.result.moduleConfiguration.fontFamily;
|
|
3993
|
+
this.fontSize = response.result.moduleConfiguration.fontSize;
|
|
3994
|
+
}
|
|
3995
|
+
else {
|
|
3996
|
+
this.fontFamily = 'poppins';
|
|
3997
|
+
this.fontSize = 18;
|
|
3998
|
+
}
|
|
3999
|
+
document.documentElement.style.setProperty('--library-font-family', this.fontFamily);
|
|
4000
|
+
document.documentElement.style.setProperty('--library-font-size', this.fontSize + 'px');
|
|
4001
|
+
const fontUrl = `https://fonts.googleapis.com/css2?family=${encodeURIComponent(this.fontFamily)}`;
|
|
3996
4002
|
this.loadFont(fontUrl);
|
|
3997
4003
|
if (this.enableGoogleRecaptcha)
|
|
3998
4004
|
this.getToken();
|