@skyux/lookup 4.17.6 → 4.17.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/CHANGELOG.md +4 -0
- package/bundles/skyux-lookup.umd.js +15 -3
- package/bundles/skyux-lookup.umd.js.map +1 -1
- package/bundles/skyux-lookup.umd.min.js +1 -1
- package/bundles/skyux-lookup.umd.min.js.map +1 -1
- package/esm2015/modules/autocomplete/autocomplete.component.js +6 -2
- package/esm2015/modules/lookup/lookup.component.js +11 -3
- package/esm5/modules/autocomplete/autocomplete.component.js +6 -2
- package/esm5/modules/lookup/lookup.component.js +11 -3
- package/fesm2015/skyux-lookup.js +15 -3
- package/fesm2015/skyux-lookup.js.map +1 -1
- package/fesm5/skyux-lookup.js +15 -3
- package/fesm5/skyux-lookup.js.map +1 -1
- package/modules/autocomplete/autocomplete.component.d.ts +4 -0
- package/modules/lookup/lookup.component.d.ts +4 -0
- package/package.json +1 -1
- package/skyux-lookup.metadata.json +1 -1
|
@@ -425,7 +425,8 @@ let SkyAutocompleteComponent = class SkyAutocompleteComponent {
|
|
|
425
425
|
if (!this.overlay) {
|
|
426
426
|
const overlay = this.overlayService.create({
|
|
427
427
|
enableClose: false,
|
|
428
|
-
enablePointerEvents: true
|
|
428
|
+
enablePointerEvents: true,
|
|
429
|
+
wrapperClass: this.wrapperClass
|
|
429
430
|
});
|
|
430
431
|
overlay.attachTemplate(this.resultsTemplateRef);
|
|
431
432
|
this.overlay = overlay;
|
|
@@ -581,6 +582,9 @@ __decorate([
|
|
|
581
582
|
__decorate([
|
|
582
583
|
Input()
|
|
583
584
|
], SkyAutocompleteComponent.prototype, "messageStream", null);
|
|
585
|
+
__decorate([
|
|
586
|
+
Input()
|
|
587
|
+
], SkyAutocompleteComponent.prototype, "wrapperClass", void 0);
|
|
584
588
|
__decorate([
|
|
585
589
|
Input()
|
|
586
590
|
], SkyAutocompleteComponent.prototype, "propertiesToSearch", null);
|
|
@@ -643,4 +647,4 @@ SkyAutocompleteComponent = __decorate([
|
|
|
643
647
|
__param(5, Optional())
|
|
644
648
|
], SkyAutocompleteComponent);
|
|
645
649
|
export { SkyAutocompleteComponent };
|
|
646
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9sb29rdXAvIiwic291cmNlcyI6WyJtb2R1bGVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNsQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDTCxTQUFTLElBQUksbUJBQW1CLEVBQ2hDLE9BQU8sRUFFUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFNeEIsT0FBTyxFQUNMLDBCQUEwQixFQUMzQixNQUFNLG1DQUFtQyxDQUFDO0FBa0IzQyxPQUFPLEVBQ0wsNkJBQTZCLEVBQzlCLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUNMLG9DQUFvQyxFQUNyQyxNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFDTCw2QkFBNkIsRUFDOUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQVV4QyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFRakIsSUFBYSx3QkFBd0IsR0FBckMsTUFBYSx3QkFBd0I7SUFxVm5DLFlBQ1UsY0FBaUMsRUFDakMsVUFBc0IsRUFDdEIsWUFBNkIsRUFDN0IsY0FB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RSxDQUFBO0dBM1ZGLHdCQUF3QixDQTh1QnBDO1NBOXVCWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreUFmZml4QXV0b0ZpdENvbnRleHQsXG4gIFNreUFmZml4ZXIsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5T3ZlcmxheUluc3RhbmNlLFxuICBTa3lPdmVybGF5U2VydmljZVxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreUlucHV0Qm94SG9zdFNlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgZnJvbUV2ZW50IGFzIG9ic2VydmFibGVGcm9tRXZlbnQsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvblxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVNZXNzYWdlXG59IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLW1lc3NhZ2UnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZVxufSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1tZXNzYWdlLXR5cGUnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvblxufSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtZnVuY3Rpb24nO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbkZpbHRlclxufSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtZnVuY3Rpb24tZmlsdGVyJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlXG59IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlbGVjdGlvbi1jaGFuZ2UnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVTaG93TW9yZUFyZ3Ncbn0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtc2hvdy1tb3JlLWFyZ3MnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVBZGFwdGVyU2VydmljZVxufSBmcm9tICcuL2F1dG9jb21wbGV0ZS1hZGFwdGVyLnNlcnZpY2UnO1xuXG5pbXBvcnQge1xuICBza3lBdXRvY29tcGxldGVEZWZhdWx0U2VhcmNoRnVuY3Rpb25cbn0gZnJvbSAnLi9hdXRvY29tcGxldGUtZGVmYXVsdC1zZWFyY2gtZnVuY3Rpb24nO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZVxufSBmcm9tICcuL2F1dG9jb21wbGV0ZS1pbnB1dC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5pbnRlcmZhY2UgU2t5QXV0b2NvbXBsZXRlU2VhcmNoUmVzdWx0IHtcbiAgZWxlbWVudElkOiBzdHJpbmc7XG4gIGRhdGE6IGFueTtcbn1cblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2t5QXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcblxuICAvLyNyZWdpb24gcHVibGljX2FwaVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIEhUTUwgZWxlbWVudCBJRCAod2l0aG91dCB0aGUgbGVhZGluZyBgI2ApIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSBhdXRvY29tcGxldGUgdGV4dCBpbnB1dC4gVGhpcyBzZXRzIHRoZSBpbnB1dCdzIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZVxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHN0YXRpYyBkYXRhIHNvdXJjZSBmb3IgdGhlIGF1dG9jb21wbGV0ZSBjb21wb25lbnQgdG8gc2VhcmNoXG4gICAqIHdoZW4gdXNlcnMgZW50ZXIgdGV4dC4gRm9yIGEgZHluYW1pYyBkYXRhIHNvdXJjZSBzdWNoIGFzIGFuIGFycmF5IHRoYXRcbiAgICogY2hhbmdlcyBkdWUgdG8gc2VydmVyIGNhbGxzLCB1c2UgdGhlIGBzZWFyY2hgIHByb3BlcnR5IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGEodmFsdWU6IGFueVtdKSB7XG4gICAgdGhpcy5fZGF0YSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IG1hbnkgbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHNlYXJjaGluZyB3aGlsZSB1c2Vyc1xuICAgKiBlbnRlciB0ZXh0IGluIHRoZSBhdXRvY29tcGxldGUgZmllbGQuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGVib3VuY2VUaW1lKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9kZWJvdW5jZVRpbWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVib3VuY2VUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RlYm91bmNlVGltZSB8fCAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBvYmplY3QgcHJvcGVydHkgdG8gZGlzcGxheSBpbiB0aGUgdGV4dCBpbnB1dCBhZnRlciB1c2Vyc1xuICAgKiBzZWxlY3QgYW4gaXRlbSBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQGRlZmF1bHQgbmFtZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkZXNjcmlwdG9yUHJvcGVydHkodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Rlc2NyaXB0b3JQcm9wZXJ0eSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXNjcmlwdG9yUHJvcGVydHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGVzY3JpcHRvclByb3BlcnR5IHx8ICduYW1lJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZGlzcGxheSBhIGJ1dHRvbiBpbiB0aGUgZHJvcGRvd24gdGhhdCBvcGVucyBhIHBpY2tlciB3aGVyZSB1c2VycyBjYW4gdmlldyBhbGwgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmFibGVTaG93TW9yZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gb2JzZXJ2YWJsZSBvZiBgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZWAgdGhhdCBjYW4gY2xvc2UgdGhlIGRyb3Bkb3duLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWVzc2FnZVN0cmVhbSh2YWx1ZTogU3ViamVjdDxTa3lBdXRvY29tcGxldGVNZXNzYWdlPikge1xuICAgIHRoaXMuX21lc3NhZ2VTdHJlYW0gPSB2YWx1ZTtcbiAgICB0aGlzLmluaXRNZXNzYWdlU3RyZWFtKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lc3NhZ2VTdHJlYW0oKTogU3ViamVjdDxTa3lBdXRvY29tcGxldGVNZXNzYWdlPiB7XG4gICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VTdHJlYW07XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBvYmplY3QgcHJvcGVydGllcyB0byBzZWFyY2guXG4gICAqIEBkZWZhdWx0IFsnbmFtZSddXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHByb3BlcnRpZXNUb1NlYXJjaCh2YWx1ZTogc3RyaW5nW10pIHtcbiAgICB0aGlzLl9wcm9wZXJ0aWVzVG9TZWFyY2ggPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgcHJvcGVydGllc1RvU2VhcmNoKCk6IHN0cmluZ1tdIHtcbiAgICByZXR1cm4gdGhpcy5fcHJvcGVydGllc1RvU2VhcmNoIHx8IFsnbmFtZSddO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIGZ1bmN0aW9uIHRvIGR5bmFtaWNhbGx5IG1hbmFnZSB0aGUgZGF0YSBzb3VyY2Ugd2hlbiB1c2Vyc1xuICAgKiBjaGFuZ2UgdGhlIHRleHQgaW4gdGhlIGF1dG9jb21wbGV0ZSBmaWVsZC4gVGhlIHNlYXJjaCBmdW5jdGlvbiBtdXN0IHJldHVyblxuICAgKiBhbiBhcnJheSBvciBhIHByb21pc2Ugb2YgYW4gYXJyYXkuIFRoZSBgc2VhcmNoYCBwcm9wZXJ0eSBpcyBwYXJ0aWN1bGFybHlcbiAgICogdXNlZnVsIHdoZW4gdGhlIGRhdGEgc291cmNlIGRvZXMgbm90IGxpdmUgaW4gdGhlIHNvdXJjZSBjb2RlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWFyY2godmFsdWU6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uKSB7XG4gICAgdGhpcy5fc2VhcmNoID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlYXJjaCgpOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbiB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaCB8fCBza3lBdXRvY29tcGxldGVEZWZhdWx0U2VhcmNoRnVuY3Rpb24oe1xuICAgICAgcHJvcGVydGllc1RvU2VhcmNoOiB0aGlzLnByb3BlcnRpZXNUb1NlYXJjaCxcbiAgICAgIHNlYXJjaEZpbHRlcnM6IHRoaXMuc2VhcmNoRmlsdGVyc1xuICAgIH0pO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHRlbXBsYXRlIHRvIGZvcm1hdCBlYWNoIHNlYXJjaCByZXN1bHQgaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqIFRoZSBhdXRvY29tcGxldGUgY29tcG9uZW50IGluamVjdHMgc2VhcmNoIHJlc3VsdCB2YWx1ZXMgaW50byB0aGUgdGVtcGxhdGVcbiAgICogYXMgYGl0ZW1gIHZhcmlhYmxlcyB0aGF0IHJlZmVyZW5jZSBhbGwgb2YgdGhlIG9iamVjdCBwcm9wZXJ0aWVzIG9mIHRoZSBzZWFyY2ggcmVzdWx0cy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoUmVzdWx0VGVtcGxhdGUodmFsdWU6IFRlbXBsYXRlUmVmPGFueT4pIHtcbiAgICB0aGlzLl9zZWFyY2hSZXN1bHRUZW1wbGF0ZSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWFyY2hSZXN1bHRUZW1wbGF0ZSgpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoUmVzdWx0VGVtcGxhdGUgfHwgdGhpcy5kZWZhdWx0U2VhcmNoUmVzdWx0VGVtcGxhdGU7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSBtaW5pbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHRoYXQgdXNlcnMgbXVzdCBlbnRlciBiZWZvcmVcbiAgICogdGhlIGF1dG9jb21wbGV0ZSBjb21wb25lbnQgc2VhcmNoZXMgdGhlIGRhdGEgc291cmNlIGFuZCBkaXNwbGF5cyBzZWFyY2hcbiAgICogcmVzdWx0cyBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQGRlZmF1bHQgMVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnModmFsdWU6IG51bWJlcikge1xuICAgIHRoaXMuX3NlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycyA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBzZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMoKTogbnVtYmVyIHtcbiAgICByZXR1cm4gKHRoaXMuX3NlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycyA+IDApXG4gICAgICA/IHRoaXMuX3NlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycyA6IDE7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIGFycmF5IG9mIGZ1bmN0aW9ucyB0byBjYWxsIGFnYWluc3QgZWFjaCBzZWFyY2ggcmVzdWx0IGluIG9yZGVyXG4gICAqIHRvIGZpbHRlciB0aGUgc2VhcmNoIHJlc3VsdHMgd2hlbiB1c2luZyB0aGUgZGVmYXVsdCBzZWFyY2ggZnVuY3Rpb24uIFdoZW5cbiAgICogdXNpbmcgdGhlIGBzZWFyY2hgIHByb3BlcnR5IHRvIHNwZWNpZnkgYSBjdXN0b20gc2VhcmNoIGZ1bmN0aW9uLCB5b3UgbXVzdFxuICAgKiBtYW51YWxseSBhcHBseSBmaWx0ZXJzIGluc2lkZSB0aGF0IGZ1bmN0aW9uLiBUaGUgZnVuY3Rpb24gbXVzdCByZXR1cm4gYHRydWVgXG4gICAqIG9yIGBmYWxzZWAgZm9yIGVhY2ggcmVzdWx0IHRvIGluZGljYXRlIHdoZXRoZXIgdG8gZGlzcGxheSBpdCBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZWFyY2hGaWx0ZXJzOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbkZpbHRlcltdO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHNlYXJjaCByZXN1bHRzIHRvIGRpc3BsYXkgaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqIEJ5IGRlZmF1bHQsIHRoZSBjb21wb25lbnQgZGlzcGxheXMgYWxsIG1hdGNoaW5nIHJlc3VsdHMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlYXJjaFJlc3VsdHNMaW1pdCh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc2VhcmNoUmVzdWx0c0xpbWl0ID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlYXJjaFJlc3VsdHNMaW1pdCgpOiBudW1iZXIge1xuICAgIGlmICh0aGlzLl9zZWFyY2hSZXN1bHRzTGltaXQpIHtcbiAgICAgIHJldHVybiB0aGlzLl9zZWFyY2hSZXN1bHRzTGltaXQ7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLmVuYWJsZVNob3dNb3JlID8gNSA6IHRoaXMuX3NlYXJjaFJlc3VsdHNMaW1pdDtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc3BsYXkgYSBidXR0b24gdGhhdCBsZXRzIHVzZXJzIGFkZCBvcHRpb25zIHRvIHRoZSBkYXRhIHNvdXJjZS5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93QWRkQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgdGV4dCB0byBkaXNwbGF5IHdoZW4gbm8gc2VhcmNoIHJlc3VsdHMgYXJlIGZvdW5kLlxuICAgKiBAZGVmYXVsdCBObyBtYXRjaGVzIGZvdW5kXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgbm9SZXN1bHRzRm91bmRUZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIEBpbnRlcm5hbFxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgYnV0dG9uIHRvIGFkZCBvcHRpb25zIHRvIHRoZSBkYXRhIHNvdXJjZS5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgYWRkQ2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IHRoZSBidXR0b24gdG8gdmlldyBhbGwgb3B0aW9ucy5cbiAgICovXG4gIEBPdXRwdXQoKVxuICBwdWJsaWMgc2hvd01vcmVDbGljazogRXZlbnRFbWl0dGVyPFNreUF1dG9jb21wbGV0ZVNob3dNb3JlQXJncz4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IGl0ZW1zIGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBnZXQgc2VsZWN0aW9uQ2hhbmdlKCk6IEV2ZW50RW1pdHRlcjxTa3lBdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2U+IHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0aW9uQ2hhbmdlO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgLy8jcmVnaW9uIHRlbXBsYXRlX3Byb3BlcnRpZXNcblxuICBwdWJsaWMgZ2V0IHNlYXJjaFJlc3VsdHMoKTogU2t5QXV0b2NvbXBsZXRlU2VhcmNoUmVzdWx0W10ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hSZXN1bHRzIHx8IFtdO1xuICB9XG5cbiAgcHVibGljIGdldCBoaWdobGlnaHRUZXh0KCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX2hpZ2hsaWdodFRleHQgfHwgJyc7XG4gIH1cblxuICBwdWJsaWMgaXNPcGVuOiBib29sZWFuID0gZmFsc2U7XG5cbiAgcHVibGljIHJlc3VsdHNMaXN0SWQ6IHN0cmluZztcblxuICBwdWJsaWMgcmVzdWx0c1dyYXBwZXJJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyBzZWFyY2hUZXh0OiBzdHJpbmc7XG5cbiAgcHVibGljIGdldCBzaG93QWN0aW9uc0FyZWEoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHRoaXMuc2hvd0FkZEJ1dHRvbiB8fCB0aGlzLmVuYWJsZVNob3dNb3JlO1xuICB9XG5cbiAgLy8jZW5kcmVnaW9uXG5cbiAgQFZpZXdDaGlsZCgnZGVmYXVsdFNlYXJjaFJlc3VsdFRlbXBsYXRlJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogZmFsc2VcbiAgfSlcbiAgcHJpdmF0ZSBkZWZhdWx0U2VhcmNoUmVzdWx0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQENvbnRlbnRDaGlsZChTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSlcbiAgcHJpdmF0ZSBzZXQgaW5wdXREaXJlY3RpdmUoZGlyZWN0aXZlOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSkge1xuICAgIGlmICh0aGlzLl9pbnB1dERpcmVjdGl2ZSAhPT0gZGlyZWN0aXZlKSB7XG5cbiAgICAgIGlmICghZGlyZWN0aXZlKSB7XG4gICAgICAgIHRocm93IEVycm9yKFtcbiAgICAgICAgICAnVGhlIFNreUF1dG9jb21wbGV0ZUNvbXBvbmVudCByZXF1aXJlcyBhIENvbnRlbnRDaGlsZCBpbnB1dCBvcicsXG4gICAgICAgICAgJ3RleHRhcmVhIGJvdW5kIHdpdGggdGhlIFNreUF1dG9jb21wbGV0ZSBkaXJlY3RpdmUuIEZvciBleGFtcGxlOicsXG4gICAgICAgICAgJ2A8aW5wdXQgdHlwZT1cInRleHRcIiBza3lBdXRvY29tcGxldGU+YC4nXG4gICAgICAgIF0uam9pbignICcpKTtcbiAgICAgIH1cblxuICAgICAgLy8gVW5zdWJzY3JpYmUgZnJvbSBvbGQgc3Vic2NyaXB0aW9ucyBvbiBhbnkgcHJldmlvdXMgaW5wdXQgZGlyZWN0aXZlXG4gICAgICB0aGlzLmlucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUubmV4dCgpO1xuXG4gICAgICB0aGlzLl9pbnB1dERpcmVjdGl2ZSA9IGRpcmVjdGl2ZTtcblxuICAgICAgdGhpcy5faW5wdXREaXJlY3RpdmUuZGlzcGxheVdpdGggPSB0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eTtcblxuICAgICAgdGhpcy5faW5wdXREaXJlY3RpdmUudGV4dENoYW5nZXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZSksXG4gICAgICAgICAgZGVib3VuY2VUaW1lKHRoaXMuZGVib3VuY2VUaW1lKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKGNoYW5nZSkgPT4ge1xuICAgICAgICAgIHRoaXMuc2VhcmNoVGV4dENoYW5nZWQoY2hhbmdlLnZhbHVlKTtcbiAgICAgICAgfSk7XG5cbiAgICAgIHRoaXMuX2lucHV0RGlyZWN0aXZlLmJsdXJcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLm9uVG91Y2hlZCgpO1xuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5faW5wdXREaXJlY3RpdmUuZm9jdXNcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMuaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAodGhpcy5zaG93QWN0aW9uc0FyZWEpIHtcbiAgICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCBpbnB1dERpcmVjdGl2ZSgpOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2lucHV0RGlyZWN0aXZlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgncmVzdWx0c1RlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmXG4gIH0pXG4gIHByaXZhdGUgcmVzdWx0c1RlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ3Jlc3VsdHNSZWYnLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZlxuICB9KVxuICBwcml2YXRlIHNldCByZXN1bHRzUmVmKHZhbHVlOiBFbGVtZW50UmVmKSB7XG4gICAgaWYgKHZhbHVlKSB7XG4gICAgICB0aGlzLl9yZXN1bHRzUmVmID0gdmFsdWU7XG4gICAgICB0aGlzLmRlc3Ryb3lBZmZpeGVyKCk7XG4gICAgICB0aGlzLmNyZWF0ZUFmZml4ZXIoKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGdldCByZXN1bHRzUmVmKCk6IEVsZW1lbnRSZWYge1xuICAgIHJldHVybiB0aGlzLl9yZXN1bHRzUmVmO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGV4IHRoYXQgaW5kaWNhdGVzIHdoaWNoIGRlc2NlbmRhbnQgb2YgdGhlIG92ZXJsYXkgY3VycmVudGx5IGhhcyBmb2N1cy5cbiAgICovXG4gIHByaXZhdGUgYWN0aXZlRWxlbWVudEluZGV4OiBudW1iZXIgPSAtMTtcblxuICBwcml2YXRlIGFmZml4ZXI6IFNreUFmZml4ZXI7XG5cbiAgcHJpdmF0ZSBpbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcblxuICBwcml2YXRlIG1lc3NhZ2VTdHJlYW1TdWI6IFN1YnNjcmlwdGlvbjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgb3ZlcmxheTogU2t5T3ZlcmxheUluc3RhbmNlO1xuXG4gIC8qKlxuICAgKiBFbGVtZW50cyB3aXRoaW4gdGhlIGF1dG9jb21wbGV0ZSBkcm9wZG93biB0aGF0IGFyZSBmb2N1c2FibGUuXG4gICAqIFRoZXNlIGFyZSB0eXBpY2FsbHkgdGhlIHNlYXJjaCByZXN1bHRzIGFuZCBhY3Rpb24gYnV0dG9ucywgYnV0IGNvdWxkIGFsc28gYmVcbiAgICogZWxlbWVudHMgcHJvdmlkZWQgaW4gdGhlIGNvbnN1bWVyJ3Mgb3duIHRlbXBsYXRlLlxuICAgKi9cbiAgcHJpdmF0ZSBvdmVybGF5Rm9jdXNhYmxlRWxlbWVudHM6IEhUTUxFbGVtZW50W10gPSBbXTtcblxuICBwcml2YXRlIF9kYXRhOiBhbnlbXTtcbiAgcHJpdmF0ZSBfZGVib3VuY2VUaW1lOiBudW1iZXI7XG4gIHByaXZhdGUgX2Rlc2NyaXB0b3JQcm9wZXJ0eTogc3RyaW5nO1xuICBwcml2YXRlIF9oaWdobGlnaHRUZXh0OiBzdHJpbmc7XG4gIHByaXZhdGUgX2lucHV0RGlyZWN0aXZlOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZTtcbiAgcHJpdmF0ZSBfbWVzc2FnZVN0cmVhbTogU3ViamVjdDxTa3lBdXRvY29tcGxldGVNZXNzYWdlPjtcbiAgcHJpdmF0ZSBfcHJvcGVydGllc1RvU2VhcmNoOiBzdHJpbmdbXTtcbiAgcHJpdmF0ZSBfcmVzdWx0c1JlZjogRWxlbWVudFJlZjtcbiAgcHJpdmF0ZSBfc2VhcmNoOiBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbjtcbiAgcHJpdmF0ZSBfc2VhcmNoUmVzdWx0czogU2t5QXV0b2NvbXBsZXRlU2VhcmNoUmVzdWx0W107XG4gIHByaXZhdGUgX3NlYXJjaFJlc3VsdFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICBwcml2YXRlIF9zZWFyY2hSZXN1bHRzTGltaXQ6IG51bWJlcjtcbiAgcHJpdmF0ZSBfc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzOiBudW1iZXI7XG4gIHByaXZhdGUgX3NlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8U2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlPigpO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIGFmZml4U2VydmljZTogU2t5QWZmaXhTZXJ2aWNlLFxuICAgIHByaXZhdGUgYWRhcHRlclNlcnZpY2U6IFNreUF1dG9jb21wbGV0ZUFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgb3ZlcmxheVNlcnZpY2U6IFNreU92ZXJsYXlTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHByaXZhdGUgaW5wdXRCb3hIb3N0U3ZjPzogU2t5SW5wdXRCb3hIb3N0U2VydmljZVxuICApIHtcbiAgICBjb25zdCBpZCA9ICsrdW5pcXVlSWQ7XG4gICAgdGhpcy5yZXN1bHRzTGlzdElkID0gYHNreS1hdXRvY29tcGxldGUtbGlzdC0ke2lkfWA7XG4gICAgdGhpcy5yZXN1bHRzV3JhcHBlcklkID0gYHNreS1hdXRvY29tcGxldGUtd3JhcHBlci0ke2lkfWA7XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlckNvbnRlbnRJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5pbnB1dERpcmVjdGl2ZSkge1xuICAgICAgdGhyb3cgRXJyb3IoW1xuICAgICAgICAnVGhlIFNreUF1dG9jb21wbGV0ZUNvbXBvbmVudCByZXF1aXJlcyBhIENvbnRlbnRDaGlsZCBpbnB1dCBvcicsXG4gICAgICAgICd0ZXh0YXJlYSBib3VuZCB3aXRoIHRoZSBTa3lBdXRvY29tcGxldGUgZGlyZWN0aXZlLiBGb3IgZXhhbXBsZTonLFxuICAgICAgICAnYDxpbnB1dCB0eXBlPVwidGV4dFwiIHNreUF1dG9jb21wbGV0ZT5gLidcbiAgICAgIF0uam9pbignICcpKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIHRoaXMuYWRkSW5wdXRFdmVudExpc3RlbmVycygpO1xuICB9XG5cbiAgcHVibGljIG5nT25EZXN0cm95KCk6IHZvaWQge1xuICAgIHRoaXMuaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5pbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLmRlc3Ryb3lBZmZpeGVyKCk7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICB9XG5cbiAgcHVibGljIGFkZEJ1dHRvbkNsaWNrZWQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRDbGljay5lbWl0KCk7XG4gICAgdGhpcy5pbnB1dERpcmVjdGl2ZS5yZXN0b3JlSW5wdXRUZXh0VmFsdWVUb1ByZXZpb3VzU3RhdGUoKTtcbiAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgfVxuXG4gIHB1YmxpYyBoYW5kbGVLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoZXZlbnQua2V5KSB7XG4gICAgICBjb25zdCBrZXkgPSBldmVudC5rZXkudG9Mb3dlckNhc2UoKTtcbiAgICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnQgPSB0aGlzLmdldEFjdGl2ZUVsZW1lbnQoKTtcbiAgICAgIGNvbnN0IGFjdGl2ZUVsZW1lbnRJZCA9IGFjdGl2ZUVsZW1lbnQ/LmlkO1xuICAgICAgY29uc3QgdGFyZ2V0SXNTZWFyY2hSZXN1bHQgPSB0aGlzLnNlYXJjaFJlc3VsdHMuZmluZChyID0+IHIuZWxlbWVudElkID09PSBhY3RpdmVFbGVtZW50SWQpO1xuXG4gICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6c3dpdGNoLWRlZmF1bHQgKi9cbiAgICAgIHN3aXRjaCAoa2V5KSB7XG4gICAgICAgIGNhc2UgJ2VudGVyJzpcblxuICAgICAgICAgIGlmICh0YXJnZXRJc1NlYXJjaFJlc3VsdCkge1xuICAgICAgICAgICAgdGhpcy5zZWxlY3RTZWFyY2hSZXN1bHRCeUlkKGFjdGl2ZUVsZW1lbnRJZCk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5zaG93QWN0aW9uc0FyZWEpIHtcbiAgICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICB0aGlzLnJlc2V0U2VhcmNoKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmIChhY3RpdmVFbGVtZW50KSB7XG4gICAgICAgICAgICAgIGFjdGl2ZUVsZW1lbnQuY2xpY2soKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG5cbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ3RhYic6XG4gICAgICAgICAgaWYgKHRhcmdldElzU2VhcmNoUmVzdWx0KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFNlYXJjaFJlc3VsdEJ5SWQoYWN0aXZlRWxlbWVudElkKTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS5yZXN0b3JlSW5wdXRUZXh0VmFsdWVUb1ByZXZpb3VzU3RhdGUoKTtcbiAgICAgICAgICB9XG5cbiAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdlc2NhcGUnOlxuICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2Fycm93ZG93bic6XG4gICAgICAgIGNhc2UgJ2Rvd24nOlxuICAgICAgICAgIHRoaXMucmVtb3ZlRm9jdXNlZENsYXNzKCk7XG4gICAgICAgICAgaWYgKFxuICAgICAgICAgICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPT09IHRoaXMub3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCAtIDEgfHxcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID09PSAtMVxuICAgICAgICAgICkge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPSAwO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9IHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ICsgMTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy5hZGRGb2N1c2VkQ2xhc3MoKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYXJyb3d1cCc6XG4gICAgICAgIGNhc2UgJ3VwJzpcbiAgICAgICAgICB0aGlzLnJlbW92ZUZvY3VzZWRDbGFzcygpO1xuICAgICAgICAgIGlmICh0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA8PSAwKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9IHRoaXMub3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzLmxlbmd0aCAtIDE7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID0gdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggLSAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFkZEZvY3VzZWRDbGFzcygpO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBtb3JlQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLnNob3dNb3JlQ2xpY2suZW1pdCh7IGlucHV0VmFsdWU6IHRoaXMuc2VhcmNoVGV4dCB9KTtcbiAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpO1xuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICB9XG5cbiAgcHVibGljIG9uUmVzdWx0TW91c2VEb3duKGlkOiBzdHJpbmcsIGV2ZW50OiBNb3VzZUV2ZW50KTogdm9pZCB7XG4gICAgdGhpcy5zZWxlY3RTZWFyY2hSZXN1bHRCeUlkKGlkKTtcblxuICAgIGlmICghdGhpcy5zaG93QWN0aW9uc0FyZWEpIHtcbiAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLnJlc2V0U2VhcmNoKCk7XG4gICAgfVxuXG4gICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgfVxuXG4gIHB1YmxpYyBvblJlc3VsdE1vdXNlTW92ZShpZDogbnVtYmVyKTogdm9pZCB7XG4gICAgaWYgKGlkICE9PSB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCkge1xuICAgICAgdGhpcy5yZW1vdmVGb2N1c2VkQ2xhc3MoKTtcbiAgICAgIHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID0gaWQ7XG4gICAgICB0aGlzLmFkZEZvY3VzZWRDbGFzcygpO1xuICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaXNFbGVtZW50Rm9jdXNlZChyZWY6IEhUTUxFbGVtZW50KTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHJlZiA9PT0gdGhpcy5vdmVybGF5Rm9jdXNhYmxlRWxlbWVudHNbdGhpcy5hY3RpdmVFbGVtZW50SW5kZXhdO1xuICB9XG5cbiAgcHJpdmF0ZSBzZWFyY2hUZXh0Q2hhbmdlZChzZWFyY2hUZXh0OiBzdHJpbmcpOiB2b2lkIHtcbiAgICBjb25zdCBpc0VtcHR5ID0gKCFzZWFyY2hUZXh0IHx8ICFzZWFyY2hUZXh0LnRyaW0oKSB8fCBzZWFyY2hUZXh0Lm1hdGNoKC9eXFxzKyQvKSk7XG5cbiAgICBpZiAoaXNFbXB0eSkge1xuICAgICAgLy8gRW1pdCBzZWxlY3Rpb25DaGFuZ2UgaWYgdmFsdWUgaGFzIGJlZW4gY2xlYXJlZC5cbiAgICAgIGlmICh0aGlzLmlucHV0RGlyZWN0aXZlLnZhbHVlKSB7XG4gICAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQoe1xuICAgICAgICAgIHNlbGVjdGVkSXRlbTogdW5kZWZpbmVkXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXRoaXMuc2hvd0FjdGlvbnNBcmVhKSB7XG4gICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuICAgICAgfVxuXG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgY29uc3QgaXNMb25nRW5vdWdoID0gKHNlYXJjaFRleHQubGVuZ3RoID49IHRoaXMuc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzKTtcbiAgICBjb25zdCBpc0RpZmZlcmVudCA9IChzZWFyY2hUZXh0ICE9PSB0aGlzLnNlYXJjaFRleHQpO1xuXG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gc2VhcmNoVGV4dC50cmltKCk7XG5cbiAgICBpZiAoaXNMb25nRW5vdWdoICYmIGlzRGlmZmVyZW50KSB7XG4gICAgICB0aGlzLnBlcmZvcm1TZWFyY2goKS50aGVuKChyZXN1bHRzOiBhbnlbXSkgPT4ge1xuICAgICAgICB0aGlzLl9zZWFyY2hSZXN1bHRzID0gcmVzdWx0cy5tYXAoKHIsIGkpID0+IHtcbiAgICAgICAgICBjb25zdCByZXN1bHQ6IFNreUF1dG9jb21wbGV0ZVNlYXJjaFJlc3VsdCA9IHtcbiAgICAgICAgICAgIGVsZW1lbnRJZDogYCR7dGhpcy5yZXN1bHRzTGlzdElkfS1pdGVtLSR7aX1gLFxuICAgICAgICAgICAgZGF0YTogclxuICAgICAgICAgIH07XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSk7XG5cbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0VGV4dCA9IHRoaXMuc2VhcmNoVGV4dDtcbiAgICAgICAgdGhpcy5yZW1vdmVGb2N1c2VkQ2xhc3MoKTtcbiAgICAgICAgdGhpcy5yZW1vdmVBY3RpdmVEZXNjZW5kYW50KCk7XG4gICAgICAgIGlmICh0aGlzLnNlYXJjaFJlc3VsdHMubGVuZ3RoID4gMCkge1xuICAgICAgICAgIHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID0gMDtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9IC0xO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcblxuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICAvLyBMZXQgdGhlIHJlc3VsdHMgcG9wdWxhdGUgaW4gdGhlIERPTSBiZWZvcmUgcmVjYWxjdWxhdGluZyBwbGFjZW1lbnQuXG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLmFmZml4ZXIucmVhZmZpeCgpO1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgICAgICB0aGlzLmluaXRPdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMoKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLm9wZW5Ecm9wZG93bigpO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGVyZm9ybVNlYXJjaCgpOiBQcm9taXNlPGFueT4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VhcmNoKHRoaXMuc2VhcmNoVGV4dCwgdGhpcy5kYXRhKTtcblxuICAgIGlmIChyZXN1bHQgaW5zdGFuY2VvZiBBcnJheSkge1xuICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZShyZXN1bHQpO1xuICAgIH1cblxuICAgIHJldHVybiByZXN1bHQ7XG4gIH1cblxuICBwcml2YXRlIHNlbGVjdFNlYXJjaFJlc3VsdEJ5SWQoaWQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IHJlc3VsdCA9IHRoaXMuc2VhcmNoUmVzdWx0cy5maW5kKHIgPT4gci5lbGVtZW50SWQgPT09IGlkKS5kYXRhO1xuICAgIGlmIChyZXN1bHQpIHtcbiAgICAgIHRoaXMuc2VhcmNoVGV4dCA9IHJlc3VsdFt0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eV07XG4gICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnZhbHVlID0gcmVzdWx0O1xuICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICAgIHNlbGVjdGVkSXRlbTogcmVzdWx0XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIG9wZW5Ecm9wZG93bigpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMub3ZlcmxheSkge1xuICAgICAgY29uc3Qgb3ZlcmxheSA9IHRoaXMub3ZlcmxheVNlcnZpY2UuY3JlYXRlKHtcbiAgICAgICAgZW5hYmxlQ2xvc2U6IGZhbHNlLFxuICAgICAgICBlbmFibGVQb2ludGVyRXZlbnRzOiB0cnVlXG4gICAgICB9KTtcblxuICAgICAgb3ZlcmxheS5hdHRhY2hUZW1wbGF0ZSh0aGlzLnJlc3VsdHNUZW1wbGF0ZVJlZik7XG5cbiAgICAgIHRoaXMub3ZlcmxheSA9IG92ZXJsYXk7XG4gICAgICB0aGlzLmlzT3BlbiA9IHRydWU7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgdGhpcy5pbml0T3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzKCk7XG5cbiAgICAgIG92ZXJsYXkuYmFja2Ryb3BDbGlja1xuICAgICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgaWYgKGRvY3VtZW50LmFjdGl2ZUVsZW1lbnQgIT09IHRoaXMuaW5wdXREaXJlY3RpdmUuaW5wdXRFbGVtZW50KSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpO1xuICAgICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNsb3NlRHJvcGRvd24oKTogdm9pZCB7XG4gICAgdGhpcy5yZXNldFNlYXJjaCgpO1xuICAgIHRoaXMuaXNPcGVuID0gZmFsc2U7XG4gICAgdGhpcy5kZXN0cm95T3ZlcmxheSgpO1xuICAgIHRoaXMucmVtb3ZlQWN0aXZlRGVzY2VuZGFudCgpO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwcml2YXRlIHNldEFjdGl2ZURlc2NlbmRhbnQoKTogdm9pZCB7XG4gICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IHRoaXMub3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzW3RoaXMuYWN0aXZlRWxlbWVudEluZGV4XTtcbiAgICBpZiAoYWN0aXZlRWxlbWVudCkge1xuICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS5zZXRBY3RpdmVEZXNjZW5kYW50KGFjdGl2ZUVsZW1lbnQuaWQpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlQWN0aXZlRGVzY2VuZGFudCgpOiB2b2lkIHtcbiAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6bm8tbnVsbC1rZXl3b3JkICovXG4gICAgdGhpcy5pbnB1dERpcmVjdGl2ZS5zZXRBY3RpdmVEZXNjZW5kYW50KG51bGwpO1xuICB9XG5cbiAgcHJpdmF0ZSByZXNldFNlYXJjaCgpOiB2b2lkIHtcbiAgICB0aGlzLl9zZWFyY2hSZXN1bHRzID0gW107XG4gICAgdGhpcy5zZWFyY2hUZXh0ID0gJyc7XG4gICAgdGhpcy5faGlnaGxpZ2h0VGV4dCA9ICcnO1xuICAgIHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID0gLTE7XG4gICAgdGhpcy5yZW1vdmVBY3RpdmVEZXNjZW5kYW50KCk7XG4gICAgdGhpcy5pbml0T3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzKCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkSW5wdXRFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQ7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGVsZW1lbnQsICdrZXlkb3duJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgdGhpcy5oYW5kbGVLZXlkb3duKGV2ZW50KTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudCh3aW5kb3csICdyZXNpemUnKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgaWYgKHRoaXMuaXNPcGVuKSB7XG4gICAgICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5zZXREcm9wZG93bldpZHRoKFxuICAgICAgICAgICAgdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICAgICAgdGhpcy5yZXN1bHRzUmVmLFxuICAgICAgICAgICAgISF0aGlzLmlucHV0Qm94SG9zdFN2Y1xuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95T3ZlcmxheSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5vdmVybGF5KSB7XG4gICAgICB0aGlzLm92ZXJsYXlTZXJ2aWNlLmNsb3NlKHRoaXMub3ZlcmxheSk7XG4gICAgICB0aGlzLm92ZXJsYXkgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBjcmVhdGVBZmZpeGVyKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5hZmZpeGVyKSB7XG4gICAgICBjb25zdCBhZmZpeGVyID0gdGhpcy5hZmZpeFNlcnZpY2UuY3JlYXRlQWZmaXhlcih0aGlzLnJlc3VsdHNSZWYpO1xuXG4gICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLnNldERyb3Bkb3duV2lkdGgoXG4gICAgICAgIHRoaXMuZWxlbWVudFJlZixcbiAgICAgICAgdGhpcy5yZXN1bHRzUmVmLFxuICAgICAgICAhIXRoaXMuaW5wdXRCb3hIb3N0U3ZjXG4gICAgICApO1xuXG4gICAgICBhZmZpeGVyLmFmZml4VG8odGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQsIHtcbiAgICAgICAgYXV0b0ZpdENvbnRleHQ6IFNreUFmZml4QXV0b0ZpdENvbnRleHQuVmlld3BvcnQsXG4gICAgICAgIGVuYWJsZUF1dG9GaXQ6IHRydWUsXG4gICAgICAgIGlzU3RpY2t5OiB0cnVlLFxuICAgICAgICBwbGFjZW1lbnQ6ICdiZWxvdycsXG4gICAgICAgIGhvcml6b250YWxBbGlnbm1lbnQ6ICdsZWZ0J1xuICAgICAgfSk7XG5cbiAgICAgIHRoaXMuYWZmaXhlciA9IGFmZml4ZXI7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBkZXN0cm95QWZmaXhlcigpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hZmZpeGVyKSB7XG4gICAgICB0aGlzLmFmZml4ZXIuZGVzdHJveSgpO1xuICAgICAgdGhpcy5hZmZpeGVyID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaW5pdE1lc3NhZ2VTdHJlYW0oKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGlmICovXG4gICAgaWYgKHRoaXMubWVzc2FnZVN0cmVhbVN1Yikge1xuICAgICAgdGhpcy5tZXNzYWdlU3RyZWFtU3ViLnVuc3Vic2NyaWJlKCk7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMubWVzc2FnZVN0cmVhbSkge1xuICAgICAgdGhpcy5tZXNzYWdlU3RyZWFtU3ViID0gdGhpcy5tZXNzYWdlU3RyZWFtXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgobWVzc2FnZTogU2t5QXV0b2NvbXBsZXRlTWVzc2FnZSkgPT4ge1xuICAgICAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpzd2l0Y2gtZGVmYXVsdCAqL1xuICAgICAgICAgIHN3aXRjaCAobWVzc2FnZS50eXBlKSB7XG4gICAgICAgICAgICBjYXNlIFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlLkNsb3NlRHJvcGRvd246XG4gICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0T3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzKCk6IHZvaWQge1xuICAgIC8vIFdhaXQgZm9yIGRyb3Bkb3duIGVsZW1lbnRzIHRvIHJlbmRlci5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgICAgdGhpcy5vdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMgPSB0aGlzLmFkYXB0ZXJTZXJ2aWNlLmdldE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cyh0aGlzLm92ZXJsYXkpO1xuICAgICAgICB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50cy5mb3JFYWNoKGVsID0+IHtcbiAgICAgICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLnNldFRhYkluZGV4KGVsLCAtMSk7XG4gICAgICAgIH0pO1xuICAgICAgICB0aGlzLmFkZEZvY3VzZWRDbGFzcygpO1xuICAgICAgfVxuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBnZXRBY3RpdmVFbGVtZW50KCk6IEhUTUxFbGVtZW50IHtcbiAgICByZXR1cm4gdGhpcy5vdmVybGF5Rm9jdXNhYmxlRWxlbWVudHNbdGhpcy5hY3RpdmVFbGVtZW50SW5kZXhdO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVGb2N1c2VkQ2xhc3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2UucmVtb3ZlQ1NTQ2xhc3MoXG4gICAgICAgIHRoaXMub3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzW3RoaXMuYWN0aXZlRWxlbWVudEluZGV4XSxcbiAgICAgICAgJ3NreS1hdXRvY29tcGxldGUtZGVzY2VuZGFudC1mb2N1cydcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRGb2N1c2VkQ2xhc3MoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID4gLTEpIHtcbiAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2UuYWRkQ1NTQ2xhc3MoXG4gICAgICAgIHRoaXMub3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzW3RoaXMuYWN0aXZlRWxlbWVudEluZGV4XSxcbiAgICAgICAgJ3NreS1hdXRvY29tcGxldGUtZGVzY2VuZGFudC1mb2N1cydcbiAgICAgICk7XG4gICAgICB0aGlzLnNldEFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICB9XG4gIH1cblxufVxuIl19
|
|
650
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0b2NvbXBsZXRlLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9sb29rdXAvIiwic291cmNlcyI6WyJtb2R1bGVzL2F1dG9jb21wbGV0ZS9hdXRvY29tcGxldGUuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsZ0JBQWdCLEVBQ2hCLGFBQWEsRUFDYix1QkFBdUIsRUFDdkIsaUJBQWlCLEVBQ2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osVUFBVSxFQUNWLFlBQVksRUFDWixLQUFLLEVBQ0wsU0FBUyxFQUNULFFBQVEsRUFDUixNQUFNLEVBQ04sV0FBVyxFQUNYLFNBQVMsRUFDVixNQUFNLGVBQWUsQ0FBQztBQUV2QixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3RCLFVBQVUsRUFDVixlQUFlLEVBQ2Ysa0JBQWtCLEVBQ2xCLGlCQUFpQixFQUNsQixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBQ0wsc0JBQXNCLEVBQ3ZCLE1BQU0sY0FBYyxDQUFDO0FBRXRCLE9BQU8sRUFDTCxTQUFTLElBQUksbUJBQW1CLEVBQ2hDLE9BQU8sRUFFUixNQUFNLE1BQU0sQ0FBQztBQUVkLE9BQU8sRUFDTCxZQUFZLEVBQ1osU0FBUyxFQUNWLE1BQU0sZ0JBQWdCLENBQUM7QUFNeEIsT0FBTyxFQUNMLDBCQUEwQixFQUMzQixNQUFNLG1DQUFtQyxDQUFDO0FBa0IzQyxPQUFPLEVBQ0wsNkJBQTZCLEVBQzlCLE1BQU0sZ0NBQWdDLENBQUM7QUFFeEMsT0FBTyxFQUNMLG9DQUFvQyxFQUNyQyxNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFDTCw2QkFBNkIsRUFDOUIsTUFBTSxnQ0FBZ0MsQ0FBQztBQVV4QyxJQUFJLFFBQVEsR0FBRyxDQUFDLENBQUM7QUFRakIsSUFBYSx3QkFBd0IsR0FBckMsTUFBYSx3QkFBd0I7SUEyVm5DLFlBQ1UsY0FBaUMsRUFDakMsVUFBc0IsRUFDdEIsWUFBNkIsRUFDN0IsY0FB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QyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7S0FDaEQsQ0FBQztJQWtXRyxXQUFBLFFBQVEsRUFBRSxDQUFBO0dBaldGLHdCQUF3QixDQXF2QnBDO1NBcnZCWSx3QkFBd0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlckNvbnRlbnRJbml0LFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgQ29udGVudENoaWxkLFxuICBFbGVtZW50UmVmLFxuICBFdmVudEVtaXR0ZXIsXG4gIElucHV0LFxuICBPbkRlc3Ryb3ksXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGRcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreUFmZml4QXV0b0ZpdENvbnRleHQsXG4gIFNreUFmZml4ZXIsXG4gIFNreUFmZml4U2VydmljZSxcbiAgU2t5T3ZlcmxheUluc3RhbmNlLFxuICBTa3lPdmVybGF5U2VydmljZVxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreUlucHV0Qm94SG9zdFNlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgZnJvbUV2ZW50IGFzIG9ic2VydmFibGVGcm9tRXZlbnQsXG4gIFN1YmplY3QsXG4gIFN1YnNjcmlwdGlvblxufSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHtcbiAgZGVib3VuY2VUaW1lLFxuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVNZXNzYWdlXG59IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLW1lc3NhZ2UnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZVxufSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1tZXNzYWdlLXR5cGUnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvblxufSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtZnVuY3Rpb24nO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVTZWFyY2hGdW5jdGlvbkZpbHRlclxufSBmcm9tICcuL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWFyY2gtZnVuY3Rpb24tZmlsdGVyJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlXG59IGZyb20gJy4vdHlwZXMvYXV0b2NvbXBsZXRlLXNlbGVjdGlvbi1jaGFuZ2UnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVTaG93TW9yZUFyZ3Ncbn0gZnJvbSAnLi90eXBlcy9hdXRvY29tcGxldGUtc2hvdy1tb3JlLWFyZ3MnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVBZGFwdGVyU2VydmljZVxufSBmcm9tICcuL2F1dG9jb21wbGV0ZS1hZGFwdGVyLnNlcnZpY2UnO1xuXG5pbXBvcnQge1xuICBza3lBdXRvY29tcGxldGVEZWZhdWx0U2VhcmNoRnVuY3Rpb25cbn0gZnJvbSAnLi9hdXRvY29tcGxldGUtZGVmYXVsdC1zZWFyY2gtZnVuY3Rpb24nO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZVxufSBmcm9tICcuL2F1dG9jb21wbGV0ZS1pbnB1dC5kaXJlY3RpdmUnO1xuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5pbnRlcmZhY2UgU2t5QXV0b2NvbXBsZXRlU2VhcmNoUmVzdWx0IHtcbiAgZWxlbWVudElkOiBzdHJpbmc7XG4gIGRhdGE6IGFueTtcbn1cblxubGV0IHVuaXF1ZUlkID0gMDtcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWF1dG9jb21wbGV0ZScsXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRvY29tcGxldGUuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9hdXRvY29tcGxldGUuY29tcG9uZW50LnNjc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2t5QXV0b2NvbXBsZXRlQ29tcG9uZW50XG4gIGltcGxlbWVudHMgT25EZXN0cm95LCBBZnRlckNvbnRlbnRJbml0LCBBZnRlclZpZXdJbml0IHtcblxuICAvLyNyZWdpb24gcHVibGljX2FwaVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIEhUTUwgZWxlbWVudCBJRCAod2l0aG91dCB0aGUgbGVhZGluZyBgI2ApIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSBhdXRvY29tcGxldGUgdGV4dCBpbnB1dC4gVGhpcyBzZXRzIHRoZSBpbnB1dCdzIGBhcmlhLWxhYmVsbGVkYnlgIGF0dHJpYnV0ZVxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbGxlZEJ5OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIHN0YXRpYyBkYXRhIHNvdXJjZSBmb3IgdGhlIGF1dG9jb21wbGV0ZSBjb21wb25lbnQgdG8gc2VhcmNoXG4gICAqIHdoZW4gdXNlcnMgZW50ZXIgdGV4dC4gRm9yIGEgZHluYW1pYyBkYXRhIHNvdXJjZSBzdWNoIGFzIGFuIGFycmF5IHRoYXRcbiAgICogY2hhbmdlcyBkdWUgdG8gc2VydmVyIGNhbGxzLCB1c2UgdGhlIGBzZWFyY2hgIHByb3BlcnR5IGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGEodmFsdWU6IGFueVtdKSB7XG4gICAgdGhpcy5fZGF0YSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YSB8fCBbXTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgaG93IG1hbnkgbWlsbGlzZWNvbmRzIHRvIHdhaXQgYmVmb3JlIHNlYXJjaGluZyB3aGlsZSB1c2Vyc1xuICAgKiBlbnRlciB0ZXh0IGluIHRoZSBhdXRvY29tcGxldGUgZmllbGQuXG4gICAqIEBkZWZhdWx0IDBcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgZGVib3VuY2VUaW1lKHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9kZWJvdW5jZVRpbWUgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgZGVib3VuY2VUaW1lKCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuX2RlYm91bmNlVGltZSB8fCAwO1xuICB9XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBvYmplY3QgcHJvcGVydHkgdG8gZGlzcGxheSBpbiB0aGUgdGV4dCBpbnB1dCBhZnRlciB1c2Vyc1xuICAgKiBzZWxlY3QgYW4gaXRlbSBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQGRlZmF1bHQgbmFtZVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkZXNjcmlwdG9yUHJvcGVydHkodmFsdWU6IHN0cmluZykge1xuICAgIHRoaXMuX2Rlc2NyaXB0b3JQcm9wZXJ0eSA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBkZXNjcmlwdG9yUHJvcGVydHkoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5fZGVzY3JpcHRvclByb3BlcnR5IHx8ICduYW1lJztcbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZGlzcGxheSBhIGJ1dHRvbiBpbiB0aGUgZHJvcGRvd24gdGhhdCBvcGVucyBhIHBpY2tlciB3aGVyZSB1c2VycyBjYW4gdmlldyBhbGwgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmFibGVTaG93TW9yZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gb2JzZXJ2YWJsZSBvZiBgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZWAgdGhhdCBjYW4gY2xvc2UgdGhlIGRyb3Bkb3duLlxuICAgKiBAaW50ZXJuYWxcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgbWVzc2FnZVN0cmVhbSh2YWx1ZTogU3ViamVjdDxTa3lBdXRvY29tcGxldGVNZXNzYWdlPikge1xuICAgIHRoaXMuX21lc3NhZ2VTdHJlYW0gPSB2YWx1ZTtcbiAgICB0aGlzLmluaXRNZXNzYWdlU3RyZWFtKCk7XG4gIH1cblxuICBwdWJsaWMgZ2V0IG1lc3NhZ2VTdHJlYW0oKTogU3ViamVjdDxTa3lBdXRvY29tcGxldGVNZXNzYWdlPiB7XG4gICAgcmV0dXJuIHRoaXMuX21lc3NhZ2VTdHJlYW07XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgd3JhcHBlckNsYXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG9iamVjdCBwcm9wZXJ0aWVzIHRvIHNlYXJjaC5cbiAgICogQGRlZmF1bHQgWyduYW1lJ11cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgcHJvcGVydGllc1RvU2VhcmNoKHZhbHVlOiBzdHJpbmdbXSkge1xuICAgIHRoaXMuX3Byb3BlcnRpZXNUb1NlYXJjaCA9IHZhbHVlO1xuICB9XG5cbiAgcHVibGljIGdldCBwcm9wZXJ0aWVzVG9TZWFyY2goKTogc3RyaW5nW10ge1xuICAgIHJldHVybiB0aGlzLl9wcm9wZXJ0aWVzVG9TZWFyY2ggfHwgWyduYW1lJ107XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgZnVuY3Rpb24gdG8gZHluYW1pY2FsbHkgbWFuYWdlIHRoZSBkYXRhIHNvdXJjZSB3aGVuIHVzZXJzXG4gICAqIGNoYW5nZSB0aGUgdGV4dCBpbiB0aGUgYXV0b2NvbXBsZXRlIGZpZWxkLiBUaGUgc2VhcmNoIGZ1bmN0aW9uIG11c3QgcmV0dXJuXG4gICAqIGFuIGFycmF5IG9yIGEgcHJvbWlzZSBvZiBhbiBhcnJheS4gVGhlIGBzZWFyY2hgIHByb3BlcnR5IGlzIHBhcnRpY3VsYXJseVxuICAgKiB1c2VmdWwgd2hlbiB0aGUgZGF0YSBzb3VyY2UgZG9lcyBub3QgbGl2ZSBpbiB0aGUgc291cmNlIGNvZGUuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlYXJjaCh2YWx1ZTogU2t5QXV0b2NvbXBsZXRlU2VhcmNoRnVuY3Rpb24pIHtcbiAgICB0aGlzLl9zZWFyY2ggPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VhcmNoKCk6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uIHtcbiAgICByZXR1cm4gdGhpcy5fc2VhcmNoIHx8IHNreUF1dG9jb21wbGV0ZURlZmF1bHRTZWFyY2hGdW5jdGlvbih7XG4gICAgICBwcm9wZXJ0aWVzVG9TZWFyY2g6IHRoaXMucHJvcGVydGllc1RvU2VhcmNoLFxuICAgICAgc2VhcmNoRmlsdGVyczogdGhpcy5zZWFyY2hGaWx0ZXJzXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogU3BlY2lmaWVzIGEgdGVtcGxhdGUgdG8gZm9ybWF0IGVhY2ggc2VhcmNoIHJlc3VsdCBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogVGhlIGF1dG9jb21wbGV0ZSBjb21wb25lbnQgaW5qZWN0cyBzZWFyY2ggcmVzdWx0IHZhbHVlcyBpbnRvIHRoZSB0ZW1wbGF0ZVxuICAgKiBhcyBgaXRlbWAgdmFyaWFibGVzIHRoYXQgcmVmZXJlbmNlIGFsbCBvZiB0aGUgb2JqZWN0IHByb3BlcnRpZXMgb2YgdGhlIHNlYXJjaCByZXN1bHRzLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWFyY2hSZXN1bHRUZW1wbGF0ZSh2YWx1ZTogVGVtcGxhdGVSZWY8YW55Pikge1xuICAgIHRoaXMuX3NlYXJjaFJlc3VsdFRlbXBsYXRlID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlYXJjaFJlc3VsdFRlbXBsYXRlKCk6IFRlbXBsYXRlUmVmPGFueT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWFyY2hSZXN1bHRUZW1wbGF0ZSB8fCB0aGlzLmRlZmF1bHRTZWFyY2hSZXN1bHRUZW1wbGF0ZTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIG1pbmltdW0gbnVtYmVyIG9mIGNoYXJhY3RlcnMgdGhhdCB1c2VycyBtdXN0IGVudGVyIGJlZm9yZVxuICAgKiB0aGUgYXV0b2NvbXBsZXRlIGNvbXBvbmVudCBzZWFyY2hlcyB0aGUgZGF0YSBzb3VyY2UgYW5kIGRpc3BsYXlzIHNlYXJjaFxuICAgKiByZXN1bHRzIGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKiBAZGVmYXVsdCAxXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycyh2YWx1ZTogbnVtYmVyKSB7XG4gICAgdGhpcy5fc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzID0gdmFsdWU7XG4gIH1cblxuICBwdWJsaWMgZ2V0IHNlYXJjaFRleHRNaW5pbXVtQ2hhcmFjdGVycygpOiBudW1iZXIge1xuICAgIHJldHVybiAodGhpcy5fc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzID4gMClcbiAgICAgID8gdGhpcy5fc2VhcmNoVGV4dE1pbmltdW1DaGFyYWN0ZXJzIDogMTtcbiAgfVxuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYW4gYXJyYXkgb2YgZnVuY3Rpb25zIHRvIGNhbGwgYWdhaW5zdCBlYWNoIHNlYXJjaCByZXN1bHQgaW4gb3JkZXJcbiAgICogdG8gZmlsdGVyIHRoZSBzZWFyY2ggcmVzdWx0cyB3aGVuIHVzaW5nIHRoZSBkZWZhdWx0IHNlYXJjaCBmdW5jdGlvbi4gV2hlblxuICAgKiB1c2luZyB0aGUgYHNlYXJjaGAgcHJvcGVydHkgdG8gc3BlY2lmeSBhIGN1c3RvbSBzZWFyY2ggZnVuY3Rpb24sIHlvdSBtdXN0XG4gICAqIG1hbnVhbGx5IGFwcGx5IGZpbHRlcnMgaW5zaWRlIHRoYXQgZnVuY3Rpb24uIFRoZSBmdW5jdGlvbiBtdXN0IHJldHVybiBgdHJ1ZWBcbiAgICogb3IgYGZhbHNlYCBmb3IgZWFjaCByZXN1bHQgdG8gaW5kaWNhdGUgd2hldGhlciB0byBkaXNwbGF5IGl0IGluIHRoZSBkcm9wZG93biBsaXN0LlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNlYXJjaEZpbHRlcnM6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uRmlsdGVyW107XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgbWF4aW11bSBudW1iZXIgb2Ygc2VhcmNoIHJlc3VsdHMgdG8gZGlzcGxheSBpbiB0aGUgZHJvcGRvd24gbGlzdC5cbiAgICogQnkgZGVmYXVsdCwgdGhlIGNvbXBvbmVudCBkaXNwbGF5cyBhbGwgbWF0Y2hpbmcgcmVzdWx0cy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzZXQgc2VhcmNoUmVzdWx0c0xpbWl0KHZhbHVlOiBudW1iZXIpIHtcbiAgICB0aGlzLl9zZWFyY2hSZXN1bHRzTGltaXQgPSB2YWx1ZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VhcmNoUmVzdWx0c0xpbWl0KCk6IG51bWJlciB7XG4gICAgaWYgKHRoaXMuX3NlYXJjaFJlc3VsdHNMaW1pdCkge1xuICAgICAgcmV0dXJuIHRoaXMuX3NlYXJjaFJlc3VsdHNMaW1pdDtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMuZW5hYmxlU2hvd01vcmUgPyA1IDogdGhpcy5fc2VhcmNoUmVzdWx0c0xpbWl0O1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZGlzcGxheSBhIGJ1dHRvbiB0aGF0IGxldHMgdXNlcnMgYWRkIG9wdGlvbnMgdG8gdGhlIGRhdGEgc291cmNlLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dBZGRCdXR0b246IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB0ZXh0IHRvIGRpc3BsYXkgd2hlbiBubyBzZWFyY2ggcmVzdWx0cyBhcmUgZm91bmQuXG4gICAqIEBkZWZhdWx0IE5vIG1hdGNoZXMgZm91bmRcbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBub1Jlc3VsdHNGb3VuZFRleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IHRoZSBidXR0b24gdG8gYWRkIG9wdGlvbnMgdG8gdGhlIGRhdGEgc291cmNlLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhZGRDbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIC8qKlxuICAgKiBAaW50ZXJuYWxcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgdGhlIGJ1dHRvbiB0byB2aWV3IGFsbCBvcHRpb25zLlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBzaG93TW9yZUNsaWNrOiBFdmVudEVtaXR0ZXI8U2t5QXV0b2NvbXBsZXRlU2hvd01vcmVBcmdzPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICAvKipcbiAgICogRmlyZXMgd2hlbiB1c2VycyBzZWxlY3QgaXRlbXMgaW4gdGhlIGRyb3Bkb3duIGxpc3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGdldCBzZWxlY3Rpb25DaGFuZ2UoKTogRXZlbnRFbWl0dGVyPFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZT4ge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25DaGFuZ2U7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICAvLyNyZWdpb24gdGVtcGxhdGVfcHJvcGVydGllc1xuXG4gIHB1YmxpYyBnZXQgc2VhcmNoUmVzdWx0cygpOiBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHRbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3NlYXJjaFJlc3VsdHMgfHwgW107XG4gIH1cblxuICBwdWJsaWMgZ2V0IGhpZ2hsaWdodFRleHQoKTogc3RyaW5nIHtcbiAgICByZXR1cm4gdGhpcy5faGlnaGxpZ2h0VGV4dCB8fCAnJztcbiAgfVxuXG4gIHB1YmxpYyBpc09wZW46IGJvb2xlYW4gPSBmYWxzZTtcblxuICBwdWJsaWMgcmVzdWx0c0xpc3RJZDogc3RyaW5nO1xuXG4gIHB1YmxpYyByZXN1bHRzV3JhcHBlcklkOiBzdHJpbmc7XG5cbiAgcHVibGljIHNlYXJjaFRleHQ6IHN0cmluZztcblxuICBwdWJsaWMgZ2V0IHNob3dBY3Rpb25zQXJlYSgpOiBib29sZWFuIHtcbiAgICByZXR1cm4gdGhpcy5zaG93QWRkQnV0dG9uIHx8IHRoaXMuZW5hYmxlU2hvd01vcmU7XG4gIH1cblxuICAvLyNlbmRyZWdpb25cblxuICBAVmlld0NoaWxkKCdkZWZhdWx0U2VhcmNoUmVzdWx0VGVtcGxhdGUnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiBmYWxzZVxuICB9KVxuICBwcml2YXRlIGRlZmF1bHRTZWFyY2hSZXN1bHRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAQ29udGVudENoaWxkKFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKVxuICBwcml2YXRlIHNldCBpbnB1dERpcmVjdGl2ZShkaXJlY3RpdmU6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKSB7XG4gICAgaWYgKHRoaXMuX2lucHV0RGlyZWN0aXZlICE9PSBkaXJlY3RpdmUpIHtcblxuICAgICAgaWYgKCFkaXJlY3RpdmUpIHtcbiAgICAgICAgdGhyb3cgRXJyb3IoW1xuICAgICAgICAgICdUaGUgU2t5QXV0b2NvbXBsZXRlQ29tcG9uZW50IHJlcXVpcmVzIGEgQ29udGVudENoaWxkIGlucHV0IG9yJyxcbiAgICAgICAgICAndGV4dGFyZWEgYm91bmQgd2l0aCB0aGUgU2t5QXV0b2NvbXBsZXRlIGRpcmVjdGl2ZS4gRm9yIGV4YW1wbGU6JyxcbiAgICAgICAgICAnYDxpbnB1dCB0eXBlPVwidGV4dFwiIHNreUF1dG9jb21wbGV0ZT5gLidcbiAgICAgICAgXS5qb2luKCcgJykpO1xuICAgICAgfVxuXG4gICAgICAvLyBVbnN1YnNjcmliZSBmcm9tIG9sZCBzdWJzY3JpcHRpb25zIG9uIGFueSBwcmV2aW91cyBpbnB1dCBkaXJlY3RpdmVcbiAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmVVbnN1YnNjcmliZS5uZXh0KCk7XG5cbiAgICAgIHRoaXMuX2lucHV0RGlyZWN0aXZlID0gZGlyZWN0aXZlO1xuXG4gICAgICB0aGlzLl9pbnB1dERpcmVjdGl2ZS5kaXNwbGF5V2l0aCA9IHRoaXMuZGVzY3JpcHRvclByb3BlcnR5O1xuXG4gICAgICB0aGlzLl9pbnB1dERpcmVjdGl2ZS50ZXh0Q2hhbmdlc1xuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5pbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlKSxcbiAgICAgICAgICBkZWJvdW5jZVRpbWUodGhpcy5kZWJvdW5jZVRpbWUpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoY2hhbmdlKSA9PiB7XG4gICAgICAgICAgdGhpcy5zZWFyY2hUZXh0Q2hhbmdlZChjaGFuZ2UudmFsdWUpO1xuICAgICAgICB9KTtcblxuICAgICAgdGhpcy5faW5wdXREaXJlY3RpdmUuYmx1clxuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5pbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUub25Ub3VjaGVkKCk7XG4gICAgICAgIH0pO1xuXG4gICAgICB0aGlzLl9pbnB1dERpcmVjdGl2ZS5mb2N1c1xuICAgICAgICAucGlwZShcbiAgICAgICAgICB0YWtlVW50aWwodGhpcy5pbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlKVxuICAgICAgICApXG4gICAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAgIGlmICh0aGlzLnNob3dBY3Rpb25zQXJlYSkge1xuICAgICAgICAgICAgdGhpcy5vcGVuRHJvcGRvd24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGlucHV0RGlyZWN0aXZlKCk6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlIHtcbiAgICByZXR1cm4gdGhpcy5faW5wdXREaXJlY3RpdmU7XG4gIH1cblxuICBAVmlld0NoaWxkKCdyZXN1bHRzVGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWZcbiAgfSlcbiAgcHJpdmF0ZSByZXN1bHRzVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgncmVzdWx0c1JlZicsIHtcbiAgICByZWFkOiBFbGVtZW50UmVmXG4gIH0pXG4gIHByaXZhdGUgc2V0IHJlc3VsdHNSZWYodmFsdWU6IEVsZW1lbnRSZWYpIHtcbiAgICBpZiAodmFsdWUpIHtcbiAgICAgIHRoaXMuX3Jlc3VsdHNSZWYgPSB2YWx1ZTtcbiAgICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICAgIHRoaXMuY3JlYXRlQWZmaXhlcigpO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgZ2V0IHJlc3VsdHNSZWYoKTogRWxlbWVudFJlZiB7XG4gICAgcmV0dXJuIHRoaXMuX3Jlc3VsdHNSZWY7XG4gIH1cblxuICAvKipcbiAgICogSW5kZXggdGhhdCBpbmRpY2F0ZXMgd2hpY2ggZGVzY2VuZGFudCBvZiB0aGUgb3ZlcmxheSBjdXJyZW50bHkgaGFzIGZvY3VzLlxuICAgKi9cbiAgcHJpdmF0ZSBhY3RpdmVFbGVtZW50SW5kZXg6IG51bWJlciA9IC0xO1xuXG4gIHByaXZhdGUgYWZmaXhlcjogU2t5QWZmaXhlcjtcblxuICBwcml2YXRlIGlucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuXG4gIHByaXZhdGUgbWVzc2FnZVN0cmVhbVN1YjogU3Vic2NyaXB0aW9uO1xuXG4gIHByaXZhdGUgbmdVbnN1YnNjcmliZSA9IG5ldyBTdWJqZWN0KCk7XG5cbiAgcHJpdmF0ZSBvdmVybGF5OiBTa3lPdmVybGF5SW5zdGFuY2U7XG5cbiAgLyoqXG4gICAqIEVsZW1lbnRzIHdpdGhpbiB0aGUgYXV0b2NvbXBsZXRlIGRyb3Bkb3duIHRoYXQgYXJlIGZvY3VzYWJsZS5cbiAgICogVGhlc2UgYXJlIHR5cGljYWxseSB0aGUgc2VhcmNoIHJlc3VsdHMgYW5kIGFjdGlvbiBidXR0b25zLCBidXQgY291bGQgYWxzbyBiZVxuICAgKiBlbGVtZW50cyBwcm92aWRlZCBpbiB0aGUgY29uc3VtZXIncyBvd24gdGVtcGxhdGUuXG4gICAqL1xuICBwcml2YXRlIG92ZXJsYXlGb2N1c2FibGVFbGVtZW50czogSFRNTEVsZW1lbnRbXSA9IFtdO1xuXG4gIHByaXZhdGUgX2RhdGE6IGFueVtdO1xuICBwcml2YXRlIF9kZWJvdW5jZVRpbWU6IG51bWJlcjtcbiAgcHJpdmF0ZSBfZGVzY3JpcHRvclByb3BlcnR5OiBzdHJpbmc7XG4gIHByaXZhdGUgX2hpZ2hsaWdodFRleHQ6IHN0cmluZztcbiAgcHJpdmF0ZSBfaW5wdXREaXJlY3RpdmU6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlO1xuICBwcml2YXRlIF9tZXNzYWdlU3RyZWFtOiBTdWJqZWN0PFNreUF1dG9jb21wbGV0ZU1lc3NhZ2U+O1xuICBwcml2YXRlIF9wcm9wZXJ0aWVzVG9TZWFyY2g6IHN0cmluZ1tdO1xuICBwcml2YXRlIF9yZXN1bHRzUmVmOiBFbGVtZW50UmVmO1xuICBwcml2YXRlIF9zZWFyY2g6IFNreUF1dG9jb21wbGV0ZVNlYXJjaEZ1bmN0aW9uO1xuICBwcml2YXRlIF9zZWFyY2hSZXN1bHRzOiBTa3lBdXRvY29tcGxldGVTZWFyY2hSZXN1bHRbXTtcbiAgcHJpdmF0ZSBfc2VhcmNoUmVzdWx0VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gIHByaXZhdGUgX3NlYXJjaFJlc3VsdHNMaW1pdDogbnVtYmVyO1xuICBwcml2YXRlIF9zZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnM6IG51bWJlcjtcbiAgcHJpdmF0ZSBfc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxTa3lBdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2U+KCk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgYWZmaXhTZXJ2aWNlOiBTa3lBZmZpeFNlcnZpY2UsXG4gICAgcHJpdmF0ZSBhZGFwdGVyU2VydmljZTogU2t5QXV0b2NvbXBsZXRlQWRhcHRlclNlcnZpY2UsXG4gICAgcHJpdmF0ZSBvdmVybGF5U2VydmljZTogU2t5T3ZlcmxheVNlcnZpY2UsXG4gICAgQE9wdGlvbmFsKCkgcHJpdmF0ZSBpbnB1dEJveEhvc3RTdmM/OiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlXG4gICkge1xuICAgIGNvbnN0IGlkID0gKyt1bmlxdWVJZDtcbiAgICB0aGlzLnJlc3VsdHNMaXN0SWQgPSBgc2t5LWF1dG9jb21wbGV0ZS1saXN0LSR7aWR9YDtcbiAgICB0aGlzLnJlc3VsdHNXcmFwcGVySWQgPSBgc2t5LWF1dG9jb21wbGV0ZS13cmFwcGVyLSR7aWR9YDtcbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyQ29udGVudEluaXQoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmlucHV0RGlyZWN0aXZlKSB7XG4gICAgICB0aHJvdyBFcnJvcihbXG4gICAgICAgICdUaGUgU2t5QXV0b2NvbXBsZXRlQ29tcG9uZW50IHJlcXVpcmVzIGEgQ29udGVudENoaWxkIGlucHV0IG9yJyxcbiAgICAgICAgJ3RleHRhcmVhIGJvdW5kIHdpdGggdGhlIFNreUF1dG9jb21wbGV0ZSBkaXJlY3RpdmUuIEZvciBleGFtcGxlOicsXG4gICAgICAgICdgPGlucHV0IHR5cGU9XCJ0ZXh0XCIgc2t5QXV0b2NvbXBsZXRlPmAuJ1xuICAgICAgXS5qb2luKCcgJykpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ0FmdGVyVmlld0luaXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGRJbnB1dEV2ZW50TGlzdGVuZXJzKCk7XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5pbnB1dERpcmVjdGl2ZVVuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLmlucHV0RGlyZWN0aXZlVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUubmV4dCgpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5jb21wbGV0ZSgpO1xuICAgIHRoaXMuZGVzdHJveUFmZml4ZXIoKTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gIH1cblxuICBwdWJsaWMgYWRkQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZENsaWNrLmVtaXQoKTtcbiAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpO1xuICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICB9XG5cbiAgcHVibGljIGhhbmRsZUtleWRvd24oZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvKiBTYW5pdHkgY2hlY2sgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmIChldmVudC5rZXkpIHtcbiAgICAgIGNvbnN0IGtleSA9IGV2ZW50LmtleS50b0xvd2VyQ2FzZSgpO1xuICAgICAgY29uc3QgYWN0aXZlRWxlbWVudCA9IHRoaXMuZ2V0QWN0aXZlRWxlbWVudCgpO1xuICAgICAgY29uc3QgYWN0aXZlRWxlbWVudElkID0gYWN0aXZlRWxlbWVudD8uaWQ7XG4gICAgICBjb25zdCB0YXJnZXRJc1NlYXJjaFJlc3VsdCA9IHRoaXMuc2VhcmNoUmVzdWx0cy5maW5kKHIgPT4gci5lbGVtZW50SWQgPT09IGFjdGl2ZUVsZW1lbnRJZCk7XG5cbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpzd2l0Y2gtZGVmYXVsdCAqL1xuICAgICAgc3dpdGNoIChrZXkpIHtcbiAgICAgICAgY2FzZSAnZW50ZXInOlxuXG4gICAgICAgICAgaWYgKHRhcmdldElzU2VhcmNoUmVzdWx0KSB7XG4gICAgICAgICAgICB0aGlzLnNlbGVjdFNlYXJjaFJlc3VsdEJ5SWQoYWN0aXZlRWxlbWVudElkKTtcblxuICAgICAgICAgICAgaWYgKCF0aGlzLnNob3dBY3Rpb25zQXJlYSkge1xuICAgICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgIHRoaXMucmVzZXRTZWFyY2goKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKGFjdGl2ZUVsZW1lbnQpIHtcbiAgICAgICAgICAgICAgYWN0aXZlRWxlbWVudC5jbGljaygpO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cblxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAndGFiJzpcbiAgICAgICAgICBpZiAodGFyZ2V0SXNTZWFyY2hSZXN1bHQpIHtcbiAgICAgICAgICAgIHRoaXMuc2VsZWN0U2VhcmNoUmVzdWx0QnlJZChhY3RpdmVFbGVtZW50SWQpO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGNhc2UgJ2VzY2FwZSc6XG4gICAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnYXJyb3dkb3duJzpcbiAgICAgICAgY2FzZSAnZG93bic6XG4gICAgICAgICAgdGhpcy5yZW1vdmVGb2N1c2VkQ2xhc3MoKTtcbiAgICAgICAgICBpZiAoXG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9PT0gdGhpcy5vdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoIC0gMSB8fFxuICAgICAgICAgICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPT09IC0xXG4gICAgICAgICAgKSB7XG4gICAgICAgICAgICB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCA9IDA7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID0gdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggKyAxO1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmFkZEZvY3VzZWRDbGFzcygpO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdhcnJvd3VwJzpcbiAgICAgICAgY2FzZSAndXAnOlxuICAgICAgICAgIHRoaXMucmVtb3ZlRm9jdXNlZENsYXNzKCk7XG4gICAgICAgICAgaWYgKHRoaXMuYWN0aXZlRWxlbWVudEluZGV4IDw9IDApIHtcbiAgICAgICAgICAgIHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID0gdGhpcy5vdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMubGVuZ3RoIC0gMTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPSB0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleCAtIDE7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuYWRkRm9jdXNlZENsYXNzKCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgICAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG1vcmVCdXR0b25DbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuc2hvd01vcmVDbGljay5lbWl0KHsgaW5wdXRWYWx1ZTogdGhpcy5zZWFyY2hUZXh0IH0pO1xuICAgIHRoaXMuaW5wdXREaXJlY3RpdmUucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gIH1cblxuICBwdWJsaWMgb25SZXN1bHRNb3VzZURvd24oaWQ6IHN0cmluZywgZXZlbnQ6IE1vdXNlRXZlbnQpOiB2b2lkIHtcbiAgICB0aGlzLnNlbGVjdFNlYXJjaFJlc3VsdEJ5SWQoaWQpO1xuXG4gICAgaWYgKCF0aGlzLnNob3dBY3Rpb25zQXJlYSkge1xuICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMucmVzZXRTZWFyY2goKTtcbiAgICB9XG5cbiAgICBldmVudC5wcmV2ZW50RGVmYXVsdCgpO1xuICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICB9XG5cbiAgcHVibGljIG9uUmVzdWx0TW91c2VNb3ZlKGlkOiBudW1iZXIpOiB2b2lkIHtcbiAgICBpZiAoaWQgIT09IHRoaXMuYWN0aXZlRWxlbWVudEluZGV4KSB7XG4gICAgICB0aGlzLnJlbW92ZUZvY3VzZWRDbGFzcygpO1xuICAgICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPSBpZDtcbiAgICAgIHRoaXMuYWRkRm9jdXNlZENsYXNzKCk7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpc0VsZW1lbnRGb2N1c2VkKHJlZjogSFRNTEVsZW1lbnQpOiBib29sZWFuIHtcbiAgICByZXR1cm4gcmVmID09PSB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50c1t0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleF07XG4gIH1cblxuICBwcml2YXRlIHNlYXJjaFRleHRDaGFuZ2VkKHNlYXJjaFRleHQ6IHN0cmluZyk6IHZvaWQge1xuICAgIGNvbnN0IGlzRW1wdHkgPSAoIXNlYXJjaFRleHQgfHwgIXNlYXJjaFRleHQudHJpbSgpIHx8IHNlYXJjaFRleHQubWF0Y2goL15cXHMrJC8pKTtcblxuICAgIGlmIChpc0VtcHR5KSB7XG4gICAgICAvLyBFbWl0IHNlbGVjdGlvbkNoYW5nZSBpZiB2YWx1ZSBoYXMgYmVlbiBjbGVhcmVkLlxuICAgICAgaWYgKHRoaXMuaW5wdXREaXJlY3RpdmUudmFsdWUpIHtcbiAgICAgICAgdGhpcy5pbnB1dERpcmVjdGl2ZS52YWx1ZSA9IHVuZGVmaW5lZDtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdCh7XG4gICAgICAgICAgc2VsZWN0ZWRJdGVtOiB1bmRlZmluZWRcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmICghdGhpcy5zaG93QWN0aW9uc0FyZWEpIHtcbiAgICAgICAgdGhpcy5jbG9zZURyb3Bkb3duKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnJlc2V0U2VhcmNoKCk7XG4gICAgICB9XG5cbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBjb25zdCBpc0xvbmdFbm91Z2ggPSAoc2VhcmNoVGV4dC5sZW5ndGggPj0gdGhpcy5zZWFyY2hUZXh0TWluaW11bUNoYXJhY3RlcnMpO1xuICAgIGNvbnN0IGlzRGlmZmVyZW50ID0gKHNlYXJjaFRleHQgIT09IHRoaXMuc2VhcmNoVGV4dCk7XG5cbiAgICB0aGlzLnNlYXJjaFRleHQgPSBzZWFyY2hUZXh0LnRyaW0oKTtcblxuICAgIGlmIChpc0xvbmdFbm91Z2ggJiYgaXNEaWZmZXJlbnQpIHtcbiAgICAgIHRoaXMucGVyZm9ybVNlYXJjaCgpLnRoZW4oKHJlc3VsdHM6IGFueVtdKSA9PiB7XG4gICAgICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSByZXN1bHRzLm1hcCgociwgaSkgPT4ge1xuICAgICAgICAgIGNvbnN0IHJlc3VsdDogU2t5QXV0b2NvbXBsZXRlU2VhcmNoUmVzdWx0ID0ge1xuICAgICAgICAgICAgZWxlbWVudElkOiBgJHt0aGlzLnJlc3VsdHNMaXN0SWR9LWl0ZW0tJHtpfWAsXG4gICAgICAgICAgICBkYXRhOiByXG4gICAgICAgICAgfTtcbiAgICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgICB9KTtcblxuICAgICAgICB0aGlzLl9oaWdobGlnaHRUZXh0ID0gdGhpcy5zZWFyY2hUZXh0O1xuICAgICAgICB0aGlzLnJlbW92ZUZvY3VzZWRDbGFzcygpO1xuICAgICAgICB0aGlzLnJlbW92ZUFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICAgICAgaWYgKHRoaXMuc2VhcmNoUmVzdWx0cy5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPSAwO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMuYWN0aXZlRWxlbWVudEluZGV4ID0gLTE7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuXG4gICAgICAgIGlmICh0aGlzLmlzT3Blbikge1xuICAgICAgICAgIC8vIExldCB0aGUgcmVzdWx0cyBwb3B1bGF0ZSBpbiB0aGUgRE9NIGJlZm9yZSByZWNhbGN1bGF0aW5nIHBsYWNlbWVudC5cbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuYWZmaXhlci5yZWFmZml4KCk7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgICAgIHRoaXMuaW5pdE92ZXJsYXlGb2N1c2FibGVFbGVtZW50cygpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMub3BlbkRyb3Bkb3duKCk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwZXJmb3JtU2VhcmNoKCk6IFByb21pc2U8YW55PiB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWFyY2godGhpcy5zZWFyY2hUZXh0LCB0aGlzLmRhdGEpO1xuXG4gICAgaWYgKHJlc3VsdCBpbnN0YW5jZW9mIEFycmF5KSB7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHJlc3VsdDtcbiAgfVxuXG4gIHByaXZhdGUgc2VsZWN0U2VhcmNoUmVzdWx0QnlJZChpZDogc3RyaW5nKTogdm9pZCB7XG4gICAgY29uc3QgcmVzdWx0ID0gdGhpcy5zZWFyY2hSZXN1bHRzLmZpbmQociA9PiByLmVsZW1lbnRJZCA9PT0gaWQpLmRhdGE7XG4gICAgaWYgKHJlc3VsdCkge1xuICAgICAgdGhpcy5zZWFyY2hUZXh0ID0gcmVzdWx0W3RoaXMuZGVzY3JpcHRvclByb3BlcnR5XTtcbiAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUudmFsdWUgPSByZXN1bHQ7XG4gICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5lbWl0KHtcbiAgICAgICAgc2VsZWN0ZWRJdGVtOiByZXN1bHRcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgb3BlbkRyb3Bkb3duKCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5vdmVybGF5KSB7XG4gICAgICBjb25zdCBvdmVybGF5ID0gdGhpcy5vdmVybGF5U2VydmljZS5jcmVhdGUoe1xuICAgICAgICBlbmFibGVDbG9zZTogZmFsc2UsXG4gICAgICAgIGVuYWJsZVBvaW50ZXJFdmVudHM6IHRydWUsXG4gICAgICAgIHdyYXBwZXJDbGFzczogdGhpcy53cmFwcGVyQ2xhc3NcbiAgICAgIH0pO1xuXG4gICAgICBvdmVybGF5LmF0dGFjaFRlbXBsYXRlKHRoaXMucmVzdWx0c1RlbXBsYXRlUmVmKTtcblxuICAgICAgdGhpcy5vdmVybGF5ID0gb3ZlcmxheTtcbiAgICAgIHRoaXMuaXNPcGVuID0gdHJ1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB0aGlzLmluaXRPdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMoKTtcblxuICAgICAgb3ZlcmxheS5iYWNrZHJvcENsaWNrXG4gICAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICBpZiAoZG9jdW1lbnQuYWN0aXZlRWxlbWVudCAhPT0gdGhpcy5pbnB1dERpcmVjdGl2ZS5pbnB1dEVsZW1lbnQpIHtcbiAgICAgICAgICAgIHRoaXMuaW5wdXREaXJlY3RpdmUucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gICAgICAgICAgICB0aGlzLmNsb3NlRHJvcGRvd24oKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgY2xvc2VEcm9wZG93bigpOiB2b2lkIHtcbiAgICB0aGlzLnJlc2V0U2VhcmNoKCk7XG4gICAgdGhpcy5pc09wZW4gPSBmYWxzZTtcbiAgICB0aGlzLmRlc3Ryb3lPdmVybGF5KCk7XG4gICAgdGhpcy5yZW1vdmVBY3RpdmVEZXNjZW5kYW50KCk7XG4gICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0QWN0aXZlRGVzY2VuZGFudCgpOiB2b2lkIHtcbiAgICBjb25zdCBhY3RpdmVFbGVtZW50ID0gdGhpcy5vdmVybGF5Rm9jdXNhYmxlRWxlbWVudHNbdGhpcy5hY3RpdmVFbGVtZW50SW5kZXhdO1xuICAgIGlmIChhY3RpdmVFbGVtZW50KSB7XG4gICAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnNldEFjdGl2ZURlc2NlbmRhbnQoYWN0aXZlRWxlbWVudC5pZCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVBY3RpdmVEZXNjZW5kYW50KCk6IHZvaWQge1xuICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpuby1udWxsLWtleXdvcmQgKi9cbiAgICB0aGlzLmlucHV0RGlyZWN0aXZlLnNldEFjdGl2ZURlc2NlbmRhbnQobnVsbCk7XG4gIH1cblxuICBwcml2YXRlIHJlc2V0U2VhcmNoKCk6IHZvaWQge1xuICAgIHRoaXMuX3NlYXJjaFJlc3VsdHMgPSBbXTtcbiAgICB0aGlzLnNlYXJjaFRleHQgPSAnJztcbiAgICB0aGlzLl9oaWdobGlnaHRUZXh0ID0gJyc7XG4gICAgdGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPSAtMTtcbiAgICB0aGlzLnJlbW92ZUFjdGl2ZURlc2NlbmRhbnQoKTtcbiAgICB0aGlzLmluaXRPdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMoKTtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHJpdmF0ZSBhZGRJbnB1dEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudDtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoZWxlbWVudCwgJ2tleWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICB0aGlzLmhhbmRsZUtleWRvd24oZXZlbnQpO1xuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KHdpbmRvdywgJ3Jlc2l6ZScpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5uZ1Vuc3Vic2NyaWJlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgICBpZiAodGhpcy5pc09wZW4pIHtcbiAgICAgICAgICB0aGlzLmFkYXB0ZXJTZXJ2aWNlLnNldERyb3Bkb3duV2lkdGgoXG4gICAgICAgICAgICB0aGlzLmVsZW1lbnRSZWYsXG4gICAgICAgICAgICB0aGlzLnJlc3VsdHNSZWYsXG4gICAgICAgICAgICAhIXRoaXMuaW5wdXRCb3hIb3N0U3ZjXG4gICAgICAgICAgKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lPdmVybGF5KCk6IHZvaWQge1xuICAgIGlmICh0aGlzLm92ZXJsYXkpIHtcbiAgICAgIHRoaXMub3ZlcmxheVNlcnZpY2UuY2xvc2UodGhpcy5vdmVybGF5KTtcbiAgICAgIHRoaXMub3ZlcmxheSA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUFmZml4ZXIoKTogdm9pZCB7XG4gICAgaWYgKCF0aGlzLmFmZml4ZXIpIHtcbiAgICAgIGNvbnN0IGFmZml4ZXIgPSB0aGlzLmFmZml4U2VydmljZS5jcmVhdGVBZmZpeGVyKHRoaXMucmVzdWx0c1JlZik7XG5cbiAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2Uuc2V0RHJvcGRvd25XaWR0aChcbiAgICAgICAgdGhpcy5lbGVtZW50UmVmLFxuICAgICAgICB0aGlzLnJlc3VsdHNSZWYsXG4gICAgICAgICEhdGhpcy5pbnB1dEJveEhvc3RTdmNcbiAgICAgICk7XG5cbiAgICAgIGFmZml4ZXIuYWZmaXhUbyh0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCwge1xuICAgICAgICBhdXRvRml0Q29udGV4dDogU2t5QWZmaXhBdXRvRml0Q29udGV4dC5WaWV3cG9ydCxcbiAgICAgICAgZW5hYmxlQXV0b0ZpdDogdHJ1ZSxcbiAgICAgICAgaXNTdGlja3k6IHRydWUsXG4gICAgICAgIHBsYWNlbWVudDogJ2JlbG93JyxcbiAgICAgICAgaG9yaXpvbnRhbEFsaWdubWVudDogJ2xlZnQnXG4gICAgICB9KTtcblxuICAgICAgdGhpcy5hZmZpeGVyID0gYWZmaXhlcjtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGRlc3Ryb3lBZmZpeGVyKCk6IHZvaWQge1xuICAgIGlmICh0aGlzLmFmZml4ZXIpIHtcbiAgICAgIHRoaXMuYWZmaXhlci5kZXN0cm95KCk7XG4gICAgICB0aGlzLmFmZml4ZXIgPSB1bmRlZmluZWQ7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBpbml0TWVzc2FnZVN0cmVhbSgpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgaWYgKi9cbiAgICBpZiAodGhpcy5tZXNzYWdlU3RyZWFtU3ViKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTdHJlYW1TdWIudW5zdWJzY3JpYmUoKTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5tZXNzYWdlU3RyZWFtKSB7XG4gICAgICB0aGlzLm1lc3NhZ2VTdHJlYW1TdWIgPSB0aGlzLm1lc3NhZ2VTdHJlYW1cbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKChtZXNzYWdlOiBTa3lBdXRvY29tcGxldGVNZXNzYWdlKSA9PiB7XG4gICAgICAgICAgLyogdHNsaW50OmRpc2FibGUtbmV4dC1saW5lOnN3aXRjaC1kZWZhdWx0ICovXG4gICAgICAgICAgc3dpdGNoIChtZXNzYWdlLnR5cGUpIHtcbiAgICAgICAgICAgIGNhc2UgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGUuQ2xvc2VEcm9wZG93bjpcbiAgICAgICAgICAgIHRoaXMuY2xvc2VEcm9wZG93bigpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGluaXRPdmVybGF5Rm9jdXNhYmxlRWxlbWVudHMoKTogdm9pZCB7XG4gICAgLy8gV2FpdCBmb3IgZHJvcGRvd24gZWxlbWVudHMgdG8gcmVuZGVyLlxuICAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgaWYgKHRoaXMub3ZlcmxheSkge1xuICAgICAgICB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50cyA9IHRoaXMuYWRhcHRlclNlcnZpY2UuZ2V0T3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzKHRoaXMub3ZlcmxheSk7XG4gICAgICAgIHRoaXMub3ZlcmxheUZvY3VzYWJsZUVsZW1lbnRzLmZvckVhY2goZWwgPT4ge1xuICAgICAgICAgIHRoaXMuYWRhcHRlclNlcnZpY2Uuc2V0VGFiSW5kZXgoZWwsIC0xKTtcbiAgICAgICAgfSk7XG4gICAgICAgIHRoaXMuYWRkRm9jdXNlZENsYXNzKCk7XG4gICAgICB9XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGdldEFjdGl2ZUVsZW1lbnQoKTogSFRNTEVsZW1lbnQge1xuICAgIHJldHVybiB0aGlzLm92ZXJsYXlGb2N1c2FibGVFbGVtZW50c1t0aGlzLmFjdGl2ZUVsZW1lbnRJbmRleF07XG4gIH1cblxuICBwcml2YXRlIHJlbW92ZUZvY3VzZWRDbGFzcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5yZW1vdmVDU1NDbGFzcyhcbiAgICAgICAgdGhpcy5vdmVybGF5Rm9jdXNhYmxlRWxlbWVudHNbdGhpcy5hY3RpdmVFbGVtZW50SW5kZXhdLFxuICAgICAgICAnc2t5LWF1dG9jb21wbGV0ZS1kZXNjZW5kYW50LWZvY3VzJ1xuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZEZvY3VzZWRDbGFzcygpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hY3RpdmVFbGVtZW50SW5kZXggPiAtMSkge1xuICAgICAgdGhpcy5hZGFwdGVyU2VydmljZS5hZGRDU1NDbGFzcyhcbiAgICAgICAgdGhpcy5vdmVybGF5Rm9jdXNhYmxlRWxlbWVudHNbdGhpcy5hY3RpdmVFbGVtZW50SW5kZXhdLFxuICAgICAgICAnc2t5LWF1dG9jb21wbGV0ZS1kZXNjZW5kYW50LWZvY3VzJ1xuICAgICAgKTtcbiAgICAgIHRoaXMuc2V0QWN0aXZlRGVzY2VuZGFudCgpO1xuICAgIH1cbiAgfVxuXG59XG4iXX0=
|
|
@@ -290,6 +290,10 @@ let SkyLookupComponent = class SkyLookupComponent extends SkyLookupAutocompleteA
|
|
|
290
290
|
}
|
|
291
291
|
}
|
|
292
292
|
onSearchButtonClick() {
|
|
293
|
+
/*istanbul ignore next*/
|
|
294
|
+
if (this.disabled) {
|
|
295
|
+
return;
|
|
296
|
+
}
|
|
293
297
|
this.sendAutocompleteMessage(SkyAutocompleteMessageType.CloseDropdown);
|
|
294
298
|
let isValueInTextBox = false;
|
|
295
299
|
if (this.selectMode === SkyLookupSelectMode.single) {
|
|
@@ -331,7 +335,8 @@ let SkyLookupComponent = class SkyLookupComponent extends SkyLookupAutocompleteA
|
|
|
331
335
|
{
|
|
332
336
|
provide: SkyLookupShowMoreNativePickerContext, useValue: context
|
|
333
337
|
}
|
|
334
|
-
]
|
|
338
|
+
],
|
|
339
|
+
wrapperClass: this.wrapperClass
|
|
335
340
|
});
|
|
336
341
|
this.openNativePicker.componentInstance.addClick.subscribe(() => {
|
|
337
342
|
this.addButtonClicked();
|
|
@@ -503,6 +508,9 @@ __decorate([
|
|
|
503
508
|
__decorate([
|
|
504
509
|
Input()
|
|
505
510
|
], SkyLookupComponent.prototype, "selectMode", null);
|
|
511
|
+
__decorate([
|
|
512
|
+
Input()
|
|
513
|
+
], SkyLookupComponent.prototype, "wrapperClass", void 0);
|
|
506
514
|
__decorate([
|
|
507
515
|
Output()
|
|
508
516
|
], SkyLookupComponent.prototype, "addClick", void 0);
|
|
@@ -538,7 +546,7 @@ __decorate([
|
|
|
538
546
|
SkyLookupComponent = __decorate([
|
|
539
547
|
Component({
|
|
540
548
|
selector: 'sky-lookup',
|
|
541
|
-
template: "<ng-container *ngIf=\"!inputBoxHostSvc\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n</ng-container>\n\n<ng-template\n #inputTemplateRef\n>\n <div\n class=\"sky-lookup\"\n [ngClass]=\"{\n 'sky-lookup-focused': isInputFocused,\n 'sky-lookup-disabled': disabled,\n 'sky-lookup-single': selectMode === 'single'\n }\"\n #lookupWrapper\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [data]=\"data\"\n [debounceTime]=\"debounceTime\"\n [descriptorProperty]=\"descriptorProperty\"\n [enableShowMore]=\"enableShowMore\"\n [messageStream]=\"autocompleteController\"\n [propertiesToSearch]=\"propertiesToSearch\"\n [search]=\"search\"\n [searchFilters]=\"searchFilters\"\n [searchResultsLimit]=\"searchResultsLimit\"\n [searchResultTemplate]=\"searchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n [showAddButton]=\"showAddButton\"\n (addClick)=\"addButtonClicked()\"\n (selectionChange)=\"onAutocompleteSelectionChange($event)\"\n (showMoreClick)=\"onShowMoreClick($event)\"\n >\n\n <div class=\"sky-lookup-search-flex-wrapper\">\n <div\n class=\"sky-lookup-search\"\n [ngClass]=\"{\n 'sky-field-status-active': isInputFocused\n }\"\n >\n <sky-tokens *ngIf=\"selectMode === 'multiple'\"\n class=\"sky-lookup-tokens\"\n [disabled]=\"disabled\"\n [displayWith]=\"descriptorProperty\"\n [focusable]=\"false\"\n [messageStream]=\"tokensController\"\n [trackWith]=\"idProperty\"\n [tokens]=\"tokens\"\n (keyup)=\"onTokensKeyUp($event)\"\n (tokensChange)=\"onTokensChange($event)\"\n (tokenSelected)=\"enableShowMore ? openPicker(undefined) : undefined\"\n (focusIndexOverRange)=\"onTokensFocusIndexOverRange()\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n (keydown)=\"inputKeydown($event, $event.target.value)\"\n (keyup)=\"inputKeyup($event)\"\n ></textarea>\n </sky-tokens>\n <div *ngIf=\"selectMode === 'single'\"\n class=\"sky-lookup-single-control\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n ></textarea>\n </div>\n </div>\n <ng-container *ngIf=\"!inputBoxHostSvc && enableShowMore\">\n <ng-container *ngTemplateOutlet=\"showMoreButtonTemplateRef\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container *ngTemplateOutlet=\"searchIconTemplateRef\"></ng-container>\n </ng-container>\n </div>\n </sky-autocomplete>\n </div>\n</ng-template>\n\n<ng-template\n #showMoreButtonTemplateRef\n>\n <div\n class=\"sky-input-group-btn\"\n >\n <button\n class=\"sky-btn sky-btn-default\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_lookup_search_button_show_more' | skyLibResources\"\n (click)=\"onSearchButtonClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"search\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n iconType=\"skyux\"\n icon=\"search\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template\n #searchIconTemplateRef\n>\n <div\n class=\"sky-input-group-icon sky-input-box-icon-inset\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"search\"\n [attr.aria-label]=\"'skyux_lookup_search_icon' | skyLibResources\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n iconType=\"skyux\"\n icon=\"search\"\n [attr.aria-label]=\"'skyux_lookup_search_icon' | skyLibResources\"\n ></sky-icon>\n </div>\n</ng-template>\n",
|
|
549
|
+
template: "<ng-container *ngIf=\"!inputBoxHostSvc\">\n <ng-container *ngTemplateOutlet=\"inputTemplateRef\"></ng-container>\n</ng-container>\n\n<ng-template\n #inputTemplateRef\n>\n <div\n class=\"sky-lookup\"\n [ngClass]=\"{\n 'sky-lookup-focused': isInputFocused,\n 'sky-lookup-disabled': disabled,\n 'sky-lookup-single': selectMode === 'single'\n }\"\n #lookupWrapper\n >\n <sky-autocomplete\n [ariaLabelledBy]=\"ariaLabelledBy\"\n [data]=\"data\"\n [debounceTime]=\"debounceTime\"\n [descriptorProperty]=\"descriptorProperty\"\n [enableShowMore]=\"enableShowMore\"\n [messageStream]=\"autocompleteController\"\n [propertiesToSearch]=\"propertiesToSearch\"\n [search]=\"search\"\n [searchFilters]=\"searchFilters\"\n [searchResultsLimit]=\"searchResultsLimit\"\n [searchResultTemplate]=\"searchResultTemplate\"\n [searchTextMinimumCharacters]=\"searchTextMinimumCharacters\"\n [showAddButton]=\"showAddButton\"\n [wrapperClass]=\"wrapperClass\"\n (addClick)=\"addButtonClicked()\"\n (selectionChange)=\"onAutocompleteSelectionChange($event)\"\n (showMoreClick)=\"onShowMoreClick($event)\"\n >\n\n <div class=\"sky-lookup-search-flex-wrapper\">\n <div\n class=\"sky-lookup-search\"\n [ngClass]=\"{\n 'sky-field-status-active': isInputFocused && !disabled\n }\"\n >\n <sky-tokens *ngIf=\"selectMode === 'multiple'\"\n class=\"sky-lookup-tokens\"\n [disabled]=\"disabled\"\n [displayWith]=\"descriptorProperty\"\n [focusable]=\"false\"\n [messageStream]=\"tokensController\"\n [trackWith]=\"idProperty\"\n [tokens]=\"tokens\"\n (keyup)=\"onTokensKeyUp($event)\"\n (tokensChange)=\"onTokensChange($event)\"\n (tokenSelected)=\"enableShowMore ? openPicker(undefined) : undefined\"\n (focusIndexOverRange)=\"onTokensFocusIndexOverRange()\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n (keydown)=\"inputKeydown($event, $event.target.value)\"\n (keyup)=\"inputKeyup($event)\"\n ></textarea>\n </sky-tokens>\n <div *ngIf=\"selectMode === 'single'\"\n class=\"sky-lookup-single-control\"\n >\n <textarea\n class=\"sky-form-control sky-lookup-input\"\n rows=\"1\"\n skyAutocomplete\n wrap=\"off\"\n [attr.aria-label]=\"ariaLabel\"\n [attr.aria-labelledby]=\"ariaLabelledBy\"\n [attr.placeholder]=\"placeholderText\"\n [autocompleteAttribute]=\"autocompleteAttribute\"\n [disabled]=\"disabled\"\n (blur)=\"onAutocompleteBlur()\"\n ></textarea>\n </div>\n </div>\n <ng-container *ngIf=\"!inputBoxHostSvc && enableShowMore\">\n <ng-container *ngTemplateOutlet=\"showMoreButtonTemplateRef\"></ng-container>\n </ng-container>\n <ng-container *ngIf=\"!inputBoxHostSvc && !enableShowMore\">\n <ng-container *ngTemplateOutlet=\"searchIconTemplateRef\"></ng-container>\n </ng-container>\n </div>\n </sky-autocomplete>\n </div>\n</ng-template>\n\n<ng-template\n #showMoreButtonTemplateRef\n>\n <div\n class=\"sky-input-group-btn\"\n >\n <button\n class=\"sky-btn sky-btn-default\"\n [disabled]=\"disabled\"\n [ngClass]=\"{'sky-btn-disabled': disabled}\"\n type=\"button\"\n [attr.aria-label]=\"'skyux_lookup_search_button_show_more' | skyLibResources\"\n (click)=\"onSearchButtonClick()\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"search\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n iconType=\"skyux\"\n icon=\"search\"\n ></sky-icon>\n </button>\n </div>\n</ng-template>\n\n<ng-template\n #searchIconTemplateRef\n>\n <div\n class=\"sky-input-group-icon sky-input-box-icon-inset\"\n [ngClass]=\"{'sky-lookup-disabled': disabled}\"\n >\n <sky-icon *skyThemeIf=\"'default'\"\n icon=\"search\"\n [attr.aria-label]=\"'skyux_lookup_search_icon' | skyLibResources\"\n ></sky-icon>\n <sky-icon *skyThemeIf=\"'modern'\"\n iconType=\"skyux\"\n icon=\"search\"\n [attr.aria-label]=\"'skyux_lookup_search_icon' | skyLibResources\"\n ></sky-icon>\n </div>\n</ng-template>\n",
|
|
542
550
|
providers: [
|
|
543
551
|
SkyLookupAdapterService
|
|
544
552
|
],
|
|
@@ -551,4 +559,4 @@ SkyLookupComponent = __decorate([
|
|
|
551
559
|
__param(8, Optional())
|
|
552
560
|
], SkyLookupComponent);
|
|
553
561
|
export { SkyLookupComponent };
|
|
554
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9sb29rdXAvIiwic291cmNlcyI6WyJtb2R1bGVzL2xvb2t1cC9sb29rdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsU0FBUyxJQUFJLG1CQUFtQixFQUNoQyxPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsSUFBSSxFQUNKLFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxlQUFlLEVBQ2hCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdkIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLHNCQUFzQixFQUN2QixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBR0wsb0JBQW9CLEVBQ3JCLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixlQUFlLEVBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxlQUFlLEVBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBTXRCLE9BQU8sRUFDTCwwQkFBMEIsRUFDM0IsTUFBTSxpREFBaUQsQ0FBQztBQVV6RCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzlCLE1BQU0sOENBQThDLENBQUM7QUFFdEQsT0FBTyxFQUNMLDRCQUE0QixFQUM3QixNQUFNLCtCQUErQixDQUFDO0FBRXZDLE9BQU8sRUFDTCx1QkFBdUIsRUFDeEIsTUFBTSwwQkFBMEIsQ0FBQztBQVVsQyxPQUFPLEVBQ0wsK0JBQStCLEVBQ2hDLE1BQU0sb0NBQW9DLENBQUM7QUFFNUMsT0FBTyxFQUNMLG1CQUFtQixFQUNwQixNQUFNLDRCQUE0QixDQUFDO0FBTXBDLE9BQU8sRUFDTCxvQ0FBb0MsRUFDckMsTUFBTSxnREFBZ0QsQ0FBQztBQVl4RCxJQUFhLGtCQUFrQixHQUEvQixNQUFhLGtCQUNYLFNBQVEsNEJBQTRCO0lBNE1wQyxZQUNVLGNBQWlDLEVBQ2pDLFVBQXNCLEVBQ3RCLFNBQTBCLEVBQ2QsU0FBb0IsRUFDaEMsT0FBZ0MsRUFDaEMsWUFBNkIsRUFDN0IsZ0JBQXdDLEVBQzdCLGVBQXdDLEVBQ3hDLFFBQTBCO1FBRTdDLEtBQUssRUFBRSxDQUFDO1FBVkEsbUJBQWMsR0FBZCxjQUFjLENBQW1CO1FBQ2pDLGVBQVUsR0FBVixVQUFVLENBQVk7UUFDdEIsY0FBUyxHQUFULFNBQVMsQ0FBaUI7UUFFMUIsWUFBTyxHQUFQLE9BQU8sQ0FBeUI7UUFDaEMsaUJBQVksR0FBWixZQUFZLENBQWlCO1FBQzdCLHFCQUFnQixHQUFoQixnQkFBZ0IsQ0FBd0I7UUFDN0Isb0JBQWUsR0FBZixlQUFlLENBQXlCO1FBQ3hDLGFBQVEsR0FBUixRQUFRLENBQWtCO1FBdksvQzs7V0FFRztRQUVJLGFBQVEsR0FBRyxLQUFLLENBQUM7UUFFeEI7O1dBRUc7UUFFSSxtQkFBYyxHQUFZLEtBQUssQ0FBQztRQWV2Qzs7V0FFRztRQUVJLGtCQUFhLEdBQVksS0FBSyxDQUFDO1FBaUN0Qzs7V0FFRztRQUVJLGFBQVEsR0FBNkMsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQXlDeEUsMkJBQXNCLEdBQUcsSUFBSSxPQUFPLEVBQTBCLENBQUM7UUFDL0QsbUJBQWMsR0FBRyxLQUFLLENBQUM7UUFDdkIscUJBQWdCLEdBQUcsSUFBSSxPQUFPLEVBQW9CLENBQUM7UUFzQ2xELGtCQUFhLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUM5QixTQUFJLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUNyQiw2QkFBd0IsR0FBRyxLQUFLLENBQUM7UUFxSXpDLGtEQUFrRDtRQUNsRCwwQkFBMEI7UUFDbkIsYUFBUSxHQUFHLENBQUMsS0FBWSxFQUFFLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFDeEMsMEJBQTBCO1FBQ25CLGNBQVMsR0FBRyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7UUFwSDNCLFNBQVMsQ0FBQyxhQUFhLEdBQUcsSUFBSSxDQUFDO0lBQ2pDLENBQUM7SUE5TEQ7Ozs7O09BS0c7SUFFSCxJQUFXLElBQUksQ0FBQyxLQUFZO1FBQzFCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBRW5CLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO1lBQ3pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFDLENBQUM7U0FDL0Q7SUFDSCxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQ3BCLENBQUM7SUFzQ0Q7OztPQUdHO0lBRUgsSUFBVyxVQUFVLENBQUMsS0FBMEI7UUFDOUMsSUFBSSxnQkFBZ0IsR0FBWSxLQUFLLEtBQUssbUJBQW1CLENBQUMsTUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssbUJBQW1CLENBQUMsUUFBUSxDQUFDO1FBRXpILElBQUksQ0FBQyxXQUFXLEdBQUcsS0FBSyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO1FBRTNCLElBQUksZ0JBQWdCLEVBQUU7WUFDcEIsSUFBSSxJQUFJLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRTtnQkFDdkMsK0dBQStHO2dCQUMvRyxVQUFVLENBQUMsR0FBRyxFQUFFO29CQUNkLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztvQkFDakMsSUFBSSxDQUFDLGNBQWMsQ0FBQyxhQUFhLEVBQUUsQ0FBQztnQkFDdEMsQ0FBQyxDQUFDLENBQUM7YUFDSjtTQUNGO0lBQ0gsQ0FBQztJQUVELElBQVcsVUFBVTtRQUNuQixPQUFPLElBQUksQ0FBQyxXQUFXLElBQUksbUJBQW1CLENBQUMsUUFBUSxDQUFDO0lBQzFELENBQUM7SUFRRCxJQUFXLE1BQU07UUFDZixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQUVELElBQVcsTUFBTSxDQUFDLEtBQWlCO1FBQ2pDLGlGQUFpRjtRQUNqRixJQUFJLElBQUksQ0FBQyxjQUFjLElBQUksSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFO1lBQ2hELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQzdCLDZCQUE2QixFQUM3QixJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FDN0I7aUJBQ0UsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztpQkFDYixTQUFTLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDbkIsSUFBSSxDQUFDLE9BQU8sR0FBRyxDQUFDO3dCQUNkLEtBQUssRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsS0FBSyxFQUFFO3FCQUM1QyxDQUFDLENBQUM7Z0JBQ0gsSUFBSSxDQUFDLGNBQWMsQ0FBQyxZQUFZLEVBQUUsQ0FBQztZQUNyQyxDQUFDLENBQUMsQ0FBQztTQUNOO2FBQU07WUFDTCxJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztZQUNyQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1NBQ3BDO0lBQ0gsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQ3hDLENBQUM7SUFFRCxJQUFXLEtBQUssQ0FBQyxRQUFlO1FBQzlCLElBQUksQ0FBQyxNQUFNLEdBQUcsUUFBUSxDQUFDO1FBRXZCLElBQUksQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLEVBQUU7WUFDMUIsSUFBSSxDQUFDLE1BQU0sR0FBRyxJQUFJLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1NBQzFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDM0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO0lBQ25CLENBQUM7SUFVRCxJQUFZLDBCQUEwQixDQUFDLEtBQW9DO1FBQ3pFLElBQUksQ0FBQywyQkFBMkIsR0FBRyxLQUFLLENBQUM7UUFDekMsSUFBSSxDQUFDLG1CQUFtQixFQUFFLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVksMEJBQTBCO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLDJCQUEyQixDQUFDO0lBQzFDLENBQUM7SUFtRE0sUUFBUTs7UUFDYixJQUFJLElBQUksQ0FBQyxlQUFlLEVBQUU7WUFDeEIsSUFBSSxDQUFDLGVBQWUsQ0FBQyxRQUFRLENBQzNCO2dCQUNFLGFBQWEsRUFBRSxJQUFJLENBQUMsZ0JBQWdCO2dCQUNwQyxlQUFlLEVBQUUsSUFBSSxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLHlCQUF5QixDQUFDLENBQUMsQ0FBQyxTQUFTO2dCQUNqRixrQkFBa0IsRUFBRSxJQUFJLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxxQkFBcUI7YUFDakYsQ0FDRixDQUFDO1NBQ0g7UUFFRCwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFO1lBQ2pCLDJFQUEyRTtZQUMzRSx3Q0FBd0M7WUFDeEMsTUFBQSxJQUFJLENBQUMsUUFBUSwwQ0FBRSxjQUFjLENBQzFCLElBQUksQ0FDSCxTQUFTLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUU5QixTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUNkLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDckMsQ0FBQyxFQUFFO1NBQ047SUFDSCxDQUFDO0lBRU0sZUFBZTtRQUNwQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtZQUNsQixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjtJQUNILENBQUM7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBQzVCLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUM5QixJQUFJLENBQUMsZ0JBQWdCLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDbkMsQ0FBQztJQUVNLGdCQUFnQjtRQUNyQixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLFNBQVMsRUFBRSxDQUFDLElBQThCLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxtQkFBbUIsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLENBQUM7SUFDeEcsQ0FBQztJQUVNLDZCQUE2QixDQUFDLE1BQXNDO1FBQ3pFLDBCQUEwQjtRQUMxQixJQUFJLE1BQU0sQ0FBQyxZQUFZLEVBQUU7WUFDdkIsSUFBSSxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUM7U0FDekM7YUFBTSxJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssbUJBQW1CLENBQUMsTUFBTSxFQUFFO1lBQ3pELElBQUksQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLENBQUM7U0FDckI7SUFDSCxDQUFDO0lBRU0sa0JBQWtCO1FBQ3ZCLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU0sY0FBYyxDQUFDLE1BQWtCO1FBQ3RDLElBQUksQ0FBQyxNQUFNLEVBQUU7WUFDWCxPQUFPO1NBQ1I7UUFFRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssTUFBTSxFQUFFO1lBQzFCLElBQUksTUFBTSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUU7Z0JBQ3ZCLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQzthQUNuQjtZQUVELDRGQUE0RjtZQUM1Rix1RkFBdUY7WUFDdkYsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLEtBQUssQ0FBQyxFQUFFLEdBQUcsT0FBTyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDM0QsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7WUFFckIsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7WUFDM0IsSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQztJQUVNLDJCQUEyQjtRQUNoQyxJQUFJLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFO1lBQzFDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNwQixDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxhQUFhLENBQUMsS0FBb0I7UUFDdkMsMEJBQTBCO1FBQzFCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUU7WUFDaEMsNkNBQTZDO1lBQzdDLFFBQVEsS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDakIsS0FBSyxXQUFXO29CQUNkLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO29CQUMvRCxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsa0JBQWtCLENBQUMsQ0FBQztvQkFDaEUsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixNQUFNO2dCQUVSLEtBQUssS0FBSyxDQUFDO2dCQUNYLEtBQUssUUFBUTtvQkFDWCxJQUFJLENBQUMsaUJBQWlCLENBQUMsb0JBQW9CLENBQUMsaUJBQWlCLENBQUMsQ0FBQztvQkFDL0QsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLENBQUMsVUFBVSxDQUFDLEdBQUcsRUFBRTt3QkFDMUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLG9CQUFvQixDQUFDLGdCQUFnQixDQUFDLENBQUM7b0JBQ2hFLENBQUMsQ0FBQyxDQUFDO29CQUNILEtBQUssQ0FBQyxjQUFjLEVBQUUsQ0FBQztvQkFDdkIsTUFBTTthQUNUO1NBQ0Y7SUFDSCxDQUFDO0lBRU0sVUFBVSxDQUFDLEtBQVk7UUFDNUIsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1FBQ2hDLElBQUksQ0FBQyxtQkFBbUIsRUFBRSxDQUFDO0lBQzdCLENBQUM7SUFRTSxnQkFBZ0IsQ0FBQyxFQUF3QjtRQUM5QyxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRU0saUJBQWlCLENBQUMsRUFBYztRQUNyQyxJQUFJLENBQUMsU0FBUyxHQUFHLEVBQUUsQ0FBQztJQUN0QixDQUFDO0lBRUQsdUNBQXVDO0lBQ2hDLGdCQUFnQixDQUFDLFFBQWlCO1FBQ3ZDLElBQUksQ0FBQyxvQkFBb0IsRUFBRSxDQUFDO1FBRTVCLElBQUksQ0FBQyxRQUFRLEVBQUU7WUFDYixJQUFJLENBQUMsaUJBQWlCLEVBQUUsQ0FBQztTQUMxQjtRQUVELElBQUksQ0FBQyxRQUFRLEdBQUcsUUFBUSxDQUFDO1FBQ3pCLElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7SUFDckMsQ0FBQztJQUVNLGVBQWU7UUFDcEIsSUFBSSxDQUFDLDBCQUEwQixDQUFDLEtBQUssR0FBRyxTQUFTLENBQUM7UUFDbEQsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDN0QsQ0FBQztJQUVELHVDQUF1QztJQUN2QyxrRkFBa0Y7SUFDbEYsa0ZBQWtGO0lBQ2xGLHdGQUF3RjtJQUNqRixZQUFZLENBQUMsS0FBb0IsRUFBRSxLQUFhO1FBQ3JELDZFQUE2RTtRQUM3RSwwQkFBMEI7UUFDMUIsSUFBSSxJQUFJLENBQUMsVUFBVSxLQUFLLFFBQVEsRUFBRTtZQUNoQyxRQUFRLEtBQUssQ0FBQyxHQUFHLEVBQUU7Z0JBQ2pCLEtBQUssT0FBTztvQkFDVixLQUFLLENBQUMsY0FBYyxFQUFFLENBQUM7b0JBQ3ZCLE1BQU07Z0JBQ1IsS0FBSyxXQUFXLENBQUM7Z0JBQ2pCLEtBQUssV0FBVyxDQUFDO2dCQUNqQixLQUFLLE1BQU07b0JBQ1QsSUFBSSxLQUFLLEVBQUU7d0JBQ1QsSUFBSSxDQUFDLHdCQUF3QixHQUFHLEtBQUssQ0FBQztxQkFDdkM7eUJBQU07d0JBQ0wsSUFBSSxDQUFDLHdCQUF3QixHQUFHLElBQUksQ0FBQztxQkFDdEM7b0JBQ0QsTUFBTTtnQkFDUixRQUFRO2FBQ1Q7U0FDRjtJQUNILENBQUM7SUFFTSxVQUFVLENBQUMsS0FBb0I7UUFDcEMsNkVBQTZFO1FBQzdFLDBCQUEwQjtRQUMxQixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssUUFBUSxFQUFFO1lBQ2hDLFFBQVEsS0FBSyxDQUFDLEdBQUcsRUFBRTtnQkFDakIsS0FBSyxLQUFLLENBQUM7Z0JBQ1gsS0FBSyxRQUFRO29CQUNYLElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztvQkFDdkIsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO29CQUN2QixNQUFNO2dCQUNSLEtBQUssV0FBVyxDQUFDO2dCQUNqQixLQUFLLFdBQVcsQ0FBQztnQkFDakIsS0FBSyxNQUFNO29CQUNULDBCQUEwQjtvQkFDMUIsSUFBSSxJQUFJLENBQUMsd0JBQXdCLEVBQUU7d0JBQ2pDLElBQUksQ0FBQyxpQkFBaUIsQ0FBQyxvQkFBb0IsQ0FBQyxjQUFjLENBQUMsQ0FBQzt3QkFDNUQsS0FBSyxDQUFDLGNBQWMsRUFBRSxDQUFDO3FCQUN4QjtvQkFDRCxNQUFNO2dCQUNSLFFBQVE7YUFDVDtZQUVELEtBQUssQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN6QjtJQUNILENBQUM7SUFFTSxtQkFBbUI7UUFDeEIsSUFBSSxDQUFDLHVCQUF1QixDQUFDLDBCQUEwQixDQUFDLGFBQWEsQ0FBQyxDQUFDO1FBRXZFLElBQUksZ0JBQWdCLEdBQUcsS0FBSyxDQUFDO1FBQzdCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUU7WUFDbEQsZ0JBQWdCLEdBQUcsSUFBSSxDQUFDLDBCQUEwQixDQUFDLGNBQWMsS0FBSyxJQUFJLENBQUMsMEJBQTBCLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1NBQ3RJO1FBRUQsSUFBSSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsMEJBQTBCLENBQUMsY0FBYyxDQUFDLENBQUM7UUFDeEYsSUFBSSxDQUFDLDBCQUEwQixDQUFDLG9DQUFvQyxFQUFFLENBQUM7SUFDekUsQ0FBQztJQUVNLGVBQWUsQ0FBQyxLQUFrQztRQUN2RCxJQUFJLENBQUMsVUFBVSxDQUFDLEtBQUssYUFBTCxLQUFLLHVCQUFMLEtBQUssQ0FBRSxVQUFVLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBRU0sVUFBVSxDQUFDLGFBQXFCOztRQUNyQyxVQUFJLElBQUksQ0FBQyxjQUFjLDBDQUFFLFlBQVksRUFBRTtZQUNyQyxJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUM7Z0JBQ3BDLEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDaEIsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLFlBQVksRUFBRSxJQUFJLENBQUMsS0FBSzthQUN6QixDQUFDLENBQUM7U0FDSjthQUFNO1lBQ0wsSUFBSSxZQUFZLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQztZQUM5QixNQUFNLFdBQVcsR0FBRyxPQUFBLElBQUksQ0FBQyxjQUFjLDBDQUFFLGtCQUFrQixLQUFJLEVBQUUsQ0FBQztZQUNsRSxJQUFJLENBQUMsV0FBVyxDQUFDLFlBQVksRUFBRTtnQkFDN0IsV0FBVyxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUM7YUFDdEQ7WUFFRCxJQUFJLE9BQU8sR0FBeUM7Z0JBQ2xELEtBQUssRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDaEIsa0JBQWtCLEVBQUUsSUFBSSxDQUFDLGtCQUFrQjtnQkFDM0MsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLFlBQVksRUFBRSxZQUFZO2dCQUMxQixNQUFNLEVBQUUsSUFBSSxDQUFDLE1BQU07Z0JBQ25CLFVBQVUsRUFBRSxJQUFJLENBQUMsVUFBVTtnQkFDM0IsYUFBYSxFQUFFLElBQUksQ0FBQyxhQUFhO2dCQUNqQyxVQUFVLEVBQUUsV0FBVzthQUN4QixDQUFDO1lBRUYsSUFBSSxDQUFDLGdCQUFnQixHQUFHLElBQUksQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLCtCQUErQixFQUFFO2dCQUM5RSxTQUFTLEVBQUU7b0JBQ1Q7d0JBQ0UsT0FBTyxFQUFFLG9DQUFvQyxFQUFFLFFBQVEsRUFBRSxPQUFPO3FCQUNqRTtpQkFDRjthQUNGLENBQUMsQ0FBQztZQUVILElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBaUIsQ0FBQyxRQUFRLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDOUQsSUFBSSxDQUFDLGdCQUFnQixFQUFFLENBQUM7WUFDMUIsQ0FBQyxDQUFDLENBQUM7WUFFSCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsTUFBTSxDQUFDLFNBQVMsQ0FBQyxTQUFTLENBQUMsRUFBRTtnQkFDakQsSUFBSSxDQUFDLGdCQUFnQixHQUFHLFNBQVMsQ0FBQztnQkFDbEMsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLE1BQU0sRUFBRTtvQkFDL0IsSUFBSSxhQUFhLEdBQVUsRUFBRSxDQUFDO29CQUU5QixJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQVMsRUFBRSxTQUFpQixFQUFFLEVBQUU7d0JBQ2pELElBQUksU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxTQUFjLEVBQUUsRUFBRTs0QkFDekMsT0FBTyxTQUFTLENBQUMsS0FBSyxLQUFLLFNBQVMsQ0FBQzt3QkFDdkMsQ0FBQyxDQUFDLEVBQUU7NEJBQ0YsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzt5QkFDMUI7b0JBQ0gsQ0FBQyxDQUFDLENBQUM7b0JBRUgsSUFBSSxDQUFDLFVBQVUsQ0FBQyxhQUFhLENBQUMsQ0FBQztpQkFDaEM7cUJBQU07b0JBQ0wsSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztpQkFDL0I7Z0JBRUQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsY0FBYyxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3JDLENBQUMsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU8sYUFBYSxDQUFDLElBQVM7UUFDN0IsSUFBSSxhQUFvQixDQUFDO1FBRXpCLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUU7WUFDaEMsYUFBYSxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7U0FDeEI7YUFBTTtZQUNMLGFBQWEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO1lBRTNCLGtGQUFrRjtZQUNsRixJQUNFLENBQUMsSUFBSSxDQUFDLFVBQVU7Z0JBQ2hCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQ2QsWUFBWSxDQUFDLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQ3hFLEVBQ0Q7Z0JBQ0EsYUFBYSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQzthQUMxQjtZQUVELElBQUksQ0FBQyxlQUFlLEVBQUUsQ0FBQztTQUN4QjtRQUVELElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUM7SUFDakMsQ0FBQztJQUVPLGlCQUFpQjtRQUN2QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksT0FBTyxFQUFFLENBQUM7UUFDMUIsSUFBSSxDQUFDLHFCQUFxQixFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUVPLG9CQUFvQjtRQUMxQixJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO1FBQ2pCLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7SUFDdkIsQ0FBQztJQUVPLHFCQUFxQjtRQUMzQixJQUFJLFdBQVcsR0FBRyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsYUFBYSxDQUFDO1FBQzlHLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsWUFBWSxDQUFDLFFBQVEsQ0FBQztRQUV6RCx1REFBdUQ7UUFDdkQsbUVBQW1FO1FBQ25FLGlEQUFpRDtRQUVqRCxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsV0FBVyxDQUFDO2FBQzFDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzFCLFNBQVMsQ0FBQyxDQUFDLEtBQWlCLEVBQUUsRUFBRTtZQUMvQixXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztZQUMxRyxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXpELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFFTCxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDO2FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzFCLFNBQVMsQ0FBQyxDQUFDLEtBQW9CLEVBQUUsRUFBRTtZQUNsQyxXQUFXLEdBQUcsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLGFBQWEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLGdCQUFnQixDQUFDLGFBQWEsQ0FBQztZQUMxRyxJQUFJLENBQUMsY0FBYyxHQUFHLFdBQVcsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBRXpELElBQUksQ0FBQyxjQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQUM7UUFFTCxtQkFBbUIsQ0FBQyxXQUFXLEVBQUUsU0FBUyxDQUFDO2FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzFCLFNBQVMsQ0FBQyxHQUFHLEVBQUU7WUFDZCxNQUFNLFNBQVMsR0FBRyxXQUFXLENBQUMsYUFBYSxDQUFDLFNBQVMsQ0FBQztZQUN0RCxJQUFJLENBQUMsU0FBUyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsQ0FBQyxXQUFXLENBQUMsRUFBRTtnQkFDbEQsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO2FBQ25CO1FBQ0gsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0lBRU8sVUFBVTtRQUNoQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUNqRCxDQUFDO0lBRU8sbUJBQW1CLENBQUMsSUFBOEI7UUFDeEQsSUFBSSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQ2IsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDO1NBQ3ZCO1FBRUQsSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxFQUFFO1lBQ3JDLElBQUksSUFBSSxDQUFDLGdCQUFnQixFQUFFO2dCQUNTLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxpQkFBa0I7cUJBQ3ZFLFlBQVksQ0FBQyxJQUFJLEVBQUUsRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQzthQUM5RDtpQkFBTTtnQkFDTCxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO2dCQUMxQixJQUFJLElBQUksQ0FBQyxVQUFVLEtBQUssbUJBQW1CLENBQUMsUUFBUSxFQUFFO29CQUNwRCxRQUFRLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUN6QztxQkFBTTtvQkFDTCxRQUFRLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7aUJBQ3hCO2dCQUNELElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDM0I7U0FDRjtJQUNILENBQUM7SUFFTyxXQUFXLENBQUMsSUFBVztRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFTLEVBQUUsRUFBRTtZQUM1QixPQUFPO2dCQUNMLEtBQUssRUFBRSxJQUFJO2FBQ1osQ0FBQztRQUNKLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHVCQUF1QixDQUFDLElBQWdDO1FBQzlELElBQUksQ0FBQyxzQkFBc0IsQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDO0lBQzdDLENBQUM7SUFFTyxpQkFBaUIsQ0FBQyxJQUEwQjtRQUNsRCxJQUFJLENBQUMsZ0JBQWdCLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRU8sbUJBQW1CO1FBQ3pCLElBQUksSUFBSSxDQUFDLDBCQUEwQixFQUFFO1lBQ25DLElBQUksSUFBSSxDQUFDLFVBQVUsS0FBSyxRQUFRLEVBQUU7Z0JBQ2hDLElBQUksQ0FBQywwQkFBMEIsQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUs7b0JBQ2hELElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDakI7aUJBQU07Z0JBQ0wsSUFBSSxDQUFDLGVBQWUsRUFBRSxDQUFDO2FBQ3hCO1NBQ0Y7SUFDSCxDQUFDO0NBQ0YsQ0FBQTs7WUFwWjJCLGlCQUFpQjtZQUNyQixVQUFVO1lBQ1gsZUFBZTtZQUNILFNBQVMsdUJBQXZDLElBQUksWUFBSSxRQUFRO1lBQ0EsdUJBQXVCO1lBQ2xCLGVBQWU7WUFDWCxzQkFBc0I7WUFDWCxzQkFBc0IsdUJBQTFELFFBQVE7WUFDcUIsZUFBZSx1QkFBNUMsUUFBUTs7QUE1TVg7SUFEQyxLQUFLLEVBQUU7cURBQ2lCO0FBU3pCO0lBREMsS0FBSyxFQUFFOzBEQUNzQjtBQU85QjtJQURDLEtBQUssRUFBRTtpRUFDNkI7QUFTckM7SUFEQyxLQUFLLEVBQUU7OENBT1A7QUFVRDtJQURDLEtBQUssRUFBRTtvREFDZ0I7QUFNeEI7SUFEQyxLQUFLLEVBQUU7MERBQytCO0FBTXZDO0lBREMsS0FBSyxFQUFFOzJEQUN1QjtBQU8vQjtJQURDLEtBQUssRUFBRTtzREFDa0I7QUFNMUI7SUFEQyxLQUFLLEVBQUU7eURBQzhCO0FBS3RDO0lBREMsS0FBSyxFQUFFOzBEQUN1QztBQU8vQztJQURDLEtBQUssRUFBRTtvREFnQlA7QUFVRDtJQURDLE1BQU0sRUFBRTtvREFDc0U7QUFpRC9FO0lBSkMsU0FBUyxDQUFDLDZCQUE2QixFQUFFO1FBQ3hDLElBQUksRUFBRSw2QkFBNkI7UUFDbkMsTUFBTSxFQUFFLEtBQUs7S0FDZCxDQUFDO29FQUlEO0FBVUQ7SUFKQyxTQUFTLENBQUMsMkJBQTJCLEVBQUU7UUFDdEMsSUFBSSxFQUFFLFdBQVc7UUFDakIsTUFBTSxFQUFFLElBQUk7S0FDYixDQUFDO3FFQUNrRDtBQU1wRDtJQUpDLFNBQVMsQ0FBQyxrQkFBa0IsRUFBRTtRQUM3QixJQUFJLEVBQUUsV0FBVztRQUNqQixNQUFNLEVBQUUsSUFBSTtLQUNiLENBQUM7NERBQ3lDO0FBSzNDO0lBSEMsU0FBUyxDQUFDLGVBQWUsRUFBRTtRQUMxQixJQUFJLEVBQUUsVUFBVTtLQUNqQixDQUFDOzREQUNtQztBQU1yQztJQUpDLFNBQVMsQ0FBQyx1QkFBdUIsRUFBRTtRQUNsQyxJQUFJLEVBQUUsV0FBVztRQUNqQixNQUFNLEVBQUUsSUFBSTtLQUNiLENBQUM7aUVBQzhDO0FBaE1yQyxrQkFBa0I7SUFWOUIsU0FBUyxDQUFDO1FBQ1QsUUFBUSxFQUFFLFlBQVk7UUFDdEIsMnBKQUFzQztRQUV0QyxTQUFTLEVBQUU7WUFDVCx1QkFBdUI7U0FDeEI7UUFDRCxhQUFhLEVBQUUsaUJBQWlCLENBQUMsSUFBSTtRQUNyQyxlQUFlLEVBQUUsdUJBQXVCLENBQUMsTUFBTTs7S0FDaEQsQ0FBQztJQWtORyxXQUFBLElBQUksRUFBRSxDQUFBLEVBQUUsV0FBQSxRQUFRLEVBQUUsQ0FBQTtJQUlsQixXQUFBLFFBQVEsRUFBRSxDQUFBO0lBQ1YsV0FBQSxRQUFRLEVBQUUsQ0FBQTtHQXRORixrQkFBa0IsQ0FrbUI5QjtTQWxtQlksa0JBQWtCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQWZ0ZXJWaWV3SW5pdCxcbiAgQ2hhbmdlRGV0ZWN0aW9uU3RyYXRlZ3ksXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlcixcbiAgSW5wdXQsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPcHRpb25hbCxcbiAgT3V0cHV0LFxuICBTZWxmLFxuICBUZW1wbGF0ZVJlZixcbiAgVmlld0NoaWxkLFxuICBWaWV3RW5jYXBzdWxhdGlvblxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuaW1wb3J0IHtcbiAgQ29udHJvbFZhbHVlQWNjZXNzb3IsXG4gIE5nQ29udHJvbFxufSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gIGZyb21FdmVudCBhcyBvYnNlcnZhYmxlRnJvbUV2ZW50LFxuICBTdWJqZWN0XG59IGZyb20gJ3J4anMnO1xuXG5pbXBvcnQge1xuICB0YWtlLFxuICB0YWtlVW50aWxcbn0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lBcHBXaW5kb3dSZWZcbn0gZnJvbSAnQHNreXV4L2NvcmUnO1xuXG5pbXBvcnQge1xuICBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC9mb3Jtcyc7XG5cbmltcG9ydCB7XG4gIFNreUxpYlJlc291cmNlc1NlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L2kxOG4nO1xuXG5pbXBvcnQge1xuICBTa3lUb2tlbixcbiAgU2t5VG9rZW5zTWVzc2FnZSxcbiAgU2t5VG9rZW5zTWVzc2FnZVR5cGVcbn0gZnJvbSAnQHNreXV4L2luZGljYXRvcnMnO1xuXG5pbXBvcnQge1xuICBTa3lNb2RhbEluc3RhbmNlLFxuICBTa3lNb2RhbFNlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L21vZGFscyc7XG5cbmltcG9ydCB7XG4gIFNreVRoZW1lU2VydmljZVxufSBmcm9tICdAc2t5dXgvdGhlbWUnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVNZXNzYWdlXG59IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtbWVzc2FnZSc7XG5cbmltcG9ydCB7XG4gIFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlXG59IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtbWVzc2FnZS10eXBlJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlXG59IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2VsZWN0aW9uLWNoYW5nZSc7XG5cbmltcG9ydCB7XG4gIFNreUF1dG9jb21wbGV0ZVNob3dNb3JlQXJnc1xufSBmcm9tICcuLi9hdXRvY29tcGxldGUvdHlwZXMvYXV0b2NvbXBsZXRlLXNob3ctbW9yZS1hcmdzJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmVcbn0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL2F1dG9jb21wbGV0ZS1pbnB1dC5kaXJlY3RpdmUnO1xuXG5pbXBvcnQge1xuICBTa3lMb29rdXBBdXRvY29tcGxldGVBZGFwdGVyXG59IGZyb20gJy4vbG9va3VwLWF1dG9jb21wbGV0ZS1hZGFwdGVyJztcblxuaW1wb3J0IHtcbiAgU2t5TG9va3VwQWRhcHRlclNlcnZpY2Vcbn0gZnJvbSAnLi9sb29rdXAtYWRhcHRlci5zZXJ2aWNlJztcblxuaW1wb3J0IHtcbiAgU2t5TG9va3VwQWRkQ2FsbGJhY2tBcmdzXG59IGZyb20gJy4vdHlwZXMvbG9va3VwLWFkZC1jbGljay1jYWxsYmFjay1hcmdzJztcblxuaW1wb3J0IHtcbiAgU2t5TG9va3VwQWRkQ2xpY2tFdmVudEFyZ3Ncbn0gZnJvbSAnLi90eXBlcy9sb29rdXAtYWRkLWNsaWNrLWV2ZW50LWFyZ3MnO1xuXG5pbXBvcnQge1xuICBTa3lMb29rdXBTaG93TW9yZU1vZGFsQ29tcG9uZW50XG59IGZyb20gJy4vbG9va3VwLXNob3ctbW9yZS1tb2RhbC5jb21wb25lbnQnO1xuXG5pbXBvcnQge1xuICBTa3lMb29rdXBTZWxlY3RNb2RlXG59IGZyb20gJy4vdHlwZXMvbG9va3VwLXNlbGVjdC1tb2RlJztcblxuaW1wb3J0IHtcbiAgU2t5TG9va3VwU2hvd01vcmVDb25maWdcbn0gZnJvbSAnLi90eXBlcy9sb29rdXAtc2hvdy1tb3JlLWNvbmZpZyc7XG5cbmltcG9ydCB7XG4gIFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29udGV4dFxufSBmcm9tICcuL3R5cGVzL2xvb2t1cC1zaG93LW1vcmUtbmF0aXZlLXBpY2tlci1jb250ZXh0JztcblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnc2t5LWxvb2t1cCcsXG4gIHRlbXBsYXRlVXJsOiAnLi9sb29rdXAuY29tcG9uZW50Lmh0bWwnLFxuICBzdHlsZVVybHM6IFsnLi9sb29rdXAuY29tcG9uZW50LnNjc3MnXSxcbiAgcHJvdmlkZXJzOiBbXG4gICAgU2t5TG9va3VwQWRhcHRlclNlcnZpY2VcbiAgXSxcbiAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneS5PblB1c2hcbn0pXG5leHBvcnQgY2xhc3MgU2t5TG9va3VwQ29tcG9uZW50XG4gIGV4dGVuZHMgU2t5TG9va3VwQXV0b2NvbXBsZXRlQWRhcHRlclxuICBpbXBsZW1lbnRzIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgT25EZXN0cm95LCBDb250cm9sVmFsdWVBY2Nlc3NvciB7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBBUklBIGxhYmVsIGZvciB0aGUgdHlwZWFoZWFkIHNlYXJjaCBpbnB1dFxuICAgKiBbdG8gc3VwcG9ydCBhY2Nlc3NpYmlsaXR5XShodHRwczovL2RldmVsb3Blci5ibGFja2JhdWQuY29tL3NreXV4L2xlYXJuL2FjY2Vzc2liaWxpdHkpLlxuICAgKiBJZiB0aGUgaW5wdXQgaW5jbHVkZXMgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGxlZEJ5YCBpbnN0ZWFkLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGFyaWFMYWJlbDogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIEhUTUwgZWxlbWVudCBJRCAod2l0aG91dCB0aGUgbGVhZGluZyBgI2ApIG9mIHRoZSBlbGVtZW50IHRoYXQgbGFiZWxzXG4gICAqIHRoZSB0eXBlYWhlYWQgc2VhcmNoIGlucHV0LiBUaGlzIHNldHMgdGhlIGlucHV0J3MgYGFyaWEtbGFiZWxsZWRieWAgYXR0cmlidXRlXG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSBpbnB1dCBkb2VzIG5vdCBpbmNsdWRlIGEgdmlzaWJsZSBsYWJlbCwgdXNlIGBhcmlhTGFiZWxgIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsbGVkQnk6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHRoZSB2YWx1ZSBmb3IgdGhlIGBhdXRvY29tcGxldGVgIGF0dHJpYnV0ZSBvbiB0aGUgZm9ybSBpbnB1dC5cbiAgICogQGRlZmF1bHQgXCJvZmZcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGF1dG9jb21wbGV0ZUF0dHJpYnV0ZTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgYSBkYXRhIHNvdXJjZSBmb3IgdGhlIGxvb2t1cCBjb21wb25lbnQgdG8gc2VhcmNoIHdoZW4gdXNlcnNcbiAgICogZW50ZXIgdGV4dC4gWW91IGNhbiBzcGVjaWZ5IHN0YXRpYyBkYXRhIHN1Y2ggYXMgYW4gYXJyYXkgb2Ygb2JqZWN0cywgb3JcbiAgICogeW91IGNhbiBwdWxsIGRhdGEgZnJvbSBhIGRhdGFiYXNlLlxuICAgKiBAZGVmYXVsdCBbXVxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBkYXRhKHZhbHVlOiBhbnlbXSkge1xuICAgIHRoaXMuX2RhdGEgPSB2YWx1ZTtcblxuICAgIGlmICh0aGlzLm9wZW5OYXRpdmVQaWNrZXIpIHtcbiAgICAgIHRoaXMub3Blbk5hdGl2ZVBpY2tlci5jb21wb25lbnRJbnN0YW5jZS51cGRhdGVJdGVtRGF0YSh2YWx1ZSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBkYXRhKCk6IGFueVtdIHtcbiAgICByZXR1cm4gdGhpcy5fZGF0YTtcbiAgfVxuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNhYmxlIHRoZSBsb29rdXAgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgZGlzYWJsZWQgPSBmYWxzZTtcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZW5hYmxlIHVzZXJzIHRvIG9wZW4gYSBwaWNrZXIgd2hlcmUgdGhleSBjYW4gdmlldyBhbGwgb3B0aW9ucy5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBlbmFibGVTaG93TW9yZTogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgcGxhY2Vob2xkZXIgdGV4dCB0byBkaXNwbGF5IGluIHRoZSBsb29rdXAgZmllbGQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgcGxhY2Vob2xkZXJUZXh0OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhbiBvYmplY3QgcHJvcGVydHkgdGhhdCByZXByZXNlbnRzIHRoZSBvYmplY3QncyB1bmlxdWUgaWRlbnRpZmllci5cbiAgICogU3BlY2lmeWluZyB0aGlzIHByb3BlcnR5IGVuYWJsZXMgdG9rZW4gYW5pbWF0aW9ucyBhbmQgbW9yZSBlZmZpY2llbnQgcmVuZGVyaW5nLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGlkUHJvcGVydHk6IHN0cmluZztcblxuICAvKipcbiAgICogSW5kaWNhdGVzIHdoZXRoZXIgdG8gZGlzcGxheSBhIGJ1dHRvbiB0aGF0IGxldHMgdXNlcnMgYWRkIG9wdGlvbnMgdG8gdGhlIGxpc3QuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd0FkZEJ1dHRvbjogYm9vbGVhbiA9IGZhbHNlO1xuICAvKipcbiAgICogU3BlY2lmaWVzIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgdGhlIHBpY2tlciB0aGF0IGRpc3BsYXlzIGFsbCBvcHRpb25zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNob3dNb3JlQ29uZmlnOiBTa3lMb29rdXBTaG93TW9yZUNvbmZpZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIHdoZXRoZXIgdXNlcnMgY2FuIHNlbGVjdCBvbmUgb3B0aW9uIG9yIG11bHRpcGxlIG9wdGlvbnMuXG4gICAqIEBkZWZhdWx0IFwibXVsaXRwbGVcIlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIHNldCBzZWxlY3RNb2RlKHZhbHVlOiBTa3lMb29rdXBTZWxlY3RNb2RlKSB7XG4gICAgbGV0IG11bHRpcGxlVG9TaW5nbGU6IGJvb2xlYW4gPSB2YWx1ZSA9PT0gU2t5TG9va3VwU2VsZWN0TW9kZS5zaW5nbGUgJiYgdGhpcy5zZWxlY3RNb2RlID09PSBTa3lMb29rdXBTZWxlY3RNb2RlLm11bHRpcGxlO1xuXG4gICAgdGhpcy5fc2VsZWN0TW9kZSA9IHZhbHVlO1xuICAgIHRoaXMudXBkYXRlRm9yU2VsZWN0TW9kZSgpO1xuXG4gICAgaWYgKG11bHRpcGxlVG9TaW5nbGUpIHtcbiAgICAgIGlmICh0aGlzLnZhbHVlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gMSkge1xuICAgICAgICAvLyBUaGUgYHNldFRpbWVvdXRgIGlzIG5lZWRlZCB0byBhdm9pZCBhIGBFeHByZXNzaW9uQ2hhbmdlZEFmdGVySXRIYXNCZWVuQ2hlY2tlZEVycm9yYCBlcnJvciBpbiB0ZW1wbGF0ZSBmb3Jtcy5cbiAgICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgdGhpcy53cml0ZVZhbHVlKFt0aGlzLnZhbHVlWzBdXSk7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgc2VsZWN0TW9kZSgpOiBTa3lMb29rdXBTZWxlY3RNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5fc2VsZWN0TW9kZSB8fCBTa3lMb29rdXBTZWxlY3RNb2RlLm11bHRpcGxlO1xuICB9XG5cbiAgLyoqXG4gICAqIEZpcmVzIHdoZW4gdXNlcnMgc2VsZWN0IHRoZSBidXR0b24gdG8gYWRkIG9wdGlvbnMgdG8gdGhlIGxpc3QuXG4gICAqL1xuICBAT3V0cHV0KClcbiAgcHVibGljIGFkZENsaWNrOiBFdmVudEVtaXR0ZXI8U2t5TG9va3VwQWRkQ2xpY2tFdmVudEFyZ3M+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG4gIHB1YmxpYyBnZXQgdG9rZW5zKCk6IFNreVRva2VuW10ge1xuICAgIHJldHVybiB0aGlzLl90b2tlbnM7XG4gIH1cblxuICBwdWJsaWMgc2V0IHRva2Vucyh2YWx1ZTogU2t5VG9rZW5bXSkge1xuICAgIC8vIENvbGxhcHNlIHRoZSB0b2tlbnMgaW50byBhIHNpbmdsZSB0b2tlbiBpZiB0aGUgdXNlciBoYXMgc2VsZWN0ZWQgbWFueSBvcHRpb25zLlxuICAgIGlmICh0aGlzLmVuYWJsZVNob3dNb3JlICYmIHRoaXMudmFsdWUubGVuZ3RoID4gNSkge1xuICAgICAgdGhpcy5yZXNvdXJjZXNTZXJ2aWNlLmdldFN0cmluZyhcbiAgICAgICAgJ3NreXV4X2xvb2t1cF90b2tlbnNfc3VtbWFyeScsXG4gICAgICAgIHRoaXMudmFsdWUubGVuZ3RoLnRvU3RyaW5nKClcbiAgICAgIClcbiAgICAgICAgLnBpcGUodGFrZSgxKSlcbiAgICAgICAgLnN1YnNjcmliZSgobGFiZWwpID0+IHtcbiAgICAgICAgICB0aGlzLl90b2tlbnMgPSBbe1xuICAgICAgICAgICAgdmFsdWU6IHsgW3RoaXMuZGVzY3JpcHRvclByb3BlcnR5XTogbGFiZWwgfVxuICAgICAgICAgIH1dO1xuICAgICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLl90b2tlbnMgPSB2YWx1ZTtcbiAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCB2YWx1ZSgpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuX3ZhbHVlID8gdGhpcy5fdmFsdWUgOiBbXTtcbiAgfVxuXG4gIHB1YmxpYyBzZXQgdmFsdWUobmV3VmFsdWU6IGFueVtdKSB7XG4gICAgdGhpcy5fdmFsdWUgPSBuZXdWYWx1ZTtcblxuICAgIGlmICghdGhpcy5vcGVuTmF0aXZlUGlja2VyKSB7XG4gICAgICB0aGlzLnRva2VucyA9IHRoaXMucGFyc2VUb2tlbnMobmV3VmFsdWUpO1xuICAgIH1cblxuICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBwdWJsaWMgYXV0b2NvbXBsZXRlQ29udHJvbGxlciA9IG5ldyBTdWJqZWN0PFNreUF1dG9jb21wbGV0ZU1lc3NhZ2U+KCk7XG4gIHB1YmxpYyBpc0lucHV0Rm9jdXNlZCA9IGZhbHNlO1xuICBwdWJsaWMgdG9rZW5zQ29udHJvbGxlciA9IG5ldyBTdWJqZWN0PFNreVRva2Vuc01lc3NhZ2U+KCk7XG5cbiAgQFZpZXdDaGlsZChTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSwge1xuICAgIHJlYWQ6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLFxuICAgIHN0YXRpYzogZmFsc2VcbiAgfSlcbiAgcHJpdmF0ZSBzZXQgYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUodmFsdWU6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKSB7XG4gICAgdGhpcy5fYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUgPSB2YWx1ZTtcbiAgICB0aGlzLnVwZGF0ZUZvclNlbGVjdE1vZGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZ2V0IGF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKCk6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlIHtcbiAgICByZXR1cm4gdGhpcy5fYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU7XG4gIH1cblxuICBAVmlld0NoaWxkKCdzaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZVxuICB9KVxuICBwcml2YXRlIHNob3dNb3JlQnV0dG9uVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgQFZpZXdDaGlsZCgnaW5wdXRUZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWVcbiAgfSlcbiAgcHJpdmF0ZSBpbnB1dFRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ2xvb2t1cFdyYXBwZXInLCB7XG4gICAgcmVhZDogRWxlbWVudFJlZlxuICB9KVxuICBwcml2YXRlIGxvb2t1cFdyYXBwZXJSZWY6IEVsZW1lbnRSZWY7XG5cbiAgQFZpZXdDaGlsZCgnc2VhcmNoSWNvblRlbXBsYXRlUmVmJywge1xuICAgIHJlYWQ6IFRlbXBsYXRlUmVmLFxuICAgIHN0YXRpYzogdHJ1ZVxuICB9KVxuICBwcml2YXRlIHNlYXJjaEljb25UZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBwcml2YXRlIG5nVW5zdWJzY3JpYmUgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIGlkbGUgPSBuZXcgU3ViamVjdCgpO1xuICBwcml2YXRlIG1hcmtGb3JUb2tlbkZvY3VzT25LZXlVcCA9IGZhbHNlO1xuICBwcml2YXRlIG9wZW5OYXRpdmVQaWNrZXI6IFNreU1vZGFsSW5zdGFuY2U7XG5cbiAgcHJpdmF0ZSBfYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmU6IFNreUF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlO1xuICBwcml2YXRlIF9kYXRhOiBhbnlbXTtcbiAgcHJpdmF0ZSBfc2VsZWN0TW9kZTogU2t5TG9va3VwU2VsZWN0TW9kZTtcbiAgcHJpdmF0ZSBfdG9rZW5zOiBTa3lUb2tlbltdO1xuICBwcml2YXRlIF92YWx1ZTogYW55W107XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBjaGFuZ2VEZXRlY3RvcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmLFxuICAgIHByaXZhdGUgd2luZG93UmVmOiBTa3lBcHBXaW5kb3dSZWYsXG4gICAgQFNlbGYoKSBAT3B0aW9uYWwoKSBuZ0NvbnRyb2w6IE5nQ29udHJvbCxcbiAgICBwcml2YXRlIGFkYXB0ZXI6IFNreUxvb2t1cEFkYXB0ZXJTZXJ2aWNlLFxuICAgIHByaXZhdGUgbW9kYWxTZXJ2aWNlOiBTa3lNb2RhbFNlcnZpY2UsXG4gICAgcHJpdmF0ZSByZXNvdXJjZXNTZXJ2aWNlOiBTa3lMaWJSZXNvdXJjZXNTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyBpbnB1dEJveEhvc3RTdmM/OiBTa3lJbnB1dEJveEhvc3RTZXJ2aWNlLFxuICAgIEBPcHRpb25hbCgpIHB1YmxpYyB0aGVtZVN2Yz86IFNreVRoZW1lU2VydmljZVxuICApIHtcbiAgICBzdXBlcigpO1xuICAgIG5nQ29udHJvbC52YWx1ZUFjY2Vzc29yID0gdGhpcztcbiAgfVxuXG4gIHB1YmxpYyBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5pbnB1dEJveEhvc3RTdmMpIHtcbiAgICAgIHRoaXMuaW5wdXRCb3hIb3N0U3ZjLnBvcHVsYXRlKFxuICAgICAgICB7XG4gICAgICAgICAgaW5wdXRUZW1wbGF0ZTogdGhpcy5pbnB1dFRlbXBsYXRlUmVmLFxuICAgICAgICAgIGJ1dHRvbnNUZW1wbGF0ZTogdGhpcy5lbmFibGVTaG93TW9yZSA/IHRoaXMuc2hvd01vcmVCdXR0b25UZW1wbGF0ZVJlZiA6IHVuZGVmaW5lZCxcbiAgICAgICAgICBpY29uc0luc2V0VGVtcGxhdGU6IHRoaXMuZW5hYmxlU2hvd01vcmUgPyB1bmRlZmluZWQgOiB0aGlzLnNlYXJjaEljb25UZW1wbGF0ZVJlZlxuICAgICAgICB9XG4gICAgICApO1xuICAgIH1cblxuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMudGhlbWVTdmMpIHtcbiAgICAgIC8vIFRoaXMgaXMgcmVxdWlyZWQgZm9yIHRoZSBhdXRvY29tcGxldGUgZGlyZWN0aXZlIHRvIGJlIHNldCBhZnRlciBlbGVtZW50c1xuICAgICAgLy8gYXJlIHJlYXJyYW5nZWQgd2hlbiBzd2l0Y2hpbmcgdGhlbWVzLlxuICAgICAgdGhpcy50aGVtZVN2Yz8uc2V0dGluZ3NDaGFuZ2VcbiAgICAgICAgLnBpcGUoXG4gICAgICAgICAgdGFrZVVudGlsKHRoaXMubmdVbnN1YnNjcmliZSlcbiAgICAgICAgKVxuICAgICAgICAuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuICAgIGlmICghdGhpcy5kaXNhYmxlZCkge1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBuZ09uRGVzdHJveSgpOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLm5leHQoKTtcbiAgICB0aGlzLm5nVW5zdWJzY3JpYmUuY29tcGxldGUoKTtcbiAgICB0aGlzLnRva2Vuc0NvbnRyb2xsZXIuY29tcGxldGUoKTtcbiAgfVxuXG4gIHB1YmxpYyBhZGRCdXR0b25DbGlja2VkKCk6IHZvaWQge1xuICAgIHRoaXMuYWRkQ2xpY2suZW1pdCh7IGl0ZW1BZGRlZDogKGFyZ3M6IFNreUxvb2t1cEFkZENhbGxiYWNrQXJncykgPT4gdGhpcy5vbkFkZEJ1dHRvbkNvbXBsZXRlKGFyZ3MpIH0pO1xuICB9XG5cbiAgcHVibGljIG9uQXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlKGNoYW5nZTogU2t5QXV0b2NvbXBsZXRlU2VsZWN0aW9uQ2hhbmdlKTogdm9pZCB7XG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAoY2hhbmdlLnNlbGVjdGVkSXRlbSkge1xuICAgICAgdGhpcy5hZGRUb1NlbGVjdGVkKGNoYW5nZS5zZWxlY3RlZEl0ZW0pO1xuICAgIH0gZWxzZSBpZiAodGhpcy5zZWxlY3RNb2RlID09PSBTa3lMb29rdXBTZWxlY3RNb2RlLnNpbmdsZSkge1xuICAgICAgdGhpcy53cml0ZVZhbHVlKFtdKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25BdXRvY29tcGxldGVCbHVyKCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkKCk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNDaGFuZ2UoY2hhbmdlOiBTa3lUb2tlbltdKTogdm9pZCB7XG4gICAgaWYgKCFjaGFuZ2UpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICBpZiAodGhpcy50b2tlbnMgIT09IGNoYW5nZSkge1xuICAgICAgaWYgKGNoYW5nZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICB9XG5cbiAgICAgIC8vIE5PVEU6IFdlIGRvIHRoaXMgaGVyZSBpbnN0ZWFkIG9mIGp1c3QgdXNpbmcgdGhlIGB2YWx1ZWAgc2V0dGVyIGJlY2F1c2Ugd2UgbmVlZCB0byB1c2UgdGhlXG4gICAgICAvLyBzZXQgb2YgdG9rZW5zIHJldHVybmVkIGhlcmUgZm9yIHRoZSBwdXJwb3NlcyBvZiBzZXR0aW5nIGZvY3VzIChzZWUgYG9uVG9rZW5zS2V5VXBgKS5cbiAgICAgIHRoaXMuX3ZhbHVlID0gY2hhbmdlLm1hcCh0b2tlbiA9PiB7IHJldHVybiB0b2tlbi52YWx1ZTsgfSk7XG4gICAgICB0aGlzLnRva2VucyA9IGNoYW5nZTtcblxuICAgICAgdGhpcy5vbkNoYW5nZSh0aGlzLl92YWx1ZSk7XG4gICAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblRva2Vuc0ZvY3VzSW5kZXhPdmVyUmFuZ2UoKTogdm9pZCB7XG4gICAgdGhpcy53aW5kb3dSZWYubmF0aXZlV2luZG93LnNldFRpbWVvdXQoKCkgPT4ge1xuICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNLZXlVcChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSAhPT0gJ3NpbmdsZScpIHtcbiAgICAgIC8qIHRzbGludDpkaXNhYmxlLW5leHQtbGluZTpzd2l0Y2gtZGVmYXVsdCAqL1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgICB0aGlzLnNlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLlJlbW92ZUFjdGl2ZVRva2VuKTtcbiAgICAgICAgICB0aGlzLnNlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLkZvY3VzUHJldmlvdXNUb2tlbik7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlICdEZWwnOlxuICAgICAgICBjYXNlICdEZWxldGUnOlxuICAgICAgICAgIHRoaXMuc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuUmVtb3ZlQWN0aXZlVG9rZW4pO1xuICAgICAgICAgIHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICAgIHRoaXMuc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuRm9jdXNBY3RpdmVUb2tlbik7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgd3JpdGVWYWx1ZSh2YWx1ZTogYW55W10pOiB2b2lkIHtcbiAgICB0aGlzLnZhbHVlID0gdmFsdWUgPyB2YWx1ZSA6IFtdO1xuICAgIHRoaXMudXBkYXRlRm9yU2VsZWN0TW9kZSgpO1xuICB9XG5cbiAgLy8gQW5ndWxhciBhdXRvbWF0aWNhbGx5IGNvbnN0cnVjdHMgdGhlc2UgbWV0aG9kcy5cbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcHVibGljIG9uQ2hhbmdlID0gKHZhbHVlOiBhbnlbXSkgPT4geyB9O1xuICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICBwdWJsaWMgb25Ub3VjaGVkID0gKCkgPT4geyB9O1xuXG4gIHB1YmxpYyByZWdpc3Rlck9uQ2hhbmdlKGZuOiAodmFsdWU6IGFueSkgPT4gdm9pZCkge1xuICAgIHRoaXMub25DaGFuZ2UgPSBmbjtcbiAgfVxuXG4gIHB1YmxpYyByZWdpc3Rlck9uVG91Y2hlZChmbjogKCkgPT4gdm9pZCk6IHZvaWQge1xuICAgIHRoaXMub25Ub3VjaGVkID0gZm47XG4gIH1cblxuICAvLyBBbGxvd3MgQW5ndWxhciB0byBkaXNhYmxlIHRoZSBpbnB1dC5cbiAgcHVibGljIHNldERpc2FibGVkU3RhdGUoZGlzYWJsZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICB0aGlzLnJlbW92ZUV2ZW50TGlzdGVuZXJzKCk7XG5cbiAgICBpZiAoIWRpc2FibGVkKSB7XG4gICAgICB0aGlzLmFkZEV2ZW50TGlzdGVuZXJzKCk7XG4gICAgfVxuXG4gICAgdGhpcy5kaXNhYmxlZCA9IGRpc2FibGVkO1xuICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gIH1cblxuICBwdWJsaWMgY2xlYXJTZWFyY2hUZXh0KCk6IHZvaWQge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUudmFsdWUgPSB1bmRlZmluZWQ7XG4gICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS5pbnB1dFRleHRWYWx1ZSA9IHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8vIEhhbmRsZXMgd2hlbiB0byBmb2N1cyBvbiB0aGUgdG9rZW5zLlxuICAvLyBDaGVjayBmb3IgZW1wdHkgc2VhcmNoIHRleHQgb24ga2V5ZG93biwgYmVmb3JlIHRoZSBlc2NhcGUga2V5IGlzIGZ1bGx5IHByZXNzZWQuXG4gIC8vIChPdGhlcndpc2UsIGEgc2luZ2xlIGNoYXJhY3RlciBiZWluZyBlc2NhcGVkIHdvdWxkIHJlZ2lzdGVyIGFzIGVtcHR5IG9uIGtleXVwLilcbiAgLy8gSWYgZW1wdHkgb24ga2V5ZG93biwgc2V0IGEgZmxhZyBzbyB0aGF0IHRoZSBhcHByb3ByaWF0ZSBhY3Rpb24gY2FuIGJlIHRha2VuIG9uIGtleXVwLlxuICBwdWJsaWMgaW5wdXRLZXlkb3duKGV2ZW50OiBLZXlib2FyZEV2ZW50LCB2YWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrIGFzIHRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gaW4gbXVsdGlwbGUgc2VsZWN0IG1vZGUgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlICdFbnRlcic6XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgaWYgKHZhbHVlKSB7XG4gICAgICAgICAgICB0aGlzLm1hcmtGb3JUb2tlbkZvY3VzT25LZXlVcCA9IGZhbHNlO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICB0aGlzLm1hcmtGb3JUb2tlbkZvY3VzT25LZXlVcCA9IHRydWU7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBpbnB1dEtleXVwKGV2ZW50OiBLZXlib2FyZEV2ZW50KTogdm9pZCB7XG4gICAgLyogU2FuaXR5IGNoZWNrIGFzIHRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHdoZW4gaW4gbXVsdGlwbGUgc2VsZWN0IG1vZGUgKi9cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICBzd2l0Y2ggKGV2ZW50LmtleSkge1xuICAgICAgICBjYXNlICdFc2MnOlxuICAgICAgICBjYXNlICdFc2NhcGUnOlxuICAgICAgICAgIHRoaXMuY2xlYXJTZWFyY2hUZXh0KCk7XG4gICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnQXJyb3dMZWZ0JzpcbiAgICAgICAgY2FzZSAnQmFja3NwYWNlJzpcbiAgICAgICAgY2FzZSAnTGVmdCc6XG4gICAgICAgICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICAgICAgICBpZiAodGhpcy5tYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXApIHtcbiAgICAgICAgICAgIHRoaXMuc2VuZFRva2Vuc01lc3NhZ2UoU2t5VG9rZW5zTWVzc2FnZVR5cGUuRm9jdXNMYXN0VG9rZW4pO1xuICAgICAgICAgICAgZXZlbnQucHJldmVudERlZmF1bHQoKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICB9XG5cbiAgICAgIGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBvblNlYXJjaEJ1dHRvbkNsaWNrKCk6IHZvaWQge1xuICAgIHRoaXMuc2VuZEF1dG9jb21wbGV0ZU1lc3NhZ2UoU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGUuQ2xvc2VEcm9wZG93bik7XG5cbiAgICBsZXQgaXNWYWx1ZUluVGV4dEJveCA9IGZhbHNlO1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09IFNreUxvb2t1cFNlbGVjdE1vZGUuc2luZ2xlKSB7XG4gICAgICBpc1ZhbHVlSW5UZXh0Qm94ID0gdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS5pbnB1dFRleHRWYWx1ZSA9PT0gdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS52YWx1ZVt0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eV07XG4gICAgfVxuXG4gICAgdGhpcy5vcGVuUGlja2VyKGlzVmFsdWVJblRleHRCb3ggPyAnJyA6IHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUuaW5wdXRUZXh0VmFsdWUpO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUucmVzdG9yZUlucHV0VGV4dFZhbHVlVG9QcmV2aW91c1N0YXRlKCk7XG4gIH1cblxuICBwdWJsaWMgb25TaG93TW9yZUNsaWNrKGV2ZW50OiBTa3lBdXRvY29tcGxldGVTaG93TW9yZUFyZ3MpOiB2b2lkIHtcbiAgICB0aGlzLm9wZW5QaWNrZXIoZXZlbnQ/LmlucHV0VmFsdWUpO1xuICB9XG5cbiAgcHVibGljIG9wZW5QaWNrZXIoaW5pdGlhbFNlYXJjaDogc3RyaW5nKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuc2hvd01vcmVDb25maWc/LmN1c3RvbVBpY2tlcikge1xuICAgICAgdGhpcy5zaG93TW9yZUNvbmZpZy5jdXN0b21QaWNrZXIub3Blbih7XG4gICAgICAgIGl0ZW1zOiB0aGlzLmRhdGEsXG4gICAgICAgIGluaXRpYWxTZWFyY2g6IGluaXRpYWxTZWFyY2gsXG4gICAgICAgIGluaXRpYWxWYWx1ZTogdGhpcy52YWx1ZVxuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGxldCBpbml0aWFsVmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgY29uc3QgbW9kYWxDb25maWcgPSB0aGlzLnNob3dNb3JlQ29uZmlnPy5uYXRpdmVQaWNrZXJDb25maWcgfHwge307XG4gICAgICBpZiAoIW1vZGFsQ29uZmlnLml0ZW1UZW1wbGF0ZSkge1xuICAgICAgICBtb2RhbENvbmZpZy5pdGVtVGVtcGxhdGUgPSB0aGlzLnNlYXJjaFJlc3VsdFRlbXBsYXRlO1xuICAgICAgfVxuXG4gICAgICBsZXQgY29udGV4dDogU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0ID0ge1xuICAgICAgICBpdGVtczogdGhpcy5kYXRhLFxuICAgICAgICBkZXNjcmlwdG9yUHJvcGVydHk6IHRoaXMuZGVzY3JpcHRvclByb3BlcnR5LFxuICAgICAgICBpbml0aWFsU2VhcmNoOiBpbml0aWFsU2VhcmNoLFxuICAgICAgICBpbml0aWFsVmFsdWU6IGluaXRpYWxWYWx1ZSxcbiAgICAgICAgc2VhcmNoOiB0aGlzLnNlYXJjaCxcbiAgICAgICAgc2VsZWN0TW9kZTogdGhpcy5zZWxlY3RNb2RlLFxuICAgICAgICBzaG93QWRkQnV0dG9uOiB0aGlzLnNob3dBZGRCdXR0b24sXG4gICAgICAgIHVzZXJDb25maWc6IG1vZGFsQ29uZmlnXG4gICAgICB9O1xuXG4gICAgICB0aGlzLm9wZW5OYXRpdmVQaWNrZXIgPSB0aGlzLm1vZGFsU2VydmljZS5vcGVuKFNreUxvb2t1cFNob3dNb3JlTW9kYWxDb21wb25lbnQsIHtcbiAgICAgICAgcHJvdmlkZXJzOiBbXG4gICAgICAgICAge1xuICAgICAgICAgICAgcHJvdmlkZTogU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0LCB1c2VWYWx1ZTogY29udGV4dFxuICAgICAgICAgIH1cbiAgICAgICAgXVxuICAgICAgfSk7XG5cbiAgICAgIHRoaXMub3Blbk5hdGl2ZVBpY2tlci5jb21wb25lbnRJbnN0YW5jZS5hZGRDbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICB0aGlzLmFkZEJ1dHRvbkNsaWNrZWQoKTtcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm9wZW5OYXRpdmVQaWNrZXIuY2xvc2VkLnN1YnNjcmliZShjbG9zZUFyZ3MgPT4ge1xuICAgICAgICB0aGlzLm9wZW5OYXRpdmVQaWNrZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChjbG9zZUFyZ3MucmVhc29uID09PSAnc2F2ZScpIHtcbiAgICAgICAgICBsZXQgc2VsZWN0ZWRJdGVtczogYW55W10gPSBbXTtcblxuICAgICAgICAgIHRoaXMuZGF0YS5mb3JFYWNoKChpdGVtOiBhbnksIGRhdGFJbmRleDogbnVtYmVyKSA9PiB7XG4gICAgICAgICAgICBpZiAoY2xvc2VBcmdzLmRhdGEuc29tZSgoc2F2ZWRJdGVtOiBhbnkpID0+IHtcbiAgICAgICAgICAgICAgcmV0dXJuIHNhdmVkSXRlbS5pbmRleCA9PT0gZGF0YUluZGV4O1xuICAgICAgICAgICAgfSkpIHtcbiAgICAgICAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH0pO1xuXG4gICAgICAgICAgdGhpcy53cml0ZVZhbHVlKHNlbGVjdGVkSXRlbXMpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShpbml0aWFsVmFsdWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5mb2N1c0lucHV0KCk7XG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFkZFRvU2VsZWN0ZWQoaXRlbTogYW55KTogdm9pZCB7XG4gICAgbGV0IHNlbGVjdGVkSXRlbXM6IGFueVtdO1xuXG4gICAgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgIHNlbGVjdGVkSXRlbXMgPSBbaXRlbV07XG4gICAgfSBlbHNlIHtcbiAgICAgIHNlbGVjdGVkSXRlbXMgPSB0aGlzLnZhbHVlO1xuXG4gICAgICAvLyBJZiBpdGVtcyBoYXZlIGEgdW5pcXVlIGlkZW50aWZpZXIsIGRvbid0IGFsbG93IHRoZSBzYW1lIGl0ZW0gdG8gYmUgYWRkZWQgdHdpY2UuXG4gICAgICBpZiAoXG4gICAgICAgICF0aGlzLmlkUHJvcGVydHkgfHxcbiAgICAgICAgIXRoaXMudmFsdWUuc29tZShcbiAgICAgICAgICBleGlzdGluZ0l0ZW0gPT4gZXhpc3RpbmdJdGVtW3RoaXMuaWRQcm9wZXJ0eV0gPT09IGl0ZW1bdGhpcy5pZFByb3BlcnR5XVxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgc2VsZWN0ZWRJdGVtcy5wdXNoKGl0ZW0pO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmNsZWFyU2VhcmNoVGV4dCgpO1xuICAgIH1cblxuICAgIHRoaXMud3JpdGVWYWx1ZShzZWxlY3RlZEl0ZW1zKTtcbiAgfVxuXG4gIHByaXZhdGUgYWRkRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5pZGxlID0gbmV3IFN1YmplY3QoKTtcbiAgICB0aGlzLmZvY3VzSW5wdXRPbkhvc3RDbGljaygpO1xuICB9XG5cbiAgcHJpdmF0ZSByZW1vdmVFdmVudExpc3RlbmVycygpOiB2b2lkIHtcbiAgICB0aGlzLmlkbGUubmV4dCgpO1xuICAgIHRoaXMuaWRsZS5jb21wbGV0ZSgpO1xuICB9XG5cbiAgcHJpdmF0ZSBmb2N1c0lucHV0T25Ib3N0Q2xpY2soKTogdm9pZCB7XG4gICAgbGV0IGhvc3RFbGVtZW50ID0gIXRoaXMuaW5wdXRCb3hIb3N0U3ZjID8gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgOiB0aGlzLmxvb2t1cFdyYXBwZXJSZWYubmF0aXZlRWxlbWVudDtcbiAgICBjb25zdCBkb2N1bWVudE9iaiA9IHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5kb2N1bWVudDtcblxuICAgIC8vIEhhbmRsZXMgZm9jdXNpbmcgdGhlIGlucHV0IHdoZW4gdGhlIGhvc3QgaXMgY2xpY2tlZC5cbiAgICAvLyBUaGUgaW5wdXQgc2hvdWxkIE5PVCBiZSBmb2N1c2VkIGlmIG90aGVyIGVsZW1lbnRzICh0b2tlbnMsIGV0Yy4pXG4gICAgLy8gYXJlIGN1cnJlbnRseSBmb2N1c2VkIG9yIGJlaW5nIHRhYmJlZCB0aHJvdWdoLlxuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChkb2N1bWVudE9iaiwgJ21vdXNlZG93bicpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5pZGxlKSlcbiAgICAgIC5zdWJzY3JpYmUoKGV2ZW50OiBNb3VzZUV2ZW50KSA9PiB7XG4gICAgICAgIGhvc3RFbGVtZW50ID0gIXRoaXMuaW5wdXRCb3hIb3N0U3ZjID8gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQgOiB0aGlzLmxvb2t1cFdyYXBwZXJSZWYubmF0aXZlRWxlbWVudDtcbiAgICAgICAgdGhpcy5pc0lucHV0Rm9jdXNlZCA9IGhvc3RFbGVtZW50LmNvbnRhaW5zKGV2ZW50LnRhcmdldCk7XG5cbiAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgIH0pO1xuXG4gICAgb2JzZXJ2YWJsZUZyb21FdmVudChkb2N1bWVudE9iaiwgJ2ZvY3VzaW4nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuaWRsZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogS2V5Ym9hcmRFdmVudCkgPT4ge1xuICAgICAgICBob3N0RWxlbWVudCA9ICF0aGlzLmlucHV0Qm94SG9zdFN2YyA/IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IDogdGhpcy5sb29rdXBXcmFwcGVyUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSBob3N0RWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoaG9zdEVsZW1lbnQsICdtb3VzZXVwJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmlkbGUpKVxuICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgIGNvbnN0IGNsYXNzTGlzdCA9IGRvY3VtZW50T2JqLmFjdGl2ZUVsZW1lbnQuY2xhc3NMaXN0O1xuICAgICAgICBpZiAoIWNsYXNzTGlzdCB8fCAhY2xhc3NMaXN0LmNvbnRhaW5zKCdza3ktdG9rZW4nKSkge1xuICAgICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNJbnB1dCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkYXB0ZXIuZm9jdXNJbnB1dCh0aGlzLmxvb2t1cFdyYXBwZXJSZWYpO1xuICB9XG5cbiAgcHJpdmF0ZSBvbkFkZEJ1dHRvbkNvbXBsZXRlKGFyZ3M6IFNreUxvb2t1cEFkZENhbGxiYWNrQXJncykge1xuICAgIGlmIChhcmdzLmRhdGEpIHtcbiAgICAgIHRoaXMuZGF0YSA9IGFyZ3MuZGF0YTtcbiAgICB9XG5cbiAgICBpZiAodGhpcy5kYXRhLmluZGV4T2YoYXJncy5pdGVtKSA+PSAwKSB7XG4gICAgICBpZiAodGhpcy5vcGVuTmF0aXZlUGlja2VyKSB7XG4gICAgICAgICg8U2t5TG9va3VwU2hvd01vcmVNb2RhbENvbXBvbmVudD50aGlzLm9wZW5OYXRpdmVQaWNrZXIuY29tcG9uZW50SW5zdGFuY2UpXG4gICAgICAgICAgLm9uSXRlbVNlbGVjdCh0cnVlLCB7IHZhbHVlOiBhcmdzLml0ZW0sIHNlbGVjdGVkOiBmYWxzZSB9KTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxldCBuZXdWYWx1ZSA9IHRoaXMudmFsdWU7XG4gICAgICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09IFNreUxvb2t1cFNlbGVjdE1vZGUubXVsdGlwbGUpIHtcbiAgICAgICAgICBuZXdWYWx1ZSA9IHRoaXMudmFsdWUuY29uY2F0KGFyZ3MuaXRlbSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSBbYXJncy5pdGVtXTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLndyaXRlVmFsdWUobmV3VmFsdWUpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgcGFyc2VUb2tlbnMoZGF0YTogYW55W10pOiBTa3lUb2tlbltdIHtcbiAgICByZXR1cm4gZGF0YS5tYXAoKGl0ZW06IGFueSkgPT4ge1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgdmFsdWU6IGl0ZW1cbiAgICAgIH07XG4gICAgfSk7XG4gIH1cblxuICBwcml2YXRlIHNlbmRBdXRvY29tcGxldGVNZXNzYWdlKHR5cGU6IFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlKTogdm9pZCB7XG4gICAgdGhpcy5hdXRvY29tcGxldGVDb250cm9sbGVyLm5leHQoeyB0eXBlIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZW5kVG9rZW5zTWVzc2FnZSh0eXBlOiBTa3lUb2tlbnNNZXNzYWdlVHlwZSk6IHZvaWQge1xuICAgIHRoaXMudG9rZW5zQ29udHJvbGxlci5uZXh0KHsgdHlwZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgdXBkYXRlRm9yU2VsZWN0TW9kZSgpOiB2b2lkIHtcbiAgICBpZiAodGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSkge1xuICAgICAgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gJ3NpbmdsZScpIHtcbiAgICAgICAgdGhpcy5hdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZS52YWx1ZSA9IHRoaXMudmFsdWUgJiZcbiAgICAgICAgICB0aGlzLnZhbHVlWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhpcy5jbGVhclNlYXJjaFRleHQoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
562
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9va3VwLmNvbXBvbmVudC5qcyIsInNvdXJjZVJvb3QiOiJuZzovL0Bza3l1eC9sb29rdXAvIiwic291cmNlcyI6WyJtb2R1bGVzL2xvb2t1cC9sb29rdXAuY29tcG9uZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsYUFBYSxFQUNiLHVCQUF1QixFQUN2QixpQkFBaUIsRUFDakIsU0FBUyxFQUNULFVBQVUsRUFDVixZQUFZLEVBQ1osS0FBSyxFQUNMLFNBQVMsRUFDVCxNQUFNLEVBQ04sUUFBUSxFQUNSLE1BQU0sRUFDTixJQUFJLEVBQ0osV0FBVyxFQUNYLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFFdkIsT0FBTyxFQUNMLG9CQUFvQixFQUNwQixTQUFTLEVBQ1YsTUFBTSxnQkFBZ0IsQ0FBQztBQUV4QixPQUFPLEVBQ0wsU0FBUyxJQUFJLG1CQUFtQixFQUNoQyxPQUFPLEVBQ1IsTUFBTSxNQUFNLENBQUM7QUFFZCxPQUFPLEVBQ0wsSUFBSSxFQUNKLFNBQVMsRUFDVixNQUFNLGdCQUFnQixDQUFDO0FBRXhCLE9BQU8sRUFDTCxlQUFlLEVBQ2hCLE1BQU0sYUFBYSxDQUFDO0FBRXJCLE9BQU8sRUFDTCxzQkFBc0IsRUFDdkIsTUFBTSxjQUFjLENBQUM7QUFFdEIsT0FBTyxFQUNMLHNCQUFzQixFQUN2QixNQUFNLGFBQWEsQ0FBQztBQUVyQixPQUFPLEVBR0wsb0JBQW9CLEVBQ3JCLE1BQU0sbUJBQW1CLENBQUM7QUFFM0IsT0FBTyxFQUNMLGdCQUFnQixFQUNoQixlQUFlLEVBQ2hCLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFDTCxlQUFlLEVBQ2hCLE1BQU0sY0FBYyxDQUFDO0FBTXRCLE9BQU8sRUFDTCwwQkFBMEIsRUFDM0IsTUFBTSxpREFBaUQsQ0FBQztBQVV6RCxPQUFPLEVBQ0wsNkJBQTZCLEVBQzlCLE1BQU0sOENBQThDLENBQUM7QUFFdEQsT0FBTyxFQUNMLDRCQUE0QixF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M0M7SUFIQyxTQUFTLENBQUMsZUFBZSxFQUFFO1FBQzFCLElBQUksRUFBRSxVQUFVO0tBQ2pCLENBQUM7NERBQ21DO0FBTXJDO0lBSkMsU0FBUyxDQUFDLHVCQUF1QixFQUFFO1FBQ2xDLElBQUksRUFBRSxXQUFXO1FBQ2pCLE1BQU0sRUFBRSxJQUFJO0tBQ2IsQ0FBQztpRUFDOEM7QUF0TXJDLGtCQUFrQjtJQVY5QixTQUFTLENBQUM7UUFDVCxRQUFRLEVBQUUsWUFBWTtRQUN0Qix1MUpBQXNDO1FBRXRDLFNBQVMsRUFBRTtZQUNULHVCQUF1QjtTQUN4QjtRQUNELGFBQWEsRUFBRSxpQkFBaUIsQ0FBQyxJQUFJO1FBQ3JDLGVBQWUsRUFBRSx1QkFBdUIsQ0FBQyxNQUFNOztLQUNoRCxDQUFDO0lBd05HLFdBQUEsSUFBSSxFQUFFLENBQUEsRUFBRSxXQUFBLFFBQVEsRUFBRSxDQUFBO0lBSWxCLFdBQUEsUUFBUSxFQUFFLENBQUE7SUFDVixXQUFBLFFBQVEsRUFBRSxDQUFBO0dBNU5GLGtCQUFrQixDQTZtQjlCO1NBN21CWSxrQkFBa0IiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3Rpb25TdHJhdGVneSxcbiAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gIENvbXBvbmVudCxcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLFxuICBJbnB1dCxcbiAgT25EZXN0cm95LFxuICBPbkluaXQsXG4gIE9wdGlvbmFsLFxuICBPdXRwdXQsXG4gIFNlbGYsXG4gIFRlbXBsYXRlUmVmLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuXG5pbXBvcnQge1xuICBDb250cm9sVmFsdWVBY2Nlc3NvcixcbiAgTmdDb250cm9sXG59IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgZnJvbUV2ZW50IGFzIG9ic2VydmFibGVGcm9tRXZlbnQsXG4gIFN1YmplY3Rcbn0gZnJvbSAncnhqcyc7XG5cbmltcG9ydCB7XG4gIHRha2UsXG4gIHRha2VVbnRpbFxufSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFNreUFwcFdpbmRvd1JlZlxufSBmcm9tICdAc2t5dXgvY29yZSc7XG5cbmltcG9ydCB7XG4gIFNreUlucHV0Qm94SG9zdFNlcnZpY2Vcbn0gZnJvbSAnQHNreXV4L2Zvcm1zJztcblxuaW1wb3J0IHtcbiAgU2t5TGliUmVzb3VyY2VzU2VydmljZVxufSBmcm9tICdAc2t5dXgvaTE4bic7XG5cbmltcG9ydCB7XG4gIFNreVRva2VuLFxuICBTa3lUb2tlbnNNZXNzYWdlLFxuICBTa3lUb2tlbnNNZXNzYWdlVHlwZVxufSBmcm9tICdAc2t5dXgvaW5kaWNhdG9ycyc7XG5cbmltcG9ydCB7XG4gIFNreU1vZGFsSW5zdGFuY2UsXG4gIFNreU1vZGFsU2VydmljZVxufSBmcm9tICdAc2t5dXgvbW9kYWxzJztcblxuaW1wb3J0IHtcbiAgU2t5VGhlbWVTZXJ2aWNlXG59IGZyb20gJ0Bza3l1eC90aGVtZSc7XG5cbmltcG9ydCB7XG4gIFNreUF1dG9jb21wbGV0ZU1lc3NhZ2Vcbn0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1tZXNzYWdlJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlTWVzc2FnZVR5cGVcbn0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1tZXNzYWdlLXR5cGUnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVTZWxlY3Rpb25DaGFuZ2Vcbn0gZnJvbSAnLi4vYXV0b2NvbXBsZXRlL3R5cGVzL2F1dG9jb21wbGV0ZS1zZWxlY3Rpb24tY2hhbmdlJztcblxuaW1wb3J0IHtcbiAgU2t5QXV0b2NvbXBsZXRlU2hvd01vcmVBcmdzXG59IGZyb20gJy4uL2F1dG9jb21wbGV0ZS90eXBlcy9hdXRvY29tcGxldGUtc2hvdy1tb3JlLWFyZ3MnO1xuXG5pbXBvcnQge1xuICBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZVxufSBmcm9tICcuLi9hdXRvY29tcGxldGUvYXV0b2NvbXBsZXRlLWlucHV0LmRpcmVjdGl2ZSc7XG5cbmltcG9ydCB7XG4gIFNreUxvb2t1cEF1dG9jb21wbGV0ZUFkYXB0ZXJcbn0gZnJvbSAnLi9sb29rdXAtYXV0b2NvbXBsZXRlLWFkYXB0ZXInO1xuXG5pbXBvcnQge1xuICBTa3lMb29rdXBBZGFwdGVyU2VydmljZVxufSBmcm9tICcuL2xvb2t1cC1hZGFwdGVyLnNlcnZpY2UnO1xuXG5pbXBvcnQge1xuICBTa3lMb29rdXBBZGRDYWxsYmFja0FyZ3Ncbn0gZnJvbSAnLi90eXBlcy9sb29rdXAtYWRkLWNsaWNrLWNhbGxiYWNrLWFyZ3MnO1xuXG5pbXBvcnQge1xuICBTa3lMb29rdXBBZGRDbGlja0V2ZW50QXJnc1xufSBmcm9tICcuL3R5cGVzL2xvb2t1cC1hZGQtY2xpY2stZXZlbnQtYXJncyc7XG5cbmltcG9ydCB7XG4gIFNreUxvb2t1cFNob3dNb3JlTW9kYWxDb21wb25lbnRcbn0gZnJvbSAnLi9sb29rdXAtc2hvdy1tb3JlLW1vZGFsLmNvbXBvbmVudCc7XG5cbmltcG9ydCB7XG4gIFNreUxvb2t1cFNlbGVjdE1vZGVcbn0gZnJvbSAnLi90eXBlcy9sb29rdXAtc2VsZWN0LW1vZGUnO1xuXG5pbXBvcnQge1xuICBTa3lMb29rdXBTaG93TW9yZUNvbmZpZ1xufSBmcm9tICcuL3R5cGVzL2xvb2t1cC1zaG93LW1vcmUtY29uZmlnJztcblxuaW1wb3J0IHtcbiAgU2t5TG9va3VwU2hvd01vcmVOYXRpdmVQaWNrZXJDb250ZXh0XG59IGZyb20gJy4vdHlwZXMvbG9va3VwLXNob3ctbW9yZS1uYXRpdmUtcGlja2VyLWNvbnRleHQnO1xuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdza3ktbG9va3VwJyxcbiAgdGVtcGxhdGVVcmw6ICcuL2xvb2t1cC5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL2xvb2t1cC5jb21wb25lbnQuc2NzcyddLFxuICBwcm92aWRlcnM6IFtcbiAgICBTa3lMb29rdXBBZGFwdGVyU2VydmljZVxuICBdLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lLFxuICBjaGFuZ2VEZXRlY3Rpb246IENoYW5nZURldGVjdGlvblN0cmF0ZWd5Lk9uUHVzaFxufSlcbmV4cG9ydCBjbGFzcyBTa3lMb29rdXBDb21wb25lbnRcbiAgZXh0ZW5kcyBTa3lMb29rdXBBdXRvY29tcGxldGVBZGFwdGVyXG4gIGltcGxlbWVudHMgT25Jbml0LCBBZnRlclZpZXdJbml0LCBPbkRlc3Ryb3ksIENvbnRyb2xWYWx1ZUFjY2Vzc29yIHtcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIEFSSUEgbGFiZWwgZm9yIHRoZSB0eXBlYWhlYWQgc2VhcmNoIGlucHV0XG4gICAqIFt0byBzdXBwb3J0IGFjY2Vzc2liaWxpdHldKGh0dHBzOi8vZGV2ZWxvcGVyLmJsYWNrYmF1ZC5jb20vc2t5dXgvbGVhcm4vYWNjZXNzaWJpbGl0eSkuXG4gICAqIElmIHRoZSBpbnB1dCBpbmNsdWRlcyBhIHZpc2libGUgbGFiZWwsIHVzZSBgYXJpYUxhYmVsbGVkQnlgIGluc3RlYWQuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXJpYUxhYmVsOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyB0aGUgSFRNTCBlbGVtZW50IElEICh3aXRob3V0IHRoZSBsZWFkaW5nIGAjYCkgb2YgdGhlIGVsZW1lbnQgdGhhdCBsYWJlbHNcbiAgICogdGhlIHR5cGVhaGVhZCBzZWFyY2ggaW5wdXQuIFRoaXMgc2V0cyB0aGUgaW5wdXQncyBgYXJpYS1sYWJlbGxlZGJ5YCBhdHRyaWJ1dGVcbiAgICogW3RvIHN1cHBvcnQgYWNjZXNzaWJpbGl0eV0oaHR0cHM6Ly9kZXZlbG9wZXIuYmxhY2tiYXVkLmNvbS9za3l1eC9sZWFybi9hY2Nlc3NpYmlsaXR5KS5cbiAgICogSWYgdGhlIGlucHV0IGRvZXMgbm90IGluY2x1ZGUgYSB2aXNpYmxlIGxhYmVsLCB1c2UgYGFyaWFMYWJlbGAgaW5zdGVhZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBhcmlhTGFiZWxsZWRCeTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgdGhlIHZhbHVlIGZvciB0aGUgYGF1dG9jb21wbGV0ZWAgYXR0cmlidXRlIG9uIHRoZSBmb3JtIGlucHV0LlxuICAgKiBAZGVmYXVsdCBcIm9mZlwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgYXV0b2NvbXBsZXRlQXR0cmlidXRlOiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBhIGRhdGEgc291cmNlIGZvciB0aGUgbG9va3VwIGNvbXBvbmVudCB0byBzZWFyY2ggd2hlbiB1c2Vyc1xuICAgKiBlbnRlciB0ZXh0LiBZb3UgY2FuIHNwZWNpZnkgc3RhdGljIGRhdGEgc3VjaCBhcyBhbiBhcnJheSBvZiBvYmplY3RzLCBvclxuICAgKiB5b3UgY2FuIHB1bGwgZGF0YSBmcm9tIGEgZGF0YWJhc2UuXG4gICAqIEBkZWZhdWx0IFtdXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IGRhdGEodmFsdWU6IGFueVtdKSB7XG4gICAgdGhpcy5fZGF0YSA9IHZhbHVlO1xuXG4gICAgaWYgKHRoaXMub3Blbk5hdGl2ZVBpY2tlcikge1xuICAgICAgdGhpcy5vcGVuTmF0aXZlUGlja2VyLmNvbXBvbmVudEluc3RhbmNlLnVwZGF0ZUl0ZW1EYXRhKHZhbHVlKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0IGRhdGEoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl9kYXRhO1xuICB9XG5cbiAgLyoqXG4gICAqIEluZGljYXRlcyB3aGV0aGVyIHRvIGRpc2FibGUgdGhlIGxvb2t1cCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBkaXNhYmxlZCA9IGZhbHNlO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBlbmFibGUgdXNlcnMgdG8gb3BlbiBhIHBpY2tlciB3aGVyZSB0aGV5IGNhbiB2aWV3IGFsbCBvcHRpb25zLlxuICAgKi9cbiAgQElucHV0KClcbiAgcHVibGljIGVuYWJsZVNob3dNb3JlOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLyoqXG4gICAqIFNwZWNpZmllcyBwbGFjZWhvbGRlciB0ZXh0IHRvIGRpc3BsYXkgaW4gdGhlIGxvb2t1cCBmaWVsZC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBwbGFjZWhvbGRlclRleHQ6IHN0cmluZztcblxuICAvKipcbiAgICogU3BlY2lmaWVzIGFuIG9iamVjdCBwcm9wZXJ0eSB0aGF0IHJlcHJlc2VudHMgdGhlIG9iamVjdCdzIHVuaXF1ZSBpZGVudGlmaWVyLlxuICAgKiBTcGVjaWZ5aW5nIHRoaXMgcHJvcGVydHkgZW5hYmxlcyB0b2tlbiBhbmltYXRpb25zIGFuZCBtb3JlIGVmZmljaWVudCByZW5kZXJpbmcuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgaWRQcm9wZXJ0eTogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBJbmRpY2F0ZXMgd2hldGhlciB0byBkaXNwbGF5IGEgYnV0dG9uIHRoYXQgbGV0cyB1c2VycyBhZGQgb3B0aW9ucyB0byB0aGUgbGlzdC5cbiAgICovXG4gIEBJbnB1dCgpXG4gIHB1YmxpYyBzaG93QWRkQnV0dG9uOiBib29sZWFuID0gZmFsc2U7XG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgY29uZmlndXJhdGlvbiBvcHRpb25zIGZvciB0aGUgcGlja2VyIHRoYXQgZGlzcGxheXMgYWxsIG9wdGlvbnMuXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2hvd01vcmVDb25maWc6IFNreUxvb2t1cFNob3dNb3JlQ29uZmlnO1xuXG4gIC8qKlxuICAgKiBTcGVjaWZpZXMgd2hldGhlciB1c2VycyBjYW4gc2VsZWN0IG9uZSBvcHRpb24gb3IgbXVsdGlwbGUgb3B0aW9ucy5cbiAgICogQGRlZmF1bHQgXCJtdWxpdHBsZVwiXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgc2V0IHNlbGVjdE1vZGUodmFsdWU6IFNreUxvb2t1cFNlbGVjdE1vZGUpIHtcbiAgICBsZXQgbXVsdGlwbGVUb1NpbmdsZTogYm9vbGVhbiA9IHZhbHVlID09PSBTa3lMb29rdXBTZWxlY3RNb2RlLnNpbmdsZSAmJiB0aGlzLnNlbGVjdE1vZGUgPT09IFNreUxvb2t1cFNlbGVjdE1vZGUubXVsdGlwbGU7XG5cbiAgICB0aGlzLl9zZWxlY3RNb2RlID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVGb3JTZWxlY3RNb2RlKCk7XG5cbiAgICBpZiAobXVsdGlwbGVUb1NpbmdsZSkge1xuICAgICAgaWYgKHRoaXMudmFsdWUgJiYgdGhpcy52YWx1ZS5sZW5ndGggPiAxKSB7XG4gICAgICAgIC8vIFRoZSBgc2V0VGltZW91dGAgaXMgbmVlZGVkIHRvIGF2b2lkIGEgYEV4cHJlc3Npb25DaGFuZ2VkQWZ0ZXJJdEhhc0JlZW5DaGVja2VkRXJyb3JgIGVycm9yIGluIHRlbXBsYXRlIGZvcm1zLlxuICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUoW3RoaXMudmFsdWVbMF1dKTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLmRldGVjdENoYW5nZXMoKTtcbiAgICAgICAgfSk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGdldCBzZWxlY3RNb2RlKCk6IFNreUxvb2t1cFNlbGVjdE1vZGUge1xuICAgIHJldHVybiB0aGlzLl9zZWxlY3RNb2RlIHx8IFNreUxvb2t1cFNlbGVjdE1vZGUubXVsdGlwbGU7XG4gIH1cblxuICAvKipcbiAgICogQGludGVybmFsXG4gICAqL1xuICBASW5wdXQoKVxuICBwdWJsaWMgd3JhcHBlckNsYXNzPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGaXJlcyB3aGVuIHVzZXJzIHNlbGVjdCB0aGUgYnV0dG9uIHRvIGFkZCBvcHRpb25zIHRvIHRoZSBsaXN0LlxuICAgKi9cbiAgQE91dHB1dCgpXG4gIHB1YmxpYyBhZGRDbGljazogRXZlbnRFbWl0dGVyPFNreUxvb2t1cEFkZENsaWNrRXZlbnRBcmdzPiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcblxuICBwdWJsaWMgZ2V0IHRva2VucygpOiBTa3lUb2tlbltdIHtcbiAgICByZXR1cm4gdGhpcy5fdG9rZW5zO1xuICB9XG5cbiAgcHVibGljIHNldCB0b2tlbnModmFsdWU6IFNreVRva2VuW10pIHtcbiAgICAvLyBDb2xsYXBzZSB0aGUgdG9rZW5zIGludG8gYSBzaW5nbGUgdG9rZW4gaWYgdGhlIHVzZXIgaGFzIHNlbGVjdGVkIG1hbnkgb3B0aW9ucy5cbiAgICBpZiAodGhpcy5lbmFibGVTaG93TW9yZSAmJiB0aGlzLnZhbHVlLmxlbmd0aCA+IDUpIHtcbiAgICAgIHRoaXMucmVzb3VyY2VzU2VydmljZS5nZXRTdHJpbmcoXG4gICAgICAgICdza3l1eF9sb29rdXBfdG9rZW5zX3N1bW1hcnknLFxuICAgICAgICB0aGlzLnZhbHVlLmxlbmd0aC50b1N0cmluZygpXG4gICAgICApXG4gICAgICAgIC5waXBlKHRha2UoMSkpXG4gICAgICAgIC5zdWJzY3JpYmUoKGxhYmVsKSA9PiB7XG4gICAgICAgICAgdGhpcy5fdG9rZW5zID0gW3tcbiAgICAgICAgICAgIHZhbHVlOiB7IFt0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eV06IGxhYmVsIH1cbiAgICAgICAgICB9XTtcbiAgICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgICB9KTtcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5fdG9rZW5zID0gdmFsdWU7XG4gICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBnZXQgdmFsdWUoKTogYW55W10ge1xuICAgIHJldHVybiB0aGlzLl92YWx1ZSA/IHRoaXMuX3ZhbHVlIDogW107XG4gIH1cblxuICBwdWJsaWMgc2V0IHZhbHVlKG5ld1ZhbHVlOiBhbnlbXSkge1xuICAgIHRoaXMuX3ZhbHVlID0gbmV3VmFsdWU7XG5cbiAgICBpZiAoIXRoaXMub3Blbk5hdGl2ZVBpY2tlcikge1xuICAgICAgdGhpcy50b2tlbnMgPSB0aGlzLnBhcnNlVG9rZW5zKG5ld1ZhbHVlKTtcbiAgICB9XG5cbiAgICB0aGlzLm9uQ2hhbmdlKHRoaXMuX3ZhbHVlKTtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIGF1dG9jb21wbGV0ZUNvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lBdXRvY29tcGxldGVNZXNzYWdlPigpO1xuICBwdWJsaWMgaXNJbnB1dEZvY3VzZWQgPSBmYWxzZTtcbiAgcHVibGljIHRva2Vuc0NvbnRyb2xsZXIgPSBuZXcgU3ViamVjdDxTa3lUb2tlbnNNZXNzYWdlPigpO1xuXG4gIEBWaWV3Q2hpbGQoU2t5QXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUsIHtcbiAgICByZWFkOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSxcbiAgICBzdGF0aWM6IGZhbHNlXG4gIH0pXG4gIHByaXZhdGUgc2V0IGF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlKHZhbHVlOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSkge1xuICAgIHRoaXMuX2F1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlID0gdmFsdWU7XG4gICAgdGhpcy51cGRhdGVGb3JTZWxlY3RNb2RlKCk7XG4gIH1cblxuICBwcml2YXRlIGdldCBhdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSgpOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZSB7XG4gICAgcmV0dXJuIHRoaXMuX2F1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlO1xuICB9XG5cbiAgQFZpZXdDaGlsZCgnc2hvd01vcmVCdXR0b25UZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWVcbiAgfSlcbiAgcHJpdmF0ZSBzaG93TW9yZUJ1dHRvblRlbXBsYXRlUmVmOiBUZW1wbGF0ZVJlZjxhbnk+O1xuXG4gIEBWaWV3Q2hpbGQoJ2lucHV0VGVtcGxhdGVSZWYnLCB7XG4gICAgcmVhZDogVGVtcGxhdGVSZWYsXG4gICAgc3RhdGljOiB0cnVlXG4gIH0pXG4gIHByaXZhdGUgaW5wdXRUZW1wbGF0ZVJlZjogVGVtcGxhdGVSZWY8YW55PjtcblxuICBAVmlld0NoaWxkKCdsb29rdXBXcmFwcGVyJywge1xuICAgIHJlYWQ6IEVsZW1lbnRSZWZcbiAgfSlcbiAgcHJpdmF0ZSBsb29rdXBXcmFwcGVyUmVmOiBFbGVtZW50UmVmO1xuXG4gIEBWaWV3Q2hpbGQoJ3NlYXJjaEljb25UZW1wbGF0ZVJlZicsIHtcbiAgICByZWFkOiBUZW1wbGF0ZVJlZixcbiAgICBzdGF0aWM6IHRydWVcbiAgfSlcbiAgcHJpdmF0ZSBzZWFyY2hJY29uVGVtcGxhdGVSZWY6IFRlbXBsYXRlUmVmPGFueT47XG5cbiAgcHJpdmF0ZSBuZ1Vuc3Vic2NyaWJlID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBpZGxlID0gbmV3IFN1YmplY3QoKTtcbiAgcHJpdmF0ZSBtYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXAgPSBmYWxzZTtcbiAgcHJpdmF0ZSBvcGVuTmF0aXZlUGlja2VyOiBTa3lNb2RhbEluc3RhbmNlO1xuXG4gIHByaXZhdGUgX2F1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlOiBTa3lBdXRvY29tcGxldGVJbnB1dERpcmVjdGl2ZTtcbiAgcHJpdmF0ZSBfZGF0YTogYW55W107XG4gIHByaXZhdGUgX3NlbGVjdE1vZGU6IFNreUxvb2t1cFNlbGVjdE1vZGU7XG4gIHByaXZhdGUgX3Rva2VuczogU2t5VG9rZW5bXTtcbiAgcHJpdmF0ZSBfdmFsdWU6IGFueVtdO1xuXG4gIGNvbnN0cnVjdG9yKFxuICAgIHByaXZhdGUgY2hhbmdlRGV0ZWN0b3I6IENoYW5nZURldGVjdG9yUmVmLFxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZixcbiAgICBwcml2YXRlIHdpbmRvd1JlZjogU2t5QXBwV2luZG93UmVmLFxuICAgIEBTZWxmKCkgQE9wdGlvbmFsKCkgbmdDb250cm9sOiBOZ0NvbnRyb2wsXG4gICAgcHJpdmF0ZSBhZGFwdGVyOiBTa3lMb29rdXBBZGFwdGVyU2VydmljZSxcbiAgICBwcml2YXRlIG1vZGFsU2VydmljZTogU2t5TW9kYWxTZXJ2aWNlLFxuICAgIHByaXZhdGUgcmVzb3VyY2VzU2VydmljZTogU2t5TGliUmVzb3VyY2VzU2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgaW5wdXRCb3hIb3N0U3ZjPzogU2t5SW5wdXRCb3hIb3N0U2VydmljZSxcbiAgICBAT3B0aW9uYWwoKSBwdWJsaWMgdGhlbWVTdmM/OiBTa3lUaGVtZVNlcnZpY2VcbiAgKSB7XG4gICAgc3VwZXIoKTtcbiAgICBuZ0NvbnRyb2wudmFsdWVBY2Nlc3NvciA9IHRoaXM7XG4gIH1cblxuICBwdWJsaWMgbmdPbkluaXQoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuaW5wdXRCb3hIb3N0U3ZjKSB7XG4gICAgICB0aGlzLmlucHV0Qm94SG9zdFN2Yy5wb3B1bGF0ZShcbiAgICAgICAge1xuICAgICAgICAgIGlucHV0VGVtcGxhdGU6IHRoaXMuaW5wdXRUZW1wbGF0ZVJlZixcbiAgICAgICAgICBidXR0b25zVGVtcGxhdGU6IHRoaXMuZW5hYmxlU2hvd01vcmUgPyB0aGlzLnNob3dNb3JlQnV0dG9uVGVtcGxhdGVSZWYgOiB1bmRlZmluZWQsXG4gICAgICAgICAgaWNvbnNJbnNldFRlbXBsYXRlOiB0aGlzLmVuYWJsZVNob3dNb3JlID8gdW5kZWZpbmVkIDogdGhpcy5zZWFyY2hJY29uVGVtcGxhdGVSZWZcbiAgICAgICAgfVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnRoZW1lU3ZjKSB7XG4gICAgICAvLyBUaGlzIGlzIHJlcXVpcmVkIGZvciB0aGUgYXV0b2NvbXBsZXRlIGRpcmVjdGl2ZSB0byBiZSBzZXQgYWZ0ZXIgZWxlbWVudHNcbiAgICAgIC8vIGFyZSByZWFycmFuZ2VkIHdoZW4gc3dpdGNoaW5nIHRoZW1lcy5cbiAgICAgIHRoaXMudGhlbWVTdmM/LnNldHRpbmdzQ2hhbmdlXG4gICAgICAgIC5waXBlKFxuICAgICAgICAgIHRha2VVbnRpbCh0aGlzLm5nVW5zdWJzY3JpYmUpXG4gICAgICAgIClcbiAgICAgICAgLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgdGhpcy5jaGFuZ2VEZXRlY3Rvci5tYXJrRm9yQ2hlY2soKTtcbiAgICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcbiAgICBpZiAoIXRoaXMuZGlzYWJsZWQpIHtcbiAgICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcnMoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgbmdPbkRlc3Ryb3koKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVycygpO1xuICAgIHRoaXMubmdVbnN1YnNjcmliZS5uZXh0KCk7XG4gICAgdGhpcy5uZ1Vuc3Vic2NyaWJlLmNvbXBsZXRlKCk7XG4gICAgdGhpcy50b2tlbnNDb250cm9sbGVyLmNvbXBsZXRlKCk7XG4gIH1cblxuICBwdWJsaWMgYWRkQnV0dG9uQ2xpY2tlZCgpOiB2b2lkIHtcbiAgICB0aGlzLmFkZENsaWNrLmVtaXQoeyBpdGVtQWRkZWQ6IChhcmdzOiBTa3lMb29rdXBBZGRDYWxsYmFja0FyZ3MpID0+IHRoaXMub25BZGRCdXR0b25Db21wbGV0ZShhcmdzKSB9KTtcbiAgfVxuXG4gIHB1YmxpYyBvbkF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZShjaGFuZ2U6IFNreUF1dG9jb21wbGV0ZVNlbGVjdGlvbkNoYW5nZSk6IHZvaWQge1xuICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgaWYgKGNoYW5nZS5zZWxlY3RlZEl0ZW0pIHtcbiAgICAgIHRoaXMuYWRkVG9TZWxlY3RlZChjaGFuZ2Uuc2VsZWN0ZWRJdGVtKTtcbiAgICB9IGVsc2UgaWYgKHRoaXMuc2VsZWN0TW9kZSA9PT0gU2t5TG9va3VwU2VsZWN0TW9kZS5zaW5nbGUpIHtcbiAgICAgIHRoaXMud3JpdGVWYWx1ZShbXSk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIG9uQXV0b2NvbXBsZXRlQmx1cigpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCgpO1xuICB9XG5cbiAgcHVibGljIG9uVG9rZW5zQ2hhbmdlKGNoYW5nZTogU2t5VG9rZW5bXSk6IHZvaWQge1xuICAgIGlmICghY2hhbmdlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgaWYgKHRoaXMudG9rZW5zICE9PSBjaGFuZ2UpIHtcbiAgICAgIGlmIChjaGFuZ2UubGVuZ3RoID09PSAwKSB7XG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgfVxuXG4gICAgICAvLyBOT1RFOiBXZSBkbyB0aGlzIGhlcmUgaW5zdGVhZCBvZiBqdXN0IHVzaW5nIHRoZSBgdmFsdWVgIHNldHRlciBiZWNhdXNlIHdlIG5lZWQgdG8gdXNlIHRoZVxuICAgICAgLy8gc2V0IG9mIHRva2VucyByZXR1cm5lZCBoZXJlIGZvciB0aGUgcHVycG9zZXMgb2Ygc2V0dGluZyBmb2N1cyAoc2VlIGBvblRva2Vuc0tleVVwYCkuXG4gICAgICB0aGlzLl92YWx1ZSA9IGNoYW5nZS5tYXAodG9rZW4gPT4geyByZXR1cm4gdG9rZW4udmFsdWU7IH0pO1xuICAgICAgdGhpcy50b2tlbnMgPSBjaGFuZ2U7XG5cbiAgICAgIHRoaXMub25DaGFuZ2UodGhpcy5fdmFsdWUpO1xuICAgICAgdGhpcy5vblRvdWNoZWQoKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25Ub2tlbnNGb2N1c0luZGV4T3ZlclJhbmdlKCk6IHZvaWQge1xuICAgIHRoaXMud2luZG93UmVmLm5hdGl2ZVdpbmRvdy5zZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgIH0pO1xuICB9XG5cbiAgcHVibGljIG9uVG9rZW5zS2V5VXAoZXZlbnQ6IEtleWJvYXJkRXZlbnQpOiB2b2lkIHtcbiAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgIT09ICdzaW5nbGUnKSB7XG4gICAgICAvKiB0c2xpbnQ6ZGlzYWJsZS1uZXh0LWxpbmU6c3dpdGNoLWRlZmF1bHQgKi9cbiAgICAgIHN3aXRjaCAoZXZlbnQua2V5KSB7XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgICAgdGhpcy5zZW5kVG9rZW5zTWVzc2FnZShTa3lUb2tlbnNNZXNzYWdlVHlwZS5SZW1vdmVBY3RpdmVUb2tlbik7XG4gICAgICAgICAgdGhpcy5zZW5kVG9rZW5zTWVzc2FnZShTa3lUb2tlbnNNZXNzYWdlVHlwZS5Gb2N1c1ByZXZpb3VzVG9rZW4pO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG5cbiAgICAgICAgY2FzZSAnRGVsJzpcbiAgICAgICAgY2FzZSAnRGVsZXRlJzpcbiAgICAgICAgICB0aGlzLnNlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLlJlbW92ZUFjdGl2ZVRva2VuKTtcbiAgICAgICAgICB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgICAgICB0aGlzLnNlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLkZvY3VzQWN0aXZlVG9rZW4pO1xuICAgICAgICAgIH0pO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHdyaXRlVmFsdWUodmFsdWU6IGFueVtdKTogdm9pZCB7XG4gICAgdGhpcy52YWx1ZSA9IHZhbHVlID8gdmFsdWUgOiBbXTtcbiAgICB0aGlzLnVwZGF0ZUZvclNlbGVjdE1vZGUoKTtcbiAgfVxuXG4gIC8vIEFuZ3VsYXIgYXV0b21hdGljYWxseSBjb25zdHJ1Y3RzIHRoZXNlIG1ldGhvZHMuXG4gIC8qIGlzdGFuYnVsIGlnbm9yZSBuZXh0ICovXG4gIHB1YmxpYyBvbkNoYW5nZSA9ICh2YWx1ZTogYW55W10pID0+IHsgfTtcbiAgLyogaXN0YW5idWwgaWdub3JlIG5leHQgKi9cbiAgcHVibGljIG9uVG91Y2hlZCA9ICgpID0+IHsgfTtcblxuICBwdWJsaWMgcmVnaXN0ZXJPbkNoYW5nZShmbjogKHZhbHVlOiBhbnkpID0+IHZvaWQpIHtcbiAgICB0aGlzLm9uQ2hhbmdlID0gZm47XG4gIH1cblxuICBwdWJsaWMgcmVnaXN0ZXJPblRvdWNoZWQoZm46ICgpID0+IHZvaWQpOiB2b2lkIHtcbiAgICB0aGlzLm9uVG91Y2hlZCA9IGZuO1xuICB9XG5cbiAgLy8gQWxsb3dzIEFuZ3VsYXIgdG8gZGlzYWJsZSB0aGUgaW5wdXQuXG4gIHB1YmxpYyBzZXREaXNhYmxlZFN0YXRlKGRpc2FibGVkOiBib29sZWFuKTogdm9pZCB7XG4gICAgdGhpcy5yZW1vdmVFdmVudExpc3RlbmVycygpO1xuXG4gICAgaWYgKCFkaXNhYmxlZCkge1xuICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVycygpO1xuICAgIH1cblxuICAgIHRoaXMuZGlzYWJsZWQgPSBkaXNhYmxlZDtcbiAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICB9XG5cbiAgcHVibGljIGNsZWFyU2VhcmNoVGV4dCgpOiB2b2lkIHtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLnZhbHVlID0gdW5kZWZpbmVkO1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUuaW5wdXRUZXh0VmFsdWUgPSB1bmRlZmluZWQ7XG4gIH1cblxuICAvLyBIYW5kbGVzIHdoZW4gdG8gZm9jdXMgb24gdGhlIHRva2Vucy5cbiAgLy8gQ2hlY2sgZm9yIGVtcHR5IHNlYXJjaCB0ZXh0IG9uIGtleWRvd24sIGJlZm9yZSB0aGUgZXNjYXBlIGtleSBpcyBmdWxseSBwcmVzc2VkLlxuICAvLyAoT3RoZXJ3aXNlLCBhIHNpbmdsZSBjaGFyYWN0ZXIgYmVpbmcgZXNjYXBlZCB3b3VsZCByZWdpc3RlciBhcyBlbXB0eSBvbiBrZXl1cC4pXG4gIC8vIElmIGVtcHR5IG9uIGtleWRvd24sIHNldCBhIGZsYWcgc28gdGhhdCB0aGUgYXBwcm9wcmlhdGUgYWN0aW9uIGNhbiBiZSB0YWtlbiBvbiBrZXl1cC5cbiAgcHVibGljIGlucHV0S2V5ZG93bihldmVudDogS2V5Ym9hcmRFdmVudCwgdmFsdWU6IHN0cmluZyk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayBhcyB0aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGluIG11bHRpcGxlIHNlbGVjdCBtb2RlICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnRW50ZXInOlxuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgdGhpcy5tYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXAgPSBmYWxzZTtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5tYXJrRm9yVG9rZW5Gb2N1c09uS2V5VXAgPSB0cnVlO1xuICAgICAgICAgIH1cbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwdWJsaWMgaW5wdXRLZXl1cChldmVudDogS2V5Ym9hcmRFdmVudCk6IHZvaWQge1xuICAgIC8qIFNhbml0eSBjaGVjayBhcyB0aGlzIHNob3VsZCBvbmx5IGJlIGNhbGxlZCB3aGVuIGluIG11bHRpcGxlIHNlbGVjdCBtb2RlICovXG4gICAgLyogaXN0YW5idWwgaWdub3JlIGVsc2UgKi9cbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlICE9PSAnc2luZ2xlJykge1xuICAgICAgc3dpdGNoIChldmVudC5rZXkpIHtcbiAgICAgICAgY2FzZSAnRXNjJzpcbiAgICAgICAgY2FzZSAnRXNjYXBlJzpcbiAgICAgICAgICB0aGlzLmNsZWFyU2VhcmNoVGV4dCgpO1xuICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0Fycm93TGVmdCc6XG4gICAgICAgIGNhc2UgJ0JhY2tzcGFjZSc6XG4gICAgICAgIGNhc2UgJ0xlZnQnOlxuICAgICAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICAgICAgaWYgKHRoaXMubWFya0ZvclRva2VuRm9jdXNPbktleVVwKSB7XG4gICAgICAgICAgICB0aGlzLnNlbmRUb2tlbnNNZXNzYWdlKFNreVRva2Vuc01lc3NhZ2VUeXBlLkZvY3VzTGFzdFRva2VuKTtcbiAgICAgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7XG4gICAgICAgICAgfVxuICAgICAgICAgIGJyZWFrO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgfVxuXG4gICAgICBldmVudC5zdG9wUHJvcGFnYXRpb24oKTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgb25TZWFyY2hCdXR0b25DbGljaygpOiB2b2lkIHtcbiAgICAvKmlzdGFuYnVsIGlnbm9yZSBuZXh0Ki9cbiAgICBpZiAodGhpcy5kaXNhYmxlZCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICB0aGlzLnNlbmRBdXRvY29tcGxldGVNZXNzYWdlKFNreUF1dG9jb21wbGV0ZU1lc3NhZ2VUeXBlLkNsb3NlRHJvcGRvd24pO1xuXG4gICAgbGV0IGlzVmFsdWVJblRleHRCb3ggPSBmYWxzZTtcbiAgICBpZiAodGhpcy5zZWxlY3RNb2RlID09PSBTa3lMb29rdXBTZWxlY3RNb2RlLnNpbmdsZSkge1xuICAgICAgaXNWYWx1ZUluVGV4dEJveCA9IHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUuaW5wdXRUZXh0VmFsdWUgPT09IHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUudmFsdWVbdGhpcy5kZXNjcmlwdG9yUHJvcGVydHldO1xuICAgIH1cblxuICAgIHRoaXMub3BlblBpY2tlcihpc1ZhbHVlSW5UZXh0Qm94ID8gJycgOiB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLmlucHV0VGV4dFZhbHVlKTtcbiAgICB0aGlzLmF1dG9jb21wbGV0ZUlucHV0RGlyZWN0aXZlLnJlc3RvcmVJbnB1dFRleHRWYWx1ZVRvUHJldmlvdXNTdGF0ZSgpO1xuICB9XG5cbiAgcHVibGljIG9uU2hvd01vcmVDbGljayhldmVudDogU2t5QXV0b2NvbXBsZXRlU2hvd01vcmVBcmdzKTogdm9pZCB7XG4gICAgdGhpcy5vcGVuUGlja2VyKGV2ZW50Py5pbnB1dFZhbHVlKTtcbiAgfVxuXG4gIHB1YmxpYyBvcGVuUGlja2VyKGluaXRpYWxTZWFyY2g6IHN0cmluZyk6IHZvaWQge1xuICAgIGlmICh0aGlzLnNob3dNb3JlQ29uZmlnPy5jdXN0b21QaWNrZXIpIHtcbiAgICAgIHRoaXMuc2hvd01vcmVDb25maWcuY3VzdG9tUGlja2VyLm9wZW4oe1xuICAgICAgICBpdGVtczogdGhpcy5kYXRhLFxuICAgICAgICBpbml0aWFsU2VhcmNoOiBpbml0aWFsU2VhcmNoLFxuICAgICAgICBpbml0aWFsVmFsdWU6IHRoaXMudmFsdWVcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICBsZXQgaW5pdGlhbFZhbHVlID0gdGhpcy52YWx1ZTtcbiAgICAgIGNvbnN0IG1vZGFsQ29uZmlnID0gdGhpcy5zaG93TW9yZUNvbmZpZz8ubmF0aXZlUGlja2VyQ29uZmlnIHx8IHt9O1xuICAgICAgaWYgKCFtb2RhbENvbmZpZy5pdGVtVGVtcGxhdGUpIHtcbiAgICAgICAgbW9kYWxDb25maWcuaXRlbVRlbXBsYXRlID0gdGhpcy5zZWFyY2hSZXN1bHRUZW1wbGF0ZTtcbiAgICAgIH1cblxuICAgICAgbGV0IGNvbnRleHQ6IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29udGV4dCA9IHtcbiAgICAgICAgaXRlbXM6IHRoaXMuZGF0YSxcbiAgICAgICAgZGVzY3JpcHRvclByb3BlcnR5OiB0aGlzLmRlc2NyaXB0b3JQcm9wZXJ0eSxcbiAgICAgICAgaW5pdGlhbFNlYXJjaDogaW5pdGlhbFNlYXJjaCxcbiAgICAgICAgaW5pdGlhbFZhbHVlOiBpbml0aWFsVmFsdWUsXG4gICAgICAgIHNlYXJjaDogdGhpcy5zZWFyY2gsXG4gICAgICAgIHNlbGVjdE1vZGU6IHRoaXMuc2VsZWN0TW9kZSxcbiAgICAgICAgc2hvd0FkZEJ1dHRvbjogdGhpcy5zaG93QWRkQnV0dG9uLFxuICAgICAgICB1c2VyQ29uZmlnOiBtb2RhbENvbmZpZ1xuICAgICAgfTtcblxuICAgICAgdGhpcy5vcGVuTmF0aXZlUGlja2VyID0gdGhpcy5tb2RhbFNlcnZpY2Uub3BlbihTa3lMb29rdXBTaG93TW9yZU1vZGFsQ29tcG9uZW50LCB7XG4gICAgICAgIHByb3ZpZGVyczogW1xuICAgICAgICAgIHtcbiAgICAgICAgICAgIHByb3ZpZGU6IFNreUxvb2t1cFNob3dNb3JlTmF0aXZlUGlja2VyQ29udGV4dCwgdXNlVmFsdWU6IGNvbnRleHRcbiAgICAgICAgICB9XG4gICAgICAgIF0sXG4gICAgICAgIHdyYXBwZXJDbGFzczogdGhpcy53cmFwcGVyQ2xhc3NcbiAgICAgIH0pO1xuXG4gICAgICB0aGlzLm9wZW5OYXRpdmVQaWNrZXIuY29tcG9uZW50SW5zdGFuY2UuYWRkQ2xpY2suc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgdGhpcy5hZGRCdXR0b25DbGlja2VkKCk7XG4gICAgICB9KTtcblxuICAgICAgdGhpcy5vcGVuTmF0aXZlUGlja2VyLmNsb3NlZC5zdWJzY3JpYmUoY2xvc2VBcmdzID0+IHtcbiAgICAgICAgdGhpcy5vcGVuTmF0aXZlUGlja2VyID0gdW5kZWZpbmVkO1xuICAgICAgICBpZiAoY2xvc2VBcmdzLnJlYXNvbiA9PT0gJ3NhdmUnKSB7XG4gICAgICAgICAgbGV0IHNlbGVjdGVkSXRlbXM6IGFueVtdID0gW107XG5cbiAgICAgICAgICB0aGlzLmRhdGEuZm9yRWFjaCgoaXRlbTogYW55LCBkYXRhSW5kZXg6IG51bWJlcikgPT4ge1xuICAgICAgICAgICAgaWYgKGNsb3NlQXJncy5kYXRhLnNvbWUoKHNhdmVkSXRlbTogYW55KSA9PiB7XG4gICAgICAgICAgICAgIHJldHVybiBzYXZlZEl0ZW0uaW5kZXggPT09IGRhdGFJbmRleDtcbiAgICAgICAgICAgIH0pKSB7XG4gICAgICAgICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9KTtcblxuICAgICAgICAgIHRoaXMud3JpdGVWYWx1ZShzZWxlY3RlZEl0ZW1zKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLndyaXRlVmFsdWUoaW5pdGlhbFZhbHVlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZm9jdXNJbnB1dCgpO1xuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhZGRUb1NlbGVjdGVkKGl0ZW06IGFueSk6IHZvaWQge1xuICAgIGxldCBzZWxlY3RlZEl0ZW1zOiBhbnlbXTtcblxuICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICBzZWxlY3RlZEl0ZW1zID0gW2l0ZW1dO1xuICAgIH0gZWxzZSB7XG4gICAgICBzZWxlY3RlZEl0ZW1zID0gdGhpcy52YWx1ZTtcblxuICAgICAgLy8gSWYgaXRlbXMgaGF2ZSBhIHVuaXF1ZSBpZGVudGlmaWVyLCBkb24ndCBhbGxvdyB0aGUgc2FtZSBpdGVtIHRvIGJlIGFkZGVkIHR3aWNlLlxuICAgICAgaWYgKFxuICAgICAgICAhdGhpcy5pZFByb3BlcnR5IHx8XG4gICAgICAgICF0aGlzLnZhbHVlLnNvbWUoXG4gICAgICAgICAgZXhpc3RpbmdJdGVtID0+IGV4aXN0aW5nSXRlbVt0aGlzLmlkUHJvcGVydHldID09PSBpdGVtW3RoaXMuaWRQcm9wZXJ0eV1cbiAgICAgICAgKVxuICAgICAgKSB7XG4gICAgICAgIHNlbGVjdGVkSXRlbXMucHVzaChpdGVtKTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5jbGVhclNlYXJjaFRleHQoKTtcbiAgICB9XG5cbiAgICB0aGlzLndyaXRlVmFsdWUoc2VsZWN0ZWRJdGVtcyk7XG4gIH1cblxuICBwcml2YXRlIGFkZEV2ZW50TGlzdGVuZXJzKCk6IHZvaWQge1xuICAgIHRoaXMuaWRsZSA9IG5ldyBTdWJqZWN0KCk7XG4gICAgdGhpcy5mb2N1c0lucHV0T25Ib3N0Q2xpY2soKTtcbiAgfVxuXG4gIHByaXZhdGUgcmVtb3ZlRXZlbnRMaXN0ZW5lcnMoKTogdm9pZCB7XG4gICAgdGhpcy5pZGxlLm5leHQoKTtcbiAgICB0aGlzLmlkbGUuY29tcGxldGUoKTtcbiAgfVxuXG4gIHByaXZhdGUgZm9jdXNJbnB1dE9uSG9zdENsaWNrKCk6IHZvaWQge1xuICAgIGxldCBob3N0RWxlbWVudCA9ICF0aGlzLmlucHV0Qm94SG9zdFN2YyA/IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IDogdGhpcy5sb29rdXBXcmFwcGVyUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgY29uc3QgZG9jdW1lbnRPYmogPSB0aGlzLndpbmRvd1JlZi5uYXRpdmVXaW5kb3cuZG9jdW1lbnQ7XG5cbiAgICAvLyBIYW5kbGVzIGZvY3VzaW5nIHRoZSBpbnB1dCB3aGVuIHRoZSBob3N0IGlzIGNsaWNrZWQuXG4gICAgLy8gVGhlIGlucHV0IHNob3VsZCBOT1QgYmUgZm9jdXNlZCBpZiBvdGhlciBlbGVtZW50cyAodG9rZW5zLCBldGMuKVxuICAgIC8vIGFyZSBjdXJyZW50bHkgZm9jdXNlZCBvciBiZWluZyB0YWJiZWQgdGhyb3VnaC5cblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoZG9jdW1lbnRPYmosICdtb3VzZWRvd24nKVxuICAgICAgLnBpcGUodGFrZVVudGlsKHRoaXMuaWRsZSkpXG4gICAgICAuc3Vic2NyaWJlKChldmVudDogTW91c2VFdmVudCkgPT4ge1xuICAgICAgICBob3N0RWxlbWVudCA9ICF0aGlzLmlucHV0Qm94SG9zdFN2YyA/IHRoaXMuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50IDogdGhpcy5sb29rdXBXcmFwcGVyUmVmLm5hdGl2ZUVsZW1lbnQ7XG4gICAgICAgIHRoaXMuaXNJbnB1dEZvY3VzZWQgPSBob3N0RWxlbWVudC5jb250YWlucyhldmVudC50YXJnZXQpO1xuXG4gICAgICAgIHRoaXMuY2hhbmdlRGV0ZWN0b3IubWFya0ZvckNoZWNrKCk7XG4gICAgICB9KTtcblxuICAgIG9ic2VydmFibGVGcm9tRXZlbnQoZG9jdW1lbnRPYmosICdmb2N1c2luJylcbiAgICAgIC5waXBlKHRha2VVbnRpbCh0aGlzLmlkbGUpKVxuICAgICAgLnN1YnNjcmliZSgoZXZlbnQ6IEtleWJvYXJkRXZlbnQpID0+IHtcbiAgICAgICAgaG9zdEVsZW1lbnQgPSAhdGhpcy5pbnB1dEJveEhvc3RTdmMgPyB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudCA6IHRoaXMubG9va3VwV3JhcHBlclJlZi5uYXRpdmVFbGVtZW50O1xuICAgICAgICB0aGlzLmlzSW5wdXRGb2N1c2VkID0gaG9zdEVsZW1lbnQuY29udGFpbnMoZXZlbnQudGFyZ2V0KTtcblxuICAgICAgICB0aGlzLmNoYW5nZURldGVjdG9yLm1hcmtGb3JDaGVjaygpO1xuICAgICAgfSk7XG5cbiAgICBvYnNlcnZhYmxlRnJvbUV2ZW50KGhvc3RFbGVtZW50LCAnbW91c2V1cCcpXG4gICAgICAucGlwZSh0YWtlVW50aWwodGhpcy5pZGxlKSlcbiAgICAgIC5zdWJzY3JpYmUoKCkgPT4ge1xuICAgICAgICBjb25zdCBjbGFzc0xpc3QgPSBkb2N1bWVudE9iai5hY3RpdmVFbGVtZW50LmNsYXNzTGlzdDtcbiAgICAgICAgaWYgKCFjbGFzc0xpc3QgfHwgIWNsYXNzTGlzdC5jb250YWlucygnc2t5LXRva2VuJykpIHtcbiAgICAgICAgICB0aGlzLmZvY3VzSW5wdXQoKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG4gIH1cblxuICBwcml2YXRlIGZvY3VzSW5wdXQoKTogdm9pZCB7XG4gICAgdGhpcy5hZGFwdGVyLmZvY3VzSW5wdXQodGhpcy5sb29rdXBXcmFwcGVyUmVmKTtcbiAgfVxuXG4gIHByaXZhdGUgb25BZGRCdXR0b25Db21wbGV0ZShhcmdzOiBTa3lMb29rdXBBZGRDYWxsYmFja0FyZ3MpIHtcbiAgICBpZiAoYXJncy5kYXRhKSB7XG4gICAgICB0aGlzLmRhdGEgPSBhcmdzLmRhdGE7XG4gICAgfVxuXG4gICAgaWYgKHRoaXMuZGF0YS5pbmRleE9mKGFyZ3MuaXRlbSkgPj0gMCkge1xuICAgICAgaWYgKHRoaXMub3Blbk5hdGl2ZVBpY2tlcikge1xuICAgICAgICAoPFNreUxvb2t1cFNob3dNb3JlTW9kYWxDb21wb25lbnQ+dGhpcy5vcGVuTmF0aXZlUGlja2VyLmNvbXBvbmVudEluc3RhbmNlKVxuICAgICAgICAgIC5vbkl0ZW1TZWxlY3QodHJ1ZSwgeyB2YWx1ZTogYXJncy5pdGVtLCBzZWxlY3RlZDogZmFsc2UgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsZXQgbmV3VmFsdWUgPSB0aGlzLnZhbHVlO1xuICAgICAgICBpZiAodGhpcy5zZWxlY3RNb2RlID09PSBTa3lMb29rdXBTZWxlY3RNb2RlLm11bHRpcGxlKSB7XG4gICAgICAgICAgbmV3VmFsdWUgPSB0aGlzLnZhbHVlLmNvbmNhdChhcmdzLml0ZW0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG5ld1ZhbHVlID0gW2FyZ3MuaXRlbV07XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy53cml0ZVZhbHVlKG5ld1ZhbHVlKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwcml2YXRlIHBhcnNlVG9rZW5zKGRhdGE6IGFueVtdKTogU2t5VG9rZW5bXSB7XG4gICAgcmV0dXJuIGRhdGEubWFwKChpdGVtOiBhbnkpID0+IHtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIHZhbHVlOiBpdGVtXG4gICAgICB9O1xuICAgIH0pO1xuICB9XG5cbiAgcHJpdmF0ZSBzZW5kQXV0b2NvbXBsZXRlTWVzc2FnZSh0eXBlOiBTa3lBdXRvY29tcGxldGVNZXNzYWdlVHlwZSk6IHZvaWQge1xuICAgIHRoaXMuYXV0b2NvbXBsZXRlQ29udHJvbGxlci5uZXh0KHsgdHlwZSB9KTtcbiAgfVxuXG4gIHByaXZhdGUgc2VuZFRva2Vuc01lc3NhZ2UodHlwZTogU2t5VG9rZW5zTWVzc2FnZVR5cGUpOiB2b2lkIHtcbiAgICB0aGlzLnRva2Vuc0NvbnRyb2xsZXIubmV4dCh7IHR5cGUgfSk7XG4gIH1cblxuICBwcml2YXRlIHVwZGF0ZUZvclNlbGVjdE1vZGUoKTogdm9pZCB7XG4gICAgaWYgKHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUpIHtcbiAgICAgIGlmICh0aGlzLnNlbGVjdE1vZGUgPT09ICdzaW5nbGUnKSB7XG4gICAgICAgIHRoaXMuYXV0b2NvbXBsZXRlSW5wdXREaXJlY3RpdmUudmFsdWUgPSB0aGlzLnZhbHVlICYmXG4gICAgICAgICAgdGhpcy52YWx1ZVswXTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMuY2xlYXJTZWFyY2hUZXh0KCk7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXX0=
|