ng-inail-common 2.1.1 → 2.1.2-beta.0
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.
|
@@ -163,6 +163,7 @@ export class TableComponent extends ResponsiveElementComponent {
|
|
|
163
163
|
this.lookAtThLabel(this.thLabelComponents);
|
|
164
164
|
this.attivaThLabelOrdinamentoSpecificato();
|
|
165
165
|
setTimeout(() => this.visualizzaBaseFooter = this.baseFooter?.nativeElement.childElementCount > 0);
|
|
166
|
+
this.cdr.detectChanges();
|
|
166
167
|
this.numeroColonne = document.querySelectorAll(`#${this.id} th`).length;
|
|
167
168
|
this.cdr.detectChanges();
|
|
168
169
|
}
|
|
@@ -592,4 +593,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.2.12", ngImpo
|
|
|
592
593
|
type: ViewChild,
|
|
593
594
|
args: ['baseFooter']
|
|
594
595
|
}] } });
|
|
595
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaW5haWwtY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQUUsTUFBTSxFQUNwQixLQUFLLEVBSUwsTUFBTSxFQUtOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHlCQUF5QixFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQ2pILE9BQU8sRUFBYyxnQkFBZ0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBc0IsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFFL0YsTUFBTSxvQkFBb0IsR0FBVyxFQUFFLENBQUM7QUFJeEMsTUFBTSxHQUFHLEdBQWtCLEtBQUssQ0FBQztBQUNqQyxNQUFNLElBQUksR0FBa0IsTUFBTSxDQUFDO0FBaUNuQyxNQUFNLE9BQU8sY0FBZSxTQUFRLDBCQUEwQjtJQTJJNUQsWUFBb0IsR0FBc0IsRUFDdEIsUUFBbUIsRUFFbkIsU0FBOEI7UUFDaEQsS0FBSyxDQUFDLEdBQUcs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SU4sVUFBVTtzQkFEVCxLQUFLO2dCQUlOLFdBQVc7c0JBRFYsS0FBSztnQkFJTixtQkFBbUI7c0JBRGxCLEtBQUs7Z0JBSU4sWUFBWTtzQkFEWCxNQUFNO2dCQUlQLFdBQVc7c0JBRFYsS0FBSztnQkFJTixpQkFBaUI7c0JBRGhCLE1BQU07Z0JBSVAsaUJBQWlCO3NCQURoQixlQUFlO3VCQUFDLGdCQUFnQixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztnQkFJdEQsb0JBQW9CO3NCQURuQixlQUFlO3VCQUFDLG1CQUFtQixFQUFFLEVBQUMsV0FBVyxFQUFFLElBQUksRUFBQztnQkFJekQsMEJBQTBCO3NCQUR6QixTQUFTO3VCQUFDLCtCQUErQjtnQkFJMUMsVUFBVTtzQkFEVCxTQUFTO3VCQUFDLFlBQVkiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBBZnRlclZpZXdDaGVja2VkLFxuICBBZnRlclZpZXdJbml0LFxuICBDaGFuZ2VEZXRlY3RvclJlZixcbiAgQ29tcG9uZW50LFxuICBDb250ZW50Q2hpbGRyZW4sXG4gIEVsZW1lbnRSZWYsXG4gIEV2ZW50RW1pdHRlciwgSW5qZWN0LFxuICBJbnB1dCxcbiAgT25DaGFuZ2VzLFxuICBPbkRlc3Ryb3ksXG4gIE9uSW5pdCxcbiAgT3V0cHV0LFxuICBRdWVyeUxpc3QsXG4gIFJlbmRlcmVyMixcbiAgU2ltcGxlQ2hhbmdlLFxuICBTaW1wbGVDaGFuZ2VzLFxuICBWaWV3Q2hpbGQsXG4gIFZpZXdFbmNhcHN1bGF0aW9uXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHtDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLCBnZXRDb25maWdWYWx1ZX0gZnJvbSBcIi4uLy4uL2Jhc2UuY29tcG9uZW50XCI7XG5pbXBvcnQge1Jlc3BvbnNpdmVFbGVtZW50Q29tcG9uZW50fSBmcm9tIFwiLi4vLi4vcmVzcG9uc2l2ZS1lbGVtZW50LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtPYnNlcnZhYmxlLCBTdWJzY3JpcHRpb259IGZyb20gXCJyeGpzXCI7XG5pbXBvcnQge0luYWlsVGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnR9IGZyb20gXCIuLi9pbmFpbC10YWJsZS1wYWdlLXNlbGVjdG9yL2luYWlsLXRhYmxlLXBhZ2Utc2VsZWN0b3IuY29tcG9uZW50XCI7XG5pbXBvcnQge1NvcnRpbmdJbmZvLCBUaExhYmVsQ29tcG9uZW50fSBmcm9tIFwiLi4vdGgtbGFiZWwvdGgtbGFiZWwuY29tcG9uZW50XCI7XG5pbXBvcnQge1RyQ2hlY2tib3hDb21wb25lbnR9IGZyb20gXCIuLi90ci1jaGVja2JveC90ci1jaGVja2JveC5jb21wb25lbnRcIjtcbmltcG9ydCB7TkdfSU5BSUxfQ09NTU9OX0NPTkZJRywgTmdJbmFpbENvbW1vbkNvbmZpZ30gZnJvbSBcIi4uLy4uLy4uLy4uL25nLWluYWlsLWNvbW1vbi5jb25maWdcIjtcblxuY29uc3QgREVGQVVMVF9UQUJMRV9MRU5HVEg6IG51bWJlciA9IDEwO1xuXG50eXBlIFNvcnREaXJlY3Rpb24gPSAnYXNjJyB8ICdkZXNjJztcblxuY29uc3QgQVNDOiBTb3J0RGlyZWN0aW9uID0gJ2FzYyc7XG5jb25zdCBERVNDOiBTb3J0RGlyZWN0aW9uID0gJ2Rlc2MnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNvcnRTdGF0ZSB7XG5cbiAgc29ydFByb3BlcnR5Pzogc3RyaW5nO1xuICBzb3J0RGlyZWN0aW9uPzogJ2FzYycgfCAnZGVzYyc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUGFnaW5hdGlvblN0YXRlIGV4dGVuZHMgU29ydFN0YXRlIHtcblxuICBmdWxsTGlzdFNpemU/OiBudW1iZXI7XG4gIHBhZ2VOdW1iZXI/OiBudW1iZXI7XG4gIHBhZ2VJbmRleD86IG51bWJlcjtcbiAgcGFnZVNpemU/OiBudW1iZXI7XG59XG5cbmludGVyZmFjZSBUYWJsZUNoYW5nZXMgZXh0ZW5kcyBTaW1wbGVDaGFuZ2VzIHtcblxuICBkYXRhU291cmNlPzogU2ltcGxlQ2hhbmdlLFxuICBwYWdpbmF0aW9uU3RhdGU/OiBTaW1wbGVDaGFuZ2UsXG4gIGluaXRpYWxTb3J0PzogU2ltcGxlQ2hhbmdlLFxuICBkb1BhZ2luYXRpb24/OiBTaW1wbGVDaGFuZ2UsXG4gIG5vRGF0YUZvdW5kPzogU2ltcGxlQ2hhbmdlXG4gIGVsZW1lbnRzUGVyUGFnZT86IFNpbXBsZUNoYW5nZVxufVxuXG5AQ29tcG9uZW50KHtcbiAgc2VsZWN0b3I6ICdpbmFpbC10YWJsZScsXG4gIHRlbXBsYXRlVXJsOiAnLi90YWJsZS5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsczogWycuL3RhYmxlLmNvbXBvbmVudC5jc3MnXSxcbiAgY2hhbmdlRGV0ZWN0aW9uOiBDSEFOR0VfREVURUNUSU9OX1NUUkFURUdZLFxuICBlbmNhcHN1bGF0aW9uOiBWaWV3RW5jYXBzdWxhdGlvbi5Ob25lXG59KVxuZXhwb3J0IGNsYXNzIFRhYmxlQ29tcG9uZW50IGV4dGVuZHMgUmVzcG9uc2l2ZUVsZW1lbnRDb21wb25lbnQgaW1wbGVtZW50cyBPbkNoYW5nZXMsIE9uSW5pdCwgQWZ0ZXJWaWV3SW5pdCwgQWZ0ZXJWaWV3Q2hlY2tlZCwgT25EZXN0cm95IHtcblxuICB0YWJsZUxlbmd0aDogbnVtYmVyO1xuICBjdXJyZW50UGFnZTogbnVtYmVyO1xuICBleHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gLS0tIFBhZ2luYXppb25lIElOVEVSTkEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuICAvLyBPYmJsaWdhdG9yaW9cbiAgQElucHV0KClcbiAgZGF0YVNvdXJjZTogYW55W107XG5cbiAgLy8gT2JibGlnYXRvcmlvXG4gIEBJbnB1dCgpXG4gIGRpc3BsYXllZERhdGE6IGFueVtdO1xuXG4gIEBPdXRwdXQoKVxuICBkaXNwbGF5ZWREYXRhQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxhbnlbXT4oKTtcblxuICBASW5wdXQoKVxuICBkb1BhZ2luYXRpb246IE9ic2VydmFibGU8UGFnaW5hdGlvblN0YXRlPjtcblxuICBASW5wdXQoKVxuICBlbGVtZW50c1BlclBhZ2U6IG51bWJlciA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy50YWJsZUNvbXBvbmVudD8uZWxlbWVudHNQZXJQYWdlLCBERUZBVUxUX1RBQkxFX0xFTkdUSCk7XG5cbiAgQElucHV0KClcbiAgaW5pdGlhbFNvcnQ6IFNvcnRTdGF0ZTtcblxuICAvLyAtLS0gUGFnaW5hemlvbmUgRVNURVJOQSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIE9iYmxpZ2F0b3Jpb1xuICBASW5wdXQoKVxuICBwYWdpbmF0aW9uU3RhdGU6IFBhZ2luYXRpb25TdGF0ZTtcblxuICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIEBJbnB1dCgpXG4gIGVsZW1lbnRzUGVyUGFnZU9wdGlvbnM6IG51bWJlcltdID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/LnRhYmxlQ29tcG9uZW50Py5lbGVtZW50c1BlclBhZ2VPcHRpb25zLCBbMTAsIDI1LCA1MCwgMTAwXSk7XG5cbiAgLy8gQElucHV0KClcbiAgLy8gd2FpdGluZzogYm9vbGVhbiA9IGZhbHNlO1xuXG4gIC8vIEBJbnB1dCgpXG4gIC8vIHdhaXRpbmdUZXh0OiBzdHJpbmcgPSAnUmVjdXBlcm8gaW4gY29yc28uLi4nO1xuXG4gIEBJbnB1dCgpXG4gIG5vRGF0YUZvdW5kOiBib29sZWFuID0gdW5kZWZpbmVkO1xuXG4gIEBJbnB1dCgpXG4gIG5vRGF0YUZvdW5kVGV4dDogc3RyaW5nID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/LnRhYmxlQ29tcG9uZW50Py5ub0RhdGFGb3VuZFRleHQsICdOZXNzdW4gZWxlbWVudG8gdHJvdmF0bycpO1xuXG4gIEBJbnB1dCgpXG4gIGRpc2FibGVQYWdpbmF0aW9uOiBib29sZWFuID0gZmFsc2U7XG5cbiAgQE91dHB1dCgpXG4gIHBhZ2luYXRpb24gPSBuZXcgRXZlbnRFbWl0dGVyPFBhZ2luYXRpb25TdGF0ZT4oKTtcblxuICBASW5wdXQoKVxuICB0YWxsUm93czogYm9vbGVhbiA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy50YWJsZUNvbXBvbmVudD8udGFsbFJvd3MsIGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBjYXB0aW9uOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgY2FwdGlvbkhpZGRlbjogYm9vbGVhbiA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy50YWJsZUNvbXBvbmVudD8uY2FwdGlvbkhpZGRlbiwgZmFsc2UpO1xuXG4gIEBJbnB1dCgpXG4gIHNob3dGdWxsTGlzdFNpemU6IGJvb2xlYW4gPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8udGFibGVDb21wb25lbnQ/LnNob3dGdWxsTGlzdFNpemUsIGZhbHNlKTtcblxuICBASW5wdXQoKVxuICBmdWxsTGlzdFNpemVUZXh0OiBzdHJpbmcgPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8udGFibGVDb21wb25lbnQ/LmZ1bGxMaXN0U2l6ZVRleHQsIFwiRWxlbWVudGkgdG90YWxpOlwiKTtcblxuICBASW5wdXQoKVxuICBiZ1doaXRlOiBib29sZWFuID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/LnRhYmxlQ29tcG9uZW50Py5iZ1doaXRlLCB0cnVlKTtcblxuICBASW5wdXQoKVxuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHRhYmxlQ2xhc3M6IHN0cmluZztcblxuICBASW5wdXQoKVxuICB0aXRsZTogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHRpdGxlQ2xhc3M6IHN0cmluZztcblxuICBASW5wdXQoKVxuICBkZXRhaWxzTGluazogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHNlbGVjdGFibGVSb3dWYWx1ZXM6IHN0cmluZ1tdO1xuXG4gIEBPdXRwdXQoKVxuICBkZXRhaWxzQ2xpY2s6IEV2ZW50RW1pdHRlcjx2b2lkPiA9IG5ldyBFdmVudEVtaXR0ZXI8dm9pZD4oKTtcblxuICBASW5wdXQoKVxuICBjaGVja2VkUm93czogc3RyaW5nW107XG5cbiAgQE91dHB1dCgpXG4gIGNoZWNrZWRSb3dzQ2hhbmdlOiBFdmVudEVtaXR0ZXI8c3RyaW5nW10+ID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4oKTtcblxuICBAQ29udGVudENoaWxkcmVuKFRoTGFiZWxDb21wb25lbnQsIHtkZXNjZW5kYW50czogdHJ1ZX0pXG4gIHRoTGFiZWxDb21wb25lbnRzOiBRdWVyeUxpc3Q8VGhMYWJlbENvbXBvbmVudD47XG5cbiAgQENvbnRlbnRDaGlsZHJlbihUckNoZWNrYm94Q29tcG9uZW50LCB7ZGVzY2VuZGFudHM6IHRydWV9KVxuICB0ckNoZWNrYm94Q29tcG9uZW50czogUXVlcnlMaXN0PFRyQ2hlY2tib3hDb21wb25lbnQ+O1xuXG4gIEBWaWV3Q2hpbGQoSW5haWxUYWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudClcbiAgdGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnQ6IEluYWlsVGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnQ7XG5cbiAgQFZpZXdDaGlsZCgnYmFzZUZvb3RlcicpXG4gIGJhc2VGb290ZXI6IEVsZW1lbnRSZWY7XG5cbiAgdmlzdWFsaXp6YUJhc2VGb290ZXI6IGJvb2xlYW4gPSB0cnVlO1xuXG4gIG51bWVyb0NvbG9ubmU6IG51bWJlcjtcblxuICAvLyBJbnNpZW1pIGRlbGxlIFN1YnNjcmlwdGlvbiBhZ2xpIGV2ZW50aSBkZWkgVHJDaGVja2JveENvbXBvbmVudFxuICB0cmNiSW5pdFN1YnNjcmlwdGlvbnM6IHsgW2lkOiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfSA9IHt9O1xuICB0cmNiQ2xpY2tTdWJzY3JpcHRpb25zOiB7IFtpZDogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcbiAgdHJjYkRlc3Ryb3lTdWJzY3JpcHRpb25zOiB7IFtpZDogc3RyaW5nXTogU3Vic2NyaXB0aW9uIH0gPSB7fTtcblxuICByaWdoZVNlbGV6aW9uYXRlOiBzdHJpbmdbXSA9IFtdO1xuICByaWdoZVNlbGV6aW9uYWJpbGk6IHN0cmluZ1tdID0gW107XG5cbiAgZ2V0UGFnZVNpemUgPSAoKTogbnVtYmVyID0+IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplIDogdGhpcy50YWJsZUxlbmd0aDtcbiAgZ2V0TGlzdFNpemUgPSAoKTogbnVtYmVyID0+IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLmZ1bGxMaXN0U2l6ZSA6IHRoaXMuZGF0YVNvdXJjZS5sZW5ndGg7XG4gIGdldEN1cnJlbnRQYWdlID0gKCk6IG51bWJlciA9PiB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5wYWdpbmF0aW9uU3RhdGUgPyB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlTnVtYmVyIDogdGhpcy5jdXJyZW50UGFnZTtcbiAgZ2V0RnVsbExpc3RTaXplID0gKCk6IG51bWJlciA9PiB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgPyB0aGlzLnBhZ2luYXRpb25TdGF0ZT8uZnVsbExpc3RTaXplIDogdGhpcy5kYXRhU291cmNlPy5sZW5ndGg7XG5cbiAgc2hvd05vRGF0YUZvdW5kID0gKCk6IGJvb2xlYW4gPT4gdGhpcy5ub0RhdGFGb3VuZCAhPSB1bmRlZmluZWQgPyB0aGlzLm5vRGF0YUZvdW5kIDogKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlPy5mdWxsTGlzdFNpemUgPT09IDAgOiB0aGlzLmRhdGFTb3VyY2U/Lmxlbmd0aCA9PT0gMCk7XG5cbiAgLy8gT3BlcmF0b3JpIHBlciBnZXN0aW9uZSBzZWxlemlvbmUgcmlnaGVcbiAgaXNDaGVja2VkID0gKHRyY2JWYWx1ZTogc3RyaW5nKTogYm9vbGVhbiA9PiB0aGlzLnJpZ2hlU2VsZXppb25hdGUuc29tZSh2YWx1ZSA9PiB2YWx1ZSA9PSB0cmNiVmFsdWUpO1xuICBpc0FsbENoZWNrZWQgPSAoKTogYm9vbGVhbiA9PiB0aGlzLnJpZ2hlU2VsZXppb25hYmlsaS5sZW5ndGggPiAwICYmIHRoaXMucmlnaGVTZWxlemlvbmFiaWxpLmV2ZXJ5KHRoaXMuaXNDaGVja2VkKTtcbiAgaXNUaENoZWNrYm94ID0gKHRyY2I6IFRyQ2hlY2tib3hDb21wb25lbnQpOiBib29sZWFuID0+IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYHRoICMke3RyY2IuaWR9YCkubGVuZ3RoID4gMDtcbiAgaXNTZWxlemlvbmFiaWxlID0gKHZhbHVlOiBzdHJpbmcpID0+IHRoaXMucmlnaGVTZWxlemlvbmFiaWxpLnNvbWUodmFsb3JlU2VsZXppb25hYmlsZSA9PiB2YWxvcmVTZWxlemlvbmFiaWxlID09IHZhbHVlKTtcblxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIGNkcjogQ2hhbmdlRGV0ZWN0b3JSZWYsXG4gICAgICAgICAgICAgIHByaXZhdGUgcmVuZGVyZXI6IFJlbmRlcmVyMixcbiAgICAgICAgICAgICAgQEluamVjdChOR19JTkFJTF9DT01NT05fQ09ORklHKVxuICAgICAgICAgICAgICBwcml2YXRlIGxpYkNvbmZpZzogTmdJbmFpbENvbW1vbkNvbmZpZykge1xuICAgIHN1cGVyKGNkciwgbGliQ29uZmlnKTtcbiAgICB0aGlzLmxvZ1ByZWZpeCA9ICdbaW5haWwtdGFibGVdJztcbiAgICBzdXBlci5vdmVycmlkZUNvbmZpZyhsaWJDb25maWc/LnRhYmxlQ29tcG9uZW50KTtcbiAgICB0aGlzLmRldGFjaCgpO1xuICB9XG5cbiAgbmdPbkNoYW5nZXMoY2hhbmdlczogVGFibGVDaGFuZ2VzKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uQ2hhbmdlcyhjaGFuZ2VzKTtcblxuICAgIC8vIENvbnRyb2xsbyBzZSBsYSBwYWdpbmF6aW9uZSByaWNoaWVzdGEgZScgaW50ZXJuYSBvIGVzdGVybmFcbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZ1xuICAgICAgJiYgY2hhbmdlcy5wYWdpbmF0aW9uU3RhdGU/LmZpcnN0Q2hhbmdlID09PSB0cnVlXG4gICAgICAmJiBjaGFuZ2VzLnBhZ2luYXRpb25TdGF0ZT8uY3VycmVudFZhbHVlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgPSB0cnVlO1xuICAgIH1cblxuICAgIC8vIE5vcm1hbGl6emF6aW9uZSBwYWdlTnVtYmVyIGUgcGFnZUluZGV4XG4gICAgaWYgKGNoYW5nZXMucGFnaW5hdGlvblN0YXRlPy5jdXJyZW50VmFsdWUpIHtcblxuICAgICAgdGhpcy5jaGVja0FuZEZpeFBhZ2VOdW1iZXJBbmRQYWdlSW5kZXgodGhpcy5wYWdpbmF0aW9uU3RhdGUpO1xuXG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uU3RhdGUucGFnZU51bWJlciA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlTnVtYmVyID0gMTtcbiAgICAgIH1cblxuICAgICAgaWYgKHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VJbmRleCA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlSW5kZXggPSAwO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIFNlIHBlciBsYSBwYWdpbmF6aW9uZSBlc3Rlcm5hIHZpZW5lIHNwZWNpZmljYXRhIHVuYSBwcm9wcmlldGEgZGkgc29ydGluZ1xuICAgIC8vIGF0dGl2byBpbCBjb21wb25lbnRlIHRoTGFiZWwgYXNzb2NpYXRvXG4gICAgaWYgKGNoYW5nZXMucGFnaW5hdGlvblN0YXRlPy5jdXJyZW50VmFsdWU/LnNvcnRQcm9wZXJ0eSkge1xuXG4gICAgICB0aGlzLmF0dGl2YVRoTGFiZWxPcmRpbmFtZW50b1NwZWNpZmljYXRvKCk7XG4gICAgfVxuXG4gICAgLy8gU2UgcGVyIGxhIHBhZ2luYXppb25lIGludGVybmEgdmllbmUgc3BlY2lmaWNhdG8gdW4gb3JkaW5hbWVudG8gaW5pemlhbGVcbiAgICAvLyBhdHRpdm8gaWwgY29tcG9uZW50ZSB0aExhYmVsIGFzc29jaWF0b1xuICAgIGlmIChjaGFuZ2VzLmluaXRpYWxTb3J0Py5jdXJyZW50VmFsdWU/LnNvcnRQcm9wZXJ0eSkge1xuXG4gICAgICB0aGlzLmF0dGl2YVRoTGFiZWxPcmRpbmFtZW50b1NwZWNpZmljYXRvKCk7XG4gICAgfVxuXG4gICAgLy8gVmVyaWZpY28gc2UgZScgY2FtYmlhdGEgbGEgbGlzdGEgZGVnbGkgZWxlbWVudGkgaW4gaW5wdXQuXG4gICAgLy8gTmVsIGNhc28gaW4gY3VpIHNpIHN0aWEgZWZmZXR0dWFuZG8gdW5hIHBhZ2luYXppb25lIGludGVybmFcbiAgICAvLyBlbWV0dG8gaWwgc290dG9pbnNpZW1lIGluZXJlbnRlIGxhIHByaW1hIHBhZ2luYVxuICAgIGlmIChjaGFuZ2VzLmRhdGFTb3VyY2UgIT0gdW5kZWZpbmVkXG4gICAgICAmJiAhY2hhbmdlcy5kYXRhU291cmNlLmZpcnN0Q2hhbmdlXG4gICAgICAmJiAhdGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nKSB7XG5cbiAgICAgIGlmICh0aGlzLnRhYmxlUGFnZVNlbGVjdG9yQ29tcG9uZW50KSB7XG5cbiAgICAgICAgdGhpcy50YWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudC5jdXJyZW50UGFnZSA9IDE7XG4gICAgICB9XG5cbiAgICAgIHRoaXMuZW1pdFN1YnNldCgxKTtcbiAgICB9XG5cbiAgICAvLyBSaWNoaWVzdGEgZGkgcGFnaW5hemlvbmVcbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZ1xuICAgICAgJiYgY2hhbmdlcy5kb1BhZ2luYXRpb24/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLnB1c2goXG4gICAgICAgIGNoYW5nZXMuZG9QYWdpbmF0aW9uLmN1cnJlbnRWYWx1ZS5zdWJzY3JpYmUoKGluZm86IFBhZ2luYXRpb25TdGF0ZSkgPT4ge1xuXG4gICAgICAgICAgdGhpcy5jaGVja0FuZEZpeFBhZ2VOdW1iZXJBbmRQYWdlSW5kZXgoaW5mbyk7XG4gICAgICAgICAgdGhpcy5sZW5ndGhPbkNoYW5nZShpbmZvLnBhZ2VTaXplKTtcbiAgICAgICAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMuZG9Tb3J0aW5nKGluZm8uc29ydFByb3BlcnR5LCBpbmZvLnNvcnREaXJlY3Rpb24pLCAxMDApO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5wYWdlT25DaGFuZ2UoaW5mby5wYWdlTnVtYmVyKSwgMjAwKTtcbiAgICAgICAgfSlcbiAgICAgICk7XG4gICAgfVxuXG4gICAgLy8gRWxlbWVudGkgcGVyIHBhZ2luYVxuICAgIGlmIChjaGFuZ2VzLmVsZW1lbnRzUGVyUGFnZSAhPSB1bmRlZmluZWRcbiAgICAgICYmICFjaGFuZ2VzLmVsZW1lbnRzUGVyUGFnZS5maXJzdENoYW5nZVxuICAgICAgJiYgIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICB0aGlzLmxlbmd0aE9uQ2hhbmdlKHRoaXMuZWxlbWVudHNQZXJQYWdlKTtcbiAgICB9XG5cbiAgICAvLyBDYWxjb2xvIGlsIG51bWVybyBkaSBjb2xvbm5lIHZpc2liaWxpXG4gICAgaWYgKGNoYW5nZXMubm9EYXRhRm91bmQ/LmN1cnJlbnRWYWx1ZSA9PT0gdHJ1ZSkge1xuXG4gICAgICAvLyBzZXRUaW1lb3V0KCgpID0+IHRoaXMubnVtZXJvQ29sb25uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCMke3RoaXMuaWR9IHRoYCkubGVuZ3RoKTtcbiAgICAgIHRoaXMubnVtZXJvQ29sb25uZSA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoYCMke3RoaXMuaWR9IHRoYCkubGVuZ3RoO1xuICAgIH1cblxuICAgIGlmIChjaGFuZ2VzLnNlbGVjdGFibGVSb3dWYWx1ZXM/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hYmlsaSA9IFsuLi5jaGFuZ2VzLnNlbGVjdGFibGVSb3dWYWx1ZXM/LmN1cnJlbnRWYWx1ZV07XG4gICAgfVxuXG4gICAgLy8gUmlnaGUgc2VsZXppb25hdGUgaW4gaW5wdXRcbiAgICBpZihjaGFuZ2VzLmNoZWNrZWRSb3dzPy5jdXJyZW50VmFsdWUpIHtcblxuICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYXRlID0gWy4uLmNoYW5nZXMuY2hlY2tlZFJvd3M/LmN1cnJlbnRWYWx1ZV07XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgLy8gVmVyaWZpY2EgbGEgY29uZ3J1ZW56YSB0cmEgcGFnYU51bWJlciBlIHBhZ2VJbmRleFxuICAvLyBlIG5lIGFnZ2l1c3RhIGkgdmFsb3JpXG4gIC8vIGRhbmRvIGxhIHByaW9yaXRhIGFsIHBhZ2FOdW1iZXJcbiAgY2hlY2tBbmRGaXhQYWdlTnVtYmVyQW5kUGFnZUluZGV4KHN0YXRlOiBQYWdpbmF0aW9uU3RhdGUpIHtcblxuICAgIGlmIChzdGF0ZSkge1xuXG4gICAgICBpZiAoc3RhdGUucGFnZU51bWJlciA9PSB1bmRlZmluZWQgJiYgc3RhdGUucGFnZUluZGV4ICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIGlmIChzdGF0ZS5wYWdlSW5kZXggPCAwKSB7XG5cbiAgICAgICAgICBzdGF0ZS5wYWdlSW5kZXggPSAwO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RhdGUucGFnZU51bWJlciA9IHN0YXRlLnBhZ2VJbmRleCArIDE7XG5cbiAgICAgIH0gZWxzZSBpZiAoc3RhdGUucGFnZU51bWJlciAhPSB1bmRlZmluZWQpIHtcblxuICAgICAgICBpZiAoc3RhdGUucGFnZU51bWJlciA8IDEpIHtcblxuICAgICAgICAgIHN0YXRlLnBhZ2VOdW1iZXIgPSAxO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gSWwgcGFnZSBudW1iZXIgaGEgc2VtcHJlIGxhIHByaW9yaXRhIHN1bCBwYWdlIGluZGV4XG4gICAgICAgIHN0YXRlLnBhZ2VJbmRleCA9IHN0YXRlLnBhZ2VOdW1iZXIgLSAxO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIG5nT25Jbml0KCk6IHZvaWQge1xuXG4gICAgc3VwZXIubmdPbkluaXQoKTtcblxuICAgIHRoaXMudGFibGVMZW5ndGggPSB0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgPyB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSA6IHRoaXMuZWxlbWVudHNQZXJQYWdlO1xuXG4gICAgaWYgKCF0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcpIHtcblxuICAgICAgc2V0VGltZW91dCgoKSA9PiB7XG4gICAgICAgIC8vIGNvbnNvbGUuaW5mbygnbmdPbkluaXQtLS0nLCB0aGlzLmN1cnJlbnRQYWdlKVxuICAgICAgICB0aGlzLmVtaXRTdWJzZXQodGhpcy5jdXJyZW50UGFnZSB8fCAxKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3SW5pdCgpOiB2b2lkIHtcblxuICAgIHRoaXMuaW5pemlhbGl6emFUYWJlbGxhKHRoaXMudGhMYWJlbENvbXBvbmVudHMpO1xuICAgIHRoaXMubG9va0F0VGhMYWJlbCh0aGlzLnRoTGFiZWxDb21wb25lbnRzKTtcbiAgICB0aGlzLmF0dGl2YVRoTGFiZWxPcmRpbmFtZW50b1NwZWNpZmljYXRvKCk7XG5cbiAgICBzZXRUaW1lb3V0KCgpID0+IHRoaXMudmlzdWFsaXp6YUJhc2VGb290ZXIgPSB0aGlzLmJhc2VGb290ZXI/Lm5hdGl2ZUVsZW1lbnQuY2hpbGRFbGVtZW50Q291bnQgPiAwKTtcbiAgICB0aGlzLm51bWVyb0NvbG9ubmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjJHt0aGlzLmlkfSB0aGApLmxlbmd0aDtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcblxuICAgIHRoaXMuZ2VzdGlzY2lUckNoZWNrYm94KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcblxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogR2VzdGlvbmUgZGVpIGNoZWNrYm94IHBlciBsYSBzZWxlemlvbmUgZGVsbGUgcmlnaGVcbiAgICovXG4gIHB1YmxpYyBnZXN0aXNjaVRyQ2hlY2tib3goKSB7XG5cbiAgICBpZiAodGhpcy50ckNoZWNrYm94Q29tcG9uZW50cz8ubGVuZ3RoID4gMCkge1xuXG4gICAgICB0aGlzLnRyQ2hlY2tib3hDb21wb25lbnRzLmZvckVhY2goKHRyY2I6IFRyQ2hlY2tib3hDb21wb25lbnQpID0+IHtcblxuICAgICAgICAvLyBHZXN0aW9uZSBldmVudG8gaW5pdENvbXBsZXRlXG4gICAgICAgIC8vIEVmZmV0dHVvIGxhIHN1YnNjcmliZSBzZSBub24gbmUgZScgZ2lhIHByZXNlbnRlXG4gICAgICAgIC8vIHVuYSBTdWJzY3JpcHRpb24gcGVyIHF1ZWwgdHJjYlxuICAgICAgICBpZiAodGhpcy50cmNiSW5pdFN1YnNjcmlwdGlvbnNbdHJjYi5pZF0gPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICB0aGlzLnRyY2JJbml0U3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9IHRyY2IuaW5pdENvbXBsZXRlLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgIC8vIFNlIGwnaW5zaWVtZSBkaSB0dXR0aSBpIHZhbG9yaSBzZWxlemlvbmFiaWxpXG4gICAgICAgICAgICAvLyBub24gZScgc3RhdG8gcGFzc2F0byBkYWxsJ2VzdGVybm9cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGVSb3dWYWx1ZXMgPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICAgICAgLy8gUmljYWxjb2xvIGkgdmFsb3JpIHNlbGV6aW9uYWJpbGlcbiAgICAgICAgICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYWJpbGkgPSB0aGlzLnRyQ2hlY2tib3hDb21wb25lbnRzLmZpbHRlcih0cmNiID0+ICF0aGlzLmlzVGhDaGVja2JveCh0cmNiKSkubWFwKHRyY2IgPT4gdHJjYi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXN0aW9uZSBldmVudG8gY2xpY2tcbiAgICAgICAgaWYgKHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9IHRyY2Iub25jbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc1RoQ2hlY2tib3godHJjYikpIHtcblxuICAgICAgICAgICAgICB0aGlzLmNoZWNrQWxsT25DbGljaygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jaGVja09uQ2xpY2sodHJjYi52YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZFJvd3NDaGFuZ2UuZW1pdCh0aGlzLnJpZ2hlU2VsZXppb25hdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2VzdGlvbmUgZXZlbnRvIG9uRGVzdHJveVxuICAgICAgICAvLyBRdWFuZG8gdW4gdGNyYiBlbWV0dGUgbCdldmVudG8gb25EZXN0cm95XG4gICAgICAgIC8vIGVmZmV0dHVvIGwndW5zdWJzY3JpYmUgYSB0dXR0aSBnbGkgZXZlbnRpIGFkIGVzc28gY29sbGVnYXRvXG4gICAgICAgIGlmICh0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIHRoaXMudHJjYkRlc3Ryb3lTdWJzY3JpcHRpb25zW3RyY2IuaWRdID0gdHJjYi5vbkRlc3Ryb3kuc3Vic2NyaWJlKCgpID0+IHtcblxuICAgICAgICAgICAgdGhpcy50cmNiSW5pdFN1YnNjcmlwdGlvbnNbdHJjYi5pZF0/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnRyY2JDbGlja1N1YnNjcmlwdGlvbnNbdHJjYi5pZF0/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXT8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgLy8gSW4gcXVlc3RvIG1vZG8gZXZpdG8gY2hlIGdsaSBvZ2dldHRpIGNyZXNjYW5vIGluIG1hbmllcmEgaW5jb250cm9sbGF0YVxuICAgICAgICAgICAgZGVsZXRlIHRoaXMudHJjYkluaXRTdWJzY3JpcHRpb25zW3RyY2IuaWRdO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEluZGljbyBhZCB1biB0cmNiIHNlIGUnIHNlbGV6aW9uYXRvLlxuICAgICAgdGhpcy50ckNoZWNrYm94Q29tcG9uZW50cy5mb3JFYWNoKCh0cmNiOiBUckNoZWNrYm94Q29tcG9uZW50KSA9PiB7XG5cbiAgICAgICAgaWYgKHRyY2IpIHtcblxuICAgICAgICAgIGlmICh0aGlzLmlzVGhDaGVja2JveCh0cmNiKSkge1xuXG4gICAgICAgICAgICB0cmNiLnNldENoZWNrZWQodGhpcy5pc0FsbENoZWNrZWQoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyY2Iuc2V0Q2hlY2tlZCh0aGlzLmlzQ2hlY2tlZCh0cmNiLnZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2sgZGkgdW4gdHJjYlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVDYlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja09uQ2xpY2sodmFsdWVDYjogc3RyaW5nKSB7XG5cbiAgICBpZiAodGhpcy5pc0NoZWNrZWQodmFsdWVDYikpIHtcblxuICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYXRlID0gdGhpcy5yaWdoZVNlbGV6aW9uYXRlLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPSB2YWx1ZUNiKTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUucHVzaCh2YWx1ZUNiKTtcbiAgICB9XG4gIH1cblxuICBjaGVja0FsbE9uQ2xpY2soKSB7XG5cbiAgICBpZiAodGhpcy5pc0FsbENoZWNrZWQoKSkge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUgPSB0aGlzLnJpZ2hlU2VsZXppb25hdGUuZmlsdGVyKHZhbHVlID0+ICF0aGlzLmlzU2VsZXppb25hYmlsZSh2YWx1ZSkpO1xuXG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYXRlID0gdGhpcy5yaWdoZVNlbGV6aW9uYXRlLmNvbmNhdCh0aGlzLnJpZ2hlU2VsZXppb25hYmlsaS5maWx0ZXIodmFsdWUgPT4gIXRoaXMuaXNDaGVja2VkKHZhbHVlKSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZldHR1YSB2YXJpZSBvcGVyYXppb25pIGRpIGluaXppYWxpenphemlvbmUgZGVsbGEgdGFiZWxsYVxuICAgKi9cbiAgcHVibGljIGluaXppYWxpenphVGFiZWxsYSh0aExhYmVsQ29tcG9uZW50czogUXVlcnlMaXN0PFRoTGFiZWxDb21wb25lbnQ+KSB7XG5cbiAgICBpZiAodGhMYWJlbENvbXBvbmVudHMpIHtcblxuICAgICAgLy8gSW5pemlhbGl6em8gdHV0dGkgaSB0aCBkZWxsYSB0YWJlbGxhXG4gICAgICB0aExhYmVsQ29tcG9uZW50cy5mb3JFYWNoKFxuICAgICAgICAodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCkgPT4ge1xuXG4gICAgICAgICAgdGhpcy5tb2RpZmljYVRoKHRoTGFiZWwpO1xuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaSBtZXR0ZSBpbiBhc2NvbHRvIHN1Z2xpIGV2ZW50aSBlbWVzc2kgZGFpIHRoTGFiZWxDb21wb25lbnRzIGRhdGkgaW4gaW5wdXRcbiAgICogcGVyIHBvdGVyIGVzZWd1aXJlIGxlIG9wcG9ydHVuZSBhemlvbmlcbiAgICpcbiAgICogQHBhcmFtIHRoTGFiZWxDb21wb25lbnRzXG4gICAqL1xuICBwdWJsaWMgbG9va0F0VGhMYWJlbCh0aExhYmVsQ29tcG9uZW50czogUXVlcnlMaXN0PFRoTGFiZWxDb21wb25lbnQ+KSB7XG5cbiAgICBpZiAodGhMYWJlbENvbXBvbmVudHMpIHtcblxuICAgICAgdGhpcy50aExhYmVsQ29tcG9uZW50cyA9IHRoTGFiZWxDb21wb25lbnRzO1xuXG4gICAgICB0aExhYmVsQ29tcG9uZW50cy5mb3JFYWNoKFxuICAgICAgICAodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCkgPT4ge1xuXG4gICAgICAgICAgaWYgKHRoTGFiZWwpIHtcblxuICAgICAgICAgICAgLy8gU3Vic2NyaWJlIGFsIGNsaWNrIGRlbCB0aCBsYWJlbFxuICAgICAgICAgICAgdGhpcy5wdXNoKFxuICAgICAgICAgICAgICB0aExhYmVsLmNsaWNrLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoaW5mbzogU29ydGluZ0luZm8pID0+IHtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5wZXJmb3JtU29ydGluZyhpbmZvLCB0aExhYmVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBzb3J0UHJvcGVydHlcbiAgICogQHBhcmFtIHNvcnREaXJlY3Rpb25cbiAgICovXG4gIHB1YmxpYyBkb1NvcnRpbmcoc29ydFByb3BlcnR5OiBzdHJpbmcsIHNvcnREaXJlY3Rpb246IHN0cmluZykge1xuXG4gICAgbGV0IGluZm86IFNvcnRpbmdJbmZvID0ge1xuICAgICAgcHJvcGVydHk6IHNvcnRQcm9wZXJ0eSxcbiAgICAgIGRpcmVjdGlvbjogc29ydERpcmVjdGlvbiA9PSBBU0MgPyBUaExhYmVsQ29tcG9uZW50LkFTQyA6IHNvcnREaXJlY3Rpb24gPT0gREVTQyA/IFRoTGFiZWxDb21wb25lbnQuREVTQyA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGxldCB0aExhYmVsOiBUaExhYmVsQ29tcG9uZW50ID0gdGhpcy50aExhYmVsQ29tcG9uZW50cy5maW5kKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eSA9PSBzb3J0UHJvcGVydHkpO1xuXG4gICAgdGhpcy5wZXJmb3JtU29ydGluZyhpbmZvLCB0aExhYmVsKVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpbmZvXG4gICAqIEBwYXJhbSB0aExhYmVsXG4gICAqL1xuICBwZXJmb3JtU29ydGluZyhpbmZvOiBTb3J0aW5nSW5mbywgdGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCkge1xuXG4gICAgaWYgKHRoTGFiZWwgIT0gdW5kZWZpbmVkICYmIGluZm8gIT0gdW5kZWZpbmVkICYmIGluZm8ucHJvcGVydHkgIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgIGxldCBldmVudG9QYWdpbmF6aW9uZTogUGFnaW5hdGlvblN0YXRlID0ge307XG5cbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnNvcnRQcm9wZXJ0eSA9IGluZm8ucHJvcGVydHk7XG4gICAgICBldmVudG9QYWdpbmF6aW9uZS5zb3J0RGlyZWN0aW9uID0gaW5mby5kaXJlY3Rpb24gPT0gVGhMYWJlbENvbXBvbmVudC5BU0MgPyBBU0MgOiBpbmZvLmRpcmVjdGlvbiA9PSBUaExhYmVsQ29tcG9uZW50LkRFU0MgPyBERVNDIDogdW5kZWZpbmVkO1xuICAgICAgZXZlbnRvUGFnaW5hemlvbmUucGFnZU51bWJlciA9IDE7XG5cbiAgICAgIHRoaXMucmVzZXREaXJlY3Rpb25Tb3J0aW5nKHRoTGFiZWwsIHRoaXMudGhMYWJlbENvbXBvbmVudHMpO1xuICAgICAgdGhpcy5tb2RpZmljYVRoKHRoTGFiZWwpO1xuXG4gICAgICBpZiAodGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nKSB7XG5cbiAgICAgICAgZXZlbnRvUGFnaW5hemlvbmUuZnVsbExpc3RTaXplID0gdGhpcy5wYWdpbmF0aW9uU3RhdGUuZnVsbExpc3RTaXplO1xuICAgICAgICBldmVudG9QYWdpbmF6aW9uZS5wYWdlU2l6ZSA9IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplO1xuICAgICAgfSBlbHNlIHtcblxuICAgICAgICB0aGlzLm9yZGluYShpbmZvKTtcbiAgICAgICAgdGhpcy5lbWl0U3Vic2V0KDEpO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGlzLnBhZ2luYXRpb24uZW1pdChldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgICB0aGlzLmVtaXRQYWdpbmF0aW9uKGV2ZW50b1BhZ2luYXppb25lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVpbXBvc3RhIGFkIHVuc29ydGVkIHR1dHRpIGkgdGggbGFiZWwgYWQgZWNjZXppb25lXG4gICAqIGRpIHF1ZWxsaSBkYXRvIGluIGlucHV0XG4gICAqXG4gICAqIEBwYXJhbSB0aExhYmVsXG4gICAqIEBwYXJhbSB0aExhYmVsQ29tcG9uZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZXNldERpcmVjdGlvblNvcnRpbmcodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCwgdGhMYWJlbENvbXBvbmVudHM6IFF1ZXJ5TGlzdDxUaExhYmVsQ29tcG9uZW50Pikge1xuXG4gICAgaWYgKHRoTGFiZWxDb21wb25lbnRzKSB7XG5cbiAgICAgIHRoTGFiZWxDb21wb25lbnRzLmZvckVhY2goKGl0ZW06IFRoTGFiZWxDb21wb25lbnQpID0+IHtcblxuICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLnByb3BlcnR5ICE9IHRoTGFiZWwucHJvcGVydHkpIHtcblxuICAgICAgICAgIGl0ZW0uc2V0QXNVbnNvcnRlZCgpO1xuICAgICAgICAgIHRoaXMubW9kaWZpY2FUaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW9kaWZpY2EgbCdlbGVtZW50byB0aCBjaGUgY29udGllbmUgaWwgVGhMYWJlbENvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZmljYVRoKHRoTGFiZWxDb21wb25lbnQ6IFRoTGFiZWxDb21wb25lbnQpIHtcblxuICAgIGlmICh0aExhYmVsQ29tcG9uZW50ICYmIHRoTGFiZWxDb21wb25lbnQuc29ydGFibGUgPT09IHRydWUpIHtcblxuICAgICAgbGV0IHRoOiBIVE1MRWxlbWVudCA9IHRoTGFiZWxDb21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG5cbiAgICAgIGlmICh0aCkge1xuXG4gICAgICAgIHRoaXMucmVtb3ZlU29ydENsYXNzKHRoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aCwgdGhpcy5nZXRUaFNvcnRDbGFzcyh0aExhYmVsQ29tcG9uZW50LmRpcmVjdGlvbikpO1xuXG4gICAgICAgIHRoLnNldEF0dHJpYnV0ZSgnYXJpYS1zb3J0JywgdGhpcy5nZXRBcmlhU29ydFZhbHVlKHRoTGFiZWxDb21wb25lbnQuZGlyZWN0aW9uKSk7XG5cbiAgICAgICAgaWYgKHRoTGFiZWxDb21wb25lbnQuZGlyZWN0aW9uID09IFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQpIHtcblxuICAgICAgICAgIHRoLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1zb3J0Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnRcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlU29ydENsYXNzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGVsZW1lbnQsICdzb3J0aW5nX2FzYycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3NvcnRpbmdfZGVzYycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3NvcnRpbmcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldFRoU29ydENsYXNzKGRpcmVjdGlvbjogbnVtYmVyKSB7XG5cbiAgICBsZXQgdmFsdWU6IHN0cmluZ1xuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcblxuICAgICAgY2FzZSBUaExhYmVsQ29tcG9uZW50LkFTQzpcbiAgICAgICAgdmFsdWUgPSAnc29ydGluZ19hc2MnO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSBUaExhYmVsQ29tcG9uZW50LkRFU0M6XG4gICAgICAgIHZhbHVlID0gJ3NvcnRpbmdfZGVzYyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQ6XG4gICAgICAgIHZhbHVlID0gJ3NvcnRpbmcnO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldEFyaWFTb3J0VmFsdWUoZGlyZWN0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xuXG4gICAgbGV0IHZhbHVlOiBzdHJpbmdcblxuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG5cbiAgICAgIGNhc2UgVGhMYWJlbENvbXBvbmVudC5BU0M6XG4gICAgICAgIHZhbHVlID0gJ2FzY2VuZGluZyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuREVTQzpcbiAgICAgICAgdmFsdWUgPSAnZGVzY2VuZGluZyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQ6XG4gICAgICAgIHZhbHVlID0gJ25vbmUnO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgb3JkaW5hKGluZm86IFNvcnRpbmdJbmZvKSB7XG5cbiAgICBpZiAoaW5mbyAmJiB0aGlzLmRhdGFTb3VyY2UgJiYgaW5mby5wcm9wZXJ0eSkge1xuXG4gICAgICBpbmZvLmRpcmVjdGlvbiA9IGluZm8uZGlyZWN0aW9uICogLTE7XG5cbiAgICAgIGlmIChpbmZvLmRpcmVjdGlvbiA9PSBUaExhYmVsQ29tcG9uZW50LlVOU09SVEVEKSB7XG5cbiAgICAgICAgaW5mby5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LkFTQztcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQodGhpcy5wcm9wZXJ0eUNvbXBhcmF0b3IoaW5mby5wcm9wZXJ0eSwgaW5mby5kaXJlY3Rpb24pKTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IFtdLmNvbmNhdCh0aGlzLmRhdGFTb3VyY2UpO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9wZXJ0eUNvbXBhcmF0b3IocHJvcGVydHk6IHN0cmluZywgZGlyZWN0aW9uOiBudW1iZXIpIHtcblxuICAgIGxldCBwTGlzdCA9IHByb3BlcnR5ID8gcHJvcGVydHkuc3BsaXQoJy4nKSA6IHVuZGVmaW5lZDtcblxuICAgIGZ1bmN0aW9uIGVzdHJhaVZhbG9yZShlOiBhbnksIHBMaXN0OiBzdHJpbmdbXSk6IGFueSB7XG5cbiAgICAgIGlmIChlICYmIHBMaXN0KSB7XG5cbiAgICAgICAgaWYgKHBMaXN0Lmxlbmd0aCA+IDEpIHtcblxuICAgICAgICAgIHJldHVybiBlc3RyYWlWYWxvcmUoZVtwTGlzdFswXV0sIHBMaXN0LnNsaWNlKDEsIHBMaXN0Lmxlbmd0aCkpO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgcmV0dXJuIGVbcExpc3RbMF1dO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlMSwgZTIpIHtcblxuICAgICAgcmV0dXJuIChlc3RyYWlWYWxvcmUoZTEsIHBMaXN0KSA+IGVzdHJhaVZhbG9yZShlMiwgcExpc3QpID8gVGhMYWJlbENvbXBvbmVudC5ERVNDIDogVGhMYWJlbENvbXBvbmVudC5BU0MpICogZGlyZWN0aW9uO1xuICAgIH1cbiAgfVxuXG4gIGxlbmd0aE9uQ2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcblxuICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQgJiYgKCF0aGlzLnBhZ2luYXRpb25TdGF0ZSB8fCB2YWx1ZSAhPSB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSkpIHtcblxuICAgICAgbGV0IGV2ZW50b1BhZ2luYXppb25lOiBQYWdpbmF0aW9uU3RhdGUgPSB7fTtcblxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lID0gey4uLnRoaXMucGFnaW5hdGlvblN0YXRlfTtcblxuICAgICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlTGVuZ3RoICE9IHZhbHVlKSB7XG5cbiAgICAgICAgdGhpcy50YWJsZUxlbmd0aCA9IHZhbHVlO1xuICAgICAgICBldmVudG9QYWdpbmF6aW9uZSA9IHt9O1xuXG4gICAgICAgIHRoaXMuZW1pdFN1YnNldCgxKTtcbiAgICAgIH1cblxuICAgICAgZXZlbnRvUGFnaW5hemlvbmUucGFnZVNpemUgPSB2YWx1ZTtcbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnBhZ2VOdW1iZXIgPSAxO1xuXG4gICAgICAvLyB0aGlzLnBhZ2luYXRpb24uZW1pdChldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgICB0aGlzLmVtaXRQYWdpbmF0aW9uKGV2ZW50b1BhZ2luYXppb25lKTtcbiAgICB9XG4gIH1cblxuICBwYWdlT25DaGFuZ2UocGFnZTogbnVtYmVyKSB7XG5cbiAgICAvLyBjb25zb2xlLndhcm4oJ3BhZ2Ugc2VsZWN0ZWQ6JywgcGFnZSlcblxuICAgIGlmIChwYWdlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICBsZXQgZXZlbnRvUGFnaW5hemlvbmU6IFBhZ2luYXRpb25TdGF0ZTtcblxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lID0gey4uLnRoaXMucGFnaW5hdGlvblN0YXRlfTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBldmVudG9QYWdpbmF6aW9uZSA9IHt9O1xuICAgICAgICB0aGlzLmVtaXRTdWJzZXQocGFnZSk7XG4gICAgICB9XG5cbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnBhZ2VOdW1iZXIgPSBwYWdlO1xuICAgICAgLy8gdGhpcy5wYWdpbmF0aW9uLmVtaXQoZXZlbnRvUGFnaW5hemlvbmUpO1xuICAgICAgdGhpcy5lbWl0UGFnaW5hdGlvbihldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZW1pdFN1YnNldChwYWdlOiBudW1iZXIpIHtcblxuICAgIGlmIChwYWdlICYmICF0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5kYXRhU291cmNlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICBsZXQgZmlyc3RFbGVtZW50SW5kZXggPSB0aGlzLnRhYmxlTGVuZ3RoICogKHBhZ2UgLSAxKTtcblxuICAgICAgbGV0IGxhc3RJbmRleDogbnVtYmVyID0gTnVtYmVyKGZpcnN0RWxlbWVudEluZGV4KSArIE51bWJlcih0aGlzLnRhYmxlTGVuZ3RoKTtcblxuICAgICAgbGV0IGE6IGFueVtdID0gdGhpcy5kYXRhU291cmNlLnNsaWNlKGZpcnN0RWxlbWVudEluZGV4LCBsYXN0SW5kZXgpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0YUNoYW5nZS5lbWl0KGEpO1xuICAgIH1cbiAgfVxuXG4gIGVtaXRQYWdpbmF0aW9uKHN0YXRlOiBQYWdpbmF0aW9uU3RhdGUpIHtcblxuICAgIHRoaXMuY2hlY2tBbmRGaXhQYWdlTnVtYmVyQW5kUGFnZUluZGV4KHN0YXRlKTtcbiAgICB0aGlzLnBhZ2luYXRpb24uZW1pdChzdGF0ZSk7XG4gIH1cblxuICB2aXN1YWxpenphUGFnaW5hemlvbmUoKTogYm9vbGVhbiB7XG5cbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZVBhZ2luYXRpb25cbiAgICAgICYmICh0aGlzLmRhdGFTb3VyY2UgIT0gdW5kZWZpbmVkIHx8ICh0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgIT0gdW5kZWZpbmVkICYmIHRoaXMucGFnaW5hdGlvblN0YXRlICE9IHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGl2YSBpbCB0aCBsYWJlbCBpbmVyZW50ZSBsJ29yZGluYW1lbnRvIHNwZWNpZmljYXRvXG4gICAqL1xuICBhdHRpdmFUaExhYmVsT3JkaW5hbWVudG9TcGVjaWZpY2F0bygpIHtcblxuICAgIGlmICh0aGlzLnRoTGFiZWxDb21wb25lbnRzKSB7XG5cbiAgICAgIC8vIFBhZ2luYXppb25lIGVzdGVybmFcbiAgICAgIGlmICh0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5wYWdpbmF0aW9uU3RhdGUpIHtcblxuICAgICAgICBsZXQgdGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCA9IHRoaXMudGhMYWJlbENvbXBvbmVudHMuZmluZChpdGVtID0+IGl0ZW0ucHJvcGVydHkgPT0gdGhpcy5wYWdpbmF0aW9uU3RhdGUuc29ydFByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5zZXRTb3J0RGlyZWN0aW9uKHRoTGFiZWwsIHRoaXMucGFnaW5hdGlvblN0YXRlLnNvcnREaXJlY3Rpb24pO1xuICAgICAgfVxuICAgICAgLy8gT3JkaW5hbWVudG8gaW5pemlhbGUgcGFnaW5hemlvbmUgaW50ZXJuYVxuICAgICAgZWxzZSBpZiAodGhpcy5pbml0aWFsU29ydCkge1xuXG4gICAgICAgIHRoaXMudGhMYWJlbENvbXBvbmVudHMuZm9yRWFjaCh0aExhYmVsID0+IHtcblxuICAgICAgICAgIHRoTGFiZWwucHJvcGVydHkgPT0gdGhpcy5pbml0aWFsU29ydC5zb3J0UHJvcGVydHlcbiAgICAgICAgICAgID8gdGhpcy5zZXRTb3J0RGlyZWN0aW9uKHRoTGFiZWwsIHRoaXMuaW5pdGlhbFNvcnQuc29ydERpcmVjdGlvbilcbiAgICAgICAgICAgIDogdGhpcy5zZXRTb3J0RGlyZWN0aW9uKHRoTGFiZWwsIHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFNvcnREaXJlY3Rpb24odGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCwgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uKSB7XG5cbiAgICBpZiAodGhMYWJlbCkge1xuXG4gICAgICBsZXQgZGlyOiBzdHJpbmcgPSBkaXJlY3Rpb24/LnRvU3RyaW5nKCk/LnRyaW0oKT8udG9Mb3dlckNhc2UoKTtcblxuICAgICAgc3dpdGNoIChkaXIpIHtcblxuICAgICAgICBjYXNlIFwiYXNjXCI6XG4gICAgICAgICAgdGhMYWJlbC5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LkFTQztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFwiZGVzY1wiOlxuICAgICAgICAgIHRoTGFiZWwuZGlyZWN0aW9uID0gVGhMYWJlbENvbXBvbmVudC5ERVNDO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhMYWJlbC5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LlVOU09SVEVEO1xuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHRoaXMubW9kaWZpY2FUaCh0aExhYmVsKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJlbGxhIHRhYmxlLXJlc3BvbnNpdmUgaW5haWwtdGFibGUge3tnZXRSZXNwb25zaXZlQ2xhc3MoKX19IG5vUGFkZGluZ0xlZnQge3tjbGFzc319IG5vUGFkZGluZ1JpZ2h0XCI+XG5cbiAgPGgzICpuZ0lmPVwidGl0bGVcIlxuICAgICAgY2xhc3M9XCJjb2wteHMtMTIgdGFibGUtdGl0bGUgcHVsbC1sZWZ0IG5vUGFkZGluZ0xlZnQge3t0aXRsZUNsYXNzfX1cIlxuICAgICAgW2lubmVySFRNTF09XCJ0aXRsZVwiPlxuICA8L2gzPlxuXG4gIDxhICpuZ0lmPVwiZGV0YWlsc0xpbmtcIlxuICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgKGNsaWNrKT1cImRldGFpbHNDbGljay5lbWl0KClcIlxuICAgICBjbGFzcz1cImNvbC14cy0zIGNvbC1zbS0yIGxpbmtEZXR0YWdsaSBwdWxsLXJpZ2h0XCJcbiAgICAgW2lubmVySFRNTF09XCJkZXRhaWxzTGlua1wiPlxuICA8L2E+XG5cbiAgPGRpdiAqbmdJZj1cImRlc2NyaXB0aW9uXCJcbiAgICAgICBjbGFzcz1cImNvbC14cy0xMiBjYXB0aW9uIG1hcmdpbkJvdHRvbSBub1BhZGRpbmdMZWZ0XCJcbiAgICAgICBbaW5uZXJIVE1MXT1cImRlc2NyaXB0aW9uXCI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJzaG93RnVsbExpc3RTaXplXCJcbiAgICAgICBjbGFzcz1cInRvdGFsLWVsZW1lbnRzXCI+XG4gICAgPHNwYW4gW2lubmVySFRNTF09XCJmdWxsTGlzdFNpemVUZXh0XCI+PC9zcGFuPiB7e2dldEZ1bGxMaXN0U2l6ZSgpIHx8IDB9fVxuICA8L2Rpdj5cblxuICA8aW5haWwtdGFibGUtcGFnZS1sZW5ndGgtc2VsZWN0b3IgKm5nSWY9XCJ2aXN1YWxpenphUGFnaW5hemlvbmUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0UGFnZVNpemUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVJZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJlbGVtZW50c1BlclBhZ2VPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJsZW5ndGhPbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwibG9nT25Db25zb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2cpPVwibG9nLmVtaXQoJGV2ZW50KVwiPlxuICA8L2luYWlsLXRhYmxlLXBhZ2UtbGVuZ3RoLXNlbGVjdG9yPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0cnVlXCI+XG5cbiAgICA8dGFibGUgaWQ9XCJ7e2lkfX1cIlxuICAgICAgICAgICBjbGFzcz1cInRhYmxlIGRpc3BsYXkgZGF0YVRhYmxlIHt7dGFibGVDbGFzc319XCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0YWJlbGxhLWJhc2UnOiAhdGFsbFJvd3MsICdiZy13aGl0ZSc6IGJnV2hpdGUsICdiZy10cmFuc3BhcmVudCc6ICFiZ1doaXRlfVwiPlxuXG4gICAgICA8Y2FwdGlvbiAqbmdJZj1cImNhcHRpb25cIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzci1vbmx5JzogY2FwdGlvbkhpZGRlbn1cIlxuICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjYXB0aW9uXCI+XG4gICAgICA8L2NhcHRpb24+XG5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInRoZWFkXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dOb0RhdGFGb3VuZCgpXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInRib2R5XCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDx0Ym9keSAqbmdJZj1cInNob3dOb0RhdGFGb3VuZCgpXCI+XG4gICAgICA8dHIgcm9sZT1cInJvd1wiPlxuICAgICAgICA8dGQgY2xhc3M9XCJjb250ZW50LXRleHRcIlxuICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAzMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXJcIlxuICAgICAgICAgICAgW2NvbFNwYW5dPVwibnVtZXJvQ29sb25uZVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm5vRGF0YUZvdW5kVGV4dFwiPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cblxuICAgIDxkaXYgI2Jhc2VGb290ZXJcbiAgICAgICAgIGNsYXNzPVwiY29sLXhzLTEyIGJhc2VGb290ZXIgbm9QYWRkaW5nTGVmdFwiXG4gICAgICAgICAqbmdJZj1cInZpc3VhbGl6emFCYXNlRm9vdGVyXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYmFzZUZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGluYWlsLXRhYmxlLXBhZ2Utc2VsZWN0b3IgKm5nSWY9XCJ2aXN1YWxpenphUGFnaW5hemlvbmUoKSAmJiAhdGhpcy5zaG93Tm9EYXRhRm91bmQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0U2l6ZV09XCJnZXRMaXN0U2l6ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cImdldFBhZ2VTaXplKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiZ2V0Q3VycmVudFBhZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJsZUlkXT1cImlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdCk9XCJwYWdlT25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwibG9nT25Db25zb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZyk9XCJsb2cuZW1pdCgkZXZlbnQpXCI+XG4gIDwvaW5haWwtdGFibGUtcGFnZS1zZWxlY3Rvcj5cblxuPC9kaXY+XG4iXX0=
|
|
596
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGFibGUuY29tcG9uZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvbmctaW5haWwtY29tbW9uL3NyYy9saWIvY29tcG9uZW50cy9jb3JlL3RhYmxlL3RhYmxlL3RhYmxlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL25nLWluYWlsLWNvbW1vbi9zcmMvbGliL2NvbXBvbmVudHMvY29yZS90YWJsZS90YWJsZS90YWJsZS5jb21wb25lbnQuaHRtbCJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBSUwsU0FBUyxFQUNULGVBQWUsRUFFZixZQUFZLEVBQUUsTUFBTSxFQUNwQixLQUFLLEVBSUwsTUFBTSxFQUtOLFNBQVMsRUFDVCxpQkFBaUIsRUFDbEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFDLHlCQUF5QixFQUFFLGNBQWMsRUFBQyxNQUFNLHNCQUFzQixDQUFDO0FBQy9FLE9BQU8sRUFBQywwQkFBMEIsRUFBQyxNQUFNLG9DQUFvQyxDQUFDO0FBRTlFLE9BQU8sRUFBQywrQkFBK0IsRUFBQyxNQUFNLGtFQUFrRSxDQUFDO0FBQ2pILE9BQU8sRUFBYyxnQkFBZ0IsRUFBQyxNQUFNLGdDQUFnQyxDQUFDO0FBQzdFLE9BQU8sRUFBQyxtQkFBbUIsRUFBQyxNQUFNLHNDQUFzQyxDQUFDO0FBQ3pFLE9BQU8sRUFBQyxzQkFBc0IsRUFBc0IsTUFBTSxvQ0FBb0MsQ0FBQzs7Ozs7QUFFL0YsTUFBTSxvQkFBb0IsR0FBVyxFQUFFLENBQUM7QUFJeEMsTUFBTSxHQUFHLEdBQWtCLEtBQUssQ0FBQztBQUNqQyxNQUFNLElBQUksR0FBa0IsTUFBTSxDQUFDO0FBaUNuQyxNQUFNLE9BQU8sY0FBZSxTQUFRLDBCQUEwQjtJQTJJNUQsWUFBb0IsR0FBc0IsRUFDdEIsUUFBbUIsRUFFbkIsU0FBOEI7UUFDaEQsS0FBSyxDQUFDLEdBQUcs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VUFBVTtzQkFEVCxLQUFLO2dCQUlOLEtBQUs7c0JBREosS0FBSztnQkFJTixVQUFVO3NCQURULEtBQUs7Z0JBSU4sV0FBVztzQkFEVixLQUFLO2dCQUlOLG1CQUFtQjtzQkFEbEIsS0FBSztnQkFJTixZQUFZO3NCQURYLE1BQU07Z0JBSVAsV0FBVztzQkFEVixLQUFLO2dCQUlOLGlCQUFpQjtzQkFEaEIsTUFBTTtnQkFJUCxpQkFBaUI7c0JBRGhCLGVBQWU7dUJBQUMsZ0JBQWdCLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO2dCQUl0RCxvQkFBb0I7c0JBRG5CLGVBQWU7dUJBQUMsbUJBQW1CLEVBQUUsRUFBQyxXQUFXLEVBQUUsSUFBSSxFQUFDO2dCQUl6RCwwQkFBMEI7c0JBRHpCLFNBQVM7dUJBQUMsK0JBQStCO2dCQUkxQyxVQUFVO3NCQURULFNBQVM7dUJBQUMsWUFBWSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIEFmdGVyVmlld0NoZWNrZWQsXG4gIEFmdGVyVmlld0luaXQsXG4gIENoYW5nZURldGVjdG9yUmVmLFxuICBDb21wb25lbnQsXG4gIENvbnRlbnRDaGlsZHJlbixcbiAgRWxlbWVudFJlZixcbiAgRXZlbnRFbWl0dGVyLCBJbmplY3QsXG4gIElucHV0LFxuICBPbkNoYW5nZXMsXG4gIE9uRGVzdHJveSxcbiAgT25Jbml0LFxuICBPdXRwdXQsXG4gIFF1ZXJ5TGlzdCxcbiAgUmVuZGVyZXIyLFxuICBTaW1wbGVDaGFuZ2UsXG4gIFNpbXBsZUNoYW5nZXMsXG4gIFZpZXdDaGlsZCxcbiAgVmlld0VuY2Fwc3VsYXRpb25cbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQge0NIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1ksIGdldENvbmZpZ1ZhbHVlfSBmcm9tIFwiLi4vLi4vYmFzZS5jb21wb25lbnRcIjtcbmltcG9ydCB7UmVzcG9uc2l2ZUVsZW1lbnRDb21wb25lbnR9IGZyb20gXCIuLi8uLi9yZXNwb25zaXZlLWVsZW1lbnQuY29tcG9uZW50XCI7XG5pbXBvcnQge09ic2VydmFibGUsIFN1YnNjcmlwdGlvbn0gZnJvbSBcInJ4anNcIjtcbmltcG9ydCB7SW5haWxUYWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudH0gZnJvbSBcIi4uL2luYWlsLXRhYmxlLXBhZ2Utc2VsZWN0b3IvaW5haWwtdGFibGUtcGFnZS1zZWxlY3Rvci5jb21wb25lbnRcIjtcbmltcG9ydCB7U29ydGluZ0luZm8sIFRoTGFiZWxDb21wb25lbnR9IGZyb20gXCIuLi90aC1sYWJlbC90aC1sYWJlbC5jb21wb25lbnRcIjtcbmltcG9ydCB7VHJDaGVja2JveENvbXBvbmVudH0gZnJvbSBcIi4uL3RyLWNoZWNrYm94L3RyLWNoZWNrYm94LmNvbXBvbmVudFwiO1xuaW1wb3J0IHtOR19JTkFJTF9DT01NT05fQ09ORklHLCBOZ0luYWlsQ29tbW9uQ29uZmlnfSBmcm9tIFwiLi4vLi4vLi4vLi4vbmctaW5haWwtY29tbW9uLmNvbmZpZ1wiO1xuXG5jb25zdCBERUZBVUxUX1RBQkxFX0xFTkdUSDogbnVtYmVyID0gMTA7XG5cbnR5cGUgU29ydERpcmVjdGlvbiA9ICdhc2MnIHwgJ2Rlc2MnO1xuXG5jb25zdCBBU0M6IFNvcnREaXJlY3Rpb24gPSAnYXNjJztcbmNvbnN0IERFU0M6IFNvcnREaXJlY3Rpb24gPSAnZGVzYyc7XG5cbmV4cG9ydCBpbnRlcmZhY2UgU29ydFN0YXRlIHtcblxuICBzb3J0UHJvcGVydHk/OiBzdHJpbmc7XG4gIHNvcnREaXJlY3Rpb24/OiAnYXNjJyB8ICdkZXNjJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBQYWdpbmF0aW9uU3RhdGUgZXh0ZW5kcyBTb3J0U3RhdGUge1xuXG4gIGZ1bGxMaXN0U2l6ZT86IG51bWJlcjtcbiAgcGFnZU51bWJlcj86IG51bWJlcjtcbiAgcGFnZUluZGV4PzogbnVtYmVyO1xuICBwYWdlU2l6ZT86IG51bWJlcjtcbn1cblxuaW50ZXJmYWNlIFRhYmxlQ2hhbmdlcyBleHRlbmRzIFNpbXBsZUNoYW5nZXMge1xuXG4gIGRhdGFTb3VyY2U/OiBTaW1wbGVDaGFuZ2UsXG4gIHBhZ2luYXRpb25TdGF0ZT86IFNpbXBsZUNoYW5nZSxcbiAgaW5pdGlhbFNvcnQ/OiBTaW1wbGVDaGFuZ2UsXG4gIGRvUGFnaW5hdGlvbj86IFNpbXBsZUNoYW5nZSxcbiAgbm9EYXRhRm91bmQ/OiBTaW1wbGVDaGFuZ2VcbiAgZWxlbWVudHNQZXJQYWdlPzogU2ltcGxlQ2hhbmdlXG59XG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ2luYWlsLXRhYmxlJyxcbiAgdGVtcGxhdGVVcmw6ICcuL3RhYmxlLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmxzOiBbJy4vdGFibGUuY29tcG9uZW50LmNzcyddLFxuICBjaGFuZ2VEZXRlY3Rpb246IENIQU5HRV9ERVRFQ1RJT05fU1RSQVRFR1ksXG4gIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmVcbn0pXG5leHBvcnQgY2xhc3MgVGFibGVDb21wb25lbnQgZXh0ZW5kcyBSZXNwb25zaXZlRWxlbWVudENvbXBvbmVudCBpbXBsZW1lbnRzIE9uQ2hhbmdlcywgT25Jbml0LCBBZnRlclZpZXdJbml0LCBBZnRlclZpZXdDaGVja2VkLCBPbkRlc3Ryb3kge1xuXG4gIHRhYmxlTGVuZ3RoOiBudW1iZXI7XG4gIGN1cnJlbnRQYWdlOiBudW1iZXI7XG4gIGV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmc6IGJvb2xlYW4gPSBmYWxzZTtcblxuICAvLyAtLS0gUGFnaW5hemlvbmUgSU5URVJOQSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4gIC8vIE9iYmxpZ2F0b3Jpb1xuICBASW5wdXQoKVxuICBkYXRhU291cmNlOiBhbnlbXTtcblxuICAvLyBPYmJsaWdhdG9yaW9cbiAgQElucHV0KClcbiAgZGlzcGxheWVkRGF0YTogYW55W107XG5cbiAgQE91dHB1dCgpXG4gIGRpc3BsYXllZERhdGFDaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPGFueVtdPigpO1xuXG4gIEBJbnB1dCgpXG4gIGRvUGFnaW5hdGlvbjogT2JzZXJ2YWJsZTxQYWdpbmF0aW9uU3RhdGU+O1xuXG4gIEBJbnB1dCgpXG4gIGVsZW1lbnRzUGVyUGFnZTogbnVtYmVyID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/LnRhYmxlQ29tcG9uZW50Py5lbGVtZW50c1BlclBhZ2UsIERFRkFVTFRfVEFCTEVfTEVOR1RIKTtcblxuICBASW5wdXQoKVxuICBpbml0aWFsU29ydDogU29ydFN0YXRlO1xuXG4gIC8vIC0tLSBQYWdpbmF6aW9uZSBFU1RFUk5BIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgLy8gT2JibGlnYXRvcmlvXG4gIEBJbnB1dCgpXG4gIHBhZ2luYXRpb25TdGF0ZTogUGFnaW5hdGlvblN0YXRlO1xuXG4gIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgQElucHV0KClcbiAgZWxlbWVudHNQZXJQYWdlT3B0aW9uczogbnVtYmVyW10gPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8udGFibGVDb21wb25lbnQ/LmVsZW1lbnRzUGVyUGFnZU9wdGlvbnMsIFsxMCwgMjUsIDUwLCAxMDBdKTtcblxuICAvLyBASW5wdXQoKVxuICAvLyB3YWl0aW5nOiBib29sZWFuID0gZmFsc2U7XG5cbiAgLy8gQElucHV0KClcbiAgLy8gd2FpdGluZ1RleHQ6IHN0cmluZyA9ICdSZWN1cGVybyBpbiBjb3Jzby4uLic7XG5cbiAgQElucHV0KClcbiAgbm9EYXRhRm91bmQ6IGJvb2xlYW4gPSB1bmRlZmluZWQ7XG5cbiAgQElucHV0KClcbiAgbm9EYXRhRm91bmRUZXh0OiBzdHJpbmcgPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8udGFibGVDb21wb25lbnQ/Lm5vRGF0YUZvdW5kVGV4dCwgJ05lc3N1biBlbGVtZW50byB0cm92YXRvJyk7XG5cbiAgQElucHV0KClcbiAgZGlzYWJsZVBhZ2luYXRpb246IGJvb2xlYW4gPSBmYWxzZTtcblxuICBAT3V0cHV0KClcbiAgcGFnaW5hdGlvbiA9IG5ldyBFdmVudEVtaXR0ZXI8UGFnaW5hdGlvblN0YXRlPigpO1xuXG4gIEBJbnB1dCgpXG4gIHRhbGxSb3dzOiBib29sZWFuID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/LnRhYmxlQ29tcG9uZW50Py50YWxsUm93cywgZmFsc2UpO1xuXG4gIEBJbnB1dCgpXG4gIGNhcHRpb246IHN0cmluZztcblxuICBASW5wdXQoKVxuICBjYXB0aW9uSGlkZGVuOiBib29sZWFuID0gZ2V0Q29uZmlnVmFsdWUodGhpcy5saWJDb25maWc/LnRhYmxlQ29tcG9uZW50Py5jYXB0aW9uSGlkZGVuLCBmYWxzZSk7XG5cbiAgQElucHV0KClcbiAgc2hvd0Z1bGxMaXN0U2l6ZTogYm9vbGVhbiA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy50YWJsZUNvbXBvbmVudD8uc2hvd0Z1bGxMaXN0U2l6ZSwgZmFsc2UpO1xuXG4gIEBJbnB1dCgpXG4gIGZ1bGxMaXN0U2l6ZVRleHQ6IHN0cmluZyA9IGdldENvbmZpZ1ZhbHVlKHRoaXMubGliQ29uZmlnPy50YWJsZUNvbXBvbmVudD8uZnVsbExpc3RTaXplVGV4dCwgXCJFbGVtZW50aSB0b3RhbGk6XCIpO1xuXG4gIEBJbnB1dCgpXG4gIGJnV2hpdGU6IGJvb2xlYW4gPSBnZXRDb25maWdWYWx1ZSh0aGlzLmxpYkNvbmZpZz8udGFibGVDb21wb25lbnQ/LmJnV2hpdGUsIHRydWUpO1xuXG4gIEBJbnB1dCgpXG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgdGFibGVDbGFzczogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIHRpdGxlOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgdGl0bGVDbGFzczogc3RyaW5nO1xuXG4gIEBJbnB1dCgpXG4gIGRldGFpbHNMaW5rOiBzdHJpbmc7XG5cbiAgQElucHV0KClcbiAgc2VsZWN0YWJsZVJvd1ZhbHVlczogc3RyaW5nW107XG5cbiAgQE91dHB1dCgpXG4gIGRldGFpbHNDbGljazogRXZlbnRFbWl0dGVyPHZvaWQ+ID0gbmV3IEV2ZW50RW1pdHRlcjx2b2lkPigpO1xuXG4gIEBJbnB1dCgpXG4gIGNoZWNrZWRSb3dzOiBzdHJpbmdbXTtcblxuICBAT3V0cHV0KClcbiAgY2hlY2tlZFJvd3NDaGFuZ2U6IEV2ZW50RW1pdHRlcjxzdHJpbmdbXT4gPSBuZXcgRXZlbnRFbWl0dGVyPHN0cmluZ1tdPigpO1xuXG4gIEBDb250ZW50Q2hpbGRyZW4oVGhMYWJlbENvbXBvbmVudCwge2Rlc2NlbmRhbnRzOiB0cnVlfSlcbiAgdGhMYWJlbENvbXBvbmVudHM6IFF1ZXJ5TGlzdDxUaExhYmVsQ29tcG9uZW50PjtcblxuICBAQ29udGVudENoaWxkcmVuKFRyQ2hlY2tib3hDb21wb25lbnQsIHtkZXNjZW5kYW50czogdHJ1ZX0pXG4gIHRyQ2hlY2tib3hDb21wb25lbnRzOiBRdWVyeUxpc3Q8VHJDaGVja2JveENvbXBvbmVudD47XG5cbiAgQFZpZXdDaGlsZChJbmFpbFRhYmxlUGFnZVNlbGVjdG9yQ29tcG9uZW50KVxuICB0YWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudDogSW5haWxUYWJsZVBhZ2VTZWxlY3RvckNvbXBvbmVudDtcblxuICBAVmlld0NoaWxkKCdiYXNlRm9vdGVyJylcbiAgYmFzZUZvb3RlcjogRWxlbWVudFJlZjtcblxuICB2aXN1YWxpenphQmFzZUZvb3RlcjogYm9vbGVhbiA9IHRydWU7XG5cbiAgbnVtZXJvQ29sb25uZTogbnVtYmVyO1xuXG4gIC8vIEluc2llbWkgZGVsbGUgU3Vic2NyaXB0aW9uIGFnbGkgZXZlbnRpIGRlaSBUckNoZWNrYm94Q29tcG9uZW50XG4gIHRyY2JJbml0U3Vic2NyaXB0aW9uczogeyBbaWQ6IHN0cmluZ106IFN1YnNjcmlwdGlvbiB9ID0ge307XG4gIHRyY2JDbGlja1N1YnNjcmlwdGlvbnM6IHsgW2lkOiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfSA9IHt9O1xuICB0cmNiRGVzdHJveVN1YnNjcmlwdGlvbnM6IHsgW2lkOiBzdHJpbmddOiBTdWJzY3JpcHRpb24gfSA9IHt9O1xuXG4gIHJpZ2hlU2VsZXppb25hdGU6IHN0cmluZ1tdID0gW107XG4gIHJpZ2hlU2VsZXppb25hYmlsaTogc3RyaW5nW10gPSBbXTtcblxuICBnZXRQYWdlU2l6ZSA9ICgpOiBudW1iZXIgPT4gdGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nID8gdGhpcy5wYWdpbmF0aW9uU3RhdGUucGFnZVNpemUgOiB0aGlzLnRhYmxlTGVuZ3RoO1xuICBnZXRMaXN0U2l6ZSA9ICgpOiBudW1iZXIgPT4gdGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nID8gdGhpcy5wYWdpbmF0aW9uU3RhdGUuZnVsbExpc3RTaXplIDogdGhpcy5kYXRhU291cmNlLmxlbmd0aDtcbiAgZ2V0Q3VycmVudFBhZ2UgPSAoKTogbnVtYmVyID0+IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyAmJiB0aGlzLnBhZ2luYXRpb25TdGF0ZSA/IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VOdW1iZXIgOiB0aGlzLmN1cnJlbnRQYWdlO1xuICBnZXRGdWxsTGlzdFNpemUgPSAoKTogbnVtYmVyID0+IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlPy5mdWxsTGlzdFNpemUgOiB0aGlzLmRhdGFTb3VyY2U/Lmxlbmd0aDtcblxuICBzaG93Tm9EYXRhRm91bmQgPSAoKTogYm9vbGVhbiA9PiB0aGlzLm5vRGF0YUZvdW5kICE9IHVuZGVmaW5lZCA/IHRoaXMubm9EYXRhRm91bmQgOiAodGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nID8gdGhpcy5wYWdpbmF0aW9uU3RhdGU/LmZ1bGxMaXN0U2l6ZSA9PT0gMCA6IHRoaXMuZGF0YVNvdXJjZT8ubGVuZ3RoID09PSAwKTtcblxuICAvLyBPcGVyYXRvcmkgcGVyIGdlc3Rpb25lIHNlbGV6aW9uZSByaWdoZVxuICBpc0NoZWNrZWQgPSAodHJjYlZhbHVlOiBzdHJpbmcpOiBib29sZWFuID0+IHRoaXMucmlnaGVTZWxlemlvbmF0ZS5zb21lKHZhbHVlID0+IHZhbHVlID09IHRyY2JWYWx1ZSk7XG4gIGlzQWxsQ2hlY2tlZCA9ICgpOiBib29sZWFuID0+IHRoaXMucmlnaGVTZWxlemlvbmFiaWxpLmxlbmd0aCA+IDAgJiYgdGhpcy5yaWdoZVNlbGV6aW9uYWJpbGkuZXZlcnkodGhpcy5pc0NoZWNrZWQpO1xuICBpc1RoQ2hlY2tib3ggPSAodHJjYjogVHJDaGVja2JveENvbXBvbmVudCk6IGJvb2xlYW4gPT4gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgdGggIyR7dHJjYi5pZH1gKS5sZW5ndGggPiAwO1xuICBpc1NlbGV6aW9uYWJpbGUgPSAodmFsdWU6IHN0cmluZykgPT4gdGhpcy5yaWdoZVNlbGV6aW9uYWJpbGkuc29tZSh2YWxvcmVTZWxlemlvbmFiaWxlID0+IHZhbG9yZVNlbGV6aW9uYWJpbGUgPT0gdmFsdWUpO1xuXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgY2RyOiBDaGFuZ2VEZXRlY3RvclJlZixcbiAgICAgICAgICAgICAgcHJpdmF0ZSByZW5kZXJlcjogUmVuZGVyZXIyLFxuICAgICAgICAgICAgICBASW5qZWN0KE5HX0lOQUlMX0NPTU1PTl9DT05GSUcpXG4gICAgICAgICAgICAgIHByaXZhdGUgbGliQ29uZmlnOiBOZ0luYWlsQ29tbW9uQ29uZmlnKSB7XG4gICAgc3VwZXIoY2RyLCBsaWJDb25maWcpO1xuICAgIHRoaXMubG9nUHJlZml4ID0gJ1tpbmFpbC10YWJsZV0nO1xuICAgIHN1cGVyLm92ZXJyaWRlQ29uZmlnKGxpYkNvbmZpZz8udGFibGVDb21wb25lbnQpO1xuICAgIHRoaXMuZGV0YWNoKCk7XG4gIH1cblxuICBuZ09uQ2hhbmdlcyhjaGFuZ2VzOiBUYWJsZUNoYW5nZXMpOiB2b2lkIHtcblxuICAgIHN1cGVyLm5nT25DaGFuZ2VzKGNoYW5nZXMpO1xuXG4gICAgLy8gQ29udHJvbGxvIHNlIGxhIHBhZ2luYXppb25lIHJpY2hpZXN0YSBlJyBpbnRlcm5hIG8gZXN0ZXJuYVxuICAgIGlmICghdGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nXG4gICAgICAmJiBjaGFuZ2VzLnBhZ2luYXRpb25TdGF0ZT8uZmlyc3RDaGFuZ2UgPT09IHRydWVcbiAgICAgICYmIGNoYW5nZXMucGFnaW5hdGlvblN0YXRlPy5jdXJyZW50VmFsdWUgIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgIHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA9IHRydWU7XG4gICAgfVxuXG4gICAgLy8gTm9ybWFsaXp6YXppb25lIHBhZ2VOdW1iZXIgZSBwYWdlSW5kZXhcbiAgICBpZiAoY2hhbmdlcy5wYWdpbmF0aW9uU3RhdGU/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLmNoZWNrQW5kRml4UGFnZU51bWJlckFuZFBhZ2VJbmRleCh0aGlzLnBhZ2luYXRpb25TdGF0ZSk7XG5cbiAgICAgIGlmICh0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlTnVtYmVyID09IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VOdW1iZXIgPSAxO1xuICAgICAgfVxuXG4gICAgICBpZiAodGhpcy5wYWdpbmF0aW9uU3RhdGUucGFnZUluZGV4ID09IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VJbmRleCA9IDA7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLy8gU2UgcGVyIGxhIHBhZ2luYXppb25lIGVzdGVybmEgdmllbmUgc3BlY2lmaWNhdGEgdW5hIHByb3ByaWV0YSBkaSBzb3J0aW5nXG4gICAgLy8gYXR0aXZvIGlsIGNvbXBvbmVudGUgdGhMYWJlbCBhc3NvY2lhdG9cbiAgICBpZiAoY2hhbmdlcy5wYWdpbmF0aW9uU3RhdGU/LmN1cnJlbnRWYWx1ZT8uc29ydFByb3BlcnR5KSB7XG5cbiAgICAgIHRoaXMuYXR0aXZhVGhMYWJlbE9yZGluYW1lbnRvU3BlY2lmaWNhdG8oKTtcbiAgICB9XG5cbiAgICAvLyBTZSBwZXIgbGEgcGFnaW5hemlvbmUgaW50ZXJuYSB2aWVuZSBzcGVjaWZpY2F0byB1biBvcmRpbmFtZW50byBpbml6aWFsZVxuICAgIC8vIGF0dGl2byBpbCBjb21wb25lbnRlIHRoTGFiZWwgYXNzb2NpYXRvXG4gICAgaWYgKGNoYW5nZXMuaW5pdGlhbFNvcnQ/LmN1cnJlbnRWYWx1ZT8uc29ydFByb3BlcnR5KSB7XG5cbiAgICAgIHRoaXMuYXR0aXZhVGhMYWJlbE9yZGluYW1lbnRvU3BlY2lmaWNhdG8oKTtcbiAgICB9XG5cbiAgICAvLyBWZXJpZmljbyBzZSBlJyBjYW1iaWF0YSBsYSBsaXN0YSBkZWdsaSBlbGVtZW50aSBpbiBpbnB1dC5cbiAgICAvLyBOZWwgY2FzbyBpbiBjdWkgc2kgc3RpYSBlZmZldHR1YW5kbyB1bmEgcGFnaW5hemlvbmUgaW50ZXJuYVxuICAgIC8vIGVtZXR0byBpbCBzb3R0b2luc2llbWUgaW5lcmVudGUgbGEgcHJpbWEgcGFnaW5hXG4gICAgaWYgKGNoYW5nZXMuZGF0YVNvdXJjZSAhPSB1bmRlZmluZWRcbiAgICAgICYmICFjaGFuZ2VzLmRhdGFTb3VyY2UuZmlyc3RDaGFuZ2VcbiAgICAgICYmICF0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcpIHtcblxuICAgICAgaWYgKHRoaXMudGFibGVQYWdlU2VsZWN0b3JDb21wb25lbnQpIHtcblxuICAgICAgICB0aGlzLnRhYmxlUGFnZVNlbGVjdG9yQ29tcG9uZW50LmN1cnJlbnRQYWdlID0gMTtcbiAgICAgIH1cblxuICAgICAgdGhpcy5lbWl0U3Vic2V0KDEpO1xuICAgIH1cblxuICAgIC8vIFJpY2hpZXN0YSBkaSBwYWdpbmF6aW9uZVxuICAgIGlmICghdGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nXG4gICAgICAmJiBjaGFuZ2VzLmRvUGFnaW5hdGlvbj8uY3VycmVudFZhbHVlKSB7XG5cbiAgICAgIHRoaXMucHVzaChcbiAgICAgICAgY2hhbmdlcy5kb1BhZ2luYXRpb24uY3VycmVudFZhbHVlLnN1YnNjcmliZSgoaW5mbzogUGFnaW5hdGlvblN0YXRlKSA9PiB7XG5cbiAgICAgICAgICB0aGlzLmNoZWNrQW5kRml4UGFnZU51bWJlckFuZFBhZ2VJbmRleChpbmZvKTtcbiAgICAgICAgICB0aGlzLmxlbmd0aE9uQ2hhbmdlKGluZm8ucGFnZVNpemUpO1xuICAgICAgICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5kb1NvcnRpbmcoaW5mby5zb3J0UHJvcGVydHksIGluZm8uc29ydERpcmVjdGlvbiksIDEwMCk7XG4gICAgICAgICAgc2V0VGltZW91dCgoKSA9PiB0aGlzLnBhZ2VPbkNoYW5nZShpbmZvLnBhZ2VOdW1iZXIpLCAyMDApO1xuICAgICAgICB9KVxuICAgICAgKTtcbiAgICB9XG5cbiAgICAvLyBFbGVtZW50aSBwZXIgcGFnaW5hXG4gICAgaWYgKGNoYW5nZXMuZWxlbWVudHNQZXJQYWdlICE9IHVuZGVmaW5lZFxuICAgICAgJiYgIWNoYW5nZXMuZWxlbWVudHNQZXJQYWdlLmZpcnN0Q2hhbmdlXG4gICAgICAmJiAhdGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nKSB7XG5cbiAgICAgIHRoaXMubGVuZ3RoT25DaGFuZ2UodGhpcy5lbGVtZW50c1BlclBhZ2UpO1xuICAgIH1cblxuICAgIC8vIENhbGNvbG8gaWwgbnVtZXJvIGRpIGNvbG9ubmUgdmlzaWJpbGlcbiAgICBpZiAoY2hhbmdlcy5ub0RhdGFGb3VuZD8uY3VycmVudFZhbHVlID09PSB0cnVlKSB7XG5cbiAgICAgIC8vIHNldFRpbWVvdXQoKCkgPT4gdGhpcy5udW1lcm9Db2xvbm5lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgIyR7dGhpcy5pZH0gdGhgKS5sZW5ndGgpO1xuICAgICAgdGhpcy5udW1lcm9Db2xvbm5lID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbChgIyR7dGhpcy5pZH0gdGhgKS5sZW5ndGg7XG4gICAgfVxuXG4gICAgaWYgKGNoYW5nZXMuc2VsZWN0YWJsZVJvd1ZhbHVlcz8uY3VycmVudFZhbHVlKSB7XG5cbiAgICAgIHRoaXMucmlnaGVTZWxlemlvbmFiaWxpID0gWy4uLmNoYW5nZXMuc2VsZWN0YWJsZVJvd1ZhbHVlcz8uY3VycmVudFZhbHVlXTtcbiAgICB9XG5cbiAgICAvLyBSaWdoZSBzZWxlemlvbmF0ZSBpbiBpbnB1dFxuICAgIGlmKGNoYW5nZXMuY2hlY2tlZFJvd3M/LmN1cnJlbnRWYWx1ZSkge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUgPSBbLi4uY2hhbmdlcy5jaGVja2VkUm93cz8uY3VycmVudFZhbHVlXTtcbiAgICB9XG5cbiAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gIH1cblxuICAvLyBWZXJpZmljYSBsYSBjb25ncnVlbnphIHRyYSBwYWdhTnVtYmVyIGUgcGFnZUluZGV4XG4gIC8vIGUgbmUgYWdnaXVzdGEgaSB2YWxvcmlcbiAgLy8gZGFuZG8gbGEgcHJpb3JpdGEgYWwgcGFnYU51bWJlclxuICBjaGVja0FuZEZpeFBhZ2VOdW1iZXJBbmRQYWdlSW5kZXgoc3RhdGU6IFBhZ2luYXRpb25TdGF0ZSkge1xuXG4gICAgaWYgKHN0YXRlKSB7XG5cbiAgICAgIGlmIChzdGF0ZS5wYWdlTnVtYmVyID09IHVuZGVmaW5lZCAmJiBzdGF0ZS5wYWdlSW5kZXggIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgaWYgKHN0YXRlLnBhZ2VJbmRleCA8IDApIHtcblxuICAgICAgICAgIHN0YXRlLnBhZ2VJbmRleCA9IDA7XG4gICAgICAgIH1cblxuICAgICAgICBzdGF0ZS5wYWdlTnVtYmVyID0gc3RhdGUucGFnZUluZGV4ICsgMTtcblxuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5wYWdlTnVtYmVyICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICAgIGlmIChzdGF0ZS5wYWdlTnVtYmVyIDwgMSkge1xuXG4gICAgICAgICAgc3RhdGUucGFnZU51bWJlciA9IDE7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBJbCBwYWdlIG51bWJlciBoYSBzZW1wcmUgbGEgcHJpb3JpdGEgc3VsIHBhZ2UgaW5kZXhcbiAgICAgICAgc3RhdGUucGFnZUluZGV4ID0gc3RhdGUucGFnZU51bWJlciAtIDE7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgbmdPbkluaXQoKTogdm9pZCB7XG5cbiAgICBzdXBlci5uZ09uSW5pdCgpO1xuXG4gICAgdGhpcy50YWJsZUxlbmd0aCA9IHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZyA/IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplIDogdGhpcy5lbGVtZW50c1BlclBhZ2U7XG5cbiAgICBpZiAoIXRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICAgICAgLy8gY29uc29sZS5pbmZvKCduZ09uSW5pdC0tLScsIHRoaXMuY3VycmVudFBhZ2UpXG4gICAgICAgIHRoaXMuZW1pdFN1YnNldCh0aGlzLmN1cnJlbnRQYWdlIHx8IDEpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG5cbiAgbmdBZnRlclZpZXdJbml0KCk6IHZvaWQge1xuXG4gICAgdGhpcy5pbml6aWFsaXp6YVRhYmVsbGEodGhpcy50aExhYmVsQ29tcG9uZW50cyk7XG4gICAgdGhpcy5sb29rQXRUaExhYmVsKHRoaXMudGhMYWJlbENvbXBvbmVudHMpO1xuICAgIHRoaXMuYXR0aXZhVGhMYWJlbE9yZGluYW1lbnRvU3BlY2lmaWNhdG8oKTtcblxuICAgIHNldFRpbWVvdXQoKCkgPT4gdGhpcy52aXN1YWxpenphQmFzZUZvb3RlciA9IHRoaXMuYmFzZUZvb3Rlcj8ubmF0aXZlRWxlbWVudC5jaGlsZEVsZW1lbnRDb3VudCA+IDApO1xuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgICB0aGlzLm51bWVyb0NvbG9ubmUgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGAjJHt0aGlzLmlkfSB0aGApLmxlbmd0aDtcblxuICAgIHRoaXMuY2RyLmRldGVjdENoYW5nZXMoKTtcbiAgfVxuXG4gIG5nQWZ0ZXJWaWV3Q2hlY2tlZCgpOiB2b2lkIHtcblxuICAgIHRoaXMuZ2VzdGlzY2lUckNoZWNrYm94KCk7XG4gIH1cblxuICBuZ09uRGVzdHJveSgpOiB2b2lkIHtcblxuICAgIHN1cGVyLm5nT25EZXN0cm95KCk7XG4gIH1cblxuICAvKipcbiAgICogR2VzdGlvbmUgZGVpIGNoZWNrYm94IHBlciBsYSBzZWxlemlvbmUgZGVsbGUgcmlnaGVcbiAgICovXG4gIHB1YmxpYyBnZXN0aXNjaVRyQ2hlY2tib3goKSB7XG5cbiAgICBpZiAodGhpcy50ckNoZWNrYm94Q29tcG9uZW50cz8ubGVuZ3RoID4gMCkge1xuXG4gICAgICB0aGlzLnRyQ2hlY2tib3hDb21wb25lbnRzLmZvckVhY2goKHRyY2I6IFRyQ2hlY2tib3hDb21wb25lbnQpID0+IHtcblxuICAgICAgICAvLyBHZXN0aW9uZSBldmVudG8gaW5pdENvbXBsZXRlXG4gICAgICAgIC8vIEVmZmV0dHVvIGxhIHN1YnNjcmliZSBzZSBub24gbmUgZScgZ2lhIHByZXNlbnRlXG4gICAgICAgIC8vIHVuYSBTdWJzY3JpcHRpb24gcGVyIHF1ZWwgdHJjYlxuICAgICAgICBpZiAodGhpcy50cmNiSW5pdFN1YnNjcmlwdGlvbnNbdHJjYi5pZF0gPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICB0aGlzLnRyY2JJbml0U3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9IHRyY2IuaW5pdENvbXBsZXRlLnN1YnNjcmliZSgoKSA9PiB7XG5cbiAgICAgICAgICAgIC8vIFNlIGwnaW5zaWVtZSBkaSB0dXR0aSBpIHZhbG9yaSBzZWxlemlvbmFiaWxpXG4gICAgICAgICAgICAvLyBub24gZScgc3RhdG8gcGFzc2F0byBkYWxsJ2VzdGVybm9cbiAgICAgICAgICAgIGlmICh0aGlzLnNlbGVjdGFibGVSb3dWYWx1ZXMgPT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgICAgICAgICAgLy8gUmljYWxjb2xvIGkgdmFsb3JpIHNlbGV6aW9uYWJpbGlcbiAgICAgICAgICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYWJpbGkgPSB0aGlzLnRyQ2hlY2tib3hDb21wb25lbnRzLmZpbHRlcih0cmNiID0+ICF0aGlzLmlzVGhDaGVja2JveCh0cmNiKSkubWFwKHRyY2IgPT4gdHJjYi52YWx1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBHZXN0aW9uZSBldmVudG8gY2xpY2tcbiAgICAgICAgaWYgKHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9IHRyY2Iub25jbGljay5zdWJzY3JpYmUoKCkgPT4ge1xuXG4gICAgICAgICAgICBpZiAodGhpcy5pc1RoQ2hlY2tib3godHJjYikpIHtcblxuICAgICAgICAgICAgICB0aGlzLmNoZWNrQWxsT25DbGljaygpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5jaGVja09uQ2xpY2sodHJjYi52YWx1ZSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIHRoaXMuY2hlY2tlZFJvd3NDaGFuZ2UuZW1pdCh0aGlzLnJpZ2hlU2VsZXppb25hdGUpO1xuICAgICAgICAgIH0pO1xuICAgICAgICB9XG5cbiAgICAgICAgLy8gR2VzdGlvbmUgZXZlbnRvIG9uRGVzdHJveVxuICAgICAgICAvLyBRdWFuZG8gdW4gdGNyYiBlbWV0dGUgbCdldmVudG8gb25EZXN0cm95XG4gICAgICAgIC8vIGVmZmV0dHVvIGwndW5zdWJzY3JpYmUgYSB0dXR0aSBnbGkgZXZlbnRpIGFkIGVzc28gY29sbGVnYXRvXG4gICAgICAgIGlmICh0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXSA9PSB1bmRlZmluZWQpIHtcblxuICAgICAgICAgIHRoaXMudHJjYkRlc3Ryb3lTdWJzY3JpcHRpb25zW3RyY2IuaWRdID0gdHJjYi5vbkRlc3Ryb3kuc3Vic2NyaWJlKCgpID0+IHtcblxuICAgICAgICAgICAgdGhpcy50cmNiSW5pdFN1YnNjcmlwdGlvbnNbdHJjYi5pZF0/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnRyY2JDbGlja1N1YnNjcmlwdGlvbnNbdHJjYi5pZF0/LnVuc3Vic2NyaWJlKCk7XG4gICAgICAgICAgICB0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXT8udW5zdWJzY3JpYmUoKTtcblxuICAgICAgICAgICAgLy8gSW4gcXVlc3RvIG1vZG8gZXZpdG8gY2hlIGdsaSBvZ2dldHRpIGNyZXNjYW5vIGluIG1hbmllcmEgaW5jb250cm9sbGF0YVxuICAgICAgICAgICAgZGVsZXRlIHRoaXMudHJjYkluaXRTdWJzY3JpcHRpb25zW3RyY2IuaWRdO1xuICAgICAgICAgICAgZGVsZXRlIHRoaXMudHJjYkNsaWNrU3Vic2NyaXB0aW9uc1t0cmNiLmlkXTtcbiAgICAgICAgICAgIGRlbGV0ZSB0aGlzLnRyY2JEZXN0cm95U3Vic2NyaXB0aW9uc1t0cmNiLmlkXTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICAgIC8vIEluZGljbyBhZCB1biB0cmNiIHNlIGUnIHNlbGV6aW9uYXRvLlxuICAgICAgdGhpcy50ckNoZWNrYm94Q29tcG9uZW50cy5mb3JFYWNoKCh0cmNiOiBUckNoZWNrYm94Q29tcG9uZW50KSA9PiB7XG5cbiAgICAgICAgaWYgKHRyY2IpIHtcblxuICAgICAgICAgIGlmICh0aGlzLmlzVGhDaGVja2JveCh0cmNiKSkge1xuXG4gICAgICAgICAgICB0cmNiLnNldENoZWNrZWQodGhpcy5pc0FsbENoZWNrZWQoKSk7XG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRyY2Iuc2V0Q2hlY2tlZCh0aGlzLmlzQ2hlY2tlZCh0cmNiLnZhbHVlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQ2xpY2sgZGkgdW4gdHJjYlxuICAgKlxuICAgKiBAcGFyYW0gdmFsdWVDYlxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgcHJpdmF0ZSBjaGVja09uQ2xpY2sodmFsdWVDYjogc3RyaW5nKSB7XG5cbiAgICBpZiAodGhpcy5pc0NoZWNrZWQodmFsdWVDYikpIHtcblxuICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYXRlID0gdGhpcy5yaWdoZVNlbGV6aW9uYXRlLmZpbHRlcih2YWx1ZSA9PiB2YWx1ZSAhPSB2YWx1ZUNiKTtcbiAgICB9IGVsc2Uge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUucHVzaCh2YWx1ZUNiKTtcbiAgICB9XG4gIH1cblxuICBjaGVja0FsbE9uQ2xpY2soKSB7XG5cbiAgICBpZiAodGhpcy5pc0FsbENoZWNrZWQoKSkge1xuXG4gICAgICB0aGlzLnJpZ2hlU2VsZXppb25hdGUgPSB0aGlzLnJpZ2hlU2VsZXppb25hdGUuZmlsdGVyKHZhbHVlID0+ICF0aGlzLmlzU2VsZXppb25hYmlsZSh2YWx1ZSkpO1xuXG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5yaWdoZVNlbGV6aW9uYXRlID0gdGhpcy5yaWdoZVNlbGV6aW9uYXRlLmNvbmNhdCh0aGlzLnJpZ2hlU2VsZXppb25hYmlsaS5maWx0ZXIodmFsdWUgPT4gIXRoaXMuaXNDaGVja2VkKHZhbHVlKSkpO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBFZmZldHR1YSB2YXJpZSBvcGVyYXppb25pIGRpIGluaXppYWxpenphemlvbmUgZGVsbGEgdGFiZWxsYVxuICAgKi9cbiAgcHVibGljIGluaXppYWxpenphVGFiZWxsYSh0aExhYmVsQ29tcG9uZW50czogUXVlcnlMaXN0PFRoTGFiZWxDb21wb25lbnQ+KSB7XG5cbiAgICBpZiAodGhMYWJlbENvbXBvbmVudHMpIHtcblxuICAgICAgLy8gSW5pemlhbGl6em8gdHV0dGkgaSB0aCBkZWxsYSB0YWJlbGxhXG4gICAgICB0aExhYmVsQ29tcG9uZW50cy5mb3JFYWNoKFxuICAgICAgICAodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCkgPT4ge1xuXG4gICAgICAgICAgdGhpcy5tb2RpZmljYVRoKHRoTGFiZWwpO1xuICAgICAgICB9KVxuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBTaSBtZXR0ZSBpbiBhc2NvbHRvIHN1Z2xpIGV2ZW50aSBlbWVzc2kgZGFpIHRoTGFiZWxDb21wb25lbnRzIGRhdGkgaW4gaW5wdXRcbiAgICogcGVyIHBvdGVyIGVzZWd1aXJlIGxlIG9wcG9ydHVuZSBhemlvbmlcbiAgICpcbiAgICogQHBhcmFtIHRoTGFiZWxDb21wb25lbnRzXG4gICAqL1xuICBwdWJsaWMgbG9va0F0VGhMYWJlbCh0aExhYmVsQ29tcG9uZW50czogUXVlcnlMaXN0PFRoTGFiZWxDb21wb25lbnQ+KSB7XG5cbiAgICBpZiAodGhMYWJlbENvbXBvbmVudHMpIHtcblxuICAgICAgdGhpcy50aExhYmVsQ29tcG9uZW50cyA9IHRoTGFiZWxDb21wb25lbnRzO1xuXG4gICAgICB0aExhYmVsQ29tcG9uZW50cy5mb3JFYWNoKFxuICAgICAgICAodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCkgPT4ge1xuXG4gICAgICAgICAgaWYgKHRoTGFiZWwpIHtcblxuICAgICAgICAgICAgLy8gU3Vic2NyaWJlIGFsIGNsaWNrIGRlbCB0aCBsYWJlbFxuICAgICAgICAgICAgdGhpcy5wdXNoKFxuICAgICAgICAgICAgICB0aExhYmVsLmNsaWNrLnN1YnNjcmliZShcbiAgICAgICAgICAgICAgICAoaW5mbzogU29ydGluZ0luZm8pID0+IHtcblxuICAgICAgICAgICAgICAgICAgdGhpcy5wZXJmb3JtU29ydGluZyhpbmZvLCB0aExhYmVsKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIClcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBzb3J0UHJvcGVydHlcbiAgICogQHBhcmFtIHNvcnREaXJlY3Rpb25cbiAgICovXG4gIHB1YmxpYyBkb1NvcnRpbmcoc29ydFByb3BlcnR5OiBzdHJpbmcsIHNvcnREaXJlY3Rpb246IHN0cmluZykge1xuXG4gICAgbGV0IGluZm86IFNvcnRpbmdJbmZvID0ge1xuICAgICAgcHJvcGVydHk6IHNvcnRQcm9wZXJ0eSxcbiAgICAgIGRpcmVjdGlvbjogc29ydERpcmVjdGlvbiA9PSBBU0MgPyBUaExhYmVsQ29tcG9uZW50LkFTQyA6IHNvcnREaXJlY3Rpb24gPT0gREVTQyA/IFRoTGFiZWxDb21wb25lbnQuREVTQyA6IHVuZGVmaW5lZFxuICAgIH1cblxuICAgIGxldCB0aExhYmVsOiBUaExhYmVsQ29tcG9uZW50ID0gdGhpcy50aExhYmVsQ29tcG9uZW50cy5maW5kKGl0ZW0gPT4gaXRlbS5wcm9wZXJ0eSA9PSBzb3J0UHJvcGVydHkpO1xuXG4gICAgdGhpcy5wZXJmb3JtU29ydGluZyhpbmZvLCB0aExhYmVsKVxuICB9XG5cbiAgLyoqXG4gICAqXG4gICAqIEBwYXJhbSBpbmZvXG4gICAqIEBwYXJhbSB0aExhYmVsXG4gICAqL1xuICBwZXJmb3JtU29ydGluZyhpbmZvOiBTb3J0aW5nSW5mbywgdGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCkge1xuXG4gICAgaWYgKHRoTGFiZWwgIT0gdW5kZWZpbmVkICYmIGluZm8gIT0gdW5kZWZpbmVkICYmIGluZm8ucHJvcGVydHkgIT0gdW5kZWZpbmVkKSB7XG5cbiAgICAgIGxldCBldmVudG9QYWdpbmF6aW9uZTogUGFnaW5hdGlvblN0YXRlID0ge307XG5cbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnNvcnRQcm9wZXJ0eSA9IGluZm8ucHJvcGVydHk7XG4gICAgICBldmVudG9QYWdpbmF6aW9uZS5zb3J0RGlyZWN0aW9uID0gaW5mby5kaXJlY3Rpb24gPT0gVGhMYWJlbENvbXBvbmVudC5BU0MgPyBBU0MgOiBpbmZvLmRpcmVjdGlvbiA9PSBUaExhYmVsQ29tcG9uZW50LkRFU0MgPyBERVNDIDogdW5kZWZpbmVkO1xuICAgICAgZXZlbnRvUGFnaW5hemlvbmUucGFnZU51bWJlciA9IDE7XG5cbiAgICAgIHRoaXMucmVzZXREaXJlY3Rpb25Tb3J0aW5nKHRoTGFiZWwsIHRoaXMudGhMYWJlbENvbXBvbmVudHMpO1xuICAgICAgdGhpcy5tb2RpZmljYVRoKHRoTGFiZWwpO1xuXG4gICAgICBpZiAodGhpcy5leHRlcm5hbFBhZ2luYXRpb25Tb3J0aW5nKSB7XG5cbiAgICAgICAgZXZlbnRvUGFnaW5hemlvbmUuZnVsbExpc3RTaXplID0gdGhpcy5wYWdpbmF0aW9uU3RhdGUuZnVsbExpc3RTaXplO1xuICAgICAgICBldmVudG9QYWdpbmF6aW9uZS5wYWdlU2l6ZSA9IHRoaXMucGFnaW5hdGlvblN0YXRlLnBhZ2VTaXplO1xuICAgICAgfSBlbHNlIHtcblxuICAgICAgICB0aGlzLm9yZGluYShpbmZvKTtcbiAgICAgICAgdGhpcy5lbWl0U3Vic2V0KDEpO1xuICAgICAgfVxuXG4gICAgICAvLyB0aGlzLnBhZ2luYXRpb24uZW1pdChldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgICB0aGlzLmVtaXRQYWdpbmF0aW9uKGV2ZW50b1BhZ2luYXppb25lKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogUmVpbXBvc3RhIGFkIHVuc29ydGVkIHR1dHRpIGkgdGggbGFiZWwgYWQgZWNjZXppb25lXG4gICAqIGRpIHF1ZWxsaSBkYXRvIGluIGlucHV0XG4gICAqXG4gICAqIEBwYXJhbSB0aExhYmVsXG4gICAqIEBwYXJhbSB0aExhYmVsQ29tcG9uZW50c1xuICAgKi9cbiAgcHJpdmF0ZSByZXNldERpcmVjdGlvblNvcnRpbmcodGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCwgdGhMYWJlbENvbXBvbmVudHM6IFF1ZXJ5TGlzdDxUaExhYmVsQ29tcG9uZW50Pikge1xuXG4gICAgaWYgKHRoTGFiZWxDb21wb25lbnRzKSB7XG5cbiAgICAgIHRoTGFiZWxDb21wb25lbnRzLmZvckVhY2goKGl0ZW06IFRoTGFiZWxDb21wb25lbnQpID0+IHtcblxuICAgICAgICBpZiAoaXRlbSAmJiBpdGVtLnByb3BlcnR5ICE9IHRoTGFiZWwucHJvcGVydHkpIHtcblxuICAgICAgICAgIGl0ZW0uc2V0QXNVbnNvcnRlZCgpO1xuICAgICAgICAgIHRoaXMubW9kaWZpY2FUaChpdGVtKTtcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogTW9kaWZpY2EgbCdlbGVtZW50byB0aCBjaGUgY29udGllbmUgaWwgVGhMYWJlbENvbXBvbmVudFxuICAgKi9cbiAgcHJpdmF0ZSBtb2RpZmljYVRoKHRoTGFiZWxDb21wb25lbnQ6IFRoTGFiZWxDb21wb25lbnQpIHtcblxuICAgIGlmICh0aExhYmVsQ29tcG9uZW50ICYmIHRoTGFiZWxDb21wb25lbnQuc29ydGFibGUgPT09IHRydWUpIHtcblxuICAgICAgbGV0IHRoOiBIVE1MRWxlbWVudCA9IHRoTGFiZWxDb21wb25lbnQuZWxlbWVudFJlZi5uYXRpdmVFbGVtZW50LnBhcmVudE5vZGU7XG5cbiAgICAgIGlmICh0aCkge1xuXG4gICAgICAgIHRoaXMucmVtb3ZlU29ydENsYXNzKHRoKTtcbiAgICAgICAgdGhpcy5yZW5kZXJlci5hZGRDbGFzcyh0aCwgdGhpcy5nZXRUaFNvcnRDbGFzcyh0aExhYmVsQ29tcG9uZW50LmRpcmVjdGlvbikpO1xuXG4gICAgICAgIHRoLnNldEF0dHJpYnV0ZSgnYXJpYS1zb3J0JywgdGhpcy5nZXRBcmlhU29ydFZhbHVlKHRoTGFiZWxDb21wb25lbnQuZGlyZWN0aW9uKSk7XG5cbiAgICAgICAgaWYgKHRoTGFiZWxDb21wb25lbnQuZGlyZWN0aW9uID09IFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQpIHtcblxuICAgICAgICAgIHRoLnJlbW92ZUF0dHJpYnV0ZSgnYXJpYS1zb3J0Jyk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvKipcbiAgICpcbiAgICogQHBhcmFtIGVsZW1lbnRcbiAgICovXG4gIHByaXZhdGUgcmVtb3ZlU29ydENsYXNzKGVsZW1lbnQ6IEhUTUxFbGVtZW50KSB7XG5cbiAgICB0aGlzLnJlbmRlcmVyLnJlbW92ZUNsYXNzKGVsZW1lbnQsICdzb3J0aW5nX2FzYycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3NvcnRpbmdfZGVzYycpO1xuICAgIHRoaXMucmVuZGVyZXIucmVtb3ZlQ2xhc3MoZWxlbWVudCwgJ3NvcnRpbmcnKTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldFRoU29ydENsYXNzKGRpcmVjdGlvbjogbnVtYmVyKSB7XG5cbiAgICBsZXQgdmFsdWU6IHN0cmluZ1xuXG4gICAgc3dpdGNoIChkaXJlY3Rpb24pIHtcblxuICAgICAgY2FzZSBUaExhYmVsQ29tcG9uZW50LkFTQzpcbiAgICAgICAgdmFsdWUgPSAnc29ydGluZ19hc2MnO1xuICAgICAgICBicmVha1xuICAgICAgY2FzZSBUaExhYmVsQ29tcG9uZW50LkRFU0M6XG4gICAgICAgIHZhbHVlID0gJ3NvcnRpbmdfZGVzYyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQ6XG4gICAgICAgIHZhbHVlID0gJ3NvcnRpbmcnO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIC8qKlxuICAgKlxuICAgKiBAcGFyYW0gZGlyZWN0aW9uXG4gICAqL1xuICBwcml2YXRlIGdldEFyaWFTb3J0VmFsdWUoZGlyZWN0aW9uOiBudW1iZXIpOiBzdHJpbmcge1xuXG4gICAgbGV0IHZhbHVlOiBzdHJpbmdcblxuICAgIHN3aXRjaCAoZGlyZWN0aW9uKSB7XG5cbiAgICAgIGNhc2UgVGhMYWJlbENvbXBvbmVudC5BU0M6XG4gICAgICAgIHZhbHVlID0gJ2FzY2VuZGluZyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuREVTQzpcbiAgICAgICAgdmFsdWUgPSAnZGVzY2VuZGluZyc7XG4gICAgICAgIGJyZWFrXG4gICAgICBjYXNlIFRoTGFiZWxDb21wb25lbnQuVU5TT1JURUQ6XG4gICAgICAgIHZhbHVlID0gJ25vbmUnO1xuICAgICAgICBicmVha1xuICAgIH1cblxuICAgIHJldHVybiB2YWx1ZTtcbiAgfVxuXG4gIHByaXZhdGUgb3JkaW5hKGluZm86IFNvcnRpbmdJbmZvKSB7XG5cbiAgICBpZiAoaW5mbyAmJiB0aGlzLmRhdGFTb3VyY2UgJiYgaW5mby5wcm9wZXJ0eSkge1xuXG4gICAgICBpbmZvLmRpcmVjdGlvbiA9IGluZm8uZGlyZWN0aW9uICogLTE7XG5cbiAgICAgIGlmIChpbmZvLmRpcmVjdGlvbiA9PSBUaExhYmVsQ29tcG9uZW50LlVOU09SVEVEKSB7XG5cbiAgICAgICAgaW5mby5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LkFTQztcbiAgICAgIH1cblxuICAgICAgdGhpcy5kYXRhU291cmNlLnNvcnQodGhpcy5wcm9wZXJ0eUNvbXBhcmF0b3IoaW5mby5wcm9wZXJ0eSwgaW5mby5kaXJlY3Rpb24pKTtcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IFtdLmNvbmNhdCh0aGlzLmRhdGFTb3VyY2UpO1xuXG4gICAgICB0aGlzLmNkci5kZXRlY3RDaGFuZ2VzKCk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBwcm9wZXJ0eUNvbXBhcmF0b3IocHJvcGVydHk6IHN0cmluZywgZGlyZWN0aW9uOiBudW1iZXIpIHtcblxuICAgIGxldCBwTGlzdCA9IHByb3BlcnR5ID8gcHJvcGVydHkuc3BsaXQoJy4nKSA6IHVuZGVmaW5lZDtcblxuICAgIGZ1bmN0aW9uIGVzdHJhaVZhbG9yZShlOiBhbnksIHBMaXN0OiBzdHJpbmdbXSk6IGFueSB7XG5cbiAgICAgIGlmIChlICYmIHBMaXN0KSB7XG5cbiAgICAgICAgaWYgKHBMaXN0Lmxlbmd0aCA+IDEpIHtcblxuICAgICAgICAgIHJldHVybiBlc3RyYWlWYWxvcmUoZVtwTGlzdFswXV0sIHBMaXN0LnNsaWNlKDEsIHBMaXN0Lmxlbmd0aCkpO1xuICAgICAgICB9IGVsc2Uge1xuXG4gICAgICAgICAgcmV0dXJuIGVbcExpc3RbMF1dO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuXG4gICAgcmV0dXJuIGZ1bmN0aW9uIChlMSwgZTIpIHtcblxuICAgICAgcmV0dXJuIChlc3RyYWlWYWxvcmUoZTEsIHBMaXN0KSA+IGVzdHJhaVZhbG9yZShlMiwgcExpc3QpID8gVGhMYWJlbENvbXBvbmVudC5ERVNDIDogVGhMYWJlbENvbXBvbmVudC5BU0MpICogZGlyZWN0aW9uO1xuICAgIH1cbiAgfVxuXG4gIGxlbmd0aE9uQ2hhbmdlKHZhbHVlOiBudW1iZXIpIHtcblxuICAgIGlmICh2YWx1ZSAhPSB1bmRlZmluZWQgJiYgKCF0aGlzLnBhZ2luYXRpb25TdGF0ZSB8fCB2YWx1ZSAhPSB0aGlzLnBhZ2luYXRpb25TdGF0ZS5wYWdlU2l6ZSkpIHtcblxuICAgICAgbGV0IGV2ZW50b1BhZ2luYXppb25lOiBQYWdpbmF0aW9uU3RhdGUgPSB7fTtcblxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lID0gey4uLnRoaXMucGFnaW5hdGlvblN0YXRlfTtcblxuICAgICAgfSBlbHNlIGlmICh0aGlzLnRhYmxlTGVuZ3RoICE9IHZhbHVlKSB7XG5cbiAgICAgICAgdGhpcy50YWJsZUxlbmd0aCA9IHZhbHVlO1xuICAgICAgICBldmVudG9QYWdpbmF6aW9uZSA9IHt9O1xuXG4gICAgICAgIHRoaXMuZW1pdFN1YnNldCgxKTtcbiAgICAgIH1cblxuICAgICAgZXZlbnRvUGFnaW5hemlvbmUucGFnZVNpemUgPSB2YWx1ZTtcbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnBhZ2VOdW1iZXIgPSAxO1xuXG4gICAgICAvLyB0aGlzLnBhZ2luYXRpb24uZW1pdChldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgICB0aGlzLmVtaXRQYWdpbmF0aW9uKGV2ZW50b1BhZ2luYXppb25lKTtcbiAgICB9XG4gIH1cblxuICBwYWdlT25DaGFuZ2UocGFnZTogbnVtYmVyKSB7XG5cbiAgICAvLyBjb25zb2xlLndhcm4oJ3BhZ2Ugc2VsZWN0ZWQ6JywgcGFnZSlcblxuICAgIGlmIChwYWdlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICBsZXQgZXZlbnRvUGFnaW5hemlvbmU6IFBhZ2luYXRpb25TdGF0ZTtcblxuICAgICAgaWYgKHRoaXMuZXh0ZXJuYWxQYWdpbmF0aW9uU29ydGluZykge1xuXG4gICAgICAgIGV2ZW50b1BhZ2luYXppb25lID0gey4uLnRoaXMucGFnaW5hdGlvblN0YXRlfTtcblxuICAgICAgfSBlbHNlIHtcblxuICAgICAgICBldmVudG9QYWdpbmF6aW9uZSA9IHt9O1xuICAgICAgICB0aGlzLmVtaXRTdWJzZXQocGFnZSk7XG4gICAgICB9XG5cbiAgICAgIGV2ZW50b1BhZ2luYXppb25lLnBhZ2VOdW1iZXIgPSBwYWdlO1xuICAgICAgLy8gdGhpcy5wYWdpbmF0aW9uLmVtaXQoZXZlbnRvUGFnaW5hemlvbmUpO1xuICAgICAgdGhpcy5lbWl0UGFnaW5hdGlvbihldmVudG9QYWdpbmF6aW9uZSk7XG4gICAgfVxuXG4gICAgdGhpcy5jZHIuZGV0ZWN0Q2hhbmdlcygpO1xuICB9XG5cbiAgZW1pdFN1YnNldChwYWdlOiBudW1iZXIpIHtcblxuICAgIGlmIChwYWdlICYmICF0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5kYXRhU291cmNlICE9IHVuZGVmaW5lZCkge1xuXG4gICAgICBsZXQgZmlyc3RFbGVtZW50SW5kZXggPSB0aGlzLnRhYmxlTGVuZ3RoICogKHBhZ2UgLSAxKTtcblxuICAgICAgbGV0IGxhc3RJbmRleDogbnVtYmVyID0gTnVtYmVyKGZpcnN0RWxlbWVudEluZGV4KSArIE51bWJlcih0aGlzLnRhYmxlTGVuZ3RoKTtcblxuICAgICAgbGV0IGE6IGFueVtdID0gdGhpcy5kYXRhU291cmNlLnNsaWNlKGZpcnN0RWxlbWVudEluZGV4LCBsYXN0SW5kZXgpO1xuXG4gICAgICB0aGlzLmN1cnJlbnRQYWdlID0gcGFnZTtcbiAgICAgIHRoaXMuZGlzcGxheWVkRGF0YUNoYW5nZS5lbWl0KGEpO1xuICAgIH1cbiAgfVxuXG4gIGVtaXRQYWdpbmF0aW9uKHN0YXRlOiBQYWdpbmF0aW9uU3RhdGUpIHtcblxuICAgIHRoaXMuY2hlY2tBbmRGaXhQYWdlTnVtYmVyQW5kUGFnZUluZGV4KHN0YXRlKTtcbiAgICB0aGlzLnBhZ2luYXRpb24uZW1pdChzdGF0ZSk7XG4gIH1cblxuICB2aXN1YWxpenphUGFnaW5hemlvbmUoKTogYm9vbGVhbiB7XG5cbiAgICByZXR1cm4gIXRoaXMuZGlzYWJsZVBhZ2luYXRpb25cbiAgICAgICYmICh0aGlzLmRhdGFTb3VyY2UgIT0gdW5kZWZpbmVkIHx8ICh0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgIT0gdW5kZWZpbmVkICYmIHRoaXMucGFnaW5hdGlvblN0YXRlICE9IHVuZGVmaW5lZCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEF0dGl2YSBpbCB0aCBsYWJlbCBpbmVyZW50ZSBsJ29yZGluYW1lbnRvIHNwZWNpZmljYXRvXG4gICAqL1xuICBhdHRpdmFUaExhYmVsT3JkaW5hbWVudG9TcGVjaWZpY2F0bygpIHtcblxuICAgIGlmICh0aGlzLnRoTGFiZWxDb21wb25lbnRzKSB7XG5cbiAgICAgIC8vIFBhZ2luYXppb25lIGVzdGVybmFcbiAgICAgIGlmICh0aGlzLmV4dGVybmFsUGFnaW5hdGlvblNvcnRpbmcgJiYgdGhpcy5wYWdpbmF0aW9uU3RhdGUpIHtcblxuICAgICAgICBsZXQgdGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCA9IHRoaXMudGhMYWJlbENvbXBvbmVudHMuZmluZChpdGVtID0+IGl0ZW0ucHJvcGVydHkgPT0gdGhpcy5wYWdpbmF0aW9uU3RhdGUuc29ydFByb3BlcnR5KTtcbiAgICAgICAgdGhpcy5zZXRTb3J0RGlyZWN0aW9uKHRoTGFiZWwsIHRoaXMucGFnaW5hdGlvblN0YXRlLnNvcnREaXJlY3Rpb24pO1xuICAgICAgfVxuICAgICAgLy8gT3JkaW5hbWVudG8gaW5pemlhbGUgcGFnaW5hemlvbmUgaW50ZXJuYVxuICAgICAgZWxzZSBpZiAodGhpcy5pbml0aWFsU29ydCkge1xuXG4gICAgICAgIHRoaXMudGhMYWJlbENvbXBvbmVudHMuZm9yRWFjaCh0aExhYmVsID0+IHtcblxuICAgICAgICAgIHRoTGFiZWwucHJvcGVydHkgPT0gdGhpcy5pbml0aWFsU29ydC5zb3J0UHJvcGVydHlcbiAgICAgICAgICAgID8gdGhpcy5zZXRTb3J0RGlyZWN0aW9uKHRoTGFiZWwsIHRoaXMuaW5pdGlhbFNvcnQuc29ydERpcmVjdGlvbilcbiAgICAgICAgICAgIDogdGhpcy5zZXRTb3J0RGlyZWN0aW9uKHRoTGFiZWwsIHVuZGVmaW5lZCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHNldFNvcnREaXJlY3Rpb24odGhMYWJlbDogVGhMYWJlbENvbXBvbmVudCwgZGlyZWN0aW9uOiBTb3J0RGlyZWN0aW9uKSB7XG5cbiAgICBpZiAodGhMYWJlbCkge1xuXG4gICAgICBsZXQgZGlyOiBzdHJpbmcgPSBkaXJlY3Rpb24/LnRvU3RyaW5nKCk/LnRyaW0oKT8udG9Mb3dlckNhc2UoKTtcblxuICAgICAgc3dpdGNoIChkaXIpIHtcblxuICAgICAgICBjYXNlIFwiYXNjXCI6XG4gICAgICAgICAgdGhMYWJlbC5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LkFTQztcbiAgICAgICAgICBicmVhaztcblxuICAgICAgICBjYXNlIFwiZGVzY1wiOlxuICAgICAgICAgIHRoTGFiZWwuZGlyZWN0aW9uID0gVGhMYWJlbENvbXBvbmVudC5ERVNDO1xuICAgICAgICAgIGJyZWFrO1xuXG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhMYWJlbC5kaXJlY3Rpb24gPSBUaExhYmVsQ29tcG9uZW50LlVOU09SVEVEO1xuICAgICAgICAgIGJyZWFrXG4gICAgICB9XG5cbiAgICAgIHRoaXMubW9kaWZpY2FUaCh0aExhYmVsKTtcbiAgICB9XG4gIH1cbn1cbiIsIjxkaXYgY2xhc3M9XCJ0YWJlbGxhIHRhYmxlLXJlc3BvbnNpdmUgaW5haWwtdGFibGUge3tnZXRSZXNwb25zaXZlQ2xhc3MoKX19IG5vUGFkZGluZ0xlZnQge3tjbGFzc319IG5vUGFkZGluZ1JpZ2h0XCI+XG5cbiAgPGgzICpuZ0lmPVwidGl0bGVcIlxuICAgICAgY2xhc3M9XCJjb2wteHMtMTIgdGFibGUtdGl0bGUgcHVsbC1sZWZ0IG5vUGFkZGluZ0xlZnQge3t0aXRsZUNsYXNzfX1cIlxuICAgICAgW2lubmVySFRNTF09XCJ0aXRsZVwiPlxuICA8L2gzPlxuXG4gIDxhICpuZ0lmPVwiZGV0YWlsc0xpbmtcIlxuICAgICBocmVmPVwiamF2YXNjcmlwdDp2b2lkKDApXCJcbiAgICAgKGNsaWNrKT1cImRldGFpbHNDbGljay5lbWl0KClcIlxuICAgICBjbGFzcz1cImNvbC14cy0zIGNvbC1zbS0yIGxpbmtEZXR0YWdsaSBwdWxsLXJpZ2h0XCJcbiAgICAgW2lubmVySFRNTF09XCJkZXRhaWxzTGlua1wiPlxuICA8L2E+XG5cbiAgPGRpdiAqbmdJZj1cImRlc2NyaXB0aW9uXCJcbiAgICAgICBjbGFzcz1cImNvbC14cy0xMiBjYXB0aW9uIG1hcmdpbkJvdHRvbSBub1BhZGRpbmdMZWZ0XCJcbiAgICAgICBbaW5uZXJIVE1MXT1cImRlc2NyaXB0aW9uXCI+XG4gIDwvZGl2PlxuXG4gIDxkaXYgKm5nSWY9XCJzaG93RnVsbExpc3RTaXplXCJcbiAgICAgICBjbGFzcz1cInRvdGFsLWVsZW1lbnRzXCI+XG4gICAgPHNwYW4gW2lubmVySFRNTF09XCJmdWxsTGlzdFNpemVUZXh0XCI+PC9zcGFuPiB7e2dldEZ1bGxMaXN0U2l6ZSgpIHx8IDB9fVxuICA8L2Rpdj5cblxuICA8aW5haWwtdGFibGUtcGFnZS1sZW5ndGgtc2VsZWN0b3IgKm5nSWY9XCJ2aXN1YWxpenphUGFnaW5hemlvbmUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdmFsdWVdPVwiZ2V0UGFnZVNpemUoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbdGFibGVJZF09XCJpZFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbb3B0aW9uc109XCJlbGVtZW50c1BlclBhZ2VPcHRpb25zXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZUNoYW5nZSk9XCJsZW5ndGhPbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwibG9nT25Db25zb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChsb2cpPVwibG9nLmVtaXQoJGV2ZW50KVwiPlxuICA8L2luYWlsLXRhYmxlLXBhZ2UtbGVuZ3RoLXNlbGVjdG9yPlxuXG4gIDxuZy1jb250YWluZXIgKm5nSWY9XCJ0cnVlXCI+XG5cbiAgICA8dGFibGUgaWQ9XCJ7e2lkfX1cIlxuICAgICAgICAgICBjbGFzcz1cInRhYmxlIGRpc3BsYXkgZGF0YVRhYmxlIHt7dGFibGVDbGFzc319XCJcbiAgICAgICAgICAgW25nQ2xhc3NdPVwieyd0YWJlbGxhLWJhc2UnOiAhdGFsbFJvd3MsICdiZy13aGl0ZSc6IGJnV2hpdGUsICdiZy10cmFuc3BhcmVudCc6ICFiZ1doaXRlfVwiPlxuXG4gICAgICA8Y2FwdGlvbiAqbmdJZj1cImNhcHRpb25cIlxuICAgICAgICAgICAgICAgW25nQ2xhc3NdPVwieydzci1vbmx5JzogY2FwdGlvbkhpZGRlbn1cIlxuICAgICAgICAgICAgICAgW2lubmVySFRNTF09XCJjYXB0aW9uXCI+XG4gICAgICA8L2NhcHRpb24+XG5cbiAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInRoZWFkXCI+PC9uZy1jb250ZW50PlxuXG4gICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIXNob3dOb0RhdGFGb3VuZCgpXCI+XG4gICAgICAgIDxuZy1jb250ZW50IHNlbGVjdD1cInRib2R5XCI+PC9uZy1jb250ZW50PlxuICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgIDx0Ym9keSAqbmdJZj1cInNob3dOb0RhdGFGb3VuZCgpXCI+XG4gICAgICA8dHIgcm9sZT1cInJvd1wiPlxuICAgICAgICA8dGQgY2xhc3M9XCJjb250ZW50LXRleHRcIlxuICAgICAgICAgICAgc3R5bGU9XCJwYWRkaW5nOiAzMHB4OyB0ZXh0LWFsaWduOiBjZW50ZXJcIlxuICAgICAgICAgICAgW2NvbFNwYW5dPVwibnVtZXJvQ29sb25uZVwiXG4gICAgICAgICAgICBbaW5uZXJIVE1MXT1cIm5vRGF0YUZvdW5kVGV4dFwiPlxuICAgICAgICA8L3RkPlxuICAgICAgPC90cj5cbiAgICAgIDwvdGJvZHk+XG4gICAgPC90YWJsZT5cblxuICAgIDxkaXYgI2Jhc2VGb290ZXJcbiAgICAgICAgIGNsYXNzPVwiY29sLXhzLTEyIGJhc2VGb290ZXIgbm9QYWRkaW5nTGVmdFwiXG4gICAgICAgICAqbmdJZj1cInZpc3VhbGl6emFCYXNlRm9vdGVyXCI+XG4gICAgICA8bmctY29udGVudCBzZWxlY3Q9XCJbYmFzZUZvb3Rlcl1cIj48L25nLWNvbnRlbnQ+XG4gICAgPC9kaXY+XG5cbiAgPC9uZy1jb250YWluZXI+XG5cbiAgPGluYWlsLXRhYmxlLXBhZ2Utc2VsZWN0b3IgKm5nSWY9XCJ2aXN1YWxpenphUGFnaW5hemlvbmUoKSAmJiAhdGhpcy5zaG93Tm9EYXRhRm91bmQoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsaXN0U2l6ZV09XCJnZXRMaXN0U2l6ZSgpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3BhZ2VTaXplXT1cImdldFBhZ2VTaXplKClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY3VycmVudFBhZ2VdPVwiZ2V0Q3VycmVudFBhZ2UoKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0YWJsZUlkXT1cImlkXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdCk9XCJwYWdlT25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtsb2dPbkNvbnNvbGVdPVwibG9nT25Db25zb2xlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxvZyk9XCJsb2cuZW1pdCgkZXZlbnQpXCI+XG4gIDwvaW5haWwtdGFibGUtcGFnZS1zZWxlY3Rvcj5cblxuPC9kaXY+XG4iXX0=
|
|
@@ -5100,6 +5100,7 @@ class TableComponent extends ResponsiveElementComponent {
|
|
|
5100
5100
|
this.lookAtThLabel(this.thLabelComponents);
|
|
5101
5101
|
this.attivaThLabelOrdinamentoSpecificato();
|
|
5102
5102
|
setTimeout(() => this.visualizzaBaseFooter = this.baseFooter?.nativeElement.childElementCount > 0);
|
|
5103
|
+
this.cdr.detectChanges();
|
|
5103
5104
|
this.numeroColonne = document.querySelectorAll(`#${this.id} th`).length;
|
|
5104
5105
|
this.cdr.detectChanges();
|
|
5105
5106
|
}
|