@fovestta2/web-angular 1.1.5 → 1.1.7
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/lib/add-update-form/add-update-form.component.mjs +116 -90
- package/esm2022/lib/fv-dropdown/fv-dropdown.component.mjs +10 -1
- package/esm2022/lib/fv-entry-field/fv-entry-field.component.mjs +10 -1
- package/fesm2022/fovestta2-web-angular.mjs +133 -89
- package/fesm2022/fovestta2-web-angular.mjs.map +1 -1
- package/lib/add-update-form/add-update-form.component.d.ts +5 -5
- package/package.json +1 -1
|
@@ -76,15 +76,24 @@ export class FvDropdownComponent {
|
|
|
76
76
|
if (changes['disabled']) {
|
|
77
77
|
if (this.disabled) {
|
|
78
78
|
this.searchControl.disable({ emitEvent: false });
|
|
79
|
+
this.validateValue(this.control.value); // Re-validate to clear errors
|
|
79
80
|
}
|
|
80
81
|
else {
|
|
81
82
|
this.searchControl.enable({ emitEvent: false });
|
|
82
83
|
}
|
|
83
84
|
}
|
|
85
|
+
if (changes['schema'] && !changes['schema'].firstChange) {
|
|
86
|
+
this.validateValue(this.control?.value);
|
|
87
|
+
}
|
|
84
88
|
}
|
|
85
89
|
validateValue(value) {
|
|
86
90
|
if (!this.schema)
|
|
87
91
|
return;
|
|
92
|
+
if (this.disabled) {
|
|
93
|
+
this.errorMessage = null;
|
|
94
|
+
this.control.setErrors(null);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
88
97
|
const result = Validator.validate(value, this.schema);
|
|
89
98
|
this.errorMessage = result.errorKey;
|
|
90
99
|
const customMessage = result.message;
|
|
@@ -366,4 +375,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
366
375
|
type: HostListener,
|
|
367
376
|
args: ['document:click', ['$event']]
|
|
368
377
|
}] } });
|
|
369
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnYtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZnYtY29udHJvbHMvc3JjL2xpYi9mdi1kcm9wZG93bi9mdi1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdi1jb250cm9scy9zcmMvbGliL2Z2LWRyb3Bkb3duL2Z2LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR1osU0FBUyxFQUlULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sOEJBQThCLENBQUM7Ozs7QUEyQjNFLE1BQU0sT0FBTyxtQkFBbUI7SUFvQlI7SUFuQlgsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixXQUFXLEdBQVcsa0JBQWtCLENBQUM7SUFDekMsT0FBTyxHQUF1QyxFQUFFLENBQUM7SUFDakQsTUFBTSxDQUFvQjtJQUMxQixPQUFPLENBQWU7SUFDdEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUV6QixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7SUFDbEQsSUFBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDaEMsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFakIsV0FBVyxDQUFnQztJQUNyRSxZQUFZLEdBQWtCLElBQUksQ0FBQztJQUNuQyxNQUFNLEdBQVksS0FBSyxDQUFDO0lBQ2hCLFlBQVksQ0FBZ0I7SUFDcEMsYUFBYSxHQUFHLElBQUksV0FBVyxDQUFDLEVB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UUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIElucHV0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgT25Jbml0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBIb3N0TGlzdGVuZXJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3IsIFZhbGlkYXRpb25TY2hlbWEgfSBmcm9tICdAZm92ZXN0dGEyL3ZhbGlkYXRpb24tZW5naW5lJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25PcHRpb24ge1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25Hcm91cCB7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgaXRlbXM6IERyb3Bkb3duT3B0aW9uW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25WaWV3SXRlbSB7XHJcbiAgICBpc0dyb3VwTGFiZWw6IGJvb2xlYW47XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgICBvcHRpb24/OiBEcm9wZG93bk9wdGlvbjtcclxuICAgIGlzQ2hpbGQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcclxuICAgIHNlbGVjdG9yOiAnZnYtZHJvcGRvd24nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Z2LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Z2LWRyb3Bkb3duLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZ2RHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0IGFuIG9wdGlvbic7XHJcbiAgICBASW5wdXQoKSBvcHRpb25zOiAoRHJvcGRvd25PcHRpb24gfCBEcm9wZG93bkdyb3VwKVtdID0gW107XHJcbiAgICBASW5wdXQoKSBzY2hlbWEhOiBWYWxpZGF0aW9uU2NoZW1hO1xyXG4gICAgQElucHV0KCkgY29udHJvbCE6IEZvcm1Db250cm9sO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bWJlcj4oKTtcclxuICAgIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgQE91dHB1dCgpIGZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gICAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcbiAgICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICAgIGZpbHRlcmVkT3B0aW9uczogRHJvcGRvd25WaWV3SXRlbVtdID0gW107XHJcbiAgICBoaWdobGlnaHRlZEluZGV4OiBudW1iZXIgPSAtMTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29udHJvbCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGdkRyb3Bkb3duOiBjb250cm9sIGlzIHJlcXVpcmVkJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygnJyk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zY2hlbWEpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgICAgICAgJ0Z2RHJvcGRvd246IHNjaGVtYSBpcyBub3QgcHJvdmlkZWQsIHZhbGlkYXRpb24gd2lsbCBiZSBza2lwcGVkJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gdmFsdWUgY2hhbmdlc1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIC8vIFN5bmMgc2VhcmNoIHRleHRcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmZpbmRPcHRpb24odmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZC5sYWJlbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKCcnLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gU2VhcmNoIENvbnRyb2wgQ2hhbmdlc1xyXG4gICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHRlcm0gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnModGVybSB8fCAnJyk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5pc09wZW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBWYWxpZGF0ZSBpbml0aWFsIHZhbHVlXHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKHRoaXMuY29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuZmluZE9wdGlvbih0aGlzLmNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZC5sYWJlbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBpZiAoY2hhbmdlc1snb3B0aW9ucyddICYmIGNoYW5nZXNbJ29wdGlvbnMnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgLy8gUmUtZmlsdGVyIGlmIHNlYXJjaCB0ZXh0IGV4aXN0c1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnModGhpcy5zZWFyY2hDb250cm9sLnZhbHVlIHx8ICcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnNjaGVtYSkgcmV0dXJuO1xyXG5cclxuICAgICAgICBjb25zdCByZXN1bHQgPSBWYWxpZGF0b3IudmFsaWRhdGUodmFsdWUsIHRoaXMuc2NoZW1hKTtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHJlc3VsdC5lcnJvcktleTtcclxuICAgICAgICBjb25zdCBjdXN0b21NZXNzYWdlID0gcmVzdWx0Lm1lc3NhZ2U7XHJcblxyXG4gICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQgJiYgcmVzdWx0LmVycm9yS2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRFcnJvcnMoeyBbcmVzdWx0LmVycm9yS2V5XTogdHJ1ZSwgbWVzc2FnZTogY3VzdG9tTWVzc2FnZSB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJPcHRpb25zKHRlcm06IHN0cmluZykge1xyXG4gICAgICAgIGxldCBhY3R1YWxUZXJtID0gdGVybTtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuZmluZE9wdGlvbih0aGlzLmNvbnRyb2w/LnZhbHVlKTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgdGVybSA9PT0gc2VsZWN0ZWQubGFiZWwpIHtcclxuICAgICAgICAgICAgYWN0dWFsVGVybSA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuZ2VuZXJhdGVWaWV3SXRlbXModGhpcy5vcHRpb25zLCBhY3R1YWxUZXJtKTtcclxuXHJcbiAgICAgICAgLy8gQWRqdXN0IGhpZ2hsaWdodCBpbmRleCBpZiBuZWVkZWQgKHJlc2V0IGlmIHNlYXJjaCBjaGFuZ2VkKVxyXG4gICAgICAgIGlmICh0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDEgJiYgIXRoaXMuZmlsdGVyZWRPcHRpb25zWzBdLmlzR3JvdXBMYWJlbCkge1xyXG4gICAgICAgICAgICB0aGlzLmhpZ2hsaWdodGVkSW5kZXggPSAwO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRJbmRleCA9IC0xO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBGbGF0dGVucyB0aGUgbWl4ZWQgb3B0aW9ucyBpbnB1dCBpbnRvIGEgdmlldy1yZWFkeSBsaXN0XHJcbiAgICBwcml2YXRlIGdlbmVyYXRlVmlld0l0ZW1zKFxyXG4gICAgICAgIG9wdGlvbnM6IChEcm9wZG93bk9wdGlvbiB8IERyb3Bkb3duR3JvdXApW10sXHJcbiAgICAgICAgdGVybTogc3RyaW5nXHJcbiAgICApOiBEcm9wZG93blZpZXdJdGVtW10ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdDogRHJvcGRvd25WaWV3SXRlbVtdID0gW107XHJcbiAgICAgICAgY29uc3QgbG93ZXJUZXJtID0gdGVybSA/IHRlcm0udG9Mb3dlckNhc2UoKSA6ICcnO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygb3B0aW9ucykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0dyb3VwKGl0ZW0pKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBJdCdzIGEgZ3JvdXBcclxuICAgICAgICAgICAgICAgIGxldCBtYXRjaGluZ0l0ZW1zID0gaXRlbS5pdGVtcztcclxuICAgICAgICAgICAgICAgIGlmIChsb3dlclRlcm0pIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ0l0ZW1zID0gaXRlbS5pdGVtcy5maWx0ZXIob3B0ID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdC5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyVGVybSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChtYXRjaGluZ0l0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgaGVhZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBpc0dyb3VwTGFiZWw6IHRydWUsIGxhYmVsOiBpdGVtLmxhYmVsIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZCBpdGVtc1xyXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nSXRlbXMuZm9yRWFjaChvcHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0dyb3VwTGFiZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG9wdC5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHQudmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb246IG9wdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2hpbGQ6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBJdCdzIGEgc3RhbmRhbG9uZSBvcHRpb25cclxuICAgICAgICAgICAgICAgIGlmICghbG93ZXJUZXJtIHx8IGl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlclRlcm0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0dyb3VwTGFiZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbjogaXRlbSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGlsZDogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNHcm91cChpdGVtOiBhbnkpOiBpdGVtIGlzIERyb3Bkb3duR3JvdXAge1xyXG4gICAgICAgIHJldHVybiAnaXRlbXMnIGluIGl0ZW0gJiYgQXJyYXkuaXNBcnJheShpdGVtLml0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZpbmRPcHRpb24odmFsdWU6IGFueSk6IERyb3Bkb3duT3B0aW9uIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzR3JvdXAoaXRlbSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gaXRlbS5pdGVtcy5maW5kKG9wdCA9PiBvcHQudmFsdWUgPT09IHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUgPT09IHZhbHVlKSByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkRyb3Bkb3duKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXMuZW1pdCgpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgYmFzZWQgb24gY3VycmVudCB0ZXh0XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucyh0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUgfHwgJycpO1xyXG5cclxuICAgICAgICAgICAgLy8gSGlnaGxpZ2h0IHNlbGVjdGVkIG9wdGlvbiBpZiBhdmFpbGFibGVcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMuZmluZEluZGV4KHYgPT4gIXYuaXNHcm91cExhYmVsICYmIHYudmFsdWUgPT09IHRoaXMuY29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaWR4ID49IDApIHRoaXMuaGlnaGxpZ2h0ZWRJbmRleCA9IGlkeDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDEgJiYgIXRoaXMuZmlsdGVyZWRPcHRpb25zWzBdLmlzR3JvdXBMYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRlZEluZGV4ID0gMDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRJbmRleCA9IC0xO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBpZiAoIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2Z2LWRyb3Bkb3duLWlucHV0JykgJiYgIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2Z2LWRyb3Bkb3duLWFycm93JykpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pc09wZW4pIHRoaXMub3BlbkRyb3Bkb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlRHJvcGRvd24oKSB7XHJcbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkSW5kZXggPSAtMTtcclxuICAgICAgICAvLyBSZXN0b3JlIGxhYmVsXHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmZpbmRPcHRpb24odGhpcy5jb250cm9sLnZhbHVlKTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKHNlbGVjdGVkLmxhYmVsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wudmFsdWUpIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZSgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RPcHRpb24odmlld0l0ZW06IERyb3Bkb3duVmlld0l0ZW0pOiB2b2lkIHtcclxuICAgICAgICBpZiAodmlld0l0ZW0uaXNHcm91cExhYmVsIHx8ICF2aWV3SXRlbS5vcHRpb24pIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZpZXdJdGVtLnZhbHVlKTtcclxuICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuc2V0VmFsdWUodmlld0l0ZW0ubGFiZWwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRJbmRleCA9IC0xO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgICAgdGhpcy5ibHVyLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc09wZW4gJiYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dVcCcgfHwgZXZlbnQua2V5ID09PSAnRW50ZXInKSkge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSByZXR1cm47XHJcblxyXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlSGlnaGxpZ2h0KDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0hpZ2hsaWdodGVkKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlSGlnaGxpZ2h0KC0xKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9IaWdobGlnaHRlZCgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcclxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oaWdobGlnaHRlZEluZGV4ID49IDAgJiYgdGhpcy5oaWdobGlnaHRlZEluZGV4IDwgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RPcHRpb24odGhpcy5maWx0ZXJlZE9wdGlvbnNbdGhpcy5oaWdobGlnaHRlZEluZGV4XSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ1RhYic6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1vdmVIaWdobGlnaHQoc3RlcDogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IG5leHRJbmRleCA9IHRoaXMuaGlnaGxpZ2h0ZWRJbmRleDtcclxuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgICAgICAvLyBMb29wIHRvIGZpbmQgbmV4dCBub24tZ3JvdXAgaXRlbVxyXG4gICAgICAgIC8vIE1heCBpdGVyYXRpb25zIHRvIGF2b2lkIGluZmluaXRlIGxvb3AgKHRob3VnaCB1bmxpa2VseSlcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIG5leHRJbmRleCA9IChuZXh0SW5kZXggKyBzdGVwICsgbGVuKSAlIGxlbjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmZpbHRlcmVkT3B0aW9uc1tuZXh0SW5kZXhdLmlzR3JvdXBMYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRlZEluZGV4ID0gbmV4dEluZGV4O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2Nyb2xsVG9IaWdobGlnaHRlZCgpIHtcclxuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mdi1kcm9wZG93bi1vcHRpb25zJyk7XHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZ2LWRyb3Bkb3duLW9wdGlvbicpO1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1t0aGlzLmhpZ2hsaWdodGVkSW5kZXhdO1xyXG4gICAgICAgIGlmIChsaXN0ICYmIGl0ZW0pIHtcclxuICAgICAgICAgICAgY29uc3QgbGlzdFJlY3QgPSBsaXN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtUmVjdCA9IGl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgICAgICBpZiAoaXRlbVJlY3QuYm90dG9tID4gbGlzdFJlY3QuYm90dG9tKSB7XHJcbiAgICAgICAgICAgICAgICBsaXN0LnNjcm9sbFRvcCArPSAoaXRlbVJlY3QuYm90dG9tIC0gbGlzdFJlY3QuYm90dG9tKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtUmVjdC50b3AgPCBsaXN0UmVjdC50b3ApIHtcclxuICAgICAgICAgICAgICAgIGxpc3Quc2Nyb2xsVG9wIC09IChsaXN0UmVjdC50b3AgLSBpdGVtUmVjdC50b3ApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQmx1cigpOiB2b2lkIHtcclxuICAgICAgICAvLyBWYWxpZGF0aW9uIGhhbmRsZWQgb24gY2xvc2VEcm9wZG93blxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICAgIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbCAmJiB0aGlzLnNjaGVtYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZSh0aGlzLmNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ibHVyLmVtaXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbklucHV0Rm9jdXMoKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcclxuICAgIH1cclxuXHJcbiAgICBpc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHRoaXMuc2NoZW1hPy5ydWxlcz8uc29tZShcclxuICAgICAgICAgICAgICAgIChyKSA9PiByLm5hbWUgPT09ICdyZXF1aXJlZCcgJiYgci5wYXJhbXM/LlsnZW5hYmxlZCddXHJcbiAgICAgICAgICAgICkgfHwgZmFsc2VcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5lcnJvck1lc3NhZ2UpIHJldHVybiAnJztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbD8uZXJyb3JzPy5bJ21lc3NhZ2UnXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sLmVycm9yc1snbWVzc2FnZSddO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgICAgICAgRVJSX1JFUVVJUkVEOiAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcsXHJcbiAgICAgICAgICAgIEVSUl9JTlZBTElEX1ZBTFVFOiAnSW52YWxpZCBzZWxlY3Rpb24nLFxyXG4gICAgICAgICAgICBFUlJfRFVQTElDQVRFOiAnVGhpcyBzZWxlY3Rpb24gYWxyZWFkeSBleGlzdHMnLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZXNbdGhpcy5lcnJvck1lc3NhZ2VdIHx8IHRoaXMuZXJyb3JNZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU2VsZWN0ZWQodmlld0l0ZW06IERyb3Bkb3duVmlld0l0ZW0pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodmlld0l0ZW0udmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2aWV3SXRlbS52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB2aWV3SXRlbS52YWx1ZSA9PT0gdGhpcy5jb250cm9sPy52YWx1ZTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZnYtZHJvcGRvd24tY29udGFpbmVyXCI+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIGNsYXNzPVwiZnYtZHJvcGRvd24tbGFiZWxcIj5cclxuICAgICAgICB7eyBsYWJlbCB9fVxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNSZXF1aXJlZCgpXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPio8L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmdi1kcm9wZG93bi13cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZ2LWRyb3Bkb3duXCIgW2NsYXNzLmZ2LWRyb3Bkb3duLWVycm9yXT1cImVycm9yTWVzc2FnZSAmJiBjb250cm9sPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgW2NsYXNzLmZ2LWRyb3Bkb3duLWRpc2FibGVkXT1cImRpc2FibGVkXCIgW2NsYXNzLmZ2LWRyb3Bkb3duLW9wZW5dPVwiaXNPcGVuXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ29udGFpbmVyQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI3NlYXJjaElucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmdi1kcm9wZG93bi1pbnB1dFwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoKVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uSW5wdXRGb2N1cygpXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ2LWRyb3Bkb3duLWFycm93XCIgW2NsYXNzLmFycm93LXVwXT1cImlzT3BlblwiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigpXCI+4pa8PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNPcGVuXCIgY2xhc3M9XCJmdi1kcm9wZG93bi1vcHRpb25zXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb24uaXNHcm91cExhYmVsXCIgY2xhc3M9XCJmdi1kcm9wZG93bi1ncm91cC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9wdGlvbi5pc0dyb3VwTGFiZWxcIiBjbGFzcz1cImZ2LWRyb3Bkb3duLW9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZ2LWRyb3Bkb3duLW9wdGlvbi1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mdi1kcm9wZG93bi1vcHRpb24taGlnaGxpZ2h0ZWRdPVwiaSA9PT0gaGlnaGxpZ2h0ZWRJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNoaWxkLW9wdGlvbl09XCJvcHRpb24uaXNDaGlsZFwiIChtb3VzZWVudGVyKT1cImhpZ2hsaWdodGVkSW5kZXggPSBpXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInNlbGVjdE9wdGlvbihvcHRpb24pOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImZ2LWRyb3Bkb3duLW9wdGlvbiBmdi1uby1yZXN1bHRzXCI+XHJcbiAgICAgICAgICAgICAgICBObyBvcHRpb25zIGZvdW5kXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZSAmJiBjb250cm9sPy50b3VjaGVkXCIgY2xhc3M9XCJmdi1kcm9wZG93bi1lcnJvci1tZXNzYWdlXCI+XHJcbiAgICAgICAg4pqgIHt7IGdldEVycm9yTWVzc2FnZSgpIH19XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
378
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnYtZHJvcGRvd24uY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZnYtY29udHJvbHMvc3JjL2xpYi9mdi1kcm9wZG93bi9mdi1kcm9wZG93bi5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdi1jb250cm9scy9zcmMvbGliL2Z2LWRyb3Bkb3duL2Z2LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDSCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEVBR1osU0FBUyxFQUlULFlBQVksRUFDZixNQUFNLGVBQWUsQ0FBQztBQUN2QixPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRWxFLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sOEJBQThCLENBQUM7Ozs7QUEyQjNFLE1BQU0sT0FBTyxtQkFBbUI7SUFvQlI7SUFuQlgsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixXQUFXLEdBQVcsa0JBQWtCLENBQUM7SUFDekMsT0FBTyxHQUF1QyxFQUFFLENBQUM7SUFDakQsTUFBTSxDQUFvQjtJQUMxQixPQUFPLENBQWU7SUFDdEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUV6QixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQW1CLENBQUM7SUFDbEQsSUFBSSxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFDaEMsS0FBSyxHQUFHLElBQUksWUFBWSxFQUFRLENBQUM7SUFFakIsV0FBVyxDQUFnQztJQUNyRSxZQUFZLEdBQWtCLElBQUksQ0FBQztJQUNuQyxNQUFNLEdBQVksS0FBSyxDQUFDO0lBQ2hCLFlBQVksQ0FBZ0I7SUFDcEMsYUFBYSxHQUFHLElBQUksV0FBVyxDQUFDLEVB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QVksRUFBRSxtQkFBbUIsQ0FBQyxZQUNsQyxhQUFhOytFQUtkLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE9BQU87c0JBQWYsS0FBSztnQkFDRyxNQUFNO3NCQUFkLEtBQUs7Z0JBQ0csT0FBTztzQkFBZixLQUFLO2dCQUNHLFFBQVE7c0JBQWhCLEtBQUs7Z0JBRUksV0FBVztzQkFBcEIsTUFBTTtnQkFDRyxJQUFJO3NCQUFiLE1BQU07Z0JBQ0csS0FBSztzQkFBZCxNQUFNO2dCQUVtQixXQUFXO3NCQUFwQyxTQUFTO3VCQUFDLGFBQWE7Z0JBZ1B4QixTQUFTO3NCQURSLFlBQVk7dUJBQUMsU0FBUyxFQUFFLENBQUMsUUFBUSxDQUFDO2dCQXlFbkMsY0FBYztzQkFEYixZQUFZO3VCQUFDLGdCQUFnQixFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICAgIENvbXBvbmVudCxcclxuICAgIElucHV0LFxyXG4gICAgT3V0cHV0LFxyXG4gICAgRXZlbnRFbWl0dGVyLFxyXG4gICAgT25Jbml0LFxyXG4gICAgT25EZXN0cm95LFxyXG4gICAgVmlld0NoaWxkLFxyXG4gICAgRWxlbWVudFJlZixcclxuICAgIE9uQ2hhbmdlcyxcclxuICAgIFNpbXBsZUNoYW5nZXMsXHJcbiAgICBIb3N0TGlzdGVuZXJcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcclxuaW1wb3J0IHsgRm9ybUNvbnRyb2wsIFJlYWN0aXZlRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XHJcbmltcG9ydCB7IFN1YnNjcmlwdGlvbiB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBWYWxpZGF0b3IsIFZhbGlkYXRpb25TY2hlbWEgfSBmcm9tICdAZm92ZXN0dGEyL3ZhbGlkYXRpb24tZW5naW5lJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25PcHRpb24ge1xyXG4gICAgbGFiZWw6IHN0cmluZztcclxuICAgIHZhbHVlOiBzdHJpbmcgfCBudW1iZXI7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25Hcm91cCB7XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgaXRlbXM6IERyb3Bkb3duT3B0aW9uW107XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgRHJvcGRvd25WaWV3SXRlbSB7XHJcbiAgICBpc0dyb3VwTGFiZWw6IGJvb2xlYW47XHJcbiAgICBsYWJlbDogc3RyaW5nO1xyXG4gICAgdmFsdWU/OiBzdHJpbmcgfCBudW1iZXI7XHJcbiAgICBvcHRpb24/OiBEcm9wZG93bk9wdGlvbjtcclxuICAgIGlzQ2hpbGQ/OiBib29sZWFuO1xyXG59XHJcblxyXG5AQ29tcG9uZW50KHtcclxuICAgIHN0YW5kYWxvbmU6IHRydWUsXHJcbiAgICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcclxuICAgIHNlbGVjdG9yOiAnZnYtZHJvcGRvd24nLFxyXG4gICAgdGVtcGxhdGVVcmw6ICcuL2Z2LWRyb3Bkb3duLmNvbXBvbmVudC5odG1sJyxcclxuICAgIHN0eWxlVXJsczogWycuL2Z2LWRyb3Bkb3duLmNvbXBvbmVudC5jc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZ2RHJvcGRvd25Db21wb25lbnQgaW1wbGVtZW50cyBPbkluaXQsIE9uRGVzdHJveSwgT25DaGFuZ2VzIHtcclxuICAgIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcclxuICAgIEBJbnB1dCgpIHBsYWNlaG9sZGVyOiBzdHJpbmcgPSAnU2VsZWN0IGFuIG9wdGlvbic7XHJcbiAgICBASW5wdXQoKSBvcHRpb25zOiAoRHJvcGRvd25PcHRpb24gfCBEcm9wZG93bkdyb3VwKVtdID0gW107XHJcbiAgICBASW5wdXQoKSBzY2hlbWEhOiBWYWxpZGF0aW9uU2NoZW1hO1xyXG4gICAgQElucHV0KCkgY29udHJvbCE6IEZvcm1Db250cm9sO1xyXG4gICAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcbiAgICBAT3V0cHV0KCkgdmFsdWVDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZyB8IG51bWJlcj4oKTtcclxuICAgIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gICAgQE91dHB1dCgpIGZvY3VzID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG5cclxuICAgIEBWaWV3Q2hpbGQoJ3NlYXJjaElucHV0Jykgc2VhcmNoSW5wdXQhOiBFbGVtZW50UmVmPEhUTUxJbnB1dEVsZW1lbnQ+O1xyXG4gICAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICAgIGlzT3BlbjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgcHJpdmF0ZSBzdWJzY3JpcHRpb24/OiBTdWJzY3JpcHRpb247XHJcbiAgICBzZWFyY2hDb250cm9sID0gbmV3IEZvcm1Db250cm9sKCcnKTtcclxuICAgIGZpbHRlcmVkT3B0aW9uczogRHJvcGRvd25WaWV3SXRlbVtdID0gW107XHJcbiAgICBoaWdobGlnaHRlZEluZGV4OiBudW1iZXIgPSAtMTtcclxuXHJcbiAgICBjb25zdHJ1Y3Rvcihwcml2YXRlIGVsOiBFbGVtZW50UmVmKSB7IH1cclxuXHJcbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcclxuICAgICAgICBpZiAoIXRoaXMuY29udHJvbCkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGdkRyb3Bkb3duOiBjb250cm9sIGlzIHJlcXVpcmVkJyk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcblxyXG4gICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucygnJyk7XHJcblxyXG4gICAgICAgIGlmICghdGhpcy5zY2hlbWEpIHtcclxuICAgICAgICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICAgICAgICAgJ0Z2RHJvcGRvd246IHNjaGVtYSBpcyBub3QgcHJvdmlkZWQsIHZhbGlkYXRpb24gd2lsbCBiZSBza2lwcGVkJ1xyXG4gICAgICAgICAgICApO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyBTdWJzY3JpYmUgdG8gdmFsdWUgY2hhbmdlc1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgICAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgICAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICAgICAgICAgIC8vIFN5bmMgc2VhcmNoIHRleHRcclxuICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmZpbmRPcHRpb24odmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZC5sYWJlbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9IGVsc2UgaWYgKCF2YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKCcnLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgLy8gU2VhcmNoIENvbnRyb2wgQ2hhbmdlc1xyXG4gICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC52YWx1ZUNoYW5nZXMuc3Vic2NyaWJlKHRlcm0gPT4ge1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnModGVybSB8fCAnJyk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCAmJiAhdGhpcy5pc09wZW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBWYWxpZGF0ZSBpbml0aWFsIHZhbHVlXHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKHRoaXMuY29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuZmluZE9wdGlvbih0aGlzLmNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZShzZWxlY3RlZC5sYWJlbCwgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgICAgIHRoaXMuc3Vic2NyaXB0aW9uPy51bnN1YnNjcmliZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcclxuICAgICAgICBpZiAoY2hhbmdlc1snb3B0aW9ucyddICYmIGNoYW5nZXNbJ29wdGlvbnMnXS5jdXJyZW50VmFsdWUpIHtcclxuICAgICAgICAgICAgLy8gUmUtZmlsdGVyIGlmIHNlYXJjaCB0ZXh0IGV4aXN0c1xyXG4gICAgICAgICAgICB0aGlzLmZpbHRlck9wdGlvbnModGhpcy5zZWFyY2hDb250cm9sLnZhbHVlIHx8ICcnKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGNoYW5nZXNbJ2Rpc2FibGVkJ10pIHtcclxuICAgICAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5kaXNhYmxlKHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZSh0aGlzLmNvbnRyb2wudmFsdWUpOyAvLyBSZS12YWxpZGF0ZSB0byBjbGVhciBlcnJvcnNcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2VhcmNoQ29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChjaGFuZ2VzWydzY2hlbWEnXSAmJiAhY2hhbmdlc1snc2NoZW1hJ10uZmlyc3RDaGFuZ2UpIHtcclxuICAgICAgICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKHRoaXMuY29udHJvbD8udmFsdWUpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHZhbGlkYXRlVmFsdWUodmFsdWU6IGFueSk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5zY2hlbWEpIHJldHVybjtcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBjb25zdCByZXN1bHQgPSBWYWxpZGF0b3IudmFsaWRhdGUodmFsdWUsIHRoaXMuc2NoZW1hKTtcclxuICAgICAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHJlc3VsdC5lcnJvcktleTtcclxuICAgICAgICBjb25zdCBjdXN0b21NZXNzYWdlID0gcmVzdWx0Lm1lc3NhZ2U7XHJcblxyXG4gICAgICAgIGlmICghcmVzdWx0LmlzVmFsaWQgJiYgcmVzdWx0LmVycm9yS2V5KSB7XHJcbiAgICAgICAgICAgIHRoaXMuY29udHJvbC5zZXRFcnJvcnMoeyBbcmVzdWx0LmVycm9yS2V5XTogdHJ1ZSwgbWVzc2FnZTogY3VzdG9tTWVzc2FnZSB9KTtcclxuICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBmaWx0ZXJPcHRpb25zKHRlcm06IHN0cmluZykge1xyXG4gICAgICAgIGxldCBhY3R1YWxUZXJtID0gdGVybTtcclxuICAgICAgICBjb25zdCBzZWxlY3RlZCA9IHRoaXMuZmluZE9wdGlvbih0aGlzLmNvbnRyb2w/LnZhbHVlKTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWQgJiYgdGVybSA9PT0gc2VsZWN0ZWQubGFiZWwpIHtcclxuICAgICAgICAgICAgYWN0dWFsVGVybSA9ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICB0aGlzLmZpbHRlcmVkT3B0aW9ucyA9IHRoaXMuZ2VuZXJhdGVWaWV3SXRlbXModGhpcy5vcHRpb25zLCBhY3R1YWxUZXJtKTtcclxuXHJcbiAgICAgICAgLy8gQWRqdXN0IGhpZ2hsaWdodCBpbmRleCBpZiBuZWVkZWQgKHJlc2V0IGlmIHNlYXJjaCBjaGFuZ2VkKVxyXG4gICAgICAgIGlmICh0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDEgJiYgIXRoaXMuZmlsdGVyZWRPcHRpb25zWzBdLmlzR3JvdXBMYWJlbCkge1xyXG4gICAgICAgICAgICB0aGlzLmhpZ2hsaWdodGVkSW5kZXggPSAwO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRJbmRleCA9IC0xO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICAvLyBGbGF0dGVucyB0aGUgbWl4ZWQgb3B0aW9ucyBpbnB1dCBpbnRvIGEgdmlldy1yZWFkeSBsaXN0XHJcbiAgICBwcml2YXRlIGdlbmVyYXRlVmlld0l0ZW1zKFxyXG4gICAgICAgIG9wdGlvbnM6IChEcm9wZG93bk9wdGlvbiB8IERyb3Bkb3duR3JvdXApW10sXHJcbiAgICAgICAgdGVybTogc3RyaW5nXHJcbiAgICApOiBEcm9wZG93blZpZXdJdGVtW10ge1xyXG4gICAgICAgIGNvbnN0IHJlc3VsdDogRHJvcGRvd25WaWV3SXRlbVtdID0gW107XHJcbiAgICAgICAgY29uc3QgbG93ZXJUZXJtID0gdGVybSA/IHRlcm0udG9Mb3dlckNhc2UoKSA6ICcnO1xyXG5cclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2Ygb3B0aW9ucykge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc0dyb3VwKGl0ZW0pKSB7XHJcbiAgICAgICAgICAgICAgICAvLyBJdCdzIGEgZ3JvdXBcclxuICAgICAgICAgICAgICAgIGxldCBtYXRjaGluZ0l0ZW1zID0gaXRlbS5pdGVtcztcclxuICAgICAgICAgICAgICAgIGlmIChsb3dlclRlcm0pIHtcclxuICAgICAgICAgICAgICAgICAgICBtYXRjaGluZ0l0ZW1zID0gaXRlbS5pdGVtcy5maWx0ZXIob3B0ID0+XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdC5sYWJlbC50b0xvd2VyQ2FzZSgpLmluY2x1ZGVzKGxvd2VyVGVybSlcclxuICAgICAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgICAgIGlmIChtYXRjaGluZ0l0ZW1zLmxlbmd0aCA+IDApIHtcclxuICAgICAgICAgICAgICAgICAgICAvLyBBZGQgaGVhZGVyXHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goeyBpc0dyb3VwTGFiZWw6IHRydWUsIGxhYmVsOiBpdGVtLmxhYmVsIH0pO1xyXG4gICAgICAgICAgICAgICAgICAgIC8vIEFkZCBpdGVtc1xyXG4gICAgICAgICAgICAgICAgICAgIG1hdGNoaW5nSXRlbXMuZm9yRWFjaChvcHQgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQucHVzaCh7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc0dyb3VwTGFiZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWw6IG9wdC5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlOiBvcHQudmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb246IG9wdCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzQ2hpbGQ6IHRydWVcclxuICAgICAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAvLyBJdCdzIGEgc3RhbmRhbG9uZSBvcHRpb25cclxuICAgICAgICAgICAgICAgIGlmICghbG93ZXJUZXJtIHx8IGl0ZW0ubGFiZWwudG9Mb3dlckNhc2UoKS5pbmNsdWRlcyhsb3dlclRlcm0pKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVzdWx0LnB1c2goe1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpc0dyb3VwTGFiZWw6IGZhbHNlLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbDogaXRlbS5sYWJlbCxcclxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU6IGl0ZW0udmFsdWUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbjogaXRlbSxcclxuICAgICAgICAgICAgICAgICAgICAgICAgaXNDaGlsZDogZmFsc2VcclxuICAgICAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmVzdWx0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgaXNHcm91cChpdGVtOiBhbnkpOiBpdGVtIGlzIERyb3Bkb3duR3JvdXAge1xyXG4gICAgICAgIHJldHVybiAnaXRlbXMnIGluIGl0ZW0gJiYgQXJyYXkuaXNBcnJheShpdGVtLml0ZW1zKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIGZpbmRPcHRpb24odmFsdWU6IGFueSk6IERyb3Bkb3duT3B0aW9uIHwgdW5kZWZpbmVkIHtcclxuICAgICAgICBmb3IgKGNvbnN0IGl0ZW0gb2YgdGhpcy5vcHRpb25zKSB7XHJcbiAgICAgICAgICAgIGlmICh0aGlzLmlzR3JvdXAoaXRlbSkpIHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IGZvdW5kID0gaXRlbS5pdGVtcy5maW5kKG9wdCA9PiBvcHQudmFsdWUgPT09IHZhbHVlKTtcclxuICAgICAgICAgICAgICAgIGlmIChmb3VuZCkgcmV0dXJuIGZvdW5kO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgaWYgKGl0ZW0udmFsdWUgPT09IHZhbHVlKSByZXR1cm4gaXRlbTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdW5kZWZpbmVkO1xyXG4gICAgfVxyXG5cclxuICAgIHRvZ2dsZURyb3Bkb3duKCk6IHZvaWQge1xyXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSB7XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgb3BlbkRyb3Bkb3duKCkge1xyXG4gICAgICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xyXG4gICAgICAgICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XHJcbiAgICAgICAgICAgIHRoaXMuZm9jdXMuZW1pdCgpO1xyXG4gICAgICAgICAgICAvLyBGaWx0ZXIgYmFzZWQgb24gY3VycmVudCB0ZXh0XHJcbiAgICAgICAgICAgIHRoaXMuZmlsdGVyT3B0aW9ucyh0aGlzLnNlYXJjaENvbnRyb2wudmFsdWUgfHwgJycpO1xyXG5cclxuICAgICAgICAgICAgLy8gSGlnaGxpZ2h0IHNlbGVjdGVkIG9wdGlvbiBpZiBhdmFpbGFibGVcclxuICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbC52YWx1ZSkge1xyXG4gICAgICAgICAgICAgICAgY29uc3QgaWR4ID0gdGhpcy5maWx0ZXJlZE9wdGlvbnMuZmluZEluZGV4KHYgPT4gIXYuaXNHcm91cExhYmVsICYmIHYudmFsdWUgPT09IHRoaXMuY29udHJvbC52YWx1ZSk7XHJcbiAgICAgICAgICAgICAgICBpZiAoaWR4ID49IDApIHRoaXMuaGlnaGxpZ2h0ZWRJbmRleCA9IGlkeDtcclxuICAgICAgICAgICAgfSBlbHNlIGlmICh0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDEgJiYgIXRoaXMuZmlsdGVyZWRPcHRpb25zWzBdLmlzR3JvdXBMYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRlZEluZGV4ID0gMDtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRJbmRleCA9IC0xO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQ29udGFpbmVyQ2xpY2soZXZlbnQ6IE1vdXNlRXZlbnQpIHtcclxuICAgICAgICBpZiAodGhpcy5kaXNhYmxlZCkgcmV0dXJuO1xyXG4gICAgICAgIGNvbnN0IHRhcmdldCA9IGV2ZW50LnRhcmdldCBhcyBIVE1MRWxlbWVudDtcclxuICAgICAgICBpZiAoIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2Z2LWRyb3Bkb3duLWlucHV0JykgJiYgIXRhcmdldC5jbGFzc0xpc3QuY29udGFpbnMoJ2Z2LWRyb3Bkb3duLWFycm93JykpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hJbnB1dC5uYXRpdmVFbGVtZW50LmZvY3VzKCk7XHJcbiAgICAgICAgICAgIGlmICghdGhpcy5pc09wZW4pIHRoaXMub3BlbkRyb3Bkb3duKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGNsb3NlRHJvcGRvd24oKSB7XHJcbiAgICAgICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcclxuICAgICAgICB0aGlzLmhpZ2hsaWdodGVkSW5kZXggPSAtMTtcclxuICAgICAgICAvLyBSZXN0b3JlIGxhYmVsXHJcbiAgICAgICAgY29uc3Qgc2VsZWN0ZWQgPSB0aGlzLmZpbmRPcHRpb24odGhpcy5jb250cm9sLnZhbHVlKTtcclxuICAgICAgICBpZiAoc2VsZWN0ZWQpIHtcclxuICAgICAgICAgICAgdGhpcy5zZWFyY2hDb250cm9sLnNldFZhbHVlKHNlbGVjdGVkLmxhYmVsLCB7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmNvbnRyb2wudmFsdWUpIHRoaXMuc2VhcmNoQ29udHJvbC5zZXRWYWx1ZSgnJywgeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBzZWxlY3RPcHRpb24odmlld0l0ZW06IERyb3Bkb3duVmlld0l0ZW0pOiB2b2lkIHtcclxuICAgICAgICBpZiAodmlld0l0ZW0uaXNHcm91cExhYmVsIHx8ICF2aWV3SXRlbS5vcHRpb24pIHJldHVybjtcclxuXHJcbiAgICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZpZXdJdGVtLnZhbHVlKTtcclxuICAgICAgICB0aGlzLnNlYXJjaENvbnRyb2wuc2V0VmFsdWUodmlld0l0ZW0ubGFiZWwsIHsgZW1pdEV2ZW50OiBmYWxzZSB9KTtcclxuICAgICAgICB0aGlzLmlzT3BlbiA9IGZhbHNlO1xyXG4gICAgICAgIHRoaXMuaGlnaGxpZ2h0ZWRJbmRleCA9IC0xO1xyXG4gICAgICAgIHRoaXMuc2VhcmNoSW5wdXQubmF0aXZlRWxlbWVudC5ibHVyKCk7XHJcbiAgICAgICAgdGhpcy5ibHVyLmVtaXQoKTtcclxuICAgIH1cclxuXHJcbiAgICBASG9zdExpc3RlbmVyKCdrZXlkb3duJywgWyckZXZlbnQnXSlcclxuICAgIG9uS2V5RG93bihldmVudDogS2V5Ym9hcmRFdmVudCkge1xyXG4gICAgICAgIGlmICghdGhpcy5pc09wZW4gJiYgKGV2ZW50LmtleSA9PT0gJ0Fycm93RG93bicgfHwgZXZlbnQua2V5ID09PSAnQXJyb3dVcCcgfHwgZXZlbnQua2V5ID09PSAnRW50ZXInKSkge1xyXG4gICAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xyXG4gICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICByZXR1cm47XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoIXRoaXMuaXNPcGVuKSByZXR1cm47XHJcblxyXG4gICAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XHJcbiAgICAgICAgICAgIGNhc2UgJ0Fycm93RG93bic6XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlSGlnaGxpZ2h0KDEpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5zY3JvbGxUb0hpZ2hsaWdodGVkKCk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnQXJyb3dVcCc6XHJcbiAgICAgICAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xyXG4gICAgICAgICAgICAgICAgdGhpcy5tb3ZlSGlnaGxpZ2h0KC0xKTtcclxuICAgICAgICAgICAgICAgIHRoaXMuc2Nyb2xsVG9IaWdobGlnaHRlZCgpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ0VudGVyJzpcclxuICAgICAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5oaWdobGlnaHRlZEluZGV4ID49IDAgJiYgdGhpcy5oaWdobGlnaHRlZEluZGV4IDwgdGhpcy5maWx0ZXJlZE9wdGlvbnMubGVuZ3RoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5zZWxlY3RPcHRpb24odGhpcy5maWx0ZXJlZE9wdGlvbnNbdGhpcy5oaWdobGlnaHRlZEluZGV4XSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICAgICAgY2FzZSAnRXNjYXBlJzpcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICAgIGNhc2UgJ1RhYic6XHJcbiAgICAgICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIG1vdmVIaWdobGlnaHQoc3RlcDogbnVtYmVyKSB7XHJcbiAgICAgICAgbGV0IG5leHRJbmRleCA9IHRoaXMuaGlnaGxpZ2h0ZWRJbmRleDtcclxuICAgICAgICBjb25zdCBsZW4gPSB0aGlzLmZpbHRlcmVkT3B0aW9ucy5sZW5ndGg7XHJcbiAgICAgICAgaWYgKGxlbiA9PT0gMCkgcmV0dXJuO1xyXG5cclxuICAgICAgICAvLyBMb29wIHRvIGZpbmQgbmV4dCBub24tZ3JvdXAgaXRlbVxyXG4gICAgICAgIC8vIE1heCBpdGVyYXRpb25zIHRvIGF2b2lkIGluZmluaXRlIGxvb3AgKHRob3VnaCB1bmxpa2VseSlcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIG5leHRJbmRleCA9IChuZXh0SW5kZXggKyBzdGVwICsgbGVuKSAlIGxlbjtcclxuICAgICAgICAgICAgaWYgKCF0aGlzLmZpbHRlcmVkT3B0aW9uc1tuZXh0SW5kZXhdLmlzR3JvdXBMYWJlbCkge1xyXG4gICAgICAgICAgICAgICAgdGhpcy5oaWdobGlnaHRlZEluZGV4ID0gbmV4dEluZGV4O1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc2Nyb2xsVG9IaWdobGlnaHRlZCgpIHtcclxuICAgICAgICBjb25zdCBsaXN0ID0gdGhpcy5lbC5uYXRpdmVFbGVtZW50LnF1ZXJ5U2VsZWN0b3IoJy5mdi1kcm9wZG93bi1vcHRpb25zJyk7XHJcbiAgICAgICAgY29uc3QgaXRlbXMgPSB0aGlzLmVsLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvckFsbCgnLmZ2LWRyb3Bkb3duLW9wdGlvbicpO1xyXG4gICAgICAgIGNvbnN0IGl0ZW0gPSBpdGVtc1t0aGlzLmhpZ2hsaWdodGVkSW5kZXhdO1xyXG4gICAgICAgIGlmIChsaXN0ICYmIGl0ZW0pIHtcclxuICAgICAgICAgICAgY29uc3QgbGlzdFJlY3QgPSBsaXN0LmdldEJvdW5kaW5nQ2xpZW50UmVjdCgpO1xyXG4gICAgICAgICAgICBjb25zdCBpdGVtUmVjdCA9IGl0ZW0uZ2V0Qm91bmRpbmdDbGllbnRSZWN0KCk7XHJcblxyXG4gICAgICAgICAgICBpZiAoaXRlbVJlY3QuYm90dG9tID4gbGlzdFJlY3QuYm90dG9tKSB7XHJcbiAgICAgICAgICAgICAgICBsaXN0LnNjcm9sbFRvcCArPSAoaXRlbVJlY3QuYm90dG9tIC0gbGlzdFJlY3QuYm90dG9tKTtcclxuICAgICAgICAgICAgfSBlbHNlIGlmIChpdGVtUmVjdC50b3AgPCBsaXN0UmVjdC50b3ApIHtcclxuICAgICAgICAgICAgICAgIGxpc3Quc2Nyb2xsVG9wIC09IChsaXN0UmVjdC50b3AgLSBpdGVtUmVjdC50b3ApO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIG9uQmx1cigpOiB2b2lkIHtcclxuICAgICAgICAvLyBWYWxpZGF0aW9uIGhhbmRsZWQgb24gY2xvc2VEcm9wZG93blxyXG4gICAgfVxyXG5cclxuICAgIEBIb3N0TGlzdGVuZXIoJ2RvY3VtZW50OmNsaWNrJywgWyckZXZlbnQnXSlcclxuICAgIG9uQ2xpY2tPdXRzaWRlKGV2ZW50OiBNb3VzZUV2ZW50KSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLmVsLm5hdGl2ZUVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KSkge1xyXG4gICAgICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcclxuICAgICAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuY29udHJvbCAmJiB0aGlzLnNjaGVtYSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZSh0aGlzLmNvbnRyb2wudmFsdWUpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgdGhpcy5ibHVyLmVtaXQoKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuXHJcbiAgICBvbklucHV0Rm9jdXMoKSB7XHJcbiAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcclxuICAgIH1cclxuXHJcbiAgICBpc1JlcXVpcmVkKCk6IGJvb2xlYW4ge1xyXG4gICAgICAgIHJldHVybiAoXHJcbiAgICAgICAgICAgIHRoaXMuc2NoZW1hPy5ydWxlcz8uc29tZShcclxuICAgICAgICAgICAgICAgIChyKSA9PiByLm5hbWUgPT09ICdyZXF1aXJlZCcgJiYgci5wYXJhbXM/LlsnZW5hYmxlZCddXHJcbiAgICAgICAgICAgICkgfHwgZmFsc2VcclxuICAgICAgICApO1xyXG4gICAgfVxyXG5cclxuICAgIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgICAgIGlmICghdGhpcy5lcnJvck1lc3NhZ2UpIHJldHVybiAnJztcclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY29udHJvbD8uZXJyb3JzPy5bJ21lc3NhZ2UnXSkge1xyXG4gICAgICAgICAgICByZXR1cm4gdGhpcy5jb250cm9sLmVycm9yc1snbWVzc2FnZSddO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgY29uc3QgZXJyb3JNZXNzYWdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgICAgICAgRVJSX1JFUVVJUkVEOiAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcsXHJcbiAgICAgICAgICAgIEVSUl9JTlZBTElEX1ZBTFVFOiAnSW52YWxpZCBzZWxlY3Rpb24nLFxyXG4gICAgICAgICAgICBFUlJfRFVQTElDQVRFOiAnVGhpcyBzZWxlY3Rpb24gYWxyZWFkeSBleGlzdHMnLFxyXG4gICAgICAgIH07XHJcbiAgICAgICAgcmV0dXJuIGVycm9yTWVzc2FnZXNbdGhpcy5lcnJvck1lc3NhZ2VdIHx8IHRoaXMuZXJyb3JNZXNzYWdlO1xyXG4gICAgfVxyXG5cclxuICAgIGlzU2VsZWN0ZWQodmlld0l0ZW06IERyb3Bkb3duVmlld0l0ZW0pOiBib29sZWFuIHtcclxuICAgICAgICBpZiAodmlld0l0ZW0udmFsdWUgPT09IHVuZGVmaW5lZCB8fCB2aWV3SXRlbS52YWx1ZSA9PT0gbnVsbCkgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgIHJldHVybiB2aWV3SXRlbS52YWx1ZSA9PT0gdGhpcy5jb250cm9sPy52YWx1ZTtcclxuICAgIH1cclxufVxyXG4iLCI8ZGl2IGNsYXNzPVwiZnYtZHJvcGRvd24tY29udGFpbmVyXCI+XHJcbiAgICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIGNsYXNzPVwiZnYtZHJvcGRvd24tbGFiZWxcIj5cclxuICAgICAgICB7eyBsYWJlbCB9fVxyXG4gICAgICAgIDxzcGFuICpuZ0lmPVwiaXNSZXF1aXJlZCgpXCIgY2xhc3M9XCJyZXF1aXJlZC1hc3Rlcmlza1wiPio8L3NwYW4+XHJcbiAgICA8L2xhYmVsPlxyXG5cclxuICAgIDxkaXYgY2xhc3M9XCJmdi1kcm9wZG93bi13cmFwcGVyXCI+XHJcbiAgICAgICAgPGRpdiBjbGFzcz1cImZ2LWRyb3Bkb3duXCIgW2NsYXNzLmZ2LWRyb3Bkb3duLWVycm9yXT1cImVycm9yTWVzc2FnZSAmJiBjb250cm9sPy50b3VjaGVkXCJcclxuICAgICAgICAgICAgW2NsYXNzLmZ2LWRyb3Bkb3duLWRpc2FibGVkXT1cImRpc2FibGVkXCIgW2NsYXNzLmZ2LWRyb3Bkb3duLW9wZW5dPVwiaXNPcGVuXCJcclxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uQ29udGFpbmVyQ2xpY2soJGV2ZW50KVwiPlxyXG4gICAgICAgICAgICA8aW5wdXQgI3NlYXJjaElucHV0IHR5cGU9XCJ0ZXh0XCIgY2xhc3M9XCJmdi1kcm9wZG93bi1pbnB1dFwiIFtmb3JtQ29udHJvbF09XCJzZWFyY2hDb250cm9sXCJcclxuICAgICAgICAgICAgICAgIFtwbGFjZWhvbGRlcl09XCJwbGFjZWhvbGRlclwiIChmb2N1cyk9XCJvbklucHV0Rm9jdXMoKVwiIChjbGljayk9XCIkZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IG9uSW5wdXRGb2N1cygpXCJcclxuICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZT1cIm9mZlwiPlxyXG4gICAgICAgICAgICA8c3BhbiBjbGFzcz1cImZ2LWRyb3Bkb3duLWFycm93XCIgW2NsYXNzLmFycm93LXVwXT1cImlzT3BlblwiIChjbGljayk9XCJ0b2dnbGVEcm9wZG93bigpXCI+4pa8PC9zcGFuPlxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2ICpuZ0lmPVwiaXNPcGVuXCIgY2xhc3M9XCJmdi1kcm9wZG93bi1vcHRpb25zXCI+XHJcbiAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nRm9yPVwibGV0IG9wdGlvbiBvZiBmaWx0ZXJlZE9wdGlvbnM7IGxldCBpID0gaW5kZXhcIj5cclxuICAgICAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJvcHRpb24uaXNHcm91cExhYmVsXCIgY2xhc3M9XCJmdi1kcm9wZG93bi1ncm91cC1sYWJlbFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgICAgICA8ZGl2ICpuZ0lmPVwiIW9wdGlvbi5pc0dyb3VwTGFiZWxcIiBjbGFzcz1cImZ2LWRyb3Bkb3duLW9wdGlvblwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmZ2LWRyb3Bkb3duLW9wdGlvbi1zZWxlY3RlZF09XCJpc1NlbGVjdGVkKG9wdGlvbilcIlxyXG4gICAgICAgICAgICAgICAgICAgIFtjbGFzcy5mdi1kcm9wZG93bi1vcHRpb24taGlnaGxpZ2h0ZWRdPVwiaSA9PT0gaGlnaGxpZ2h0ZWRJbmRleFwiXHJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLmNoaWxkLW9wdGlvbl09XCJvcHRpb24uaXNDaGlsZFwiIChtb3VzZWVudGVyKT1cImhpZ2hsaWdodGVkSW5kZXggPSBpXCJcclxuICAgICAgICAgICAgICAgICAgICAobW91c2Vkb3duKT1cInNlbGVjdE9wdGlvbihvcHRpb24pOyAkZXZlbnQucHJldmVudERlZmF1bHQoKVwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IG9wdGlvbi5sYWJlbCB9fVxyXG4gICAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxyXG5cclxuICAgICAgICAgICAgPGRpdiAqbmdJZj1cImZpbHRlcmVkT3B0aW9ucy5sZW5ndGggPT09IDBcIiBjbGFzcz1cImZ2LWRyb3Bkb3duLW9wdGlvbiBmdi1uby1yZXN1bHRzXCI+XHJcbiAgICAgICAgICAgICAgICBObyBvcHRpb25zIGZvdW5kXHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgPC9kaXY+XHJcblxyXG4gICAgPGRpdiAqbmdJZj1cImVycm9yTWVzc2FnZSAmJiBjb250cm9sPy50b3VjaGVkXCIgY2xhc3M9XCJmdi1kcm9wZG93bi1lcnJvci1tZXNzYWdlXCI+XHJcbiAgICAgICAg4pqgIHt7IGdldEVycm9yTWVzc2FnZSgpIH19XHJcbiAgICA8L2Rpdj5cclxuPC9kaXY+Il19
|
|
@@ -44,15 +44,24 @@ export class FvEntryFieldComponent {
|
|
|
44
44
|
if (changes['disabled'] && this.control) {
|
|
45
45
|
if (this.disabled) {
|
|
46
46
|
this.control.disable({ emitEvent: false });
|
|
47
|
+
this.validateValue(this.control.value); // Re-validate to clear errors
|
|
47
48
|
}
|
|
48
49
|
else {
|
|
49
50
|
this.control.enable({ emitEvent: false });
|
|
50
51
|
}
|
|
51
52
|
}
|
|
53
|
+
if (changes['schema'] && !changes['schema'].firstChange) {
|
|
54
|
+
this.validateValue(this.control?.value);
|
|
55
|
+
}
|
|
52
56
|
}
|
|
53
57
|
validateValue(value) {
|
|
54
58
|
if (!this.schema)
|
|
55
59
|
return;
|
|
60
|
+
if (this.disabled) {
|
|
61
|
+
this.errorMessage = null;
|
|
62
|
+
this.control.setErrors(null);
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
56
65
|
const result = Validator.validate(value, this.schema);
|
|
57
66
|
this.errorMessage = result.errorKey;
|
|
58
67
|
const customMessage = result.message;
|
|
@@ -143,4 +152,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.14", ngImpo
|
|
|
143
152
|
}], focus: [{
|
|
144
153
|
type: Output
|
|
145
154
|
}] } });
|
|
146
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnYtZW50cnktZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZnYtY29udHJvbHMvc3JjL2xpYi9mdi1lbnRyeS1maWVsZC9mdi1lbnRyeS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdi1jb250cm9scy9zcmMvbGliL2Z2LWVudHJ5LWZpZWxkL2Z2LWVudHJ5LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBR2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2xFLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFTM0UsTUFBTSxPQUFPLHFCQUFxQjtJQUN2QixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsTUFBTSxDQUFvQjtJQUMxQixPQUFPLENBQWU7SUFDdEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLElBQUksR0FBa0MsTUFBTSxDQUFDO0lBQzdDLGtCQUFrQixHQUFZLEtBQUssQ0FBQztJQUNwQyxTQUFTLEdBQWtCLElBQUksQ0FBQztJQUUvQixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUN6QyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNoQyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUUzQyxZQUFZLEdBQWtCLElBQUksQ0FBQztJQUMzQixZQUFZLENBQWdCO0lBRXBDLFFBQVE7UUFDTixJQUFJ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O1FBRUQsK0NBQStDO1FBQy9DLE1BQU0sYUFBYSxHQUEyQjtZQUM1QyxZQUFZLEVBQUUsd0JBQXdCO1lBQ3RDLGNBQWMsRUFBRSxvQkFBb0I7WUFDcEMsY0FBYyxFQUFFLG1CQUFtQjtZQUNuQyxrQkFBa0IsRUFBRSxnQkFBZ0I7WUFDcEMsYUFBYSxFQUFFLDJCQUEyQjtTQUMzQyxDQUFDO1FBRUYsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDL0QsQ0FBQzt3R0FqSVUscUJBQXFCOzRGQUFyQixxQkFBcUIsZ1lDckJsQyxzdkJBYU0sMHNDREdNLFlBQVksa0lBQUUsbUJBQW1COzs0RkFLaEMscUJBQXFCO2tCQVBqQyxTQUFTO2lDQUNJLElBQUksV0FDUCxDQUFDLFlBQVksRUFBRSxtQkFBbUIsQ0FBQyxZQUNsQyxnQkFBZ0I7OEJBS2pCLEtBQUs7c0JBQWIsS0FBSztnQkFDRyxXQUFXO3NCQUFuQixLQUFLO2dCQUNHLE1BQU07c0JBQWQsS0FBSztnQkFDRyxPQUFPO3NCQUFmLEtBQUs7Z0JBQ0csUUFBUTtzQkFBaEIsS0FBSztnQkFDRyxRQUFRO3NCQUFoQixLQUFLO2dCQUNHLElBQUk7c0JBQVosS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRvciwgVmFsaWRhdGlvblNjaGVtYSB9IGZyb20gJ0Bmb3Zlc3R0YTIvdmFsaWRhdGlvbi1lbmdpbmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcclxuICBzZWxlY3RvcjogJ2Z2LWVudHJ5LWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZnYtZW50cnktZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9mdi1lbnRyeS1maWVsZC5jb21wb25lbnQuY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZ2RW50cnlGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc2NoZW1hITogVmFsaWRhdGlvblNjaGVtYTtcclxuICBASW5wdXQoKSBjb250cm9sITogRm9ybUNvbnRyb2w7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHR5cGU6ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAnZW1haWwnID0gJ3RleHQnO1xyXG4gIEBJbnB1dCgpIGFsbG93QWxwaGFiZXRzT25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBmb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY29udHJvbCkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdGdkVudHJ5RmllbGQ6IGNvbnRyb2wgaXMgcmVxdWlyZWQnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zY2hlbWEpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICdGdkVudHJ5RmllbGQ6IHNjaGVtYSBpcyBub3QgcHJvdmlkZWQsIHZhbGlkYXRpb24gd2lsbCBiZSBza2lwcGVkJ1xyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZhbHVlIGNoYW5nZXNcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBWYWxpZGF0ZSBpbml0aWFsIHZhbHVlXHJcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUodGhpcy5jb250cm9sLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSAmJiB0aGlzLmNvbnRyb2wpIHtcclxuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgdGhpcy5jb250cm9sLmVuYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc2NoZW1hKSByZXR1cm47XHJcblxyXG4gICAgY29uc3QgcmVzdWx0ID0gVmFsaWRhdG9yLnZhbGlkYXRlKHZhbHVlLCB0aGlzLnNjaGVtYSk7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHJlc3VsdC5lcnJvcktleTtcclxuICAgIGNvbnN0IGN1c3RvbU1lc3NhZ2UgPSByZXN1bHQubWVzc2FnZTtcclxuXHJcbiAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkICYmIHJlc3VsdC5lcnJvcktleSkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKHsgW3Jlc3VsdC5lcnJvcktleV06IHRydWUsIG1lc3NhZ2U6IGN1c3RvbU1lc3NhZ2UgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25CbHVyKGV2ZW50PzogRm9jdXNFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbCAmJiB0aGlzLnNjaGVtYSkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUodGhpcy5jb250cm9sLnZhbHVlKTtcclxuICAgIH1cclxuICAgIHRoaXMuYmx1ci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKGV2ZW50PzogRm9jdXNFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb2N1cy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGxldCB2YWx1ZSA9IGlucHV0LnZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLmFsbG93QWxwaGFiZXRzT25seSkge1xyXG4gICAgICAvLyBSZW1vdmUgYW55IG5vbi1hbHBoYWJldCBjaGFyYWN0ZXJzIChrZWVwaW5nIHNwYWNlcyBpZiBkZXNpcmVkLCB1c3VhbGx5IG5hbWVzIGhhdmUgc3BhY2VzKVxyXG4gICAgICAvLyBBc3N1bWluZyAnYWxwaGFiZXRzJyBtZWFucyBbYS16QS1aXSBhbmQgbWF5YmUgc3BhY2VzLlxyXG4gICAgICAvLyBTdHJpY3QgYWxwaGFiZXRzOiAvW15hLXpBLVpdL2dcclxuICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXmEtekEtWiBdL2csICcnKTtcclxuICAgICAgaWYgKG5ld1ZhbHVlICE9PSB2YWx1ZSkge1xyXG4gICAgICAgIHZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IHRoaXMubWF4TGVuZ3RoKSB7XHJcbiAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHRoaXMubWF4TGVuZ3RoKTtcclxuICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLnNjaGVtYT8ucnVsZXM/LnNvbWUoXHJcbiAgICAgICAgKHIpID0+IHIubmFtZSA9PT0gJ3JlcXVpcmVkJyAmJiByLnBhcmFtcz8uWydlbmFibGVkJ11cclxuICAgICAgKSB8fCBmYWxzZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLmVycm9yTWVzc2FnZSkgcmV0dXJuICcnO1xyXG5cclxuICAgIC8vIElmIHRoZXJlIGlzIGEgY3VzdG9tIG1lc3NhZ2UgaW4gdGhlIGNvbnRyb2wgZXJyb3JzLCB1c2UgaXRcclxuICAgIGlmICh0aGlzLmNvbnRyb2w/LmVycm9ycz8uWydtZXNzYWdlJ10pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29udHJvbC5lcnJvcnNbJ21lc3NhZ2UnXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBZb3UgY2FuIGltcGxlbWVudCBhIHRyYW5zbGF0aW9uIHNlcnZpY2UgaGVyZVxyXG4gICAgY29uc3QgZXJyb3JNZXNzYWdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgRVJSX1JFUVVJUkVEOiAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcsXHJcbiAgICAgIEVSUl9NSU5fTEVOR1RIOiAnVmFsdWUgaXMgdG9vIHNob3J0JyxcclxuICAgICAgRVJSX01BWF9MRU5HVEg6ICdWYWx1ZSBpcyB0b28gbG9uZycsXHJcbiAgICAgIEVSUl9SRUdFWF9NSVNNQVRDSDogJ0ludmFsaWQgZm9ybWF0JyxcclxuICAgICAgRVJSX0RVUExJQ0FURTogJ1RoaXMgdmFsdWUgYWxyZWFkeSBleGlzdHMnLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gZXJyb3JNZXNzYWdlc1t0aGlzLmVycm9yTWVzc2FnZV0gfHwgdGhpcy5lcnJvck1lc3NhZ2U7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmdi1lbnRyeS1maWVsZC1jb250YWluZXJcIiAqbmdJZj1cImNvbnRyb2xcIj5cclxuICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIGNsYXNzPVwiZnYtbGFiZWxcIiBbY2xhc3MuZnYtbGFiZWwtcmVxdWlyZWRdPVwiaXNSZXF1aXJlZCgpXCI+XHJcbiAgICB7eyBsYWJlbCB9fVxyXG4gICAgPHNwYW4gKm5nSWY9XCJpc1JlcXVpcmVkKClcIiBjbGFzcz1cImZ2LXJlcXVpcmVkLWFzdGVyaXNrXCI+Kjwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG5cclxuICA8aW5wdXQgW3R5cGVdPVwidHlwZVwiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIiBbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCIgY2xhc3M9XCJmdi1pbnB1dFwiXHJcbiAgICBbY2xhc3MuZnYtaW5wdXQtZXJyb3JdPVwiZXJyb3JNZXNzYWdlICYmIGNvbnRyb2wudG91Y2hlZFwiIFtjbGFzcy5mdi1pbnB1dC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIC8+XHJcblxyXG4gIDxzcGFuICpuZ0lmPVwiZXJyb3JNZXNzYWdlICYmIGNvbnRyb2wudG91Y2hlZFwiIGNsYXNzPVwiZnYtZXJyb3ItbWVzc2FnZVwiPlxyXG4gICAge3sgZ2V0RXJyb3JNZXNzYWdlKCkgfX1cclxuICA8L3NwYW4+XHJcbjwvZGl2PiJdfQ==
|
|
155
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZnYtZW50cnktZmllbGQuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZnYtY29udHJvbHMvc3JjL2xpYi9mdi1lbnRyeS1maWVsZC9mdi1lbnRyeS1maWVsZC5jb21wb25lbnQudHMiLCIuLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9mdi1jb250cm9scy9zcmMvbGliL2Z2LWVudHJ5LWZpZWxkL2Z2LWVudHJ5LWZpZWxkLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsS0FBSyxFQUNMLE1BQU0sRUFDTixZQUFZLEdBR2IsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBZSxtQkFBbUIsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBR2xFLE9BQU8sRUFBRSxTQUFTLEVBQW9CLE1BQU0sOEJBQThCLENBQUM7Ozs7QUFTM0UsTUFBTSxPQUFPLHFCQUFxQjtJQUN2QixLQUFLLEdBQVcsRUFBRSxDQUFDO0lBQ25CLFdBQVcsR0FBVyxFQUFFLENBQUM7SUFDekIsTUFBTSxDQUFvQjtJQUMxQixPQUFPLENBQWU7SUFDdEIsUUFBUSxHQUFZLEtBQUssQ0FBQztJQUMxQixRQUFRLEdBQVksS0FBSyxDQUFDO0lBQzFCLElBQUksR0FBa0MsTUFBTSxDQUFDO0lBQzdDLGtCQUFrQixHQUFZLEtBQUssQ0FBQztJQUNwQyxTQUFTLEdBQWtCLElBQUksQ0FBQztJQUUvQixXQUFXLEdBQUcsSUFBSSxZQUFZLEVBQVUsQ0FBQztJQUN6QyxJQUFJLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUNoQyxLQUFLLEdBQUcsSUFBSSxZQUFZLEVBQVEsQ0FBQztJQUUzQyxZQUFZLEdBQWtCLElBQUksQ0FBQztJQUMzQixZQUFZLENBQWdCO0lBRXBDLFFBQVE7UUFDTixJQUFJ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LElBQUk7c0JBQVosS0FBSztnQkFDRyxrQkFBa0I7c0JBQTFCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFFSSxXQUFXO3NCQUFwQixNQUFNO2dCQUNHLElBQUk7c0JBQWIsTUFBTTtnQkFDRyxLQUFLO3NCQUFkLE1BQU0iLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xyXG4gIENvbXBvbmVudCxcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIE9uSW5pdCxcclxuICBPbkRlc3Ryb3ksXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XHJcbmltcG9ydCB7IEZvcm1Db250cm9sLCBSZWFjdGl2ZUZvcm1zTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xyXG5pbXBvcnQgeyBTdWJzY3JpcHRpb24gfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgT25DaGFuZ2VzLCBTaW1wbGVDaGFuZ2VzIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IFZhbGlkYXRvciwgVmFsaWRhdGlvblNjaGVtYSB9IGZyb20gJ0Bmb3Zlc3R0YTIvdmFsaWRhdGlvbi1lbmdpbmUnO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc3RhbmRhbG9uZTogdHJ1ZSxcclxuICBpbXBvcnRzOiBbQ29tbW9uTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlXSxcclxuICBzZWxlY3RvcjogJ2Z2LWVudHJ5LWZpZWxkJyxcclxuICB0ZW1wbGF0ZVVybDogJy4vZnYtZW50cnktZmllbGQuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsOiAnLi9mdi1lbnRyeS1maWVsZC5jb21wb25lbnQuY3NzJyxcclxufSlcclxuZXhwb3J0IGNsYXNzIEZ2RW50cnlGaWVsZENvbXBvbmVudCBpbXBsZW1lbnRzIE9uSW5pdCwgT25EZXN0cm95LCBPbkNoYW5nZXMge1xyXG4gIEBJbnB1dCgpIGxhYmVsOiBzdHJpbmcgPSAnJztcclxuICBASW5wdXQoKSBwbGFjZWhvbGRlcjogc3RyaW5nID0gJyc7XHJcbiAgQElucHV0KCkgc2NoZW1hITogVmFsaWRhdGlvblNjaGVtYTtcclxuICBASW5wdXQoKSBjb250cm9sITogRm9ybUNvbnRyb2w7XHJcbiAgQElucHV0KCkgZGlzYWJsZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSByZWFkb25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHR5cGU6ICd0ZXh0JyB8ICdwYXNzd29yZCcgfCAnZW1haWwnID0gJ3RleHQnO1xyXG4gIEBJbnB1dCgpIGFsbG93QWxwaGFiZXRzT25seTogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG1heExlbmd0aDogbnVtYmVyIHwgbnVsbCA9IG51bGw7XHJcblxyXG4gIEBPdXRwdXQoKSB2YWx1ZUNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xyXG4gIEBPdXRwdXQoKSBibHVyID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xyXG4gIEBPdXRwdXQoKSBmb2N1cyA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcclxuXHJcbiAgZXJyb3JNZXNzYWdlOiBzdHJpbmcgfCBudWxsID0gbnVsbDtcclxuICBwcml2YXRlIHN1YnNjcmlwdGlvbj86IFN1YnNjcmlwdGlvbjtcclxuXHJcbiAgbmdPbkluaXQoKTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuY29udHJvbCkge1xyXG4gICAgICBjb25zb2xlLmVycm9yKCdGdkVudHJ5RmllbGQ6IGNvbnRyb2wgaXMgcmVxdWlyZWQnKTtcclxuICAgICAgcmV0dXJuO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICghdGhpcy5zY2hlbWEpIHtcclxuICAgICAgY29uc29sZS53YXJuKFxyXG4gICAgICAgICdGdkVudHJ5RmllbGQ6IHNjaGVtYSBpcyBub3QgcHJvdmlkZWQsIHZhbGlkYXRpb24gd2lsbCBiZSBza2lwcGVkJ1xyXG4gICAgICApO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgLy8gU3Vic2NyaWJlIHRvIHZhbHVlIGNoYW5nZXNcclxuICAgIHRoaXMuc3Vic2NyaXB0aW9uID0gdGhpcy5jb250cm9sLnZhbHVlQ2hhbmdlcy5zdWJzY3JpYmUoKHZhbHVlKSA9PiB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZSh2YWx1ZSk7XHJcbiAgICAgIHRoaXMudmFsdWVDaGFuZ2UuZW1pdCh2YWx1ZSk7XHJcbiAgICB9KTtcclxuXHJcbiAgICAvLyBWYWxpZGF0ZSBpbml0aWFsIHZhbHVlXHJcbiAgICB0aGlzLnZhbGlkYXRlVmFsdWUodGhpcy5jb250cm9sLnZhbHVlKTtcclxuICB9XHJcblxyXG4gIG5nT25EZXN0cm95KCk6IHZvaWQge1xyXG4gICAgdGhpcy5zdWJzY3JpcHRpb24/LnVuc3Vic2NyaWJlKCk7XHJcbiAgfVxyXG5cclxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBTaW1wbGVDaGFuZ2VzKTogdm9pZCB7XHJcbiAgICBpZiAoY2hhbmdlc1snZGlzYWJsZWQnXSAmJiB0aGlzLmNvbnRyb2wpIHtcclxuICAgICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuZGlzYWJsZSh7IGVtaXRFdmVudDogZmFsc2UgfSk7XHJcbiAgICAgICAgdGhpcy52YWxpZGF0ZVZhbHVlKHRoaXMuY29udHJvbC52YWx1ZSk7IC8vIFJlLXZhbGlkYXRlIHRvIGNsZWFyIGVycm9yc1xyXG4gICAgICB9IGVsc2Uge1xyXG4gICAgICAgIHRoaXMuY29udHJvbC5lbmFibGUoeyBlbWl0RXZlbnQ6IGZhbHNlIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBpZiAoY2hhbmdlc1snc2NoZW1hJ10gJiYgIWNoYW5nZXNbJ3NjaGVtYSddLmZpcnN0Q2hhbmdlKSB7XHJcbiAgICAgIHRoaXMudmFsaWRhdGVWYWx1ZSh0aGlzLmNvbnRyb2w/LnZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHByaXZhdGUgdmFsaWRhdGVWYWx1ZSh2YWx1ZTogYW55KTogdm9pZCB7XHJcbiAgICBpZiAoIXRoaXMuc2NoZW1hKSByZXR1cm47XHJcblxyXG4gICAgaWYgKHRoaXMuZGlzYWJsZWQpIHtcclxuICAgICAgdGhpcy5lcnJvck1lc3NhZ2UgPSBudWxsO1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgcmVzdWx0ID0gVmFsaWRhdG9yLnZhbGlkYXRlKHZhbHVlLCB0aGlzLnNjaGVtYSk7XHJcbiAgICB0aGlzLmVycm9yTWVzc2FnZSA9IHJlc3VsdC5lcnJvcktleTtcclxuICAgIGNvbnN0IGN1c3RvbU1lc3NhZ2UgPSByZXN1bHQubWVzc2FnZTtcclxuXHJcbiAgICBpZiAoIXJlc3VsdC5pc1ZhbGlkICYmIHJlc3VsdC5lcnJvcktleSkge1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKHsgW3Jlc3VsdC5lcnJvcktleV06IHRydWUsIG1lc3NhZ2U6IGN1c3RvbU1lc3NhZ2UgfSk7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICB0aGlzLmNvbnRyb2wuc2V0RXJyb3JzKG51bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgb25CbHVyKGV2ZW50PzogRm9jdXNFdmVudCk6IHZvaWQge1xyXG4gICAgaWYgKHRoaXMuY29udHJvbCAmJiB0aGlzLnNjaGVtYSkge1xyXG4gICAgICB0aGlzLnZhbGlkYXRlVmFsdWUodGhpcy5jb250cm9sLnZhbHVlKTtcclxuICAgIH1cclxuICAgIHRoaXMuYmx1ci5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbkZvY3VzKGV2ZW50PzogRm9jdXNFdmVudCk6IHZvaWQge1xyXG4gICAgdGhpcy5mb2N1cy5lbWl0KCk7XHJcbiAgfVxyXG5cclxuICBvbklucHV0KGV2ZW50OiBFdmVudCk6IHZvaWQge1xyXG4gICAgY29uc3QgaW5wdXQgPSBldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudDtcclxuICAgIGxldCB2YWx1ZSA9IGlucHV0LnZhbHVlO1xyXG5cclxuICAgIGlmICh0aGlzLmFsbG93QWxwaGFiZXRzT25seSkge1xyXG4gICAgICAvLyBSZW1vdmUgYW55IG5vbi1hbHBoYWJldCBjaGFyYWN0ZXJzIChrZWVwaW5nIHNwYWNlcyBpZiBkZXNpcmVkLCB1c3VhbGx5IG5hbWVzIGhhdmUgc3BhY2VzKVxyXG4gICAgICAvLyBBc3N1bWluZyAnYWxwaGFiZXRzJyBtZWFucyBbYS16QS1aXSBhbmQgbWF5YmUgc3BhY2VzLlxyXG4gICAgICAvLyBTdHJpY3QgYWxwaGFiZXRzOiAvW15hLXpBLVpdL2dcclxuICAgICAgY29uc3QgbmV3VmFsdWUgPSB2YWx1ZS5yZXBsYWNlKC9bXmEtekEtWiBdL2csICcnKTtcclxuICAgICAgaWYgKG5ld1ZhbHVlICE9PSB2YWx1ZSkge1xyXG4gICAgICAgIHZhbHVlID0gbmV3VmFsdWU7XHJcbiAgICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgICB0aGlzLmNvbnRyb2wuc2V0VmFsdWUodmFsdWUpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHRoaXMubWF4TGVuZ3RoICYmIHZhbHVlLmxlbmd0aCA+IHRoaXMubWF4TGVuZ3RoKSB7XHJcbiAgICAgIHZhbHVlID0gdmFsdWUuc3Vic3RyaW5nKDAsIHRoaXMubWF4TGVuZ3RoKTtcclxuICAgICAgaW5wdXQudmFsdWUgPSB2YWx1ZTtcclxuICAgICAgdGhpcy5jb250cm9sLnNldFZhbHVlKHZhbHVlKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGlzUmVxdWlyZWQoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gKFxyXG4gICAgICB0aGlzLnNjaGVtYT8ucnVsZXM/LnNvbWUoXHJcbiAgICAgICAgKHIpID0+IHIubmFtZSA9PT0gJ3JlcXVpcmVkJyAmJiByLnBhcmFtcz8uWydlbmFibGVkJ11cclxuICAgICAgKSB8fCBmYWxzZVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIGdldEVycm9yTWVzc2FnZSgpOiBzdHJpbmcge1xyXG4gICAgaWYgKCF0aGlzLmVycm9yTWVzc2FnZSkgcmV0dXJuICcnO1xyXG5cclxuICAgIC8vIElmIHRoZXJlIGlzIGEgY3VzdG9tIG1lc3NhZ2UgaW4gdGhlIGNvbnRyb2wgZXJyb3JzLCB1c2UgaXRcclxuICAgIGlmICh0aGlzLmNvbnRyb2w/LmVycm9ycz8uWydtZXNzYWdlJ10pIHtcclxuICAgICAgcmV0dXJuIHRoaXMuY29udHJvbC5lcnJvcnNbJ21lc3NhZ2UnXTtcclxuICAgIH1cclxuXHJcbiAgICAvLyBZb3UgY2FuIGltcGxlbWVudCBhIHRyYW5zbGF0aW9uIHNlcnZpY2UgaGVyZVxyXG4gICAgY29uc3QgZXJyb3JNZXNzYWdlczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcclxuICAgICAgRVJSX1JFUVVJUkVEOiAnVGhpcyBmaWVsZCBpcyByZXF1aXJlZCcsXHJcbiAgICAgIEVSUl9NSU5fTEVOR1RIOiAnVmFsdWUgaXMgdG9vIHNob3J0JyxcclxuICAgICAgRVJSX01BWF9MRU5HVEg6ICdWYWx1ZSBpcyB0b28gbG9uZycsXHJcbiAgICAgIEVSUl9SRUdFWF9NSVNNQVRDSDogJ0ludmFsaWQgZm9ybWF0JyxcclxuICAgICAgRVJSX0RVUExJQ0FURTogJ1RoaXMgdmFsdWUgYWxyZWFkeSBleGlzdHMnLFxyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gZXJyb3JNZXNzYWdlc1t0aGlzLmVycm9yTWVzc2FnZV0gfHwgdGhpcy5lcnJvck1lc3NhZ2U7XHJcbiAgfVxyXG59XHJcbiIsIjxkaXYgY2xhc3M9XCJmdi1lbnRyeS1maWVsZC1jb250YWluZXJcIiAqbmdJZj1cImNvbnRyb2xcIj5cclxuICA8bGFiZWwgKm5nSWY9XCJsYWJlbFwiIGNsYXNzPVwiZnYtbGFiZWxcIiBbY2xhc3MuZnYtbGFiZWwtcmVxdWlyZWRdPVwiaXNSZXF1aXJlZCgpXCI+XHJcbiAgICB7eyBsYWJlbCB9fVxyXG4gICAgPHNwYW4gKm5nSWY9XCJpc1JlcXVpcmVkKClcIiBjbGFzcz1cImZ2LXJlcXVpcmVkLWFzdGVyaXNrXCI+Kjwvc3Bhbj5cclxuICA8L2xhYmVsPlxyXG5cclxuICA8aW5wdXQgW3R5cGVdPVwidHlwZVwiIFtmb3JtQ29udHJvbF09XCJjb250cm9sXCIgW3BsYWNlaG9sZGVyXT1cInBsYWNlaG9sZGVyXCIgW3JlYWRvbmx5XT1cInJlYWRvbmx5XCIgKGJsdXIpPVwib25CbHVyKCRldmVudClcIlxyXG4gICAgKGZvY3VzKT1cIm9uRm9jdXMoJGV2ZW50KVwiIChpbnB1dCk9XCJvbklucHV0KCRldmVudClcIiBbYXR0ci5tYXhsZW5ndGhdPVwibWF4TGVuZ3RoXCIgY2xhc3M9XCJmdi1pbnB1dFwiXHJcbiAgICBbY2xhc3MuZnYtaW5wdXQtZXJyb3JdPVwiZXJyb3JNZXNzYWdlICYmIGNvbnRyb2wudG91Y2hlZFwiIFtjbGFzcy5mdi1pbnB1dC1kaXNhYmxlZF09XCJkaXNhYmxlZFwiIC8+XHJcblxyXG4gIDxzcGFuICpuZ0lmPVwiZXJyb3JNZXNzYWdlICYmIGNvbnRyb2wudG91Y2hlZFwiIGNsYXNzPVwiZnYtZXJyb3ItbWVzc2FnZVwiPlxyXG4gICAge3sgZ2V0RXJyb3JNZXNzYWdlKCkgfX1cclxuICA8L3NwYW4+XHJcbjwvZGl2PiJdfQ==
|