@eui/components 15.3.4 → 15.3.5-snapshot-1685477682444

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.
Files changed (29) hide show
  1. package/docs/components/EuiTabsComponent.html +1 -1
  2. package/docs/dependencies.html +2 -2
  3. package/docs/js/menu-wc.js +3 -3
  4. package/docs/js/menu-wc_es5.js +1 -1
  5. package/docs/js/search/search_index.js +2 -2
  6. package/docs/miscellaneous/variables.html +17 -17
  7. package/esm2020/eui-badge/eui-badge.component.mjs +2 -2
  8. package/esm2020/eui-table/eui-table.component.mjs +2 -2
  9. package/esm2020/eui-tabs/eui-tab/eui-tab.component.mjs +2 -2
  10. package/esm2020/eui-tabs/eui-tabs.component.mjs +3 -3
  11. package/esm2020/legacy/ux-tree/ux-tree.component.mjs +1 -4
  12. package/fesm2015/eui-components-eui-badge.mjs +2 -2
  13. package/fesm2015/eui-components-eui-badge.mjs.map +1 -1
  14. package/fesm2015/eui-components-eui-table.mjs +2 -1
  15. package/fesm2015/eui-components-eui-table.mjs.map +1 -1
  16. package/fesm2015/eui-components-eui-tabs.mjs +4 -4
  17. package/fesm2015/eui-components-eui-tabs.mjs.map +1 -1
  18. package/fesm2015/eui-components-legacy-ux-tree.mjs +0 -3
  19. package/fesm2015/eui-components-legacy-ux-tree.mjs.map +1 -1
  20. package/fesm2020/eui-components-eui-badge.mjs +2 -2
  21. package/fesm2020/eui-components-eui-badge.mjs.map +1 -1
  22. package/fesm2020/eui-components-eui-table.mjs +1 -1
  23. package/fesm2020/eui-components-eui-table.mjs.map +1 -1
  24. package/fesm2020/eui-components-eui-tabs.mjs +4 -4
  25. package/fesm2020/eui-components-eui-tabs.mjs.map +1 -1
  26. package/fesm2020/eui-components-legacy-ux-tree.mjs +0 -3
  27. package/fesm2020/eui-components-legacy-ux-tree.mjs.map +1 -1
  28. package/legacy/ux-tree/ux-tree.component.d.ts.map +1 -1
  29. package/package.json +2 -2
@@ -499,9 +499,6 @@ export class UxTreeComponent {
499
499
  }
500
500
  }
501
501
  ngOnInit() {
502
- if (this.hasSelectAll) {
503
- this.isRecursiveSelection = false;
504
- }
505
502
  this.getNbNodes(this.nodes);
506
503
  }
507
504
  ngAfterContentInit() {
@@ -1078,4 +1075,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImpor
1078
1075
  declarations: [UxTreeComponent, UxTreeNodeComponent],
1079
1076
  }]
1080
1077
  }] });
