@arsedizioni/ars-utils 18.1.90 → 18.1.92
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.
- package/esm2022/clipper.ui/ui/browser-dialog/browser-dialog.component.mjs +3 -3
- package/esm2022/clipper.ui/ui/search-result-manager/search-result-manager.mjs +3 -3
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs +4 -4
- package/fesm2022/arsedizioni-ars-utils-clipper.ui.mjs.map +1 -1
- package/package.json +7 -7
|
@@ -526,7 +526,7 @@ export class ClipperBrowserDialogComponent extends ClipperSearchResultManager {
|
|
|
526
526
|
*/
|
|
527
527
|
fetch(newSearch = false) {
|
|
528
528
|
this.dialogService.busy('Ricerca in corso...');
|
|
529
|
-
this.filterParams.count =
|
|
529
|
+
this.filterParams.count = 15;
|
|
530
530
|
if (newSearch) {
|
|
531
531
|
this.filterParams.first = 0;
|
|
532
532
|
if (this.filterParams.text)
|
|
@@ -686,7 +686,7 @@ export class ClipperBrowserDialogComponent extends ClipperSearchResultManager {
|
|
|
686
686
|
r.model = this.filterParams.model;
|
|
687
687
|
this.filterParams = r;
|
|
688
688
|
this.filterParams.first = 0;
|
|
689
|
-
this.filterParams.count =
|
|
689
|
+
this.filterParams.count = 15;
|
|
690
690
|
if (this.filterParams.sector === this.snapshot.facets.sector)
|
|
691
691
|
this.filterParams.sector = null;
|
|
692
692
|
// Reset paginator
|
|
@@ -750,4 +750,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.3", ngImpor
|
|
|
750
750
|
type: ViewChild,
|
|
751
751
|
args: ['filterPane']
|
|
752
752
|
}] } });
|
|
753
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvYnJvd3Nlci1kaWFsb2cvYnJvd3Nlci1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvYnJvd3Nlci1kaWFsb2cvYnJvd3Nlci1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsK0NBQStDLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1B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LGtCQUFrQix3Z0JBQ2xCLGNBQWMsMFdBQ2QsV0FBVyw4bUNBQ1gsaUJBQWlCLDhXQUNqQixhQUFhLDAxQkFDYixnQkFBZ0Isb0lBQ2hCLDRCQUE0QixzTUFDNUIsZ0JBQWdCLHdHQUNoQixnQkFBZ0IsMGRBQ2hCLG9CQUFvQiwrQkFDcEIsNEJBQTRCLHdGQUM1QixPQUFPLG9GQUNQLGdDQUFnQyxrR0FDaEMsa0JBQWtCOzsyRkFHVCw2QkFBNkI7a0JBakN6QyxTQUFTOzJCQUNGLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxhQUdqQzt3QkFDVCwrQ0FBK0M7cUJBQ2hELG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLDRCQUE0Qjt3QkFDNUIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsNEJBQTRCO3dCQUM1QixPQUFPO3dCQUNQLGdDQUFnQzt3QkFDaEMsa0JBQWtCO3FCQUNuQjs4QkFLd0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNQVRfREFURVBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWV9QUk9WSURFUiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xyXG5pbXBvcnQgeyBNYXREcmF3ZXIsIE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7XHJcbiAgQ2xpcHBlckF1dGhvcnMsXHJcbiAgQ2xpcHBlckRvY3VtZW50Q2hhbmdlUmVhc29uLFxyXG4gIENsaXBwZXJNZXNzYWdlcyxcclxuICBDbGlwcGVyTW9kZWwsXHJcbiAgQ2xpcHBlck1vZGVscyxcclxuICBDbGlwcGVyU2VhcmNoRmFjZXRzU25hcHNob3QsXHJcbiAgQ2xpcHBlclNlYXJjaFJlc3VsdCxcclxuICBDbGlwcGVyU2VhcmNoVXRpbHMsXHJcbiAgQ2xpcHBlclNlY3RvclR5cGVzLFxyXG4gIENsaXBwZXJTZWN0b3JzLFxyXG4gIENsaXBwZXJTZWxlY3Rpb25Nb2RlLFxyXG4gIENsaXBwZXJTb3J0LFxyXG4gIENsaXBwZXJTb3VyY2VzXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jbGlwcGVyLmNvbW1vbic7XHJcbmltcG9ydCB7IFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRXh0ZW5kZWRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZXh0ZW5kZWQnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudHNVdGlscyB9IGZyb20gJy4uLy4uL2RvY3VtZW50cyc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudE1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9kb2N1bWVudC1tZW51L2RvY3VtZW50LW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlclNlYXJjaERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1kaWFsb2cvc2VhcmNoLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbGlwcGVyU2VhcmNoRmFjZXRzQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWZhY2V0cy9zZWFyY2gtZmFjZXRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJTZWFyY2hGcmVlVGV4dEhlbHBDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtZnJlZS10ZXh0LWhlbHAvc2VhcmNoLWZyZWUtdGV4dC1oZWxwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJTZWFyY2hGcmVlVGV4dFF1ZXJ5QnVpbGRlckNvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1mcmVlLXRleHQtcXVlcnktYnVpbGRlci9zZWFyY2gtZnJlZS10ZXh0LXF1ZXJ5LWJ1aWxkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlclNlYXJjaFJlc3VsdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtcmVzdWx0LWl0ZW0vc2VhcmNoLXJlc3VsdC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJTZWFyY2hSZXN1bHRNYW5hZ2VyIH0gZnJvbSAnLi4vc2VhcmNoLXJlc3VsdC1tYW5hZ2VyL3NlYXJjaC1yZXN1bHQtbWFuYWdlcic7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDbGlwcGVyQnJvd3NlckRpYWxvZ0RhdGEge1xyXG4gIHNlbGVjdGlvbk1vZGU/OiBDbGlwcGVyU2VsZWN0aW9uTW9kZSB8IG51bGwsXHJcbiAgc2VsZWN0YWJsZU1vZGVscz86IG51bWJlcltdIHwgbnVsbCxcclxuICBpbml0aWFsTW9kZWw/OiBudW1iZXIgfCBudWxsXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9icm93c2VyLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnJvd3Nlci1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIE1BVF9EQVRFUElDS0VSX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZsZXhNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdEJhZGdlTW9kdWxlLFxyXG4gICAgTWF0VGFic01vZHVsZSxcclxuICAgIEV4dGVuZGVkTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIE1hdERpdmlkZXJNb2R1bGUsXHJcbiAgICBDbGlwcGVyRG9jdW1lbnRNZW51Q29tcG9uZW50LFxyXG4gICAgTWF0RGlhbG9nQ29udGVudCxcclxuICAgIE1hdFNpZGVuYXZNb2R1bGUsXHJcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgQ2xpcHBlclNlYXJjaFJlc3VsdEl0ZW1Db21wb25lbnQsXHJcbiAgICBNYXRQYWdpbmF0b3JNb2R1bGVcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpcHBlckJyb3dzZXJEaWFsb2dDb21wb25lbnRcclxuICBleHRlbmRzIENsaXBwZXJTZWFyY2hSZXN1bHRNYW5hZ2VyXHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnZmlsdGVyUGFuZScpIGZpbHRlclBhbmUhOiBNYXREcmF3ZXI7XHJcblxyXG4gIHByaXZhdGUgaGVpZ2h0OiBudW1iZXIgPSAtMTtcclxuICBwcml2YXRlIGRpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWY8Q2xpcHBlckJyb3dzZXJEaWFsb2dDb21wb25lbnQ+KTtcclxuICBwcm90ZWN0ZWQgZGlhbG9nRGF0YTogQ2xpcHBlckJyb3dzZXJEaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7XHJcbiAgcHJvdGVjdGVkIHRpdGxlOiBzdHJpbmcgPSAnUmljZXJjYSBpbiBDbGlwcGVyJztcclxuICBwcm90ZWN0ZWQgc25hcHNob3Q6IENsaXBwZXJTZWFyY2hSZXN1bHQgPSB7XHJcbiAgICBzZWFyY2hJbmZvOiBudWxsLFxyXG4gICAgc2VhcmNoUGFyYW1zOiB7XHJcbiAgICAgIGZpcnN0OiAwLFxyXG4gICAgICBjb3VudDogMjVcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgcHJvdGVjdGVkIGN1cnJlbnRNb2RlbDogc3RyaW5nID0gJ1R1dHRvJztcclxuICBwcm90ZWN0ZWQgY3VycmVudFNvcnQ6IHN0cmluZyA9ICdSaWxldmFuemEnO1xyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBVc2Ugc2VydmljZSBzbmFwc2hvdFxyXG4gICAgdGhpcy5zbmFwc2hvdCA9IHRoaXMuY2xpcHBlclNlcnZpY2Uuc25hcHNob3Q7XHJcbiAgICBpZiAoIXRoaXMuc25hcHNob3QpXHJcbiAgICAgIHRoaXMuc25hcHNob3QgPSB7XHJcbiAgICAgICAgc2VhcmNoSW5mbzogbnVsbCxcclxuICAgICAgICBzZWFyY2hQYXJhbXM6IG51bGwsXHJcbiAgICAgIH07XHJcbiAgICBpZiAodGhpcy5maWx0ZXJQYXJhbXMgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcyA9IHtcclxuICAgICAgICBmaXJzdDogMCxcclxuICAgICAgICBjb3VudDogMTUsXHJcbiAgICAgIH07XHJcbiAgICAgIC8vIFN0b3JlIHNuYXBzaG90XHJcbiAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2Uuc25hcHNob3QgPSB0aGlzLnNuYXBzaG90O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBtb2RlbFxyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5pbml0aWFsTW9kZWwpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VNb2RlbCh0aGlzLmRpYWxvZ0RhdGEuaW5pdGlhbE1vZGVsLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmdldE1lc3NhZ2UoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfU0VMRUNURURfSU5ORVIpIHtcclxuICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfU0VMRUNURUQsIG1lc3NhZ2UuZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gUmVhY3QgdG8gd2luZG93IHNpemUgY2hhbmdlXHJcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpLCBkZWJvdW5jZVRpbWUoNTAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZS52aXNpYmxlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnZpc2libGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gSGFuZGxlIGZpbHRlciBwYW5lIFxyXG4gICAgICB0aGlzLmhhbmRsZUZpbHRlclBhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgIC8vIEhhbmRsZSBmYWNldHNcclxuICAgICAgaWYgKHRoaXMuZmFjZXRzKSB7XHJcbiAgICAgICAgdGhpcy5mYWNldHMuY2hhbmdlZFxyXG4gICAgICAgICAgLnN1YnNjcmliZSgodmFsdWU6IENsaXBwZXJTZWFyY2hGYWNldHNTbmFwc2hvdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cyA9IHZhbHVlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zbmFwc2hvdC5mYWNldHMuZnJvbURhdGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5mcm9tRGF0ZSA9IHRoaXMuc25hcHNob3QuZmFjZXRzLmZyb21EYXRlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnRvRGF0ZSA9IHRoaXMuc25hcHNob3QuZmFjZXRzLnRvRGF0ZTtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy55ZWFyID0gdGhpcy5zbmFwc2hvdC5mYWNldHMuZnJvbURhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNuYXBzaG90LmZhY2V0cy5jaGFuZ2VkSW50ZXJ2YWwpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy55ZWFyID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5mcm9tRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMudG9EYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5zbmFwc2hvdC5mYWNldHMuc2VjdG9yIHx8IHRoaXMuc25hcHNob3QuZmFjZXRzLmNoYW5nZWRTZWN0b3IpXHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9yID0gdGhpcy5zbmFwc2hvdC5mYWNldHMuc2VjdG9yO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zbmFwc2hvdC5mYWNldHMudHlwZSB8fCB0aGlzLnNuYXBzaG90LmZhY2V0cy5jaGFuZ2VkVHlwZSlcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy50eXBlID0gdGhpcy5zbmFwc2hvdC5mYWNldHMudHlwZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc25hcHNob3QuZmFjZXRzLmF1dGhvciB8fCB0aGlzLnNuYXBzaG90LmZhY2V0cy5jaGFuZ2VkQXV0aG9yKVxyXG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLmF1dGhvciA9IHRoaXMuc25hcHNob3QuZmFjZXRzLmF1dGhvcjtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaCh0cnVlKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBSZXNpemUgXHJcbiAqL1xyXG4gIHByaXZhdGUgcmVzaXplKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItYnJvd3Nlci1zY3JvbGxhYmxlJyk7XHJcbiAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldEN1cnJlbnREaWFsb2dTY3JvbGxhYmxlSGVpZ2h0KFxyXG4gICAgICAgICAgWydjbGlwcGVyLWJyb3dzZXItZml4ZWQnXSxcclxuICAgICAgICAgIHdpbmRvdy5pbm5lckhlaWdodFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGhlaWdodCAhPSB0aGlzLmhlaWdodCkge1xyXG4gICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2hlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQ7bWF4LWhlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQnKTtcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuKiBTaG93IGhpZGUgZmlsdGVyIHBhbmUgbWFudWFsbHlcclxuKi9cclxuICBwcm90ZWN0ZWQgdG9nZ2xlRmlsdGVyUGFuZSgpIHtcclxuICAgIHRoaXMuZmlsdGVyUGFuZUNsb3NlZCA9ICF0aGlzLmZpbHRlclBhbmVDbG9zZWQ7XHJcbiAgICB0aGlzLmZpbHRlclBhbmU/LnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBmaWx0ZXIgcGFuZSB2aXNpYmlsaXR5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVGaWx0ZXJQYW5lVmlzaWJpbGl0eSgpIHtcclxuICAgIGlmICh0aGlzLmZpbHRlclBhbmUpIHtcclxuICAgICAgaWYgKHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5YU21hbGwpIHx8XHJcbiAgICAgICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLlNtYWxsKSB8fFxyXG4gICAgICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5NZWRpdW0pKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyUGFuZS5vcGVuZWQpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyUGFuZS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpbHRlclBhbmUubW9kZSA9ICdvdmVyJztcclxuICAgICAgICB0aGlzLmZpbHRlclBhbmUuZGlzYWJsZUNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYW5lSGFzQmFja2Ryb3AgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5maWx0ZXJQYW5lLm9wZW5lZCAmJiAhdGhpcy5maWx0ZXJQYW5lQ2xvc2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlclBhbmUub3BlbigpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWx0ZXJQYW5lLm9wZW5lZCAmJiB0aGlzLmZpbHRlclBhbmVDbG9zZWQpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyUGFuZS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpbHRlclBhbmUubW9kZSA9ICdzaWRlJztcclxuICAgICAgICB0aGlzLmZpbHRlclBhbmUuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmZpbHRlclBhbmVIYXNCYWNrZHJvcCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGRvY3VtZW50cyBjYW4gYmUgc2VsZWN0ZWQgYW5kIHJldHVybmVkIGFzIG1lc3NhZ2VcclxuICAgKi9cclxuICBjYW5TZWxlY3QoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgYWxsb3cgPVxyXG4gICAgICB0aGlzLnNlbGVjdGlvbiAmJlxyXG4gICAgICAoKHRoaXMuZGlhbG9nRGF0YS5zZWxlY3Rpb25Nb2RlID09PSAxICYmXHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY3VycmVudC5zZWxlY3RlZC5sZW5ndGggPT09IDEpIHx8XHJcbiAgICAgICAgKHRoaXMuZGlhbG9nRGF0YS5zZWxlY3Rpb25Nb2RlID09PSAyICYmXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jdXJyZW50LnNlbGVjdGVkLmxlbmd0aCA+IDEpIHx8XHJcbiAgICAgICAgKHRoaXMuZGlhbG9nRGF0YS5zZWxlY3Rpb25Nb2RlID09PSAzICYmXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jdXJyZW50LnNlbGVjdGVkLmxlbmd0aCA+IDApKTtcclxuICAgIGlmIChhbGxvdyAmJiB0aGlzLmRpYWxvZ0RhdGEuc2VsZWN0YWJsZU1vZGVscz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5jdXJyZW50LnNlbGVjdGVkLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5zZWxlY3RhYmxlTW9kZWxzLmluZGV4T2Yobi5tb2RlbCkgPT09IC0xKSB7XHJcbiAgICAgICAgICBhbGxvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYWxsb3c7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZCBhIG1lc3NhZ2Ugd2l0aCBjdXJyZW50IHNlbGVjdGlvbiBhbmQgY2xvc2UgZGlhbG9nXHJcbiAgICovXHJcbiAgc2VsZWN0KCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uLmN1cnJlbnQuc2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb24uY3VycmVudC5zZWxlY3RlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShcclxuICAgICAgICBDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfU0VMRUNURUQsXHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY3VycmVudC5zZWxlY3RlZFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSBkaWFsb2dcclxuICAgKiBAcGFyYW0gbmV3Um91dGU6IHRoZSBuZXcgcm91dGUgdG8gbmF2aWdhdGUgdG9cclxuICAgKi9cclxuICBjbG9zZShuZXdSb3V0ZTogYW55ID0gbnVsbCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UobmV3Um91dGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXQgc2Nyb2xsIHBvc2l0aW9uXHJcbiAgICovXHJcbiAgcmVzZXRTY3JvbGxQb3NpdGlvbigpIHtcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjbGlwcGVyLXJlZmVyZW5jZXMtc2Nyb2xsZXInKS5zY3JvbGxUbygwLCAwKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgc29ydFxyXG4gICAqL1xyXG4gIHVwZGF0ZVNvcnRPcHRpb25zKCkge1xyXG4gICAgc3dpdGNoICh0aGlzLmZpbHRlclBhcmFtcy5zb3J0TW9kZSkge1xyXG4gICAgICBjYXNlIENsaXBwZXJTb3J0LkRhdGVBc2M6XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U29ydCA9ICdEYXRhIGNyZS4nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENsaXBwZXJTb3J0LlBvcHVsYXJpdHk6XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U29ydCA9ICdQb3BvbGFyaXTDoCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ2xpcHBlclNvcnQuUmVsZXZhbmNlOlxyXG4gICAgICAgIHRoaXMuY3VycmVudFNvcnQgPSAnUmlsZXZhbnphJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5zb3J0TW9kZSA9IENsaXBwZXJTb3J0LkRhdGVEZXNjO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFNvcnQgPSAnRGF0YSBkZWNyLic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGN1cnJlbnQgc2VhcmNoIGluZm9cclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVNlYXJjaEluZm8oKSB7XHJcbiAgICBsZXQgc2kgPSBbXTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9yIHx8XHJcbiAgICAgICh0aGlzLmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy5zZWN0b3IpXHJcbiAgICApIHtcclxuICAgICAgbGV0IHMgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRCeUtleShcclxuICAgICAgICBDbGlwcGVyU2VjdG9ycyxcclxuICAgICAgICAndmFsdWUnLFxyXG4gICAgICAgIHRoaXMuZmFjZXRzICYmIHRoaXMuc25hcHNob3QuZmFjZXRzLnNlY3RvclxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy5zZWN0b3JcclxuICAgICAgICAgIDogdGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9yXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChzKSB7XHJcbiAgICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgICBmaWVsZDogJ3NldHRvcmUnLFxyXG4gICAgICAgICAgdmFsdWU6IHMubmFtZSxcclxuICAgICAgICAgIHNlcDogc2kubGVuZ3RoID4gMCxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgcyA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEJ5S2V5KFxyXG4gICAgICAgICAgQ2xpcHBlck1vZGVscyxcclxuICAgICAgICAgICd2YWx1ZScsXHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy5zZWN0b3JcclxuICAgICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy5zZWN0b3JcclxuICAgICAgICAgICAgOiB0aGlzLmZpbHRlclBhcmFtcy5zZWN0b3JcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChzKSB7XHJcbiAgICAgICAgICBzaS5wdXNoKHtcclxuICAgICAgICAgICAgZmllbGQ6ICdzZXppb25lJyxcclxuICAgICAgICAgICAgdmFsdWU6IHMubmFtZSxcclxuICAgICAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLmF1dGhvciB8fFxyXG4gICAgICAodGhpcy5zbmFwc2hvdC5mYWNldHMgJiYgdGhpcy5zbmFwc2hvdC5mYWNldHMuYXV0aG9yKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBhID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kQnlLZXkoXHJcbiAgICAgICAgQ2xpcHBlckF1dGhvcnMsXHJcbiAgICAgICAgJ3ZhbHVlJyxcclxuICAgICAgICB0aGlzLmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy5hdXRob3JcclxuICAgICAgICAgID8gdGhpcy5zbmFwc2hvdC5mYWNldHMuYXV0aG9yXHJcbiAgICAgICAgICA6IHRoaXMuZmlsdGVyUGFyYW1zLmF1dGhvclxyXG4gICAgICApO1xyXG4gICAgICBpZiAoYSkge1xyXG4gICAgICAgIHNpLnB1c2goe1xyXG4gICAgICAgICAgZmllbGQ6ICdhdXRvcmUnLFxyXG4gICAgICAgICAgdmFsdWU6IGEuYXV0aG9yRGVzY3JpcHRpb24sXHJcbiAgICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy50b3BpYylcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICdhcmdvbWVudG8nLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmZpbHRlclBhcmFtcy50b3BpYyxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLnRheG9ub215KVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ2FyZ29tZW50bycsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuZmlsdGVyUGFyYW1zLnRheG9ub215Tm9kZSxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLm51bWJlcilcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICdudW1lcm8nLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmZpbHRlclBhcmFtcy5udW1iZXIsXHJcbiAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICB9KTtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuc25hcHNob3QuaW50ZXJ2YWwgJiZcclxuICAgICAgKHRoaXMuZmlsdGVyUGFyYW1zLmZyb21EYXRlIHx8XHJcbiAgICAgICAgKHRoaXMuc25hcHNob3QuZmFjZXRzICYmXHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cy5mcm9tRGF0ZSAmJlxyXG4gICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMubW9kZWwgIT09XHJcbiAgICAgICAgICBDbGlwcGVyTW9kZWwuQWdnaW9ybmFtZW50b05vcm1hdGl2bykpXHJcbiAgICApIHtcclxuICAgICAgbGV0IGQxID1cclxuICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy5mcm9tRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy5mcm9tRGF0ZVxyXG4gICAgICAgICAgOiB0aGlzLmZpbHRlclBhcmFtcy5mcm9tRGF0ZTtcclxuICAgICAgY29uc3QgZDIgPVxyXG4gICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzICYmIHRoaXMuc25hcHNob3QuZmFjZXRzLnRvRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy50b0RhdGVcclxuICAgICAgICAgIDogdGhpcy5maWx0ZXJQYXJhbXMudG9EYXRlO1xyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogIWQyID8gJ2luIGRhdGEnIDogJ2RhIGRhdGEnLFxyXG4gICAgICAgIHZhbHVlOiBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGQxKSxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnNuYXBzaG90LmludGVydmFsICYmXHJcbiAgICAgICh0aGlzLmZpbHRlclBhcmFtcy50b0RhdGUgfHxcclxuICAgICAgICAodGhpcy5zbmFwc2hvdC5mYWNldHMgJiZcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzLnRvRGF0ZSAmJlxyXG4gICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMubW9kZWwgIT09XHJcbiAgICAgICAgICBDbGlwcGVyTW9kZWwuQWdnaW9ybmFtZW50b05vcm1hdGl2bykpXHJcbiAgICApIHtcclxuICAgICAgbGV0IGQgPVxyXG4gICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzICYmIHRoaXMuc25hcHNob3QuZmFjZXRzLnRvRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy50b0RhdGVcclxuICAgICAgICAgIDogdGhpcy5maWx0ZXJQYXJhbXMudG9EYXRlO1xyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ2EgZGF0YScsXHJcbiAgICAgICAgdmFsdWU6IFN5c3RlbVV0aWxzLmZvcm1hdERhdGUoZCksXHJcbiAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNuYXBzaG90LmludGVydmFsKVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ2ludGVydmFsbG8nLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLnNuYXBzaG90LmludGVydmFsLFxyXG4gICAgICAgIHNlcDogc2kubGVuZ3RoID4gMCxcclxuICAgICAgfSk7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJQYXJhbXMuc291cmNlKVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ2ZvbnRlJyxcclxuICAgICAgICB2YWx1ZTogU3lzdGVtVXRpbHMuYXJyYXlHZXRWYWx1ZShcclxuICAgICAgICAgIENsaXBwZXJTb3VyY2VzLFxyXG4gICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuc291cmNlXHJcbiAgICAgICAgKSxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLnNvdXJjZU51bWJlcilcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICdudW0uIGZvbnRlJyxcclxuICAgICAgICB2YWx1ZTogdGhpcy5maWx0ZXJQYXJhbXMuc291cmNlTnVtYmVyLFxyXG4gICAgICAgIHNlcDogc2kubGVuZ3RoID4gMCxcclxuICAgICAgfSk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnNvdXJjZUZyb21EYXRlIHx8XHJcbiAgICAgICh0aGlzLnNuYXBzaG90LmZhY2V0cyAmJlxyXG4gICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzLmZyb21EYXRlICYmXHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMubW9kZWwgPT09XHJcbiAgICAgICAgQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8pXHJcbiAgICApIHtcclxuICAgICAgbGV0IGQxID1cclxuICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy5mcm9tRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy5mcm9tRGF0ZVxyXG4gICAgICAgICAgOiB0aGlzLmZpbHRlclBhcmFtcy5zb3VyY2VGcm9tRGF0ZTtcclxuICAgICAgY29uc3QgZDIgPVxyXG4gICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzICYmIHRoaXMuc25hcHNob3QuZmFjZXRzLnRvRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy50b0RhdGVcclxuICAgICAgICAgIDogdGhpcy5maWx0ZXJQYXJhbXMuc291cmNlVG9EYXRlO1xyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogIWQyID8gJ2luIGRhdGEgZm9udGUnIDogJ2RhIGRhdGEgZm9udGUnLFxyXG4gICAgICAgIHZhbHVlOiBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGQxKSxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy5zb3VyY2VUb0RhdGUgfHxcclxuICAgICAgKHRoaXMuc25hcHNob3QuZmFjZXRzICYmXHJcbiAgICAgICAgdGhpcy5zbmFwc2hvdC5mYWNldHMudG9EYXRlICYmXHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMubW9kZWwgPT09XHJcbiAgICAgICAgQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8pXHJcbiAgICApIHtcclxuICAgICAgbGV0IGQgPVxyXG4gICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzICYmIHRoaXMuc25hcHNob3QuZmFjZXRzLnRvRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy50b0RhdGVcclxuICAgICAgICAgIDogdGhpcy5maWx0ZXJQYXJhbXMuc291cmNlVG9EYXRlO1xyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ2EgZGF0YSBmb250ZScsXHJcbiAgICAgICAgdmFsdWU6IFN5c3RlbVV0aWxzLmZvcm1hdERhdGUoZCksXHJcbiAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy50ZXh0KVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ3Rlc3RvJyxcclxuICAgICAgICB2YWx1ZTogdGhpcy5maWx0ZXJQYXJhbXMudGV4dCxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy50eXBlIHx8XHJcbiAgICAgICh0aGlzLnNuYXBzaG90LmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy50eXBlKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCB0ID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kQnlLZXkoXHJcbiAgICAgICAgQ2xpcHBlclNlY3RvclR5cGVzLFxyXG4gICAgICAgICd2YWx1ZScsXHJcbiAgICAgICAgdGhpcy5zbmFwc2hvdC5mYWNldHMgJiYgdGhpcy5zbmFwc2hvdC5mYWNldHMudHlwZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy50eXBlXHJcbiAgICAgICAgICA6IHRoaXMuZmlsdGVyUGFyYW1zLnR5cGVcclxuICAgICAgKTtcclxuICAgICAgaWYgKHQpIHtcclxuICAgICAgICBzaS5wdXNoKHtcclxuICAgICAgICAgIGZpZWxkOiAndGlwbycsXHJcbiAgICAgICAgICB2YWx1ZTogdC5kb2N1bWVudFR5cGVEZXNjcmlwdGlvbixcclxuICAgICAgICAgIHNlcDogc2kubGVuZ3RoID4gMCxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLnNob3dVbnJlYWREb2N1bWVudHNPbmx5KVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ3N0YXRvJyxcclxuICAgICAgICB2YWx1ZTogJ25vbiBsZXR0aScsXHJcbiAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICB9KTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuY2hhbmdlUmVhc29uIHx8XHJcbiAgICAgICh0aGlzLnNuYXBzaG90LmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy5yZWFzb24pXHJcbiAgICApXHJcbiAgICAgIHNpLnB1c2goe1xyXG4gICAgICAgIGZpZWxkOiAndGlwbyBtb2QuJyxcclxuICAgICAgICB2YWx1ZTogU3lzdGVtVXRpbHMuYXJyYXlHZXRWYWx1ZShcclxuICAgICAgICAgIENsaXBwZXJEb2N1bWVudENoYW5nZVJlYXNvbixcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzICYmIHRoaXMuc25hcHNob3QuZmFjZXRzLnJlYXNvblxyXG4gICAgICAgICAgICA/IHRoaXMuc25hcHNob3QuZmFjZXRzLnJlYXNvblxyXG4gICAgICAgICAgICA6IHRoaXMuZmlsdGVyUGFyYW1zLmNoYW5nZVJlYXNvblxyXG4gICAgICAgICksXHJcbiAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICB9KTtcclxuICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy5jaGFuZ2VkTnVtYmVyKVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ251bS4gbW9kaWZpY2F0bycsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuZmlsdGVyUGFyYW1zLmNoYW5nZWROdW1iZXIsXHJcbiAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICB9KTtcclxuICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy5jaGFuZ2VkWWVhcilcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICdhbm5vIG1vZGlmaWNhdG8nLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmZpbHRlclBhcmFtcy5jaGFuZ2VkWWVhcixcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLmNoYW5nZWRUaXRsZSlcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICd0aXRvbG8gbW9kaWZpY2F0bycsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuZmlsdGVyUGFyYW1zLmNoYW5nZWRUaXRsZSxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLm1vZGlmaWVyTnVtYmVyKVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ251bS4gbW9kaWZpY2FudGUnLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmZpbHRlclBhcmFtcy5tb2RpZmllck51bWJlcixcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLm1vZGlmaWVyWWVhcilcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICdhbm5vIG1vZGlmaWNhbnRlJyxcclxuICAgICAgICB2YWx1ZTogdGhpcy5maWx0ZXJQYXJhbXMubW9kaWZpZXJZZWFyLFxyXG4gICAgICAgIHNlcDogc2kubGVuZ3RoID4gMCxcclxuICAgICAgfSk7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJQYXJhbXMubW9kaWZpZXJUaXRsZSlcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICd0aXRvbG8gbW9kaWZpY2FudGUnLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmZpbHRlclBhcmFtcy5tb2RpZmllclRpdGxlLFxyXG4gICAgICAgIHNlcDogc2kubGVuZ3RoID4gMCxcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5zbmFwc2hvdC5zZWFyY2hJbmZvID0gc2k7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogQ2hhbmdlIHNlYXJjaCBtb2RlbFxyXG4gKiBAcGFyYW0gbW9kZWwgOiB0aGUgbmV3IGRvY3VtZW50IG1vZGVsIFxyXG4gKiBAcGFyYW0gZmV0Y2ggOiB0cnVlIGlmIGRhdGEgbXVzdCBiZSBmZXRjaGVkLiBEZWZhdWx0IGlzIHRydWVcclxuICovXHJcbiAgY2hhbmdlTW9kZWwobW9kZWw6IG51bWJlciA9IG51bGwsIGZldGNoOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5maWx0ZXJQYXJhbXMubW9kZWwgPSBtb2RlbDtcclxuICAgIHN3aXRjaCAobW9kZWwpIHtcclxuICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuQWdnaW9ybmFtZW50b05vcm1hdGl2bzogdGhpcy5jdXJyZW50TW9kZWwgPSBcIkdhenpldHRlIGUgYm9sbGV0dGluaVwiOyBicmVhaztcclxuICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuTm9ybWF0aXZhVmlnZW50ZTogdGhpcy5jdXJyZW50TW9kZWwgPSBcIk5vcm1hdGl2YSB2aWdlbnRlXCI7IGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuY3VycmVudE1vZGVsID0gXCJUdXR0b1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKGZldGNoKVxyXG4gICAgICB0aGlzLmZldGNoKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgYSBzb3J0XHJcbiAgICogQHBhcmFtIG1vZGUgOiB0aGUgc29ydCBtb2RlXHJcbiAgICovXHJcbiAgc29ydEJ5KG1vZGU6IG51bWJlcikge1xyXG4gICAgdGhpcy5maWx0ZXJQYXJhbXMuc29ydE1vZGUgPSBtb2RlO1xyXG4gICAgdGhpcy51cGRhdGVTb3J0T3B0aW9ucygpO1xyXG4gICAgdGhpcy5mZXRjaChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogR2V0IGZhY2V0c1xyXG4gKi9cclxuICBmZXRjaEZhY2V0cygpIHtcclxuICAgIGlmICghdGhpcy5jbGlwcGVyU2VydmljZS5sb2dnZWRJbikgcmV0dXJuO1xyXG4gICAgdGhpcy5mYWNldHMuYnVzeS5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnJlZmVyZW5jZXNGYWNldHModGhpcy5maWx0ZXJQYXJhbXMpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyKSA9PiB7XHJcbiAgICAgICAgICBpZiAoci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVJlc3VsdHMobnVsbCwgci52YWx1ZS5mYWNldHMpO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlclBhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5yZXNldFNjcm9sbFBvc2l0aW9uKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mYWNldHMuYnVzeS5zZXQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtIGEgc2VhcmNoIHVzaW5nIGN1cnJlbnQgcGFyYW1zXHJcbiAgICovXHJcbiAgZmV0Y2gobmV3U2VhcmNoOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5idXN5KCdSaWNlcmNhIGluIGNvcnNvLi4uJyk7XHJcbiAgICB0aGlzLmZpbHRlclBhcmFtcy5jb3VudCA9IDI1O1xyXG4gICAgaWYgKG5ld1NlYXJjaCkge1xyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy5maXJzdCA9IDA7XHJcbiAgICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy50ZXh0KVxyXG4gICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnNvcnRNb2RlID0gQ2xpcHBlclNvcnQuUmVsZXZhbmNlO1xyXG4gICAgICBlbHNlIGlmICghdGhpcy5maWx0ZXJQYXJhbXMuc29ydE1vZGUpXHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuc29ydE1vZGUgPSBDbGlwcGVyU29ydC5EYXRlRGVzYztcclxuICAgICAgdGhpcy51cGRhdGVTb3J0T3B0aW9ucygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLnllYXIgPiAwKSB7XHJcbiAgICAgIGNvbnN0IHllYXIgPSB0aGlzLmZpbHRlclBhcmFtcy55ZWFyO1xyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy5mcm9tRGF0ZSA9IG5ldyBEYXRlKHllYXIsIDAsIDEsIDIpO1xyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy50b0RhdGUgPSBuZXcgRGF0ZSh5ZWFyLCAxMSwgMzEsIDIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJQYXJhbXMueWVhciA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWx0ZXJQYXJhbXMudGV4dCkge1xyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy50ZXh0ID0gQ2xpcHBlclNlYXJjaFV0aWxzLm5vcm1hbGl6ZVRleHRRdWVyeSh0aGlzLmZpbHRlclBhcmFtcy50ZXh0KTtcclxuICAgIH1cclxuICAgIHRoaXMuY2xpcHBlclNlcnZpY2UucXVlcnkodGhpcy5maWx0ZXJQYXJhbXMpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICghci5zdWNjZXNzKSB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVSZXN1bHRzKHIudmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgLy8gSGFuZGxlIGZhY2V0c1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zbmFwc2hvdC50b3RhbCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cy5oYXNUb29NYW55UmVzdWx0cyA9IHRoaXMuc25hcHNob3QudG90YWwgPj0gMTAwMDtcclxuICAgICAgICAgICAgICBpZiAobmV3U2VhcmNoKVxyXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGZhY2V0c1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaEZhY2V0cygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmFjZXRzLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYW5lLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChuZXdTZWFyY2gpIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRTY3JvbGxQb3NpdGlvbigpO1xyXG5cclxuICAgICAgICAgICAgLy8gVXBkYXRlIHZpZXdcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWFyY2hJbmZvKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGEgbmV3IHBhZ2UgcmVzdWx0XHJcbiAgICogQHBhcmFtIGUgOiB0aGUgTWF0UGFnaW5hdG9yIFBhZ2VFdmVudCBkYXRhXHJcbiAgICovXHJcbiAgZmV0Y2hNb3JlKGU6IGFueSkge1xyXG4gICAgbGV0IGZpcnN0ID0gZS5wYWdlSW5kZXggKiB0aGlzLmZpbHRlclBhcmFtcy5jb3VudDtcclxuICAgIHRoaXMuZmlsdGVyUGFyYW1zLmZpcnN0ID0gZmlyc3Q7XHJcbiAgICB0aGlzLmZldGNoKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBzZWFyY2hcclxuICAgKi9cclxuICBjbGVhclNlYXJjaCgpIHtcclxuICAgIHRoaXMuY3VycmVudE1vZGVsID0gJ05vcm1hdGl2YSB2aWdlbnRlJztcclxuICAgIHRoaXMuc25hcHNob3QuaXRlbXMgPSBudWxsO1xyXG4gICAgdGhpcy5zbmFwc2hvdC50b3RhbCA9IDA7XHJcbiAgICB0aGlzLnNuYXBzaG90LmZhY2V0cyA9IG51bGw7XHJcbiAgICB0aGlzLmZhY2V0cy5yZXNldCgpO1xyXG4gICAgdGhpcy5maWx0ZXJQYXJhbXMgPSB7XHJcbiAgICAgIGZpcnN0OiAwLFxyXG4gICAgICBjb3VudDogMTUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5maWx0ZXJQYW5lLmNsb3NlKCk7XHJcbiAgICB0aGlzLnVwZGF0ZVNlYXJjaEluZm8oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gYW4gaXRlbVxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICogQHBhcmFtIG5ld1dpbmRvdzogdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgbXVzdCBiZSBvcGVuIGludG8gYSBuZXcgd2luZG93XHJcbiAgICovXHJcbiAgb3Blbihkb2N1bWVudElkOiBzdHJpbmcsIG5ld1dpbmRvdzogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIW5ld1dpbmRvdykgdGhpcy5vcGVuRG9jdW1lbnQoZG9jdW1lbnRJZCk7XHJcbiAgICBlbHNlIHdpbmRvdy5vcGVuKCcvZG9jdW1lbnRvLycgKyBkb2N1bWVudElkLCAnX2JsYW5rJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGEgZG9jdW1lbnRcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb3BlbkRvY3VtZW50KGRvY3VtZW50SWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCFkb2N1bWVudElkKSByZXR1cm47XHJcbiAgICBDbGlwcGVyRG9jdW1lbnRzVXRpbHMub3BlbkRvY3VtZW50KFxyXG4gICAgICBkb2N1bWVudElkLFxyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy50ZXh0LFxyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEuc2VsZWN0aW9uTW9kZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXBvc2UgYSBmcmVlIHRleHQgc2VhcmNoIHF1ZXJ5XHJcbiAgICovXHJcbiAgY29tcG9zZVNlYXJjaCgpIHtcclxuICAgIGxldCBkID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlclNlYXJjaEZyZWVUZXh0UXVlcnlCdWlsZGVyQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2Nvc3RydWlzY2kgcmljZXJjYScsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogdHJ1ZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnNjAwcHgnLFxyXG4gICAgICB3aWR0aDogJzk5JScsXHJcbiAgICB9KTtcclxuICAgIGQuY29tcG9uZW50SW5zdGFuY2UuZG9uZVxyXG4gICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy50ZXh0ID0gci5xdWVyeTtcclxuICAgICAgICBkLmNsb3NlKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBQZXJmb3JtIHNlYXJjaFxyXG4gKi9cclxuICBzZWFyY2goKSB7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9yID09PSB0aGlzLnNuYXBzaG90LmZhY2V0cy5zZWN0b3IpXHJcbiAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnNlY3RvciA9IG51bGw7XHJcblxyXG4gICAgLy8gUmVzZXQgcGFnaW5hdG9yXHJcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcblxyXG4gICAgLy8gUmVzZXQgZmFjZXRzIHNlYXJjaFxyXG4gICAgdGhpcy5mYWNldHMucmVzZXQoKTtcclxuXHJcbiAgICAvLyBEbyBzZWFyY2hcclxuICAgIHRoaXMuZmV0Y2godHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGFkdmFuY2VkIHNlYXJjaFxyXG4gICAqL1xyXG4gIGFkdmFuY2VkU2VhcmNoKCkge1xyXG4gICAgbGV0IGQgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihDbGlwcGVyU2VhcmNoRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ3JpY2VyY2EgYXZhbnphdGEnLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgcGFyYW1zOiB0aGlzLmZpbHRlclBhcmFtcyxcclxuICAgICAgICBlbmFibGVSZWFkOiBmYWxzZSxcclxuICAgICAgICBlbmFibGVTZWN0b3I6IHRydWUsXHJcbiAgICAgICAgZW5hYmxlVHlwZTogdHJ1ZSxcclxuICAgICAgICBlbmFibGVBdXRob3I6IHRydWUsXHJcbiAgICAgICAgZW5hYmxlVG9waWM6IHRydWUsXHJcbiAgICAgICAgZW5hYmxlVGV4dDogdHJ1ZSxcclxuICAgICAgICBlbmFibGVEb2N1bWVudDogdHJ1ZSxcclxuICAgICAgICBlbmFibGVTb3VyY2U6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogJzcwMHB4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnLFxyXG4gICAgfSk7XHJcbiAgICBkLmNvbXBvbmVudEluc3RhbmNlLmRvbmVcclxuICAgICAgLnN1YnNjcmliZSgocjogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gVXBkYXRlIHNlYXJjaCBwYXJhbXNcclxuICAgICAgICByLm1vZGVsID0gdGhpcy5maWx0ZXJQYXJhbXMubW9kZWw7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMgPSByO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLmZpcnN0ID0gMDtcclxuICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5jb3VudCA9IDI1O1xyXG4gICAgICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy5zZWN0b3IgPT09IHRoaXMuc25hcHNob3QuZmFjZXRzLnNlY3RvcilcclxuICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnNlY3RvciA9IG51bGw7XHJcblxyXG4gICAgICAgIC8vIFJlc2V0IHBhZ2luYXRvclxyXG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgLy8gUmVzZXQgZmFjZXRzIHNlYXJjaFxyXG4gICAgICAgIHRoaXMuZmFjZXRzLnJlc2V0KCk7XHJcblxyXG4gICAgICAgIC8vIERvIHNlYXJjaFxyXG4gICAgICAgIHRoaXMuZmV0Y2godHJ1ZSk7XHJcblxyXG4gICAgICAgIC8vIEZpbmlzaGVkXHJcbiAgICAgICAgZC5jbG9zZSgpO1xyXG5cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogU2hvdyBmcmVlIHRleHQgaGVscFxyXG4gKi9cclxuICBoZWxwU2VhcmNoKCkge1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlclNlYXJjaEZyZWVUZXh0SGVscENvbXBvbmVudCwge1xyXG4gICAgICBhcmlhTGFiZWw6ICdpbmZvcm1hemlvbmkgcmljZXJjYScsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogdHJ1ZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnODAwcHgnLFxyXG4gICAgICB3aWR0aDogJzk5JScsXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBpZD1cImNsaXBwZXItYnJvd3Nlci1maXhlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjbGlwcGVyLWJyb3dzZXItaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9JzEwcHgnIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiPlxyXG4gICAgICAgIDxhIGhyZWY9XCJodHRwczovL2NsaXBwZXIuYXJzZWRpemlvbmkuaXRcIiBtYXRUb29sdGlwPVwiQXByaSBDbGlwcGVyIGluIHVuIG51b3ZvIHRhYlwiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCIuLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvY2xpcHBlcl9sb2dvLnBuZ1wiIGFsdD1cIkNsaXBwZXJcIiBzdHlsZT1cIm1heC1oZWlnaHQ6IDUwcHg7IHBhZGRpbmc6IDVweFwiIC8+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgQGlmIChkaWFsb2dEYXRhPy5zZWxlY3Rpb25Nb2RlID4gMCkge1xyXG4gICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICBAaWYgKGNhblNlbGVjdCgpKSB7XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWZsYXQtYnV0dG9uIChjbGljayk9XCJzZWxlY3QoKVwiPlxyXG4gICAgICAgICAgVXNhIHNlbGV6aW9uZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgPGRpdiBmeEZsZXg9XCIxNTBweFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBjbGFzcz1cImRpYWxvZy1jbG9zZVwiPlxyXG4gICAgICAgIEBpZiAoY2xpcHBlclNlcnZpY2UuYmFnLmxlbmd0aCA+IDApIHtcclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkRvY3VtZW50aSBkaSBsYXZvcm9cIiBhcmlhLWxhYmVsPVwiJ0RvY3VtZW50aSBkaSBsYXZvcm8nXCJcclxuICAgICAgICAgIChjbGljayk9XCJtYW5hZ2VCYWcoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGFyaWEtaGlkZGVuPVwiZmFsc2VcIiBbbWF0QmFkZ2VdPVwiY2xpcHBlclNlcnZpY2UuYmFnLmxlbmd0aFwiXHJcbiAgICAgICAgICAgIG1hdEJhZGdlQ29sb3I9XCJhY2NlbnRcIj53b3JrX291dGxpbmU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkNoaXVkaVwiIGFyaWEtbGFiZWw9XCJDaGl1ZGlcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMTVweCAwIDEwcHggMTVweFwiPlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGZ4RmxleC54cz1cIjYyXCI+XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPScxMHB4JyBmeEZpbGw+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiMTMwcHhcIiBmeEhpZGUueHMgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+TnVtZXJvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmlsdGVyUGFyYW1zLm51bWJlclwiICNudW1iZXI9XCJuZ01vZGVsXCIgbmFtZT1cIm51bWJlclwiIG1heGxlbmd0aD1cIjEwXCJcclxuICAgICAgICAgICAgICAoa2V5dXAuRW50ZXIpPVwiZmV0Y2godHJ1ZSlcIj5cclxuICAgICAgICAgICAgQGlmIChmaWx0ZXJQYXJhbXMubnVtYmVyKSB7XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiLTFcIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IGFyaWEtbGFiZWw9XCJBenplcmFcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJQYXJhbXMubnVtYmVyID0gbnVsbDtcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBmeEZsZXg9XCIxMzBweFwiIGZ4SGlkZS54cyBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Bbm5vPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWx0ZXJQYXJhbXMueWVhclwiICN5ZWFyPVwibmdNb2RlbFwiIG5hbWU9XCJ5ZWFyXCIgbWluPVwiMFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNFwiIChrZXl1cC5FbnRlcik9XCJmZXRjaCh0cnVlKVwiIC8+XHJcbiAgICAgICAgICAgIEBpZiAoZmlsdGVyUGFyYW1zLnllYXIpIHtcclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlB1bGlzY2lcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJQYXJhbXMueWVhciA9IG51bGxcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAaWYgKHllYXIuaW52YWxpZCkge1xyXG4gICAgICAgICAgICA8bWF0LWVycm9yPk5vbiB2YWxpZG8uPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiMTAwXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+UGFyb2xlLCBmcmFzaSBvIGNvbmNldHRpLi4uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCAjc2VhcmNoSW5wdXQ9XCJtYXRJbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgI3RleHQgWyhuZ01vZGVsKV09XCJmaWx0ZXJQYXJhbXMudGV4dFwiIG1heGxlbmd0aD1cIjIwMFwiXHJcbiAgICAgICAgICAgICAgKGtleXVwLkVudGVyKT1cInNlYXJjaCgpXCIgYXV0b2ZvY3VzIC8+XHJcbiAgICAgICAgICAgIEBpZiAoZmlsdGVyUGFyYW1zLnRleHQpIHtcclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlB1bGlzY2lcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJQYXJhbXMudGV4dCA9ICcnXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGJ1dHRvbiBmeEhpZGUueHMgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggYXJpYS1sYWJlbD1cIkNvbXBvbmlcIiBtYXRUb29sdGlwPVwiQ29tcG9uaVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRleHQuZm9jdXMoKTsgY29tcG9zZVNlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmJ1aWxkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gZnhIaWRlLnhzIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IGFyaWEtbGFiZWw9XCJJbmZvcm1hemlvbmlcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJDb21lIGVmZmV0dHVhcmUgbGEgcmljZXJjYSBpbiB0ZXN0byBsaWJlcm9cIiAoY2xpY2spPVwidGV4dC5mb2N1cygpOyBoZWxwU2VhcmNoKClcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+aGVscF9vdXRsaW5lPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXgueHM9XCIzNlwiPlxyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwiZW5kIGNlbnRlclwiIGZ4RmlsbD5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2VhcmNoKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidBdnZpYSBsYSByaWNlcmNhJ1wiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJBdnZpYSByaWNlcmNhXCIgW2Rpc2FibGVkXT1cIiFjbGlwcGVyU2VydmljZS5sb2dnZWRJblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJhZHZhbmNlZFNlYXJjaCgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInUmljZXJjYSBhdmFuemF0YSdcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiUmljZXJjYSBhdmFuemF0YVwiIFtkaXNhYmxlZF09XCIhY2xpcHBlclNlcnZpY2UubG9nZ2VkSW5cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnNldHRpbmdzPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoc25hcHNob3Quc2VhcmNoSW5mbyAmJiBzbmFwc2hvdC5zZWFyY2hJbmZvLmxlbmd0aCA+IDApIHtcclxuICA8ZGl2IGZ4SGlkZS54cyBjbGFzcz1cInNtYWxsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDE1cHg7XCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4RmlsbD5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgPGI+UklDRVJDQSBBVFRJVkE8L2I+Jm5ic3A7Jm5ic3A7Jm5ic3A7XHJcbiAgICAgICAgQGZvciAoc2kgb2Ygc25hcHNob3Quc2VhcmNoSW5mbzsgdHJhY2sgc2kpIHtcclxuICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgIHt7c2kuc2VwID8gJyZuYnNwOyZuYnNwOycgOiAnJ319IHt7c2kuZmllbGR9fTogPHNwYW4gY2xhc3M9XCJhY2NlbnQgbG93ZXJjYXNlXCI+PGk+e3tzaS52YWx1ZX19PC9pPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cInN0YXJ0XCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJBenplcmEgcmljZXJjYVwiIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIH1cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXAtcmV2ZXJzZVwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIGZ4RmlsbCBzdHlsZT1cInBhZGRpbmctbGVmdDogMTVweDtcIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XHJcbiAgICAgICAgQGlmIChzbmFwc2hvdC50b3RhbCA+IDApIHtcclxuICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0QWxsKCRldmVudCkgOiBudWxsXCJcclxuICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uPy5oYXNWYWx1ZSgpICYmICFhbGxTZWxlY3RlZCgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInU2VsZXppb25hL2Rlc2VsZXppb25hIHR1dHRvJ1wiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJTZWxlemlvbmEvZGVzZWxlemlvbmEgdHV0dG9cIiBbZGlzYWJsZWRdPVwiIXNuYXBzaG90Lml0ZW1zIHx8IHNuYXBzaG90Lml0ZW1zLmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgICBAaWYgKHNuYXBzaG90LnRvdGFsID4gMCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIG1hdFRvb2x0aXA9XCJPcmRpbmFcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNZW51IG9yZGluYSdcIlxyXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVNvcnRcIiBbZGlzYWJsZWRdPVwiIXNuYXBzaG90LnRvdGFsXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGZ4SGlkZS5sdC1sZz5PcmRpbmEgcGVyOjwvc3Bhbj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGZ4SGlkZS5ndC1tZD5zb3J0PC9tYXQtaWNvbj4ge3tjdXJyZW50U29ydH19XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tbWVudS1kcm9wLWRvd25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudVNvcnQ9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic29ydEJ5KDMpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInT3JkaW5hIHBlciBkYXRhIGRlY3Jlc2NlbnRlJ1wiPlxyXG4gICAgICAgICAgICAgIERhdGEgZGVjcmVzY2VudGVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic29ydEJ5KDIpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInT3JkaW5hIHBlciBkYXRhIGNyZXNjZW50ZSdcIj5cclxuICAgICAgICAgICAgICBEYXRhIGNyZXNjZW50ZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgQGlmIChmaWx0ZXJQYXJhbXMudGV4dCkge1xyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNvcnRCeSgxKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09yZGluYSBwZXIgcmlsZXZhbnphJ1wiPlxyXG4gICAgICAgICAgICAgIFJpbGV2YW56YVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNvcnRCeSg1KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09yZGluYSBwZXIgcG9wb2xhcml0w6AnXCI+XHJcbiAgICAgICAgICAgICAgUG9wb2xhcml0w6BcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwhLS0gPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzb3J0QnkoNClcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInT3JkaW5hIHBlciBkYXRhIGRpIGluc2VyaW1lbnRvIGRlc2NyZXNjZW50ZSdcIj5cclxuICAgICAgICAgICAgICAgIERhdGEgZGkgaW5zZXJpbWVudG8gZGVjcmVzY2VudGVcclxuICAgICAgICAgICAgICA8L2J1dHRvbj4tLT5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInTWVudSBtb2RlbGxvJ1wiXHJcbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51TW9kZWxzXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGZ4SGlkZS5sdC1sZz5Nb3N0cmE6PC9zcGFuPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gZnhIaWRlLmd0LW1kPmZpbHRlcl9saXN0PC9tYXQtaWNvbj4ge3tjdXJyZW50TW9kZWx9fVxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCIgaWNvbi1tZW51LWRyb3AtZG93blwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51TW9kZWxzPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImNoYW5nZU1vZGVsKDIpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGFnZ2lvcm5hbWVudG8gbm9ybWF0aXZvJ1wiPlxyXG4gICAgICAgICAgICAgIEdhenpldHRlIGUgYm9sbGV0dGluaVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjaGFuZ2VNb2RlbCg5KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ05vcm1hdGl2YSB2aWdlbnRlJ1wiPlxyXG4gICAgICAgICAgICAgIE5vcm1hdGl2YSB2aWdlbnRlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjaGFuZ2VNb2RlbCgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIHR1dHRpIGkgZG9jdW1lbnRpJ1wiPlxyXG4gICAgICAgICAgICAgIFR1dHRvXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICBAaWYgKHNlbGVjdGlvbj8uaGFzVmFsdWUoKSkge1xyXG4gICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gbWF0VG9vbHRpcD1cIkF6aW9uaSBkYSBlc2VndWlyZSBzdWdsaSBlbGVtZW50aSBzZWxlemlvbmF0aVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTWVudSBvcHppb25pIHBlciBlbGVtZW50aSBzZWxlemlvbmF0aSdcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVNlbGVjdGlvbnNcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhc25hcHNob3QudG90YWxcIj5cclxuICAgICAgICA8bWF0LWljb24gYXJpYS1oaWRkZW49XCJmYWxzZVwiIFttYXRCYWRnZV09XCJzZWxlY3Rpb24/LmFsbC5sZW5ndGhcIlxyXG4gICAgICAgICAgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiPnBsYXlsaXN0X2FkZF9jaGVjazwvbWF0LWljb24+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1tZW51LWRyb3AtZG93blwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgPG1hdC1tZW51ICNtZW51U2VsZWN0aW9ucz1cIm1hdE1lbnVcIj5cclxuICAgICAgICA8Y2xpcHBlci1kb2N1bWVudC1tZW51IFtwYXJlbnRdPVwidGhpc1wiIHNlbGVjdGlvblNvdXJjZT1cInNlbGVjdGlvblwiIFt1c2VTZWxlY3Rpb25zXT1cImNhblNlbGVjdCgpXCJcclxuICAgICAgICAgIFtpc1JlYWRhYmxlXT1cImZhbHNlXCIgW2lzTGF3SW5Gb3JjZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9jbGlwcGVyLWRvY3VtZW50LW1lbnU+XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgIEBpZiAoc25hcHNob3QgJiYgc25hcHNob3QuZmFjZXRzPy5oYXNGYWNldHMgJiYgZmlsdGVyUGFuZSAmJiAoIWZpbHRlclBhbmUub3BlbmVkIHx8IGZpbHRlclBhbmVDbG9zZWQpKSB7XHJcbiAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJBZmZpbmEgcmljZXJjYVwiXHJcbiAgICAgICAgYXJpYS1sYWJlbD1cIidBZmZpbmEgcmljZXJjYSdcIiAoY2xpY2spPVwidG9nZ2xlRmlsdGVyUGFuZSgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPm1lbnVfb3BlbjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGlkPVwiY2xpcHBlci1icm93c2VyLXNjcm9sbGFibGVcIj5cclxuICA8bWF0LWRyYXdlci1jb250YWluZXI+XHJcbiAgICA8bWF0LWRyYXdlciAjZmlsdGVyUGFuZSBwb3NpdGlvbj1cImVuZFwiIGNsYXNzPVwiZHJhd2VyLXNtYWxsXCI+XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCI0MHB4XCIgc3R5bGU9XCJtYXJnaW46MCA0cHhcIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRpdGxlXCI+QWZmaW5hIHJpY2VyY2E8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZUZpbHRlclBhbmUoKVwiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiTmFzY29uZGlcIj48bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGNsYXNzPVwic2Nyb2xsLWhpZGRlblwiPlxyXG4gICAgICAgICAgPGNsaXBwZXItc2VhcmNoLWZhY2V0cyAjZmFjZXRzPjwvY2xpcHBlci1zZWFyY2gtZmFjZXRzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWRyYXdlcj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGlkPVwiY2xpcHBlci1yZWZlcmVuY2VzLXNjcm9sbGVyXCI+XHJcbiAgICAgICAgQGlmICghc25hcHNob3QudG90YWwpIHtcclxuICAgICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzozMnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7XCIgY2xhc3M9XCJpdGVtLWdyZXllZC0xXCI+XHJcbiAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgTm9uIGhhaSBhbmNvcmEgZWZmZXR0dWF0b1xyXG4gICAgICAgICAgICBsYSB0dWEgcHJpbWEgcmljZXJjYSBvcHB1cmUgbGEgcmljZXJjYSBlZmZldHR1YXRhIG5vbiBoYSBwcm9kb3R0byBhbGN1biByaXN1bHRhdG8uPC9wPlxyXG4gICAgICAgICAgPHA+SW5zZXJpc2NpIG5lbGwnYXBwb3NpdG8gY2FtcG8gY2nDsiBjaGUgaW50ZW5kaSBjZXJjYXJlIGUgZmFpIGNsaWNrIHN1IDxiPlRyb3ZhPC9iPiBvcHB1cmUgdXRpbGl6emFcclxuICAgICAgICAgICAgbGFcclxuICAgICAgICAgICAgPGI+UmljZXJjYSBhdmFuemF0YTwvYj5cclxuICAgICAgICAgIDwvcD4uXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygc25hcHNob3QuaXRlbXM7IHRyYWNrIGl0ZW07IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgICA8ZGl2IChjb250ZXh0bWVudSk9XCJvbkNvbnRleHRNZW51KCRldmVudCwgaXRlbSlcIiAobW91c2VlbnRlcik9XCJpdGVtLmlzT3ZlciA9IHRydWVcIlxyXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJpdGVtLmlzT3ZlciA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgIEBpZiAoaXRlbS5ncm91cCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtZ3JvdXAtdGl0bGVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnc3BhY2VkJzogaSA+IDB9XCI+e3tpdGVtLmdyb3VwfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiNnB4XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4RmlsbCBjbGFzcz1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXRlbS1zZWxlY3RlZCc6IHNlbGVjdGlvbj8uaXNTZWxlY3RlZChpdGVtLmRvY3VtZW50SWQpIH1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjQ4cHhcIiBmeExheW91dEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNjcmVlblNlcnZpY2UuaXNUb3VjaGFibGUgfHwgaXRlbS5pc092ZXIgfHwgc2VsZWN0aW9uPy5pc1NlbGVjdGVkKGl0ZW0uZG9jdW1lbnRJZCkpIHtcclxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uPy50b2dnbGUoaXRlbSwgaXRlbS5kb2N1bWVudElkKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24/LmlzU2VsZWN0ZWQoaXRlbS5kb2N1bWVudElkKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cIml0ZW0tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGNsaXBwZXItc2VhcmNoLXJlc3VsdC1pdGVtIFtpdGVtXT1cIml0ZW1cIiBbcGFyZW50XT1cInRoaXNcIj48L2NsaXBwZXItc2VhcmNoLXJlc3VsdC1pdGVtPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiNDhweFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5pc092ZXIgfHwgaXRlbS5pc01lbnVPcGVuIHx8IHNlbGVjdGlvbj8uaXNTZWxlY3RlZChpdGVtLmRvY3VtZW50SWQpKSB7XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01lbnUgb3B6aW9uaSdcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY29udGV4dE1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJEYXRhXT1cIntpdGVtOiBpdGVtfVwiIChjbGljayk9XCJpdGVtLmlzTWVudU9wZW4gPSB0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAjY29udGV4dE1lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIiBzdHlsZT1cInBvc2l0aW9uOiBmaXhlZFwiIFtzdHlsZS5sZWZ0XT1cImNvbnRleHRNZW51UG9zaXRpb24ueFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUudG9wXT1cImNvbnRleHRNZW51UG9zaXRpb24ueVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb250ZXh0TWVudVwiXHJcbiAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJEYXRhXT1cIntpdGVtOiBpdGVtfVwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPG1hdC1tZW51ICNjb250ZXh0TWVudT1cIm1hdE1lbnVcIiAoY2xvc2VkKT1cInVwZGF0ZU1lbnVCdXR0b25zVmlzaWJpbGl0eSgpXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRNZW51Q29udGVudCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICA8Y2xpcHBlci1kb2N1bWVudC1tZW51IFtwYXJlbnRdPVwidGhpc1wiIFtpdGVtXT1cIml0ZW1cIiBbdXNlU2VsZWN0aW9uc109XCJjYW5TZWxlY3QoKVwiIFtpc1JlYWRhYmxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIFtpc0xhd0luRm9yY2VdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDwvY2xpcHBlci1kb2N1bWVudC1tZW51PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIGZvb3RlciAtLT5cclxuICAgICAgQGlmICgoc25hcHNob3Q/LnRvdGFsID8/IDApID4gMCkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtZm9vdGVyXCI+XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJlbmQgY2VudGVyXCIgZnhGaWxsPlxyXG4gICAgICAgICAgPG1hdC1wYWdpbmF0b3IgI3BhZ2luYXRvciBjbGFzcz1cInBhZ2luYXRvclwiIFtoaWRlUGFnZVNpemVdPVwidHJ1ZVwiIFtsZW5ndGhdPVwic25hcHNob3Q/LnRvdGFsID8/IDBcIlxyXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwiZmlsdGVyUGFyYW1zLmNvdW50ID8/IDE1XCIgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIiAocGFnZSk9XCJmZXRjaE1vcmUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9tYXQtcGFnaW5hdG9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtZHJhd2VyLWNvbnRhaW5lcj5cclxuPC9kaXY+Il19
|
|
753
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnJvd3Nlci1kaWFsb2cuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvYnJvd3Nlci1kaWFsb2cvYnJvd3Nlci1kaWFsb2cuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYXJzLXV0aWxzL2NsaXBwZXIudWkvdWkvYnJvd3Nlci1kaWFsb2cvYnJvd3Nlci1kaWFsb2cuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMxQyxPQUFPLEVBQWlCLHVCQUF1QixFQUFFLFNBQVMsRUFBcUIsU0FBUyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN4SCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFDN0MsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBQ3pELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUMzRCxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQztBQUMvRCxPQUFPLEVBQUUsK0NBQStDLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMvRixPQUFPLEVBQUUsZUFBZSxFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNGLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBQzdELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDhCQUE4QixDQUFDO0FBQ2xFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUN2RCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1B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LGtCQUFrQix3Z0JBQ2xCLGNBQWMsMFdBQ2QsV0FBVyw4bUNBQ1gsaUJBQWlCLDhXQUNqQixhQUFhLDAxQkFDYixnQkFBZ0Isb0lBQ2hCLDRCQUE0QixzTUFDNUIsZ0JBQWdCLHdHQUNoQixnQkFBZ0IsMGRBQ2hCLG9CQUFvQiwrQkFDcEIsNEJBQTRCLHdGQUM1QixPQUFPLG9GQUNQLGdDQUFnQyxrR0FDaEMsa0JBQWtCOzsyRkFHVCw2QkFBNkI7a0JBakN6QyxTQUFTOzJCQUNGLEVBQUUsTUFBTSxFQUFFLFdBQVcsQ0FBQyxZQUFZLEVBQUUsRUFBRSxhQUdqQzt3QkFDVCwrQ0FBK0M7cUJBQ2hELG1CQUNnQix1QkFBdUIsQ0FBQyxNQUFNLGNBQ25DLElBQUksV0FDUDt3QkFDUCxVQUFVO3dCQUNWLGdCQUFnQjt3QkFDaEIsZUFBZTt3QkFDZixhQUFhO3dCQUNiLGNBQWM7d0JBQ2QsYUFBYTt3QkFDYixjQUFjO3dCQUNkLGtCQUFrQjt3QkFDbEIsY0FBYzt3QkFDZCxXQUFXO3dCQUNYLGlCQUFpQjt3QkFDakIsYUFBYTt3QkFDYixnQkFBZ0I7d0JBQ2hCLDRCQUE0Qjt3QkFDNUIsZ0JBQWdCO3dCQUNoQixnQkFBZ0I7d0JBQ2hCLG9CQUFvQjt3QkFDcEIsNEJBQTRCO3dCQUM1QixPQUFPO3dCQUNQLGdDQUFnQzt3QkFDaEMsa0JBQWtCO3FCQUNuQjs4QkFLd0IsVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnJlYWtwb2ludHMgfSBmcm9tICdAYW5ndWxhci9jZGsvbGF5b3V0JztcclxuaW1wb3J0IHsgTmdDbGFzcyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEFmdGVyVmlld0luaXQsIENoYW5nZURldGVjdGlvblN0cmF0ZWd5LCBDb21wb25lbnQsIE9uRGVzdHJveSwgT25Jbml0LCBWaWV3Q2hpbGQsIGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcclxuaW1wb3J0IHsgTWF0QmFkZ2VNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9iYWRnZSc7XHJcbmltcG9ydCB7IE1hdEJ1dHRvbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2J1dHRvbic7XHJcbmltcG9ydCB7IE1hdENoZWNrYm94TW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvY2hlY2tib3gnO1xyXG5pbXBvcnQgeyBNQVRfREFURVBJQ0tFUl9TQ1JPTExfU1RSQVRFR1lfRkFDVE9SWV9QUk9WSURFUiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RhdGVwaWNrZXInO1xyXG5pbXBvcnQgeyBNQVRfRElBTE9HX0RBVEEsIE1hdERpYWxvZ0NvbnRlbnQsIE1hdERpYWxvZ1JlZiB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL2RpYWxvZyc7XHJcbmltcG9ydCB7IE1hdERpdmlkZXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9kaXZpZGVyJztcclxuaW1wb3J0IHsgTWF0Rm9ybUZpZWxkTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvZm9ybS1maWVsZCc7XHJcbmltcG9ydCB7IE1hdEljb25Nb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pY29uJztcclxuaW1wb3J0IHsgTWF0SW5wdXRNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9pbnB1dCc7XHJcbmltcG9ydCB7IE1hdE1lbnVNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9tZW51JztcclxuaW1wb3J0IHsgTWF0UGFnaW5hdG9yTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvcGFnaW5hdG9yJztcclxuaW1wb3J0IHsgTWF0UHJvZ3Jlc3NCYXJNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9wcm9ncmVzcy1iYXInO1xyXG5pbXBvcnQgeyBNYXREcmF3ZXIsIE1hdFNpZGVuYXZNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9tYXRlcmlhbC9zaWRlbmF2JztcclxuaW1wb3J0IHsgTWF0VGFic01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL21hdGVyaWFsL3RhYnMnO1xyXG5pbXBvcnQgeyBNYXRUb29sdGlwTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvbWF0ZXJpYWwvdG9vbHRpcCc7XHJcbmltcG9ydCB7XHJcbiAgQ2xpcHBlckF1dGhvcnMsXHJcbiAgQ2xpcHBlckRvY3VtZW50Q2hhbmdlUmVhc29uLFxyXG4gIENsaXBwZXJNZXNzYWdlcyxcclxuICBDbGlwcGVyTW9kZWwsXHJcbiAgQ2xpcHBlck1vZGVscyxcclxuICBDbGlwcGVyU2VhcmNoRmFjZXRzU25hcHNob3QsXHJcbiAgQ2xpcHBlclNlYXJjaFJlc3VsdCxcclxuICBDbGlwcGVyU2VhcmNoVXRpbHMsXHJcbiAgQ2xpcHBlclNlY3RvclR5cGVzLFxyXG4gIENsaXBwZXJTZWN0b3JzLFxyXG4gIENsaXBwZXJTZWxlY3Rpb25Nb2RlLFxyXG4gIENsaXBwZXJTb3J0LFxyXG4gIENsaXBwZXJTb3VyY2VzXHJcbn0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jbGlwcGVyLmNvbW1vbic7XHJcbmltcG9ydCB7IFN5c3RlbVV0aWxzIH0gZnJvbSAnQGFyc2VkaXppb25pL2Fycy11dGlscy9jb3JlJztcclxuaW1wb3J0IHsgRXh0ZW5kZWRNb2R1bGUgfSBmcm9tICdAbmdicmFja2V0L25neC1sYXlvdXQvZXh0ZW5kZWQnO1xyXG5pbXBvcnQgeyBGbGV4TW9kdWxlIH0gZnJvbSAnQG5nYnJhY2tldC9uZ3gtbGF5b3V0L2ZsZXgnO1xyXG5pbXBvcnQgeyBmcm9tRXZlbnQgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgZGVib3VuY2VUaW1lLCB0YWtlVW50aWwgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudHNVdGlscyB9IGZyb20gJy4uLy4uL2RvY3VtZW50cyc7XHJcbmltcG9ydCB7IENsaXBwZXJEb2N1bWVudE1lbnVDb21wb25lbnQgfSBmcm9tICcuLi9kb2N1bWVudC1tZW51L2RvY3VtZW50LW1lbnUuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlclNlYXJjaERpYWxvZ0NvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1kaWFsb2cvc2VhcmNoLWRpYWxvZy5jb21wb25lbnQnO1xyXG5pbXBvcnQgeyBDbGlwcGVyU2VhcmNoRmFjZXRzQ29tcG9uZW50IH0gZnJvbSAnLi4vc2VhcmNoLWZhY2V0cy9zZWFyY2gtZmFjZXRzLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJTZWFyY2hGcmVlVGV4dEhlbHBDb21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtZnJlZS10ZXh0LWhlbHAvc2VhcmNoLWZyZWUtdGV4dC1oZWxwLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJTZWFyY2hGcmVlVGV4dFF1ZXJ5QnVpbGRlckNvbXBvbmVudCB9IGZyb20gJy4uL3NlYXJjaC1mcmVlLXRleHQtcXVlcnktYnVpbGRlci9zZWFyY2gtZnJlZS10ZXh0LXF1ZXJ5LWJ1aWxkZXIuY29tcG9uZW50JztcclxuaW1wb3J0IHsgQ2xpcHBlclNlYXJjaFJlc3VsdEl0ZW1Db21wb25lbnQgfSBmcm9tICcuLi9zZWFyY2gtcmVzdWx0LWl0ZW0vc2VhcmNoLXJlc3VsdC1pdGVtLmNvbXBvbmVudCc7XHJcbmltcG9ydCB7IENsaXBwZXJTZWFyY2hSZXN1bHRNYW5hZ2VyIH0gZnJvbSAnLi4vc2VhcmNoLXJlc3VsdC1tYW5hZ2VyL3NlYXJjaC1yZXN1bHQtbWFuYWdlcic7XHJcblxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBDbGlwcGVyQnJvd3NlckRpYWxvZ0RhdGEge1xyXG4gIHNlbGVjdGlvbk1vZGU/OiBDbGlwcGVyU2VsZWN0aW9uTW9kZSB8IG51bGwsXHJcbiAgc2VsZWN0YWJsZU1vZGVscz86IG51bWJlcltdIHwgbnVsbCxcclxuICBpbml0aWFsTW9kZWw/OiBudW1iZXIgfCBudWxsXHJcbn1cclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIGhvc3Q6IHsgJ0JpbmQnOiBTeXN0ZW1VdGlscy5nZW5lcmF0ZVVVSUQoKSB9LFxyXG4gIHRlbXBsYXRlVXJsOiAnLi9icm93c2VyLWRpYWxvZy5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4vYnJvd3Nlci1kaWFsb2cuY29tcG9uZW50LnNjc3MnXSxcclxuICBwcm92aWRlcnM6IFtcclxuICAgIE1BVF9EQVRFUElDS0VSX1NDUk9MTF9TVFJBVEVHWV9GQUNUT1JZX1BST1ZJREVSXHJcbiAgXSxcclxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaCxcclxuICBzdGFuZGFsb25lOiB0cnVlLFxyXG4gIGltcG9ydHM6IFtcclxuICAgIEZsZXhNb2R1bGUsXHJcbiAgICBNYXRUb29sdGlwTW9kdWxlLFxyXG4gICAgTWF0QnV0dG9uTW9kdWxlLFxyXG4gICAgTWF0SWNvbk1vZHVsZSxcclxuICAgIE1hdEJhZGdlTW9kdWxlLFxyXG4gICAgTWF0VGFic01vZHVsZSxcclxuICAgIEV4dGVuZGVkTW9kdWxlLFxyXG4gICAgTWF0Rm9ybUZpZWxkTW9kdWxlLFxyXG4gICAgTWF0SW5wdXRNb2R1bGUsXHJcbiAgICBGb3Jtc01vZHVsZSxcclxuICAgIE1hdENoZWNrYm94TW9kdWxlLFxyXG4gICAgTWF0TWVudU1vZHVsZSxcclxuICAgIE1hdERpdmlkZXJNb2R1bGUsXHJcbiAgICBDbGlwcGVyRG9jdW1lbnRNZW51Q29tcG9uZW50LFxyXG4gICAgTWF0RGlhbG9nQ29udGVudCxcclxuICAgIE1hdFNpZGVuYXZNb2R1bGUsXHJcbiAgICBNYXRQcm9ncmVzc0Jhck1vZHVsZSxcclxuICAgIENsaXBwZXJTZWFyY2hGYWNldHNDb21wb25lbnQsXHJcbiAgICBOZ0NsYXNzLFxyXG4gICAgQ2xpcHBlclNlYXJjaFJlc3VsdEl0ZW1Db21wb25lbnQsXHJcbiAgICBNYXRQYWdpbmF0b3JNb2R1bGVcclxuICBdLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgQ2xpcHBlckJyb3dzZXJEaWFsb2dDb21wb25lbnRcclxuICBleHRlbmRzIENsaXBwZXJTZWFyY2hSZXN1bHRNYW5hZ2VyXHJcbiAgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgQWZ0ZXJWaWV3SW5pdCB7XHJcbiAgQFZpZXdDaGlsZCgnZmlsdGVyUGFuZScpIGZpbHRlclBhbmUhOiBNYXREcmF3ZXI7XHJcblxyXG4gIHByaXZhdGUgaGVpZ2h0OiBudW1iZXIgPSAtMTtcclxuICBwcml2YXRlIGRpYWxvZ1JlZiA9IGluamVjdChNYXREaWFsb2dSZWY8Q2xpcHBlckJyb3dzZXJEaWFsb2dDb21wb25lbnQ+KTtcclxuICBwcm90ZWN0ZWQgZGlhbG9nRGF0YTogQ2xpcHBlckJyb3dzZXJEaWFsb2dEYXRhID0gaW5qZWN0KE1BVF9ESUFMT0dfREFUQSk7XHJcbiAgcHJvdGVjdGVkIHRpdGxlOiBzdHJpbmcgPSAnUmljZXJjYSBpbiBDbGlwcGVyJztcclxuICBwcm90ZWN0ZWQgc25hcHNob3Q6IENsaXBwZXJTZWFyY2hSZXN1bHQgPSB7XHJcbiAgICBzZWFyY2hJbmZvOiBudWxsLFxyXG4gICAgc2VhcmNoUGFyYW1zOiB7XHJcbiAgICAgIGZpcnN0OiAwLFxyXG4gICAgICBjb3VudDogMjVcclxuICAgIH0sXHJcbiAgfTtcclxuXHJcbiAgcHJvdGVjdGVkIGN1cnJlbnRNb2RlbDogc3RyaW5nID0gJ1R1dHRvJztcclxuICBwcm90ZWN0ZWQgY3VycmVudFNvcnQ6IHN0cmluZyA9ICdSaWxldmFuemEnO1xyXG5cclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICAvLyBVc2Ugc2VydmljZSBzbmFwc2hvdFxyXG4gICAgdGhpcy5zbmFwc2hvdCA9IHRoaXMuY2xpcHBlclNlcnZpY2Uuc25hcHNob3Q7XHJcbiAgICBpZiAoIXRoaXMuc25hcHNob3QpXHJcbiAgICAgIHRoaXMuc25hcHNob3QgPSB7XHJcbiAgICAgICAgc2VhcmNoSW5mbzogbnVsbCxcclxuICAgICAgICBzZWFyY2hQYXJhbXM6IG51bGwsXHJcbiAgICAgIH07XHJcbiAgICBpZiAodGhpcy5maWx0ZXJQYXJhbXMgPT0gbnVsbCkge1xyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcyA9IHtcclxuICAgICAgICBmaXJzdDogMCxcclxuICAgICAgICBjb3VudDogMTUsXHJcbiAgICAgIH07XHJcbiAgICAgIC8vIFN0b3JlIHNuYXBzaG90XHJcbiAgICAgIHRoaXMuY2xpcHBlclNlcnZpY2Uuc25hcHNob3QgPSB0aGlzLnNuYXBzaG90O1xyXG4gICAgfVxyXG5cclxuICAgIC8vIFVwZGF0ZSBtb2RlbFxyXG4gICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5pbml0aWFsTW9kZWwpIHtcclxuICAgICAgdGhpcy5jaGFuZ2VNb2RlbCh0aGlzLmRpYWxvZ0RhdGEuaW5pdGlhbE1vZGVsLCBmYWxzZSk7XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5icm9hZGNhc3RTZXJ2aWNlLmdldE1lc3NhZ2UoKVxyXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy51bnN1YnNjcmliZSkpXHJcbiAgICAgIC5zdWJzY3JpYmUoKG1lc3NhZ2U6IGFueSkgPT4ge1xyXG4gICAgICAgIGlmIChtZXNzYWdlLmlkID09PSBDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfU0VMRUNURURfSU5ORVIpIHtcclxuICAgICAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfU0VMRUNURUQsIG1lc3NhZ2UuZGF0YSk7XHJcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICAgICAgdGhpcy5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcblxyXG4gICAgLy8gUmVhY3QgdG8gd2luZG93IHNpemUgY2hhbmdlXHJcbiAgICBmcm9tRXZlbnQod2luZG93LCAncmVzaXplJylcclxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMudW5zdWJzY3JpYmUpLCBkZWJvdW5jZVRpbWUoNTAwKSlcclxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5jbGlwcGVyU2VydmljZS52aXNpYmxlID0gdHJ1ZTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCkge1xyXG4gICAgdGhpcy51bnN1YnNjcmliZS5uZXh0KCk7XHJcbiAgICB0aGlzLnVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XHJcbiAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnZpc2libGUgPSBmYWxzZTtcclxuICB9XHJcblxyXG5cclxuICBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XHJcbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcclxuICAgICAgLy8gSGFuZGxlIGZpbHRlciBwYW5lIFxyXG4gICAgICB0aGlzLmhhbmRsZUZpbHRlclBhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgIC8vIEhhbmRsZSBmYWNldHNcclxuICAgICAgaWYgKHRoaXMuZmFjZXRzKSB7XHJcbiAgICAgICAgdGhpcy5mYWNldHMuY2hhbmdlZFxyXG4gICAgICAgICAgLnN1YnNjcmliZSgodmFsdWU6IENsaXBwZXJTZWFyY2hGYWNldHNTbmFwc2hvdCkgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cyA9IHZhbHVlO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zbmFwc2hvdC5mYWNldHMuZnJvbURhdGUpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5mcm9tRGF0ZSA9IHRoaXMuc25hcHNob3QuZmFjZXRzLmZyb21EYXRlO1xyXG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnRvRGF0ZSA9IHRoaXMuc25hcHNob3QuZmFjZXRzLnRvRGF0ZTtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy55ZWFyID0gdGhpcy5zbmFwc2hvdC5mYWNldHMuZnJvbURhdGUuZ2V0RnVsbFllYXIoKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLnNuYXBzaG90LmZhY2V0cy5jaGFuZ2VkSW50ZXJ2YWwpIHtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy55ZWFyID0gbnVsbDtcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5mcm9tRGF0ZSA9IG51bGw7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMudG9EYXRlID0gbnVsbDtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAodGhpcy5zbmFwc2hvdC5mYWNldHMuc2VjdG9yIHx8IHRoaXMuc25hcHNob3QuZmFjZXRzLmNoYW5nZWRTZWN0b3IpXHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9yID0gdGhpcy5zbmFwc2hvdC5mYWNldHMuc2VjdG9yO1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zbmFwc2hvdC5mYWNldHMudHlwZSB8fCB0aGlzLnNuYXBzaG90LmZhY2V0cy5jaGFuZ2VkVHlwZSlcclxuICAgICAgICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy50eXBlID0gdGhpcy5zbmFwc2hvdC5mYWNldHMudHlwZTtcclxuICAgICAgICAgICAgaWYgKHRoaXMuc25hcHNob3QuZmFjZXRzLmF1dGhvciB8fCB0aGlzLnNuYXBzaG90LmZhY2V0cy5jaGFuZ2VkQXV0aG9yKVxyXG4gICAgICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLmF1dGhvciA9IHRoaXMuc25hcHNob3QuZmFjZXRzLmF1dGhvcjtcclxuICAgICAgICAgICAgdGhpcy5mZXRjaCh0cnVlKTtcclxuICAgICAgICAgIH0pO1xyXG4gICAgICB9XHJcbiAgICB9LCAwKTtcclxuICAgIHRoaXMucmVzaXplKCk7XHJcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gKiBSZXNpemUgXHJcbiAqL1xyXG4gIHByaXZhdGUgcmVzaXplKCkge1xyXG4gICAgc2V0VGltZW91dCgoKSA9PiB7XHJcbiAgICAgIGxldCBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2NsaXBwZXItYnJvd3Nlci1zY3JvbGxhYmxlJyk7XHJcbiAgICAgIGlmIChlbGVtKSB7XHJcbiAgICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5kaWFsb2dTZXJ2aWNlLmdldEN1cnJlbnREaWFsb2dTY3JvbGxhYmxlSGVpZ2h0KFxyXG4gICAgICAgICAgWydjbGlwcGVyLWJyb3dzZXItZml4ZWQnXSxcclxuICAgICAgICAgIHdpbmRvdy5pbm5lckhlaWdodFxyXG4gICAgICAgICk7XHJcbiAgICAgICAgaWYgKGhlaWdodCAhPSB0aGlzLmhlaWdodCkge1xyXG4gICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoJ3N0eWxlJywgJ2hlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQ7bWF4LWhlaWdodDonICsgaGVpZ2h0ICsgJ3B4ICFpbXBvcnRhbnQnKTtcclxuICAgICAgICAgIHRoaXMuaGVpZ2h0ID0gaGVpZ2h0O1xyXG4gICAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgICB9XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5yZXNpemUoKTtcclxuICAgICAgfVxyXG4gICAgfSwgMTAwKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuKiBTaG93IGhpZGUgZmlsdGVyIHBhbmUgbWFudWFsbHlcclxuKi9cclxuICBwcm90ZWN0ZWQgdG9nZ2xlRmlsdGVyUGFuZSgpIHtcclxuICAgIHRoaXMuZmlsdGVyUGFuZUNsb3NlZCA9ICF0aGlzLmZpbHRlclBhbmVDbG9zZWQ7XHJcbiAgICB0aGlzLmZpbHRlclBhbmU/LnRvZ2dsZSgpO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gICAqIEhhbmRsZSBmaWx0ZXIgcGFuZSB2aXNpYmlsaXR5XHJcbiAgICovXHJcbiAgcHJpdmF0ZSBoYW5kbGVGaWx0ZXJQYW5lVmlzaWJpbGl0eSgpIHtcclxuICAgIGlmICh0aGlzLmZpbHRlclBhbmUpIHtcclxuICAgICAgaWYgKHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5YU21hbGwpIHx8XHJcbiAgICAgICAgdGhpcy5icmVha3BvaW50T2JzZXJ2ZXIuaXNNYXRjaGVkKEJyZWFrcG9pbnRzLlNtYWxsKSB8fFxyXG4gICAgICAgIHRoaXMuYnJlYWtwb2ludE9ic2VydmVyLmlzTWF0Y2hlZChCcmVha3BvaW50cy5NZWRpdW0pKSB7XHJcbiAgICAgICAgaWYgKHRoaXMuZmlsdGVyUGFuZS5vcGVuZWQpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyUGFuZS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpbHRlclBhbmUubW9kZSA9ICdvdmVyJztcclxuICAgICAgICB0aGlzLmZpbHRlclBhbmUuZGlzYWJsZUNsb3NlID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYW5lSGFzQmFja2Ryb3AgPSB0cnVlO1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIGlmICghdGhpcy5maWx0ZXJQYW5lLm9wZW5lZCAmJiAhdGhpcy5maWx0ZXJQYW5lQ2xvc2VkKSB7XHJcbiAgICAgICAgICB0aGlzLmZpbHRlclBhbmUub3BlbigpO1xyXG4gICAgICAgIH0gZWxzZSBpZiAodGhpcy5maWx0ZXJQYW5lLm9wZW5lZCAmJiB0aGlzLmZpbHRlclBhbmVDbG9zZWQpIHtcclxuICAgICAgICAgIHRoaXMuZmlsdGVyUGFuZS5jbG9zZSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpbHRlclBhbmUubW9kZSA9ICdzaWRlJztcclxuICAgICAgICB0aGlzLmZpbHRlclBhbmUuZGlzYWJsZUNsb3NlID0gdHJ1ZTtcclxuICAgICAgICB0aGlzLmZpbHRlclBhbmVIYXNCYWNrZHJvcCA9IGZhbHNlO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogQ2hlY2tzIGlmIGRvY3VtZW50cyBjYW4gYmUgc2VsZWN0ZWQgYW5kIHJldHVybmVkIGFzIG1lc3NhZ2VcclxuICAgKi9cclxuICBjYW5TZWxlY3QoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgYWxsb3cgPVxyXG4gICAgICB0aGlzLnNlbGVjdGlvbiAmJlxyXG4gICAgICAoKHRoaXMuZGlhbG9nRGF0YS5zZWxlY3Rpb25Nb2RlID09PSAxICYmXHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY3VycmVudC5zZWxlY3RlZC5sZW5ndGggPT09IDEpIHx8XHJcbiAgICAgICAgKHRoaXMuZGlhbG9nRGF0YS5zZWxlY3Rpb25Nb2RlID09PSAyICYmXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jdXJyZW50LnNlbGVjdGVkLmxlbmd0aCA+IDEpIHx8XHJcbiAgICAgICAgKHRoaXMuZGlhbG9nRGF0YS5zZWxlY3Rpb25Nb2RlID09PSAzICYmXHJcbiAgICAgICAgICB0aGlzLnNlbGVjdGlvbi5jdXJyZW50LnNlbGVjdGVkLmxlbmd0aCA+IDApKTtcclxuICAgIGlmIChhbGxvdyAmJiB0aGlzLmRpYWxvZ0RhdGEuc2VsZWN0YWJsZU1vZGVscz8ubGVuZ3RoID4gMCkge1xyXG4gICAgICB0aGlzLnNlbGVjdGlvbi5jdXJyZW50LnNlbGVjdGVkLmZvckVhY2gobiA9PiB7XHJcbiAgICAgICAgaWYgKHRoaXMuZGlhbG9nRGF0YS5zZWxlY3RhYmxlTW9kZWxzLmluZGV4T2Yobi5tb2RlbCkgPT09IC0xKSB7XHJcbiAgICAgICAgICBhbGxvdyA9IGZhbHNlO1xyXG4gICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYWxsb3c7XHJcblxyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogU2VuZCBhIG1lc3NhZ2Ugd2l0aCBjdXJyZW50IHNlbGVjdGlvbiBhbmQgY2xvc2UgZGlhbG9nXHJcbiAgICovXHJcbiAgc2VsZWN0KCkge1xyXG4gICAgaWYgKHRoaXMuc2VsZWN0aW9uLmN1cnJlbnQuc2VsZWN0ZWQgJiYgdGhpcy5zZWxlY3Rpb24uY3VycmVudC5zZWxlY3RlZC5sZW5ndGggPiAwKSB7XHJcbiAgICAgIHRoaXMuYnJvYWRjYXN0U2VydmljZS5zZW5kTWVzc2FnZShcclxuICAgICAgICBDbGlwcGVyTWVzc2FnZXMuRE9DVU1FTlRfU0VMRUNURUQsXHJcbiAgICAgICAgdGhpcy5zZWxlY3Rpb24uY3VycmVudC5zZWxlY3RlZFxyXG4gICAgICApO1xyXG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xyXG4gICAgICB0aGlzLmNsb3NlKCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbG9zZSBkaWFsb2dcclxuICAgKiBAcGFyYW0gbmV3Um91dGU6IHRoZSBuZXcgcm91dGUgdG8gbmF2aWdhdGUgdG9cclxuICAgKi9cclxuICBjbG9zZShuZXdSb3V0ZTogYW55ID0gbnVsbCkge1xyXG4gICAgdGhpcy5kaWFsb2dSZWYuY2xvc2UobmV3Um91dGUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogUmVzZXQgc2Nyb2xsIHBvc2l0aW9uXHJcbiAgICovXHJcbiAgcmVzZXRTY3JvbGxQb3NpdGlvbigpIHtcclxuICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNjbGlwcGVyLXJlZmVyZW5jZXMtc2Nyb2xsZXInKS5zY3JvbGxUbygwLCAwKTtcclxuICB9XHJcblxyXG5cclxuICAvKipcclxuICAgKiBVcGRhdGUgc29ydFxyXG4gICAqL1xyXG4gIHVwZGF0ZVNvcnRPcHRpb25zKCkge1xyXG4gICAgc3dpdGNoICh0aGlzLmZpbHRlclBhcmFtcy5zb3J0TW9kZSkge1xyXG4gICAgICBjYXNlIENsaXBwZXJTb3J0LkRhdGVBc2M6XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U29ydCA9ICdEYXRhIGNyZS4nO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgICBjYXNlIENsaXBwZXJTb3J0LlBvcHVsYXJpdHk6XHJcbiAgICAgICAgdGhpcy5jdXJyZW50U29ydCA9ICdQb3BvbGFyaXTDoCc7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICAgIGNhc2UgQ2xpcHBlclNvcnQuUmVsZXZhbmNlOlxyXG4gICAgICAgIHRoaXMuY3VycmVudFNvcnQgPSAnUmlsZXZhbnphJztcclxuICAgICAgICBicmVhaztcclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5zb3J0TW9kZSA9IENsaXBwZXJTb3J0LkRhdGVEZXNjO1xyXG4gICAgICAgIHRoaXMuY3VycmVudFNvcnQgPSAnRGF0YSBkZWNyLic7XHJcbiAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuXHJcbiAgLyoqXHJcbiAgICogVXBkYXRlIGN1cnJlbnQgc2VhcmNoIGluZm9cclxuICAgKi9cclxuICBwcml2YXRlIHVwZGF0ZVNlYXJjaEluZm8oKSB7XHJcbiAgICBsZXQgc2kgPSBbXTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9yIHx8XHJcbiAgICAgICh0aGlzLmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy5zZWN0b3IpXHJcbiAgICApIHtcclxuICAgICAgbGV0IHMgPSBTeXN0ZW1VdGlscy5hcnJheUZpbmRCeUtleShcclxuICAgICAgICBDbGlwcGVyU2VjdG9ycyxcclxuICAgICAgICAndmFsdWUnLFxyXG4gICAgICAgIHRoaXMuZmFjZXRzICYmIHRoaXMuc25hcHNob3QuZmFjZXRzLnNlY3RvclxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy5zZWN0b3JcclxuICAgICAgICAgIDogdGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9yXHJcbiAgICAgICk7XHJcbiAgICAgIGlmIChzKSB7XHJcbiAgICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgICBmaWVsZDogJ3NldHRvcmUnLFxyXG4gICAgICAgICAgdmFsdWU6IHMubmFtZSxcclxuICAgICAgICAgIHNlcDogc2kubGVuZ3RoID4gMCxcclxuICAgICAgICB9KTtcclxuICAgICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgcyA9IFN5c3RlbVV0aWxzLmFycmF5RmluZEJ5S2V5KFxyXG4gICAgICAgICAgQ2xpcHBlck1vZGVscyxcclxuICAgICAgICAgICd2YWx1ZScsXHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy5zZWN0b3JcclxuICAgICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy5zZWN0b3JcclxuICAgICAgICAgICAgOiB0aGlzLmZpbHRlclBhcmFtcy5zZWN0b3JcclxuICAgICAgICApO1xyXG4gICAgICAgIGlmIChzKSB7XHJcbiAgICAgICAgICBzaS5wdXNoKHtcclxuICAgICAgICAgICAgZmllbGQ6ICdzZXppb25lJyxcclxuICAgICAgICAgICAgdmFsdWU6IHMubmFtZSxcclxuICAgICAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLmF1dGhvciB8fFxyXG4gICAgICAodGhpcy5zbmFwc2hvdC5mYWNldHMgJiYgdGhpcy5zbmFwc2hvdC5mYWNldHMuYXV0aG9yKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCBhID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kQnlLZXkoXHJcbiAgICAgICAgQ2xpcHBlckF1dGhvcnMsXHJcbiAgICAgICAgJ3ZhbHVlJyxcclxuICAgICAgICB0aGlzLmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy5hdXRob3JcclxuICAgICAgICAgID8gdGhpcy5zbmFwc2hvdC5mYWNldHMuYXV0aG9yXHJcbiAgICAgICAgICA6IHRoaXMuZmlsdGVyUGFyYW1zLmF1dGhvclxyXG4gICAgICApO1xyXG4gICAgICBpZiAoYSkge1xyXG4gICAgICAgIHNpLnB1c2goe1xyXG4gICAgICAgICAgZmllbGQ6ICdhdXRvcmUnLFxyXG4gICAgICAgICAgdmFsdWU6IGEuYXV0aG9yRGVzY3JpcHRpb24sXHJcbiAgICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgICAgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy50b3BpYylcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICdhcmdvbWVudG8nLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmZpbHRlclBhcmFtcy50b3BpYyxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLnRheG9ub215KVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ2FyZ29tZW50bycsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuZmlsdGVyUGFyYW1zLnRheG9ub215Tm9kZSxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLm51bWJlcilcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICdudW1lcm8nLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmZpbHRlclBhcmFtcy5udW1iZXIsXHJcbiAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICB9KTtcclxuICAgIGlmIChcclxuICAgICAgIXRoaXMuc25hcHNob3QuaW50ZXJ2YWwgJiZcclxuICAgICAgKHRoaXMuZmlsdGVyUGFyYW1zLmZyb21EYXRlIHx8XHJcbiAgICAgICAgKHRoaXMuc25hcHNob3QuZmFjZXRzICYmXHJcbiAgICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cy5mcm9tRGF0ZSAmJlxyXG4gICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMubW9kZWwgIT09XHJcbiAgICAgICAgICBDbGlwcGVyTW9kZWwuQWdnaW9ybmFtZW50b05vcm1hdGl2bykpXHJcbiAgICApIHtcclxuICAgICAgbGV0IGQxID1cclxuICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy5mcm9tRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy5mcm9tRGF0ZVxyXG4gICAgICAgICAgOiB0aGlzLmZpbHRlclBhcmFtcy5mcm9tRGF0ZTtcclxuICAgICAgY29uc3QgZDIgPVxyXG4gICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzICYmIHRoaXMuc25hcHNob3QuZmFjZXRzLnRvRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy50b0RhdGVcclxuICAgICAgICAgIDogdGhpcy5maWx0ZXJQYXJhbXMudG9EYXRlO1xyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogIWQyID8gJ2luIGRhdGEnIDogJ2RhIGRhdGEnLFxyXG4gICAgICAgIHZhbHVlOiBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGQxKSxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKCF0aGlzLnNuYXBzaG90LmludGVydmFsICYmXHJcbiAgICAgICh0aGlzLmZpbHRlclBhcmFtcy50b0RhdGUgfHxcclxuICAgICAgICAodGhpcy5zbmFwc2hvdC5mYWNldHMgJiZcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzLnRvRGF0ZSAmJlxyXG4gICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMubW9kZWwgIT09XHJcbiAgICAgICAgICBDbGlwcGVyTW9kZWwuQWdnaW9ybmFtZW50b05vcm1hdGl2bykpXHJcbiAgICApIHtcclxuICAgICAgbGV0IGQgPVxyXG4gICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzICYmIHRoaXMuc25hcHNob3QuZmFjZXRzLnRvRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy50b0RhdGVcclxuICAgICAgICAgIDogdGhpcy5maWx0ZXJQYXJhbXMudG9EYXRlO1xyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ2EgZGF0YScsXHJcbiAgICAgICAgdmFsdWU6IFN5c3RlbVV0aWxzLmZvcm1hdERhdGUoZCksXHJcbiAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLnNuYXBzaG90LmludGVydmFsKVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ2ludGVydmFsbG8nLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLnNuYXBzaG90LmludGVydmFsLFxyXG4gICAgICAgIHNlcDogc2kubGVuZ3RoID4gMCxcclxuICAgICAgfSk7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJQYXJhbXMuc291cmNlKVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ2ZvbnRlJyxcclxuICAgICAgICB2YWx1ZTogU3lzdGVtVXRpbHMuYXJyYXlHZXRWYWx1ZShcclxuICAgICAgICAgIENsaXBwZXJTb3VyY2VzLFxyXG4gICAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuc291cmNlXHJcbiAgICAgICAgKSxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLnNvdXJjZU51bWJlcilcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICdudW0uIGZvbnRlJyxcclxuICAgICAgICB2YWx1ZTogdGhpcy5maWx0ZXJQYXJhbXMuc291cmNlTnVtYmVyLFxyXG4gICAgICAgIHNlcDogc2kubGVuZ3RoID4gMCxcclxuICAgICAgfSk7XHJcbiAgICBpZiAoXHJcbiAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnNvdXJjZUZyb21EYXRlIHx8XHJcbiAgICAgICh0aGlzLnNuYXBzaG90LmZhY2V0cyAmJlxyXG4gICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzLmZyb21EYXRlICYmXHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMubW9kZWwgPT09XHJcbiAgICAgICAgQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8pXHJcbiAgICApIHtcclxuICAgICAgbGV0IGQxID1cclxuICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy5mcm9tRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy5mcm9tRGF0ZVxyXG4gICAgICAgICAgOiB0aGlzLmZpbHRlclBhcmFtcy5zb3VyY2VGcm9tRGF0ZTtcclxuICAgICAgY29uc3QgZDIgPVxyXG4gICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzICYmIHRoaXMuc25hcHNob3QuZmFjZXRzLnRvRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy50b0RhdGVcclxuICAgICAgICAgIDogdGhpcy5maWx0ZXJQYXJhbXMuc291cmNlVG9EYXRlO1xyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogIWQyID8gJ2luIGRhdGEgZm9udGUnIDogJ2RhIGRhdGEgZm9udGUnLFxyXG4gICAgICAgIHZhbHVlOiBTeXN0ZW1VdGlscy5mb3JtYXREYXRlKGQxKSxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy5zb3VyY2VUb0RhdGUgfHxcclxuICAgICAgKHRoaXMuc25hcHNob3QuZmFjZXRzICYmXHJcbiAgICAgICAgdGhpcy5zbmFwc2hvdC5mYWNldHMudG9EYXRlICYmXHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMubW9kZWwgPT09XHJcbiAgICAgICAgQ2xpcHBlck1vZGVsLkFnZ2lvcm5hbWVudG9Ob3JtYXRpdm8pXHJcbiAgICApIHtcclxuICAgICAgbGV0IGQgPVxyXG4gICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzICYmIHRoaXMuc25hcHNob3QuZmFjZXRzLnRvRGF0ZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy50b0RhdGVcclxuICAgICAgICAgIDogdGhpcy5maWx0ZXJQYXJhbXMuc291cmNlVG9EYXRlO1xyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ2EgZGF0YSBmb250ZScsXHJcbiAgICAgICAgdmFsdWU6IFN5c3RlbVV0aWxzLmZvcm1hdERhdGUoZCksXHJcbiAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICB9KTtcclxuICAgIH1cclxuICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy50ZXh0KVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ3Rlc3RvJyxcclxuICAgICAgICB2YWx1ZTogdGhpcy5maWx0ZXJQYXJhbXMudGV4dCxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKFxyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy50eXBlIHx8XHJcbiAgICAgICh0aGlzLnNuYXBzaG90LmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy50eXBlKVxyXG4gICAgKSB7XHJcbiAgICAgIGxldCB0ID0gU3lzdGVtVXRpbHMuYXJyYXlGaW5kQnlLZXkoXHJcbiAgICAgICAgQ2xpcHBlclNlY3RvclR5cGVzLFxyXG4gICAgICAgICd2YWx1ZScsXHJcbiAgICAgICAgdGhpcy5zbmFwc2hvdC5mYWNldHMgJiYgdGhpcy5zbmFwc2hvdC5mYWNldHMudHlwZVxyXG4gICAgICAgICAgPyB0aGlzLnNuYXBzaG90LmZhY2V0cy50eXBlXHJcbiAgICAgICAgICA6IHRoaXMuZmlsdGVyUGFyYW1zLnR5cGVcclxuICAgICAgKTtcclxuICAgICAgaWYgKHQpIHtcclxuICAgICAgICBzaS5wdXNoKHtcclxuICAgICAgICAgIGZpZWxkOiAndGlwbycsXHJcbiAgICAgICAgICB2YWx1ZTogdC5kb2N1bWVudFR5cGVEZXNjcmlwdGlvbixcclxuICAgICAgICAgIHNlcDogc2kubGVuZ3RoID4gMCxcclxuICAgICAgICB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLnNob3dVbnJlYWREb2N1bWVudHNPbmx5KVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ3N0YXRvJyxcclxuICAgICAgICB2YWx1ZTogJ25vbiBsZXR0aScsXHJcbiAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICB9KTtcclxuICAgIGlmIChcclxuICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuY2hhbmdlUmVhc29uIHx8XHJcbiAgICAgICh0aGlzLnNuYXBzaG90LmZhY2V0cyAmJiB0aGlzLnNuYXBzaG90LmZhY2V0cy5yZWFzb24pXHJcbiAgICApXHJcbiAgICAgIHNpLnB1c2goe1xyXG4gICAgICAgIGZpZWxkOiAndGlwbyBtb2QuJyxcclxuICAgICAgICB2YWx1ZTogU3lzdGVtVXRpbHMuYXJyYXlHZXRWYWx1ZShcclxuICAgICAgICAgIENsaXBwZXJEb2N1bWVudENoYW5nZVJlYXNvbixcclxuICAgICAgICAgIHRoaXMuc25hcHNob3QuZmFjZXRzICYmIHRoaXMuc25hcHNob3QuZmFjZXRzLnJlYXNvblxyXG4gICAgICAgICAgICA/IHRoaXMuc25hcHNob3QuZmFjZXRzLnJlYXNvblxyXG4gICAgICAgICAgICA6IHRoaXMuZmlsdGVyUGFyYW1zLmNoYW5nZVJlYXNvblxyXG4gICAgICAgICksXHJcbiAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICB9KTtcclxuICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy5jaGFuZ2VkTnVtYmVyKVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ251bS4gbW9kaWZpY2F0bycsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuZmlsdGVyUGFyYW1zLmNoYW5nZWROdW1iZXIsXHJcbiAgICAgICAgc2VwOiBzaS5sZW5ndGggPiAwLFxyXG4gICAgICB9KTtcclxuICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy5jaGFuZ2VkWWVhcilcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICdhbm5vIG1vZGlmaWNhdG8nLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmZpbHRlclBhcmFtcy5jaGFuZ2VkWWVhcixcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLmNoYW5nZWRUaXRsZSlcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICd0aXRvbG8gbW9kaWZpY2F0bycsXHJcbiAgICAgICAgdmFsdWU6IHRoaXMuZmlsdGVyUGFyYW1zLmNoYW5nZWRUaXRsZSxcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLm1vZGlmaWVyTnVtYmVyKVxyXG4gICAgICBzaS5wdXNoKHtcclxuICAgICAgICBmaWVsZDogJ251bS4gbW9kaWZpY2FudGUnLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmZpbHRlclBhcmFtcy5tb2RpZmllck51bWJlcixcclxuICAgICAgICBzZXA6IHNpLmxlbmd0aCA+IDAsXHJcbiAgICAgIH0pO1xyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLm1vZGlmaWVyWWVhcilcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICdhbm5vIG1vZGlmaWNhbnRlJyxcclxuICAgICAgICB2YWx1ZTogdGhpcy5maWx0ZXJQYXJhbXMubW9kaWZpZXJZZWFyLFxyXG4gICAgICAgIHNlcDogc2kubGVuZ3RoID4gMCxcclxuICAgICAgfSk7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJQYXJhbXMubW9kaWZpZXJUaXRsZSlcclxuICAgICAgc2kucHVzaCh7XHJcbiAgICAgICAgZmllbGQ6ICd0aXRvbG8gbW9kaWZpY2FudGUnLFxyXG4gICAgICAgIHZhbHVlOiB0aGlzLmZpbHRlclBhcmFtcy5tb2RpZmllclRpdGxlLFxyXG4gICAgICAgIHNlcDogc2kubGVuZ3RoID4gMCxcclxuICAgICAgfSk7XHJcblxyXG4gICAgdGhpcy5zbmFwc2hvdC5zZWFyY2hJbmZvID0gc2k7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogQ2hhbmdlIHNlYXJjaCBtb2RlbFxyXG4gKiBAcGFyYW0gbW9kZWwgOiB0aGUgbmV3IGRvY3VtZW50IG1vZGVsIFxyXG4gKiBAcGFyYW0gZmV0Y2ggOiB0cnVlIGlmIGRhdGEgbXVzdCBiZSBmZXRjaGVkLiBEZWZhdWx0IGlzIHRydWVcclxuICovXHJcbiAgY2hhbmdlTW9kZWwobW9kZWw6IG51bWJlciA9IG51bGwsIGZldGNoOiBib29sZWFuID0gdHJ1ZSkge1xyXG4gICAgdGhpcy5maWx0ZXJQYXJhbXMubW9kZWwgPSBtb2RlbDtcclxuICAgIHN3aXRjaCAobW9kZWwpIHtcclxuICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuQWdnaW9ybmFtZW50b05vcm1hdGl2bzogdGhpcy5jdXJyZW50TW9kZWwgPSBcIkdhenpldHRlIGUgYm9sbGV0dGluaVwiOyBicmVhaztcclxuICAgICAgY2FzZSBDbGlwcGVyTW9kZWwuTm9ybWF0aXZhVmlnZW50ZTogdGhpcy5jdXJyZW50TW9kZWwgPSBcIk5vcm1hdGl2YSB2aWdlbnRlXCI7IGJyZWFrO1xyXG4gICAgICBkZWZhdWx0OlxyXG4gICAgICAgIHRoaXMuY3VycmVudE1vZGVsID0gXCJUdXR0b1wiO1xyXG4gICAgICAgIGJyZWFrO1xyXG4gICAgfVxyXG4gICAgaWYgKGZldGNoKVxyXG4gICAgICB0aGlzLmZldGNoKHRydWUpO1xyXG4gIH1cclxuXHJcbiAgLyoqXHJcbiAgICogQXBwbHkgYSBzb3J0XHJcbiAgICogQHBhcmFtIG1vZGUgOiB0aGUgc29ydCBtb2RlXHJcbiAgICovXHJcbiAgc29ydEJ5KG1vZGU6IG51bWJlcikge1xyXG4gICAgdGhpcy5maWx0ZXJQYXJhbXMuc29ydE1vZGUgPSBtb2RlO1xyXG4gICAgdGhpcy51cGRhdGVTb3J0T3B0aW9ucygpO1xyXG4gICAgdGhpcy5mZXRjaChmYWxzZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogR2V0IGZhY2V0c1xyXG4gKi9cclxuICBmZXRjaEZhY2V0cygpIHtcclxuICAgIGlmICghdGhpcy5jbGlwcGVyU2VydmljZS5sb2dnZWRJbikgcmV0dXJuO1xyXG4gICAgdGhpcy5mYWNldHMuYnVzeS5zZXQodHJ1ZSk7XHJcbiAgICB0aGlzLmNsaXBwZXJTZXJ2aWNlLnJlZmVyZW5jZXNGYWNldHModGhpcy5maWx0ZXJQYXJhbXMpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyKSA9PiB7XHJcbiAgICAgICAgICBpZiAoci5zdWNjZXNzKSB7XHJcbiAgICAgICAgICAgIHRoaXMucHJlcGFyZVJlc3VsdHMobnVsbCwgci52YWx1ZS5mYWNldHMpO1xyXG4gICAgICAgICAgICB0aGlzLmhhbmRsZUZpbHRlclBhbmVWaXNpYmlsaXR5KCk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgdGhpcy5yZXNldFNjcm9sbFBvc2l0aW9uKCk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5mYWNldHMuYnVzeS5zZXQoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBQZXJmb3JtIGEgc2VhcmNoIHVzaW5nIGN1cnJlbnQgcGFyYW1zXHJcbiAgICovXHJcbiAgZmV0Y2gobmV3U2VhcmNoOiBib29sZWFuID0gZmFsc2UpIHtcclxuICAgIHRoaXMuZGlhbG9nU2VydmljZS5idXN5KCdSaWNlcmNhIGluIGNvcnNvLi4uJyk7XHJcbiAgICB0aGlzLmZpbHRlclBhcmFtcy5jb3VudCA9IDE1O1xyXG4gICAgaWYgKG5ld1NlYXJjaCkge1xyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy5maXJzdCA9IDA7XHJcbiAgICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy50ZXh0KVxyXG4gICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnNvcnRNb2RlID0gQ2xpcHBlclNvcnQuUmVsZXZhbmNlO1xyXG4gICAgICBlbHNlIGlmICghdGhpcy5maWx0ZXJQYXJhbXMuc29ydE1vZGUpXHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMuc29ydE1vZGUgPSBDbGlwcGVyU29ydC5EYXRlRGVzYztcclxuICAgICAgdGhpcy51cGRhdGVTb3J0T3B0aW9ucygpO1xyXG4gICAgfVxyXG4gICAgaWYgKHRoaXMuZmlsdGVyUGFyYW1zLnllYXIgPiAwKSB7XHJcbiAgICAgIGNvbnN0IHllYXIgPSB0aGlzLmZpbHRlclBhcmFtcy55ZWFyO1xyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy5mcm9tRGF0ZSA9IG5ldyBEYXRlKHllYXIsIDAsIDEsIDIpO1xyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy50b0RhdGUgPSBuZXcgRGF0ZSh5ZWFyLCAxMSwgMzEsIDIpO1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgdGhpcy5maWx0ZXJQYXJhbXMueWVhciA9IG51bGw7XHJcbiAgICB9XHJcbiAgICBpZiAodGhpcy5maWx0ZXJQYXJhbXMudGV4dCkge1xyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy50ZXh0ID0gQ2xpcHBlclNlYXJjaFV0aWxzLm5vcm1hbGl6ZVRleHRRdWVyeSh0aGlzLmZpbHRlclBhcmFtcy50ZXh0KTtcclxuICAgIH1cclxuICAgIHRoaXMuY2xpcHBlclNlcnZpY2UucXVlcnkodGhpcy5maWx0ZXJQYXJhbXMpXHJcbiAgICAgIC5zdWJzY3JpYmUoe1xyXG4gICAgICAgIG5leHQ6IChyOiBhbnkpID0+IHtcclxuICAgICAgICAgIGlmICghci5zdWNjZXNzKSB0aGlzLmRpYWxvZ1NlcnZpY2UuZXJyb3Ioci5tZXNzYWdlKTtcclxuICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLnByZXBhcmVSZXN1bHRzKHIudmFsdWUpO1xyXG5cclxuICAgICAgICAgICAgLy8gSGFuZGxlIGZhY2V0c1xyXG4gICAgICAgICAgICBpZiAodGhpcy5zbmFwc2hvdC50b3RhbCA+IDApIHtcclxuICAgICAgICAgICAgICB0aGlzLnNuYXBzaG90LmZhY2V0cy5oYXNUb29NYW55UmVzdWx0cyA9IHRoaXMuc25hcHNob3QudG90YWwgPj0gMTAwMDtcclxuICAgICAgICAgICAgICBpZiAobmV3U2VhcmNoKVxyXG4gICAgICAgICAgICAgICAgLy8gVXBkYXRlIGZhY2V0c1xyXG4gICAgICAgICAgICAgICAgdGhpcy5mZXRjaEZhY2V0cygpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgIHRoaXMuZmFjZXRzLnJlc2V0KCk7XHJcbiAgICAgICAgICAgICAgdGhpcy5maWx0ZXJQYW5lLmNsb3NlKCk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIGlmIChuZXdTZWFyY2gpIHtcclxuICAgICAgICAgICAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRoaXMucmVzZXRTY3JvbGxQb3NpdGlvbigpO1xyXG5cclxuICAgICAgICAgICAgLy8gVXBkYXRlIHZpZXdcclxuICAgICAgICAgICAgdGhpcy51cGRhdGVTZWFyY2hJbmZvKCk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogKCkgPT4ge1xyXG4gICAgICAgICAgdGhpcy5kaWFsb2dTZXJ2aWNlLmNsZWFyQnVzeSgpO1xyXG4gICAgICAgIH1cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGEgbmV3IHBhZ2UgcmVzdWx0XHJcbiAgICogQHBhcmFtIGUgOiB0aGUgTWF0UGFnaW5hdG9yIFBhZ2VFdmVudCBkYXRhXHJcbiAgICovXHJcbiAgZmV0Y2hNb3JlKGU6IGFueSkge1xyXG4gICAgbGV0IGZpcnN0ID0gZS5wYWdlSW5kZXggKiB0aGlzLmZpbHRlclBhcmFtcy5jb3VudDtcclxuICAgIHRoaXMuZmlsdGVyUGFyYW1zLmZpcnN0ID0gZmlyc3Q7XHJcbiAgICB0aGlzLmZldGNoKCk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBDbGVhciBzZWFyY2hcclxuICAgKi9cclxuICBjbGVhclNlYXJjaCgpIHtcclxuICAgIHRoaXMuY3VycmVudE1vZGVsID0gJ05vcm1hdGl2YSB2aWdlbnRlJztcclxuICAgIHRoaXMuc25hcHNob3QuaXRlbXMgPSBudWxsO1xyXG4gICAgdGhpcy5zbmFwc2hvdC50b3RhbCA9IDA7XHJcbiAgICB0aGlzLnNuYXBzaG90LmZhY2V0cyA9IG51bGw7XHJcbiAgICB0aGlzLmZhY2V0cy5yZXNldCgpO1xyXG4gICAgdGhpcy5maWx0ZXJQYXJhbXMgPSB7XHJcbiAgICAgIGZpcnN0OiAwLFxyXG4gICAgICBjb3VudDogMTUsXHJcbiAgICB9O1xyXG4gICAgdGhpcy5maWx0ZXJQYW5lLmNsb3NlKCk7XHJcbiAgICB0aGlzLnVwZGF0ZVNlYXJjaEluZm8oKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIE9wZW4gYW4gaXRlbVxyXG4gICAqIEBwYXJhbSBkb2N1bWVudElkIDogdGhlIGRvY3VtZW50IGlkXHJcbiAgICogQHBhcmFtIG5ld1dpbmRvdzogdHJ1ZSBpZiB0aGUgZG9jdW1lbnQgbXVzdCBiZSBvcGVuIGludG8gYSBuZXcgd2luZG93XHJcbiAgICovXHJcbiAgb3Blbihkb2N1bWVudElkOiBzdHJpbmcsIG5ld1dpbmRvdzogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICBpZiAoIW5ld1dpbmRvdykgdGhpcy5vcGVuRG9jdW1lbnQoZG9jdW1lbnRJZCk7XHJcbiAgICBlbHNlIHdpbmRvdy5vcGVuKCcvZG9jdW1lbnRvLycgKyBkb2N1bWVudElkLCAnX2JsYW5rJyk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBPcGVuIGEgZG9jdW1lbnRcclxuICAgKiBAcGFyYW0gZG9jdW1lbnRJZCA6IHRoZSBkb2N1bWVudCBpZFxyXG4gICAqL1xyXG4gIHByaXZhdGUgb3BlbkRvY3VtZW50KGRvY3VtZW50SWQ6IHN0cmluZykge1xyXG4gICAgaWYgKCFkb2N1bWVudElkKSByZXR1cm47XHJcbiAgICBDbGlwcGVyRG9jdW1lbnRzVXRpbHMub3BlbkRvY3VtZW50KFxyXG4gICAgICBkb2N1bWVudElkLFxyXG4gICAgICB0aGlzLmZpbHRlclBhcmFtcy50ZXh0LFxyXG4gICAgICB0aGlzLmRpYWxvZ0RhdGEuc2VsZWN0aW9uTW9kZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIENvbXBvc2UgYSBmcmVlIHRleHQgc2VhcmNoIHF1ZXJ5XHJcbiAgICovXHJcbiAgY29tcG9zZVNlYXJjaCgpIHtcclxuICAgIGxldCBkID0gdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlclNlYXJjaEZyZWVUZXh0UXVlcnlCdWlsZGVyQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ2Nvc3RydWlzY2kgcmljZXJjYScsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogdHJ1ZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnNjAwcHgnLFxyXG4gICAgICB3aWR0aDogJzk5JScsXHJcbiAgICB9KTtcclxuICAgIGQuY29tcG9uZW50SW5zdGFuY2UuZG9uZVxyXG4gICAgICAuc3Vic2NyaWJlKChyOiBhbnkpID0+IHtcclxuICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy50ZXh0ID0gci5xdWVyeTtcclxuICAgICAgICBkLmNsb3NlKCk7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcblxyXG4gIC8qKlxyXG4gKiBQZXJmb3JtIHNlYXJjaFxyXG4gKi9cclxuICBzZWFyY2goKSB7XHJcbiAgICBpZiAodGhpcy5maWx0ZXJQYXJhbXMuc2VjdG9yID09PSB0aGlzLnNuYXBzaG90LmZhY2V0cy5zZWN0b3IpXHJcbiAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnNlY3RvciA9IG51bGw7XHJcblxyXG4gICAgLy8gUmVzZXQgcGFnaW5hdG9yXHJcbiAgICBpZiAodGhpcy5wYWdpbmF0b3IpIHRoaXMucGFnaW5hdG9yLnBhZ2VJbmRleCA9IDA7XHJcblxyXG4gICAgLy8gUmVzZXQgZmFjZXRzIHNlYXJjaFxyXG4gICAgdGhpcy5mYWNldHMucmVzZXQoKTtcclxuXHJcbiAgICAvLyBEbyBzZWFyY2hcclxuICAgIHRoaXMuZmV0Y2godHJ1ZSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBTaG93IGFkdmFuY2VkIHNlYXJjaFxyXG4gICAqL1xyXG4gIGFkdmFuY2VkU2VhcmNoKCkge1xyXG4gICAgbGV0IGQgPSB0aGlzLmRpYWxvZ1NlcnZpY2Uub3BlbihDbGlwcGVyU2VhcmNoRGlhbG9nQ29tcG9uZW50LCB7XHJcbiAgICAgIGFyaWFMYWJlbDogJ3JpY2VyY2EgYXZhbnphdGEnLFxyXG4gICAgICBhdXRvRm9jdXM6IGZhbHNlLFxyXG4gICAgICByZXN0b3JlRm9jdXM6IGZhbHNlLFxyXG4gICAgICBkaXNhYmxlQ2xvc2U6IGZhbHNlLFxyXG4gICAgICBkYXRhOiB7XHJcbiAgICAgICAgcGFyYW1zOiB0aGlzLmZpbHRlclBhcmFtcyxcclxuICAgICAgICBlbmFibGVSZWFkOiBmYWxzZSxcclxuICAgICAgICBlbmFibGVTZWN0b3I6IHRydWUsXHJcbiAgICAgICAgZW5hYmxlVHlwZTogdHJ1ZSxcclxuICAgICAgICBlbmFibGVBdXRob3I6IHRydWUsXHJcbiAgICAgICAgZW5hYmxlVG9waWM6IHRydWUsXHJcbiAgICAgICAgZW5hYmxlVGV4dDogdHJ1ZSxcclxuICAgICAgICBlbmFibGVEb2N1bWVudDogdHJ1ZSxcclxuICAgICAgICBlbmFibGVTb3VyY2U6IHRydWUsXHJcbiAgICAgIH0sXHJcbiAgICAgIG1pbldpZHRoOiAnMzc1cHgnLFxyXG4gICAgICBtYXhXaWR0aDogJzcwMHB4JyxcclxuICAgICAgd2lkdGg6ICc5OSUnLFxyXG4gICAgfSk7XHJcbiAgICBkLmNvbXBvbmVudEluc3RhbmNlLmRvbmVcclxuICAgICAgLnN1YnNjcmliZSgocjogYW55KSA9PiB7XHJcbiAgICAgICAgLy8gVXBkYXRlIHNlYXJjaCBwYXJhbXNcclxuICAgICAgICByLm1vZGVsID0gdGhpcy5maWx0ZXJQYXJhbXMubW9kZWw7XHJcbiAgICAgICAgdGhpcy5maWx0ZXJQYXJhbXMgPSByO1xyXG4gICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLmZpcnN0ID0gMDtcclxuICAgICAgICB0aGlzLmZpbHRlclBhcmFtcy5jb3VudCA9IDE1O1xyXG4gICAgICAgIGlmICh0aGlzLmZpbHRlclBhcmFtcy5zZWN0b3IgPT09IHRoaXMuc25hcHNob3QuZmFjZXRzLnNlY3RvcilcclxuICAgICAgICAgIHRoaXMuZmlsdGVyUGFyYW1zLnNlY3RvciA9IG51bGw7XHJcblxyXG4gICAgICAgIC8vIFJlc2V0IHBhZ2luYXRvclxyXG4gICAgICAgIGlmICh0aGlzLnBhZ2luYXRvcikgdGhpcy5wYWdpbmF0b3IucGFnZUluZGV4ID0gMDtcclxuXHJcbiAgICAgICAgLy8gUmVzZXQgZmFjZXRzIHNlYXJjaFxyXG4gICAgICAgIHRoaXMuZmFjZXRzLnJlc2V0KCk7XHJcblxyXG4gICAgICAgIC8vIERvIHNlYXJjaFxyXG4gICAgICAgIHRoaXMuZmV0Y2godHJ1ZSk7XHJcblxyXG4gICAgICAgIC8vIEZpbmlzaGVkXHJcbiAgICAgICAgZC5jbG9zZSgpO1xyXG5cclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICogU2hvdyBmcmVlIHRleHQgaGVscFxyXG4gKi9cclxuICBoZWxwU2VhcmNoKCkge1xyXG4gICAgdGhpcy5kaWFsb2dTZXJ2aWNlLm9wZW4oQ2xpcHBlclNlYXJjaEZyZWVUZXh0SGVscENvbXBvbmVudCwge1xyXG4gICAgICBhcmlhTGFiZWw6ICdpbmZvcm1hemlvbmkgcmljZXJjYScsXHJcbiAgICAgIGF1dG9Gb2N1czogZmFsc2UsXHJcbiAgICAgIHJlc3RvcmVGb2N1czogdHJ1ZSxcclxuICAgICAgZGlzYWJsZUNsb3NlOiBmYWxzZSxcclxuICAgICAgbWluV2lkdGg6ICczNzVweCcsXHJcbiAgICAgIG1heFdpZHRoOiAnODAwcHgnLFxyXG4gICAgICB3aWR0aDogJzk5JScsXHJcbiAgICB9KTtcclxuXHJcbiAgfVxyXG5cclxuXHJcbn1cclxuIiwiPGRpdiBpZD1cImNsaXBwZXItYnJvd3Nlci1maXhlZFwiPlxyXG4gIDxkaXYgY2xhc3M9XCJjbGlwcGVyLWJyb3dzZXItaGVhZGVyXCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9JzEwcHgnIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiPlxyXG4gICAgICAgIDxhIGhyZWY9XCJodHRwczovL2NsaXBwZXIuYXJzZWRpemlvbmkuaXRcIiBtYXRUb29sdGlwPVwiQXByaSBDbGlwcGVyIGluIHVuIG51b3ZvIHRhYlwiIHRhcmdldD1cIl9ibGFua1wiPlxyXG4gICAgICAgICAgPGltZyBzcmM9XCIuLy4uLy4uLy4uL2Fzc2V0cy9pbWFnZXMvY2xpcHBlcl9sb2dvLnBuZ1wiIGFsdD1cIkNsaXBwZXJcIiBzdHlsZT1cIm1heC1oZWlnaHQ6IDUwcHg7IHBhZGRpbmc6IDVweFwiIC8+XHJcbiAgICAgICAgPC9hPlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgQGlmIChkaWFsb2dEYXRhPy5zZWxlY3Rpb25Nb2RlID4gMCkge1xyXG4gICAgICA8ZGl2IGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICBAaWYgKGNhblNlbGVjdCgpKSB7XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWZsYXQtYnV0dG9uIChjbGljayk9XCJzZWxlY3QoKVwiPlxyXG4gICAgICAgICAgVXNhIHNlbGV6aW9uZVxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgPC9kaXY+XHJcbiAgICAgIH1cclxuICAgICAgPGRpdiBmeEZsZXg9XCIxNTBweFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIiBjbGFzcz1cImRpYWxvZy1jbG9zZVwiPlxyXG4gICAgICAgIEBpZiAoY2xpcHBlclNlcnZpY2UuYmFnLmxlbmd0aCA+IDApIHtcclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkRvY3VtZW50aSBkaSBsYXZvcm9cIiBhcmlhLWxhYmVsPVwiJ0RvY3VtZW50aSBkaSBsYXZvcm8nXCJcclxuICAgICAgICAgIChjbGljayk9XCJtYW5hZ2VCYWcoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uIGFyaWEtaGlkZGVuPVwiZmFsc2VcIiBbbWF0QmFkZ2VdPVwiY2xpcHBlclNlcnZpY2UuYmFnLmxlbmd0aFwiXHJcbiAgICAgICAgICAgIG1hdEJhZGdlQ29sb3I9XCJhY2NlbnRcIj53b3JrX291dGxpbmU8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIH1cclxuICAgICAgICA8YnV0dG9uIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0VG9vbHRpcD1cIkNoaXVkaVwiIGFyaWEtbGFiZWw9XCJDaGl1ZGlcIiAoY2xpY2spPVwiY2xvc2UoKVwiPlxyXG4gICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuICA8ZGl2IHN0eWxlPVwicGFkZGluZzogMTVweCAwIDEwcHggMTVweFwiPlxyXG4gICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJzdGFydCBjZW50ZXJcIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGZ4RmxleC54cz1cIjYyXCI+XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPScxMHB4JyBmeEZpbGw+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiMTMwcHhcIiBmeEhpZGUueHMgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+TnVtZXJvPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIG1hdElucHV0IFsobmdNb2RlbCldPVwiZmlsdGVyUGFyYW1zLm51bWJlclwiICNudW1iZXI9XCJuZ01vZGVsXCIgbmFtZT1cIm51bWJlclwiIG1heGxlbmd0aD1cIjEwXCJcclxuICAgICAgICAgICAgICAoa2V5dXAuRW50ZXIpPVwiZmV0Y2godHJ1ZSlcIj5cclxuICAgICAgICAgICAgQGlmIChmaWx0ZXJQYXJhbXMubnVtYmVyKSB7XHJcbiAgICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIHRhYmluZGV4PVwiLTFcIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IGFyaWEtbGFiZWw9XCJBenplcmFcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJQYXJhbXMubnVtYmVyID0gbnVsbDtcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgPC9tYXQtZm9ybS1maWVsZD5cclxuICAgICAgICAgIDxtYXQtZm9ybS1maWVsZCBmeEZsZXg9XCIxMzBweFwiIGZ4SGlkZS54cyBzdWJzY3JpcHRTaXppbmc9XCJkeW5hbWljXCIgYXBwZWFyYW5jZT1cIm91dGxpbmVcIj5cclxuICAgICAgICAgICAgPG1hdC1sYWJlbD5Bbm5vPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCB0eXBlPVwibnVtYmVyXCIgbWF0SW5wdXQgWyhuZ01vZGVsKV09XCJmaWx0ZXJQYXJhbXMueWVhclwiICN5ZWFyPVwibmdNb2RlbFwiIG5hbWU9XCJ5ZWFyXCIgbWluPVwiMFwiXHJcbiAgICAgICAgICAgICAgbWF4bGVuZ3RoPVwiNFwiIChrZXl1cC5FbnRlcik9XCJmZXRjaCh0cnVlKVwiIC8+XHJcbiAgICAgICAgICAgIEBpZiAoZmlsdGVyUGFyYW1zLnllYXIpIHtcclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlB1bGlzY2lcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJQYXJhbXMueWVhciA9IG51bGxcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBAaWYgKHllYXIuaW52YWxpZCkge1xyXG4gICAgICAgICAgICA8bWF0LWVycm9yPk5vbiB2YWxpZG8uPC9tYXQtZXJyb3I+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgIDwvbWF0LWZvcm0tZmllbGQ+XHJcbiAgICAgICAgICA8bWF0LWZvcm0tZmllbGQgZnhGbGV4PVwiMTAwXCIgc3Vic2NyaXB0U2l6aW5nPVwiZHluYW1pY1wiIGFwcGVhcmFuY2U9XCJvdXRsaW5lXCI+XHJcbiAgICAgICAgICAgIDxtYXQtbGFiZWw+UGFyb2xlLCBmcmFzaSBvIGNvbmNldHRpLi4uPC9tYXQtbGFiZWw+XHJcbiAgICAgICAgICAgIDxpbnB1dCBtYXRJbnB1dCAjc2VhcmNoSW5wdXQ9XCJtYXRJbnB1dFwiIHR5cGU9XCJ0ZXh0XCIgI3RleHQgWyhuZ01vZGVsKV09XCJmaWx0ZXJQYXJhbXMudGV4dFwiIG1heGxlbmd0aD1cIjIwMFwiXHJcbiAgICAgICAgICAgICAgKGtleXVwLkVudGVyKT1cInNlYXJjaCgpXCIgYXV0b2ZvY3VzIC8+XHJcbiAgICAgICAgICAgIEBpZiAoZmlsdGVyUGFyYW1zLnRleHQpIHtcclxuICAgICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgdGFiaW5kZXg9XCItMVwiIG1hdFN1ZmZpeCBtYXQtaWNvbi1idXR0b24gYXJpYS1sYWJlbD1cIlB1bGlzY2lcIlxyXG4gICAgICAgICAgICAgIChjbGljayk9XCJmaWx0ZXJQYXJhbXMudGV4dCA9ICcnXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmNsb3NlPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGJ1dHRvbiBmeEhpZGUueHMgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRTdWZmaXggYXJpYS1sYWJlbD1cIkNvbXBvbmlcIiBtYXRUb29sdGlwPVwiQ29tcG9uaVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cInRleHQuZm9jdXMoKTsgY29tcG9zZVNlYXJjaCgpXCI+XHJcbiAgICAgICAgICAgICAgPG1hdC1pY29uPmJ1aWxkPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gZnhIaWRlLnhzIHR5cGU9XCJidXR0b25cIiBtYXQtaWNvbi1idXR0b24gbWF0U3VmZml4IGFyaWEtbGFiZWw9XCJJbmZvcm1hemlvbmlcIlxyXG4gICAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJDb21lIGVmZmV0dHVhcmUgbGEgcmljZXJjYSBpbiB0ZXN0byBsaWJlcm9cIiAoY2xpY2spPVwidGV4dC5mb2N1cygpOyBoZWxwU2VhcmNoKClcIj5cclxuICAgICAgICAgICAgICA8bWF0LWljb24+aGVscF9vdXRsaW5lPC9tYXQtaWNvbj5cclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICA8L21hdC1mb3JtLWZpZWxkPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXgueHM9XCIzNlwiPlxyXG4gICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwiZW5kIGNlbnRlclwiIGZ4RmlsbD5cclxuICAgICAgICAgIDxidXR0b24gdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiAoY2xpY2spPVwic2VhcmNoKClcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidBdnZpYSBsYSByaWNlcmNhJ1wiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJBdnZpYSByaWNlcmNhXCIgW2Rpc2FibGVkXT1cIiFjbGlwcGVyU2VydmljZS5sb2dnZWRJblwiPlxyXG4gICAgICAgICAgICA8bWF0LWljb24+c2VhcmNoPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIChjbGljayk9XCJhZHZhbmNlZFNlYXJjaCgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInUmljZXJjYSBhdmFuemF0YSdcIlxyXG4gICAgICAgICAgICBtYXRUb29sdGlwPVwiUmljZXJjYSBhdmFuemF0YVwiIFtkaXNhYmxlZF09XCIhY2xpcHBlclNlcnZpY2UubG9nZ2VkSW5cIj5cclxuICAgICAgICAgICAgPG1hdC1pY29uPnNldHRpbmdzPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIEBpZiAoc25hcHNob3Quc2VhcmNoSW5mbyAmJiBzbmFwc2hvdC5zZWFyY2hJbmZvLmxlbmd0aCA+IDApIHtcclxuICA8ZGl2IGZ4SGlkZS54cyBjbGFzcz1cInNtYWxsXCIgc3R5bGU9XCJwYWRkaW5nLWxlZnQ6IDE1cHg7XCI+XHJcbiAgICA8ZGl2IGZ4TGF5b3V0PVwicm93XCIgZnhMYXlvdXRHYXA9XCIxMHB4XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4RmlsbD5cclxuICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgPGI+UklDRVJDQSBBVFRJVkE8L2I+Jm5ic3A7Jm5ic3A7Jm5ic3A7XHJcbiAgICAgICAgQGZvciAoc2kgb2Ygc25hcHNob3Quc2VhcmNoSW5mbzsgdHJhY2sgc2kpIHtcclxuICAgICAgICA8c3Bhbj5cclxuICAgICAgICAgIHt7c2kuc2VwID8gJyZuYnNwOyZuYnNwOycgOiAnJ319IHt7c2kuZmllbGR9fTogPHNwYW4gY2xhc3M9XCJhY2NlbnQgbG93ZXJjYXNlXCI+PGk+e3tzaS52YWx1ZX19PC9pPjwvc3Bhbj5cclxuICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgPGRpdiBmeEZsZXhBbGlnbj1cInN0YXJ0XCI+XHJcbiAgICAgICAgPGJ1dHRvbiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJBenplcmEgcmljZXJjYVwiIChjbGljayk9XCJjbGVhclNlYXJjaCgpXCI+XHJcbiAgICAgICAgICA8bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPlxyXG4gICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvZGl2PlxyXG4gIDwvZGl2PlxyXG4gIH1cclxuICA8ZGl2IGZ4TGF5b3V0PVwicm93IHdyYXAtcmV2ZXJzZVwiIGZ4TGF5b3V0QWxpZ249XCJzcGFjZS1iZXR3ZWVuIGNlbnRlclwiIGZ4RmlsbCBzdHlsZT1cInBhZGRpbmctbGVmdDogMTVweDtcIj5cclxuICAgIDxkaXY+XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeExheW91dEFsaWduPVwic3RhcnQgY2VudGVyXCI+XHJcbiAgICAgICAgQGlmIChzbmFwc2hvdC50b3RhbCA+IDApIHtcclxuICAgICAgICA8ZGl2IGZ4RmxleEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICA8bWF0LWNoZWNrYm94IChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0QWxsKCRldmVudCkgOiBudWxsXCJcclxuICAgICAgICAgICAgW2luZGV0ZXJtaW5hdGVdPVwic2VsZWN0aW9uPy5oYXNWYWx1ZSgpICYmICFhbGxTZWxlY3RlZCgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInU2VsZXppb25hL2Rlc2VsZXppb25hIHR1dHRvJ1wiXHJcbiAgICAgICAgICAgIG1hdFRvb2x0aXA9XCJTZWxlemlvbmEvZGVzZWxlemlvbmEgdHV0dG9cIiBbZGlzYWJsZWRdPVwiIXNuYXBzaG90Lml0ZW1zIHx8IHNuYXBzaG90Lml0ZW1zLmxlbmd0aCA9PSAwXCI+XHJcbiAgICAgICAgICA8L21hdC1jaGVja2JveD5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCI+XHJcbiAgICAgICAgICBAaWYgKHNuYXBzaG90LnRvdGFsID4gMCkge1xyXG4gICAgICAgICAgPGJ1dHRvbiBmeEZsZXhBbGlnbj1cImNlbnRlclwiIHR5cGU9XCJidXR0b25cIiBtYXQtYnV0dG9uIG1hdFRvb2x0aXA9XCJPcmRpbmFcIiBbYXR0ci5hcmlhLWxhYmVsXT1cIidNZW51IG9yZGluYSdcIlxyXG4gICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVNvcnRcIiBbZGlzYWJsZWRdPVwiIXNuYXBzaG90LnRvdGFsXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGZ4SGlkZS5sdC1sZz5PcmRpbmEgcGVyOjwvc3Bhbj5cclxuICAgICAgICAgICAgPG1hdC1pY29uIGZ4SGlkZS5ndC1tZD5zb3J0PC9tYXQtaWNvbj4ge3tjdXJyZW50U29ydH19XHJcbiAgICAgICAgICAgIDxtYXQtaWNvbiBjbGFzcz1cImljb24tbWVudS1kcm9wLWRvd25cIj5leHBhbmRfbW9yZTwvbWF0LWljb24+XHJcbiAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgIH1cclxuICAgICAgICAgIDxtYXQtbWVudSAjbWVudVNvcnQ9XCJtYXRNZW51XCI+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic29ydEJ5KDMpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInT3JkaW5hIHBlciBkYXRhIGRlY3Jlc2NlbnRlJ1wiPlxyXG4gICAgICAgICAgICAgIERhdGEgZGVjcmVzY2VudGVcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDxidXR0b24gbWF0LW1lbnUtaXRlbSAoY2xpY2spPVwic29ydEJ5KDIpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInT3JkaW5hIHBlciBkYXRhIGNyZXNjZW50ZSdcIj5cclxuICAgICAgICAgICAgICBEYXRhIGNyZXNjZW50ZVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgQGlmIChmaWx0ZXJQYXJhbXMudGV4dCkge1xyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNvcnRCeSgxKVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09yZGluYSBwZXIgcmlsZXZhbnphJ1wiPlxyXG4gICAgICAgICAgICAgIFJpbGV2YW56YVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cInNvcnRCeSg1KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ09yZGluYSBwZXIgcG9wb2xhcml0w6AnXCI+XHJcbiAgICAgICAgICAgICAgUG9wb2xhcml0w6BcclxuICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgIDwhLS0gPG1hdC1kaXZpZGVyPjwvbWF0LWRpdmlkZXI+XHJcbiAgICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJzb3J0QnkoNClcIlxyXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInT3JkaW5hIHBlciBkYXRhIGRpIGluc2VyaW1lbnRvIGRlc2NyZXNjZW50ZSdcIj5cclxuICAgICAgICAgICAgICAgIERhdGEgZGkgaW5zZXJpbWVudG8gZGVjcmVzY2VudGVcclxuICAgICAgICAgICAgICA8L2J1dHRvbj4tLT5cclxuICAgICAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gW2F0dHIuYXJpYS1sYWJlbF09XCInTWVudSBtb2RlbGxvJ1wiXHJcbiAgICAgICAgICAgIFttYXRNZW51VHJpZ2dlckZvcl09XCJtZW51TW9kZWxzXCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGZ4SGlkZS5sdC1sZz5Nb3N0cmE6PC9zcGFuPlxyXG4gICAgICAgICAgICA8bWF0LWljb24gZnhIaWRlLmd0LW1kPmZpbHRlcl9saXN0PC9tYXQtaWNvbj4ge3tjdXJyZW50TW9kZWx9fVxyXG4gICAgICAgICAgICA8bWF0LWljb24gY2xhc3M9XCIgaWNvbi1tZW51LWRyb3AtZG93blwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPG1hdC1tZW51ICNtZW51TW9kZWxzPVwibWF0TWVudVwiPlxyXG4gICAgICAgICAgICA8YnV0dG9uIG1hdC1tZW51LWl0ZW0gKGNsaWNrKT1cImNoYW5nZU1vZGVsKDIpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIGFnZ2lvcm5hbWVudG8gbm9ybWF0aXZvJ1wiPlxyXG4gICAgICAgICAgICAgIEdhenpldHRlIGUgYm9sbGV0dGluaVxyXG4gICAgICAgICAgICA8L2J1dHRvbj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjaGFuZ2VNb2RlbCg5KVwiIFthdHRyLmFyaWEtbGFiZWxdPVwiJ05vcm1hdGl2YSB2aWdlbnRlJ1wiPlxyXG4gICAgICAgICAgICAgIE5vcm1hdGl2YSB2aWdlbnRlXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8bWF0LWRpdmlkZXI+PC9tYXQtZGl2aWRlcj5cclxuICAgICAgICAgICAgPGJ1dHRvbiBtYXQtbWVudS1pdGVtIChjbGljayk9XCJjaGFuZ2VNb2RlbCgpXCIgW2F0dHIuYXJpYS1sYWJlbF09XCInTW9zdHJhIHR1dHRpIGkgZG9jdW1lbnRpJ1wiPlxyXG4gICAgICAgICAgICAgIFR1dHRvXHJcbiAgICAgICAgICAgIDwvYnV0dG9uPlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgPC9kaXY+XHJcbiAgICA8L2Rpdj5cclxuICAgIDxkaXYgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICBAaWYgKHNlbGVjdGlvbj8uaGFzVmFsdWUoKSkge1xyXG4gICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1idXR0b24gbWF0VG9vbHRpcD1cIkF6aW9uaSBkYSBlc2VndWlyZSBzdWdsaSBlbGVtZW50aSBzZWxlemlvbmF0aVwiXHJcbiAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCInTWVudSBvcHppb25pIHBlciBlbGVtZW50aSBzZWxlemlvbmF0aSdcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwibWVudVNlbGVjdGlvbnNcIlxyXG4gICAgICAgIFtkaXNhYmxlZF09XCIhc25hcHNob3QudG90YWxcIj5cclxuICAgICAgICA8bWF0LWljb24gYXJpYS1oaWRkZW49XCJmYWxzZVwiIFttYXRCYWRnZV09XCJzZWxlY3Rpb24/LmFsbC5sZW5ndGhcIlxyXG4gICAgICAgICAgbWF0QmFkZ2VDb2xvcj1cImFjY2VudFwiPnBsYXlsaXN0X2FkZF9jaGVjazwvbWF0LWljb24+XHJcbiAgICAgICAgPG1hdC1pY29uIGNsYXNzPVwiaWNvbi1tZW51LWRyb3AtZG93blwiPmV4cGFuZF9tb3JlPC9tYXQtaWNvbj5cclxuICAgICAgPC9idXR0b24+XHJcbiAgICAgIH1cclxuICAgICAgPG1hdC1tZW51ICNtZW51U2VsZWN0aW9ucz1cIm1hdE1lbnVcIj5cclxuICAgICAgICA8Y2xpcHBlci1kb2N1bWVudC1tZW51IFtwYXJlbnRdPVwidGhpc1wiIHNlbGVjdGlvblNvdXJjZT1cInNlbGVjdGlvblwiIFt1c2VTZWxlY3Rpb25zXT1cImNhblNlbGVjdCgpXCJcclxuICAgICAgICAgIFtpc1JlYWRhYmxlXT1cImZhbHNlXCIgW2lzTGF3SW5Gb3JjZV09XCJ0cnVlXCI+XHJcbiAgICAgICAgPC9jbGlwcGVyLWRvY3VtZW50LW1lbnU+XHJcbiAgICAgIDwvbWF0LW1lbnU+XHJcbiAgICAgIEBpZiAoc25hcHNob3QgJiYgc25hcHNob3QuZmFjZXRzPy5oYXNGYWNldHMgJiYgZmlsdGVyUGFuZSAmJiAoIWZpbHRlclBhbmUub3BlbmVkIHx8IGZpbHRlclBhbmVDbG9zZWQpKSB7XHJcbiAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiB0eXBlPVwiYnV0dG9uXCIgbWF0LWljb24tYnV0dG9uIG1hdFRvb2x0aXA9XCJBZmZpbmEgcmljZXJjYVwiXHJcbiAgICAgICAgYXJpYS1sYWJlbD1cIidBZmZpbmEgcmljZXJjYSdcIiAoY2xpY2spPVwidG9nZ2xlRmlsdGVyUGFuZSgpXCI+XHJcbiAgICAgICAgPG1hdC1pY29uPm1lbnVfb3BlbjwvbWF0LWljb24+XHJcbiAgICAgIDwvYnV0dG9uPlxyXG4gICAgICB9XHJcbiAgICA8L2Rpdj5cclxuICA8L2Rpdj5cclxuPC9kaXY+XHJcbjxkaXYgbWF0LWRpYWxvZy1jb250ZW50IGlkPVwiY2xpcHBlci1icm93c2VyLXNjcm9sbGFibGVcIj5cclxuICA8bWF0LWRyYXdlci1jb250YWluZXI+XHJcbiAgICA8bWF0LWRyYXdlciAjZmlsdGVyUGFuZSBwb3NpdGlvbj1cImVuZFwiIGNsYXNzPVwiZHJhd2VyLXNtYWxsXCI+XHJcbiAgICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgICAgPGRpdiBmeEZsZXg9XCI0MHB4XCIgc3R5bGU9XCJtYXJnaW46MCA0cHhcIj5cclxuICAgICAgICAgIDxkaXYgZnhMYXlvdXQ9XCJyb3dcIiBmeExheW91dEdhcD1cIjEwcHhcIiBmeEZpbGw+XHJcbiAgICAgICAgICAgIDxkaXYgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cInRpdGxlXCI+QWZmaW5hIHJpY2VyY2E8L2Rpdj5cclxuICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhMYXlvdXRBbGlnbj1cImVuZFwiPlxyXG4gICAgICAgICAgICAgIDxidXR0b24gZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBtYXQtaWNvbi1idXR0b24gKGNsaWNrKT1cInRvZ2dsZUZpbHRlclBhbmUoKVwiXHJcbiAgICAgICAgICAgICAgICBtYXRUb29sdGlwPVwiTmFzY29uZGlcIj48bWF0LWljb24+Y2xvc2U8L21hdC1pY29uPjwvYnV0dG9uPlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGNsYXNzPVwic2Nyb2xsLWhpZGRlblwiPlxyXG4gICAgICAgICAgPGNsaXBwZXItc2VhcmNoLWZhY2V0cyAjZmFjZXRzPjwvY2xpcHBlci1zZWFyY2gtZmFjZXRzPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbWF0LWRyYXdlcj5cclxuICAgIDxkaXYgZnhMYXlvdXQ9XCJjb2x1bW5cIiBmeEZpbGw+XHJcbiAgICAgIDxkaXYgZnhGbGV4PVwiKlwiIGlkPVwiY2xpcHBlci1yZWZlcmVuY2VzLXNjcm9sbGVyXCI+XHJcbiAgICAgICAgQGlmICghc25hcHNob3QudG90YWwpIHtcclxuICAgICAgICA8ZGl2IHN0eWxlPVwicGFkZGluZzozMnB4OyB0ZXh0LWFsaWduOiBjZW50ZXI7XCIgY2xhc3M9XCJpdGVtLWdyZXllZC0xXCI+XHJcbiAgICAgICAgICA8cD5cclxuICAgICAgICAgICAgTm9uIGhhaSBhbmNvcmEgZWZmZXR0dWF0b1xyXG4gICAgICAgICAgICBsYSB0dWEgcHJpbWEgcmljZXJjYSBvcHB1cmUgbGEgcmljZXJjYSBlZmZldHR1YXRhIG5vbiBoYSBwcm9kb3R0byBhbGN1biByaXN1bHRhdG8uPC9wPlxyXG4gICAgICAgICAgPHA+SW5zZXJpc2NpIG5lbGwnYXBwb3NpdG8gY2FtcG8gY2nDsiBjaGUgaW50ZW5kaSBjZXJjYXJlIGUgZmFpIGNsaWNrIHN1IDxiPlRyb3ZhPC9iPiBvcHB1cmUgdXRpbGl6emFcclxuICAgICAgICAgICAgbGFcclxuICAgICAgICAgICAgPGI+UmljZXJjYSBhdmFuemF0YTwvYj5cclxuICAgICAgICAgIDwvcD4uXHJcbiAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgPGRpdj5cclxuICAgICAgICAgIEBmb3IgKGl0ZW0gb2Ygc25hcHNob3QuaXRlbXM7IHRyYWNrIGl0ZW07IGxldCBpID0gJGluZGV4KSB7XHJcbiAgICAgICAgICA8ZGl2IChjb250ZXh0bWVudSk9XCJvbkNvbnRleHRNZW51KCRldmVudCwgaXRlbSlcIiAobW91c2VlbnRlcik9XCJpdGVtLmlzT3ZlciA9IHRydWVcIlxyXG4gICAgICAgICAgICAobW91c2VsZWF2ZSk9XCJpdGVtLmlzT3ZlciA9IGZhbHNlXCI+XHJcbiAgICAgICAgICAgIEBpZiAoaXRlbS5ncm91cCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtZ3JvdXAtdGl0bGVcIj5cclxuICAgICAgICAgICAgICA8ZGl2IFtuZ0NsYXNzXT1cInsnc3BhY2VkJzogaSA+IDB9XCI+e3tpdGVtLmdyb3VwfX08L2Rpdj5cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiNnB4XCIgZnhMYXlvdXRBbGlnbj1cInN0YXJ0IGNlbnRlclwiIGZ4RmlsbCBjbGFzcz1cIml0ZW1cIlxyXG4gICAgICAgICAgICAgIFtuZ0NsYXNzXT1cInsnaXRlbS1zZWxlY3RlZCc6IHNlbGVjdGlvbj8uaXNTZWxlY3RlZChpdGVtLmRvY3VtZW50SWQpIH1cIj5cclxuICAgICAgICAgICAgICA8ZGl2IGZ4RmxleD1cIjQ4cHhcIiBmeExheW91dEFsaWduPVwiY2VudGVyXCI+XHJcbiAgICAgICAgICAgICAgICBAaWYgKHNjcmVlblNlcnZpY2UuaXNUb3VjaGFibGUgfHwgaXRlbS5pc092ZXIgfHwgc2VsZWN0aW9uPy5pc1NlbGVjdGVkKGl0ZW0uZG9jdW1lbnRJZCkpIHtcclxuICAgICAgICAgICAgICAgIDxtYXQtY2hlY2tib3ggKGNsaWNrKT1cIiRldmVudC5zdG9wUHJvcGFnYXRpb24oKVwiXHJcbiAgICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwiJGV2ZW50ID8gc2VsZWN0aW9uPy50b2dnbGUoaXRlbSwgaXRlbS5kb2N1bWVudElkKSA6IG51bGxcIlxyXG4gICAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJzZWxlY3Rpb24/LmlzU2VsZWN0ZWQoaXRlbS5kb2N1bWVudElkKVwiPlxyXG4gICAgICAgICAgICAgICAgPC9tYXQtY2hlY2tib3g+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiBmeEZsZXg9XCIqXCIgZnhGbGV4QWxpZ249XCJjZW50ZXJcIiBjbGFzcz1cIml0ZW0tY29udGVudFwiPlxyXG4gICAgICAgICAgICAgICAgPGNsaXBwZXItc2VhcmNoLXJlc3VsdC1pdGVtIFtpdGVtXT1cIml0ZW1cIiBbcGFyZW50XT1cInRoaXNcIj48L2NsaXBwZXItc2VhcmNoLXJlc3VsdC1pdGVtPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIDxkaXYgZnhGbGV4PVwiNDhweFwiIGZ4TGF5b3V0QWxpZ249XCJlbmRcIj5cclxuICAgICAgICAgICAgICAgIEBpZiAoaXRlbS5pc092ZXIgfHwgaXRlbS5pc01lbnVPcGVuIHx8IHNlbGVjdGlvbj8uaXNTZWxlY3RlZChpdGVtLmRvY3VtZW50SWQpKSB7XHJcbiAgICAgICAgICAgICAgICA8YnV0dG9uIGZ4RmxleEFsaWduPVwiY2VudGVyXCIgdHlwZT1cImJ1dHRvblwiIG1hdC1pY29uLWJ1dHRvbiBtYXRUb29sdGlwPVwiTWVudVwiXHJcbiAgICAgICAgICAgICAgICAgIFthdHRyLmFyaWEtbGFiZWxdPVwiJ01lbnUgb3B6aW9uaSdcIiBbbWF0TWVudVRyaWdnZXJGb3JdPVwiY29udGV4dE1lbnVcIlxyXG4gICAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJEYXRhXT1cIntpdGVtOiBpdGVtfVwiIChjbGljayk9XCJpdGVtLmlzTWVudU9wZW4gPSB0cnVlXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxtYXQtaWNvbj5tb3JlX3ZlcnQ8L21hdC1pY29uPlxyXG4gICAgICAgICAgICAgICAgPC9idXR0b24+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgPGRpdiAjY29udGV4dE1lbnVUcmlnZ2VyPVwibWF0TWVudVRyaWdnZXJcIiBzdHlsZT1cInBvc2l0aW9uOiBmaXhlZFwiIFtzdHlsZS5sZWZ0XT1cImNvbnRleHRNZW51UG9zaXRpb24ueFwiXHJcbiAgICAgICAgICAgICAgICBbc3R5bGUudG9wXT1cImNvbnRleHRNZW51UG9zaXRpb24ueVwiIFttYXRNZW51VHJpZ2dlckZvcl09XCJjb250ZXh0TWVudVwiXHJcbiAgICAgICAgICAgICAgICBbbWF0TWVudVRyaWdnZXJEYXRhXT1cIntpdGVtOiBpdGVtfVwiPlxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgICAgPG1hdC1tZW51ICNjb250ZXh0TWVudT1cIm1hdE1lbnVcIiAoY2xvc2VkKT1cInVwZGF0ZU1lbnVCdXR0b25zVmlzaWJpbGl0eSgpXCI+XHJcbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBtYXRNZW51Q29udGVudCBsZXQtaXRlbT1cIml0ZW1cIj5cclxuICAgICAgICAgICAgICA8Y2xpcHBlci1kb2N1bWVudC1tZW51IFtwYXJlbnRdPVwidGhpc1wiIFtpdGVtXT1cIml0ZW1cIiBbdXNlU2VsZWN0aW9uc109XCJjYW5TZWxlY3QoKVwiIFtpc1JlYWRhYmxlXT1cImZhbHNlXCJcclxuICAgICAgICAgICAgICAgIFtpc0xhd0luRm9yY2VdPVwidHJ1ZVwiPlxyXG4gICAgICAgICAgICAgIDwvY2xpcHBlci1kb2N1bWVudC1tZW51PlxyXG4gICAgICAgICAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgICAgICAgPC9tYXQtbWVudT5cclxuICAgICAgICA8L2Rpdj5cclxuICAgICAgICB9XHJcbiAgICAgIDwvZGl2PlxyXG4gICAgICA8IS0tIGZvb3RlciAtLT5cclxuICAgICAgQGlmICgoc25hcHNob3Q/LnRvdGFsID8/IDApID4gMCkge1xyXG4gICAgICA8ZGl2IGNsYXNzPVwiaXRlbXMtZm9vdGVyXCI+XHJcbiAgICAgICAgPGRpdiBmeExheW91dD1cInJvd1wiIGZ4TGF5b3V0R2FwPVwiMTBweFwiIGZ4TGF5b3V0QWxpZ249XCJlbmQgY2VudGVyXCIgZnhGaWxsPlxyXG4gICAgICAgICAgPG1hdC1wYWdpbmF0b3IgI3BhZ2luYXRvciBjbGFzcz1cInBhZ2luYXRvclwiIFtoaWRlUGFnZVNpemVdPVwidHJ1ZVwiIFtsZW5ndGhdPVwic25hcHNob3Q/LnRvdGFsID8/IDBcIlxyXG4gICAgICAgICAgICBbcGFnZVNpemVdPVwiZmlsdGVyUGFyYW1zLmNvdW50ID8/IDE1XCIgW3Nob3dGaXJzdExhc3RCdXR0b25zXT1cInRydWVcIiAocGFnZSk9XCJmZXRjaE1vcmUoJGV2ZW50KVwiPlxyXG4gICAgICAgICAgPC9tYXQtcGFnaW5hdG9yPlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgICAgfVxyXG4gICAgPC9kaXY+XHJcbiAgPC9tYXQtZHJhd2VyLWNvbnRhaW5lcj5cclxuPC9kaXY+Il19
|