keevo-components 1.8.476 → 1.8.477
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.
|
@@ -227,12 +227,13 @@ export class KvTreetableComponent {
|
|
|
227
227
|
this.inputBusca.nativeElement.value = '';
|
|
228
228
|
}
|
|
229
229
|
setMaxHeightTreeTable() {
|
|
230
|
-
if (this.kvTreeTable()?.nativeElement.offsetHeight) {
|
|
230
|
+
if (this.kvTreeTable()?.nativeElement.offsetHeight && this.dataSource.length > 0) {
|
|
231
231
|
const height = this.kvTreeTable()?.nativeElement.offsetHeight;
|
|
232
232
|
const element = this.elementRef.nativeElement.querySelector('.kv-treetable-container');
|
|
233
233
|
if (element)
|
|
234
234
|
element.style.maxHeight = `${height}px`;
|
|
235
235
|
console.log(height, 'height');
|
|
236
|
+
console.log(this.dataSource, 'dataSource');
|
|
236
237
|
}
|
|
237
238
|
}
|
|
238
239
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreetableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
@@ -313,4 +314,4 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.8", ngImpor
|
|
|
313
314
|
type: HostListener,
|
|
314
315
|
args: ['window:resize', ['$event']]
|
|
315
316
|
}] } });
|
|
316
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdHJlZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi10cmVlLXRhYmxlL2t2LXRyZWUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdHJlZS10YWJsZS9rdi10cmVlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBRUwsWUFBWSxFQUNaLGFBQWEsR0FDZCxNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBR3JGLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFRdEUsTUFBTSxPQUFPLG9CQUFvQjtJQXdCL0IsWUFDVSxVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBeEJoQyxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBRWxCLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUl0QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsU0FBSSxHQUFHLEVBQUUsQ0FB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QXpCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxjQUFjO3NCQUF0QixLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csWUFBWTtzQkFBcEIsS0FBSztnQkFFRyxXQUFXO3NCQUFuQixLQUFLO2dCQWVHLGdCQUFnQjtzQkFBeEIsS0FBSztnQkFJRyxTQUFTO3NCQUFqQixLQUFLO2dCQUlHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFFSSxRQUFRO3NCQUFqQixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csZ0JBQWdCO3NCQUF6QixNQUFNO2dCQUNHLFlBQVk7c0JBQXJCLE1BQU07Z0JBQ0csY0FBYztzQkFBdkIsTUFBTTtnQkFDRyxVQUFVO3NCQUFuQixNQUFNO2dCQVc2QixTQUFTO3NCQUE1QyxlQUFlO3VCQUFDLGlCQUFpQjtnQkFDZCxVQUFVO3NCQUE3QixLQUFLO3VCQUFDLFdBQVc7Z0JBRUksVUFBVTtzQkFBL0IsU0FBUzt1QkFBQyxTQUFTO2dCQUNLLFVBQVU7c0JBQWxDLFNBQVM7dUJBQUMsWUFBWTtnQkFLdkIsY0FBYztzQkFEYixZQUFZO3VCQUFDLGVBQWUsRUFBRSxDQUFDLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XHJcbiAgQ29tcG9uZW50LFxyXG4gIENvbnRlbnRDaGlsZHJlbixcclxuICBFbGVtZW50UmVmLFxyXG4gIEV2ZW50RW1pdHRlcixcclxuICBIb3N0TGlzdGVuZXIsXHJcbiAgSW5wdXQsXHJcbiAgT3V0cHV0LFxyXG4gIFF1ZXJ5TGlzdCxcclxuICBUZW1wbGF0ZVJlZixcclxuICBWaWV3Q2hpbGQsXHJcbiAgY29tcHV0ZWQsXHJcbiAgZWZmZWN0LFxyXG4gIG1vZGVsLFxyXG4gIHNpZ25hbCxcclxuICB2aWV3Q2hpbGQsXHJcbn0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE1lbnVJdGVtLCBUcmVlTm9kZSB9IGZyb20gJ3ByaW1lbmcvYXBpJztcclxuaW1wb3J0IHsgVHJlZVRhYmxlIH0gZnJvbSAncHJpbWVuZy90cmVldGFibGUnO1xyXG5pbXBvcnQge1xyXG4gIFZhbHVlT3JGbixcclxuICBnZXRPckV4ZWN1dGUsXHJcbiAgbWFwVG9NZW51SXRlbSxcclxufSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS9rdi1tZW51aXRlbSc7XHJcbmltcG9ydCB7IFRhYmxlUGFnaW5hdGUgfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5wYWdpbmF0ZSc7XHJcbmltcG9ydCB7IFRlbXBsYXRlRGlyZWN0aXZlIH0gZnJvbSAnLi4vLi4vYXBpL2RpcmVjdGl2ZXMvdGVtcGxhdGUvdGVtcGxhdGUuZGlyZWN0aXZlJztcclxuaW1wb3J0IHsgVHJlZVRhYmxlQ29uZmlnIH0gZnJvbSAnLi4vLi4vYXBpL2NvbXBvbmVudHMvdHJlZS10YWJsZS90cmVlLXRhYmxlLmNvbmZpZyc7XHJcbmltcG9ydCB7IFRyZWVUYWJsZUtleXMgfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90cmVlLXRhYmxlL3RyZWUtdGFibGUta2V5cyc7XHJcbmltcG9ydCB7IENka0RyYWdEcm9wLCBtb3ZlSXRlbUluQXJyYXkgfSBmcm9tICdAYW5ndWxhci9jZGsvZHJhZy1kcm9wJztcclxuaW1wb3J0IHsgVGFibGVDb25maWdDb2x1bW4gfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90YWJsZS90YWJsZS5jb25maWcuY29sdW1uJztcclxuXHJcbkBDb21wb25lbnQoe1xyXG4gIHNlbGVjdG9yOiAna3YtdHJlZS10YWJsZScsXHJcbiAgdGVtcGxhdGVVcmw6ICcuL2t2LXRyZWUtdGFibGUuY29tcG9uZW50Lmh0bWwnLFxyXG4gIHN0eWxlVXJsczogWycuL2t2LXRyZWUtdGFibGUuY29tcG9uZW50LnNjc3MnXSxcclxufSlcclxuZXhwb3J0IGNsYXNzIEt2VHJlZXRhYmxlQ29tcG9uZW50IHtcclxuICBtZW51SXRlbXM6IE1lbnVJdGVtW10gPSBbXTtcclxuICB0YW1hbmhvVGVsYSE6IG51bWJlcjtcclxuICBASW5wdXQoKSBkaXNhYmxlUm93Tm9kZVN0aWNreTogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICBASW5wdXQoKSBjb25maWchOiBUcmVlVGFibGVDb25maWc7XHJcbiAgQElucHV0KCkgZGF0YVNvdXJjZSE6IGFueTtcclxuICBASW5wdXQoKSBncmlkTGluZXM6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSB0YWJsZUNhcHRhbGl6ZWQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICBASW5wdXQoKSBzZWxlY3RlZEl0ZW1zOiBhbnkgPSBbXTtcclxuICBASW5wdXQoKSBwYWdpbmF0b3IgPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHJvd3MgPSAxMDtcclxuICBASW5wdXQoKSB0cmVlVGFibGVEcmFnZ2FibGUgPSBmYWxzZTtcclxuICBASW5wdXQoKSB0cmFuc2ZlckFycmF5SXRlbSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIG9yZGVuYWNhbyE6IHN0cmluZztcclxuICBASW5wdXQoKSB0b3RhbFJlY29yZHMhOiBudW1iZXI7XHJcbiAgQElucHV0KCkgdGV4dG9FbXB0eU1lc3NhZ2U6IHN0cmluZyA9ICdOZW5odW0gcmVnaXN0cm8gZW5jb250cmFkbyc7XHJcbiAgQElucHV0KCkgY2hpbGRyZW5SZWNvaWw6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNob3dIZWFkZXI6IGJvb2xlYW4gPSB0cnVlO1xyXG4gIEBJbnB1dCgpIHNjcm9sbEhlaWdodDogc3RyaW5nID0gJyc7XHJcblxyXG4gIEBJbnB1dCgpIGluZEZ1bGxQYWdlOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG5cclxuICBjb25zdHJ1Y3RvcihcclxuICAgIHByaXZhdGUgZWxlbWVudFJlZjogRWxlbWVudFJlZlxyXG4gICkge1xyXG5cclxuICAgIGVmZmVjdCgoKSA9PiB7XHJcbiAgICAgIGlmICh0aGlzLmluZEZ1bGxQYWdlKSB0aGlzLnNldE1heEhlaWdodFRyZWVUYWJsZSgpO1xyXG4gICAgfSk7XHJcbiAgfVxyXG5cclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBPIHZhbG9yIGRlIHBhZ2VMaW5rcyDDqSBhdHJpYnXDrWRvIGRlIGFjb3JkbyBjb20gbyB0YW1hbmhvIGRhIHRlbGEsIGVzc2EgcHJvcHJpZWRhZGUgbsOjbyBlc3TDoSBzZW5kbyB1dGlsaXphZGFcclxuICAgKi9cclxuICBASW5wdXQoKSBwYWdlTGlua3NPcHRpb25zITogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIE8gdmFsb3IgZGUgcGFnZUxpbmtzIMOpIGF0cmlidcOtZG8gZGUgYWNvcmRvIGNvbSBvIHRhbWFuaG8gZGEgdGVsYSwgZXNzYSBwcm9wcmllZGFkZSBuw6NvIGVzdMOhIHNlbmRvIHV0aWxpemFkYVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VMaW5rcyE6IG51bWJlcjtcclxuICAvKipcclxuICAgKiBAZGVwcmVjYXRlZCBBIHF1YW50aWRhZGUgZGUgcGFnaW5pdG9yUGFnZUljb25zIMOpIGF0cmlidcOtZG8gZGUgYWNvcmRvIGNvbSBvIHRhbWFuaG8gZGEgdGVsYSwgZXNzYSBwcm9wcmllZGFkZSBuw6NvIGVzdMOhIHNlbmRvIHV0aWxpemFkYVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHNob3dGaXJzdExhc3RJY29uITogYm9vbGVhbjtcclxuXHJcbiAgQE91dHB1dCgpIG9uRmlsdGVyOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25QYWdpbmF0ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQWN0aXZlSXRlbTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uQWN0aXZlSXRlbUxvdGU6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBkb3VibGVDbGlja0V2ZW50OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Ob2RlU2VsZWN0OiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25Ob2RlVW5zZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbkRyb3BJdGVtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXI8YW55PigpO1xyXG5cclxuICBwdWJsaWMgcmVhZG9ubHkgc2VsZWN0aW9uS2V5cyA9IG1vZGVsPFRyZWVUYWJsZUtleXMgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XHJcblxyXG4gIG5nT25Jbml0KCkge1xyXG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gICAgaWYgKHRoaXMub3JkZW5hY2FvKSB7XHJcbiAgICAgIHRoaXMuZGF0YVNvdXJjZSA9IHRoaXMuc29ydFRyZWVOb2Rlcyh0aGlzLmRhdGFTb3VyY2UpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgQENvbnRlbnRDaGlsZHJlbihUZW1wbGF0ZURpcmVjdGl2ZSkgdGVtcGxhdGVzITogUXVlcnlMaXN0PGFueT47XHJcbiAgQElucHV0KCd0ZW1wbGF0ZXMnKSBfdGVtcGxhdGVzITogYW55O1xyXG5cclxuICBAVmlld0NoaWxkKFRyZWVUYWJsZSkgcFRyZWVUYWJsZSE6IFRyZWVUYWJsZTtcclxuICBAVmlld0NoaWxkKCdpbnB1dEJ1c2NhJykgaW5wdXRCdXNjYSE6IEVsZW1lbnRSZWY7XHJcblxyXG4gIGt2VHJlZVRhYmxlID0gdmlld0NoaWxkPEVsZW1lbnRSZWY+KCdrdlRyZWVUYWJsZScpO1xyXG5cclxuICBASG9zdExpc3RlbmVyKCd3aW5kb3c6cmVzaXplJywgWyckZXZlbnQnXSlcclxuICBvbldpbmRvd1Jlc2l6ZSgpIHtcclxuICAgIHRoaXMudGFtYW5ob1RlbGEgPSB3aW5kb3cuaW5uZXJXaWR0aDtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhY3RpdmVJdGVtKHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy5vbkFjdGl2ZUl0ZW0uZW1pdChyb3dEYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBhY3RpdmVJdGVtTG90ZShyb3dEYXRhOiBhbnkpIHtcclxuICAgIHRoaXMub25BY3RpdmVJdGVtTG90ZS5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgZ2V0T3JFeGVjdXRlPFQ+KGFjdGlvbjogVmFsdWVPckZuPFQ+LCBkYXRhOiBhbnkpOiBUIHtcclxuICAgIHJldHVybiBnZXRPckV4ZWN1dGUoYWN0aW9uLCBkYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBvbkdsb2JhbEZpbHRlcih0YWJsZTogVHJlZVRhYmxlLCBldmVudDogRXZlbnQpIHtcclxuICAgIHRoaXMub25GaWx0ZXIuZW1pdCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlKTtcclxuICAgIHRhYmxlLmZpbHRlckdsb2JhbCgoZXZlbnQudGFyZ2V0IGFzIEhUTUxJbnB1dEVsZW1lbnQpLnZhbHVlLCAnY29udGFpbnMnKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBwYWdpbmF0ZSgkZXZlbnQ6IGFueSkge1xyXG4gICAgaWYgKCRldmVudCkge1xyXG4gICAgICBsZXQgcGFnaW5hSW5pY2lhbCA9XHJcbiAgICAgICAgKCRldmVudD8uZmlyc3QgPiAwID8gJGV2ZW50LmZpcnN0IC8gJGV2ZW50LnJvd3MgOiAkZXZlbnQuZmlyc3QpICsgMTtcclxuICAgICAgbGV0IHRlcm1vUGVzcXVpc2EgPSAnJztcclxuICAgICAgbGV0IG9yZGVuYWNhbyA9ICcnO1xyXG5cclxuICAgICAgaWYgKCRldmVudC5nbG9iYWxGaWx0ZXIpIHRlcm1vUGVzcXVpc2EgPSAkZXZlbnQuZ2xvYmFsRmlsdGVyO1xyXG5cclxuICAgICAgaWYgKCRldmVudC5zb3J0RmllbGQpXHJcbiAgICAgICAgb3JkZW5hY2FvID0gYCR7JGV2ZW50LnNvcnRGaWVsZH0gJHskZXZlbnQuc29ydE9yZGVyID09PSAxID8gJ0FTQycgOiAnREVTQydcclxuICAgICAgICAgIH1gO1xyXG5cclxuICAgICAgY29uc3Qgb2JqZXRvOiBUYWJsZVBhZ2luYXRlID0ge1xyXG4gICAgICAgIHBhZ2luYUluaWNpYWw6IHBhZ2luYUluaWNpYWwsXHJcbiAgICAgICAgdGFtYW5ob1BhZ2luYTogJGV2ZW50LnJvd3MsXHJcbiAgICAgICAgdGVybW9QZXNxdWlzYTogdGVybW9QZXNxdWlzYSxcclxuICAgICAgICBvcmRlbmFjYW86IG9yZGVuYWNhbyxcclxuICAgICAgfTtcclxuXHJcbiAgICAgIHRoaXMub25QYWdpbmF0ZS5lbWl0KG9iamV0byk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBkcm9wKGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+KSB7XHJcbiAgICBjb25zdCBkcmFnZ2VkTm9kZSA9IGV2ZW50Lml0ZW0uZGF0YTtcclxuICAgIGNvbnN0IGRyYWdnZWRDaGlsZERhdGEgPSBkcmFnZ2VkTm9kZS5ub2RlLmRhdGE7XHJcblxyXG4gICAgaWYgKGRyYWdnZWROb2RlLmxldmVsID09PSAwKSB7XHJcbiAgICAgIG1vdmVJdGVtSW5BcnJheSh0aGlzLmRhdGFTb3VyY2UsIGV2ZW50LnByZXZpb3VzSW5kZXgsIGV2ZW50LmN1cnJlbnRJbmRleCk7XHJcbiAgICB9IGVsc2UgaWYgKGRyYWdnZWROb2RlLmxldmVsID49IDEpIHtcclxuICAgICAgY29uc3QgcGFyZW50Tm9kZSA9IGRyYWdnZWROb2RlLm5vZGUucGFyZW50O1xyXG5cclxuICAgICAgaWYgKHBhcmVudE5vZGUpIHtcclxuICAgICAgICBjb25zdCBwYXJlbnRDaGlsZHJlbiA9IHBhcmVudE5vZGUuY2hpbGRyZW4ubWFwKFxyXG4gICAgICAgICAgKGNoaWxkOiBhbnkpID0+IGNoaWxkLmRhdGFcclxuICAgICAgICApO1xyXG4gICAgICAgIGNvbnN0IHByZXZpb3VzQ2hpbGRJbmRleCA9IHBhcmVudENoaWxkcmVuLmluZGV4T2YoZHJhZ2dlZENoaWxkRGF0YSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHJlbGF0aXZlQ3VycmVudEluZGV4ID1cclxuICAgICAgICAgIHByZXZpb3VzQ2hpbGRJbmRleCArIChldmVudC5jdXJyZW50SW5kZXggLSBldmVudC5wcmV2aW91c0luZGV4KTtcclxuXHJcbiAgICAgICAgY29uc3QgdGFyZ2V0Q2hpbGRJbmRleCA9IE1hdGgubWF4KFxyXG4gICAgICAgICAgMCxcclxuICAgICAgICAgIE1hdGgubWluKHBhcmVudENoaWxkcmVuLmxlbmd0aCAtIDEsIHJlbGF0aXZlQ3VycmVudEluZGV4KVxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGlmIChwcmV2aW91c0NoaWxkSW5kZXggIT09IC0xICYmIHRhcmdldENoaWxkSW5kZXggIT09IC0xKSB7XHJcbiAgICAgICAgICBtb3ZlSXRlbUluQXJyYXkoXHJcbiAgICAgICAgICAgIHBhcmVudE5vZGUuY2hpbGRyZW4sXHJcbiAgICAgICAgICAgIHByZXZpb3VzQ2hpbGRJbmRleCxcclxuICAgICAgICAgICAgdGFyZ2V0Q2hpbGRJbmRleFxyXG4gICAgICAgICAgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgZHJvcEluZm86IGFueSA9IHtcclxuICAgICAgICAgIHByZXZpb3VzQ2hpbGRJbmRleDogcHJldmlvdXNDaGlsZEluZGV4ICsgMSxcclxuICAgICAgICAgIHRhcmdldENoaWxkSW5kZXg6IHRhcmdldENoaWxkSW5kZXggKyAxLFxyXG4gICAgICAgIH07XHJcblxyXG4gICAgICAgIHRoaXMub25Ecm9wSXRlbS5lbWl0KHsgZXZlbnQ6IGV2ZW50LCBkcm9wQ2hpbGRJbmZvOiBkcm9wSW5mbyB9KTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHRoaXMuZGF0YVNvdXJjZSA9IFsuLi50aGlzLmRhdGFTb3VyY2VdO1xyXG4gICAgaWYgKGRyYWdnZWROb2RlLmxldmVsID09PSAwKSB7XHJcbiAgICAgIHRoaXMub25Ecm9wSXRlbS5lbWl0KGV2ZW50KTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIHNvcnRUcmVlTm9kZXMobm9kZXM6IFRyZWVOb2RlW10pOiBUcmVlTm9kZVtdIHtcclxuICAgIHJldHVybiBub2Rlc1xyXG4gICAgICAuc29ydCgoYSwgYikgPT4gYS5kYXRhW3RoaXMub3JkZW5hY2FvXSAtIGIuZGF0YVt0aGlzLm9yZGVuYWNhb10pXHJcbiAgICAgIC5tYXAoKG5vZGUpID0+IHtcclxuICAgICAgICBpZiAobm9kZS5jaGlsZHJlbikge1xyXG4gICAgICAgICAgbm9kZS5jaGlsZHJlbiA9IHRoaXMuc29ydFRyZWVOb2Rlcyhub2RlLmNoaWxkcmVuKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5vZGU7XHJcbiAgICAgIH0pO1xyXG4gIH1cclxuXHJcbiAgLy8gY2FsY3VsYXRlVGFyZ2V0Q2hpbGRJbmRleChcclxuICAvLyAgIGV2ZW50OiBDZGtEcmFnRHJvcDxhbnk+LFxyXG4gIC8vICAgcGFyZW50Q2hpbGRyZW46IGFueVtdLFxyXG4gIC8vICAgcHJldmlvdXNDaGlsZEluZGV4OiBudW1iZXJcclxuICAvLyApOiBudW1iZXIge1xyXG4gIC8vICAgY29uc3QgdGFyZ2V0Q2hpbGRJbmRleCA9XHJcbiAgLy8gICAgIHByZXZpb3VzQ2hpbGRJbmRleCArIChldmVudC5jdXJyZW50SW5kZXggLSBldmVudC5wcmV2aW91c0luZGV4KTtcclxuXHJcbiAgLy8gICBpZiAodGFyZ2V0Q2hpbGRJbmRleCA8IDApIHtcclxuICAvLyAgICAgcmV0dXJuIDA7XHJcbiAgLy8gICB9IGVsc2UgaWYgKHRhcmdldENoaWxkSW5kZXggPj0gcGFyZW50Q2hpbGRyZW4ubGVuZ3RoKSB7XHJcbiAgLy8gICAgIHJldHVybiBwYXJlbnRDaGlsZHJlbi5sZW5ndGggLSAxO1xyXG4gIC8vICAgfSBlbHNlIHtcclxuICAvLyAgICAgcmV0dXJuIHRhcmdldENoaWxkSW5kZXg7XHJcbiAgLy8gICB9XHJcbiAgLy8gfVxyXG5cclxuICBkb3VibGVDbGljayhlOiBhbnksIHJvd0RhdGE6IGFueSkge1xyXG4gICAgbGV0IGV2ZW50RG91YmxlQ2xpY2sgPSB7IGV2ZW50OiBlLCByb3dEYXRhOiByb3dEYXRhIH07XHJcblxyXG4gICAgbGV0IGFycmF5OiBzdHJpbmdbXSA9IFtdO1xyXG4gICAgZS50YXJnZXQuY2xhc3NMaXN0LmZvckVhY2goKHg6IGFueSkgPT4gYXJyYXkucHVzaCh4KSk7XHJcblxyXG4gICAgdGhpcy5kb3VibGVDbGlja0V2ZW50LmVtaXQoZXZlbnREb3VibGVDbGljayk7XHJcbiAgfVxyXG5cclxuICBvbk5vZGVTZWxlY3RlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uTm9kZVNlbGVjdC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIG9uTm9kZVVuc2VsZWN0ZWQoZXZlbnQ6IGFueSkge1xyXG4gICAgdGhpcy5vbk5vZGVVbnNlbGVjdC5lbWl0KGV2ZW50KTtcclxuICB9XHJcblxyXG4gIGdldEN1c3RvbVRlbXBsYXRlKHRlbXBsYXRlbmFtZTogc3RyaW5nKTogVGVtcGxhdGVSZWY8YW55PiB7XHJcbiAgICByZXR1cm4gdGhpcy5fdGVtcGxhdGVzW3RlbXBsYXRlbmFtZV07XHJcbiAgfVxyXG5cclxuICBnZXRJY29uKGljb246IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gaWNvbi5pbmNsdWRlcygncGktJykgPyBgcGkgJHtpY29ufWAgOiAnJztcclxuICB9XHJcblxyXG4gIGFsaWduKGNvbDogVGFibGVDb25maWdDb2x1bW4pOiBzdHJpbmcge1xyXG4gICAgaWYgKGNvbC5jZW50cmFsaXplKSByZXR1cm4gJ2p1c3RpZnktY29udGVudC1jZW50ZXInO1xyXG4gICAgZWxzZSBpZiAoY29sLmFsaWduID09ICdyaWdodCcpIHJldHVybiAnanVzdGlmeS1jb250ZW50LWVuZCc7XHJcbiAgICBlbHNlIHJldHVybiAnJztcclxuICB9XHJcblxyXG4gIHJlc2V0VHJlZVRhYmxlKCkge1xyXG4gICAgaWYgKHRoaXMucFRyZWVUYWJsZSkgdGhpcy5wVHJlZVRhYmxlLnJlc2V0KCk7XHJcbiAgICBpZiAodGhpcy5pbnB1dEJ1c2NhKSB0aGlzLmlucHV0QnVzY2EubmF0aXZlRWxlbWVudC52YWx1ZSA9ICcnO1xyXG4gIH1cclxuXHJcbiAgc2V0TWF4SGVpZ2h0VHJlZVRhYmxlKCkge1xyXG4gICAgaWYgKHRoaXMua3ZUcmVlVGFibGUoKT8ubmF0aXZlRWxlbWVudC5vZmZzZXRIZWlnaHQpIHtcclxuICAgICAgY29uc3QgaGVpZ2h0ID0gdGhpcy5rdlRyZWVUYWJsZSgpPy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodFxyXG4gICAgICBjb25zdCBlbGVtZW50ID0gdGhpcy5lbGVtZW50UmVmLm5hdGl2ZUVsZW1lbnQucXVlcnlTZWxlY3RvcignLmt2LXRyZWV0YWJsZS1jb250YWluZXInKVxyXG4gICAgICBpZiAoZWxlbWVudCkgZWxlbWVudC5zdHlsZS5tYXhIZWlnaHQgPSBgJHtoZWlnaHR9cHhgXHJcblxyXG4gICAgICBjb25zb2xlLmxvZyhoZWlnaHQsICdoZWlnaHQnKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JpYXJNZW51c01vZGFsID0gY29tcHV0ZWQoKCkgPT4gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coZGF0YSwgJ2VudHJlaScpXHJcbiAgICBpZiAodGhpcy5jb25maWcuYWN0aW9ucyAmJiBkYXRhKSB7XHJcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIHRoaXMuY29uZmlnLmFjdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBtZW51SW5zZXJ0ID0gbWFwVG9NZW51SXRlbShhY3Rpb24sIGRhdGEpO1xyXG5cclxuICAgICAgICBsZXQgaXRlbSA9IHRoaXMubWVudUl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgICh4KSA9PiB4LmNvbW1hbmQgPT0gbWVudUluc2VydC5jb21tYW5kXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09IDApIHRoaXMubWVudUl0ZW1zLnB1c2gobWVudUluc2VydCk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5sYWJlbCAhPSBpdGVtWzBdLmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKG1lbnVJbnNlcnQudmlzaWJsZSAhPSBpdGVtWzBdLnZpc2libGUpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5tZW51SXRlbXMuaW5kZXhPZihpdGVtWzBdKTtcclxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5kaXNhYmxlZCAhPSBpdGVtWzBdLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHZhbGlkYXRlQWN0aW9uUG9zaXRpb24gPSBjb21wdXRlZCgoKSA9PiAocm93Tm9kZTogYW55KSA9PiB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuYWN0aW9uc1BhaSAmJiByb3dOb2RlLmxldmVsID09IDApIHJldHVybiBmYWxzZTtcclxuICAgIGVsc2UgcmV0dXJuIHRydWU7XHJcbiAgfSk7XHJcblxyXG4gIGlzU2VsZWN0RW5hYmxlZCA9IGNvbXB1dGVkKCgpID0+IChyb3dEYXRhOiBhbnksIHJvd05vZGU6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnZpc2libGVDaGVja2JveEZ1bmN0aW9uXHJcbiAgICAgID8gdGhpcy5jb25maWcudmlzaWJsZUNoZWNrYm94RnVuY3Rpb24ocm93RGF0YSwgcm93Tm9kZSlcclxuICAgICAgOiB0cnVlXHJcbiAgfSk7XHJcblxyXG4gIGlzRGlzYWJsZWRDaGVja2JveCA9IGNvbXB1dGVkKCgpID0+IChyb3dEYXRhOiBhbnksIHJvd05vZGU6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmRpc2FibGVDb250cm9sQ2hlY2tib3hGdW5jdGlvblxyXG4gICAgICA/IHRoaXMuY29uZmlnLmRpc2FibGVDb250cm9sQ2hlY2tib3hGdW5jdGlvbihyb3dEYXRhLCByb3dOb2RlKVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH0pO1xyXG5cclxuICB2YWxpZGF0ZVNob3dUZW1wbGF0ZSA9IGNvbXB1dGVkKCgpID0+IChyb3dOb2RlOiBhbnksIGNvbDogYW55KSA9PiB7XHJcbiAgICBpZiAoY29sLnRlbXBsYXRlT25seSkge1xyXG4gICAgICBpZiAoY29sLnRlbXBsYXRlT25seSA9PT0gJ3BhaScpIHtcclxuICAgICAgICByZXR1cm4gcm93Tm9kZS5sZXZlbCA9PT0gMDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sLnRlbXBsYXRlT25seSA9PT0gJ2ZpbGhvJykge1xyXG4gICAgICAgIHJldHVybiByb3dOb2RlLmxldmVsID09PSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9KTtcclxuXHJcbiAgZXhpYmlyQ2FtcG8gPSBjb21wdXRlZCgoKSA9PiAoZmllbGQ6IGFueSwgcm93RGF0YTogYW55KSA9PiB7XHJcbiAgICBsZXQgdmlzaWJsZSA9IGZpZWxkLnZpc2libGUgPyBmaWVsZC52aXNpYmxlKHJvd0RhdGEpIDogdHJ1ZTtcclxuICAgIHJldHVybiB2aXNpYmxlO1xyXG4gIH0pO1xyXG59XHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwia3YtdHJlZXRhYmxlLWNvbnRhaW5lclwiICNrdlRyZWVUYWJsZT5cclxuICA8cC10cmVlVGFibGVcclxuICAgICN0dFxyXG4gICAgY2RrRHJvcExpc3RcclxuICAgIGNsYXNzPVwiZXhhbXBsZS1saXN0XCJcclxuICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcclxuICAgIFt2YWx1ZV09XCJkYXRhU291cmNlXCJcclxuICAgIFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCJcclxuICAgIFtyZXNpemFibGVDb2x1bW5zXT1cInRydWVcIlxyXG4gICAgW3RhYmxlU3R5bGVdPVwieyAnbWluLXdpZHRoJzogJzUwcmVtJyB9XCJcclxuICAgIFtyZXNpemFibGVDb2x1bW5zXT1cInRydWVcIlxyXG4gICAgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3JcIlxyXG4gICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cIls1LCAxMCwgMTUsIDI1LCA1MF1cIlxyXG4gICAgW3Nob3dGaXJzdExhc3RJY29uXT1cInRhbWFuaG9UZWxhID4gOTYwID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgIFtwYWdlTGlua3NdPVwidGFtYW5ob1RlbGEgPiA5NjAgPyAyIDogMVwiXHJcbiAgICBbc3R5bGVDbGFzc109XCJncmlkTGluZXMgPyAncC10cmVldGFibGUtZ3JpZGxpbmVzJyA6ICcnXCJcclxuICAgIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZEl0ZW1zXCJcclxuICAgIFtzZWxlY3Rpb25LZXlzXT1cInNlbGVjdGlvbktleXMoKVwiXHJcbiAgICAoc2VsZWN0aW9uS2V5c0NoYW5nZSk9XCJzZWxlY3Rpb25LZXlzLnNldCgkZXZlbnQpXCJcclxuICAgIFtsYXp5XT1cImNvbmZpZy5sYXp5XCJcclxuICAgIChvbkxhenlMb2FkKT1cInBhZ2luYXRlKCRldmVudClcIlxyXG4gICAgKG9uTm9kZVNlbGVjdCk9XCJvbk5vZGVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgIChvbk5vZGVVbnNlbGVjdCk9XCJvbk5vZGVVbnNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcclxuICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IC0ge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9XCJcclxuICAgIFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0XCJcclxuICA+XHJcbiAgICBAaWYoY29uZmlnLmVuYWJsZUNhdGlvbikge1xyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdyaWQgZm9ybWdyaWQgcC1mbHVpZCBjb2wtMTIgbS0wIHAtMVwiXHJcbiAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZWFlYWVhXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgQGlmKGNvbmZpZy50aXRsZSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgZm9udC1ib2xkIG15LTNcIj57eyBjb25maWcudGl0bGUgfX08L2Rpdj5cclxuICAgICAgICAgIH0gQGlmKGNvbmZpZy5zdWJ0aXRsZSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbWItNCBmb250LW1lZGl1bVwiPnt7IGNvbmZpZy5zdWJ0aXRsZSB9fTwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGNvbC0xMCBwLTAgbWQ6Y29sLTYgbGc6Y29sLTQganVzdGlmeS1jb250ZW50LWNlbnRlciB7e1xyXG4gICAgICAgICAgICB0YW1hbmhvVGVsYSA8IDc2OCA/ICcnIDogJ2lucHV0LXNlYXJjaCdcclxuICAgICAgICAgIH19XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBAaWYoY29uZmlnLmVuYWJsZUZpbHRlcikge1xyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnRcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcblxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgcEF1dG9Gb2N1c1xyXG4gICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJvbkdsb2JhbEZpbHRlcih0dCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQZXNxdWlzYXIuLi5cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaC0ycmVtXCJcclxuICAgICAgICAgICAgICAjaW5wdXRCdXNjYVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBjb2wtMSBqdXN0aWZ5LWNvbnRlbnQtZW5kIHAtMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTIgYnRucy1vcHRpb25zXCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc0xvdGU7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICBAaWYoKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBhY3Rpb24uc2hvd0Fjb2VzTG90ZSkgJiZcclxuICAgICAgICAgICAgZXhpYmlyQ2FtcG8oKShhY3Rpb24sIHRoaXMuYWN0aW9uKSkge1xyXG4gICAgICAgICAgICA8a3YtYnV0dG9uXHJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aW9uPy5jb21tYW5kKCk7IGFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvbi50b29sdGlwLCBzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tJ1wiXHJcbiAgICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdldE9yRXhlY3V0ZShhY3Rpb24uZGlzYWJsZWQsIHNlbGVjdGVkSXRlbXMpIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJnZXRPckV4ZWN1dGUoYWN0aW9uLmljb24sIHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwiYWN0aW9uLnNldmVyaXR5IHx8ICd0ZXJ0aWFyeSdcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICB9IH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICB9IEBpZihzaG93SGVhZGVyKXtcclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIEBmb3IoY29sIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCl7XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW3R0U29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCJjb2wuc29ydGFibGUgPT09IGZhbHNlXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBmbGV4OiAkaW5kZXggPT0gMCwgJ2dhcC0zJzogJGluZGV4ID09IDAgfVwiPlxyXG4gICAgICAgICAgICAgIEBpZigkaW5kZXggPT0gMCAmJiBjb25maWcuZW5hYmxlU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlSGVhZGVyQ2hlY2tib3hcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciAge3sgYWxpZ24oY29sKSB9fVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICBAaWYoY29sLnNvcnRhYmxlKSB7XHJcbiAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVTb3J0SWNvbiBbZmllbGRdPVwiY29sLmZpZWxkXCIgY2xhc3M9XCJwYi0xXCIgLz5cclxuICAgICAgICAgICAgICAgIH0gQGlmKGNvbC5oZWFkZXJUb29sdGlwKSB7XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiY29sLmhlYWRlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICBpbmZvXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICBAaWYgKGNvbmZpZy5hY3Rpb25zPy5sZW5ndGggPz8gMCA+IDAgfHwgY29uZmlnLmFjdGlvbnNQYWkpIHtcclxuICAgICAgICA8dGggW3N0eWxlLndpZHRoXT1cIjVcIj48L3RoPlxyXG4gICAgICAgIH0gfVxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW3R0U29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCJjb2wuc29ydGFibGUgPT09IGZhbHNlXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciB7eyBhbGlnbihjb2wpIH19XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14c1wiPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICBAaWYoY29sLnNvcnRhYmxlKSB7XHJcbiAgICAgICAgICAgIDxwLXRyZWVUYWJsZVNvcnRJY29uIFtmaWVsZF09XCJjb2wuZmllbGRcIiBjbGFzcz1cInBiLTFcIiAvPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIH0gQGlmIChjb25maWcuYWN0aW9ucz8ubGVuZ3RoID8/IDAgPiAwIHx8IGNvbmZpZy5hY3Rpb25zUGFpKSB7XHJcbiAgICAgICAgPHRoIFtzdHlsZS53aWR0aF09XCI1XCI+PC90aD5cclxuICAgICAgICB9XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgfVxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICBwVGVtcGxhdGU9XCJib2R5XCJcclxuICAgICAgbGV0LXJvd05vZGVcclxuICAgICAgbGV0LXJvd0RhdGE9XCJyb3dEYXRhXCJcclxuICAgICAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICAgID5cclxuICAgICAgQGlmKHRyZWVUYWJsZURyYWdnYWJsZSkge1xyXG4gICAgICA8dHJcclxuICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieVwiXHJcbiAgICAgICAgW2Nka0RyYWdEYXRhXT1cInJvd05vZGVcIlxyXG4gICAgICAgIFt0dFJvd109XCJyb3dOb2RlXCJcclxuICAgICAgICAoZGJsY2xpY2spPVwiZG91YmxlQ2xpY2soJGV2ZW50LCByb3dEYXRhKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBjYXBpdGFsaXplOiB0YWJsZUNhcHRhbGl6ZWQgfVwiXHJcbiAgICAgID5cclxuICAgICAgICBAZm9yKGNvbCBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpe1xyXG4gICAgICAgIDx0ZFxyXG4gICAgICAgICAgY2xhc3M9XCJkcmFnZ2FibGUtY2VsbFwiXHJcbiAgICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwiXHJcbiAgICAgICAgICAgICFkaXNhYmxlUm93Tm9kZVN0aWNreSAmJiByb3dOb2RlLmxldmVsICE9PSAwID8gJ3N0aWNreScgOiBudWxsXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDwhLS0gW3N0eWxlLmxlZnQucHhdPVwiXHJcbiAgICAgICAgICAgICAgIGNoaWxkcmVuUmVjb2lsICYmIHJvd05vZGUubGV2ZWwgIT09IDAgPyByb3dOb2RlLmxldmVsICogMzAgOiBudWxsXHJcbiAgICAgICAgICAgICAgIFwiIC0tPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93ICB7eyBhbGlnbihjb2wpIH19XCI+XHJcbiAgICAgICAgICAgIEBpZigkaW5kZXggPT0gMCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsLWgtZnVsbCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZHJhZy1pY29uXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgICAgIGN1cnNvcjogZ3JhYjtcclxuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyNXB4O1xyXG4gICAgICAgICAgICAgICAgICBjb2xvcjogIzZiNzI4MDtcclxuICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC45O1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBkcmFnX2luZGljYXRvclxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIGNsYXNzPVwiaGlkZGVuVmlzaWJsZVwiIFtyb3dOb2RlXT1cInJvd05vZGVcIiAvPlxyXG5cclxuICAgICAgICAgICAgICBAaWYoY29uZmlnLmVuYWJsZVNlbGVjdCkge1xyXG4gICAgICAgICAgICAgIDxwLXRyZWVUYWJsZUNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZENoZWNrYm94KCkocm93RGF0YSwgcm93Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheTogaXNTZWxlY3RFbmFibGVkKCkocm93RGF0YSwgcm93Tm9kZSlcclxuICAgICAgICAgICAgICAgICAgICA/ICdibG9jaydcclxuICAgICAgICAgICAgICAgICAgICA6ICdub25lJyxcclxuICAgICAgICAgICAgICAgICAgJ21hcmdpbi1sZWZ0JzogY29uZmlnLnZpc2libGVDaGVja2JveEZ1bmN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnLTM0cHgnXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgdy1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgQGlmIChjb2wudGVtcGxhdGUgJiYgdmFsaWRhdGVTaG93VGVtcGxhdGUoKShyb3dOb2RlLCBjb2wpKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgIEBpZihnZXRDdXN0b21UZW1wbGF0ZShjb2wudGVtcGxhdGUubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0Q3VzdG9tVGVtcGxhdGUoY29sLnRlbXBsYXRlLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3dEYXRhIH1cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIge3tcclxuICAgICAgICAgICAgICAgICAgKGNvbC5ib29sZWFuIHx8IGNvbC5jZW50cmFsaXplKSAmJiAnanVzdGlmeS1jb250ZW50LWNlbnRlcidcclxuICAgICAgICAgICAgICAgIH19IGdhcC0yIHctZnVsbFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgQGlmKGNvbC50YWdDb2xvcikge1xyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRhZ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgICBjb2wudG9vbHRpcFRhZyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbC50b29sdGlwVGFnKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuZmllbGRdKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJcclxuICAgICAgICAgICAgICAgICAgICBjb2wudGFnQ29sb3Iocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5maWVsZF0pXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgfSBAaWYoY29sLmJvb2xlYW4pIHtcclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGkge3tcclxuICAgICAgICAgICAgICAgICAgICByb3dEYXRhW2NvbC5maWVsZF0gPyAncGktY2hlY2sgdGV4dC1ncmVlbi0zMDAnIDogJydcclxuICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMXJlbTsgZm9udC13ZWlnaHQ6IDcwMFwiXHJcbiAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tMCB0ZXh0LXhzXCI+e3sgcm93RGF0YVtjb2wuZmllbGRdIH19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgQGlmKGNvbC5zdWJ0aXRsZSkge1xyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyByb3dEYXRhW2NvbC5zdWJ0aXRsZV0gfX1cclxuICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICB9IEBpZigoY29uZmlnLmFjdGlvbnM/Lmxlbmd0aCA/PyAwID4gMCkgfHwgY29uZmlnLmFjdGlvbnNQYWkpIHtcclxuICAgICAgICA8dGRcclxuICAgICAgICAgIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IG5vbmU7IHRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6IDBcIlxyXG4gICAgICAgICAgW3N0eWxlLmJvcmRlclJpZ2h0XT1cInJvd05vZGUubGV2ZWwgPT09IDAgPyAnbm9uZScgOiAnJ1wiXHJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyTGVmdF09XCJyb3dOb2RlLmxldmVsID09PSAwID8gJ25vbmUnIDogJydcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEBpZigoY29uZmlnLmFjdGlvbnM/Lmxlbmd0aCA/PyAwID4gMCkgJiZcclxuICAgICAgICAgIHZhbGlkYXRlQWN0aW9uUG9zaXRpb24oKShyb3dOb2RlKSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgY3Vyc29yLXBvaW50ZXIgaWNvbi1tb3JlLWhvcml6XCJcclxuICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMjBweDsgcGFkZGluZzogMC4xcmVtXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KTsgYWN0aXZlSXRlbShyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBtb3JlX2hvcml6XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIEBmb3IoYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAge3sgY3JpYXJNZW51c01vZGFsKCkocm93RGF0YSkgfX1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPHAtbWVudVxyXG4gICAgICAgICAgICAgICNtZW51XHJcbiAgICAgICAgICAgICAgW3BvcHVwXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJtZW51SXRlbXNcIlxyXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgID48L3AtbWVudT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfSBAaWYoY29uZmlnLmFjdGlvbnNQYWk/Lmxlbmd0aCA/PyAwID4gMCAmJiByb3dOb2RlLmxldmVsID09IDApe1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgQGZvciAoYWN0aW9uUGFpIG9mIGNvbmZpZy5hY3Rpb25zUGFpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgQGlmKGdldE9yRXhlY3V0ZShhY3Rpb25QYWkudmlzaWJsZSwgcm93RGF0YSkgPz8gdHJ1ZSkge1xyXG4gICAgICAgICAgICA8a3YtYnV0dG9uXHJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aXZlSXRlbShyb3dEYXRhKTsgYWN0aW9uUGFpLmNvbW1hbmQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJhY3Rpb25QYWkuaWNvblwiXHJcbiAgICAgICAgICAgICAgW3NldmVyaXR5XT1cImFjdGlvblBhaS5zZXZlcml0eSB8fCAndGVydGlhcnknXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvblBhaS5kaXNhYmxlZCwgcm93RGF0YSkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJnZXRPckV4ZWN1dGUoYWN0aW9uUGFpLnRvb2x0aXAsIHJvd0RhdGEpXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXHJcbiAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICB9IH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L3RyPlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgPHRyXHJcbiAgICAgICAgW3R0Um93XT1cInJvd05vZGVcIlxyXG4gICAgICAgIChkYmxjbGljayk9XCJkb3VibGVDbGljaygkZXZlbnQsIHJvd0RhdGEpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7IGNhcGl0YWxpemU6IHRhYmxlQ2FwdGFsaXplZCB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIEBmb3IoY29sIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCl7XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwicm93Tm9kZS5sZXZlbCAhPT0gMCA/ICdzdGlja3knIDogbnVsbFwiXHJcbiAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcclxuICAgICAgICAgICAgY2hpbGRyZW5SZWNvaWwgJiYgcm93Tm9kZS5sZXZlbCAhPT0gMCA/IHJvd05vZGUubGV2ZWwgKiAzMCA6IG51bGxcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyUmlnaHRdPVwicm93Tm9kZS5sZXZlbCA9PT0gMCA/ICdub25lJyA6ICcnXCJcclxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJMZWZ0XT1cIlxyXG4gICAgICAgICAgICByb3dOb2RlLmxldmVsID09PSAwICYmIGNvbC5maWVsZCAhPSBjb25maWcuY29sdW1uc1swXS5maWVsZFxyXG4gICAgICAgICAgICAgID8gJ25vbmUnXHJcbiAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyB7eyBhbGlnbihjb2wpIH19XCI+XHJcbiAgICAgICAgICAgIEBpZigkaW5kZXggPT0gMCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsLWgtZnVsbCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXIgY2xhc3M9XCJoaWRkZW5WaXNpYmxlXCIgW3Jvd05vZGVdPVwicm93Tm9kZVwiIC8+XHJcblxyXG4gICAgICAgICAgICAgIEBpZihjb25maWcuZW5hYmxlU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlQ2hlY2tib3hcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkQ2hlY2tib3goKShyb3dEYXRhLCByb3dOb2RlKVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpc1NlbGVjdEVuYWJsZWQoKShyb3dEYXRhLCByb3dOb2RlKVxyXG4gICAgICAgICAgICAgICAgICAgID8gJ2Jsb2NrJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogJ25vbmUnLFxyXG4gICAgICAgICAgICAgICAgICAnbWFyZ2luLWxlZnQnOiBjb25maWcudmlzaWJsZUNoZWNrYm94RnVuY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICA/ICctMzRweCdcclxuICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICBAaWYgKGNvbC50ZW1wbGF0ZSAmJiB2YWxpZGF0ZVNob3dUZW1wbGF0ZSgpKHJvd05vZGUsIGNvbCkpIHtcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctZnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgQGlmKGdldEN1c3RvbVRlbXBsYXRlKGNvbC50ZW1wbGF0ZS5uYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRDdXN0b21UZW1wbGF0ZShjb2wudGVtcGxhdGUubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvd0RhdGEgfVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciB7e1xyXG4gICAgICAgICAgICAgICAgICAoY29sLmJvb2xlYW4gfHwgY29sLmNlbnRyYWxpemUpICYmICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJ1xyXG4gICAgICAgICAgICAgICAgfX0gZ2FwLTIgdy1mdWxsXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBAaWYoY29sLnRhZ0NvbG9yKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFnXCJcclxuICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbC50b29sdGlwVGFnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgY29sLnRvb2x0aXBUYWcocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5maWVsZF0pXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbC50YWdDb2xvcihyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmZpZWxkXSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB9IEBpZihjb2wuYm9vbGVhbikge1xyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaSB7e1xyXG4gICAgICAgICAgICAgICAgICAgIHJvd0RhdGFbY29sLmZpZWxkXSA/ICdwaS1jaGVjayB0ZXh0LWdyZWVuLTMwMCcgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxcmVtOyBmb250LXdlaWdodDogNzAwXCJcclxuICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS0wIHRleHQteHNcIj57eyByb3dEYXRhW2NvbC5maWVsZF0gfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICBAaWYoY29sLnN1YnRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wIHRleHQteHMgZm9udC1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHJvd0RhdGFbY29sLnN1YnRpdGxlXSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIH0gQGlmKChjb25maWcuYWN0aW9ucz8ubGVuZ3RoID8/IDAgPiAwKSB8fCBjb25maWcuYWN0aW9uc1BhaSkge1xyXG4gICAgICAgIDx0ZCBzdHlsZT1cImJvcmRlci1sZWZ0OiBub25lOyB0ZXh0LWFsaWduOiBjZW50ZXI7IHdpZHRoOiAwXCI+XHJcbiAgICAgICAgICBAaWYoKGNvbmZpZy5hY3Rpb25zPy5sZW5ndGggPz8gMCA+IDApICYmXHJcbiAgICAgICAgICB2YWxpZGF0ZUFjdGlvblBvc2l0aW9uKCkocm93Tm9kZSkpIHtcclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGN1cnNvci1wb2ludGVyIGljb24tbW9yZS1ob3JpelwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDIwcHg7IHBhZGRpbmc6IDAuMXJlbVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudCk7IGFjdGl2ZUl0ZW0ocm93RGF0YSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgbW9yZV9ob3JpelxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICBAZm9yKGFjdGlvbiBvZiBjb25maWcuYWN0aW9uczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIHt7IGNyaWFyTWVudXNNb2RhbCgpKHJvd0RhdGEpIH19XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxwLW1lbnVcclxuICAgICAgICAgICAgICAjbWVudVxyXG4gICAgICAgICAgICAgIFtwb3B1cF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbbW9kZWxdPVwibWVudUl0ZW1zXCJcclxuICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICA+PC9wLW1lbnU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH0gQGlmKGNvbmZpZy5hY3Rpb25zUGFpPy5sZW5ndGggPz8gMCA+IDAgJiYgcm93Tm9kZS5sZXZlbCA9PSAwKXtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgQGZvciAoYWN0aW9uUGFpIG9mIGNvbmZpZy5hY3Rpb25zUGFpOyB0cmFjayAkaW5kZXgpIHsgQGlmXHJcbiAgICAgICAgICAgIChnZXRPckV4ZWN1dGUoYWN0aW9uUGFpLnZpc2libGUsIHJvd0RhdGEpID8/IHRydWUpIHtcclxuICAgICAgICAgICAgPGt2LWJ1dHRvblxyXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImFjdGl2ZUl0ZW0ocm93RGF0YSk7IGFjdGlvblBhaS5jb21tYW5kKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXHJcbiAgICAgICAgICAgICAgW2ljb25dPVwiYWN0aW9uUGFpLmljb25cIlxyXG4gICAgICAgICAgICAgIFtzZXZlcml0eV09XCJhY3Rpb25QYWkuc2V2ZXJpdHkgfHwgJ3RlcnRpYXJ5J1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdldE9yRXhlY3V0ZShhY3Rpb25QYWkuZGlzYWJsZWQsIHJvd0RhdGEpIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvblBhaS50b29sdGlwLCByb3dEYXRhKVwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInbGVmdCdcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICB9IH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L3RyPlxyXG4gICAgICB9XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImNvbmZpZy5jb2x1bW5zLmxlbmd0aCArIDFcIlxyXG4gICAgICAgICAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIlxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyB0ZXh0b0VtcHR5TWVzc2FnZSB9fVxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10cmVlVGFibGU+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
317
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoia3YtdHJlZS10YWJsZS5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9rZWV2by1jb21wb25lbnRzL3NyYy9saWIvY29tcG9uZW50cy9rdi10cmVlLXRhYmxlL2t2LXRyZWUtdGFibGUuY29tcG9uZW50LnRzIiwiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMva2Vldm8tY29tcG9uZW50cy9zcmMvbGliL2NvbXBvbmVudHMva3YtdHJlZS10YWJsZS9rdi10cmVlLXRhYmxlLmNvbXBvbmVudC5odG1sIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFDTCxTQUFTLEVBQ1QsZUFBZSxFQUVmLFlBQVksRUFDWixZQUFZLEVBQ1osS0FBSyxFQUNMLE1BQU0sRUFHTixTQUFTLEVBQ1QsUUFBUSxFQUNSLE1BQU0sRUFDTixLQUFLLEVBRUwsU0FBUyxHQUNWLE1BQU0sZUFBZSxDQUFDO0FBRXZCLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUM5QyxPQUFPLEVBRUwsWUFBWSxFQUNaLGFBQWEsR0FDZCxNQUFNLHdDQUF3QyxDQUFDO0FBRWhELE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLGtEQUFrRCxDQUFDO0FBR3JGLE9BQU8sRUFBZSxlQUFlLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQzs7Ozs7Ozs7Ozs7QUFRdEUsTUFBTSxPQUFPLG9CQUFvQjtJQXdCL0IsWUFDVSxVQUFzQjtRQUF0QixlQUFVLEdBQVYsVUFBVSxDQUFZO1FBeEJoQyxjQUFTLEdBQWUsRUFBRSxDQUFDO1FBRWxCLHlCQUFvQixHQUFZLEtBQUssQ0FBQztRQUl0QyxjQUFTLEdBQVksS0FBSyxDQUFDO1FBQzNCLG9CQUFlLEdBQVksS0FBSyxDQUFDO1FBQ2pDLGtCQUFhLEdBQVEsRUFBRSxDQUFDO1FBQ3hCLGNBQVMsR0FBRyxJQUFJLENBQUM7UUFDakIsU0FBSSxHQUFHLEVBQUUsQ0FBQztRQUNWLHVCQUFrQixHQUFHLEtBQUssQ0FBQztRQUMzQixzQkFBaUIsR0FBRyxLQUFLLENBQUM7UUFHMUIsc0JBQWlCLEdBQVcsNEJBQTRCLENBQUM7UUFDekQsbUJBQWMsR0FBWSxJQUFJLENBQUM7UUFDL0IsZUFBVSxHQUFZLElBQUksQ0FBQztRQUMzQixpQkFBWSxHQUFXLEVBQUUsQ0FBQztRQUUxQixnQkFBVyxHQUFZLEtBQUssQ0FBQztRQXlCNUIsYUFBUSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ2pELGVBQVUsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUNuRCxpQkFBWSxHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3JELHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3pELHFCQUFnQixHQUFzQixJQUFJLFlBQVksRUFBRSxDQUFDO1FBQ3pELGlCQUFZLEdBQXNCLElBQUksWUFBWSxFQUFFLENBQUM7UUFDckQsbUJBQWMsR0FBc0IsSUFBSSxZQUFZLEVBQUUsQ0FBQztRQUN2RCxlQUFVLEdBQXNCLElBQUksWUFBWSxFQUFPLENBQUM7UUFFbEQsa0JBQWEsR0FBRyxLQUFLLENBQTRCLFNBQVMsQ0FBQyxDQUFDO1FBZTVFLGdCQUFXLEdBQUcsU0FBUyxDQUFhLGFBQWEsQ0FBQyxDQUFDO1FBd0tuRCxvQkFBZSxHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLElBQVMsRUFBRSxFQUFFO1lBQzdDLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQzNCLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssTUFBTSxNQUFNLElBQUksSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLEVBQUUsQ0FBQztvQkFDekMsTUFBTSxVQUFVLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxJQUFJLENBQUMsQ0FBQztvQkFFL0MsSUFBSSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQzlCLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsT0FBTyxJQUFJLFVBQVUsQ0FBQyxPQUFPLENBQ3ZDLENBQUM7b0JBRUYsSUFBSSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUM7d0JBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7eUJBQ2pELENBQUM7d0JBQ0osSUFBSSxVQUFVLENBQUMsS0FBSyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQzs0QkFDdEMsSUFBSSxLQUFLLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7NEJBQzVDLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQzt3QkFDbEMsQ0FBQzt3QkFFRCxJQUFJLFVBQVUsQ0FBQyxPQUFPLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUFDOzRCQUMxQyxJQUFJLEtBQUssR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs0QkFDNUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDO3dCQUNsQyxDQUFDO3dCQUVELElBQUksVUFBVSxDQUFDLFFBQVEsSUFBSSxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7NEJBQzVDLElBQUksS0FBSyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOzRCQUM1QyxJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUM7d0JBQ2xDLENBQUM7b0JBQ0gsQ0FBQztnQkFDSCxDQUFDO1lBQ0gsQ0FBQztRQUNILENBQUMsQ0FBQyxDQUFDO1FBRUgsMkJBQXNCLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBWSxFQUFFLEVBQUU7WUFDdkQsSUFBSSxJQUFJLENBQUMsTUFBTSxDQUFDLFVBQVUsSUFBSSxPQUFPLENBQUMsS0FBSyxJQUFJLENBQUM7Z0JBQUUsT0FBTyxLQUFLLENBQUM7O2dCQUMxRCxPQUFPLElBQUksQ0FBQztRQUNuQixDQUFDLENBQUMsQ0FBQztRQUVILG9CQUFlLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsT0FBWSxFQUFFLE9BQVksRUFBRSxFQUFFO1lBQzlELE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyx1QkFBdUI7Z0JBQ3hDLENBQUMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLHVCQUF1QixDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUM7Z0JBQ3ZELENBQUMsQ0FBQyxJQUFJLENBQUE7UUFDVixDQUFDLENBQUMsQ0FBQztRQUVILHVCQUFrQixHQUFHLFFBQVEsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLE9BQVksRUFBRSxPQUFZLEVBQUUsRUFBRTtZQUNqRSxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsOEJBQThCO2dCQUMvQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyw4QkFBOEIsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO2dCQUM5RCxDQUFDLENBQUMsS0FBSyxDQUFDO1FBQ1osQ0FBQyxDQUFDLENBQUM7UUFFSCx5QkFBb0IsR0FBRyxRQUFRLENBQUMsR0FBRyxFQUFFLENBQUMsQ0FBQyxPQUFZLEVBQUUsR0FBUSxFQUFFLEVBQUU7WUFDL0QsSUFBSSxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7Z0JBQ3JCLElBQUksR0FBRyxDQUFDLFlBQVksS0FBSyxLQUFLLEVBQUUsQ0FBQztvQkFDL0IsT0FBTyxPQUFPLENBQUMsS0FBSyxLQUFLLENBQUMsQ0FBQztnQkFDN0IsQ0FBQztnQkFDRCxJQUFJLEdBQUcsQ0FBQyxZQUFZLEtBQUssT0FBTyxFQUFFLENBQUM7b0JBQ2pDLE9BQU8sT0FBTyxDQUFDLEtBQUssS0FBSyxDQUFDLENBQUM7Z0JBQzdCLENBQUM7WUFDSCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUM7UUFDZCxDQUFDLENBQUMsQ0FBQztRQUVILGdCQUFXLEdBQUcsUUFBUSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBVSxFQUFFLE9BQVksRUFBRSxFQUFFO1lBQ3hELElBQUksT0FBTyxHQUFHLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztZQUM1RCxPQUFPLE9BQU8sQ0FBQztRQUNqQixDQUFDLENBQUMsQ0FBQztRQWpSRCxNQUFNLENBQUMsR0FBRyxFQUFFO1lBQ1YsSUFBSSxJQUFJLENBQUMsV0FBVztnQkFBRSxJQUFJLENBQUMscUJBQXFCLEVBQUUsQ0FBQztRQUNyRCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUEwQkQsUUFBUTtRQUNOLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztRQUNyQyxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUNuQixJQUFJLENBQUMsVUFBVSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3hELENBQUM7SUFDSCxDQUFDO0lBV0QsY0FBYztRQUNaLElBQUksQ0FBQyxXQUFXLEdBQUcsTUFBTSxDQUFDLFVBQVUsQ0FBQztJQUN2QyxDQUFDO0lBRU0sVUFBVSxDQUFDLE9BQVk7UUFDNUIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVNLGNBQWMsQ0FBQyxPQUFZO1FBQ2hDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDdEMsQ0FBQztJQUVELFlBQVksQ0FBSSxNQUFvQixFQUFFLElBQVM7UUFDN0MsT0FBTyxZQUFZLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQ3BDLENBQUM7SUFFTSxjQUFjLENBQUMsS0FBZ0IsRUFBRSxLQUFZO1FBQ2xELElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFFLEtBQUssQ0FBQyxNQUEyQixDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzdELEtBQUssQ0FBQyxZQUFZLENBQUUsS0FBSyxDQUFDLE1BQTJCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBQzNFLENBQUM7SUFFTSxRQUFRLENBQUMsTUFBVztRQUN6QixJQUFJLE1BQU0sRUFBRSxDQUFDO1lBQ1gsSUFBSSxhQUFhLEdBQ2YsQ0FBQyxNQUFNLEVBQUUsS0FBSyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ3RFLElBQUksYUFBYSxHQUFHLEVBQUUsQ0FBQztZQUN2QixJQUFJLFNBQVMsR0FBRyxFQUFFLENBQUM7WUFFbkIsSUFBSSxNQUFNLENBQUMsWUFBWTtnQkFBRSxhQUFhLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQztZQUU3RCxJQUFJLE1BQU0sQ0FBQyxTQUFTO2dCQUNsQixTQUFTLEdBQUcsR0FBRyxNQUFNLENBQUMsU0FBUyxJQUFJLE1BQU0sQ0FBQyxTQUFTLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQ2xFLEVBQUUsQ0FBQztZQUVQLE1BQU0sTUFBTSxHQUFrQjtnQkFDNUIsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLGFBQWEsRUFBRSxNQUFNLENBQUMsSUFBSTtnQkFDMUIsYUFBYSxFQUFFLGFBQWE7Z0JBQzVCLFNBQVMsRUFBRSxTQUFTO2FBQ3JCLENBQUM7WUFFRixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQztJQUVELElBQUksQ0FBQyxLQUF1QjtRQUMxQixNQUFNLFdBQVcsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQztRQUNwQyxNQUFNLGdCQUFnQixHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDO1FBRS9DLElBQUksV0FBVyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QixlQUFlLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxLQUFLLENBQUMsYUFBYSxFQUFFLEtBQUssQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUM1RSxDQUFDO2FBQU0sSUFBSSxXQUFXLENBQUMsS0FBSyxJQUFJLENBQUMsRUFBRSxDQUFDO1lBQ2xDLE1BQU0sVUFBVSxHQUFHLFdBQVcsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDO1lBRTNDLElBQUksVUFBVSxFQUFFLENBQUM7Z0JBQ2YsTUFBTSxjQUFjLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQzVDLENBQUMsS0FBVSxFQUFFLEVBQUUsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUMzQixDQUFDO2dCQUNGLE1BQU0sa0JBQWtCLEdBQUcsY0FBYyxDQUFDLE9BQU8sQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO2dCQUVwRSxNQUFNLG9CQUFvQixHQUN4QixrQkFBa0IsR0FBRyxDQUFDLEtBQUssQ0FBQyxZQUFZLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUVsRSxNQUFNLGdCQUFnQixHQUFHLElBQUksQ0FBQyxHQUFHLENBQy9CLENBQUMsRUFDRCxJQUFJLENBQUMsR0FBRyxDQUFDLGNBQWMsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLG9CQUFvQixDQUFDLENBQzFELENBQUM7Z0JBRUYsSUFBSSxrQkFBa0IsS0FBSyxDQUFDLENBQUMsSUFBSSxnQkFBZ0IsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUN6RCxlQUFlLENBQ2IsVUFBVSxDQUFDLFFBQVEsRUFDbkIsa0JBQWtCLEVBQ2xCLGdCQUFnQixDQUNqQixDQUFDO2dCQUNKLENBQUM7Z0JBQ0QsTUFBTSxRQUFRLEdBQVE7b0JBQ3BCLGtCQUFrQixFQUFFLGtCQUFrQixHQUFHLENBQUM7b0JBQzFDLGdCQUFnQixFQUFFLGdCQUFnQixHQUFHLENBQUM7aUJBQ3ZDLENBQUM7Z0JBRUYsSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO1lBQ2xFLENBQUM7UUFDSCxDQUFDO1FBRUQsSUFBSSxDQUFDLFVBQVUsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1FBQ3ZDLElBQUksV0FBVyxDQUFDLEtBQUssS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QixJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM5QixDQUFDO0lBQ0gsQ0FBQztJQUVELGFBQWEsQ0FBQyxLQUFpQjtRQUM3QixPQUFPLEtBQUs7YUFDVCxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQzthQUMvRCxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtZQUNaLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUNsQixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQ3BELENBQUM7WUFDRCxPQUFPLElBQUksQ0FBQztRQUNkLENBQUMsQ0FBQyxDQUFDO0lBQ1AsQ0FBQztJQUVELDZCQUE2QjtJQUM3Qiw2QkFBNkI7SUFDN0IsMkJBQTJCO0lBQzNCLCtCQUErQjtJQUMvQixjQUFjO0lBQ2QsNkJBQTZCO0lBQzdCLHVFQUF1RTtJQUV2RSxnQ0FBZ0M7SUFDaEMsZ0JBQWdCO0lBQ2hCLDREQUE0RDtJQUM1RCx3Q0FBd0M7SUFDeEMsYUFBYTtJQUNiLCtCQUErQjtJQUMvQixNQUFNO0lBQ04sSUFBSTtJQUVKLFdBQVcsQ0FBQyxDQUFNLEVBQUUsT0FBWTtRQUM5QixJQUFJLGdCQUFnQixHQUFHLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLENBQUM7UUFFdEQsSUFBSSxLQUFLLEdBQWEsRUFBRSxDQUFDO1FBQ3pCLENBQUMsQ0FBQyxNQUFNLENBQUMsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQU0sRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBRXRELElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztJQUMvQyxDQUFDO0lBRUQsY0FBYyxDQUFDLEtBQVU7UUFDdkIsSUFBSSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDaEMsQ0FBQztJQUVELGdCQUFnQixDQUFDLEtBQVU7UUFDekIsSUFBSSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbEMsQ0FBQztJQUVELGlCQUFpQixDQUFDLFlBQW9CO1FBQ3BDLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsQ0FBQztJQUN2QyxDQUFDO0lBRUQsT0FBTyxDQUFDLElBQVk7UUFDbEIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDbEQsQ0FBQztJQUVELEtBQUssQ0FBQyxHQUFzQjtRQUMxQixJQUFJLEdBQUcsQ0FBQyxVQUFVO1lBQUUsT0FBTyx3QkFBd0IsQ0FBQzthQUMvQyxJQUFJLEdBQUcsQ0FBQyxLQUFLLElBQUksT0FBTztZQUFFLE9BQU8scUJBQXFCLENBQUM7O1lBQ3ZELE9BQU8sRUFBRSxDQUFDO0lBQ2pCLENBQUM7SUFFRCxjQUFjO1FBQ1osSUFBSSxJQUFJLENBQUMsVUFBVTtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsS0FBSyxFQUFFLENBQUM7UUFDN0MsSUFBSSxJQUFJLENBQUMsVUFBVTtZQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEtBQUssR0FBRyxFQUFFLENBQUM7SUFDaEUsQ0FBQztJQUVELHFCQUFxQjtRQUNuQixJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLENBQUMsWUFBWSxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQ2pGLE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxXQUFXLEVBQUUsRUFBRSxhQUFhLENBQUMsWUFBWSxDQUFBO1lBQzdELE1BQU0sT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLGFBQWEsQ0FBQyx5QkFBeUIsQ0FBQyxDQUFBO1lBQ3RGLElBQUksT0FBTztnQkFBRSxPQUFPLENBQUMsS0FBSyxDQUFDLFNBQVMsR0FBRyxHQUFHLE1BQU0sSUFBSSxDQUFBO1lBRXBELE9BQU8sQ0FBQyxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFBO1lBQzdCLE9BQU8sQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxZQUFZLENBQUMsQ0FBQTtRQUM1QyxDQUFDO0lBQ0gsQ0FBQzs4R0E1T1Usb0JBQW9CO2tHQUFwQixvQkFBb0IsNmdIQWdFZCxpQkFBaUIsc0xBR3ZCLFNBQVMsMklDdkd0Qixtc2lCQThjQTs7MkZEMWFhLG9CQUFvQjtrQkFMaEMsU0FBUzsrQkFDRSxlQUFlOytFQU9oQixvQkFBb0I7c0JBQTVCLEtBQUs7Z0JBRUcsTUFBTTtzQkFBZCxLQUFLO2dCQUNHLFVBQVU7c0JBQWxCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxlQUFlO3NCQUF2QixLQUFLO2dCQUNHLGFBQWE7c0JBQXJCLEtBQUs7Z0JBQ0csU0FBUztzQkFBakIsS0FBSztnQkFDRyxJQUFJO3NCQUFaLEtBQUs7Z0JBQ0csa0JBQWtCO3NCQUExQixLQUFLO2dCQUNHLGlCQUFpQjtzQkFBekIsS0FBSztnQkFDRyxTQUFTO3NCQUFqQixLQUFLO2dCQUNHLFlBQVk7c0JBQXBCLEtBQUs7Z0JBQ0csaUJBQWlCO3NCQUF6QixLQUFLO2dCQUNHLGNBQWM7c0JBQXRCLEtBQUs7Z0JBQ0csVUFBVTtzQkFBbEIsS0FBSztnQkFDRyxZQUFZO3NCQUFwQixLQUFLO2dCQUVHLFdBQVc7c0JBQW5CLEtBQUs7Z0JBZUcsZ0JBQWdCO3NCQUF4QixLQUFLO2dCQUlHLFNBQVM7c0JBQWpCLEtBQUs7Z0JBSUcsaUJBQWlCO3NCQUF6QixLQUFLO2dCQUVJLFFBQVE7c0JBQWpCLE1BQU07Z0JBQ0csVUFBVTtzQkFBbkIsTUFBTTtnQkFDRyxZQUFZO3NCQUFyQixNQUFNO2dCQUNHLGdCQUFnQjtzQkFBekIsTUFBTTtnQkFDRyxnQkFBZ0I7c0JBQXpCLE1BQU07Z0JBQ0csWUFBWTtzQkFBckIsTUFBTTtnQkFDRyxjQUFjO3NCQUF2QixNQUFNO2dCQUNHLFVBQVU7c0JBQW5CLE1BQU07Z0JBVzZCLFNBQVM7c0JBQTVDLGVBQWU7dUJBQUMsaUJBQWlCO2dCQUNkLFVBQVU7c0JBQTdCLEtBQUs7dUJBQUMsV0FBVztnQkFFSSxVQUFVO3NCQUEvQixTQUFTO3VCQUFDLFNBQVM7Z0JBQ0ssVUFBVTtzQkFBbEMsU0FBUzt1QkFBQyxZQUFZO2dCQUt2QixjQUFjO3NCQURiLFlBQVk7dUJBQUMsZUFBZSxFQUFFLENBQUMsUUFBUSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21wb25lbnQsXHJcbiAgQ29udGVudENoaWxkcmVuLFxyXG4gIEVsZW1lbnRSZWYsXHJcbiAgRXZlbnRFbWl0dGVyLFxyXG4gIEhvc3RMaXN0ZW5lcixcclxuICBJbnB1dCxcclxuICBPdXRwdXQsXHJcbiAgUXVlcnlMaXN0LFxyXG4gIFRlbXBsYXRlUmVmLFxyXG4gIFZpZXdDaGlsZCxcclxuICBjb21wdXRlZCxcclxuICBlZmZlY3QsXHJcbiAgbW9kZWwsXHJcbiAgc2lnbmFsLFxyXG4gIHZpZXdDaGlsZCxcclxufSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgTWVudUl0ZW0sIFRyZWVOb2RlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xyXG5pbXBvcnQgeyBUcmVlVGFibGUgfSBmcm9tICdwcmltZW5nL3RyZWV0YWJsZSc7XHJcbmltcG9ydCB7XHJcbiAgVmFsdWVPckZuLFxyXG4gIGdldE9yRXhlY3V0ZSxcclxuICBtYXBUb01lbnVJdGVtLFxyXG59IGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL2t2LW1lbnVpdGVtJztcclxuaW1wb3J0IHsgVGFibGVQYWdpbmF0ZSB9IGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLnBhZ2luYXRlJztcclxuaW1wb3J0IHsgVGVtcGxhdGVEaXJlY3RpdmUgfSBmcm9tICcuLi8uLi9hcGkvZGlyZWN0aXZlcy90ZW1wbGF0ZS90ZW1wbGF0ZS5kaXJlY3RpdmUnO1xyXG5pbXBvcnQgeyBUcmVlVGFibGVDb25maWcgfSBmcm9tICcuLi8uLi9hcGkvY29tcG9uZW50cy90cmVlLXRhYmxlL3RyZWUtdGFibGUuY29uZmlnJztcclxuaW1wb3J0IHsgVHJlZVRhYmxlS2V5cyB9IGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL3RyZWUtdGFibGUvdHJlZS10YWJsZS1rZXlzJztcclxuaW1wb3J0IHsgQ2RrRHJhZ0Ryb3AsIG1vdmVJdGVtSW5BcnJheSB9IGZyb20gJ0Bhbmd1bGFyL2Nkay9kcmFnLWRyb3AnO1xyXG5pbXBvcnQgeyBUYWJsZUNvbmZpZ0NvbHVtbiB9IGZyb20gJy4uLy4uL2FwaS9jb21wb25lbnRzL3RhYmxlL3RhYmxlLmNvbmZpZy5jb2x1bW4nO1xyXG5cclxuQENvbXBvbmVudCh7XHJcbiAgc2VsZWN0b3I6ICdrdi10cmVlLXRhYmxlJyxcclxuICB0ZW1wbGF0ZVVybDogJy4va3YtdHJlZS10YWJsZS5jb21wb25lbnQuaHRtbCcsXHJcbiAgc3R5bGVVcmxzOiBbJy4va3YtdHJlZS10YWJsZS5jb21wb25lbnQuc2NzcyddLFxyXG59KVxyXG5leHBvcnQgY2xhc3MgS3ZUcmVldGFibGVDb21wb25lbnQge1xyXG4gIG1lbnVJdGVtczogTWVudUl0ZW1bXSA9IFtdO1xyXG4gIHRhbWFuaG9UZWxhITogbnVtYmVyO1xyXG4gIEBJbnB1dCgpIGRpc2FibGVSb3dOb2RlU3RpY2t5OiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gIEBJbnB1dCgpIGNvbmZpZyE6IFRyZWVUYWJsZUNvbmZpZztcclxuICBASW5wdXQoKSBkYXRhU291cmNlITogYW55O1xyXG4gIEBJbnB1dCgpIGdyaWRMaW5lczogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRhYmxlQ2FwdGFsaXplZDogYm9vbGVhbiA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHNlbGVjdGVkSXRlbXM6IGFueSA9IFtdO1xyXG4gIEBJbnB1dCgpIHBhZ2luYXRvciA9IHRydWU7XHJcbiAgQElucHV0KCkgcm93cyA9IDEwO1xyXG4gIEBJbnB1dCgpIHRyZWVUYWJsZURyYWdnYWJsZSA9IGZhbHNlO1xyXG4gIEBJbnB1dCgpIHRyYW5zZmVyQXJyYXlJdGVtID0gZmFsc2U7XHJcbiAgQElucHV0KCkgb3JkZW5hY2FvITogc3RyaW5nO1xyXG4gIEBJbnB1dCgpIHRvdGFsUmVjb3JkcyE6IG51bWJlcjtcclxuICBASW5wdXQoKSB0ZXh0b0VtcHR5TWVzc2FnZTogc3RyaW5nID0gJ05lbmh1bSByZWdpc3RybyBlbmNvbnRyYWRvJztcclxuICBASW5wdXQoKSBjaGlsZHJlblJlY29pbDogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2hvd0hlYWRlcjogYm9vbGVhbiA9IHRydWU7XHJcbiAgQElucHV0KCkgc2Nyb2xsSGVpZ2h0OiBzdHJpbmcgPSAnJztcclxuXHJcbiAgQElucHV0KCkgaW5kRnVsbFBhZ2U6IGJvb2xlYW4gPSBmYWxzZTtcclxuXHJcblxyXG4gIGNvbnN0cnVjdG9yKFxyXG4gICAgcHJpdmF0ZSBlbGVtZW50UmVmOiBFbGVtZW50UmVmXHJcbiAgKSB7XHJcblxyXG4gICAgZWZmZWN0KCgpID0+IHtcclxuICAgICAgaWYgKHRoaXMuaW5kRnVsbFBhZ2UpIHRoaXMuc2V0TWF4SGVpZ2h0VHJlZVRhYmxlKCk7XHJcbiAgICB9KTtcclxuICB9XHJcblxyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIE8gdmFsb3IgZGUgcGFnZUxpbmtzIMOpIGF0cmlidcOtZG8gZGUgYWNvcmRvIGNvbSBvIHRhbWFuaG8gZGEgdGVsYSwgZXNzYSBwcm9wcmllZGFkZSBuw6NvIGVzdMOhIHNlbmRvIHV0aWxpemFkYVxyXG4gICAqL1xyXG4gIEBJbnB1dCgpIHBhZ2VMaW5rc09wdGlvbnMhOiBudW1iZXI7XHJcbiAgLyoqXHJcbiAgICogQGRlcHJlY2F0ZWQgTyB2YWxvciBkZSBwYWdlTGlua3Mgw6kgYXRyaWJ1w61kbyBkZSBhY29yZG8gY29tIG8gdGFtYW5obyBkYSB0ZWxhLCBlc3NhIHByb3ByaWVkYWRlIG7Do28gZXN0w6Egc2VuZG8gdXRpbGl6YWRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgcGFnZUxpbmtzITogbnVtYmVyO1xyXG4gIC8qKlxyXG4gICAqIEBkZXByZWNhdGVkIEEgcXVhbnRpZGFkZSBkZSBwYWdpbml0b3JQYWdlSWNvbnMgw6kgYXRyaWJ1w61kbyBkZSBhY29yZG8gY29tIG8gdGFtYW5obyBkYSB0ZWxhLCBlc3NhIHByb3ByaWVkYWRlIG7Do28gZXN0w6Egc2VuZG8gdXRpbGl6YWRhXHJcbiAgICovXHJcbiAgQElucHV0KCkgc2hvd0ZpcnN0TGFzdEljb24hOiBib29sZWFuO1xyXG5cclxuICBAT3V0cHV0KCkgb25GaWx0ZXI6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvblBhZ2luYXRlOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25BY3RpdmVJdGVtOiBFdmVudEVtaXR0ZXI8YW55PiA9IG5ldyBFdmVudEVtaXR0ZXIoKTtcclxuICBAT3V0cHV0KCkgb25BY3RpdmVJdGVtTG90ZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIGRvdWJsZUNsaWNrRXZlbnQ6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbk5vZGVTZWxlY3Q6IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcigpO1xyXG4gIEBPdXRwdXQoKSBvbk5vZGVVbnNlbGVjdDogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKCk7XHJcbiAgQE91dHB1dCgpIG9uRHJvcEl0ZW06IEV2ZW50RW1pdHRlcjxhbnk+ID0gbmV3IEV2ZW50RW1pdHRlcjxhbnk+KCk7XHJcblxyXG4gIHB1YmxpYyByZWFkb25seSBzZWxlY3Rpb25LZXlzID0gbW9kZWw8VHJlZVRhYmxlS2V5cyB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcclxuXHJcbiAgbmdPbkluaXQoKSB7XHJcbiAgICB0aGlzLnRhbWFuaG9UZWxhID0gd2luZG93LmlubmVyV2lkdGg7XHJcbiAgICBpZiAodGhpcy5vcmRlbmFjYW8pIHtcclxuICAgICAgdGhpcy5kYXRhU291cmNlID0gdGhpcy5zb3J0VHJlZU5vZGVzKHRoaXMuZGF0YVNvdXJjZSk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBAQ29udGVudENoaWxkcmVuKFRlbXBsYXRlRGlyZWN0aXZlKSB0ZW1wbGF0ZXMhOiBRdWVyeUxpc3Q8YW55PjtcclxuICBASW5wdXQoJ3RlbXBsYXRlcycpIF90ZW1wbGF0ZXMhOiBhbnk7XHJcblxyXG4gIEBWaWV3Q2hpbGQoVHJlZVRhYmxlKSBwVHJlZVRhYmxlITogVHJlZVRhYmxlO1xyXG4gIEBWaWV3Q2hpbGQoJ2lucHV0QnVzY2EnKSBpbnB1dEJ1c2NhITogRWxlbWVudFJlZjtcclxuXHJcbiAga3ZUcmVlVGFibGUgPSB2aWV3Q2hpbGQ8RWxlbWVudFJlZj4oJ2t2VHJlZVRhYmxlJyk7XHJcblxyXG4gIEBIb3N0TGlzdGVuZXIoJ3dpbmRvdzpyZXNpemUnLCBbJyRldmVudCddKVxyXG4gIG9uV2luZG93UmVzaXplKCkge1xyXG4gICAgdGhpcy50YW1hbmhvVGVsYSA9IHdpbmRvdy5pbm5lcldpZHRoO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFjdGl2ZUl0ZW0ocm93RGF0YTogYW55KSB7XHJcbiAgICB0aGlzLm9uQWN0aXZlSXRlbS5lbWl0KHJvd0RhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGFjdGl2ZUl0ZW1Mb3RlKHJvd0RhdGE6IGFueSkge1xyXG4gICAgdGhpcy5vbkFjdGl2ZUl0ZW1Mb3RlLmVtaXQocm93RGF0YSk7XHJcbiAgfVxyXG5cclxuICBnZXRPckV4ZWN1dGU8VD4oYWN0aW9uOiBWYWx1ZU9yRm48VD4sIGRhdGE6IGFueSk6IFQge1xyXG4gICAgcmV0dXJuIGdldE9yRXhlY3V0ZShhY3Rpb24sIGRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIG9uR2xvYmFsRmlsdGVyKHRhYmxlOiBUcmVlVGFibGUsIGV2ZW50OiBFdmVudCkge1xyXG4gICAgdGhpcy5vbkZpbHRlci5lbWl0KChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUpO1xyXG4gICAgdGFibGUuZmlsdGVyR2xvYmFsKChldmVudC50YXJnZXQgYXMgSFRNTElucHV0RWxlbWVudCkudmFsdWUsICdjb250YWlucycpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHBhZ2luYXRlKCRldmVudDogYW55KSB7XHJcbiAgICBpZiAoJGV2ZW50KSB7XHJcbiAgICAgIGxldCBwYWdpbmFJbmljaWFsID1cclxuICAgICAgICAoJGV2ZW50Py5maXJzdCA+IDAgPyAkZXZlbnQuZmlyc3QgLyAkZXZlbnQucm93cyA6ICRldmVudC5maXJzdCkgKyAxO1xyXG4gICAgICBsZXQgdGVybW9QZXNxdWlzYSA9ICcnO1xyXG4gICAgICBsZXQgb3JkZW5hY2FvID0gJyc7XHJcblxyXG4gICAgICBpZiAoJGV2ZW50Lmdsb2JhbEZpbHRlcikgdGVybW9QZXNxdWlzYSA9ICRldmVudC5nbG9iYWxGaWx0ZXI7XHJcblxyXG4gICAgICBpZiAoJGV2ZW50LnNvcnRGaWVsZClcclxuICAgICAgICBvcmRlbmFjYW8gPSBgJHskZXZlbnQuc29ydEZpZWxkfSAkeyRldmVudC5zb3J0T3JkZXIgPT09IDEgPyAnQVNDJyA6ICdERVNDJ1xyXG4gICAgICAgICAgfWA7XHJcblxyXG4gICAgICBjb25zdCBvYmpldG86IFRhYmxlUGFnaW5hdGUgPSB7XHJcbiAgICAgICAgcGFnaW5hSW5pY2lhbDogcGFnaW5hSW5pY2lhbCxcclxuICAgICAgICB0YW1hbmhvUGFnaW5hOiAkZXZlbnQucm93cyxcclxuICAgICAgICB0ZXJtb1Blc3F1aXNhOiB0ZXJtb1Blc3F1aXNhLFxyXG4gICAgICAgIG9yZGVuYWNhbzogb3JkZW5hY2FvLFxyXG4gICAgICB9O1xyXG5cclxuICAgICAgdGhpcy5vblBhZ2luYXRlLmVtaXQob2JqZXRvKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIGRyb3AoZXZlbnQ6IENka0RyYWdEcm9wPGFueT4pIHtcclxuICAgIGNvbnN0IGRyYWdnZWROb2RlID0gZXZlbnQuaXRlbS5kYXRhO1xyXG4gICAgY29uc3QgZHJhZ2dlZENoaWxkRGF0YSA9IGRyYWdnZWROb2RlLm5vZGUuZGF0YTtcclxuXHJcbiAgICBpZiAoZHJhZ2dlZE5vZGUubGV2ZWwgPT09IDApIHtcclxuICAgICAgbW92ZUl0ZW1JbkFycmF5KHRoaXMuZGF0YVNvdXJjZSwgZXZlbnQucHJldmlvdXNJbmRleCwgZXZlbnQuY3VycmVudEluZGV4KTtcclxuICAgIH0gZWxzZSBpZiAoZHJhZ2dlZE5vZGUubGV2ZWwgPj0gMSkge1xyXG4gICAgICBjb25zdCBwYXJlbnROb2RlID0gZHJhZ2dlZE5vZGUubm9kZS5wYXJlbnQ7XHJcblxyXG4gICAgICBpZiAocGFyZW50Tm9kZSkge1xyXG4gICAgICAgIGNvbnN0IHBhcmVudENoaWxkcmVuID0gcGFyZW50Tm9kZS5jaGlsZHJlbi5tYXAoXHJcbiAgICAgICAgICAoY2hpbGQ6IGFueSkgPT4gY2hpbGQuZGF0YVxyXG4gICAgICAgICk7XHJcbiAgICAgICAgY29uc3QgcHJldmlvdXNDaGlsZEluZGV4ID0gcGFyZW50Q2hpbGRyZW4uaW5kZXhPZihkcmFnZ2VkQ2hpbGREYXRhKTtcclxuXHJcbiAgICAgICAgY29uc3QgcmVsYXRpdmVDdXJyZW50SW5kZXggPVxyXG4gICAgICAgICAgcHJldmlvdXNDaGlsZEluZGV4ICsgKGV2ZW50LmN1cnJlbnRJbmRleCAtIGV2ZW50LnByZXZpb3VzSW5kZXgpO1xyXG5cclxuICAgICAgICBjb25zdCB0YXJnZXRDaGlsZEluZGV4ID0gTWF0aC5tYXgoXHJcbiAgICAgICAgICAwLFxyXG4gICAgICAgICAgTWF0aC5taW4ocGFyZW50Q2hpbGRyZW4ubGVuZ3RoIC0gMSwgcmVsYXRpdmVDdXJyZW50SW5kZXgpXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKHByZXZpb3VzQ2hpbGRJbmRleCAhPT0gLTEgJiYgdGFyZ2V0Q2hpbGRJbmRleCAhPT0gLTEpIHtcclxuICAgICAgICAgIG1vdmVJdGVtSW5BcnJheShcclxuICAgICAgICAgICAgcGFyZW50Tm9kZS5jaGlsZHJlbixcclxuICAgICAgICAgICAgcHJldmlvdXNDaGlsZEluZGV4LFxyXG4gICAgICAgICAgICB0YXJnZXRDaGlsZEluZGV4XHJcbiAgICAgICAgICApO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBkcm9wSW5mbzogYW55ID0ge1xyXG4gICAgICAgICAgcHJldmlvdXNDaGlsZEluZGV4OiBwcmV2aW91c0NoaWxkSW5kZXggKyAxLFxyXG4gICAgICAgICAgdGFyZ2V0Q2hpbGRJbmRleDogdGFyZ2V0Q2hpbGRJbmRleCArIDEsXHJcbiAgICAgICAgfTtcclxuXHJcbiAgICAgICAgdGhpcy5vbkRyb3BJdGVtLmVtaXQoeyBldmVudDogZXZlbnQsIGRyb3BDaGlsZEluZm86IGRyb3BJbmZvIH0pO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5kYXRhU291cmNlID0gWy4uLnRoaXMuZGF0YVNvdXJjZV07XHJcbiAgICBpZiAoZHJhZ2dlZE5vZGUubGV2ZWwgPT09IDApIHtcclxuICAgICAgdGhpcy5vbkRyb3BJdGVtLmVtaXQoZXZlbnQpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgc29ydFRyZWVOb2Rlcyhub2RlczogVHJlZU5vZGVbXSk6IFRyZWVOb2RlW10ge1xyXG4gICAgcmV0dXJuIG5vZGVzXHJcbiAgICAgIC5zb3J0KChhLCBiKSA9PiBhLmRhdGFbdGhpcy5vcmRlbmFjYW9dIC0gYi5kYXRhW3RoaXMub3JkZW5hY2FvXSlcclxuICAgICAgLm1hcCgobm9kZSkgPT4ge1xyXG4gICAgICAgIGlmIChub2RlLmNoaWxkcmVuKSB7XHJcbiAgICAgICAgICBub2RlLmNoaWxkcmVuID0gdGhpcy5zb3J0VHJlZU5vZGVzKG5vZGUuY2hpbGRyZW4pO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gbm9kZTtcclxuICAgICAgfSk7XHJcbiAgfVxyXG5cclxuICAvLyBjYWxjdWxhdGVUYXJnZXRDaGlsZEluZGV4KFxyXG4gIC8vICAgZXZlbnQ6IENka0RyYWdEcm9wPGFueT4sXHJcbiAgLy8gICBwYXJlbnRDaGlsZHJlbjogYW55W10sXHJcbiAgLy8gICBwcmV2aW91c0NoaWxkSW5kZXg6IG51bWJlclxyXG4gIC8vICk6IG51bWJlciB7XHJcbiAgLy8gICBjb25zdCB0YXJnZXRDaGlsZEluZGV4ID1cclxuICAvLyAgICAgcHJldmlvdXNDaGlsZEluZGV4ICsgKGV2ZW50LmN1cnJlbnRJbmRleCAtIGV2ZW50LnByZXZpb3VzSW5kZXgpO1xyXG5cclxuICAvLyAgIGlmICh0YXJnZXRDaGlsZEluZGV4IDwgMCkge1xyXG4gIC8vICAgICByZXR1cm4gMDtcclxuICAvLyAgIH0gZWxzZSBpZiAodGFyZ2V0Q2hpbGRJbmRleCA+PSBwYXJlbnRDaGlsZHJlbi5sZW5ndGgpIHtcclxuICAvLyAgICAgcmV0dXJuIHBhcmVudENoaWxkcmVuLmxlbmd0aCAtIDE7XHJcbiAgLy8gICB9IGVsc2Uge1xyXG4gIC8vICAgICByZXR1cm4gdGFyZ2V0Q2hpbGRJbmRleDtcclxuICAvLyAgIH1cclxuICAvLyB9XHJcblxyXG4gIGRvdWJsZUNsaWNrKGU6IGFueSwgcm93RGF0YTogYW55KSB7XHJcbiAgICBsZXQgZXZlbnREb3VibGVDbGljayA9IHsgZXZlbnQ6IGUsIHJvd0RhdGE6IHJvd0RhdGEgfTtcclxuXHJcbiAgICBsZXQgYXJyYXk6IHN0cmluZ1tdID0gW107XHJcbiAgICBlLnRhcmdldC5jbGFzc0xpc3QuZm9yRWFjaCgoeDogYW55KSA9PiBhcnJheS5wdXNoKHgpKTtcclxuXHJcbiAgICB0aGlzLmRvdWJsZUNsaWNrRXZlbnQuZW1pdChldmVudERvdWJsZUNsaWNrKTtcclxuICB9XHJcblxyXG4gIG9uTm9kZVNlbGVjdGVkKGV2ZW50OiBhbnkpIHtcclxuICAgIHRoaXMub25Ob2RlU2VsZWN0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgb25Ob2RlVW5zZWxlY3RlZChldmVudDogYW55KSB7XHJcbiAgICB0aGlzLm9uTm9kZVVuc2VsZWN0LmVtaXQoZXZlbnQpO1xyXG4gIH1cclxuXHJcbiAgZ2V0Q3VzdG9tVGVtcGxhdGUodGVtcGxhdGVuYW1lOiBzdHJpbmcpOiBUZW1wbGF0ZVJlZjxhbnk+IHtcclxuICAgIHJldHVybiB0aGlzLl90ZW1wbGF0ZXNbdGVtcGxhdGVuYW1lXTtcclxuICB9XHJcblxyXG4gIGdldEljb24oaWNvbjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgIHJldHVybiBpY29uLmluY2x1ZGVzKCdwaS0nKSA/IGBwaSAke2ljb259YCA6ICcnO1xyXG4gIH1cclxuXHJcbiAgYWxpZ24oY29sOiBUYWJsZUNvbmZpZ0NvbHVtbik6IHN0cmluZyB7XHJcbiAgICBpZiAoY29sLmNlbnRyYWxpemUpIHJldHVybiAnanVzdGlmeS1jb250ZW50LWNlbnRlcic7XHJcbiAgICBlbHNlIGlmIChjb2wuYWxpZ24gPT0gJ3JpZ2h0JykgcmV0dXJuICdqdXN0aWZ5LWNvbnRlbnQtZW5kJztcclxuICAgIGVsc2UgcmV0dXJuICcnO1xyXG4gIH1cclxuXHJcbiAgcmVzZXRUcmVlVGFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5wVHJlZVRhYmxlKSB0aGlzLnBUcmVlVGFibGUucmVzZXQoKTtcclxuICAgIGlmICh0aGlzLmlucHV0QnVzY2EpIHRoaXMuaW5wdXRCdXNjYS5uYXRpdmVFbGVtZW50LnZhbHVlID0gJyc7XHJcbiAgfVxyXG5cclxuICBzZXRNYXhIZWlnaHRUcmVlVGFibGUoKSB7XHJcbiAgICBpZiAodGhpcy5rdlRyZWVUYWJsZSgpPy5uYXRpdmVFbGVtZW50Lm9mZnNldEhlaWdodCAmJiB0aGlzLmRhdGFTb3VyY2UubGVuZ3RoID4gMCkge1xyXG4gICAgICBjb25zdCBoZWlnaHQgPSB0aGlzLmt2VHJlZVRhYmxlKCk/Lm5hdGl2ZUVsZW1lbnQub2Zmc2V0SGVpZ2h0XHJcbiAgICAgIGNvbnN0IGVsZW1lbnQgPSB0aGlzLmVsZW1lbnRSZWYubmF0aXZlRWxlbWVudC5xdWVyeVNlbGVjdG9yKCcua3YtdHJlZXRhYmxlLWNvbnRhaW5lcicpXHJcbiAgICAgIGlmIChlbGVtZW50KSBlbGVtZW50LnN0eWxlLm1heEhlaWdodCA9IGAke2hlaWdodH1weGBcclxuXHJcbiAgICAgIGNvbnNvbGUubG9nKGhlaWdodCwgJ2hlaWdodCcpXHJcbiAgICAgIGNvbnNvbGUubG9nKHRoaXMuZGF0YVNvdXJjZSwgJ2RhdGFTb3VyY2UnKVxyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgY3JpYXJNZW51c01vZGFsID0gY29tcHV0ZWQoKCkgPT4gKGRhdGE6IGFueSkgPT4ge1xyXG4gICAgY29uc29sZS5sb2coZGF0YSwgJ2VudHJlaScpXHJcbiAgICBpZiAodGhpcy5jb25maWcuYWN0aW9ucyAmJiBkYXRhKSB7XHJcbiAgICAgIGZvciAoY29uc3QgYWN0aW9uIG9mIHRoaXMuY29uZmlnLmFjdGlvbnMpIHtcclxuICAgICAgICBjb25zdCBtZW51SW5zZXJ0ID0gbWFwVG9NZW51SXRlbShhY3Rpb24sIGRhdGEpO1xyXG5cclxuICAgICAgICBsZXQgaXRlbSA9IHRoaXMubWVudUl0ZW1zLmZpbHRlcihcclxuICAgICAgICAgICh4KSA9PiB4LmNvbW1hbmQgPT0gbWVudUluc2VydC5jb21tYW5kXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgaWYgKGl0ZW0ubGVuZ3RoID09IDApIHRoaXMubWVudUl0ZW1zLnB1c2gobWVudUluc2VydCk7XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5sYWJlbCAhPSBpdGVtWzBdLmxhYmVsKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgaWYgKG1lbnVJbnNlcnQudmlzaWJsZSAhPSBpdGVtWzBdLnZpc2libGUpIHtcclxuICAgICAgICAgICAgbGV0IGluZGV4ID0gdGhpcy5tZW51SXRlbXMuaW5kZXhPZihpdGVtWzBdKTtcclxuICAgICAgICAgICAgdGhpcy5tZW51SXRlbXMuc3BsaWNlKGluZGV4LCAxKTtcclxuICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICBpZiAobWVudUluc2VydC5kaXNhYmxlZCAhPSBpdGVtWzBdLmRpc2FibGVkKSB7XHJcbiAgICAgICAgICAgIGxldCBpbmRleCA9IHRoaXMubWVudUl0ZW1zLmluZGV4T2YoaXRlbVswXSk7XHJcbiAgICAgICAgICAgIHRoaXMubWVudUl0ZW1zLnNwbGljZShpbmRleCwgMSk7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgfSk7XHJcblxyXG4gIHZhbGlkYXRlQWN0aW9uUG9zaXRpb24gPSBjb21wdXRlZCgoKSA9PiAocm93Tm9kZTogYW55KSA9PiB7XHJcbiAgICBpZiAodGhpcy5jb25maWcuYWN0aW9uc1BhaSAmJiByb3dOb2RlLmxldmVsID09IDApIHJldHVybiBmYWxzZTtcclxuICAgIGVsc2UgcmV0dXJuIHRydWU7XHJcbiAgfSk7XHJcblxyXG4gIGlzU2VsZWN0RW5hYmxlZCA9IGNvbXB1dGVkKCgpID0+IChyb3dEYXRhOiBhbnksIHJvd05vZGU6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLnZpc2libGVDaGVja2JveEZ1bmN0aW9uXHJcbiAgICAgID8gdGhpcy5jb25maWcudmlzaWJsZUNoZWNrYm94RnVuY3Rpb24ocm93RGF0YSwgcm93Tm9kZSlcclxuICAgICAgOiB0cnVlXHJcbiAgfSk7XHJcblxyXG4gIGlzRGlzYWJsZWRDaGVja2JveCA9IGNvbXB1dGVkKCgpID0+IChyb3dEYXRhOiBhbnksIHJvd05vZGU6IGFueSkgPT4ge1xyXG4gICAgcmV0dXJuIHRoaXMuY29uZmlnLmRpc2FibGVDb250cm9sQ2hlY2tib3hGdW5jdGlvblxyXG4gICAgICA/IHRoaXMuY29uZmlnLmRpc2FibGVDb250cm9sQ2hlY2tib3hGdW5jdGlvbihyb3dEYXRhLCByb3dOb2RlKVxyXG4gICAgICA6IGZhbHNlO1xyXG4gIH0pO1xyXG5cclxuICB2YWxpZGF0ZVNob3dUZW1wbGF0ZSA9IGNvbXB1dGVkKCgpID0+IChyb3dOb2RlOiBhbnksIGNvbDogYW55KSA9PiB7XHJcbiAgICBpZiAoY29sLnRlbXBsYXRlT25seSkge1xyXG4gICAgICBpZiAoY29sLnRlbXBsYXRlT25seSA9PT0gJ3BhaScpIHtcclxuICAgICAgICByZXR1cm4gcm93Tm9kZS5sZXZlbCA9PT0gMDtcclxuICAgICAgfVxyXG4gICAgICBpZiAoY29sLnRlbXBsYXRlT25seSA9PT0gJ2ZpbGhvJykge1xyXG4gICAgICAgIHJldHVybiByb3dOb2RlLmxldmVsID09PSAxO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9KTtcclxuXHJcbiAgZXhpYmlyQ2FtcG8gPSBjb21wdXRlZCgoKSA9PiAoZmllbGQ6IGFueSwgcm93RGF0YTogYW55KSA9PiB7XHJcbiAgICBsZXQgdmlzaWJsZSA9IGZpZWxkLnZpc2libGUgPyBmaWVsZC52aXNpYmxlKHJvd0RhdGEpIDogdHJ1ZTtcclxuICAgIHJldHVybiB2aXNpYmxlO1xyXG4gIH0pO1xyXG59XHJcblxyXG4iLCI8ZGl2IGNsYXNzPVwia3YtdHJlZXRhYmxlLWNvbnRhaW5lclwiICNrdlRyZWVUYWJsZT5cclxuICA8cC10cmVlVGFibGVcclxuICAgICN0dFxyXG4gICAgY2RrRHJvcExpc3RcclxuICAgIGNsYXNzPVwiZXhhbXBsZS1saXN0XCJcclxuICAgIChjZGtEcm9wTGlzdERyb3BwZWQpPVwiZHJvcCgkZXZlbnQpXCJcclxuICAgIFt2YWx1ZV09XCJkYXRhU291cmNlXCJcclxuICAgIFtjb2x1bW5zXT1cImNvbmZpZy5jb2x1bW5zXCJcclxuICAgIFtyZXNpemFibGVDb2x1bW5zXT1cInRydWVcIlxyXG4gICAgW3RhYmxlU3R5bGVdPVwieyAnbWluLXdpZHRoJzogJzUwcmVtJyB9XCJcclxuICAgIFtyZXNpemFibGVDb2x1bW5zXT1cInRydWVcIlxyXG4gICAgW3BhZ2luYXRvcl09XCJwYWdpbmF0b3JcIlxyXG4gICAgW3Jvd3NdPVwicm93c1wiXHJcbiAgICBbdG90YWxSZWNvcmRzXT1cInRvdGFsUmVjb3Jkc1wiXHJcbiAgICBbcm93c1BlclBhZ2VPcHRpb25zXT1cIls1LCAxMCwgMTUsIDI1LCA1MF1cIlxyXG4gICAgW3Nob3dGaXJzdExhc3RJY29uXT1cInRhbWFuaG9UZWxhID4gOTYwID8gdHJ1ZSA6IGZhbHNlXCJcclxuICAgIFtwYWdlTGlua3NdPVwidGFtYW5ob1RlbGEgPiA5NjAgPyAyIDogMVwiXHJcbiAgICBbc3R5bGVDbGFzc109XCJncmlkTGluZXMgPyAncC10cmVldGFibGUtZ3JpZGxpbmVzJyA6ICcnXCJcclxuICAgIFsoc2VsZWN0aW9uKV09XCJzZWxlY3RlZEl0ZW1zXCJcclxuICAgIFtzZWxlY3Rpb25LZXlzXT1cInNlbGVjdGlvbktleXMoKVwiXHJcbiAgICAoc2VsZWN0aW9uS2V5c0NoYW5nZSk9XCJzZWxlY3Rpb25LZXlzLnNldCgkZXZlbnQpXCJcclxuICAgIFtsYXp5XT1cImNvbmZpZy5sYXp5XCJcclxuICAgIChvbkxhenlMb2FkKT1cInBhZ2luYXRlKCRldmVudClcIlxyXG4gICAgKG9uTm9kZVNlbGVjdCk9XCJvbk5vZGVTZWxlY3RlZCgkZXZlbnQpXCJcclxuICAgIChvbk5vZGVVbnNlbGVjdCk9XCJvbk5vZGVVbnNlbGVjdGVkKCRldmVudClcIlxyXG4gICAgW3Nob3dDdXJyZW50UGFnZVJlcG9ydF09XCJ0cnVlXCJcclxuICAgIGN1cnJlbnRQYWdlUmVwb3J0VGVtcGxhdGU9XCJ7Zmlyc3R9IC0ge2xhc3R9IGRlIHt0b3RhbFJlY29yZHN9XCJcclxuICAgIFtzY3JvbGxIZWlnaHRdPVwic2Nyb2xsSGVpZ2h0XCJcclxuICA+XHJcbiAgICBAaWYoY29uZmlnLmVuYWJsZUNhdGlvbikge1xyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImNhcHRpb25cIj5cclxuICAgICAgPGRpdlxyXG4gICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBmbGV4LXdyYXAganVzdGlmeS1jb250ZW50LWJldHdlZW4gYWxpZ24taXRlbXMtY2VudGVyIGdyaWQgZm9ybWdyaWQgcC1mbHVpZCBjb2wtMTIgbS0wIHAtMVwiXHJcbiAgICAgICAgc3R5bGU9XCJiYWNrZ3JvdW5kLWNvbG9yOiAjZWFlYWVhXCJcclxuICAgICAgPlxyXG4gICAgICAgIDxkaXYgY2xhc3M9XCJjb2wtMTIgZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgQGlmKGNvbmZpZy50aXRsZSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtbWQgZm9udC1ib2xkIG15LTNcIj57eyBjb25maWcudGl0bGUgfX08L2Rpdj5cclxuICAgICAgICAgIH0gQGlmKGNvbmZpZy5zdWJ0aXRsZSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cInRleHQtc20gbWItNCBmb250LW1lZGl1bVwiPnt7IGNvbmZpZy5zdWJ0aXRsZSB9fTwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2XHJcbiAgICAgICAgICBjbGFzcz1cImZsZXggZmxleC1yb3cgYWxpZ24taXRlbXMtY2VudGVyIGNvbC0xMCBwLTAgbWQ6Y29sLTYgbGc6Y29sLTQganVzdGlmeS1jb250ZW50LWNlbnRlciB7e1xyXG4gICAgICAgICAgICB0YW1hbmhvVGVsYSA8IDc2OCA/ICcnIDogJ2lucHV0LXNlYXJjaCdcclxuICAgICAgICAgIH19XCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICBAaWYoY29uZmlnLmVuYWJsZUZpbHRlcikge1xyXG5cclxuICAgICAgICAgIDxzcGFuIGNsYXNzPVwicC1pbnB1dC1pY29uLWxlZnRcIj5cclxuICAgICAgICAgICAgPGkgY2xhc3M9XCJwaSBwaS1zZWFyY2hcIj48L2k+XHJcblxyXG4gICAgICAgICAgICA8aW5wdXRcclxuICAgICAgICAgICAgICBwSW5wdXRUZXh0XHJcbiAgICAgICAgICAgICAgcEF1dG9Gb2N1c1xyXG4gICAgICAgICAgICAgIFthdXRvZm9jdXNdPVwidHJ1ZVwiXHJcbiAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxyXG4gICAgICAgICAgICAgIChpbnB1dCk9XCJvbkdsb2JhbEZpbHRlcih0dCwgJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJQZXNxdWlzYXIuLi5cIlxyXG4gICAgICAgICAgICAgIGNsYXNzPVwiaC0ycmVtXCJcclxuICAgICAgICAgICAgICAjaW5wdXRCdXNjYVxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvZGl2PlxyXG5cclxuICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBjb2wtMSBqdXN0aWZ5LWNvbnRlbnQtZW5kIHAtMFwiPlxyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggZmxleC1yb3cgZ2FwLTIgYnRucy1vcHRpb25zXCI+XHJcbiAgICAgICAgICAgIEBmb3IgKGFjdGlvbiBvZiBjb25maWcuYWN0aW9uc0xvdGU7IHRyYWNrICRpbmRleCkge1xyXG4gICAgICAgICAgICBAaWYoKHNlbGVjdGVkSXRlbXMubGVuZ3RoID4gMCB8fCBhY3Rpb24uc2hvd0Fjb2VzTG90ZSkgJiZcclxuICAgICAgICAgICAgZXhpYmlyQ2FtcG8oKShhY3Rpb24sIHRoaXMuYWN0aW9uKSkge1xyXG4gICAgICAgICAgICA8a3YtYnV0dG9uXHJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aW9uPy5jb21tYW5kKCk7IGFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvbi50b29sdGlwLCBzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInYm90dG9tJ1wiXHJcbiAgICAgICAgICAgICAgW3NpemVdPVwiJ3NtYWxsJ1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdldE9yRXhlY3V0ZShhY3Rpb24uZGlzYWJsZWQsIHNlbGVjdGVkSXRlbXMpIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJnZXRPckV4ZWN1dGUoYWN0aW9uLmljb24sIHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICBbc2V2ZXJpdHldPVwiYWN0aW9uLnNldmVyaXR5IHx8ICd0ZXJ0aWFyeSdcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICB9IH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgIDwvZGl2PlxyXG4gICAgICA8L2Rpdj5cclxuICAgIDwvbmctdGVtcGxhdGU+XHJcbiAgICB9IEBpZihzaG93SGVhZGVyKXtcclxuICAgIDxuZy10ZW1wbGF0ZSBwVGVtcGxhdGU9XCJoZWFkZXJcIiBsZXQtY29sdW1ucz5cclxuICAgICAgPHRyPlxyXG4gICAgICAgIEBmb3IoY29sIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCl7XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW3R0U29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCJjb2wuc29ydGFibGUgPT09IGZhbHNlXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxkaXYgW25nQ2xhc3NdPVwieyBmbGV4OiAkaW5kZXggPT0gMCwgJ2dhcC0zJzogJGluZGV4ID09IDAgfVwiPlxyXG4gICAgICAgICAgICAgIEBpZigkaW5kZXggPT0gMCAmJiBjb25maWcuZW5hYmxlU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlSGVhZGVyQ2hlY2tib3hcclxuICAgICAgICAgICAgICAgIChjbGljayk9XCJhY3RpdmVJdGVtTG90ZShzZWxlY3RlZEl0ZW1zKVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciAge3sgYWxpZ24oY29sKSB9fVwiPlxyXG4gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ0ZXh0LXhzXCI+e3sgY29sLmhlYWRlciB9fTwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgICAgICBAaWYoY29sLnNvcnRhYmxlKSB7XHJcbiAgICAgICAgICAgICAgICA8cC10cmVlVGFibGVTb3J0SWNvbiBbZmllbGRdPVwiY29sLmZpZWxkXCIgY2xhc3M9XCJwYi0xXCIgLz5cclxuICAgICAgICAgICAgICAgIH0gQGlmKGNvbC5oZWFkZXJUb29sdGlwKSB7XHJcbiAgICAgICAgICAgICAgICA8c3BhblxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZmxleCBhbGlnbi1pdGVtcy1jZW50ZXJcIlxyXG4gICAgICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiY29sLmhlYWRlclRvb2x0aXBcIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgICBpbmZvXHJcbiAgICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90aD5cclxuICAgICAgICBAaWYgKGNvbmZpZy5hY3Rpb25zPy5sZW5ndGggPz8gMCA+IDAgfHwgY29uZmlnLmFjdGlvbnNQYWkpIHtcclxuICAgICAgICA8dGggW3N0eWxlLndpZHRoXT1cIjVcIj48L3RoPlxyXG4gICAgICAgIH0gfVxyXG4gICAgICA8L3RyPlxyXG4gICAgPC9uZy10ZW1wbGF0ZT5cclxuXHJcbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiaGVhZGVyXCIgbGV0LWNvbHVtbnM+XHJcbiAgICAgIDx0cj5cclxuICAgICAgICBAZm9yIChjb2wgb2YgY29sdW1uczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgPHRoXHJcbiAgICAgICAgICBbdHRTb3J0YWJsZUNvbHVtbl09XCJjb2wuZmllbGRcIlxyXG4gICAgICAgICAgW3R0U29ydGFibGVDb2x1bW5EaXNhYmxlZF09XCJjb2wuc29ydGFibGUgPT09IGZhbHNlXCJcclxuICAgICAgICAgIFtzdHlsZS53aWR0aF09XCJjb2wud2lkdGhcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciB7eyBhbGlnbihjb2wpIH19XCI+XHJcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwidGV4dC14c1wiPnt7IGNvbC5oZWFkZXIgfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICBAaWYoY29sLnNvcnRhYmxlKSB7XHJcbiAgICAgICAgICAgIDxwLXRyZWVUYWJsZVNvcnRJY29uIFtmaWVsZF09XCJjb2wuZmllbGRcIiBjbGFzcz1cInBiLTFcIiAvPlxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RoPlxyXG4gICAgICAgIH0gQGlmIChjb25maWcuYWN0aW9ucz8ubGVuZ3RoID8/IDAgPiAwIHx8IGNvbmZpZy5hY3Rpb25zUGFpKSB7XHJcbiAgICAgICAgPHRoIFtzdHlsZS53aWR0aF09XCI1XCI+PC90aD5cclxuICAgICAgICB9XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgfVxyXG5cclxuICAgIDxuZy10ZW1wbGF0ZVxyXG4gICAgICBwVGVtcGxhdGU9XCJib2R5XCJcclxuICAgICAgbGV0LXJvd05vZGVcclxuICAgICAgbGV0LXJvd0RhdGE9XCJyb3dEYXRhXCJcclxuICAgICAgbGV0LWNvbHVtbnM9XCJjb2x1bW5zXCJcclxuICAgID5cclxuICAgICAgQGlmKHRyZWVUYWJsZURyYWdnYWJsZSkge1xyXG4gICAgICA8dHJcclxuICAgICAgICBjZGtEcmFnXHJcbiAgICAgICAgY2RrRHJhZ0xvY2tBeGlzPVwieVwiXHJcbiAgICAgICAgW2Nka0RyYWdEYXRhXT1cInJvd05vZGVcIlxyXG4gICAgICAgIFt0dFJvd109XCJyb3dOb2RlXCJcclxuICAgICAgICAoZGJsY2xpY2spPVwiZG91YmxlQ2xpY2soJGV2ZW50LCByb3dEYXRhKVwiXHJcbiAgICAgICAgW25nQ2xhc3NdPVwieyBjYXBpdGFsaXplOiB0YWJsZUNhcHRhbGl6ZWQgfVwiXHJcbiAgICAgID5cclxuICAgICAgICBAZm9yKGNvbCBvZiBjb2x1bW5zOyB0cmFjayAkaW5kZXgpe1xyXG4gICAgICAgIDx0ZFxyXG4gICAgICAgICAgY2xhc3M9XCJkcmFnZ2FibGUtY2VsbFwiXHJcbiAgICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwiXHJcbiAgICAgICAgICAgICFkaXNhYmxlUm93Tm9kZVN0aWNreSAmJiByb3dOb2RlLmxldmVsICE9PSAwID8gJ3N0aWNreScgOiBudWxsXHJcbiAgICAgICAgICBcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIDwhLS0gW3N0eWxlLmxlZnQucHhdPVwiXHJcbiAgICAgICAgICAgICAgIGNoaWxkcmVuUmVjb2lsICYmIHJvd05vZGUubGV2ZWwgIT09IDAgPyByb3dOb2RlLmxldmVsICogMzAgOiBudWxsXHJcbiAgICAgICAgICAgICAgIFwiIC0tPlxyXG5cclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93ICB7eyBhbGlnbihjb2wpIH19XCI+XHJcbiAgICAgICAgICAgIEBpZigkaW5kZXggPT0gMCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsLWgtZnVsbCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgZHJhZy1pY29uXCJcclxuICAgICAgICAgICAgICAgIHN0eWxlPVwiXHJcbiAgICAgICAgICAgICAgICAgIGN1cnNvcjogZ3JhYjtcclxuICAgICAgICAgICAgICAgICAgZm9udC1zaXplOiAyNXB4O1xyXG4gICAgICAgICAgICAgICAgICBjb2xvcjogIzZiNzI4MDtcclxuICAgICAgICAgICAgICAgICAgb3BhY2l0eTogMC45O1xyXG4gICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgIGNka0RyYWdIYW5kbGVcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBkcmFnX2luZGljYXRvclxyXG4gICAgICAgICAgICAgIDwvc3Bhbj5cclxuICAgICAgICAgICAgICA8cC10cmVlVGFibGVUb2dnbGVyIGNsYXNzPVwiaGlkZGVuVmlzaWJsZVwiIFtyb3dOb2RlXT1cInJvd05vZGVcIiAvPlxyXG5cclxuICAgICAgICAgICAgICBAaWYoY29uZmlnLmVuYWJsZVNlbGVjdCkge1xyXG4gICAgICAgICAgICAgIDxwLXRyZWVUYWJsZUNoZWNrYm94XHJcbiAgICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiaXNEaXNhYmxlZENoZWNrYm94KCkocm93RGF0YSwgcm93Tm9kZSlcIlxyXG4gICAgICAgICAgICAgICAgKGNsaWNrKT1cImFjdGl2ZUl0ZW1Mb3RlKHNlbGVjdGVkSXRlbXMpXCJcclxuICAgICAgICAgICAgICAgIFt2YWx1ZV09XCJyb3dOb2RlXCJcclxuICAgICAgICAgICAgICAgIFtuZ1N0eWxlXT1cIntcclxuICAgICAgICAgICAgICAgICAgZGlzcGxheTogaXNTZWxlY3RFbmFibGVkKCkocm93RGF0YSwgcm93Tm9kZSlcclxuICAgICAgICAgICAgICAgICAgICA/ICdibG9jaydcclxuICAgICAgICAgICAgICAgICAgICA6ICdub25lJyxcclxuICAgICAgICAgICAgICAgICAgJ21hcmdpbi1sZWZ0JzogY29uZmlnLnZpc2libGVDaGVja2JveEZ1bmN0aW9uXHJcbiAgICAgICAgICAgICAgICAgICAgPyAnLTM0cHgnXHJcbiAgICAgICAgICAgICAgICAgICAgOiAnMHB4J1xyXG4gICAgICAgICAgICAgICAgfVwiXHJcbiAgICAgICAgICAgICAgLz5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIgdy1mdWxsXCI+XHJcbiAgICAgICAgICAgICAgQGlmIChjb2wudGVtcGxhdGUgJiYgdmFsaWRhdGVTaG93VGVtcGxhdGUoKShyb3dOb2RlLCBjb2wpKSB7XHJcbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9XCJ3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICAgIEBpZihnZXRDdXN0b21UZW1wbGF0ZShjb2wudGVtcGxhdGUubmFtZSkpIHtcclxuICAgICAgICAgICAgICAgIDxuZy1jb250YWluZXJcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRdPVwiZ2V0Q3VzdG9tVGVtcGxhdGUoY29sLnRlbXBsYXRlLm5hbWUpXCJcclxuICAgICAgICAgICAgICAgICAgW25nVGVtcGxhdGVPdXRsZXRDb250ZXh0XT1cInsgJGltcGxpY2l0OiByb3dEYXRhIH1cIlxyXG4gICAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgPC9uZy1jb250YWluZXI+XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgPC9zcGFuPlxyXG4gICAgICAgICAgICAgIH0gQGVsc2Uge1xyXG4gICAgICAgICAgICAgIDxkaXZcclxuICAgICAgICAgICAgICAgIGNsYXNzPVwiZmxleCBmbGV4LXJvdyBhbGlnbi1pdGVtcy1jZW50ZXIge3tcclxuICAgICAgICAgICAgICAgICAgKGNvbC5ib29sZWFuIHx8IGNvbC5jZW50cmFsaXplKSAmJiAnanVzdGlmeS1jb250ZW50LWNlbnRlcidcclxuICAgICAgICAgICAgICAgIH19IGdhcC0yIHctZnVsbFwiXHJcbiAgICAgICAgICAgICAgPlxyXG4gICAgICAgICAgICAgICAgQGlmKGNvbC50YWdDb2xvcikge1xyXG4gICAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgICBjbGFzcz1cInRhZ1wiXHJcbiAgICAgICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJcclxuICAgICAgICAgICAgICAgICAgICBjb2wudG9vbHRpcFRhZyAmJlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbC50b29sdGlwVGFnKHJvd0RhdGEsIGNvbCwgcm93RGF0YVtjb2wuZmllbGRdKVxyXG4gICAgICAgICAgICAgICAgICBcIlxyXG4gICAgICAgICAgICAgICAgICBbc3R5bGUuYmFja2dyb3VuZC1jb2xvcl09XCJcclxuICAgICAgICAgICAgICAgICAgICBjb2wudGFnQ29sb3Iocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5maWVsZF0pXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICA+PC9kaXY+XHJcblxyXG4gICAgICAgICAgICAgICAgfSBAaWYoY29sLmJvb2xlYW4pIHtcclxuICAgICAgICAgICAgICAgIDxpXHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwicGkge3tcclxuICAgICAgICAgICAgICAgICAgICByb3dEYXRhW2NvbC5maWVsZF0gPyAncGktY2hlY2sgdGV4dC1ncmVlbi0zMDAnIDogJydcclxuICAgICAgICAgICAgICAgICAgfX1cIlxyXG4gICAgICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMXJlbTsgZm9udC13ZWlnaHQ6IDcwMFwiXHJcbiAgICAgICAgICAgICAgICA+PC9pPlxyXG4gICAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LWNvbHVtblwiPlxyXG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cIm0tMCB0ZXh0LXhzXCI+e3sgcm93RGF0YVtjb2wuZmllbGRdIH19PC9zcGFuPlxyXG5cclxuICAgICAgICAgICAgICAgICAgQGlmKGNvbC5zdWJ0aXRsZSkge1xyXG4gICAgICAgICAgICAgICAgICA8cCBjbGFzcz1cIm0tMCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGRcIj5cclxuICAgICAgICAgICAgICAgICAgICB7eyByb3dEYXRhW2NvbC5zdWJ0aXRsZV0gfX1cclxuICAgICAgICAgICAgICAgICAgPC9wPlxyXG4gICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgPC90ZD5cclxuICAgICAgICB9IEBpZigoY29uZmlnLmFjdGlvbnM/Lmxlbmd0aCA/PyAwID4gMCkgfHwgY29uZmlnLmFjdGlvbnNQYWkpIHtcclxuICAgICAgICA8dGRcclxuICAgICAgICAgIHN0eWxlPVwiYm9yZGVyLWxlZnQ6IG5vbmU7IHRleHQtYWxpZ246IGNlbnRlcjsgd2lkdGg6IDBcIlxyXG4gICAgICAgICAgW3N0eWxlLmJvcmRlclJpZ2h0XT1cInJvd05vZGUubGV2ZWwgPT09IDAgPyAnbm9uZScgOiAnJ1wiXHJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyTGVmdF09XCJyb3dOb2RlLmxldmVsID09PSAwID8gJ25vbmUnIDogJydcIlxyXG4gICAgICAgID5cclxuICAgICAgICAgIEBpZigoY29uZmlnLmFjdGlvbnM/Lmxlbmd0aCA/PyAwID4gMCkgJiZcclxuICAgICAgICAgIHZhbGlkYXRlQWN0aW9uUG9zaXRpb24oKShyb3dOb2RlKSkge1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXggYWxpZ24taXRlbXMtY2VudGVyIGp1c3RpZnktY29udGVudC1jZW50ZXJcIj5cclxuICAgICAgICAgICAgPHNwYW5cclxuICAgICAgICAgICAgICBjbGFzcz1cIm1hdGVyaWFsLXN5bWJvbHMtb3V0bGluZWQgY3Vyc29yLXBvaW50ZXIgaWNvbi1tb3JlLWhvcml6XCJcclxuICAgICAgICAgICAgICBzdHlsZT1cImZvbnQtc2l6ZTogMjBweDsgcGFkZGluZzogMC4xcmVtXCJcclxuICAgICAgICAgICAgICAoY2xpY2spPVwibWVudS50b2dnbGUoJGV2ZW50KTsgYWN0aXZlSXRlbShyb3dEYXRhKVwiXHJcbiAgICAgICAgICAgID5cclxuICAgICAgICAgICAgICBtb3JlX2hvcml6XHJcbiAgICAgICAgICAgIDwvc3Bhbj5cclxuXHJcbiAgICAgICAgICAgIEBmb3IoYWN0aW9uIG9mIGNvbmZpZy5hY3Rpb25zOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAge3sgY3JpYXJNZW51c01vZGFsKCkocm93RGF0YSkgfX1cclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgPHAtbWVudVxyXG4gICAgICAgICAgICAgICNtZW51XHJcbiAgICAgICAgICAgICAgW3BvcHVwXT1cInRydWVcIlxyXG4gICAgICAgICAgICAgIFttb2RlbF09XCJtZW51SXRlbXNcIlxyXG4gICAgICAgICAgICAgIGFwcGVuZFRvPVwiYm9keVwiXHJcbiAgICAgICAgICAgID48L3AtbWVudT5cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfSBAaWYoY29uZmlnLmFjdGlvbnNQYWk/Lmxlbmd0aCA/PyAwID4gMCAmJiByb3dOb2RlLmxldmVsID09IDApe1xyXG4gICAgICAgICAgPGRpdiBjbGFzcz1cImZsZXgganVzdGlmeS1jb250ZW50LWVuZCBhbGlnbi1pdGVtcy1jZW50ZXJcIj5cclxuICAgICAgICAgICAgQGZvciAoYWN0aW9uUGFpIG9mIGNvbmZpZy5hY3Rpb25zUGFpOyB0cmFjayAkaW5kZXgpIHtcclxuICAgICAgICAgICAgQGlmKGdldE9yRXhlY3V0ZShhY3Rpb25QYWkudmlzaWJsZSwgcm93RGF0YSkgPz8gdHJ1ZSkge1xyXG4gICAgICAgICAgICA8a3YtYnV0dG9uXHJcbiAgICAgICAgICAgICAgKG9uQ2xpY2spPVwiYWN0aXZlSXRlbShyb3dEYXRhKTsgYWN0aW9uUGFpLmNvbW1hbmQoJGV2ZW50KVwiXHJcbiAgICAgICAgICAgICAgW3R5cGVdPVwiJ3RleHQnXCJcclxuICAgICAgICAgICAgICBbaWNvbl09XCJhY3Rpb25QYWkuaWNvblwiXHJcbiAgICAgICAgICAgICAgW3NldmVyaXR5XT1cImFjdGlvblBhaS5zZXZlcml0eSB8fCAndGVydGlhcnknXCJcclxuICAgICAgICAgICAgICBbZGlzYWJsZWRdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvblBhaS5kaXNhYmxlZCwgcm93RGF0YSkgfHwgZmFsc2VcIlxyXG4gICAgICAgICAgICAgIFtwVG9vbHRpcF09XCJnZXRPckV4ZWN1dGUoYWN0aW9uUGFpLnRvb2x0aXAsIHJvd0RhdGEpXCJcclxuICAgICAgICAgICAgICBbdG9vbHRpcFBvc2l0aW9uXT1cIidsZWZ0J1wiXHJcbiAgICAgICAgICAgIC8+XHJcblxyXG4gICAgICAgICAgICB9IH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L3RyPlxyXG4gICAgICB9IEBlbHNlIHtcclxuICAgICAgPHRyXHJcbiAgICAgICAgW3R0Um93XT1cInJvd05vZGVcIlxyXG4gICAgICAgIChkYmxjbGljayk9XCJkb3VibGVDbGljaygkZXZlbnQsIHJvd0RhdGEpXCJcclxuICAgICAgICBbbmdDbGFzc109XCJ7IGNhcGl0YWxpemU6IHRhYmxlQ2FwdGFsaXplZCB9XCJcclxuICAgICAgPlxyXG4gICAgICAgIEBmb3IoY29sIG9mIGNvbHVtbnM7IHRyYWNrICRpbmRleCl7XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICBbc3R5bGUucG9zaXRpb25dPVwicm93Tm9kZS5sZXZlbCAhPT0gMCA/ICdzdGlja3knIDogbnVsbFwiXHJcbiAgICAgICAgICBbc3R5bGUubGVmdC5weF09XCJcclxuICAgICAgICAgICAgY2hpbGRyZW5SZWNvaWwgJiYgcm93Tm9kZS5sZXZlbCAhPT0gMCA/IHJvd05vZGUubGV2ZWwgKiAzMCA6IG51bGxcclxuICAgICAgICAgIFwiXHJcbiAgICAgICAgICBbc3R5bGUuYm9yZGVyUmlnaHRdPVwicm93Tm9kZS5sZXZlbCA9PT0gMCA/ICdub25lJyA6ICcnXCJcclxuICAgICAgICAgIFtzdHlsZS5ib3JkZXJMZWZ0XT1cIlxyXG4gICAgICAgICAgICByb3dOb2RlLmxldmVsID09PSAwICYmIGNvbC5maWVsZCAhPSBjb25maWcuY29sdW1uc1swXS5maWVsZFxyXG4gICAgICAgICAgICAgID8gJ25vbmUnXHJcbiAgICAgICAgICAgICAgOiAnJ1xyXG4gICAgICAgICAgXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICA8ZGl2IGNsYXNzPVwiZmxleCBmbGV4LXJvdyB7eyBhbGlnbihjb2wpIH19XCI+XHJcbiAgICAgICAgICAgIEBpZigkaW5kZXggPT0gMCkge1xyXG4gICAgICAgICAgICA8ZGl2IGNsYXNzPVwidy1mdWxsLWgtZnVsbCBmbGV4IGFsaWduLWl0ZW1zLWNlbnRlclwiPlxyXG4gICAgICAgICAgICAgIDxwLXRyZWVUYWJsZVRvZ2dsZXIgY2xhc3M9XCJoaWRkZW5WaXNpYmxlXCIgW3Jvd05vZGVdPVwicm93Tm9kZVwiIC8+XHJcblxyXG4gICAgICAgICAgICAgIEBpZihjb25maWcuZW5hYmxlU2VsZWN0KSB7XHJcbiAgICAgICAgICAgICAgPHAtdHJlZVRhYmxlQ2hlY2tib3hcclxuICAgICAgICAgICAgICAgIFtkaXNhYmxlZF09XCJpc0Rpc2FibGVkQ2hlY2tib3goKShyb3dEYXRhLCByb3dOb2RlKVwiXHJcbiAgICAgICAgICAgICAgICAoY2xpY2spPVwiYWN0aXZlSXRlbUxvdGUoc2VsZWN0ZWRJdGVtcylcIlxyXG4gICAgICAgICAgICAgICAgW3ZhbHVlXT1cInJvd05vZGVcIlxyXG4gICAgICAgICAgICAgICAgW25nU3R5bGVdPVwie1xyXG4gICAgICAgICAgICAgICAgICBkaXNwbGF5OiBpc1NlbGVjdEVuYWJsZWQoKShyb3dEYXRhLCByb3dOb2RlKVxyXG4gICAgICAgICAgICAgICAgICAgID8gJ2Jsb2NrJ1xyXG4gICAgICAgICAgICAgICAgICAgIDogJ25vbmUnLFxyXG4gICAgICAgICAgICAgICAgICAnbWFyZ2luLWxlZnQnOiBjb25maWcudmlzaWJsZUNoZWNrYm94RnVuY3Rpb25cclxuICAgICAgICAgICAgICAgICAgICA/ICctMzRweCdcclxuICAgICAgICAgICAgICAgICAgICA6ICcwcHgnXHJcbiAgICAgICAgICAgICAgICB9XCJcclxuICAgICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciB3LWZ1bGxcIj5cclxuICAgICAgICAgICAgICBAaWYgKGNvbC50ZW1wbGF0ZSAmJiB2YWxpZGF0ZVNob3dUZW1wbGF0ZSgpKHJvd05vZGUsIGNvbCkpIHtcclxuICAgICAgICAgICAgICA8c3BhbiBjbGFzcz1cInctZnVsbFwiPlxyXG4gICAgICAgICAgICAgICAgQGlmKGdldEN1c3RvbVRlbXBsYXRlKGNvbC50ZW1wbGF0ZS5uYW1lKSkge1xyXG4gICAgICAgICAgICAgICAgPG5nLWNvbnRhaW5lclxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldF09XCJnZXRDdXN0b21UZW1wbGF0ZShjb2wudGVtcGxhdGUubmFtZSlcIlxyXG4gICAgICAgICAgICAgICAgICBbbmdUZW1wbGF0ZU91dGxldENvbnRleHRdPVwieyAkaW1wbGljaXQ6IHJvd0RhdGEgfVwiXHJcbiAgICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICA8L25nLWNvbnRhaW5lcj5cclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICA8L3NwYW4+XHJcbiAgICAgICAgICAgICAgfSBAZWxzZSB7XHJcbiAgICAgICAgICAgICAgPGRpdlxyXG4gICAgICAgICAgICAgICAgY2xhc3M9XCJmbGV4IGZsZXgtcm93IGFsaWduLWl0ZW1zLWNlbnRlciB7e1xyXG4gICAgICAgICAgICAgICAgICAoY29sLmJvb2xlYW4gfHwgY29sLmNlbnRyYWxpemUpICYmICdqdXN0aWZ5LWNvbnRlbnQtY2VudGVyJ1xyXG4gICAgICAgICAgICAgICAgfX0gZ2FwLTIgdy1mdWxsXCJcclxuICAgICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgICBAaWYoY29sLnRhZ0NvbG9yKSB7XHJcbiAgICAgICAgICAgICAgICA8ZGl2XHJcbiAgICAgICAgICAgICAgICAgIGNsYXNzPVwidGFnXCJcclxuICAgICAgICAgICAgICAgICAgW3BUb29sdGlwXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbC50b29sdGlwVGFnICYmXHJcbiAgICAgICAgICAgICAgICAgICAgY29sLnRvb2x0aXBUYWcocm93RGF0YSwgY29sLCByb3dEYXRhW2NvbC5maWVsZF0pXHJcbiAgICAgICAgICAgICAgICAgIFwiXHJcbiAgICAgICAgICAgICAgICAgIFtzdHlsZS5iYWNrZ3JvdW5kLWNvbG9yXT1cIlxyXG4gICAgICAgICAgICAgICAgICAgIGNvbC50YWdDb2xvcihyb3dEYXRhLCBjb2wsIHJvd0RhdGFbY29sLmZpZWxkXSlcclxuICAgICAgICAgICAgICAgICAgXCJcclxuICAgICAgICAgICAgICAgID48L2Rpdj5cclxuXHJcbiAgICAgICAgICAgICAgICB9IEBpZihjb2wuYm9vbGVhbikge1xyXG4gICAgICAgICAgICAgICAgPGlcclxuICAgICAgICAgICAgICAgICAgY2xhc3M9XCJwaSB7e1xyXG4gICAgICAgICAgICAgICAgICAgIHJvd0RhdGFbY29sLmZpZWxkXSA/ICdwaS1jaGVjayB0ZXh0LWdyZWVuLTMwMCcgOiAnJ1xyXG4gICAgICAgICAgICAgICAgICB9fVwiXHJcbiAgICAgICAgICAgICAgICAgIHN0eWxlPVwiZm9udC1zaXplOiAxcmVtOyBmb250LXdlaWdodDogNzAwXCJcclxuICAgICAgICAgICAgICAgID48L2k+XHJcbiAgICAgICAgICAgICAgICB9IEBlbHNlIHtcclxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGZsZXgtY29sdW1uXCI+XHJcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPVwibS0wIHRleHQteHNcIj57eyByb3dEYXRhW2NvbC5maWVsZF0gfX08L3NwYW4+XHJcblxyXG4gICAgICAgICAgICAgICAgICBAaWYoY29sLnN1YnRpdGxlKSB7XHJcbiAgICAgICAgICAgICAgICAgIDxwIGNsYXNzPVwibS0wIHRleHQteHMgZm9udC1zZW1pYm9sZFwiPlxyXG4gICAgICAgICAgICAgICAgICAgIHt7IHJvd0RhdGFbY29sLnN1YnRpdGxlXSB9fVxyXG4gICAgICAgICAgICAgICAgICA8L3A+XHJcbiAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgPC9kaXY+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICA8L3RkPlxyXG4gICAgICAgIH0gQGlmKChjb25maWcuYWN0aW9ucz8ubGVuZ3RoID8/IDAgPiAwKSB8fCBjb25maWcuYWN0aW9uc1BhaSkge1xyXG4gICAgICAgIDx0ZCBzdHlsZT1cImJvcmRlci1sZWZ0OiBub25lOyB0ZXh0LWFsaWduOiBjZW50ZXI7IHdpZHRoOiAwXCI+XHJcbiAgICAgICAgICBAaWYoKGNvbmZpZy5hY3Rpb25zPy5sZW5ndGggPz8gMCA+IDApICYmXHJcbiAgICAgICAgICB2YWxpZGF0ZUFjdGlvblBvc2l0aW9uKCkocm93Tm9kZSkpIHtcclxuICAgICAgICAgIDxkaXY+XHJcbiAgICAgICAgICAgIDxzcGFuXHJcbiAgICAgICAgICAgICAgY2xhc3M9XCJtYXRlcmlhbC1zeW1ib2xzLW91dGxpbmVkIGN1cnNvci1wb2ludGVyIGljb24tbW9yZS1ob3JpelwiXHJcbiAgICAgICAgICAgICAgc3R5bGU9XCJmb250LXNpemU6IDIwcHg7IHBhZGRpbmc6IDAuMXJlbVwiXHJcbiAgICAgICAgICAgICAgKGNsaWNrKT1cIm1lbnUudG9nZ2xlKCRldmVudCk7IGFjdGl2ZUl0ZW0ocm93RGF0YSlcIlxyXG4gICAgICAgICAgICA+XHJcbiAgICAgICAgICAgICAgbW9yZV9ob3JpelxyXG4gICAgICAgICAgICA8L3NwYW4+XHJcblxyXG4gICAgICAgICAgICBAZm9yKGFjdGlvbiBvZiBjb25maWcuYWN0aW9uczsgdHJhY2sgJGluZGV4KSB7XHJcbiAgICAgICAgICAgIHt7IGNyaWFyTWVudXNNb2RhbCgpKHJvd0RhdGEpIH19XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIDxwLW1lbnVcclxuICAgICAgICAgICAgICAjbWVudVxyXG4gICAgICAgICAgICAgIFtwb3B1cF09XCJ0cnVlXCJcclxuICAgICAgICAgICAgICBbbW9kZWxdPVwibWVudUl0ZW1zXCJcclxuICAgICAgICAgICAgICBhcHBlbmRUbz1cImJvZHlcIlxyXG4gICAgICAgICAgICA+PC9wLW1lbnU+XHJcbiAgICAgICAgICA8L2Rpdj5cclxuICAgICAgICAgIH0gQGlmKGNvbmZpZy5hY3Rpb25zUGFpPy5sZW5ndGggPz8gMCA+IDAgJiYgcm93Tm9kZS5sZXZlbCA9PSAwKXtcclxuICAgICAgICAgIDxkaXYgY2xhc3M9XCJmbGV4IGp1c3RpZnktY29udGVudC1lbmRcIj5cclxuICAgICAgICAgICAgQGZvciAoYWN0aW9uUGFpIG9mIGNvbmZpZy5hY3Rpb25zUGFpOyB0cmFjayAkaW5kZXgpIHsgQGlmXHJcbiAgICAgICAgICAgIChnZXRPckV4ZWN1dGUoYWN0aW9uUGFpLnZpc2libGUsIHJvd0RhdGEpID8/IHRydWUpIHtcclxuICAgICAgICAgICAgPGt2LWJ1dHRvblxyXG4gICAgICAgICAgICAgIChvbkNsaWNrKT1cImFjdGl2ZUl0ZW0ocm93RGF0YSk7IGFjdGlvblBhaS5jb21tYW5kKCRldmVudClcIlxyXG4gICAgICAgICAgICAgIFt0eXBlXT1cIid0ZXh0J1wiXHJcbiAgICAgICAgICAgICAgW2ljb25dPVwiYWN0aW9uUGFpLmljb25cIlxyXG4gICAgICAgICAgICAgIFtzZXZlcml0eV09XCJhY3Rpb25QYWkuc2V2ZXJpdHkgfHwgJ3RlcnRpYXJ5J1wiXHJcbiAgICAgICAgICAgICAgW2Rpc2FibGVkXT1cImdldE9yRXhlY3V0ZShhY3Rpb25QYWkuZGlzYWJsZWQsIHJvd0RhdGEpIHx8IGZhbHNlXCJcclxuICAgICAgICAgICAgICBbcFRvb2x0aXBdPVwiZ2V0T3JFeGVjdXRlKGFjdGlvblBhaS50b29sdGlwLCByb3dEYXRhKVwiXHJcbiAgICAgICAgICAgICAgW3Rvb2x0aXBQb3NpdGlvbl09XCInbGVmdCdcIlxyXG4gICAgICAgICAgICAvPlxyXG4gICAgICAgICAgICB9IH1cclxuICAgICAgICAgIDwvZGl2PlxyXG4gICAgICAgICAgfVxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgICAgfVxyXG4gICAgICA8L3RyPlxyXG4gICAgICB9XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gICAgPG5nLXRlbXBsYXRlIHBUZW1wbGF0ZT1cImVtcHR5bWVzc2FnZVwiPlxyXG4gICAgICA8dHI+XHJcbiAgICAgICAgPHRkXHJcbiAgICAgICAgICBbYXR0ci5jb2xzcGFuXT1cImNvbmZpZy5jb2x1bW5zLmxlbmd0aCArIDFcIlxyXG4gICAgICAgICAgc3R5bGU9XCJ0ZXh0LWFsaWduOiBjZW50ZXJcIlxyXG4gICAgICAgICAgY2xhc3M9XCJ0ZXh0LXNtXCJcclxuICAgICAgICA+XHJcbiAgICAgICAgICB7eyB0ZXh0b0VtcHR5TWVzc2FnZSB9fVxyXG4gICAgICAgIDwvdGQ+XHJcbiAgICAgIDwvdHI+XHJcbiAgICA8L25nLXRlbXBsYXRlPlxyXG4gIDwvcC10cmVlVGFibGU+XHJcbjwvZGl2PlxyXG4iXX0=
|
|
@@ -2281,12 +2281,13 @@ class KvTreetableComponent {
|
|
|
2281
2281
|
this.inputBusca.nativeElement.value = '';
|
|
2282
2282
|
}
|
|
2283
2283
|
setMaxHeightTreeTable() {
|
|
2284
|
-
if (this.kvTreeTable()?.nativeElement.offsetHeight) {
|
|
2284
|
+
if (this.kvTreeTable()?.nativeElement.offsetHeight && this.dataSource.length > 0) {
|
|
2285
2285
|
const height = this.kvTreeTable()?.nativeElement.offsetHeight;
|
|
2286
2286
|
const element = this.elementRef.nativeElement.querySelector('.kv-treetable-container');
|
|
2287
2287
|
if (element)
|
|
2288
2288
|
element.style.maxHeight = `${height}px`;
|
|
2289
2289
|
console.log(height, 'height');
|
|
2290
|
+
console.log(this.dataSource, 'dataSource');
|
|
2290
2291
|
}
|
|
2291
2292
|
}
|
|
2292
2293
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.8", ngImport: i0, type: KvTreetableComponent, deps: [{ token: i0.ElementRef }], target: i0.ɵɵFactoryTarget.Component }); }
|