1081
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9sZWdhY3kvdXgtdHJlZS91eC10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xlZ2FjeS91eC10cmVlL3V4LXRyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUdSLE1BQU0sRUFHTixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsR0FFcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBNEIsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7QUFLekUsTUFBTSxPQUFPLG1CQUFtQjtJQXlINUIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFuSHpCLFlBQU8sR0FBRyxjQUFjLENBQUM7UUFFeEIsY0FB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U0YsU0FBUztzQkFEWixLQUFLO2dCQVNGLFlBQVk7c0JBRGYsS0FBSztnQkFTRixvQkFBb0I7c0JBRHZCLEtBQUs7Z0JBU0YsMEJBQTBCO3NCQUQ3QixLQUFLOztBQThVVixNQUFNLE9BQU8scUJBQXFCOztxSUFBckIscUJBQXFCO3NJQUFyQixxQkFBcUIsaUJBM2VyQixlQUFlLEVBdGJmLG1CQUFtQixhQXM1QnhCLFlBQVk7UUFDWixXQUFXO1FBQ1gsOEJBQThCO1FBQzlCLHVCQUF1QjtRQUN2QixzQkFBc0I7UUFDdEIsZUFBZTtRQUNmLGVBQWUsYUF0ZVYsZUFBZSxFQXRiZixtQkFBbUI7c0lBaTZCbkIscUJBQXFCLFlBWDFCLFlBQVk7UUFDWixXQUFXO1FBQ1gsOEJBQThCO1FBQzlCLHVCQUF1QjtRQUN2QixzQkFBc0I7UUFDdEIsZUFBZTtRQUNmLGVBQWU7MkZBS1YscUJBQXFCO2tCQWJqQyxRQUFRO21CQUFDO29CQUNOLE9BQU8sRUFBRTt3QkFDTCxZQUFZO3dCQUNaLFdBQVc7d0JBQ1gsOEJBQThCO3dCQUM5Qix1QkFBdUI7d0JBQ3ZCLHNCQUFzQjt3QkFDdEIsZUFBZTt3QkFDZixlQUFlO3FCQUNsQjtvQkFDRCxPQUFPLEVBQUUsQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUM7b0JBQy9DLFlBQVksRUFBRSxDQUFDLGVBQWUsRUFBRSxtQkFBbUIsQ0FBQztpQkFDdkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFmdGVyQ29udGVudEluaXQsXG4gICAgQ29tcG9uZW50LFxuICAgIENvbnRlbnRDaGlsZCxcbiAgICBDb250ZW50Q2hpbGRyZW4sXG4gICAgRXZlbnRFbWl0dGVyLFxuICAgIElucHV0LFxuICAgIE5nTW9kdWxlLFxuICAgIE9uQ2hhbmdlcyxcbiAgICBPbkluaXQsXG4gICAgT3V0cHV0LFxuICAgIFF1ZXJ5TGlzdCxcbiAgICBTaW1wbGVDaGFuZ2VzLFxuICAgIFRlbXBsYXRlUmVmLFxuICAgIFZpZXdDaGlsZCxcbiAgICBWaWV3Q2hpbGRyZW4sXG4gICAgVmlld0VuY2Fwc3VsYXRpb24sXG4gICAgQ2hhbmdlRGV0ZWN0b3JSZWYsXG59IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ29tbW9uTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uJztcbmltcG9ydCB7IFJvdXRlciB9IGZyb20gJ0Bhbmd1bGFyL3JvdXRlcic7XG5pbXBvcnQgeyBGb3Jtc01vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcbmltcG9ydCB7IFV4TGluayB9IGZyb20gJ0BldWkvY29yZSc7XG5pbXBvcnQgeyBUcmFuc2xhdGVNb2R1bGUgfSBmcm9tICdAbmd4LXRyYW5zbGF0ZS9jb3JlJztcbmltcG9ydCB7IGNvbnN1bWVFdmVudCwgdW5pcXVlSWQgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgY29lcmNlQm9vbGVhblByb3BlcnR5LCBCb29sZWFuSW5wdXQgfSBmcm9tICdAYW5ndWxhci9jZGsvY29lcmNpb24nO1xuaW1wb3J0IHsgQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0LCBTY3JvbGxpbmdNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9jZGsvc2Nyb2xsaW5nJztcblxuaW1wb3J0IHsgVXhUZW1wbGF0ZURpcmVjdGl2ZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9sZWdhY3kvY29tbW9uL3V4LWRpcmVjdGl2ZXMnO1xuaW1wb3J0IHsgVXhUb29sYmFyRmlsdGVyQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnQGV1aS9kZXByZWNhdGVkL3V4LWEtdG9vbGJhci1maWx0ZXInO1xuaW1wb3J0IHsgVXhCdXR0b25Db21wb25lbnRNb2R1bGUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvbGVnYWN5L3V4LWJ1dHRvbic7XG5pbXBvcnQgeyBVeEJhZGdlQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2xlZ2FjeS91eC1iYWRnZSc7XG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3V4LXRyZWUtbm9kZScsXG4gICAgdGVtcGxhdGVVcmw6ICcuL3V4LXRyZWUuY29tcG9uZW50Lmh0bWwnLFxufSlcbmV4cG9ydCBjbGFzcyBVeFRyZWVOb2RlQ29tcG9uZW50IHtcbiAgICBASW5wdXQoKSBleHBhbmRlZEljb25DbGFzczogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvbGxhcHNlZEljb25DbGFzczogc3RyaW5nO1xuICAgIEBJbnB1dCgpIHRlbXBsYXRlVmFyaWFibGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQElucHV0KCkgbm9kZTogVXhMaW5rO1xuICAgIEBJbnB1dCgpIG5vZGVDb250ZW50VGVtcGxhdGU6IFRlbXBsYXRlUmVmPGFueT47XG4gICAgQElucHV0KCkgZTJlQXR0ciA9ICd1eC10cmVlLW5vZGUnO1xuXG4gICAgQE91dHB1dCgpIG5vZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VXhMaW5rPigpO1xuICAgIEBPdXRwdXQoKSBub2RlVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxVeExpbms+KCk7XG4gICAgQE91dHB1dCgpIHNlbGVjdGlvbkNoYW5nZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXhMaW5rPigpO1xuXG4gICAgcHVibGljIG5vZGVJZDogc3RyaW5nO1xuICAgIHB1YmxpYyBjaGlsZHJlblNlbGVjdGVkID0gdHJ1ZTtcbiAgICBwdWJsaWMgYW1vdW50U2VsZWN0ZWRDaGlsZHJlbiA9IDA7XG5cbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0ZpcnN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNGaXJzdDtcbiAgICB9XG4gICAgc2V0IGlzRmlyc3QodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0ZpcnN0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNGaXJzdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzTGFzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTGFzdDtcbiAgICB9XG4gICAgc2V0IGlzTGFzdCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzTGFzdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzTGFzdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzUm9vdE5vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Jvb3ROb2RlO1xuICAgIH1cbiAgICBzZXQgaXNSb290Tm9kZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzUm9vdE5vZGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1Jvb3ROb2RlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDbGlja1RvZ2dsaW5nTm9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2xpY2tUb2dnbGluZ05vZGU7XG4gICAgfVxuICAgIHNldCBpc0NsaWNrVG9nZ2xpbmdOb2RlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDbGlja1RvZ2dsaW5nTm9kZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2xpY2tUb2dnbGluZ05vZGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc011bHRpc2VsZWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNdWx0aXNlbGVjdDtcbiAgICB9XG4gICAgc2V0IGlzTXVsdGlzZWxlY3QodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc011bHRpc2VsZWN0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNNdWx0aXNlbGVjdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzUmVjdXJzaXZlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNSZWN1cnNpdmVTZWxlY3Rpb247XG4gICAgfVxuICAgIHNldCBpc1JlY3Vyc2l2ZVNlbGVjdGlvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzUmVjdXJzaXZlU2VsZWN0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNSZWN1cnNpdmVTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1JlY3Vyc2l2ZVBhcmVudFNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uO1xuICAgIH1cbiAgICBzZXQgaXNSZWN1cnNpdmVQYXJlbnRTZWxlY3Rpb24odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc1JlY3Vyc2l2ZVBhcmVudFNlbGVjdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1Nob3dBY3RpdmVOb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNTaG93QWN0aXZlTm9kZTtcbiAgICB9XG4gICAgc2V0IGlzU2hvd0FjdGl2ZU5vZGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc1Nob3dBY3RpdmVOb2RlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNTaG93QWN0aXZlTm9kZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzSGlkZVRvZ2dsZXMoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0hpZGVUb2dnbGVzO1xuICAgIH1cbiAgICBzZXQgaXNIaWRlVG9nZ2xlcyh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzSGlkZVRvZ2dsZXMgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0hpZGVUb2dnbGVzID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDbGlja1NlbGVjdGluZ05vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NsaWNrU2VsZWN0aW5nTm9kZTtcbiAgICB9XG4gICAgc2V0IGlzQ2xpY2tTZWxlY3RpbmdOb2RlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDbGlja1NlbGVjdGluZ05vZGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0NsaWNrU2VsZWN0aW5nTm9kZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhpZ2hsaWdodFBhdGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRQYXRoO1xuICAgIH1cbiAgICBzZXQgaGlnaGxpZ2h0UGF0aCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodFBhdGggPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oaWdobGlnaHRQYXRoID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgYXV0b1RyYW5zbGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9UcmFuc2xhdGU7XG4gICAgfVxuICAgIHNldCBhdXRvVHJhbnNsYXRlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fYXV0b1RyYW5zbGF0ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2F1dG9UcmFuc2xhdGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhhc1NlbGVjdEFsbCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1NlbGVjdEFsbDtcbiAgICB9XG4gICAgc2V0IGhhc1NlbGVjdEFsbCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hhc1NlbGVjdEFsbCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hhc1NlbGVjdEFsbCA9IGZhbHNlO1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSByb3V0ZXI6IFJvdXRlcikge1xuICAgICAgICB0aGlzLm5vZGVJZCA9IGB1eC10cmVlLW5vZGUtJHt1bmlxdWVJZCgpfWA7XG4gICAgfVxuXG4gICAgcHVibGljIGhhc05vZGVDaGlsZHJlbihub2RlOiBVeExpbmspOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIG5vZGUgJiYgbm9kZS5jaGlsZHJlbiAmJiBub2RlLmNoaWxkcmVuLmxlbmd0aCA+IDA7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTm9kZUtleWRvd24oZXZlbnQ6IGFueSwgdXhMaW5rOiBVeExpbmspOiB2b2lkIHtcbiAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDEzKSB7XG4gICAgICAgICAgICB0aGlzLm9uTm9kZUNsaWNrKGV2ZW50LCB1eExpbmspO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uTm9kZVRvZ2dsZShldmVudDogRXZlbnQsIHV4TGluazogVXhMaW5rKTogdm9pZCB7XG4gICAgICAgIHRoaXMubm9kZS5leHBhbmRlZCA9ICF0aGlzLm5vZGUuZXhwYW5kZWQ7XG4gICAgICAgIHRoaXMubm9kZVRvZ2dsZS5lbWl0KHV4TGluayk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTm9kZUNsaWNrKGV2ZW50OiBFdmVudCwgdXhMaW5rOiBVeExpbmspOiB2b2lkIHtcbiAgICAgICAgaWYgKCF1eExpbmsuZGlzYWJsZWQpIHtcbiAgICAgICAgICAgIGlmICghdGhpcy5ub2RlLm1ldGFkYXRhKSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMuaXNNdWx0aXNlbGVjdCAmJiB0aGlzLmlzQ2xpY2tTZWxlY3RpbmdOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgIHV4TGluay5zZWxlY3RlZCA9ICF1eExpbmsuc2VsZWN0ZWQ7XG4gICAgICAgICAgICAgICAgICAgIGV2ZW50LnRhcmdldFsnY2hlY2tlZCddID0gdXhMaW5rLnNlbGVjdGVkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm9uQ2hlY2tib3hDaGFuZ2UodXhMaW5rLCBldmVudCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmICghdGhpcy5ub2RlLmNoaWxkcmVuIHx8IHRoaXMubm9kZS5jaGlsZHJlbi5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5ub2RlLmV4cGFuZGVkID0gIXRoaXMubm9kZS5leHBhbmRlZDtcblxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMubm9kZS51cmxdKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnVybEV4dGVybmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3Blbih0aGlzLm5vZGUudXJsRXh0ZXJuYWwsIHRoaXMubm9kZS51cmxFeHRlcm5hbFRhcmdldCk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBjbGlja2VkRWwgPSBldmVudC50YXJnZXRbJ25vZGVOYW1lJ107XG4gICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzQ2xpY2tUb2dnbGluZ05vZGUpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMub25Ob2RlVG9nZ2xlKGV2ZW50LCB1eExpbmspO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgIGlmIChjbGlja2VkRWwgPT09ICdTUEFOJyAmJiAodGhpcy5ub2RlLnVybCB8fCB0aGlzLm5vZGUudXJsRXh0ZXJuYWwpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnVybCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLm5vZGUudXJsXSk7XG4gICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnVybEV4dGVybmFsKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4odGhpcy5ub2RlLnVybEV4dGVybmFsLCB0aGlzLm5vZGUudXJsRXh0ZXJuYWxUYXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnVybCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5ub2RlLnVybF0pO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAodGhpcy5ub2RlLnVybEV4dGVybmFsKSB7XG4gICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHRoaXMubm9kZS51cmxFeHRlcm5hbCwgdGhpcy5ub2RlLnVybEV4dGVybmFsVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodXhMaW5rLmNvbW1hbmQpIHtcbiAgICAgICAgICAgICAgICB1eExpbmsuY29tbWFuZCgpO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICB0aGlzLm5vZGVDbGljay5lbWl0KHV4TGluayk7XG4gICAgICAgICAgICBjb25zdW1lRXZlbnQoZXZlbnQpO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHVibGljIG9uQ2hlY2tib3hDaGFuZ2UodXhMaW5rOiBVeExpbmssIGV2dDogYW55KTogdm9pZCB7XG5cbiAgICAgICAgaWYgKHRoaXMuaXNSZWN1cnNpdmVTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmICghdXhMaW5rLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdXhMaW5rLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uUmVjdXJzaXZlbHkodXhMaW5rLCB1eExpbmsuc2VsZWN0ZWQpO1xuICAgICAgICAgICAgaWYgKHV4TGluay5wYXJlbnQpIHtcbiAgICAgICAgICAgICAgICB0aGlzLmNoYW5nZVBhcmVudFNlbGVjdGlvbih1eExpbmsucGFyZW50KTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh0aGlzLmhpZ2hsaWdodFBhdGgpIHtcbiAgICAgICAgICAgIHRoaXMuZ2V0UGFyZW50cyh1eExpbmssIGV2dC50YXJnZXQuY2hlY2tlZCk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNlbGVjdGlvbkNoYW5nZS5uZXh0KHV4TGluayk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uTWV0YWRhdGFOb2RlVG9nZ2xlKGV2ZW50OiBFdmVudCwgdXhMaW5rOiBVeExpbmspOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub2RlLmV4cGFuZGVkID0gIXRoaXMubm9kZS5leHBhbmRlZDtcbiAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TdWJOb2RlQ2xpY2sodXhMaW5rOiBVeExpbmspOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub2RlQ2xpY2suZW1pdCh1eExpbmspO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblN1Yk5vZGVUb2dnbGUodXhMaW5rOiBVeExpbmspOiB2b2lkIHtcbiAgICAgICAgdGhpcy5ub2RlVG9nZ2xlLmVtaXQodXhMaW5rKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TZWxlY3Rpb25DaGFuZ2UodXhMaW5rOiBVeExpbmspOiB2b2lkIHtcbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UubmV4dCh1eExpbmspO1xuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogVXhMaW5rKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgY2hlY2tJbnB1dExhYmVsKCk6IHN0cmluZyB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVjdXJzaXZlU2VsZWN0aW9uICYmIHRoaXMubm9kZS5oYXNDaGlsZHJlbikge1xuICAgICAgICAgICAgaWYgKHRoaXMubm9kZS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnRGVzZWxlY3QgQWxsJztcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuICdTZWxlY3QgQWxsJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSBlbHNlIGlmICgodGhpcy5pc1JlY3Vyc2l2ZVNlbGVjdGlvbiAmJiAhdGhpcy5ub2RlLmhhc0NoaWxkcmVuKSB8fCAhdGhpcy5pc1JlY3Vyc2l2ZVNlbGVjdGlvbikge1xuICAgICAgICAgICAgaWYgKHRoaXMubm9kZS5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHJldHVybiAnRGVzZWxlY3Qgbm9kZSc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnU2VsZWN0IG5vZGUnO1xuICAgICAgICAgICAgfVxuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBnZXRQYXJlbnRzKHV4TGluazogVXhMaW5rLCBpc0NoZWNrZWQ6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHV4TGluayA9PT0gdGhpcy5ub2RlKSB7XG4gICAgICAgICAgICBpZiAoaXNDaGVja2VkID09PSB0cnVlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlWydoaWdobGlnaHRlZCddID0gaXNDaGVja2VkO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuID0gdGhpcy5oYXNDaGlsZFNlbGVjdGVkKHRoaXMubm9kZSk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZVsnaGlnaGxpZ2h0ZWQnXSA9IGlzQ2hlY2tlZDtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXhMaW5rLnBhcmVudCkge1xuICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHV4TGluay5wYXJlbnRbJ2hpZ2hsaWdodGVkJ10gPSBpc0NoZWNrZWQ7XG4gICAgICAgICAgICAgICAgdGhpcy5nZXRQYXJlbnRzKHV4TGluay5wYXJlbnQsIGlzQ2hlY2tlZCk7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIGNvbnN0IHNlbGVjdGVkQ2hpbGRyZW4gPSB0aGlzLmhhc0NoaWxkU2VsZWN0ZWQodXhMaW5rLnBhcmVudCk7XG4gICAgICAgICAgICAgICAgaWYgKHNlbGVjdGVkQ2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHV4TGluay5wYXJlbnRbJ2hpZ2hsaWdodGVkJ10gPSBpc0NoZWNrZWQ7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGFyZW50cyh1eExpbmsucGFyZW50LCBpc0NoZWNrZWQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgaGFzQ2hpbGRTZWxlY3RlZCh1eExpbms6IFV4TGluaywgc2VsZWN0ZWQgPSBbXSk6IHN0cmluZ1tdIHtcbiAgICAgICAgaWYgKHV4TGluay5zZWxlY3RlZCkge1xuICAgICAgICAgICAgc2VsZWN0ZWQucHVzaCh1eExpbmsubGFiZWwpO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHV4TGluay5jaGlsZHJlbiAmJiB1eExpbmsuY2hpbGRyZW4ubGVuZ3RoID4gMCkge1xuICAgICAgICAgICAgdXhMaW5rLmNoaWxkcmVuLmZvckVhY2goKGNoaWxkKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5oYXNDaGlsZFNlbGVjdGVkKGNoaWxkLCBzZWxlY3RlZCk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJldHVybiBzZWxlY3RlZDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZVNlbGVjdGlvblJlY3Vyc2l2ZWx5KHV4TGluazogVXhMaW5rLCB2YWx1ZTogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBpZiAodXhMaW5rLmhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICB1eExpbmsuY2hpbGRyZW4uZm9yRWFjaCgobGluazogVXhMaW5rKSA9PiB7XG4gICAgICAgICAgICAgICAgbGluay5zZWxlY3RlZCA9IHZhbHVlO1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgICBsaW5rLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VTZWxlY3Rpb25SZWN1cnNpdmVseShsaW5rLCB2YWx1ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgY2hhbmdlUGFyZW50U2VsZWN0aW9uKHV4TGluazogVXhMaW5rKTogdm9pZCB7XG4gICAgICAgIGlmICh0aGlzLmlzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uKSB7XG4gICAgICAgICAgICB1eExpbmsuaW5kZXRlcm1pbmF0ZSA9ICF0aGlzLmFsbENoaWxkcmVuU2VsZWN0ZWQodXhMaW5rKTtcbiAgICAgICAgICAgIHV4TGluay5zZWxlY3RlZCA9IHRoaXMuaGFzU2VsZWN0ZWRDaGlsZHJlbih1eExpbmspO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgaWYgKCF1eExpbmsuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICB1eExpbmsuaW5kZXRlcm1pbmF0ZSA9IHRoaXMuaGFzU2VsZWN0ZWRDaGlsZHJlbih1eExpbmspO1xuICAgICAgICAgICAgICAgIHV4TGluay5zZWxlY3RlZCA9IHRoaXMuaGFzU2VsZWN0ZWRDaGlsZHJlbih1eExpbmspO1xuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAodXhMaW5rLmluZGV0ZXJtaW5hdGUgJiYgIXRoaXMuaGFzU2VsZWN0ZWRDaGlsZHJlbih1eExpbmspKSB7XG4gICAgICAgICAgICAgICAgdXhMaW5rLmluZGV0ZXJtaW5hdGUgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB1eExpbmsuc2VsZWN0ZWQgPSBmYWxzZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1eExpbmsucGFyZW50KSB7XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVBhcmVudFNlbGVjdGlvbih1eExpbmsucGFyZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgYWxsQ2hpbGRyZW5TZWxlY3RlZCh1eGxpbms6IFV4TGluayk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdXhsaW5rLmNoaWxkcmVuLmZpbHRlcigoYykgPT4gKCFjLnNlbGVjdGVkIHx8IChjLnNlbGVjdGVkICYmIGMuaW5kZXRlcm1pbmF0ZSkpICYmIHRoaXMuY2hpbGRyZW5TZWxlY3RlZCkubGVuZ3RoID09PSAwO1xuICAgIH1cblxuICAgIHByaXZhdGUgaGFzU2VsZWN0ZWRDaGlsZHJlbih1eGxpbms6IFV4TGluayk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdXhsaW5rLmNoaWxkcmVuLmZpbHRlcigoYykgPT4gYy5zZWxlY3RlZCA9PT0gdHJ1ZSkubGVuZ3RoID4gMDtcbiAgICB9XG59XG5cbkBDb21wb25lbnQoe1xuICAgIHNlbGVjdG9yOiAndXgtdHJlZScsXG4gICAgdGVtcGxhdGU6IGBcbiAgICAgICAgPHV4LWEtdG9vbGJhci1maWx0ZXJcbiAgICAgICAgICAgICpuZ0lmPVwiaXNTaG93VG9vbGJhclwiXG4gICAgICAgICAgICBbaXNWaXNpYmxlXT1cImlzU2hvd1Rvb2xiYXJcIlxuICAgICAgICAgICAgW2lzVG9nZ2xlVmlzaWJsZV09XCIhaXNIaWRlVG9nZ2xlc1wiXG4gICAgICAgICAgICAoZmlsdGVyKT1cIm9uRmlsdGVyKCRldmVudClcIlxuICAgICAgICAgICAgW2ZpbHRlclZhbHVlXT1cInNldEZpbHRlclZhbHVlXCJcbiAgICAgICAgICAgIChleHBhbmRBbGwpPVwib25FeHBhbmRBbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICAoY29sbGFwc2VBbGwpPVwib25Db2xsYXBzZUFsbCgkZXZlbnQpXCJcbiAgICAgICAgICAgIGZpbHRlckxhYmVsPVwie3sgZmlsdGVyTGFiZWwgfX1cIlxuICAgICAgICAgICAgW2V4cGFuZEFsbExhYmVsXT1cImV4cGFuZEFsbExhYmVsID8gZXhwYW5kQWxsTGFiZWwgOiBudWxsXCJcbiAgICAgICAgICAgIGNvbGxhcHNlQWxsTGFiZWw9XCJ7eyBjb2xsYXBzZUFsbExhYmVsIH19XCJcbiAgICAgICAgICAgIFtpc1RvZ2dsZUV4cGFuZGVkXT1cImlzRXhwYW5kZWRcIlxuICAgICAgICAgICAgW2hhc0xhYmVsc109XCJoYXNMYWJlbHNcIlxuICAgICAgICAgICAgYXR0ci5kYXRhLWUyZT1cInt7IGUyZUF0dHIgfX0tYS10b29sYmFyLWZpbHRlclwiPlxuICAgICAgICA8L3V4LWEtdG9vbGJhci1maWx0ZXI+XG5cbiAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgtY29udGFpbmVyXCIgKm5nSWY9XCJoYXNTZWxlY3RBbGwgfHwgaGFzU2VsZWN0QWxsRmlsdGVyZWRcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ1eC1pbnB1dF9fY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIGlkPVwic2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgICBbY2hlY2tlZF09XCJpc01pbmltdW1PbmVTZWxlY3RlZCA/ICdjaGVja2VkJyA6IG51bGxcIlxuICAgICAgICAgICAgICAgIChjaGFuZ2UpPVwib25TZWxlY3RBbGxDaGFuZ2UoJGV2ZW50KVwiIC8+XG4gICAgICAgICAgICA8bGFiZWxcbiAgICAgICAgICAgICAgICBjbGFzcz1cInV4LXRyZWVfX25vZGUtY2hlY2tib3gtbGFiZWxcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5jaGVja2JveC1sYWJlbC1pbmRldGVybWluYXRlXT1cImlzTWluaW11bU9uZVNlbGVjdGVkICYmICFpc0FsbFNlbGVjdGVkXCJcbiAgICAgICAgICAgICAgICBmb3I9XCJzZWxlY3RBbGxcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy51eC10cmVlX19ub2RlLWNoZWNrYm94LWxhYmVsLS1vbmVsZXZlbF09XCJjaGVja0ZvckNoaWxkcmVuKClcIj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIWFsbFNlbGVjdGVkICYmICFpc01pbmltdW1PbmVTZWxlY3RlZCAmJiAhaXNBbGxTZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnZXVpLnV4dHJlZS5TRUxFQ1QtQUxMJyB8IHRyYW5zbGF0ZSB9fVxuICAgICAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCJhbGxTZWxlY3RlZCB8fCBpc01pbmltdW1PbmVTZWxlY3RlZCB8fCBpc0FsbFNlbGVjdGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIHt7ICdldWkudXh0cmVlLlVOU0VMRUNULUFMTCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgIDwvbGFiZWw+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZXMubGVuZ3RoID4gNTAwICYmICFoYXNTZWxlY3RBbGwgJiYgIWhhc1NlbGVjdEFsbEZpbHRlcmVkOyBlbHNlIG5vVmlydHVhbFNjcm9sbFwiPlxuICAgICAgICAgICAgPGNkay12aXJ0dWFsLXNjcm9sbC12aWV3cG9ydFxuICAgICAgICAgICAgICAgICN2aXJ0dWFsU2Nyb2xsaW5nXG4gICAgICAgICAgICAgICAgaXRlbVNpemU9XCIzMFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ1eC10cmVlX192aXJ0dWFsLXNjcm9sbGluZ19fY29udGFpbmVyXCJcbiAgICAgICAgICAgICAgICBtaW5CdWZmZXJQeD1cIjIwMDBcIlxuICAgICAgICAgICAgICAgIG1heEJ1ZmZlclB4PVwiMjQwMFwiPlxuICAgICAgICAgICAgICAgIDxkaXYgKmNka1ZpcnR1YWxGb3I9XCJsZXQgbm9kZSBvZiB2aXNpYmxlTm9kZXM7IHRyYWNrQnk6IHRyYWNrQnlGblwiIGNsYXNzPVwidXgtdHJlZV9fdmlydHVhbC1zY3JvbGxpbmdfX2l0ZW1cIj5cbiAgICAgICAgICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInV4LXRyZWVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWUtLWhpZGVsaW5lc109XCJpc0hpZGVMaW5lc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudXgtdHJlZS0tbXVsdGlzZWxlY3RdPVwiaXNNdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBbY2xhc3MudXgtdHJlZS0tb25lbGV2ZWxdPVwiY2hlY2tGb3JDaGlsZHJlbigpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1lMmU9XCJ7eyBlMmVBdHRyIH19XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dXgtdHJlZS1ub2RlXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVDbGljayk9XCJvbk5vZGVDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9kZVRvZ2dsZSk9XCJvbk5vZGVUb2dnbGUoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNSb290Tm9kZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNNdWx0aXNlbGVjdF09XCJpc011bHRpc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNSZWN1cnNpdmVTZWxlY3Rpb25dPVwiaXNSZWN1cnNpdmVTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0NsaWNrVG9nZ2xpbmdOb2RlXT1cImlzQ2xpY2tUb2dnbGluZ05vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZGVkSWNvbkNsYXNzPVwie3sgZXhwYW5kZWRJY29uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZEljb25DbGFzcz1cInt7IGNvbGxhcHNlZEljb25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlVmFyaWFibGVdPVwidGVtcGxhdGVWYXJpYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW25vZGVDb250ZW50VGVtcGxhdGVdPVwibm9kZUNvbnRlbnRUZW1wbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzU2hvd0FjdGl2ZU5vZGVdPVwiaXNTaG93QWN0aXZlTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2F1dG9UcmFuc2xhdGVdPVwiYXV0b1RyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzSGlkZVRvZ2dsZXNdPVwiaXNIaWRlVG9nZ2xlc1wiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzQ2xpY2tTZWxlY3RpbmdOb2RlXT1cImlzQ2xpY2tTZWxlY3RpbmdOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaGlnaGxpZ2h0UGF0aF09XCJoaWdobGlnaHRQYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNSZWN1cnNpdmVQYXJlbnRTZWxlY3Rpb25dPVwiaXNSZWN1cnNpdmVQYXJlbnRTZWxlY3Rpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdXgtdHJlZS1ub2RlPlxuICAgICAgICAgICAgICAgICAgICA8L3VsPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9jZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnQ+XG4gICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgIDxuZy10ZW1wbGF0ZSAjbm9WaXJ0dWFsU2Nyb2xsPlxuICAgICAgICAgICAgPHVsXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ1eC10cmVlXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudXgtdHJlZS0taGlkZWxpbmVzXT1cImlzSGlkZUxpbmVzXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudXgtdHJlZS0tbXVsdGlzZWxlY3RdPVwiaXNNdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWUtLW9uZWxldmVsXT1cImNoZWNrRm9yQ2hpbGRyZW4oKVwiXG4gICAgICAgICAgICAgICAgYXR0ci5kYXRhLWUyZT1cInt7IGUyZUF0dHIgfX1cIj5cbiAgICAgICAgICAgICAgICA8dXgtdHJlZS1ub2RlXG4gICAgICAgICAgICAgICAgICAgICpuZ0Zvcj1cImxldCBub2RlIG9mIG5vZGVzOyB0cmFja0J5OiB0cmFja0J5Rm5cIlxuICAgICAgICAgICAgICAgICAgICBbbm9kZV09XCJub2RlXCJcbiAgICAgICAgICAgICAgICAgICAgKG5vZGVDbGljayk9XCJvbk5vZGVDbGljaygkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKG5vZGVUb2dnbGUpPVwib25Ob2RlVG9nZ2xlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICBbaXNSb290Tm9kZV09XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlzZWxlY3RdPVwiaXNNdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgIFtpc1JlY3Vyc2l2ZVNlbGVjdGlvbl09XCJpc1JlY3Vyc2l2ZVNlbGVjdGlvblwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0NsaWNrVG9nZ2xpbmdOb2RlXT1cImlzQ2xpY2tUb2dnbGluZ05vZGVcIlxuICAgICAgICAgICAgICAgICAgICBleHBhbmRlZEljb25DbGFzcz1cInt7IGV4cGFuZGVkSWNvbkNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgY29sbGFwc2VkSWNvbkNsYXNzPVwie3sgY29sbGFwc2VkSWNvbkNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgW3RlbXBsYXRlVmFyaWFibGVdPVwidGVtcGxhdGVWYXJpYWJsZVwiXG4gICAgICAgICAgICAgICAgICAgIFtub2RlQ29udGVudFRlbXBsYXRlXT1cIm5vZGVDb250ZW50VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbaXNTaG93QWN0aXZlTm9kZV09XCJpc1Nob3dBY3RpdmVOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW2F1dG9UcmFuc2xhdGVdPVwiYXV0b1RyYW5zbGF0ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc0hpZGVUb2dnbGVzXT1cImlzSGlkZVRvZ2dsZXNcIlxuICAgICAgICAgICAgICAgICAgICBbaXNDbGlja1NlbGVjdGluZ05vZGVdPVwiaXNDbGlja1NlbGVjdGluZ05vZGVcIlxuICAgICAgICAgICAgICAgICAgICBbaGlnaGxpZ2h0UGF0aF09XCJoaWdobGlnaHRQYXRoXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uXT1cImlzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgPC91eC10cmVlLW5vZGU+XG4gICAgICAgICAgICA8L3VsPlxuICAgICAgICA8L25nLXRlbXBsYXRlPlxuICAgIGAsXG4gICAgc3R5bGVVcmxzOiBbJy4vc3R5bGVzL19pbmRleC5zY3NzJ10sXG4gICAgZW5jYXBzdWxhdGlvbjogVmlld0VuY2Fwc3VsYXRpb24uTm9uZSxcbn0pXG5leHBvcnQgY2xhc3MgVXhUcmVlQ29tcG9uZW50IGltcGxlbWVudHMgQWZ0ZXJDb250ZW50SW5pdCwgT25Jbml0LCBPbkNoYW5nZXMge1xuICAgIEBJbnB1dCgpIG5vZGVzOiBVeExpbmtbXTtcbiAgICBASW5wdXQoKSBjb2xsYXBzZUFsbExhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZXhwYW5kQWxsTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBmaWx0ZXJMYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGNvbGxhcHNlZEljb25DbGFzcyA9ICdldWktaWNvbiBldWktaWNvbi1wbHVzLWNpcmNsZSc7XG4gICAgQElucHV0KCkgZXhwYW5kZWRJY29uQ2xhc3MgPSAnZXVpLWljb24gZXVpLWljb24tbWludXMtY2lyY2xlJztcbiAgICBASW5wdXQoKSBzZXRGaWx0ZXJWYWx1ZTogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAndXgtdHJlZSc7XG5cbiAgICBAT3V0cHV0KCkgbm9kZUNsaWNrID0gbmV3IEV2ZW50RW1pdHRlcjxVeExpbms+KCk7XG4gICAgQE91dHB1dCgpIG5vZGVUb2dnbGUgPSBuZXcgRXZlbnRFbWl0dGVyPFV4TGluaz4oKTtcbiAgICAvLyBUT0RPOiBmb3IgZVVJIDE0IHJlbW92ZSB0aGUgW10gdHlwZVxuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFV4TGluayB8IFtdPigpO1xuICAgIEBPdXRwdXQoKSBvbkZpbHRlclZhbHVlID0gbmV3IEV2ZW50RW1pdHRlcjxzdHJpbmc+KCk7XG5cbiAgICBAQ29udGVudENoaWxkKFRlbXBsYXRlUmVmKSB0ZW1wbGF0ZVZhcmlhYmxlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBDb250ZW50Q2hpbGRyZW4oVXhUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzOiBRdWVyeUxpc3Q8YW55PjtcbiAgICBAVmlld0NoaWxkcmVuKFV4VHJlZU5vZGVDb21wb25lbnQpIHRyZWVOb2RlczogUXVlcnlMaXN0PFV4VHJlZU5vZGVDb21wb25lbnQ+O1xuICAgIEBWaWV3Q2hpbGQoJ3ZpcnR1YWxTY3JvbGxpbmcnKSBwdWJsaWMgdmlydHVhbFNjcm9sbGluZzogQ2RrVmlydHVhbFNjcm9sbFZpZXdwb3J0O1xuXG4gICAgY29uc3RydWN0b3IocHJpdmF0ZSBjZDogQ2hhbmdlRGV0ZWN0b3JSZWYpIHt9XG5cbiAgICBwdWJsaWMgYWxsU2VsZWN0ZWQgPSBmYWxzZTtcbiAgICBwdWJsaWMgbmJOb2RlcyA9IDA7XG4gICAgcHVibGljIHZpc2libGVOb2RlcyA9IFtdO1xuICAgIHB1YmxpYyBub2RlQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIHB1YmxpYyBmaWx0ZXJWYWx1ZSA9ICcnO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTaG93VG9vbGJhcigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd1Rvb2xiYXI7XG4gICAgfVxuICAgIHNldCBpc1Nob3dUb29sYmFyKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTaG93VG9vbGJhciA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzU2hvd1Rvb2xiYXIgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0V4cGFuZGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNFeHBhbmRlZDtcbiAgICB9XG4gICAgc2V0IGlzRXhwYW5kZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0V4cGFuZGVkID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNFeHBhbmRlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzTXVsdGlzZWxlY3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc011bHRpc2VsZWN0O1xuICAgIH1cbiAgICBzZXQgaXNNdWx0aXNlbGVjdCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzTXVsdGlzZWxlY3QgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc011bHRpc2VsZWN0ID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNSZWN1cnNpdmVTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1JlY3Vyc2l2ZVNlbGVjdGlvbjtcbiAgICB9XG4gICAgc2V0IGlzUmVjdXJzaXZlU2VsZWN0aW9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNSZWN1cnNpdmVTZWxlY3Rpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1JlY3Vyc2l2ZVNlbGVjdGlvbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQ2xpY2tUb2dnbGluZ05vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NsaWNrVG9nZ2xpbmdOb2RlO1xuICAgIH1cbiAgICBzZXQgaXNDbGlja1RvZ2dsaW5nTm9kZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2xpY2tUb2dnbGluZ05vZGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0NsaWNrVG9nZ2xpbmdOb2RlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTaG93QWN0aXZlTm9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd0FjdGl2ZU5vZGU7XG4gICAgfVxuICAgIHNldCBpc1Nob3dBY3RpdmVOb2RlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTaG93QWN0aXZlTm9kZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzU2hvd0FjdGl2ZU5vZGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0hpZGVUb2dnbGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNIaWRlVG9nZ2xlcztcbiAgICB9XG4gICAgc2V0IGlzSGlkZVRvZ2dsZXModmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0hpZGVUb2dnbGVzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNIaWRlVG9nZ2xlcyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzSGlkZUxpbmVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNIaWRlTGluZXM7XG4gICAgfVxuICAgIHNldCBpc0hpZGVMaW5lcyh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzSGlkZUxpbmVzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNIaWRlTGluZXMgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0NsaWNrU2VsZWN0aW5nTm9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzQ2xpY2tTZWxlY3RpbmdOb2RlO1xuICAgIH1cbiAgICBzZXQgaXNDbGlja1NlbGVjdGluZ05vZGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0NsaWNrU2VsZWN0aW5nTm9kZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzQ2xpY2tTZWxlY3RpbmdOb2RlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgc2hvd0ZpbHRlcmVkQ2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9zaG93RmlsdGVyZWRDaGlsZHJlbjtcbiAgICB9XG4gICAgc2V0IHNob3dGaWx0ZXJlZENoaWxkcmVuKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fc2hvd0ZpbHRlcmVkQ2hpbGRyZW4gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9zaG93RmlsdGVyZWRDaGlsZHJlbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGV4cGFuZEZpbHRlcmVkQ2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9leHBhbmRGaWx0ZXJlZENoaWxkcmVuO1xuICAgIH1cbiAgICBzZXQgZXhwYW5kRmlsdGVyZWRDaGlsZHJlbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2V4cGFuZEZpbHRlcmVkQ2hpbGRyZW4gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9leHBhbmRGaWx0ZXJlZENoaWxkcmVuID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaGlnaGxpZ2h0UGF0aCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hpZ2hsaWdodFBhdGg7XG4gICAgfVxuICAgIHNldCBoaWdobGlnaHRQYXRoKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faGlnaGxpZ2h0UGF0aCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hpZ2hsaWdodFBhdGggPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBhdXRvVHJhbnNsYXRlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fYXV0b1RyYW5zbGF0ZTtcbiAgICB9XG4gICAgc2V0IGF1dG9UcmFuc2xhdGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9hdXRvVHJhbnNsYXRlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfYXV0b1RyYW5zbGF0ZSA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBnZXQgaGFzTGFiZWxzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzTGFiZWxzO1xuICAgIH1cbiAgICBzZXQgaGFzTGFiZWxzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faGFzTGFiZWxzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaGFzTGFiZWxzID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBoYXNTZWxlY3RBbGwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNTZWxlY3RBbGw7XG4gICAgfVxuICAgIHNldCBoYXNTZWxlY3RBbGwodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9oYXNTZWxlY3RBbGwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oYXNTZWxlY3RBbGwgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBoYXNTZWxlY3RBbGxGaWx0ZXJlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc1NlbGVjdEFsbEZpbHRlcmVkO1xuICAgIH1cbiAgICBzZXQgaGFzU2VsZWN0QWxsRmlsdGVyZWQodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9oYXNTZWxlY3RBbGxGaWx0ZXJlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hhc1NlbGVjdEFsbEZpbHRlcmVkID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNSZWN1cnNpdmVQYXJlbnRTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1JlY3Vyc2l2ZVBhcmVudFNlbGVjdGlvbjtcbiAgICB9XG4gICAgc2V0IGlzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNSZWN1cnNpdmVQYXJlbnRTZWxlY3Rpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1JlY3Vyc2l2ZVBhcmVudFNlbGVjdGlvbiA9IHRydWU7XG5cbiAgICBnZXQgaXNNaW5pbXVtT25lU2VsZWN0ZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGVkTm9kZXMoKS5sZW5ndGggPiAwICYmICF0aGlzLmFsbFNlbGVjdGVkO1xuICAgIH1cblxuICAgIGdldCBpc0FsbFNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3RlZE5vZGVzKCkubGVuZ3RoID09PSB0aGlzLm5iTm9kZXM7XG4gICAgfVxuXG4gICAgbmdPbkNoYW5nZXMoY2hhbmdlczogU2ltcGxlQ2hhbmdlcyk6IHZvaWQge1xuICAgICAgICBpZiAoY2hhbmdlcyAmJiBjaGFuZ2VzWydub2RlcyddKSB7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVOb2RlcyA9IHRoaXMudmlzaWJsZSh0aGlzLm5vZGVzKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIG5nT25Jbml0KCk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5oYXNTZWxlY3RBbGwpIHtcbiAgICAgICAgICAgIHRoaXMuaXNSZWN1cnNpdmVTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRoaXMuZ2V0TmJOb2Rlcyh0aGlzLm5vZGVzKTtcblxuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy5zZXROb2Rlc0V4cGFuZGVkU3RhdGUodGhpcy5ub2RlcywgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFBhcmVudE5vZGUodGhpcy5ub2RlcywgbnVsbCk7XG5cbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnbm9kZUNvbnRlbnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlQ29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmlzaWJsZShub2RlczogVXhMaW5rW10pOiBVeExpbmtbXSB7XG5cbiAgICAgICAgaWYodGhpcy5oYXNTZWxlY3RBbGxGaWx0ZXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmlzaWJsZU5vZGVzUmVjdXJzaXZlKG5vZGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBub2Rlcy5maWx0ZXIoKG4pID0+IG4udmlzaWJsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXROYk5vZGVzKG5vZGVzOiBVeExpbmtbXSk6IHZvaWQge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5iTm9kZXMrKztcbiAgICAgICAgICAgIGlmIChub2RlLmhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChsaW5rOiBVeExpbmspID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXROYk5vZGVzKFtsaW5rXSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlbGVjdEFsbENoYW5nZShlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hbGxTZWxlY3RlZCA9IGUudGFyZ2V0LmNoZWNrZWQ7XG4gICAgICAgIGlmICghZS50YXJnZXQuY2hlY2spIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHRoaXMuaGFzU2VsZWN0QWxsRmlsdGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Tm9kZXNTZWxlY3RlZEZpbHRlcmVkU3RhdGUodGhpcy52aXNpYmxlTm9kZXMsIGUudGFyZ2V0LmNoZWNrZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXROb2Rlc1NlbGVjdGVkU3RhdGUodGhpcy5ub2RlcywgZS50YXJnZXQuY2hlY2tlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2VsZWN0ZWROb2RlcygpOiBVeExpbmtbXSB7XG5cbiAgICAgICAgICBpZih0aGlzLmZpbHRlclZhbHVlICE9PSAnJyAmJiB0aGlzLmFsbFNlbGVjdGVkICYmIHRoaXMuaGFzU2VsZWN0QWxsRmlsdGVyZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZpc2libGVOb2RlcztcbiAgICAgICAgICB9ICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGVkTm9kZXNSZWN1cnNpdmUodGhpcy5ub2Rlcyk7XG4gICAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHVibGljIG9uTm9kZVRvZ2dsZSh1eExpbms6IFV4TGluayk6IHZvaWQge1xuICAgICAgICB0aGlzLm5vZGVUb2dnbGUuZW1pdCh1eExpbmspO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk5vZGVDbGljayh1eExpbms6IFV4TGluayk6IHZvaWQge1xuICAgICAgICBpZiAoIXV4TGluay5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5ub2RlQ2xpY2suZW1pdCh1eExpbmspO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDbGlja1RvZ2dsaW5nTm9kZSAmJiB1eExpbmsuaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVRvZ2dsZSh1eExpbmspO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3QgJiYgdGhpcy5pc1Nob3dBY3RpdmVOb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROb2Rlc1NlbGVjdGVkU3RhdGUodGhpcy5ub2RlcywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHV4TGluay5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25FeHBhbmRBbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0Tm9kZXNFeHBhbmRlZFN0YXRlKHRoaXMubm9kZXMsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbGxhcHNlQWxsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldE5vZGVzRXhwYW5kZWRTdGF0ZSh0aGlzLm5vZGVzLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKHV4TGluazogVXhMaW5rKTogdm9pZCB7XG4gICAgICAgIGlmICghdXhMaW5rLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UubmV4dCh1eExpbmspO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpbHRlcihmaWx0ZXJWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG5cbiAgICAgICAgaWYgKGZpbHRlclZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgdGhpcy5zZXROb2Rlc1Zpc2libGVTdGF0ZSh0aGlzLm5vZGVzLCBmYWxzZSk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5leHBhbmRGaWx0ZXJlZENoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaWx0ZXJNYXRjaGVkKG5vZGUsIGZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZXhwYW5kRmlsdGVyZWRDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRmlsdGVyTWF0Y2hlZEV4cGFuZChub2RlLCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROb2Rlc1Zpc2libGVTdGF0ZSh0aGlzLm5vZGVzLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0ZpbHRlcmVkQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVDaGlsZHJlbihub2RlLCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5leHBhbmRGaWx0ZXJlZENoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROb2Rlc0V4cGFuZGVkU3RhdGUodGhpcy5ub2RlcywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZpc2libGVOb2RlcyA9IHRoaXMudmlzaWJsZSh0aGlzLm5vZGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Tm9kZXNWaXNpYmxlU3RhdGUodGhpcy5ub2RlcywgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVOb2RlcyA9IHRoaXMudmlzaWJsZSh0aGlzLm5vZGVzKTtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbGluZz8uc2Nyb2xsVG9JbmRleCgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHRoaXMuaGFzU2VsZWN0QWxsRmlsdGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Tm9kZXNTZWxlY3RlZEZpbHRlcmVkU3RhdGUodGhpcy52aXNpYmxlTm9kZXMsIHRoaXMuYWxsU2VsZWN0ZWQpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZSAgPSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkZpbHRlclZhbHVlLmVtaXQoZmlsdGVyVmFsdWUpO1xuICAgIH1cblxuICAgIGlzRmlsdGVyTWF0Y2hlZEV4cGFuZChub2RlOiBVeExpbmssIGZpbHRlclZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgbm9kZVsnaGlnaGxpZ2h0ZWQnXSA9IGZhbHNlO1xuICAgICAgICBpZiAobm9kZS5sYWJlbC50b1VwcGVyQ2FzZSgpLmluZGV4T2YoZmlsdGVyVmFsdWUudG9VcHBlckNhc2UoKSkgIT09IC0xKSB7XG4gICAgICAgICAgICBub2RlLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIG5vZGVbJ2hpZ2hsaWdodGVkJ10gPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZS5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgbm9kZVsnaGlnaGxpZ2h0ZWQnXSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGRyZW5Ob2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpbHRlck1hdGNoZWRFeHBhbmQoY2hpbGRyZW5Ob2RlLCBmaWx0ZXJWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5Ob2RlLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBub2RlWydoaWdobGlnaHRlZCddID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogVXhMaW5rKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrRm9yQ2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5ub2Rlcy5zb21lKChub2RlKSA9PiBub2RlLmhhc0NoaWxkcmVuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXROb2RlKHRoaXMubm9kZXMpO1xuICAgICAgICAvLyBUT0RPOiBpbnZlc3RpZ2F0ZSBpZiB3ZSBjYW4gZW1pdCBudWxsIGluc3RlYWQgb2YgW11cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChbXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldE5vZGUobm9kZXM6IFV4TGlua1tdKTogdm9pZCB7XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIG5vZGUuc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldE5vZGUobm9kZS5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWaXNpYmxlQ2hpbGRyZW4obm9kZTogVXhMaW5rLCBmaWx0ZXJWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChub2RlLnBhcmVudCAmJiBub2RlLnBhcmVudC52aXNpYmxlID09PSB0cnVlICYmIG5vZGUucGFyZW50LmxhYmVsLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXJWYWx1ZS50b1VwcGVyQ2FzZSgpKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIG5vZGUudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZHJlbk5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzVmlzaWJsZUNoaWxkcmVuKGNoaWxkcmVuTm9kZSwgZmlsdGVyVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlbGVjdGVkTm9kZXNSZWN1cnNpdmUobm9kZXM6IFV4TGlua1tdKTogVXhMaW5rW10ge1xuICAgICAgICByZXR1cm4gKG5vZGVzIHx8IFtdKS5yZWR1Y2UoKGFjYywgbm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5vZGUuaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5zZWxlY3RlZCAmJiAhbm9kZS5pbmRldGVybWluYXRlXG4gICAgICAgICAgICAgICAgICAgID8gWy4uLmFjYywgbm9kZSwgLi4udGhpcy5nZXRTZWxlY3RlZE5vZGVzUmVjdXJzaXZlKG5vZGUuY2hpbGRyZW4pXVxuICAgICAgICAgICAgICAgICAgICA6IFsuLi5hY2MsIC4uLnRoaXMuZ2V0U2VsZWN0ZWROb2Rlc1JlY3Vyc2l2ZShub2RlLmNoaWxkcmVuKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlLnNlbGVjdGVkID8gWy4uLmFjYywgbm9kZV0gOiBbLi4uYWNjXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW10pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmlzaWJsZU5vZGVzUmVjdXJzaXZlKG5vZGVzOiBVeExpbmtbXSk6IFV4TGlua1tdIHtcbiAgICAgICAgcmV0dXJuIChub2RlcyB8fCBbXSkucmVkdWNlKChhY2MsIG5vZGUpID0+IHtcbiAgICAgICAgICAgIGlmIChub2RlLmhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUudmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICA/IFsuLi5hY2MsIG5vZGUsIC4uLnRoaXMuZ2V0VmlzaWJsZU5vZGVzUmVjdXJzaXZlKG5vZGUuY2hpbGRyZW4pXVxuICAgICAgICAgICAgICAgICAgICA6IFsuLi5hY2MsIC4uLnRoaXMuZ2V0VmlzaWJsZU5vZGVzUmVjdXJzaXZlKG5vZGUuY2hpbGRyZW4pXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUudmlzaWJsZSA/IFsuLi5hY2MsIG5vZGVdIDogWy4uLmFjY107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsdGVyTWF0Y2hlZChub2RlOiBVeExpbmssIGZpbHRlclZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKG5vZGUubGFiZWw/LnRvVXBwZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXJWYWx1ZT8udG9VcHBlckNhc2UoKSkgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxpbmc/LnNjcm9sbFRvSW5kZXgoMCk7XG4gICAgICAgICAgICBub2RlLnZpc2libGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZS52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZHJlbk5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRmlsdGVyTWF0Y2hlZChjaGlsZHJlbk5vZGUsIGZpbHRlclZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbk5vZGUudmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXROb2Rlc0V4cGFuZGVkU3RhdGUobm9kZXM6IFV4TGlua1tdLCBleHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2RlLmV4cGFuZGVkID0gZXhwYW5kZWQ7XG4gICAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Tm9kZXNFeHBhbmRlZFN0YXRlKG5vZGUuY2hpbGRyZW4sIGV4cGFuZGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXROb2Rlc1Zpc2libGVTdGF0ZShub2RlczogVXhMaW5rW10sIHZpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgbm9kZS52aXNpYmxlID0gdmlzaWJsZTtcbiAgICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROb2Rlc1Zpc2libGVTdGF0ZShub2RlLmNoaWxkcmVuLCB2aXNpYmxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXROb2Rlc1NlbGVjdGVkU3RhdGUobm9kZXM6IFV4TGlua1tdLCBzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2RlLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Tm9kZXNTZWxlY3RlZFN0YXRlKG5vZGUuY2hpbGRyZW4sIHNlbGVjdGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc1NlbGVjdEFsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfVxuICAgIHByaXZhdGUgc2V0Tm9kZXNTZWxlY3RlZEZpbHRlcmVkU3RhdGUobm9kZXM6IFV4TGlua1tdLCBzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBpZihub2RlLnZpc2libGUpe1xuICAgICAgICAgICAgICAgIG5vZGUuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROb2Rlc1NlbGVjdGVkRmlsdGVyZWRTdGF0ZShub2RlLmNoaWxkcmVuLCBzZWxlY3RlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNTZWxlY3RBbGxGaWx0ZXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UGFyZW50Tm9kZShub2RlczogVXhMaW5rW10sIHBhcmVudE5vZGU6IFV4TGluayk6IHZvaWQge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRQYXJlbnROb2RlKG5vZGUuY2hpbGRyZW4sIG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBVeFRvb2xiYXJGaWx0ZXJDb21wb25lbnRNb2R1bGUsXG4gICAgICAgIFV4QnV0dG9uQ29tcG9uZW50TW9kdWxlLFxuICAgICAgICBVeEJhZGdlQ29tcG9uZW50TW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIFNjcm9sbGluZ01vZHVsZSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtVeFRyZWVDb21wb25lbnQsIFV4VHJlZU5vZGVDb21wb25lbnRdLFxuICAgIGRlY2xhcmF0aW9uczogW1V4VHJlZUNvbXBvbmVudCwgVXhUcmVlTm9kZUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFV4VHJlZUNvbXBvbmVudE1vZHVsZSB7fVxuIiwiPGxpXG4gICAgKm5nSWY9XCJub2RlLnZpc2libGVcIlxuICAgIGNsYXNzPVwidXgtdHJlZV9fbm9kZVwiXG4gICAgW2NsYXNzLmZpcnN0LWNoaWxkXT1cImlzRmlyc3RcIlxuICAgIFtjbGFzcy5sYXN0LWNoaWxkXT1cImlzTGFzdFwiXG4gICAgW2NsYXNzLnV4LXRyZWVfX25vZGUtLWV4cGFuZGFibGVdPVwiaGFzTm9kZUNoaWxkcmVuKG5vZGUpICYmICFpc0hpZGVUb2dnbGVzXCJcbiAgICBbY2xhc3MudXgtdHJlZV9fbm9kZS0tZGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZFwiXG4gICAgdGl0bGU9XCJ7eyBub2RlLnRvb2x0aXBMYWJlbCA/IG5vZGUudG9vbHRpcExhYmVsIDogbm9kZS5sYWJlbCB9fVwiXG4gICAgYXR0ci5kYXRhLWUyZT1cInt7IGUyZUF0dHIgfX1cIj5cbiAgICA8ZGl2IGNsYXNzPVwidXgtdHJlZV9fbm9kZS13cmFwcGVyXCIgW2NsYXNzLnV4LXRyZWVfX25vZGUtLXNlbGVjdGVkXT1cIm5vZGUuc2VsZWN0ZWRcIj5cbiAgICAgICAgPHV4LWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTm9kZVRvZ2dsZSgkZXZlbnQsIG5vZGUpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uTm9kZUtleWRvd24oJGV2ZW50LCBub2RlKVwiXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwidXgtdHJlZV9fbm9kZS10b2dnbGUtaWNvblwiXG4gICAgICAgICAgICAqbmdJZj1cImhhc05vZGVDaGlsZHJlbihub2RlKSAmJiAhaXNIaWRlVG9nZ2xlc1wiXG4gICAgICAgICAgICBbaXNTbWFsbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtpc0ZsYXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIm5vZGUuZXhwYW5kZWQgPyAnQ29sbGFwc2UnIDogJ0V4cGFuZCdcIlxuICAgICAgICAgICAgW2ljb25DbGFzc109XCJub2RlLmV4cGFuZGVkID8gZXhwYW5kZWRJY29uQ2xhc3MgOiBjb2xsYXBzZWRJY29uQ2xhc3NcIj48L3V4LWJ1dHRvbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJpc011bHRpc2VsZWN0XCJcbiAgICAgICAgICAgIFtjbGFzcy51eC10cmVlX19wYXJlbnRdPVwiaGFzTm9kZUNoaWxkcmVuKG5vZGUpICYmICFpc0hpZGVUb2dnbGVzXCJcbiAgICAgICAgICAgIFtjbGFzcy51eC10cmVlX19sZWFmXT1cIiFoYXNOb2RlQ2hpbGRyZW4obm9kZSkgJiYgIWlzSGlkZVRvZ2dsZXNcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ1eC1pbnB1dF9fY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5jaGVja2JveC1sYWJlbC1pbmRldGVybWluYXRlXT1cIm5vZGUuaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnV4LWlucHV0X19jaGVja2JveC0tc2VsZWN0ZWRdPVwibm9kZS5zZWxlY3RlZCAmJiAhbm9kZS5pbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwibm9kZUlkXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwibm9kZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5vZGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibm9kZS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjaGVja0lucHV0TGFiZWwoKVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKG5vZGUsICRldmVudClcIiAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidXgtdHJlZV9fbm9kZS1jaGVja2JveC1sYWJlbFwiIFtjbGFzcy5jaGVja2JveC1sYWJlbC1pbmRldGVybWluYXRlXT1cIm5vZGUuaW5kZXRlcm1pbmF0ZVwiIFtmb3JdPVwibm9kZUlkXCI+IDwvbGFiZWw+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIm5vZGVDb250ZW50VGVtcGxhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ1eC10cmVlX19jdXN0b20tY29udGVudFwiXG4gICAgICAgICAgICBbY2xhc3MudXgtdHJlZV9fcGFyZW50XT1cImhhc05vZGVDaGlsZHJlbihub2RlKSAmJiAhaXNIaWRlVG9nZ2xlc1wiXG4gICAgICAgICAgICBbY2xhc3MudXgtdHJlZV9fbGVhZl09XCIhaGFzTm9kZUNoaWxkcmVuKG5vZGUpICYmICFpc0hpZGVUb2dnbGVzXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZUNvbnRlbnRUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+IDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbm9kZUNvbnRlbnRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGUudHlwZUxhYmVsIHx8IG5vZGUuaWNvbkNsYXNzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub2RlLnR5cGVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtdHJlZV9fbm9kZS10eXBlIHV4LXRyZWVfX25vZGUtdHlwZS0te3sgbm9kZS50eXBlQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudXgtdHJlZV9fbm9kZS10eXBlLXBhcmVudF09XCJoYXNOb2RlQ2hpbGRyZW4obm9kZSkgJiYgIWlzSGlkZVRvZ2dsZXMgJiYgIWlzTXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ob2RlQ2xpY2soJGV2ZW50LCBub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uTm9kZUtleWRvd24oJGV2ZW50LCBub2RlKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBub2RlLnR5cGVMYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibm9kZS5pY29uQ2xhc3NcIiBjbGFzcz1cInV4LXRyZWVfX25vZGUtaWNvbiB1eC10cmVlX19ub2RlLXR5cGUtLXt7IG5vZGUuaWNvblR5cGVDbGFzcyB9fVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7IG5vZGUuaWNvbkNsYXNzIH19XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1eC10cmVlX19ub2RlLWxhYmVsLXdyYXBwZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LW11dGVkXT1cIm5vZGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWVfX25vZGUtbGFiZWwtLWhpZ2hsaWdodGVkXT1cIm5vZGVbJ2hpZ2hsaWdodGVkJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTm9kZUNsaWNrKCRldmVudCwgbm9kZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25Ob2RlS2V5ZG93bigkZXZlbnQsIG5vZGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImF1dG9UcmFuc2xhdGU7IGVsc2UgbWFudWFsVHJhbnNsYXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI21hbnVhbFRyYW5zbGF0aW9uPnt7IG5vZGUubGFiZWwgfX08L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmV1aS11LXRleHQtbGluay1leHRlcm5hbF09XCJub2RlICYmIG5vZGUudXJsRXh0ZXJuYWxcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShub2RlLnR5cGVMYWJlbCB8fCBub2RlLmljb25DbGFzcylcIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInV4LXRyZWVfX25vZGUtbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudXgtdHJlZV9fbm9kZS1sYWJlbC1wYXJlbnRdPVwiaGFzTm9kZUNoaWxkcmVuKG5vZGUpICYmICFpc0hpZGVUb2dnbGVzICYmICFpc011bHRpc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWVfX25vZGUtbGFiZWwtLWhpZ2hsaWdodGVkXT1cIm5vZGVbJ2hpZ2hsaWdodGVkJ11cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGV4dC1tdXRlZF09XCJub2RlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTm9kZUNsaWNrKCRldmVudCwgbm9kZSlcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbk5vZGVLZXlkb3duKCRldmVudCwgbm9kZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJhdXRvVHJhbnNsYXRlOyBlbHNlIG1hbnVhbFRyYW5zbGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtYW51YWxUcmFuc2xhdGlvbj57eyBub2RlLmxhYmVsIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmV1aS11LXRleHQtbGluay1leHRlcm5hbF09XCJub2RlICYmIG5vZGUudXJsRXh0ZXJuYWxcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLmJhZGdlc1wiIGNsYXNzPVwiZXVpLXUtbWwtYXV0b1wiPlxuICAgICAgICAgICAgICAgIDx1eC1iYWRnZVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2Ygbm9kZS5iYWRnZXNcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwidXgtdHJlZV9fbm9kZS1iYWRnZVwiXG4gICAgICAgICAgICAgICAgICAgIGlzVGlueT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBpc091dGxpbmU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgaXNQaWxsPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGVDbGFzcz1cInt7IGJhZGdlLnR5cGVDbGFzcyB9fVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBiYWRnZS5sYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvdXgtYmFkZ2U+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm5vZGUubWV0YWRhdGEgJiYgbm9kZS5tZXRhZGF0YS50aXRsZSAmJiBub2RlLm1ldGFkYXRhLnRpdGxlLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtdHJlZV9fbm9kZS1tZXRhY29udGVudC10b2dnbGUgdXgtdHJlZV9fbm9kZS1jbGlja2FibGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk1ldGFkYXRhTm9kZVRvZ2dsZSgkZXZlbnQsIG5vZGUpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJldWktaWNvblwiIFtuZ0NsYXNzXT1cIm5vZGUuZXhwYW5kZWQgPyAnZXVpLWljb24gZXVpLWljb24tYW5nbGUtZG93bicgOiAnZXVpLWljb24gZXVpLWljb24tYW5nbGUtcmlnaHQnXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZS5leHBhbmRlZFwiPlxuICAgICAgICA8dWwgKm5nSWY9XCJoYXNOb2RlQ2hpbGRyZW4obm9kZSlcIiBjbGFzcz1cInV4LXRyZWVfX25vZGVzXCI+XG4gICAgICAgICAgICA8dXgtdHJlZS1ub2RlXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN1Yk5vZGUgb2Ygbm9kZS5jaGlsZHJlbjsgbGV0IGlzRmlyc3QgPSBmaXJzdDsgbGV0IGlzTGFzdCA9IGxhc3Q7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgICAgW25vZGVdPVwic3ViTm9kZVwiXG4gICAgICAgICAgICAgICAgW2lzTXVsdGlzZWxlY3RdPVwiaXNNdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW2lzUmVjdXJzaXZlU2VsZWN0aW9uXT1cImlzUmVjdXJzaXZlU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAobm9kZUNsaWNrKT1cIm9uU3ViTm9kZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChub2RlVG9nZ2xlKT1cIm9uU3ViTm9kZVRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtpc0ZpcnN0XT1cImlzRmlyc3RcIlxuICAgICAgICAgICAgICAgIFtpc0xhc3RdPVwiaXNMYXN0XCJcbiAgICAgICAgICAgICAgICBbaXNDbGlja1RvZ2dsaW5nTm9kZV09XCJpc0NsaWNrVG9nZ2xpbmdOb2RlXCJcbiAgICAgICAgICAgICAgICBleHBhbmRlZEljb25DbGFzcz1cInt7IGV4cGFuZGVkSWNvbkNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICBjb2xsYXBzZWRJY29uQ2xhc3M9XCJ7eyBjb2xsYXBzZWRJY29uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZVZhcmlhYmxlXT1cInRlbXBsYXRlVmFyaWFibGVcIlxuICAgICAgICAgICAgICAgIFtub2RlQ29udGVudFRlbXBsYXRlXT1cIm5vZGVDb250ZW50VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtpc1Nob3dBY3RpdmVOb2RlXT1cImlzU2hvd0FjdGl2ZU5vZGVcIlxuICAgICAgICAgICAgICAgIFtpc0hpZGVUb2dnbGVzXT1cImlzSGlkZVRvZ2dsZXNcIlxuICAgICAgICAgICAgICAgIFtpc0NsaWNrU2VsZWN0aW5nTm9kZV09XCJpc0NsaWNrU2VsZWN0aW5nTm9kZVwiXG4gICAgICAgICAgICAgICAgW2hpZ2hsaWdodFBhdGhdPVwiaGlnaGxpZ2h0UGF0aFwiXG4gICAgICAgICAgICAgICAgW2lzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uXT1cImlzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbYXV0b1RyYW5zbGF0ZV09XCJhdXRvVHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8L3V4LXRyZWUtbm9kZT5cbiAgICAgICAgPC91bD5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUubWV0YWRhdGEgJiYgbm9kZS5tZXRhZGF0YS50aXRsZSAmJiBub2RlLm1ldGFkYXRhLnRpdGxlLmxlbmd0aCA+IDBcIiBjbGFzcz1cInV4LXRyZWVfX25vZGUtbWV0YWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVZhcmlhYmxlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbWV0YWRhdGE6IG5vZGUubWV0YWRhdGEgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9saT5cbiJdfQ==
1078
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXgtdHJlZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9sZWdhY3kvdXgtdHJlZS91eC10cmVlLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uL2xlZ2FjeS91eC10cmVlL3V4LXRyZWUuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUVILFNBQVMsRUFDVCxZQUFZLEVBQ1osZUFBZSxFQUNmLFlBQVksRUFDWixLQUFLLEVBQ0wsUUFBUSxFQUdSLE1BQU0sRUFHTixXQUFXLEVBQ1gsU0FBUyxFQUNULFlBQVksRUFDWixpQkFBaUIsR0FFcEIsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRS9DLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUU3QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsTUFBTSxXQUFXLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFnQixNQUFNLHVCQUF1QixDQUFDO0FBQzVFLE9BQU8sRUFBNEIsZUFBZSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFFbkYsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sNkNBQTZDLENBQUM7QUFDbEYsT0FBTyxFQUFFLDhCQUE4QixFQUFFLE1BQU0scUNBQXFDLENBQUM7QUFDckYsT0FBTyxFQUFFLHVCQUF1QixFQUFFLE1BQU0sa0NBQWtDLENBQUM7QUFDM0UsT0FBTyxFQUFFLHNCQUFzQixFQUFFLE1BQU0saUNBQWlDLENBQUM7Ozs7Ozs7Ozs7QUFLekUsTUFBTSxPQUFPLG1CQUFtQjtJQXlINUIsWUFBb0IsTUFBYztRQUFkLFdBQU0sR0FBTixNQUFNLENBQVE7UUFuSHpCLFlBQU8sR0FBRyxjQUFjLENBQUM7UUFFeEIsY0FB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QUEwQjtzQkFEN0IsS0FBSzs7QUF5VVYsTUFBTSxPQUFPLHFCQUFxQjs7cUlBQXJCLHFCQUFxQjtzSUFBckIscUJBQXFCLGlCQXRlckIsZUFBZSxFQXRiZixtQkFBbUIsYUFpNUJ4QixZQUFZO1FBQ1osV0FBVztRQUNYLDhCQUE4QjtRQUM5Qix1QkFBdUI7UUFDdkIsc0JBQXNCO1FBQ3RCLGVBQWU7UUFDZixlQUFlLGFBamVWLGVBQWUsRUF0YmYsbUJBQW1CO3NJQTQ1Qm5CLHFCQUFxQixZQVgxQixZQUFZO1FBQ1osV0FBVztRQUNYLDhCQUE4QjtRQUM5Qix1QkFBdUI7UUFDdkIsc0JBQXNCO1FBQ3RCLGVBQWU7UUFDZixlQUFlOzJGQUtWLHFCQUFxQjtrQkFiakMsUUFBUTttQkFBQztvQkFDTixPQUFPLEVBQUU7d0JBQ0wsWUFBWTt3QkFDWixXQUFXO3dCQUNYLDhCQUE4Qjt3QkFDOUIsdUJBQXVCO3dCQUN2QixzQkFBc0I7d0JBQ3RCLGVBQWU7d0JBQ2YsZUFBZTtxQkFDbEI7b0JBQ0QsT0FBTyxFQUFFLENBQUMsZUFBZSxFQUFFLG1CQUFtQixDQUFDO29CQUMvQyxZQUFZLEVBQUUsQ0FBQyxlQUFlLEVBQUUsbUJBQW1CLENBQUM7aUJBQ3ZEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgICBBZnRlckNvbnRlbnRJbml0LFxuICAgIENvbXBvbmVudCxcbiAgICBDb250ZW50Q2hpbGQsXG4gICAgQ29udGVudENoaWxkcmVuLFxuICAgIEV2ZW50RW1pdHRlcixcbiAgICBJbnB1dCxcbiAgICBOZ01vZHVsZSxcbiAgICBPbkNoYW5nZXMsXG4gICAgT25Jbml0LFxuICAgIE91dHB1dCxcbiAgICBRdWVyeUxpc3QsXG4gICAgU2ltcGxlQ2hhbmdlcyxcbiAgICBUZW1wbGF0ZVJlZixcbiAgICBWaWV3Q2hpbGQsXG4gICAgVmlld0NoaWxkcmVuLFxuICAgIFZpZXdFbmNhcHN1bGF0aW9uLFxuICAgIENoYW5nZURldGVjdG9yUmVmLFxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENvbW1vbk1vZHVsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbic7XG5pbXBvcnQgeyBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgRm9ybXNNb2R1bGUgfSBmcm9tICdAYW5ndWxhci9mb3Jtcyc7XG5pbXBvcnQgeyBVeExpbmsgfSBmcm9tICdAZXVpL2NvcmUnO1xuaW1wb3J0IHsgVHJhbnNsYXRlTW9kdWxlIH0gZnJvbSAnQG5neC10cmFuc2xhdGUvY29yZSc7XG5pbXBvcnQgeyBjb25zdW1lRXZlbnQsIHVuaXF1ZUlkIH0gZnJvbSAnQGV1aS9jb3JlJztcbmltcG9ydCB7IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSwgQm9vbGVhbklucHV0IH0gZnJvbSAnQGFuZ3VsYXIvY2RrL2NvZXJjaW9uJztcbmltcG9ydCB7IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydCwgU2Nyb2xsaW5nTW9kdWxlIH0gZnJvbSAnQGFuZ3VsYXIvY2RrL3Njcm9sbGluZyc7XG5cbmltcG9ydCB7IFV4VGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICdAZXVpL2NvbXBvbmVudHMvbGVnYWN5L2NvbW1vbi91eC1kaXJlY3RpdmVzJztcbmltcG9ydCB7IFV4VG9vbGJhckZpbHRlckNvbXBvbmVudE1vZHVsZSB9IGZyb20gJ0BldWkvZGVwcmVjYXRlZC91eC1hLXRvb2xiYXItZmlsdGVyJztcbmltcG9ydCB7IFV4QnV0dG9uQ29tcG9uZW50TW9kdWxlIH0gZnJvbSAnQGV1aS9jb21wb25lbnRzL2xlZ2FjeS91eC1idXR0b24nO1xuaW1wb3J0IHsgVXhCYWRnZUNvbXBvbmVudE1vZHVsZSB9IGZyb20gJ0BldWkvY29tcG9uZW50cy9sZWdhY3kvdXgtYmFkZ2UnO1xuQENvbXBvbmVudCh7XG4gICAgc2VsZWN0b3I6ICd1eC10cmVlLW5vZGUnLFxuICAgIHRlbXBsYXRlVXJsOiAnLi91eC10cmVlLmNvbXBvbmVudC5odG1sJyxcbn0pXG5leHBvcnQgY2xhc3MgVXhUcmVlTm9kZUNvbXBvbmVudCB7XG4gICAgQElucHV0KCkgZXhwYW5kZWRJY29uQ2xhc3M6IHN0cmluZztcbiAgICBASW5wdXQoKSBjb2xsYXBzZWRJY29uQ2xhc3M6IHN0cmluZztcbiAgICBASW5wdXQoKSB0ZW1wbGF0ZVZhcmlhYmxlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBJbnB1dCgpIG5vZGU6IFV4TGluaztcbiAgICBASW5wdXQoKSBub2RlQ29udGVudFRlbXBsYXRlOiBUZW1wbGF0ZVJlZjxhbnk+O1xuICAgIEBJbnB1dCgpIGUyZUF0dHIgPSAndXgtdHJlZS1ub2RlJztcblxuICAgIEBPdXRwdXQoKSBub2RlQ2xpY2sgPSBuZXcgRXZlbnRFbWl0dGVyPFV4TGluaz4oKTtcbiAgICBAT3V0cHV0KCkgbm9kZVRvZ2dsZSA9IG5ldyBFdmVudEVtaXR0ZXI8VXhMaW5rPigpO1xuICAgIEBPdXRwdXQoKSBzZWxlY3Rpb25DaGFuZ2UgPSBuZXcgRXZlbnRFbWl0dGVyPFV4TGluaz4oKTtcblxuICAgIHB1YmxpYyBub2RlSWQ6IHN0cmluZztcbiAgICBwdWJsaWMgY2hpbGRyZW5TZWxlY3RlZCA9IHRydWU7XG4gICAgcHVibGljIGFtb3VudFNlbGVjdGVkQ2hpbGRyZW4gPSAwO1xuXG4gICAgQElucHV0KClcbiAgICBnZXQgaXNGaXJzdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRmlyc3Q7XG4gICAgfVxuICAgIHNldCBpc0ZpcnN0KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNGaXJzdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzRmlyc3QgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0xhc3QoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0xhc3Q7XG4gICAgfVxuICAgIHNldCBpc0xhc3QodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0xhc3QgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0xhc3QgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1Jvb3ROb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNSb290Tm9kZTtcbiAgICB9XG4gICAgc2V0IGlzUm9vdE5vZGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc1Jvb3ROb2RlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNSb290Tm9kZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQ2xpY2tUb2dnbGluZ05vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NsaWNrVG9nZ2xpbmdOb2RlO1xuICAgIH1cbiAgICBzZXQgaXNDbGlja1RvZ2dsaW5nTm9kZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2xpY2tUb2dnbGluZ05vZGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0NsaWNrVG9nZ2xpbmdOb2RlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNNdWx0aXNlbGVjdCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzTXVsdGlzZWxlY3Q7XG4gICAgfVxuICAgIHNldCBpc011bHRpc2VsZWN0KHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNNdWx0aXNlbGVjdCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzTXVsdGlzZWxlY3QgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc1JlY3Vyc2l2ZVNlbGVjdGlvbigpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzUmVjdXJzaXZlU2VsZWN0aW9uO1xuICAgIH1cbiAgICBzZXQgaXNSZWN1cnNpdmVTZWxlY3Rpb24odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc1JlY3Vyc2l2ZVNlbGVjdGlvbiA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzUmVjdXJzaXZlU2VsZWN0aW9uID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNSZWN1cnNpdmVQYXJlbnRTZWxlY3Rpb24oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1JlY3Vyc2l2ZVBhcmVudFNlbGVjdGlvbjtcbiAgICB9XG4gICAgc2V0IGlzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNSZWN1cnNpdmVQYXJlbnRTZWxlY3Rpb24gPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1JlY3Vyc2l2ZVBhcmVudFNlbGVjdGlvbiA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNTaG93QWN0aXZlTm9kZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzU2hvd0FjdGl2ZU5vZGU7XG4gICAgfVxuICAgIHNldCBpc1Nob3dBY3RpdmVOb2RlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNTaG93QWN0aXZlTm9kZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzU2hvd0FjdGl2ZU5vZGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0hpZGVUb2dnbGVzKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNIaWRlVG9nZ2xlcztcbiAgICB9XG4gICAgc2V0IGlzSGlkZVRvZ2dsZXModmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0hpZGVUb2dnbGVzID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNIaWRlVG9nZ2xlcyA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzQ2xpY2tTZWxlY3RpbmdOb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDbGlja1NlbGVjdGluZ05vZGU7XG4gICAgfVxuICAgIHNldCBpc0NsaWNrU2VsZWN0aW5nTm9kZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzQ2xpY2tTZWxlY3RpbmdOb2RlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNDbGlja1NlbGVjdGluZ05vZGUgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBoaWdobGlnaHRQYXRoKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGlnaGxpZ2h0UGF0aDtcbiAgICB9XG4gICAgc2V0IGhpZ2hsaWdodFBhdGgodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9oaWdobGlnaHRQYXRoID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaGlnaGxpZ2h0UGF0aCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGF1dG9UcmFuc2xhdGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9hdXRvVHJhbnNsYXRlO1xuICAgIH1cbiAgICBzZXQgYXV0b1RyYW5zbGF0ZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2F1dG9UcmFuc2xhdGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9hdXRvVHJhbnNsYXRlID0gdHJ1ZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBoYXNTZWxlY3RBbGwoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNTZWxlY3RBbGw7XG4gICAgfVxuICAgIHNldCBoYXNTZWxlY3RBbGwodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9oYXNTZWxlY3RBbGwgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oYXNTZWxlY3RBbGwgPSBmYWxzZTtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgcm91dGVyOiBSb3V0ZXIpIHtcbiAgICAgICAgdGhpcy5ub2RlSWQgPSBgdXgtdHJlZS1ub2RlLSR7dW5pcXVlSWQoKX1gO1xuICAgIH1cblxuICAgIHB1YmxpYyBoYXNOb2RlQ2hpbGRyZW4obm9kZTogVXhMaW5rKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiBub2RlICYmIG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk5vZGVLZXlkb3duKGV2ZW50OiBhbnksIHV4TGluazogVXhMaW5rKTogdm9pZCB7XG4gICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSAxMykge1xuICAgICAgICAgICAgdGhpcy5vbk5vZGVDbGljayhldmVudCwgdXhMaW5rKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbk5vZGVUb2dnbGUoZXZlbnQ6IEV2ZW50LCB1eExpbms6IFV4TGluayk6IHZvaWQge1xuICAgICAgICB0aGlzLm5vZGUuZXhwYW5kZWQgPSAhdGhpcy5ub2RlLmV4cGFuZGVkO1xuICAgICAgICB0aGlzLm5vZGVUb2dnbGUuZW1pdCh1eExpbmspO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk5vZGVDbGljayhldmVudDogRXZlbnQsIHV4TGluazogVXhMaW5rKTogdm9pZCB7XG4gICAgICAgIGlmICghdXhMaW5rLmRpc2FibGVkKSB7XG4gICAgICAgICAgICBpZiAoIXRoaXMubm9kZS5tZXRhZGF0YSkge1xuICAgICAgICAgICAgICAgIGlmICh0aGlzLmlzTXVsdGlzZWxlY3QgJiYgdGhpcy5pc0NsaWNrU2VsZWN0aW5nTm9kZSkge1xuICAgICAgICAgICAgICAgICAgICB1eExpbmsuc2VsZWN0ZWQgPSAhdXhMaW5rLnNlbGVjdGVkO1xuICAgICAgICAgICAgICAgICAgICBldmVudC50YXJnZXRbJ2NoZWNrZWQnXSA9IHV4TGluay5zZWxlY3RlZDtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5vbkNoZWNrYm94Q2hhbmdlKHV4TGluaywgZXZlbnQpO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoIXRoaXMubm9kZS5jaGlsZHJlbiB8fCB0aGlzLm5vZGUuY2hpbGRyZW4ubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMubm9kZS5leHBhbmRlZCA9ICF0aGlzLm5vZGUuZXhwYW5kZWQ7XG5cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMucm91dGVyLm5hdmlnYXRlKFt0aGlzLm5vZGUudXJsXSk7XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS51cmxFeHRlcm5hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93Lm9wZW4odGhpcy5ub2RlLnVybEV4dGVybmFsLCB0aGlzLm5vZGUudXJsRXh0ZXJuYWxUYXJnZXQpO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY2xpY2tlZEVsID0gZXZlbnQudGFyZ2V0Wydub2RlTmFtZSddO1xuICAgICAgICAgICAgICAgICAgICBpZiAodGhpcy5pc0NsaWNrVG9nZ2xpbmdOb2RlKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVRvZ2dsZShldmVudCwgdXhMaW5rKTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBpZiAoY2xpY2tlZEVsID09PSAnU1BBTicgJiYgKHRoaXMubm9kZS51cmwgfHwgdGhpcy5ub2RlLnVybEV4dGVybmFsKSkge1xuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLnJvdXRlci5uYXZpZ2F0ZShbdGhpcy5ub2RlLnVybF0pO1xuICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS51cmxFeHRlcm5hbCkge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy5vcGVuKHRoaXMubm9kZS51cmxFeHRlcm5hbCwgdGhpcy5ub2RlLnVybEV4dGVybmFsVGFyZ2V0KTtcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS51cmwpIHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5yb3V0ZXIubmF2aWdhdGUoW3RoaXMubm9kZS51cmxdKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgaWYgKHRoaXMubm9kZS51cmxFeHRlcm5hbCkge1xuICAgICAgICAgICAgICAgICAgICB3aW5kb3cub3Blbih0aGlzLm5vZGUudXJsRXh0ZXJuYWwsIHRoaXMubm9kZS51cmxFeHRlcm5hbFRhcmdldCk7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKHV4TGluay5jb21tYW5kKSB7XG4gICAgICAgICAgICAgICAgdXhMaW5rLmNvbW1hbmQoKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5ub2RlQ2xpY2suZW1pdCh1eExpbmspO1xuICAgICAgICAgICAgY29uc3VtZUV2ZW50KGV2ZW50KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyBvbkNoZWNrYm94Q2hhbmdlKHV4TGluazogVXhMaW5rLCBldnQ6IGFueSk6IHZvaWQge1xuXG4gICAgICAgIGlmICh0aGlzLmlzUmVjdXJzaXZlU2VsZWN0aW9uKSB7XG4gICAgICAgICAgICBpZiAoIXV4TGluay5zZWxlY3RlZCkge1xuICAgICAgICAgICAgICAgIHV4TGluay5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLmNoYW5nZVNlbGVjdGlvblJlY3Vyc2l2ZWx5KHV4TGluaywgdXhMaW5rLnNlbGVjdGVkKTtcbiAgICAgICAgICAgIGlmICh1eExpbmsucGFyZW50KSB7XG4gICAgICAgICAgICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3Rpb24odXhMaW5rLnBhcmVudCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodGhpcy5oaWdobGlnaHRQYXRoKSB7XG4gICAgICAgICAgICB0aGlzLmdldFBhcmVudHModXhMaW5rLCBldnQudGFyZ2V0LmNoZWNrZWQpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UubmV4dCh1eExpbmspO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk1ldGFkYXRhTm9kZVRvZ2dsZShldmVudDogRXZlbnQsIHV4TGluazogVXhMaW5rKTogdm9pZCB7XG4gICAgICAgIHRoaXMubm9kZS5leHBhbmRlZCA9ICF0aGlzLm5vZGUuZXhwYW5kZWQ7XG4gICAgICAgIGNvbnN1bWVFdmVudChldmVudCk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU3ViTm9kZUNsaWNrKHV4TGluazogVXhMaW5rKTogdm9pZCB7XG4gICAgICAgIHRoaXMubm9kZUNsaWNrLmVtaXQodXhMaW5rKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgb25TdWJOb2RlVG9nZ2xlKHV4TGluazogVXhMaW5rKTogdm9pZCB7XG4gICAgICAgIHRoaXMubm9kZVRvZ2dsZS5lbWl0KHV4TGluayk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKHV4TGluazogVXhMaW5rKTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLm5leHQodXhMaW5rKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgdHJhY2tCeUZuKGluZGV4OiBudW1iZXIsIGl0ZW06IFV4TGluayk6IHN0cmluZyB7XG4gICAgICAgIHJldHVybiBpdGVtLmlkO1xuICAgIH1cblxuICAgIGNoZWNrSW5wdXRMYWJlbCgpOiBzdHJpbmcge1xuICAgICAgICBpZiAodGhpcy5pc1JlY3Vyc2l2ZVNlbGVjdGlvbiAmJiB0aGlzLm5vZGUuaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5vZGUuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0Rlc2VsZWN0IEFsbCc7XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiAnU2VsZWN0IEFsbCc7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSBpZiAoKHRoaXMuaXNSZWN1cnNpdmVTZWxlY3Rpb24gJiYgIXRoaXMubm9kZS5oYXNDaGlsZHJlbikgfHwgIXRoaXMuaXNSZWN1cnNpdmVTZWxlY3Rpb24pIHtcbiAgICAgICAgICAgIGlmICh0aGlzLm5vZGUuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ0Rlc2VsZWN0IG5vZGUnO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gJ1NlbGVjdCBub2RlJztcbiAgICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0UGFyZW50cyh1eExpbms6IFV4TGluaywgaXNDaGVja2VkOiBib29sZWFuKTogdm9pZCB7XG4gICAgICAgIGlmICh1eExpbmsgPT09IHRoaXMubm9kZSkge1xuICAgICAgICAgICAgaWYgKGlzQ2hlY2tlZCA9PT0gdHJ1ZSkge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZVsnaGlnaGxpZ2h0ZWQnXSA9IGlzQ2hlY2tlZDtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgY29uc3Qgc2VsZWN0ZWRDaGlsZHJlbiA9IHRoaXMuaGFzQ2hpbGRTZWxlY3RlZCh0aGlzLm5vZGUpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZENoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLm5vZGVbJ2hpZ2hsaWdodGVkJ10gPSBpc0NoZWNrZWQ7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHV4TGluay5wYXJlbnQpIHtcbiAgICAgICAgICAgIGlmIChpc0NoZWNrZWQgPT09IHRydWUpIHtcbiAgICAgICAgICAgICAgICB1eExpbmsucGFyZW50WydoaWdobGlnaHRlZCddID0gaXNDaGVja2VkO1xuICAgICAgICAgICAgICAgIHRoaXMuZ2V0UGFyZW50cyh1eExpbmsucGFyZW50LCBpc0NoZWNrZWQpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgICBjb25zdCBzZWxlY3RlZENoaWxkcmVuID0gdGhpcy5oYXNDaGlsZFNlbGVjdGVkKHV4TGluay5wYXJlbnQpO1xuICAgICAgICAgICAgICAgIGlmIChzZWxlY3RlZENoaWxkcmVuLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgICAgICAgICAgICB1eExpbmsucGFyZW50WydoaWdobGlnaHRlZCddID0gaXNDaGVja2VkO1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmdldFBhcmVudHModXhMaW5rLnBhcmVudCwgaXNDaGVja2VkKTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc0NoaWxkU2VsZWN0ZWQodXhMaW5rOiBVeExpbmssIHNlbGVjdGVkID0gW10pOiBzdHJpbmdbXSB7XG4gICAgICAgIGlmICh1eExpbmsuc2VsZWN0ZWQpIHtcbiAgICAgICAgICAgIHNlbGVjdGVkLnB1c2godXhMaW5rLmxhYmVsKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICh1eExpbmsuY2hpbGRyZW4gJiYgdXhMaW5rLmNoaWxkcmVuLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHV4TGluay5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZCkgPT4ge1xuICAgICAgICAgICAgICAgIHRoaXMuaGFzQ2hpbGRTZWxlY3RlZChjaGlsZCwgc2VsZWN0ZWQpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cblxuICAgICAgICByZXR1cm4gc2VsZWN0ZWQ7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBjaGFuZ2VTZWxlY3Rpb25SZWN1cnNpdmVseSh1eExpbms6IFV4TGluaywgdmFsdWU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgaWYgKHV4TGluay5oYXNDaGlsZHJlbikge1xuICAgICAgICAgICAgdXhMaW5rLmNoaWxkcmVuLmZvckVhY2goKGxpbms6IFV4TGluaykgPT4ge1xuICAgICAgICAgICAgICAgIGxpbmsuc2VsZWN0ZWQgPSB2YWx1ZTtcbiAgICAgICAgICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgICAgbGluay5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHRoaXMuY2hhbmdlU2VsZWN0aW9uUmVjdXJzaXZlbHkobGluaywgdmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGNoYW5nZVBhcmVudFNlbGVjdGlvbih1eExpbms6IFV4TGluayk6IHZvaWQge1xuICAgICAgICBpZiAodGhpcy5pc1JlY3Vyc2l2ZVBhcmVudFNlbGVjdGlvbikge1xuICAgICAgICAgICAgdXhMaW5rLmluZGV0ZXJtaW5hdGUgPSAhdGhpcy5hbGxDaGlsZHJlblNlbGVjdGVkKHV4TGluayk7XG4gICAgICAgICAgICB1eExpbmsuc2VsZWN0ZWQgPSB0aGlzLmhhc1NlbGVjdGVkQ2hpbGRyZW4odXhMaW5rKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIGlmICghdXhMaW5rLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICAgICAgdXhMaW5rLmluZGV0ZXJtaW5hdGUgPSB0aGlzLmhhc1NlbGVjdGVkQ2hpbGRyZW4odXhMaW5rKTtcbiAgICAgICAgICAgICAgICB1eExpbmsuc2VsZWN0ZWQgPSB0aGlzLmhhc1NlbGVjdGVkQ2hpbGRyZW4odXhMaW5rKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHV4TGluay5pbmRldGVybWluYXRlICYmICF0aGlzLmhhc1NlbGVjdGVkQ2hpbGRyZW4odXhMaW5rKSkge1xuICAgICAgICAgICAgICAgIHV4TGluay5pbmRldGVybWluYXRlID0gZmFsc2U7XG4gICAgICAgICAgICAgICAgdXhMaW5rLnNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBpZiAodXhMaW5rLnBhcmVudCkge1xuICAgICAgICAgICAgdGhpcy5jaGFuZ2VQYXJlbnRTZWxlY3Rpb24odXhMaW5rLnBhcmVudCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGFsbENoaWxkcmVuU2VsZWN0ZWQodXhsaW5rOiBVeExpbmspOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHV4bGluay5jaGlsZHJlbi5maWx0ZXIoKGMpID0+ICghYy5zZWxlY3RlZCB8fCAoYy5zZWxlY3RlZCAmJiBjLmluZGV0ZXJtaW5hdGUpKSAmJiB0aGlzLmNoaWxkcmVuU2VsZWN0ZWQpLmxlbmd0aCA9PT0gMDtcbiAgICB9XG5cbiAgICBwcml2YXRlIGhhc1NlbGVjdGVkQ2hpbGRyZW4odXhsaW5rOiBVeExpbmspOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHV4bGluay5jaGlsZHJlbi5maWx0ZXIoKGMpID0+IGMuc2VsZWN0ZWQgPT09IHRydWUpLmxlbmd0aCA+IDA7XG4gICAgfVxufVxuXG5AQ29tcG9uZW50KHtcbiAgICBzZWxlY3RvcjogJ3V4LXRyZWUnLFxuICAgIHRlbXBsYXRlOiBgXG4gICAgICAgIDx1eC1hLXRvb2xiYXItZmlsdGVyXG4gICAgICAgICAgICAqbmdJZj1cImlzU2hvd1Rvb2xiYXJcIlxuICAgICAgICAgICAgW2lzVmlzaWJsZV09XCJpc1Nob3dUb29sYmFyXCJcbiAgICAgICAgICAgIFtpc1RvZ2dsZVZpc2libGVdPVwiIWlzSGlkZVRvZ2dsZXNcIlxuICAgICAgICAgICAgKGZpbHRlcik9XCJvbkZpbHRlcigkZXZlbnQpXCJcbiAgICAgICAgICAgIFtmaWx0ZXJWYWx1ZV09XCJzZXRGaWx0ZXJWYWx1ZVwiXG4gICAgICAgICAgICAoZXhwYW5kQWxsKT1cIm9uRXhwYW5kQWxsKCRldmVudClcIlxuICAgICAgICAgICAgKGNvbGxhcHNlQWxsKT1cIm9uQ29sbGFwc2VBbGwoJGV2ZW50KVwiXG4gICAgICAgICAgICBmaWx0ZXJMYWJlbD1cInt7IGZpbHRlckxhYmVsIH19XCJcbiAgICAgICAgICAgIFtleHBhbmRBbGxMYWJlbF09XCJleHBhbmRBbGxMYWJlbCA/IGV4cGFuZEFsbExhYmVsIDogbnVsbFwiXG4gICAgICAgICAgICBjb2xsYXBzZUFsbExhYmVsPVwie3sgY29sbGFwc2VBbGxMYWJlbCB9fVwiXG4gICAgICAgICAgICBbaXNUb2dnbGVFeHBhbmRlZF09XCJpc0V4cGFuZGVkXCJcbiAgICAgICAgICAgIFtoYXNMYWJlbHNdPVwiaGFzTGFiZWxzXCJcbiAgICAgICAgICAgIGF0dHIuZGF0YS1lMmU9XCJ7eyBlMmVBdHRyIH19LWEtdG9vbGJhci1maWx0ZXJcIj5cbiAgICAgICAgPC91eC1hLXRvb2xiYXItZmlsdGVyPlxuXG4gICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4LWNvbnRhaW5lclwiICpuZ0lmPVwiaGFzU2VsZWN0QWxsIHx8IGhhc1NlbGVjdEFsbEZpbHRlcmVkXCI+XG4gICAgICAgICAgICA8aW5wdXRcbiAgICAgICAgICAgICAgICB0eXBlPVwiY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtaW5wdXRfX2NoZWNrYm94XCJcbiAgICAgICAgICAgICAgICBpZD1cInNlbGVjdEFsbFwiXG4gICAgICAgICAgICAgICAgW2NoZWNrZWRdPVwiaXNNaW5pbXVtT25lU2VsZWN0ZWQgPyAnY2hlY2tlZCcgOiBudWxsXCJcbiAgICAgICAgICAgICAgICAoY2hhbmdlKT1cIm9uU2VsZWN0QWxsQ2hhbmdlKCRldmVudClcIiAvPlxuICAgICAgICAgICAgPGxhYmVsXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ1eC10cmVlX19ub2RlLWNoZWNrYm94LWxhYmVsXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MuY2hlY2tib3gtbGFiZWwtaW5kZXRlcm1pbmF0ZV09XCJpc01pbmltdW1PbmVTZWxlY3RlZCAmJiAhaXNBbGxTZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgZm9yPVwic2VsZWN0QWxsXCJcbiAgICAgICAgICAgICAgICBbY2xhc3MudXgtdHJlZV9fbm9kZS1jaGVja2JveC1sYWJlbC0tb25lbGV2ZWxdPVwiY2hlY2tGb3JDaGlsZHJlbigpXCI+XG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIiFhbGxTZWxlY3RlZCAmJiAhaXNNaW5pbXVtT25lU2VsZWN0ZWQgJiYgIWlzQWxsU2VsZWN0ZWRcIj5cbiAgICAgICAgICAgICAgICAgICAge3sgJ2V1aS51eHRyZWUuU0VMRUNULUFMTCcgfCB0cmFuc2xhdGUgfX1cbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICAgICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiYWxsU2VsZWN0ZWQgfHwgaXNNaW5pbXVtT25lU2VsZWN0ZWQgfHwgaXNBbGxTZWxlY3RlZFwiPlxuICAgICAgICAgICAgICAgICAgICB7eyAnZXVpLnV4dHJlZS5VTlNFTEVDVC1BTEwnIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG4gICAgICAgICAgICA8L2xhYmVsPlxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGVzLmxlbmd0aCA+IDUwMCAmJiAhaGFzU2VsZWN0QWxsICYmICFoYXNTZWxlY3RBbGxGaWx0ZXJlZDsgZWxzZSBub1ZpcnR1YWxTY3JvbGxcIj5cbiAgICAgICAgICAgIDxjZGstdmlydHVhbC1zY3JvbGwtdmlld3BvcnRcbiAgICAgICAgICAgICAgICAjdmlydHVhbFNjcm9sbGluZ1xuICAgICAgICAgICAgICAgIGl0ZW1TaXplPVwiMzBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtdHJlZV9fdmlydHVhbC1zY3JvbGxpbmdfX2NvbnRhaW5lclwiXG4gICAgICAgICAgICAgICAgbWluQnVmZmVyUHg9XCIyMDAwXCJcbiAgICAgICAgICAgICAgICBtYXhCdWZmZXJQeD1cIjI0MDBcIj5cbiAgICAgICAgICAgICAgICA8ZGl2ICpjZGtWaXJ0dWFsRm9yPVwibGV0IG5vZGUgb2YgdmlzaWJsZU5vZGVzOyB0cmFja0J5OiB0cmFja0J5Rm5cIiBjbGFzcz1cInV4LXRyZWVfX3ZpcnR1YWwtc2Nyb2xsaW5nX19pdGVtXCI+XG4gICAgICAgICAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgICAgICAgICAgY2xhc3M9XCJ1eC10cmVlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy51eC10cmVlLS1oaWRlbGluZXNdPVwiaXNIaWRlTGluZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWUtLW11bHRpc2VsZWN0XT1cImlzTXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWUtLW9uZWxldmVsXT1cImNoZWNrRm9yQ2hpbGRyZW4oKVwiXG4gICAgICAgICAgICAgICAgICAgICAgICBhdHRyLmRhdGEtZTJlPVwie3sgZTJlQXR0ciB9fVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHV4LXRyZWUtbm9kZVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlXT1cIm5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub2RlQ2xpY2spPVwib25Ob2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vZGVUb2dnbGUpPVwib25Ob2RlVG9nZ2xlKCRldmVudClcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxlY3Rpb25DaGFuZ2UpPVwib25TZWxlY3Rpb25DaGFuZ2UoJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzUm9vdE5vZGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzTXVsdGlzZWxlY3RdPVwiaXNNdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzUmVjdXJzaXZlU2VsZWN0aW9uXT1cImlzUmVjdXJzaXZlU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBbaXNDbGlja1RvZ2dsaW5nTm9kZV09XCJpc0NsaWNrVG9nZ2xpbmdOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBhbmRlZEljb25DbGFzcz1cInt7IGV4cGFuZGVkSWNvbkNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xsYXBzZWRJY29uQ2xhc3M9XCJ7eyBjb2xsYXBzZWRJY29uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZVZhcmlhYmxlXT1cInRlbXBsYXRlVmFyaWFibGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtub2RlQ29udGVudFRlbXBsYXRlXT1cIm5vZGVDb250ZW50VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc1Nob3dBY3RpdmVOb2RlXT1cImlzU2hvd0FjdGl2ZU5vZGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFthdXRvVHJhbnNsYXRlXT1cImF1dG9UcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0hpZGVUb2dnbGVzXT1cImlzSGlkZVRvZ2dsZXNcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpc0NsaWNrU2VsZWN0aW5nTm9kZV09XCJpc0NsaWNrU2VsZWN0aW5nTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2hpZ2hsaWdodFBhdGhdPVwiaGlnaGxpZ2h0UGF0aFwiXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgW2lzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uXT1cImlzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3V4LXRyZWUtbm9kZT5cbiAgICAgICAgICAgICAgICAgICAgPC91bD5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvY2RrLXZpcnR1YWwtc2Nyb2xsLXZpZXdwb3J0PlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cblxuICAgICAgICA8bmctdGVtcGxhdGUgI25vVmlydHVhbFNjcm9sbD5cbiAgICAgICAgICAgIDx1bFxuICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtdHJlZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWUtLWhpZGVsaW5lc109XCJpc0hpZGVMaW5lc1wiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWUtLW11bHRpc2VsZWN0XT1cImlzTXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy51eC10cmVlLS1vbmVsZXZlbF09XCJjaGVja0ZvckNoaWxkcmVuKClcIlxuICAgICAgICAgICAgICAgIGF0dHIuZGF0YS1lMmU9XCJ7eyBlMmVBdHRyIH19XCI+XG4gICAgICAgICAgICAgICAgPHV4LXRyZWUtbm9kZVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgbm9kZSBvZiBub2RlczsgdHJhY2tCeTogdHJhY2tCeUZuXCJcbiAgICAgICAgICAgICAgICAgICAgW25vZGVdPVwibm9kZVwiXG4gICAgICAgICAgICAgICAgICAgIChub2RlQ2xpY2spPVwib25Ob2RlQ2xpY2soJGV2ZW50KVwiXG4gICAgICAgICAgICAgICAgICAgIChub2RlVG9nZ2xlKT1cIm9uTm9kZVRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGlvbkNoYW5nZSk9XCJvblNlbGVjdGlvbkNoYW5nZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzUm9vdE5vZGVdPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIFtpc011bHRpc2VsZWN0XT1cImlzTXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICBbaXNSZWN1cnNpdmVTZWxlY3Rpb25dPVwiaXNSZWN1cnNpdmVTZWxlY3Rpb25cIlxuICAgICAgICAgICAgICAgICAgICBbaXNDbGlja1RvZ2dsaW5nTm9kZV09XCJpc0NsaWNrVG9nZ2xpbmdOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgZXhwYW5kZWRJY29uQ2xhc3M9XCJ7eyBleHBhbmRlZEljb25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgIGNvbGxhcHNlZEljb25DbGFzcz1cInt7IGNvbGxhcHNlZEljb25DbGFzcyB9fVwiXG4gICAgICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZVZhcmlhYmxlXT1cInRlbXBsYXRlVmFyaWFibGVcIlxuICAgICAgICAgICAgICAgICAgICBbbm9kZUNvbnRlbnRUZW1wbGF0ZV09XCJub2RlQ29udGVudFRlbXBsYXRlXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzU2hvd0FjdGl2ZU5vZGVdPVwiaXNTaG93QWN0aXZlTm9kZVwiXG4gICAgICAgICAgICAgICAgICAgIFthdXRvVHJhbnNsYXRlXT1cImF1dG9UcmFuc2xhdGVcIlxuICAgICAgICAgICAgICAgICAgICBbaXNIaWRlVG9nZ2xlc109XCJpc0hpZGVUb2dnbGVzXCJcbiAgICAgICAgICAgICAgICAgICAgW2lzQ2xpY2tTZWxlY3RpbmdOb2RlXT1cImlzQ2xpY2tTZWxlY3RpbmdOb2RlXCJcbiAgICAgICAgICAgICAgICAgICAgW2hpZ2hsaWdodFBhdGhdPVwiaGlnaGxpZ2h0UGF0aFwiXG4gICAgICAgICAgICAgICAgICAgIFtpc1JlY3Vyc2l2ZVBhcmVudFNlbGVjdGlvbl09XCJpc1JlY3Vyc2l2ZVBhcmVudFNlbGVjdGlvblwiPlxuICAgICAgICAgICAgICAgIDwvdXgtdHJlZS1ub2RlPlxuICAgICAgICAgICAgPC91bD5cbiAgICAgICAgPC9uZy10ZW1wbGF0ZT5cbiAgICBgLFxuICAgIHN0eWxlVXJsczogWycuL3N0eWxlcy9faW5kZXguc2NzcyddLFxuICAgIGVuY2Fwc3VsYXRpb246IFZpZXdFbmNhcHN1bGF0aW9uLk5vbmUsXG59KVxuZXhwb3J0IGNsYXNzIFV4VHJlZUNvbXBvbmVudCBpbXBsZW1lbnRzIEFmdGVyQ29udGVudEluaXQsIE9uSW5pdCwgT25DaGFuZ2VzIHtcbiAgICBASW5wdXQoKSBub2RlczogVXhMaW5rW107XG4gICAgQElucHV0KCkgY29sbGFwc2VBbGxMYWJlbDogc3RyaW5nO1xuICAgIEBJbnB1dCgpIGV4cGFuZEFsbExhYmVsOiBzdHJpbmc7XG4gICAgQElucHV0KCkgZmlsdGVyTGFiZWw6IHN0cmluZztcbiAgICBASW5wdXQoKSBjb2xsYXBzZWRJY29uQ2xhc3MgPSAnZXVpLWljb24gZXVpLWljb24tcGx1cy1jaXJjbGUnO1xuICAgIEBJbnB1dCgpIGV4cGFuZGVkSWNvbkNsYXNzID0gJ2V1aS1pY29uIGV1aS1pY29uLW1pbnVzLWNpcmNsZSc7XG4gICAgQElucHV0KCkgc2V0RmlsdGVyVmFsdWU6IHN0cmluZztcbiAgICBASW5wdXQoKSBlMmVBdHRyID0gJ3V4LXRyZWUnO1xuXG4gICAgQE91dHB1dCgpIG5vZGVDbGljayA9IG5ldyBFdmVudEVtaXR0ZXI8VXhMaW5rPigpO1xuICAgIEBPdXRwdXQoKSBub2RlVG9nZ2xlID0gbmV3IEV2ZW50RW1pdHRlcjxVeExpbms+KCk7XG4gICAgLy8gVE9ETzogZm9yIGVVSSAxNCByZW1vdmUgdGhlIFtdIHR5cGVcbiAgICBAT3V0cHV0KCkgc2VsZWN0aW9uQ2hhbmdlID0gbmV3IEV2ZW50RW1pdHRlcjxVeExpbmsgfCBbXT4oKTtcbiAgICBAT3V0cHV0KCkgb25GaWx0ZXJWYWx1ZSA9IG5ldyBFdmVudEVtaXR0ZXI8c3RyaW5nPigpO1xuXG4gICAgQENvbnRlbnRDaGlsZChUZW1wbGF0ZVJlZikgdGVtcGxhdGVWYXJpYWJsZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBAQ29udGVudENoaWxkcmVuKFV4VGVtcGxhdGVEaXJlY3RpdmUpIHRlbXBsYXRlczogUXVlcnlMaXN0PGFueT47XG4gICAgQFZpZXdDaGlsZHJlbihVeFRyZWVOb2RlQ29tcG9uZW50KSB0cmVlTm9kZXM6IFF1ZXJ5TGlzdDxVeFRyZWVOb2RlQ29tcG9uZW50PjtcbiAgICBAVmlld0NoaWxkKCd2aXJ0dWFsU2Nyb2xsaW5nJykgcHVibGljIHZpcnR1YWxTY3JvbGxpbmc6IENka1ZpcnR1YWxTY3JvbGxWaWV3cG9ydDtcblxuICAgIGNvbnN0cnVjdG9yKHByaXZhdGUgY2Q6IENoYW5nZURldGVjdG9yUmVmKSB7fVxuXG4gICAgcHVibGljIGFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgcHVibGljIG5iTm9kZXMgPSAwO1xuICAgIHB1YmxpYyB2aXNpYmxlTm9kZXMgPSBbXTtcbiAgICBwdWJsaWMgbm9kZUNvbnRlbnRUZW1wbGF0ZTogVGVtcGxhdGVSZWY8YW55PjtcbiAgICBwdWJsaWMgZmlsdGVyVmFsdWUgPSAnJztcblxuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzU2hvd1Rvb2xiYXIoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dUb29sYmFyO1xuICAgIH1cbiAgICBzZXQgaXNTaG93VG9vbGJhcih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzU2hvd1Rvb2xiYXIgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1Nob3dUb29sYmFyID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNFeHBhbmRlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzRXhwYW5kZWQ7XG4gICAgfVxuICAgIHNldCBpc0V4cGFuZGVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNFeHBhbmRlZCA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzRXhwYW5kZWQgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc011bHRpc2VsZWN0KCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNNdWx0aXNlbGVjdDtcbiAgICB9XG4gICAgc2V0IGlzTXVsdGlzZWxlY3QodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc011bHRpc2VsZWN0ID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNNdWx0aXNlbGVjdCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzUmVjdXJzaXZlU2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNSZWN1cnNpdmVTZWxlY3Rpb247XG4gICAgfVxuICAgIHNldCBpc1JlY3Vyc2l2ZVNlbGVjdGlvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzUmVjdXJzaXZlU2VsZWN0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNSZWN1cnNpdmVTZWxlY3Rpb24gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0NsaWNrVG9nZ2xpbmdOb2RlKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNDbGlja1RvZ2dsaW5nTm9kZTtcbiAgICB9XG4gICAgc2V0IGlzQ2xpY2tUb2dnbGluZ05vZGUodmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0NsaWNrVG9nZ2xpbmdOb2RlID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNDbGlja1RvZ2dsaW5nTm9kZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzU2hvd0FjdGl2ZU5vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc1Nob3dBY3RpdmVOb2RlO1xuICAgIH1cbiAgICBzZXQgaXNTaG93QWN0aXZlTm9kZSh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzU2hvd0FjdGl2ZU5vZGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc1Nob3dBY3RpdmVOb2RlID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNIaWRlVG9nZ2xlcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSGlkZVRvZ2dsZXM7XG4gICAgfVxuICAgIHNldCBpc0hpZGVUb2dnbGVzKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNIaWRlVG9nZ2xlcyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzSGlkZVRvZ2dsZXMgPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBpc0hpZGVMaW5lcygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2lzSGlkZUxpbmVzO1xuICAgIH1cbiAgICBzZXQgaXNIaWRlTGluZXModmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9pc0hpZGVMaW5lcyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2lzSGlkZUxpbmVzID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaXNDbGlja1NlbGVjdGluZ05vZGUoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9pc0NsaWNrU2VsZWN0aW5nTm9kZTtcbiAgICB9XG4gICAgc2V0IGlzQ2xpY2tTZWxlY3RpbmdOb2RlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faXNDbGlja1NlbGVjdGluZ05vZGUgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9pc0NsaWNrU2VsZWN0aW5nTm9kZSA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IHNob3dGaWx0ZXJlZENoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fc2hvd0ZpbHRlcmVkQ2hpbGRyZW47XG4gICAgfVxuICAgIHNldCBzaG93RmlsdGVyZWRDaGlsZHJlbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX3Nob3dGaWx0ZXJlZENoaWxkcmVuID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfc2hvd0ZpbHRlcmVkQ2hpbGRyZW4gPSBmYWxzZTtcbiAgICBASW5wdXQoKVxuICAgIGdldCBleHBhbmRGaWx0ZXJlZENoaWxkcmVuKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5fZXhwYW5kRmlsdGVyZWRDaGlsZHJlbjtcbiAgICB9XG4gICAgc2V0IGV4cGFuZEZpbHRlcmVkQ2hpbGRyZW4odmFsdWU6IEJvb2xlYW5JbnB1dCkge1xuICAgICAgICB0aGlzLl9leHBhbmRGaWx0ZXJlZENoaWxkcmVuID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfZXhwYW5kRmlsdGVyZWRDaGlsZHJlbiA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhpZ2hsaWdodFBhdGgoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oaWdobGlnaHRQYXRoO1xuICAgIH1cbiAgICBzZXQgaGlnaGxpZ2h0UGF0aCh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hpZ2hsaWdodFBhdGggPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oaWdobGlnaHRQYXRoID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgYXV0b1RyYW5zbGF0ZSgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2F1dG9UcmFuc2xhdGU7XG4gICAgfVxuICAgIHNldCBhdXRvVHJhbnNsYXRlKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5fYXV0b1RyYW5zbGF0ZSA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2F1dG9UcmFuc2xhdGUgPSB0cnVlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGhhc0xhYmVscygpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuX2hhc0xhYmVscztcbiAgICB9XG4gICAgc2V0IGhhc0xhYmVscyh2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2hhc0xhYmVscyA9IGNvZXJjZUJvb2xlYW5Qcm9wZXJ0eSh2YWx1ZSk7XG4gICAgfVxuICAgIHByaXZhdGUgX2hhc0xhYmVscyA9IHRydWU7XG4gICAgQElucHV0KClcbiAgICBnZXQgaGFzU2VsZWN0QWxsKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faGFzU2VsZWN0QWxsO1xuICAgIH1cbiAgICBzZXQgaGFzU2VsZWN0QWxsKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faGFzU2VsZWN0QWxsID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaGFzU2VsZWN0QWxsID0gZmFsc2U7XG4gICAgQElucHV0KClcbiAgICBnZXQgaGFzU2VsZWN0QWxsRmlsdGVyZWQoKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiB0aGlzLl9oYXNTZWxlY3RBbGxGaWx0ZXJlZDtcbiAgICB9XG4gICAgc2V0IGhhc1NlbGVjdEFsbEZpbHRlcmVkKHZhbHVlOiBCb29sZWFuSW5wdXQpIHtcbiAgICAgICAgdGhpcy5faGFzU2VsZWN0QWxsRmlsdGVyZWQgPSBjb2VyY2VCb29sZWFuUHJvcGVydHkodmFsdWUpO1xuICAgIH1cbiAgICBwcml2YXRlIF9oYXNTZWxlY3RBbGxGaWx0ZXJlZCA9IGZhbHNlO1xuICAgIEBJbnB1dCgpXG4gICAgZ2V0IGlzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5faXNSZWN1cnNpdmVQYXJlbnRTZWxlY3Rpb247XG4gICAgfVxuICAgIHNldCBpc1JlY3Vyc2l2ZVBhcmVudFNlbGVjdGlvbih2YWx1ZTogQm9vbGVhbklucHV0KSB7XG4gICAgICAgIHRoaXMuX2lzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uID0gY29lcmNlQm9vbGVhblByb3BlcnR5KHZhbHVlKTtcbiAgICB9XG4gICAgcHJpdmF0ZSBfaXNSZWN1cnNpdmVQYXJlbnRTZWxlY3Rpb24gPSB0cnVlO1xuXG4gICAgZ2V0IGlzTWluaW11bU9uZVNlbGVjdGVkKCk6IGJvb2xlYW4ge1xuICAgICAgICByZXR1cm4gdGhpcy5nZXRTZWxlY3RlZE5vZGVzKCkubGVuZ3RoID4gMCAmJiAhdGhpcy5hbGxTZWxlY3RlZDtcbiAgICB9XG5cbiAgICBnZXQgaXNBbGxTZWxlY3RlZCgpOiBib29sZWFuIHtcbiAgICAgICAgcmV0dXJuIHRoaXMuZ2V0U2VsZWN0ZWROb2RlcygpLmxlbmd0aCA9PT0gdGhpcy5uYk5vZGVzO1xuICAgIH1cblxuICAgIG5nT25DaGFuZ2VzKGNoYW5nZXM6IFNpbXBsZUNoYW5nZXMpOiB2b2lkIHtcbiAgICAgICAgaWYgKGNoYW5nZXMgJiYgY2hhbmdlc1snbm9kZXMnXSkge1xuICAgICAgICAgICAgdGhpcy52aXNpYmxlTm9kZXMgPSB0aGlzLnZpc2libGUodGhpcy5ub2Rlcyk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBuZ09uSW5pdCgpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5nZXROYk5vZGVzKHRoaXMubm9kZXMpO1xuICAgIH1cblxuICAgIG5nQWZ0ZXJDb250ZW50SW5pdCgpOiB2b2lkIHtcbiAgICAgICAgaWYgKHRoaXMuaXNFeHBhbmRlZCkge1xuICAgICAgICAgICAgdGhpcy5zZXROb2Rlc0V4cGFuZGVkU3RhdGUodGhpcy5ub2RlcywgdHJ1ZSk7XG4gICAgICAgIH1cblxuICAgICAgICB0aGlzLnNldFBhcmVudE5vZGUodGhpcy5ub2RlcywgbnVsbCk7XG5cbiAgICAgICAgdGhpcy50ZW1wbGF0ZXMuZm9yRWFjaCgoaXRlbSkgPT4ge1xuICAgICAgICAgICAgaWYgKGl0ZW0uZ2V0VHlwZSgpID09PSAnbm9kZUNvbnRlbnQnKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2RlQ29udGVudFRlbXBsYXRlID0gaXRlbS50ZW1wbGF0ZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgdmlzaWJsZShub2RlczogVXhMaW5rW10pOiBVeExpbmtbXSB7XG5cbiAgICAgICAgaWYodGhpcy5oYXNTZWxlY3RBbGxGaWx0ZXJlZCkge1xuICAgICAgICAgICAgcmV0dXJuIHRoaXMuZ2V0VmlzaWJsZU5vZGVzUmVjdXJzaXZlKG5vZGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiBub2Rlcy5maWx0ZXIoKG4pID0+IG4udmlzaWJsZSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBnZXROYk5vZGVzKG5vZGVzOiBVeExpbmtbXSk6IHZvaWQge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICB0aGlzLm5iTm9kZXMrKztcbiAgICAgICAgICAgIGlmIChub2RlLmhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChsaW5rOiBVeExpbmspID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5nZXROYk5vZGVzKFtsaW5rXSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHB1YmxpYyBvblNlbGVjdEFsbENoYW5nZShlOiBhbnkpOiB2b2lkIHtcbiAgICAgICAgdGhpcy5hbGxTZWxlY3RlZCA9IGUudGFyZ2V0LmNoZWNrZWQ7XG4gICAgICAgIGlmICghZS50YXJnZXQuY2hlY2spIHtcbiAgICAgICAgICAgIHRoaXMucmVzZXRTZWxlY3Rpb24oKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHRoaXMuaGFzU2VsZWN0QWxsRmlsdGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Tm9kZXNTZWxlY3RlZEZpbHRlcmVkU3RhdGUodGhpcy52aXNpYmxlTm9kZXMsIGUudGFyZ2V0LmNoZWNrZWQpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgdGhpcy5zZXROb2Rlc1NlbGVjdGVkU3RhdGUodGhpcy5ub2RlcywgZS50YXJnZXQuY2hlY2tlZCk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgZ2V0U2VsZWN0ZWROb2RlcygpOiBVeExpbmtbXSB7XG5cbiAgICAgICAgICBpZih0aGlzLmZpbHRlclZhbHVlICE9PSAnJyAmJiB0aGlzLmFsbFNlbGVjdGVkICYmIHRoaXMuaGFzU2VsZWN0QWxsRmlsdGVyZWQpIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLnZpc2libGVOb2RlcztcbiAgICAgICAgICB9ICBlbHNlIHtcbiAgICAgICAgICAgIHJldHVybiB0aGlzLmdldFNlbGVjdGVkTm9kZXNSZWN1cnNpdmUodGhpcy5ub2Rlcyk7XG4gICAgICAgICAgfVxuXG4gICAgfVxuXG4gICAgcHVibGljIG9uTm9kZVRvZ2dsZSh1eExpbms6IFV4TGluayk6IHZvaWQge1xuICAgICAgICB0aGlzLm5vZGVUb2dnbGUuZW1pdCh1eExpbmspO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbk5vZGVDbGljayh1eExpbms6IFV4TGluayk6IHZvaWQge1xuICAgICAgICBpZiAoIXV4TGluay5kaXNhYmxlZCkge1xuICAgICAgICAgICAgdGhpcy5ub2RlQ2xpY2suZW1pdCh1eExpbmspO1xuICAgICAgICAgICAgaWYgKHRoaXMuaXNDbGlja1RvZ2dsaW5nTm9kZSAmJiB1eExpbmsuaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm9uTm9kZVRvZ2dsZSh1eExpbmspO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCF0aGlzLmlzTXVsdGlzZWxlY3QgJiYgdGhpcy5pc1Nob3dBY3RpdmVOb2RlKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROb2Rlc1NlbGVjdGVkU3RhdGUodGhpcy5ub2RlcywgZmFsc2UpO1xuICAgICAgICAgICAgICAgIHV4TGluay5zZWxlY3RlZCA9IHRydWU7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwdWJsaWMgb25FeHBhbmRBbGwoZXZlbnQ6IEV2ZW50KTogdm9pZCB7XG4gICAgICAgIHRoaXMuc2V0Tm9kZXNFeHBhbmRlZFN0YXRlKHRoaXMubm9kZXMsIHRydWUpO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkNvbGxhcHNlQWxsKGV2ZW50OiBFdmVudCk6IHZvaWQge1xuICAgICAgICB0aGlzLnNldE5vZGVzRXhwYW5kZWRTdGF0ZSh0aGlzLm5vZGVzLCBmYWxzZSk7XG4gICAgfVxuXG4gICAgcHVibGljIG9uU2VsZWN0aW9uQ2hhbmdlKHV4TGluazogVXhMaW5rKTogdm9pZCB7XG4gICAgICAgIGlmICghdXhMaW5rLnNlbGVjdGVkKSB7XG4gICAgICAgICAgICB0aGlzLmFsbFNlbGVjdGVkID0gZmFsc2U7XG4gICAgICAgIH1cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UubmV4dCh1eExpbmspO1xuICAgIH1cblxuICAgIHB1YmxpYyBvbkZpbHRlcihmaWx0ZXJWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG5cbiAgICAgICAgaWYgKGZpbHRlclZhbHVlICE9PSAnJykge1xuICAgICAgICAgICAgdGhpcy5zZXROb2Rlc1Zpc2libGVTdGF0ZSh0aGlzLm5vZGVzLCBmYWxzZSk7XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5leHBhbmRGaWx0ZXJlZENoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5ub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgICAgIHRoaXMuaXNGaWx0ZXJNYXRjaGVkKG5vZGUsIGZpbHRlclZhbHVlKTtcbiAgICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuZXhwYW5kRmlsdGVyZWRDaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIHRoaXMubm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgICAgICAgICB0aGlzLmlzRmlsdGVyTWF0Y2hlZEV4cGFuZChub2RlLCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROb2Rlc1Zpc2libGVTdGF0ZSh0aGlzLm5vZGVzLCB0cnVlKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKHRoaXMuc2hvd0ZpbHRlcmVkQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICB0aGlzLm5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5pc1Zpc2libGVDaGlsZHJlbihub2RlLCBmaWx0ZXJWYWx1ZSk7XG4gICAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmICghdGhpcy5leHBhbmRGaWx0ZXJlZENoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROb2Rlc0V4cGFuZGVkU3RhdGUodGhpcy5ub2RlcywgdHJ1ZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB0aGlzLnZpc2libGVOb2RlcyA9IHRoaXMudmlzaWJsZSh0aGlzLm5vZGVzKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Tm9kZXNWaXNpYmxlU3RhdGUodGhpcy5ub2RlcywgdHJ1ZSk7XG4gICAgICAgICAgICB0aGlzLnZpc2libGVOb2RlcyA9IHRoaXMudmlzaWJsZSh0aGlzLm5vZGVzKTtcbiAgICAgICAgICAgIHRoaXMudmlydHVhbFNjcm9sbGluZz8uc2Nyb2xsVG9JbmRleCgwKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmKHRoaXMuaGFzU2VsZWN0QWxsRmlsdGVyZWQpIHtcbiAgICAgICAgICAgIHRoaXMuc2V0Tm9kZXNTZWxlY3RlZEZpbHRlcmVkU3RhdGUodGhpcy52aXNpYmxlTm9kZXMsIHRoaXMuYWxsU2VsZWN0ZWQpO1xuICAgICAgICAgICAgdGhpcy5maWx0ZXJWYWx1ZSAgPSBmaWx0ZXJWYWx1ZTtcbiAgICAgICAgICAgIHRoaXMuY2QuZGV0ZWN0Q2hhbmdlcygpO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5vbkZpbHRlclZhbHVlLmVtaXQoZmlsdGVyVmFsdWUpO1xuICAgIH1cblxuICAgIGlzRmlsdGVyTWF0Y2hlZEV4cGFuZChub2RlOiBVeExpbmssIGZpbHRlclZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgbm9kZVsnaGlnaGxpZ2h0ZWQnXSA9IGZhbHNlO1xuICAgICAgICBpZiAobm9kZS5sYWJlbC50b1VwcGVyQ2FzZSgpLmluZGV4T2YoZmlsdGVyVmFsdWUudG9VcHBlckNhc2UoKSkgIT09IC0xKSB7XG4gICAgICAgICAgICBub2RlLmV4cGFuZGVkID0gdHJ1ZTtcbiAgICAgICAgICAgIG5vZGVbJ2hpZ2hsaWdodGVkJ10gPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZS5leHBhbmRlZCA9IGZhbHNlO1xuICAgICAgICAgICAgbm9kZVsnaGlnaGxpZ2h0ZWQnXSA9IGZhbHNlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4pIHtcbiAgICAgICAgICAgIG5vZGUuY2hpbGRyZW4uZm9yRWFjaCgoY2hpbGRyZW5Ob2RlKSA9PiB7XG4gICAgICAgICAgICAgICAgdGhpcy5pc0ZpbHRlck1hdGNoZWRFeHBhbmQoY2hpbGRyZW5Ob2RlLCBmaWx0ZXJWYWx1ZSk7XG5cbiAgICAgICAgICAgICAgICBpZiAoY2hpbGRyZW5Ob2RlLmV4cGFuZGVkKSB7XG4gICAgICAgICAgICAgICAgICAgIG5vZGUuZXhwYW5kZWQgPSB0cnVlO1xuICAgICAgICAgICAgICAgICAgICBub2RlWydoaWdobGlnaHRlZCddID0gdHJ1ZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHB1YmxpYyB0cmFja0J5Rm4oaW5kZXg6IG51bWJlciwgaXRlbTogVXhMaW5rKTogc3RyaW5nIHtcbiAgICAgICAgcmV0dXJuIGl0ZW0uaWQ7XG4gICAgfVxuXG4gICAgcHVibGljIGNoZWNrRm9yQ2hpbGRyZW4oKTogYm9vbGVhbiB7XG4gICAgICAgIHJldHVybiAhdGhpcy5ub2Rlcy5zb21lKChub2RlKSA9PiBub2RlLmhhc0NoaWxkcmVuKTtcbiAgICB9XG5cbiAgICBwdWJsaWMgcmVzZXRTZWxlY3Rpb24oKTogdm9pZCB7XG4gICAgICAgIHRoaXMucmVzZXROb2RlKHRoaXMubm9kZXMpO1xuICAgICAgICAvLyBUT0RPOiBpbnZlc3RpZ2F0ZSBpZiB3ZSBjYW4gZW1pdCBudWxsIGluc3RlYWQgb2YgW11cbiAgICAgICAgdGhpcy5zZWxlY3Rpb25DaGFuZ2UuZW1pdChbXSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSByZXNldE5vZGUobm9kZXM6IFV4TGlua1tdKTogdm9pZCB7XG4gICAgICAgIG5vZGVzLmZvckVhY2goKG5vZGUpID0+IHtcbiAgICAgICAgICAgIG5vZGUuc2VsZWN0ZWQgPSBmYWxzZTtcblxuICAgICAgICAgICAgaWYgKG5vZGUuY2hpbGRyZW4gJiYgbm9kZS5jaGlsZHJlbi5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5yZXNldE5vZGUobm9kZS5jaGlsZHJlbik7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgaXNWaXNpYmxlQ2hpbGRyZW4obm9kZTogVXhMaW5rLCBmaWx0ZXJWYWx1ZTogc3RyaW5nKTogdm9pZCB7XG4gICAgICAgIGlmIChub2RlLnBhcmVudCAmJiBub2RlLnBhcmVudC52aXNpYmxlID09PSB0cnVlICYmIG5vZGUucGFyZW50LmxhYmVsLnRvVXBwZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXJWYWx1ZS50b1VwcGVyQ2FzZSgpKSAhPT0gLTEpIHtcbiAgICAgICAgICAgIG5vZGUudmlzaWJsZSA9IHRydWU7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZHJlbk5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzVmlzaWJsZUNoaWxkcmVuKGNoaWxkcmVuTm9kZSwgZmlsdGVyVmFsdWUpO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBwcml2YXRlIGdldFNlbGVjdGVkTm9kZXNSZWN1cnNpdmUobm9kZXM6IFV4TGlua1tdKTogVXhMaW5rW10ge1xuICAgICAgICByZXR1cm4gKG5vZGVzIHx8IFtdKS5yZWR1Y2UoKGFjYywgbm9kZSkgPT4ge1xuICAgICAgICAgICAgaWYgKG5vZGUuaGFzQ2hpbGRyZW4pIHtcbiAgICAgICAgICAgICAgICByZXR1cm4gbm9kZS5zZWxlY3RlZCAmJiAhbm9kZS5pbmRldGVybWluYXRlXG4gICAgICAgICAgICAgICAgICAgID8gWy4uLmFjYywgbm9kZSwgLi4udGhpcy5nZXRTZWxlY3RlZE5vZGVzUmVjdXJzaXZlKG5vZGUuY2hpbGRyZW4pXVxuICAgICAgICAgICAgICAgICAgICA6IFsuLi5hY2MsIC4uLnRoaXMuZ2V0U2VsZWN0ZWROb2Rlc1JlY3Vyc2l2ZShub2RlLmNoaWxkcmVuKV07XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIHJldHVybiBub2RlLnNlbGVjdGVkID8gWy4uLmFjYywgbm9kZV0gOiBbLi4uYWNjXTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSwgW10pO1xuICAgIH1cblxuICAgIHByaXZhdGUgZ2V0VmlzaWJsZU5vZGVzUmVjdXJzaXZlKG5vZGVzOiBVeExpbmtbXSk6IFV4TGlua1tdIHtcbiAgICAgICAgcmV0dXJuIChub2RlcyB8fCBbXSkucmVkdWNlKChhY2MsIG5vZGUpID0+IHtcbiAgICAgICAgICAgIGlmIChub2RlLmhhc0NoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUudmlzaWJsZVxuICAgICAgICAgICAgICAgICAgICA/IFsuLi5hY2MsIG5vZGUsIC4uLnRoaXMuZ2V0VmlzaWJsZU5vZGVzUmVjdXJzaXZlKG5vZGUuY2hpbGRyZW4pXVxuICAgICAgICAgICAgICAgICAgICA6IFsuLi5hY2MsIC4uLnRoaXMuZ2V0VmlzaWJsZU5vZGVzUmVjdXJzaXZlKG5vZGUuY2hpbGRyZW4pXTtcbiAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGUudmlzaWJsZSA/IFsuLi5hY2MsIG5vZGVdIDogWy4uLmFjY107XG4gICAgICAgICAgICB9XG4gICAgICAgIH0sIFtdKTtcbiAgICB9XG5cbiAgICBwcml2YXRlIGlzRmlsdGVyTWF0Y2hlZChub2RlOiBVeExpbmssIGZpbHRlclZhbHVlOiBzdHJpbmcpOiB2b2lkIHtcbiAgICAgICAgaWYgKG5vZGUubGFiZWw/LnRvVXBwZXJDYXNlKCkuaW5kZXhPZihmaWx0ZXJWYWx1ZT8udG9VcHBlckNhc2UoKSkgIT09IC0xKSB7XG4gICAgICAgICAgICB0aGlzLnZpcnR1YWxTY3JvbGxpbmc/LnNjcm9sbFRvSW5kZXgoMCk7XG4gICAgICAgICAgICBub2RlLnZpc2libGUgPSB0cnVlO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbm9kZS52aXNpYmxlID0gZmFsc2U7XG4gICAgICAgIH1cblxuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgbm9kZS5jaGlsZHJlbi5mb3JFYWNoKChjaGlsZHJlbk5vZGUpID0+IHtcbiAgICAgICAgICAgICAgICB0aGlzLmlzRmlsdGVyTWF0Y2hlZChjaGlsZHJlbk5vZGUsIGZpbHRlclZhbHVlKTtcblxuICAgICAgICAgICAgICAgIGlmIChjaGlsZHJlbk5vZGUudmlzaWJsZSkge1xuICAgICAgICAgICAgICAgICAgICBub2RlLnZpc2libGUgPSB0cnVlO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXROb2Rlc0V4cGFuZGVkU3RhdGUobm9kZXM6IFV4TGlua1tdLCBleHBhbmRlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2RlLmV4cGFuZGVkID0gZXhwYW5kZWQ7XG4gICAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Tm9kZXNFeHBhbmRlZFN0YXRlKG5vZGUuY2hpbGRyZW4sIGV4cGFuZGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXROb2Rlc1Zpc2libGVTdGF0ZShub2RlczogVXhMaW5rW10sIHZpc2libGU6IGJvb2xlYW4pOiB2b2lkIHtcbiAgICAgICAgbm9kZXMuZm9yRWFjaCgobm9kZSkgPT4ge1xuICAgICAgICAgICAgbm9kZS52aXNpYmxlID0gdmlzaWJsZTtcbiAgICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROb2Rlc1Zpc2libGVTdGF0ZShub2RlLmNoaWxkcmVuLCB2aXNpYmxlKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgfSk7XG4gICAgfVxuXG4gICAgcHJpdmF0ZSBzZXROb2Rlc1NlbGVjdGVkU3RhdGUobm9kZXM6IFV4TGlua1tdLCBzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBub2RlLnNlbGVjdGVkID0gc2VsZWN0ZWQ7XG4gICAgICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xuICAgICAgICAgICAgICAgIHRoaXMuc2V0Tm9kZXNTZWxlY3RlZFN0YXRlKG5vZGUuY2hpbGRyZW4sIHNlbGVjdGVkKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmICh0aGlzLmhhc1NlbGVjdEFsbCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuXG4gICAgfVxuICAgIHByaXZhdGUgc2V0Tm9kZXNTZWxlY3RlZEZpbHRlcmVkU3RhdGUobm9kZXM6IFV4TGlua1tdLCBzZWxlY3RlZDogYm9vbGVhbik6IHZvaWQge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBpZihub2RlLnZpc2libGUpe1xuICAgICAgICAgICAgICAgIG5vZGUuc2VsZWN0ZWQgPSBzZWxlY3RlZDtcbiAgICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXROb2Rlc1NlbGVjdGVkRmlsdGVyZWRTdGF0ZShub2RlLmNoaWxkcmVuLCBzZWxlY3RlZCk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICBpZiAodGhpcy5oYXNTZWxlY3RBbGxGaWx0ZXJlZCkge1xuICAgICAgICAgICAgICAgIHRoaXMuc2VsZWN0aW9uQ2hhbmdlLmVtaXQobm9kZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgIH1cblxuICAgIHByaXZhdGUgc2V0UGFyZW50Tm9kZShub2RlczogVXhMaW5rW10sIHBhcmVudE5vZGU6IFV4TGluayk6IHZvaWQge1xuICAgICAgICBub2Rlcy5mb3JFYWNoKChub2RlKSA9PiB7XG4gICAgICAgICAgICBpZiAocGFyZW50Tm9kZSkge1xuICAgICAgICAgICAgICAgIG5vZGUucGFyZW50ID0gcGFyZW50Tm9kZTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XG4gICAgICAgICAgICAgICAgdGhpcy5zZXRQYXJlbnROb2RlKG5vZGUuY2hpbGRyZW4sIG5vZGUpO1xuICAgICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICB9XG59XG5cbkBOZ01vZHVsZSh7XG4gICAgaW1wb3J0czogW1xuICAgICAgICBDb21tb25Nb2R1bGUsXG4gICAgICAgIEZvcm1zTW9kdWxlLFxuICAgICAgICBVeFRvb2xiYXJGaWx0ZXJDb21wb25lbnRNb2R1bGUsXG4gICAgICAgIFV4QnV0dG9uQ29tcG9uZW50TW9kdWxlLFxuICAgICAgICBVeEJhZGdlQ29tcG9uZW50TW9kdWxlLFxuICAgICAgICBUcmFuc2xhdGVNb2R1bGUsXG4gICAgICAgIFNjcm9sbGluZ01vZHVsZSxcbiAgICBdLFxuICAgIGV4cG9ydHM6IFtVeFRyZWVDb21wb25lbnQsIFV4VHJlZU5vZGVDb21wb25lbnRdLFxuICAgIGRlY2xhcmF0aW9uczogW1V4VHJlZUNvbXBvbmVudCwgVXhUcmVlTm9kZUNvbXBvbmVudF0sXG59KVxuZXhwb3J0IGNsYXNzIFV4VHJlZUNvbXBvbmVudE1vZHVsZSB7fVxuIiwiPGxpXG4gICAgKm5nSWY9XCJub2RlLnZpc2libGVcIlxuICAgIGNsYXNzPVwidXgtdHJlZV9fbm9kZVwiXG4gICAgW2NsYXNzLmZpcnN0LWNoaWxkXT1cImlzRmlyc3RcIlxuICAgIFtjbGFzcy5sYXN0LWNoaWxkXT1cImlzTGFzdFwiXG4gICAgW2NsYXNzLnV4LXRyZWVfX25vZGUtLWV4cGFuZGFibGVdPVwiaGFzTm9kZUNoaWxkcmVuKG5vZGUpICYmICFpc0hpZGVUb2dnbGVzXCJcbiAgICBbY2xhc3MudXgtdHJlZV9fbm9kZS0tZGlzYWJsZWRdPVwibm9kZS5kaXNhYmxlZFwiXG4gICAgdGl0bGU9XCJ7eyBub2RlLnRvb2x0aXBMYWJlbCA/IG5vZGUudG9vbHRpcExhYmVsIDogbm9kZS5sYWJlbCB9fVwiXG4gICAgYXR0ci5kYXRhLWUyZT1cInt7IGUyZUF0dHIgfX1cIj5cbiAgICA8ZGl2IGNsYXNzPVwidXgtdHJlZV9fbm9kZS13cmFwcGVyXCIgW2NsYXNzLnV4LXRyZWVfX25vZGUtLXNlbGVjdGVkXT1cIm5vZGUuc2VsZWN0ZWRcIj5cbiAgICAgICAgPHV4LWJ1dHRvblxuICAgICAgICAgICAgKGNsaWNrKT1cIm9uTm9kZVRvZ2dsZSgkZXZlbnQsIG5vZGUpXCJcbiAgICAgICAgICAgIChrZXlkb3duKT1cIm9uTm9kZUtleWRvd24oJGV2ZW50LCBub2RlKVwiXG4gICAgICAgICAgICBzdHlsZUNsYXNzPVwidXgtdHJlZV9fbm9kZS10b2dnbGUtaWNvblwiXG4gICAgICAgICAgICAqbmdJZj1cImhhc05vZGVDaGlsZHJlbihub2RlKSAmJiAhaXNIaWRlVG9nZ2xlc1wiXG4gICAgICAgICAgICBbaXNTbWFsbF09XCJ0cnVlXCJcbiAgICAgICAgICAgIFtpc0ZsYXRdPVwidHJ1ZVwiXG4gICAgICAgICAgICBbYXJpYUxhYmVsXT1cIm5vZGUuZXhwYW5kZWQgPyAnQ29sbGFwc2UnIDogJ0V4cGFuZCdcIlxuICAgICAgICAgICAgW2ljb25DbGFzc109XCJub2RlLmV4cGFuZGVkID8gZXhwYW5kZWRJY29uQ2xhc3MgOiBjb2xsYXBzZWRJY29uQ2xhc3NcIj48L3V4LWJ1dHRvbj5cblxuICAgICAgICA8c3BhblxuICAgICAgICAgICAgKm5nSWY9XCJpc011bHRpc2VsZWN0XCJcbiAgICAgICAgICAgIFtjbGFzcy51eC10cmVlX19wYXJlbnRdPVwiaGFzTm9kZUNoaWxkcmVuKG5vZGUpICYmICFpc0hpZGVUb2dnbGVzXCJcbiAgICAgICAgICAgIFtjbGFzcy51eC10cmVlX19sZWFmXT1cIiFoYXNOb2RlQ2hpbGRyZW4obm9kZSkgJiYgIWlzSGlkZVRvZ2dsZXNcIj5cbiAgICAgICAgICAgIDxpbnB1dFxuICAgICAgICAgICAgICAgIHR5cGU9XCJjaGVja2JveFwiXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJ1eC1pbnB1dF9fY2hlY2tib3hcIlxuICAgICAgICAgICAgICAgIFtjbGFzcy5jaGVja2JveC1sYWJlbC1pbmRldGVybWluYXRlXT1cIm5vZGUuaW5kZXRlcm1pbmF0ZVwiXG4gICAgICAgICAgICAgICAgW2NsYXNzLnV4LWlucHV0X19jaGVja2JveC0tc2VsZWN0ZWRdPVwibm9kZS5zZWxlY3RlZCAmJiAhbm9kZS5pbmRldGVybWluYXRlXCJcbiAgICAgICAgICAgICAgICBbaWRdPVwibm9kZUlkXCJcbiAgICAgICAgICAgICAgICBbdmFsdWVdPVwibm9kZS5sYWJlbFwiXG4gICAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cIm5vZGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgIFsobmdNb2RlbCldPVwibm9kZS5zZWxlY3RlZFwiXG4gICAgICAgICAgICAgICAgW2F0dHIuYXJpYS1sYWJlbF09XCJjaGVja0lucHV0TGFiZWwoKVwiXG4gICAgICAgICAgICAgICAgKGNoYW5nZSk9XCJvbkNoZWNrYm94Q2hhbmdlKG5vZGUsICRldmVudClcIiAvPlxuICAgICAgICAgICAgPGxhYmVsIGNsYXNzPVwidXgtdHJlZV9fbm9kZS1jaGVja2JveC1sYWJlbFwiIFtjbGFzcy5jaGVja2JveC1sYWJlbC1pbmRldGVybWluYXRlXT1cIm5vZGUuaW5kZXRlcm1pbmF0ZVwiIFtmb3JdPVwibm9kZUlkXCI+IDwvbGFiZWw+XG4gICAgICAgIDwvc3Bhbj5cblxuICAgICAgICA8ZGl2XG4gICAgICAgICAgICAqbmdJZj1cIm5vZGVDb250ZW50VGVtcGxhdGVcIlxuICAgICAgICAgICAgY2xhc3M9XCJ1eC10cmVlX19jdXN0b20tY29udGVudFwiXG4gICAgICAgICAgICBbY2xhc3MudXgtdHJlZV9fcGFyZW50XT1cImhhc05vZGVDaGlsZHJlbihub2RlKSAmJiAhaXNIaWRlVG9nZ2xlc1wiXG4gICAgICAgICAgICBbY2xhc3MudXgtdHJlZV9fbGVhZl09XCIhaGFzTm9kZUNoaWxkcmVuKG5vZGUpICYmICFpc0hpZGVUb2dnbGVzXCI+XG4gICAgICAgICAgICA8bmctdGVtcGxhdGUgW25nVGVtcGxhdGVPdXRsZXRdPVwibm9kZUNvbnRlbnRUZW1wbGF0ZVwiIFtuZ1RlbXBsYXRlT3V0bGV0Q29udGV4dF09XCJ7ICRpbXBsaWNpdDogbm9kZSB9XCI+IDwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIDxuZy1jb250YWluZXIgKm5nSWY9XCIhbm9kZUNvbnRlbnRUZW1wbGF0ZVwiPlxuICAgICAgICAgICAgPG5nLWNvbnRhaW5lciAqbmdJZj1cIm5vZGUudHlwZUxhYmVsIHx8IG5vZGUuaWNvbkNsYXNzXCI+XG4gICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgKm5nSWY9XCJub2RlLnR5cGVMYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtdHJlZV9fbm9kZS10eXBlIHV4LXRyZWVfX25vZGUtdHlwZS0te3sgbm9kZS50eXBlQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudXgtdHJlZV9fbm9kZS10eXBlLXBhcmVudF09XCJoYXNOb2RlQ2hpbGRyZW4obm9kZSkgJiYgIWlzSGlkZVRvZ2dsZXMgJiYgIWlzTXVsdGlzZWxlY3RcIlxuICAgICAgICAgICAgICAgICAgICAoY2xpY2spPVwib25Ob2RlQ2xpY2soJGV2ZW50LCBub2RlKVwiXG4gICAgICAgICAgICAgICAgICAgIChrZXlkb3duKT1cIm9uTm9kZUtleWRvd24oJGV2ZW50LCBub2RlKVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBub2RlLnR5cGVMYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxzcGFuICpuZ0lmPVwibm9kZS5pY29uQ2xhc3NcIiBjbGFzcz1cInV4LXRyZWVfX25vZGUtaWNvbiB1eC10cmVlX19ub2RlLXR5cGUtLXt7IG5vZGUuaWNvblR5cGVDbGFzcyB9fVwiPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInt7IG5vZGUuaWNvbkNsYXNzIH19XCI+PC9zcGFuPlxuICAgICAgICAgICAgICAgIDwvc3Bhbj5cblxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJ1eC10cmVlX19ub2RlLWxhYmVsLXdyYXBwZWRcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAgICAgICAgIFtjbGFzcy50ZXh0LW11dGVkXT1cIm5vZGUuZGlzYWJsZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWVfX25vZGUtbGFiZWwtLWhpZ2hsaWdodGVkXT1cIm5vZGVbJ2hpZ2hsaWdodGVkJ11cIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTm9kZUNsaWNrKCRldmVudCwgbm9kZSlcIlxuICAgICAgICAgICAgICAgICAgICAgICAgKGtleWRvd24pPVwib25Ob2RlS2V5ZG93bigkZXZlbnQsIG5vZGUpXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiAqbmdJZj1cImF1dG9UcmFuc2xhdGU7IGVsc2UgbWFudWFsVHJhbnNsYXRpb25cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgICAgICA8bmctdGVtcGxhdGUgI21hbnVhbFRyYW5zbGF0aW9uPnt7IG5vZGUubGFiZWwgfX08L25nLXRlbXBsYXRlPlxuICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmV1aS11LXRleHQtbGluay1leHRlcm5hbF09XCJub2RlICYmIG5vZGUudXJsRXh0ZXJuYWxcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvbmctY29udGFpbmVyPlxuXG4gICAgICAgICAgICA8bmctY29udGFpbmVyICpuZ0lmPVwiIShub2RlLnR5cGVMYWJlbCB8fCBub2RlLmljb25DbGFzcylcIj5cbiAgICAgICAgICAgICAgICA8c3BhblxuICAgICAgICAgICAgICAgICAgICBjbGFzcz1cInV4LXRyZWVfX25vZGUtbGFiZWxcIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudXgtdHJlZV9fbm9kZS1sYWJlbC1wYXJlbnRdPVwiaGFzTm9kZUNoaWxkcmVuKG5vZGUpICYmICFpc0hpZGVUb2dnbGVzICYmICFpc011bHRpc2VsZWN0XCJcbiAgICAgICAgICAgICAgICAgICAgW2NsYXNzLnV4LXRyZWVfX25vZGUtbGFiZWwtLWhpZ2hsaWdodGVkXT1cIm5vZGVbJ2hpZ2hsaWdodGVkJ11cIlxuICAgICAgICAgICAgICAgICAgICBbY2xhc3MudGV4dC1tdXRlZF09XCJub2RlLmRpc2FibGVkXCJcbiAgICAgICAgICAgICAgICAgICAgKGNsaWNrKT1cIm9uTm9kZUNsaWNrKCRldmVudCwgbm9kZSlcIlxuICAgICAgICAgICAgICAgICAgICAoa2V5ZG93bik9XCJvbk5vZGVLZXlkb3duKCRldmVudCwgbm9kZSlcIj5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gKm5nSWY9XCJhdXRvVHJhbnNsYXRlOyBlbHNlIG1hbnVhbFRyYW5zbGF0aW9uXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICB7eyBub2RlLmxhYmVsIHwgdHJhbnNsYXRlIH19XG4gICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPG5nLXRlbXBsYXRlICNtYW51YWxUcmFuc2xhdGlvbj57eyBub2RlLmxhYmVsIH19PC9uZy10ZW1wbGF0ZT5cbiAgICAgICAgICAgICAgICAgICAgPHNwYW4gW2NsYXNzLmV1aS11LXRleHQtbGluay1leHRlcm5hbF09XCJub2RlICYmIG5vZGUudXJsRXh0ZXJuYWxcIj48L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XG5cbiAgICAgICAgICAgIDxkaXYgKm5nSWY9XCJub2RlLmJhZGdlc1wiIGNsYXNzPVwiZXVpLXUtbWwtYXV0b1wiPlxuICAgICAgICAgICAgICAgIDx1eC1iYWRnZVxuICAgICAgICAgICAgICAgICAgICAqbmdGb3I9XCJsZXQgYmFkZ2Ugb2Ygbm9kZS5iYWRnZXNcIlxuICAgICAgICAgICAgICAgICAgICBzdHlsZUNsYXNzPVwidXgtdHJlZV9fbm9kZS1iYWRnZVwiXG4gICAgICAgICAgICAgICAgICAgIGlzVGlueT1cInRydWVcIlxuICAgICAgICAgICAgICAgICAgICBpc091dGxpbmU9XCJ0cnVlXCJcbiAgICAgICAgICAgICAgICAgICAgaXNQaWxsPVwidHJ1ZVwiXG4gICAgICAgICAgICAgICAgICAgIHR5cGVDbGFzcz1cInt7IGJhZGdlLnR5cGVDbGFzcyB9fVwiPlxuICAgICAgICAgICAgICAgICAgICB7eyBiYWRnZS5sYWJlbCB9fVxuICAgICAgICAgICAgICAgIDwvdXgtYmFkZ2U+XG4gICAgICAgICAgICA8L2Rpdj5cblxuICAgICAgICAgICAgPHNwYW5cbiAgICAgICAgICAgICAgICAqbmdJZj1cIm5vZGUubWV0YWRhdGEgJiYgbm9kZS5tZXRhZGF0YS50aXRsZSAmJiBub2RlLm1ldGFkYXRhLnRpdGxlLmxlbmd0aCA+IDBcIlxuICAgICAgICAgICAgICAgIGNsYXNzPVwidXgtdHJlZV9fbm9kZS1tZXRhY29udGVudC10b2dnbGUgdXgtdHJlZV9fbm9kZS1jbGlja2FibGVcIlxuICAgICAgICAgICAgICAgIChjbGljayk9XCJvbk1ldGFkYXRhTm9kZVRvZ2dsZSgkZXZlbnQsIG5vZGUpXCI+XG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJldWktaWNvblwiIFtuZ0NsYXNzXT1cIm5vZGUuZXhwYW5kZWQgPyAnZXVpLWljb24gZXVpLWljb24tYW5nbGUtZG93bicgOiAnZXVpLWljb24gZXVpLWljb24tYW5nbGUtcmlnaHQnXCI+PC9zcGFuPlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L25nLWNvbnRhaW5lcj5cbiAgICA8L2Rpdj5cbiAgICA8bmctY29udGFpbmVyICpuZ0lmPVwibm9kZS5leHBhbmRlZFwiPlxuICAgICAgICA8dWwgKm5nSWY9XCJoYXNOb2RlQ2hpbGRyZW4obm9kZSlcIiBjbGFzcz1cInV4LXRyZWVfX25vZGVzXCI+XG4gICAgICAgICAgICA8dXgtdHJlZS1ub2RlXG4gICAgICAgICAgICAgICAgKm5nRm9yPVwibGV0IHN1Yk5vZGUgb2Ygbm9kZS5jaGlsZHJlbjsgbGV0IGlzRmlyc3QgPSBmaXJzdDsgbGV0IGlzTGFzdCA9IGxhc3Q7IHRyYWNrQnk6IHRyYWNrQnlGblwiXG4gICAgICAgICAgICAgICAgW25vZGVdPVwic3ViTm9kZVwiXG4gICAgICAgICAgICAgICAgW2lzTXVsdGlzZWxlY3RdPVwiaXNNdWx0aXNlbGVjdFwiXG4gICAgICAgICAgICAgICAgW2lzUmVjdXJzaXZlU2VsZWN0aW9uXT1cImlzUmVjdXJzaXZlU2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICAobm9kZUNsaWNrKT1cIm9uU3ViTm9kZUNsaWNrKCRldmVudClcIlxuICAgICAgICAgICAgICAgIChub2RlVG9nZ2xlKT1cIm9uU3ViTm9kZVRvZ2dsZSgkZXZlbnQpXCJcbiAgICAgICAgICAgICAgICAoc2VsZWN0aW9uQ2hhbmdlKT1cIm9uU2VsZWN0aW9uQ2hhbmdlKCRldmVudClcIlxuICAgICAgICAgICAgICAgIFtpc0ZpcnN0XT1cImlzRmlyc3RcIlxuICAgICAgICAgICAgICAgIFtpc0xhc3RdPVwiaXNMYXN0XCJcbiAgICAgICAgICAgICAgICBbaXNDbGlja1RvZ2dsaW5nTm9kZV09XCJpc0NsaWNrVG9nZ2xpbmdOb2RlXCJcbiAgICAgICAgICAgICAgICBleHBhbmRlZEljb25DbGFzcz1cInt7IGV4cGFuZGVkSWNvbkNsYXNzIH19XCJcbiAgICAgICAgICAgICAgICBjb2xsYXBzZWRJY29uQ2xhc3M9XCJ7eyBjb2xsYXBzZWRJY29uQ2xhc3MgfX1cIlxuICAgICAgICAgICAgICAgIFt0ZW1wbGF0ZVZhcmlhYmxlXT1cInRlbXBsYXRlVmFyaWFibGVcIlxuICAgICAgICAgICAgICAgIFtub2RlQ29udGVudFRlbXBsYXRlXT1cIm5vZGVDb250ZW50VGVtcGxhdGVcIlxuICAgICAgICAgICAgICAgIFtpc1Nob3dBY3RpdmVOb2RlXT1cImlzU2hvd0FjdGl2ZU5vZGVcIlxuICAgICAgICAgICAgICAgIFtpc0hpZGVUb2dnbGVzXT1cImlzSGlkZVRvZ2dsZXNcIlxuICAgICAgICAgICAgICAgIFtpc0NsaWNrU2VsZWN0aW5nTm9kZV09XCJpc0NsaWNrU2VsZWN0aW5nTm9kZVwiXG4gICAgICAgICAgICAgICAgW2hpZ2hsaWdodFBhdGhdPVwiaGlnaGxpZ2h0UGF0aFwiXG4gICAgICAgICAgICAgICAgW2lzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uXT1cImlzUmVjdXJzaXZlUGFyZW50U2VsZWN0aW9uXCJcbiAgICAgICAgICAgICAgICBbYXV0b1RyYW5zbGF0ZV09XCJhdXRvVHJhbnNsYXRlXCI+XG4gICAgICAgICAgICA8L3V4LXRyZWUtbm9kZT5cbiAgICAgICAgPC91bD5cbiAgICAgICAgPGRpdiAqbmdJZj1cIm5vZGUubWV0YWRhdGEgJiYgbm9kZS5tZXRhZGF0YS50aXRsZSAmJiBub2RlLm1ldGFkYXRhLnRpdGxlLmxlbmd0aCA+IDBcIiBjbGFzcz1cInV4LXRyZWVfX25vZGUtbWV0YWNvbnRlbnRcIj5cbiAgICAgICAgICAgIDxuZy10ZW1wbGF0ZSBbbmdUZW1wbGF0ZU91dGxldF09XCJ0ZW1wbGF0ZVZhcmlhYmxlXCIgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgbWV0YWRhdGE6IG5vZGUubWV0YWRhdGEgfVwiPjwvbmctdGVtcGxhdGU+XG4gICAgICAgIDwvZGl2PlxuICAgIDwvbmctY29udGFpbmVyPlxuPC9saT5cbiJdfQ==
@@ -23,10 +23,10 @@ class EuiBadgeComponent extends BaseDirective {
23
23
  }
24
24
  }
25
25
  /** @nocollapse */ EuiBadgeComponent.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: EuiBadgeComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
26
- /** @nocollapse */ EuiBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: { ariaLabel: ["aria-label", "ariaLabel"] }, host: { properties: { "class": "this.cssClasses", "attr.role": "this.role", "attr.aria-label": "this.ariaLabel" } }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".eui-badge{align-items:center;background-color:var(--eui-base-color-primary-100);border:1px solid rgba(255,255,255,.8);border-radius:var(--eui-base-spacing-2xl);color:var(--eui-base-color-white);display:inline-flex;font-size:var(--eui-base-font-size-s);justify-content:center;height:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs));min-width:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs));padding:0 var(--eui-base-spacing-2xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-icon .eui-badge,.eui-icon-svg .eui-badge{position:absolute;right:-30%;top:-10%;transition:all .3s ease}.eui-button .eui-badge{height:inherit;position:relative;transition:all .3s ease}.eui-badge--rounded{border-radius:var(--eui-base-spacing-m)}.eui-badge--primary{background-color:var(--eui-base-color-primary-100);color:var(--eui-base-color-white)}.eui-badge--secondary{background-color:var(--eui-base-color-grey-75);color:var(--eui-base-color-white)}.eui-badge--info{background-color:var(--eui-base-color-info-100);color:var(--eui-base-color-white)}.eui-badge--success{background-color:var(--eui-base-color-success-100);color:var(--eui-base-color-white)}.eui-badge--warning{background-color:var(--eui-base-color-warning-100);color:var(--eui-base-color-black)}.eui-badge--danger{background-color:var(--eui-base-color-danger-100);color:var(--eui-base-color-white)}.eui-badge--accent{background-color:var(--eui-base-color-accent-100);color:var(--eui-base-color-black)}.eui-badge--size-s{font-size:var(--eui-base-font-size-xs);height:var(--eui-base-spacing-m);min-width:var(--eui-base-spacing-m)}.eui-badge--size-m{font-size:var(--eui-base-font-size-s);height:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs));min-width:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs))}.eui-badge--size-l{font-size:var(--eui-base-font-size-l);height:var(--eui-base-spacing-l);min-width:var(--eui-base-spacing-l);padding:0 var(--eui-base-spacing-2xs)}.eui-badge--size-xl{font-size:var(--eui-base-font-size-xl);height:var(--eui-base-spacing-xl);min-width:var(--eui-base-spacing-xl);padding:0 var(--eui-base-spacing-xs)}.eui-badge--size-2xl{font-size:var(--eui-base-font-size-2xl);height:var(--eui-base-spacing-2xl);min-width:var(--eui-base-spacing-2xl);padding:0 var(--eui-base-spacing-s)}.eui-icon--size-s .eui-badge{right:-50%;top:-30%}.eui-icon--size-s .eui-badge--size-s{right:-25%;top:-25%}.eui-icon--size-s .eui-badge--size-m{right:-40%;top:-35%}.eui-icon--size-s .eui-badge--size-l,.eui-icon--size-s .eui-badge--size-xl{right:0%;top:0%}.eui-icon--size-m .eui-badge,.eui-icon--size-m .eui-badge--size-s{right:-20%;top:-10%}.eui-icon--size-m .eui-badge--size-m{right:-35%;top:-20%}.eui-icon--size-m .eui-badge--size-l,.eui-icon--size-m .eui-badge--size-xl,.eui-icon--size-l .eui-badge,.eui-icon--size-l .eui-badge--size-s{right:0%;top:0%}.eui-icon--size-l .eui-badge--size-m{right:-15%;top:-10%}.eui-icon--size-l .eui-badge--size-l{right:-25%;top:-15%}.eui-icon--size-l .eui-badge--size-xl{right:-50%;top:-35%}.eui-icon--size-xl .eui-badge{right:5%;top:10%}.eui-icon--size-xl .eui-badge--size-s{right:10%;top:5%}.eui-icon--size-xl .eui-badge--size-m{right:0%;top:0%}.eui-icon--size-xl .eui-badge--size-l{right:-10%;top:-5%}.eui-icon--size-xl .eui-badge--size-xl{right:-30%;top:-15%}.eui-icon--size-2xl .eui-badge{right:10%;top:10%}.eui-icon--size-2xl .eui-badge--size-s{right:15%;top:5%}.eui-icon--size-2xl .eui-badge--size-m{right:5%;top:0%}.eui-icon--size-2xl .eui-badge--size-l{right:0%;top:0%}.eui-icon--size-2xl .eui-badge--size-xl{right:-20%;top:-5%}.eui-icon--size-2xl .eui-badge--size-2xl{right:-40%;top:-15%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
26
+ /** @nocollapse */ EuiBadgeComponent.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "15.2.5", type: EuiBadgeComponent, selector: "div[euiBadge], span[euiBadge], eui-badge", inputs: { ariaLabel: ["aria-label", "ariaLabel"] }, host: { properties: { "class": "this.cssClasses", "attr.role": "this.role", "attr.aria-label": "this.ariaLabel" } }, usesInheritance: true, ngImport: i0, template: '<ng-content></ng-content>', isInline: true, styles: [".eui-badge{align-items:center;background-color:var(--eui-base-color-primary-100);border:1px solid rgba(255,255,255,.8);border-radius:var(--eui-base-spacing-2xl);color:var(--eui-base-color-white);display:inline-flex;font-size:var(--eui-base-font-size-s);justify-content:center;height:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs));min-width:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs));padding:0 var(--eui-base-spacing-2xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-icon .eui-badge,.eui-icon-svg .eui-badge{position:absolute;right:-30%;top:-10%;transition:all .3s ease}.eui-button .eui-badge{height:inherit;position:relative;transition:all .3s ease}.eui-badge--rounded{border-radius:var(--eui-base-spacing-m)}.eui-badge--primary{background-color:var(--eui-base-color-primary-100);color:var(--eui-base-color-white)}.eui-badge--secondary{background-color:var(--eui-base-color-grey-75);color:var(--eui-base-color-white)}.eui-badge--info{background-color:var(--eui-base-color-info-100);color:var(--eui-base-color-white)}.eui-badge--success{background-color:var(--eui-base-color-success-100);color:var(--eui-base-color-white)}.eui-badge--warning{background-color:var(--eui-base-color-warning-100);color:var(--eui-base-color-black)}.eui-badge--danger{background-color:var(--eui-base-color-danger-100);color:var(--eui-base-color-white)}.eui-badge--accent{background-color:var(--eui-base-color-accent-100);color:var(--eui-base-color-black)}.eui-badge--outline.eui-badge--primary{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-primary-100);color:var(--eui-base-color-primary-100)}.eui-badge--outline.eui-badge--secondary{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-100);color:var(--eui-base-color-grey-100)}.eui-badge--outline.eui-badge--info{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-info-100);color:var(--eui-base-color-info-100)}.eui-badge--outline.eui-badge--success{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-success-100);color:var(--eui-base-color-success-100)}.eui-badge--outline.eui-badge--warning{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-warning-100);color:var(--eui-base-color-warning-140)}.eui-badge--outline.eui-badge--danger{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-danger-100);color:var(--eui-base-color-danger-100)}.eui-badge--outline.eui-badge--accent{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-accent-100);color:var(--eui-base-color-grey-100)}.eui-badge--size-s{font-size:var(--eui-base-font-size-xs);height:var(--eui-base-spacing-m);min-width:var(--eui-base-spacing-m)}.eui-badge--size-m{font-size:var(--eui-base-font-size-s);height:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs));min-width:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs))}.eui-badge--size-l{font-size:var(--eui-base-font-size-l);height:var(--eui-base-spacing-l);min-width:var(--eui-base-spacing-l);padding:0 var(--eui-base-spacing-2xs)}.eui-badge--size-xl{font-size:var(--eui-base-font-size-xl);height:var(--eui-base-spacing-xl);min-width:var(--eui-base-spacing-xl);padding:0 var(--eui-base-spacing-xs)}.eui-badge--size-2xl{font-size:var(--eui-base-font-size-2xl);height:var(--eui-base-spacing-2xl);min-width:var(--eui-base-spacing-2xl);padding:0 var(--eui-base-spacing-s)}.eui-icon--size-s .eui-badge{right:-50%;top:-30%}.eui-icon--size-s .eui-badge--size-s{right:-25%;top:-25%}.eui-icon--size-s .eui-badge--size-m{right:-40%;top:-35%}.eui-icon--size-s .eui-badge--size-l,.eui-icon--size-s .eui-badge--size-xl{right:0%;top:0%}.eui-icon--size-m .eui-badge,.eui-icon--size-m .eui-badge--size-s{right:-20%;top:-10%}.eui-icon--size-m .eui-badge--size-m{right:-35%;top:-20%}.eui-icon--size-m .eui-badge--size-l,.eui-icon--size-m .eui-badge--size-xl,.eui-icon--size-l .eui-badge,.eui-icon--size-l .eui-badge--size-s{right:0%;top:0%}.eui-icon--size-l .eui-badge--size-m{right:-15%;top:-10%}.eui-icon--size-l .eui-badge--size-l{right:-25%;top:-15%}.eui-icon--size-l .eui-badge--size-xl{right:-50%;top:-35%}.eui-icon--size-xl .eui-badge{right:5%;top:10%}.eui-icon--size-xl .eui-badge--size-s{right:10%;top:5%}.eui-icon--size-xl .eui-badge--size-m{right:0%;top:0%}.eui-icon--size-xl .eui-badge--size-l{right:-10%;top:-5%}.eui-icon--size-xl .eui-badge--size-xl{right:-30%;top:-15%}.eui-icon--size-2xl .eui-badge{right:10%;top:10%}.eui-icon--size-2xl .eui-badge--size-s{right:15%;top:5%}.eui-icon--size-2xl .eui-badge--size-m{right:5%;top:0%}.eui-icon--size-2xl .eui-badge--size-l{right:0%;top:0%}.eui-icon--size-2xl .eui-badge--size-xl{right:-20%;top:-5%}.eui-icon--size-2xl .eui-badge--size-2xl{right:-40%;top:-15%}\n"], changeDetection: i0.ChangeDetectionStrategy.OnPush, encapsulation: i0.ViewEncapsulation.None });
27
27
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.5", ngImport: i0, type: EuiBadgeComponent, decorators: [{
28
28
  type: Component,
29
- args: [{ selector: 'div[euiBadge], span[euiBadge], eui-badge', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".eui-badge{align-items:center;background-color:var(--eui-base-color-primary-100);border:1px solid rgba(255,255,255,.8);border-radius:var(--eui-base-spacing-2xl);color:var(--eui-base-color-white);display:inline-flex;font-size:var(--eui-base-font-size-s);justify-content:center;height:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs));min-width:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs));padding:0 var(--eui-base-spacing-2xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-icon .eui-badge,.eui-icon-svg .eui-badge{position:absolute;right:-30%;top:-10%;transition:all .3s ease}.eui-button .eui-badge{height:inherit;position:relative;transition:all .3s ease}.eui-badge--rounded{border-radius:var(--eui-base-spacing-m)}.eui-badge--primary{background-color:var(--eui-base-color-primary-100);color:var(--eui-base-color-white)}.eui-badge--secondary{background-color:var(--eui-base-color-grey-75);color:var(--eui-base-color-white)}.eui-badge--info{background-color:var(--eui-base-color-info-100);color:var(--eui-base-color-white)}.eui-badge--success{background-color:var(--eui-base-color-success-100);color:var(--eui-base-color-white)}.eui-badge--warning{background-color:var(--eui-base-color-warning-100);color:var(--eui-base-color-black)}.eui-badge--danger{background-color:var(--eui-base-color-danger-100);color:var(--eui-base-color-white)}.eui-badge--accent{background-color:var(--eui-base-color-accent-100);color:var(--eui-base-color-black)}.eui-badge--size-s{font-size:var(--eui-base-font-size-xs);height:var(--eui-base-spacing-m);min-width:var(--eui-base-spacing-m)}.eui-badge--size-m{font-size:var(--eui-base-font-size-s);height:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs));min-width:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs))}.eui-badge--size-l{font-size:var(--eui-base-font-size-l);height:var(--eui-base-spacing-l);min-width:var(--eui-base-spacing-l);padding:0 var(--eui-base-spacing-2xs)}.eui-badge--size-xl{font-size:var(--eui-base-font-size-xl);height:var(--eui-base-spacing-xl);min-width:var(--eui-base-spacing-xl);padding:0 var(--eui-base-spacing-xs)}.eui-badge--size-2xl{font-size:var(--eui-base-font-size-2xl);height:var(--eui-base-spacing-2xl);min-width:var(--eui-base-spacing-2xl);padding:0 var(--eui-base-spacing-s)}.eui-icon--size-s .eui-badge{right:-50%;top:-30%}.eui-icon--size-s .eui-badge--size-s{right:-25%;top:-25%}.eui-icon--size-s .eui-badge--size-m{right:-40%;top:-35%}.eui-icon--size-s .eui-badge--size-l,.eui-icon--size-s .eui-badge--size-xl{right:0%;top:0%}.eui-icon--size-m .eui-badge,.eui-icon--size-m .eui-badge--size-s{right:-20%;top:-10%}.eui-icon--size-m .eui-badge--size-m{right:-35%;top:-20%}.eui-icon--size-m .eui-badge--size-l,.eui-icon--size-m .eui-badge--size-xl,.eui-icon--size-l .eui-badge,.eui-icon--size-l .eui-badge--size-s{right:0%;top:0%}.eui-icon--size-l .eui-badge--size-m{right:-15%;top:-10%}.eui-icon--size-l .eui-badge--size-l{right:-25%;top:-15%}.eui-icon--size-l .eui-badge--size-xl{right:-50%;top:-35%}.eui-icon--size-xl .eui-badge{right:5%;top:10%}.eui-icon--size-xl .eui-badge--size-s{right:10%;top:5%}.eui-icon--size-xl .eui-badge--size-m{right:0%;top:0%}.eui-icon--size-xl .eui-badge--size-l{right:-10%;top:-5%}.eui-icon--size-xl .eui-badge--size-xl{right:-30%;top:-15%}.eui-icon--size-2xl .eui-badge{right:10%;top:10%}.eui-icon--size-2xl .eui-badge--size-s{right:15%;top:5%}.eui-icon--size-2xl .eui-badge--size-m{right:5%;top:0%}.eui-icon--size-2xl .eui-badge--size-l{right:0%;top:0%}.eui-icon--size-2xl .eui-badge--size-xl{right:-20%;top:-5%}.eui-icon--size-2xl .eui-badge--size-2xl{right:-40%;top:-15%}\n"] }]
29
+ args: [{ selector: 'div[euiBadge], span[euiBadge], eui-badge', template: '<ng-content></ng-content>', changeDetection: ChangeDetectionStrategy.OnPush, encapsulation: ViewEncapsulation.None, styles: [".eui-badge{align-items:center;background-color:var(--eui-base-color-primary-100);border:1px solid rgba(255,255,255,.8);border-radius:var(--eui-base-spacing-2xl);color:var(--eui-base-color-white);display:inline-flex;font-size:var(--eui-base-font-size-s);justify-content:center;height:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs));min-width:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs));padding:0 var(--eui-base-spacing-2xs);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.eui-icon .eui-badge,.eui-icon-svg .eui-badge{position:absolute;right:-30%;top:-10%;transition:all .3s ease}.eui-button .eui-badge{height:inherit;position:relative;transition:all .3s ease}.eui-badge--rounded{border-radius:var(--eui-base-spacing-m)}.eui-badge--primary{background-color:var(--eui-base-color-primary-100);color:var(--eui-base-color-white)}.eui-badge--secondary{background-color:var(--eui-base-color-grey-75);color:var(--eui-base-color-white)}.eui-badge--info{background-color:var(--eui-base-color-info-100);color:var(--eui-base-color-white)}.eui-badge--success{background-color:var(--eui-base-color-success-100);color:var(--eui-base-color-white)}.eui-badge--warning{background-color:var(--eui-base-color-warning-100);color:var(--eui-base-color-black)}.eui-badge--danger{background-color:var(--eui-base-color-danger-100);color:var(--eui-base-color-white)}.eui-badge--accent{background-color:var(--eui-base-color-accent-100);color:var(--eui-base-color-black)}.eui-badge--outline.eui-badge--primary{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-primary-100);color:var(--eui-base-color-primary-100)}.eui-badge--outline.eui-badge--secondary{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-grey-100);color:var(--eui-base-color-grey-100)}.eui-badge--outline.eui-badge--info{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-info-100);color:var(--eui-base-color-info-100)}.eui-badge--outline.eui-badge--success{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-success-100);color:var(--eui-base-color-success-100)}.eui-badge--outline.eui-badge--warning{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-warning-100);color:var(--eui-base-color-warning-140)}.eui-badge--outline.eui-badge--danger{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-danger-100);color:var(--eui-base-color-danger-100)}.eui-badge--outline.eui-badge--accent{background-color:var(--eui-base-color-white);border:1px solid var(--eui-base-color-accent-100);color:var(--eui-base-color-grey-100)}.eui-badge--size-s{font-size:var(--eui-base-font-size-xs);height:var(--eui-base-spacing-m);min-width:var(--eui-base-spacing-m)}.eui-badge--size-m{font-size:var(--eui-base-font-size-s);height:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs));min-width:calc(var(--eui-base-spacing-m) + var(--eui-base-spacing-2xs))}.eui-badge--size-l{font-size:var(--eui-base-font-size-l);height:var(--eui-base-spacing-l);min-width:var(--eui-base-spacing-l);padding:0 var(--eui-base-spacing-2xs)}.eui-badge--size-xl{font-size:var(--eui-base-font-size-xl);height:var(--eui-base-spacing-xl);min-width:var(--eui-base-spacing-xl);padding:0 var(--eui-base-spacing-xs)}.eui-badge--size-2xl{font-size:var(--eui-base-font-size-2xl);height:var(--eui-base-spacing-2xl);min-width:var(--eui-base-spacing-2xl);padding:0 var(--eui-base-spacing-s)}.eui-icon--size-s .eui-badge{right:-50%;top:-30%}.eui-icon--size-s .eui-badge--size-s{right:-25%;top:-25%}.eui-icon--size-s .eui-badge--size-m{right:-40%;top:-35%}.eui-icon--size-s .eui-badge--size-l,.eui-icon--size-s .eui-badge--size-xl{right:0%;top:0%}.eui-icon--size-m .eui-badge,.eui-icon--size-m .eui-badge--size-s{right:-20%;top:-10%}.eui-icon--size-m .eui-badge--size-m{right:-35%;top:-20%}.eui-icon--size-m .eui-badge--size-l,.eui-icon--size-m .eui-badge--size-xl,.eui-icon--size-l .eui-badge,.eui-icon--size-l .eui-badge--size-s{right:0%;top:0%}.eui-icon--size-l .eui-badge--size-m{right:-15%;top:-10%}.eui-icon--size-l .eui-badge--size-l{right:-25%;top:-15%}.eui-icon--size-l .eui-badge--size-xl{right:-50%;top:-35%}.eui-icon--size-xl .eui-badge{right:5%;top:10%}.eui-icon--size-xl .eui-badge--size-s{right:10%;top:5%}.eui-icon--size-xl .eui-badge--size-m{right:0%;top:0%}.eui-icon--size-xl .eui-badge--size-l{right:-10%;top:-5%}.eui-icon--size-xl .eui-badge--size-xl{right:-30%;top:-15%}.eui-icon--size-2xl .eui-badge{right:10%;top:10%}.eui-icon--size-2xl .eui-badge--size-s{right:15%;top:5%}.eui-icon--size-2xl .eui-badge--size-m{right:5%;top:0%}.eui-icon--size-2xl .eui-badge--size-l{right:0%;top:0%}.eui-icon--size-2xl .eui-badge--size-xl{right:-20%;top:-5%}.eui-icon--size-2xl .eui-badge--size-2xl{right:-40%;top:-15%}\n"] }]
30
30
  }], ctorParameters: function () { return []; }, propDecorators: { cssClasses: [{
31
31
  type: HostBinding,
32
32
  args: ['class']
@@ -1 +1 @@
1
- {"version":3,"file":"eui-components-eui-badge.mjs","sources":["../../eui-badge/eui-badge.component.ts","../../eui-badge/eui-components-eui-badge.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { NgModule, Component, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\nimport { BaseDirective } from '@eui/components/shared';\n\n@Component({\n selector: 'div[euiBadge], span[euiBadge], eui-badge',\n template: '<ng-content></ng-content>',\n styleUrls: ['./styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class EuiBadgeComponent extends BaseDirective {\n @HostBinding('class')\n public get cssClasses(): any {\n return this.getCssClasses();\n }\n @HostBinding('attr.role') role = 'status';\n @HostBinding('attr.aria-label')\n @Input('aria-label')\n public get ariaLabel(): string {\n return this._ariaLabel;\n }\n public set ariaLabel(value: string | null) {\n this._ariaLabel = value;\n }\n\n protected _ariaLabel = 'eUI Badge';\n\n constructor() {\n super();\n }\n\n getCssClasses() {\n return [super.getCssClasses('eui-badge')].join(' ').trim();\n }\n}\n\n@NgModule({\n imports: [CommonModule],\n exports: [EuiBadgeComponent],\n declarations: [EuiBadgeComponent],\n})\nexport class EuiBadgeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAWM,MAAO,iBAAkB,SAAQ,aAAa,CAAA;AAiBhD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AAbc,QAAA,IAAI,CAAA,IAAA,GAAG,QAAQ,CAAC;AAUhC,QAAA,IAAU,CAAA,UAAA,GAAG,WAAW,CAAC;KAIlC;AAlBD,IAAA,IACW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;KAC/B;AAED,IAAA,IAEW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAW,SAAS,CAAC,KAAoB,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;IAQD,aAAa,GAAA;AACT,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;KAC9D;;iIAvBQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,mBAAA,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,gRALhB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,+jHAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAK5B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACI,0CAA0C,EAAA,QAAA,EAC1C,2BAA2B,EAEpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,+jHAAA,CAAA,EAAA,CAAA;0EAI1B,UAAU,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO,CAAA;gBAIM,IAAI,EAAA,CAAA;sBAA7B,WAAW;uBAAC,WAAW,CAAA;gBAGb,SAAS,EAAA,CAAA;sBAFnB,WAAW;uBAAC,iBAAiB,CAAA;;sBAC7B,KAAK;uBAAC,YAAY,CAAA;;MAwBV,cAAc,CAAA;;8HAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,mBAAA,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EA/Bd,YAAA,EAAA,CAAA,iBAAiB,CA2BhB,EAAA,OAAA,EAAA,CAAA,YAAY,aA3Bb,iBAAiB,CAAA,EAAA,CAAA,CAAA;AA+BjB,mBAAA,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAJb,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIb,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,iBAAiB,CAAC;oBAC5B,YAAY,EAAE,CAAC,iBAAiB,CAAC;iBACpC,CAAA;;;ACzCD;;AAEG;;;;"}
1
+ {"version":3,"file":"eui-components-eui-badge.mjs","sources":["../../eui-badge/eui-badge.component.ts","../../eui-badge/eui-components-eui-badge.ts"],"sourcesContent":["import { CommonModule } from '@angular/common';\nimport { NgModule, Component, HostBinding, ChangeDetectionStrategy, ViewEncapsulation, Input } from '@angular/core';\nimport { BaseDirective } from '@eui/components/shared';\n\n@Component({\n selector: 'div[euiBadge], span[euiBadge], eui-badge',\n template: '<ng-content></ng-content>',\n styleUrls: ['./styles/_index.scss'],\n changeDetection: ChangeDetectionStrategy.OnPush,\n encapsulation: ViewEncapsulation.None,\n})\nexport class EuiBadgeComponent extends BaseDirective {\n @HostBinding('class')\n public get cssClasses(): any {\n return this.getCssClasses();\n }\n @HostBinding('attr.role') role = 'status';\n @HostBinding('attr.aria-label')\n @Input('aria-label')\n public get ariaLabel(): string {\n return this._ariaLabel;\n }\n public set ariaLabel(value: string | null) {\n this._ariaLabel = value;\n }\n\n protected _ariaLabel = 'eUI Badge';\n\n constructor() {\n super();\n }\n\n getCssClasses() {\n return [super.getCssClasses('eui-badge')].join(' ').trim();\n }\n}\n\n@NgModule({\n imports: [CommonModule],\n exports: [EuiBadgeComponent],\n declarations: [EuiBadgeComponent],\n})\nexport class EuiBadgeModule {}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":[],"mappings":";;;;;AAWM,MAAO,iBAAkB,SAAQ,aAAa,CAAA;AAiBhD,IAAA,WAAA,GAAA;AACI,QAAA,KAAK,EAAE,CAAC;AAbc,QAAA,IAAI,CAAA,IAAA,GAAG,QAAQ,CAAC;AAUhC,QAAA,IAAU,CAAA,UAAA,GAAG,WAAW,CAAC;KAIlC;AAlBD,IAAA,IACW,UAAU,GAAA;AACjB,QAAA,OAAO,IAAI,CAAC,aAAa,EAAE,CAAC;KAC/B;AAED,IAAA,IAEW,SAAS,GAAA;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;KAC1B;IACD,IAAW,SAAS,CAAC,KAAoB,EAAA;AACrC,QAAA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;KAC3B;IAQD,aAAa,GAAA;AACT,QAAA,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;KAC9D;;iIAvBQ,iBAAiB,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,SAAA,EAAA,CAAA,CAAA;AAAjB,mBAAA,iBAAA,CAAA,IAAA,GAAA,EAAA,CAAA,oBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,IAAA,EAAA,iBAAiB,gRALhB,2BAA2B,EAAA,QAAA,EAAA,IAAA,EAAA,MAAA,EAAA,CAAA,mvJAAA,CAAA,EAAA,eAAA,EAAA,EAAA,CAAA,uBAAA,CAAA,MAAA,EAAA,aAAA,EAAA,EAAA,CAAA,iBAAA,CAAA,IAAA,EAAA,CAAA,CAAA;2FAK5B,iBAAiB,EAAA,UAAA,EAAA,CAAA;kBAP7B,SAAS;+BACI,0CAA0C,EAAA,QAAA,EAC1C,2BAA2B,EAEpB,eAAA,EAAA,uBAAuB,CAAC,MAAM,EAAA,aAAA,EAChC,iBAAiB,CAAC,IAAI,EAAA,MAAA,EAAA,CAAA,mvJAAA,CAAA,EAAA,CAAA;0EAI1B,UAAU,EAAA,CAAA;sBADpB,WAAW;uBAAC,OAAO,CAAA;gBAIM,IAAI,EAAA,CAAA;sBAA7B,WAAW;uBAAC,WAAW,CAAA;gBAGb,SAAS,EAAA,CAAA;sBAFnB,WAAW;uBAAC,iBAAiB,CAAA;;sBAC7B,KAAK;uBAAC,YAAY,CAAA;;MAwBV,cAAc,CAAA;;8HAAd,cAAc,EAAA,IAAA,EAAA,EAAA,EAAA,MAAA,EAAA,EAAA,CAAA,eAAA,CAAA,QAAA,EAAA,CAAA,CAAA;AAAd,mBAAA,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,EA/Bd,YAAA,EAAA,CAAA,iBAAiB,CA2BhB,EAAA,OAAA,EAAA,CAAA,YAAY,aA3Bb,iBAAiB,CAAA,EAAA,CAAA,CAAA;AA+BjB,mBAAA,cAAA,CAAA,IAAA,GAAA,EAAA,CAAA,mBAAA,CAAA,EAAA,UAAA,EAAA,QAAA,EAAA,OAAA,EAAA,QAAA,EAAA,QAAA,EAAA,EAAA,EAAA,IAAA,EAAA,cAAc,YAJb,YAAY,CAAA,EAAA,CAAA,CAAA;2FAIb,cAAc,EAAA,UAAA,EAAA,CAAA;kBAL1B,QAAQ;AAAC,YAAA,IAAA,EAAA,CAAA;oBACN,OAAO,EAAE,CAAC,YAAY,CAAC;oBACvB,OAAO,EAAE,CAAC,iBAAiB,CAAC;oBAC5B,YAAY,EAAE,CAAC,iBAAiB,CAAC;iBACpC,CAAA;;;ACzCD;;AAEG;;;;"}
@@ -310,8 +310,9 @@ class EuiTableComponent extends BaseDirective {
310
310
  stickyFeatureHandler() {
311
311
  const timeout = this.stickyFeatureHandlerIndex === 0 ? 250 : 0;
312
312
  setTimeout(() => {
313
+ var _a;
313
314
  const trItems = Array.from(this.tbodyRef.nativeElement.querySelectorAll('tr'));
314
- const containerWidth = this.elementRef.nativeElement.parentElement.clientWidth;
315
+ const containerWidth = ((_a = this.elementRef.nativeElement) === null || _a === void 0 ? void 0 : _a.parentElement.clientWidth) || 0;
315
316
  if (this.theadRef) {
316
317
  const thItems = Array.from(this.theadRef.nativeElement.querySelectorAll('.eui-table__col--sticky'));
317
318
  // Reset left & right position